vdr-plugin-softhddevice-drm-gles 1.6.7
softhdsetupmenu.cpp
Go to the documentation of this file.
1// SPDX-License-Identifier: AGPL-3.0-or-later
2
17#include <vdr/menuitems.h>
18
19#include "audio.h"
20#include "codec_audio.h"
21#include "config.h"
22#include "logger.h"
23#include "softhddevice.h"
24#include "softhdsetupmenu.h"
25
33static inline cOsdItem *SeparatorName(const char *label)
34{
35 return new cOsdItem(cString::sprintf("%s:", label), osUnknown, false);
36}
37
45inline cOsdItem *cMenuSetupSoft::CollapsedItem(const char *label, int &flag, const char *msg)
46{
48
49 item = new cMenuEditBoolItem(cString::sprintf("* %s", label), &flag,
50 msg ? msg : tr("show"), tr("hide"));
51
52 return item;
53}
54
59{
60 int current;
61
62 current = Current(); // get current menu item index
63 Clear(); // clear the menu
64
65 //
66 // General
67 //
68 Add(CollapsedItem(tr("General"), m_cGeneralMenu));
69 if (m_cGeneralMenu) {
70 Add(new cMenuEditBoolItem(tr(" Hide main menu entry"), &m_cHideMainMenuEntry, trVDR("no"), trVDR("yes")));
71 }
72
73 //
74 // Video
75 //
76 Add(CollapsedItem(tr("Video"), m_cVideoMenu));
77 if (m_cVideoMenu) {
78 Add(new cMenuEditBoolItem(tr(" Enable HDR"), &m_cVideoEnableHDR, trVDR("no"), trVDR("yes")));
79 Add(new cMenuEditStraItem(tr(" Display mode"), &m_cVideoDisplayMode, m_displayModePtrs.size(), m_displayModePtrs.data()));
80 }
81
82 //
83 // Audio
84 //
85 Add(CollapsedItem(tr("Audio"), m_cAudioMenu));
86 if (m_cAudioMenu) {
87 Add(new cMenuEditBoolItem(tr(" Volume control"), &m_cAudioSoftvol, tr("hardware"), tr("software")));
88 Add(new cMenuEditBoolItem(tr(" Enable stereo downmix"), &m_cAudioDownmix, trVDR("no"), trVDR("yes")));
89 Add(new cMenuEditBoolItem(tr(" Enable passthrough"), &m_cAudioPassthroughDefault, trVDR("off"), trVDR("on")));
91 Add(new cMenuEditBoolItem(tr(" AC-3 passthrough"), &m_cAudioPassthroughAC3, trVDR("no"), trVDR("yes")));
92 Add(new cMenuEditBoolItem(tr(" E-AC-3 passthrough"), &m_cAudioPassthroughEAC3, trVDR("no"), trVDR("yes")));
93 Add(new cMenuEditBoolItem(tr(" DTS passthrough"), &m_cAudioPassthroughDTS, trVDR("no"), trVDR("yes")));
94 Add(new cMenuEditBoolItem(tr(" Enable automatic AES"), &m_cAudioAutoAES, trVDR("no"), trVDR("yes")));
95 }
96 Add(new cMenuEditIntItem(tr(" Audio/Video delay (ms)"), &m_cAudioDelay, -1000, 1000));
97 Add(new cMenuEditBoolItem(tr(" Enable normalize volume"), &m_cAudioNormalize, trVDR("no"), trVDR("yes")));
99 Add(new cMenuEditIntItem(tr(" Max normalize factor (/1000)"), &m_cAudioMaxNormalize, 0, 10000));
100 Add(new cMenuEditBoolItem(tr(" Enable volume compression"), &m_cAudioCompression, trVDR("no"), trVDR("yes")));
102 Add(new cMenuEditIntItem(tr(" Max compression factor (/1000)"), &m_cAudioMaxCompression, 0, 10000));
103 Add(new cMenuEditIntItem(tr(" Reduce stereo volume (/1000)"), &m_cAudioStereoDescent, 0, 1000));
104 }
105
106 //
107 // Audio filter
108 //
109 Add(CollapsedItem(tr("Audio equalizer"), m_cAudioFilterMenu));
110 if (m_cAudioFilterMenu) {
111 Add(new cMenuEditBoolItem(tr(" Enable audio equalizer"), &m_cAudioEq, trVDR("no"), trVDR("yes")));
112 if (m_cAudioEq) {
113 Add(new cMenuEditIntItem(tr(" 60 Hz band gain"), &m_cAudioEqBand[0], -15, 1));
114 Add(new cMenuEditIntItem(tr(" 72 Hz band gain"), &m_cAudioEqBand[1], -15, 1));
115 Add(new cMenuEditIntItem(tr(" 107 Hz band gain"), &m_cAudioEqBand[2], -15, 1));
116 Add(new cMenuEditIntItem(tr(" 150 Hz band gain"), &m_cAudioEqBand[3], -15, 1));
117 Add(new cMenuEditIntItem(tr(" 220 Hz band gain"), &m_cAudioEqBand[4], -15, 1));
118 Add(new cMenuEditIntItem(tr(" 310 Hz band gain"), &m_cAudioEqBand[5], -15, 1));
119 Add(new cMenuEditIntItem(tr(" 430 Hz band gain"), &m_cAudioEqBand[6], -15, 1));
120 Add(new cMenuEditIntItem(tr(" 620 Hz band gain"), &m_cAudioEqBand[7], -15, 1));
121 Add(new cMenuEditIntItem(tr(" 860 Hz band gain"), &m_cAudioEqBand[8], -15, 1));
122 Add(new cMenuEditIntItem(tr(" 1200 Hz band gain"), &m_cAudioEqBand[9], -15, 1));
123 Add(new cMenuEditIntItem(tr(" 1700 Hz band gain"), &m_cAudioEqBand[10], -15, 1));
124 Add(new cMenuEditIntItem(tr(" 2500 Hz band gain"), &m_cAudioEqBand[11], -15, 1));
125 Add(new cMenuEditIntItem(tr(" 3500 Hz band gain"), &m_cAudioEqBand[12], -15, 1));
126 Add(new cMenuEditIntItem(tr(" 4800 Hz band gain"), &m_cAudioEqBand[13], -15, 1));
127 Add(new cMenuEditIntItem(tr(" 7000 Hz band gain"), &m_cAudioEqBand[14], -15, 1));
128 Add(new cMenuEditIntItem(tr(" 9500 Hz band gain"), &m_cAudioEqBand[15], -15, 1));
129 Add(new cMenuEditIntItem(tr(" 13500 Hz band gain"), &m_cAudioEqBand[16], -15, 1));
130 Add(new cMenuEditIntItem(tr(" 17200 Hz band gain"), &m_cAudioEqBand[17], -15, 1));
131 }
132 }
133
134 //
135 // PiP
136 //
137 if (m_pDevice->UsePip()) {
138 Add(CollapsedItem(tr("Picture-in-picture"), m_cPipMenu));
139 if (m_cPipMenu) {
140 Add(new cMenuEditIntItem(tr(" video scaling factor (%)"), &m_cPipScalePercent, 10, 100));
141 Add(new cMenuEditIntItem(tr(" video left (%)"), &m_cPipLeftPercent, 0, 100));
142 Add(new cMenuEditIntItem(tr(" video top (%)"), &m_cPipTopPercent, 0, 100));
143 Add(new cMenuEditBoolItem(tr(" use alternative position as default"), &m_cPipUseAlt, trVDR("no"), trVDR("yes")));
144 Add(new cMenuEditIntItem(tr(" alternative video scaling factor (%)"), &m_cPipAltScalePercent, 10, 100));
145 Add(new cMenuEditIntItem(tr(" alternative video left (%)"), &m_cPipAltLeftPercent, 0, 100));
146 Add(new cMenuEditIntItem(tr(" alternative video top (%)"), &m_cPipAltTopPercent, 0, 100));
147 }
148 }
149
150 //
151 // Logging
152 //
153 Add(CollapsedItem(tr("Logging"), m_cLoggingMenu));
154 if (m_cLoggingMenu) {
155 Add(new cMenuEditBoolItem(tr(" Enable logging"), &m_cLogDefault, trVDR("off"), trVDR("on")));
156 if (m_cLogDefault) {
157 Add(new cMenuEditBoolItem(tr(" Standard debug logs"), &m_cLogDebug_, trVDR("no"), trVDR("yes")));
158 Add(new cMenuEditBoolItem(tr(" DRM debug logs"), &m_cLogDRM, trVDR("no"), trVDR("yes")));
159 Add(new cMenuEditBoolItem(tr(" Codec debug logs"), &m_cLogCodec, trVDR("no"), trVDR("yes")));
160 Add(new cMenuEditBoolItem(tr(" AV Sync debug logs"), &m_cLogAVSync, trVDR("no"), trVDR("yes")));
161 Add(new cMenuEditBoolItem(tr(" Sound debug logs"), &m_cLogSound, trVDR("no"), trVDR("yes")));
162 Add(new cMenuEditBoolItem(tr(" FFmpeg debug logs"), &m_cLogFFmpeg, trVDR("no"), trVDR("yes")));
163 Add(new cMenuEditBoolItem(tr(" Packet tracking logs"), &m_cLogPacket, trVDR("no"), trVDR("yes")));
164 Add(new cMenuEditBoolItem(tr(" OSD debug logs"), &m_cLogOSD, trVDR("no"), trVDR("yes")));
165 Add(new cMenuEditBoolItem(tr(" Grabbing debug logs"), &m_cLogGrab, trVDR("no"), trVDR("yes")));
166 Add(new cMenuEditBoolItem(tr(" Stillpicture debug logs"), &m_cLogStill, trVDR("no"), trVDR("yes")));
167 Add(new cMenuEditBoolItem(tr(" Trickspeed debug logs"), &m_cLogTrick, trVDR("no"), trVDR("yes")));
168 Add(new cMenuEditBoolItem(tr(" Mediaplayer debug logs"), &m_cLogMedia, trVDR("no"), trVDR("yes")));
169 Add(new cMenuEditBoolItem(tr(" OpenGL OSD debug logs"), &m_cLogGL, trVDR("no"), trVDR("yes")));
170 Add(new cMenuEditBoolItem(tr(" OpenGL OSD time measurement"), &m_cLogGLTime, trVDR("no"), trVDR("yes")));
171 Add(new cMenuEditBoolItem(tr(" OpenGL OSD time measurement (extensive)"), &m_cLogGLTimeAll, trVDR("no"), trVDR("yes")));
172 }
173 }
174
175 //
176 // Statistics
177 //
178 Add(CollapsedItem(tr("Statistics"), m_cStatisticsMenu));
179 if (m_cStatisticsMenu) {
180 int duped;
181 int dropped;
182 int counter;
184 Add(new cOsdItem(cString::sprintf(tr(" Frames duped(%d) dropped(%d) total(%d)"), duped, dropped, counter), osUnknown, false));
185#ifdef USE_GLES
186 Add(new cOsdItem(cString::sprintf(tr(" OSD: Using %s rendering"), m_pConfig->ConfigDisableOglOsd ? "software" : "hardware"), osUnknown, false));
187#else
188 Add(new cOsdItem(cString::sprintf(tr(" OSD: Using software rendering")), osUnknown, false));
189#endif
190 Add(new cOsdItem(cString::sprintf(tr(" Video decoder: %s (%s)"), m_pConfig->CurrentDecoderName, m_pConfig->CurrentDecoderType), osUnknown, false));
191 }
192
193 //
194 // Expert settings
195 //
196 Add(CollapsedItem(tr("Expert settings"), m_cExpertMenu));
197 if (m_cExpertMenu) {
198 Add(SeparatorName(tr(" Audio settings")));
199 Add(new cMenuEditIntItem(tr(" Adjust a/v buffer size (ms)"), &m_cAdditionalBufferLengthMs, - (m_pDevice->GetMinBufferFillLevelThresholdMs() - 100), 1000));
200
205 Add(new cOsdItem(cString::sprintf(tr(" Current a/v buffer size: %dms"), m_pDevice->GetMinBufferFillLevelThresholdMs() + m_cAdditionalBufferLengthMs), osUnknown, false));
206 Add(new cOsdItem(cString::sprintf(tr(" Audio jitter: %dms, max: %dms"), shortTermAudioJitter, longTermAudioJitter), osUnknown, false));
207 Add(new cOsdItem(cString::sprintf(tr(" Video jitter: %dms, max: %dms"), shortTermVideoJitter, longTermVideoJitter), osUnknown, false));
208
209 Add(SeparatorName(tr(" Video settings")));
210 Add(new cMenuEditBoolItem(tr(" Disable deinterlacer"), &m_cDisableDeint, trVDR("no"), trVDR("yes")));
211 Add(new cMenuEditBoolItem(tr(" Enable SW decoder fallback"), &m_cDecoderFallbackToSw, trVDR("no"), trVDR("yes")));
213 Add(new cOsdItem(cString::sprintf(tr(" (minimum: %d)"), m_pConfig->GetDecoderNeedsMaxPackets() + 1), osUnknown, false));
214 Add(new cMenuEditIntItem(tr(" fallback after num packets"), &m_cDecoderFallbackToSwNumPkts, 22));
215 }
216 Add(new cMenuEditBoolItem(tr(" H.264: Wait for I-Frames"), &m_cDecoderNeedsIFrame, trVDR("no"), trVDR("yes")));
217 Add(new cMenuEditBoolItem(tr(" H.264: Decoder needs video size for init"), &m_cParseH264Dimensions, trVDR("no"), trVDR("yes")));
218 Add(new cMenuEditIntItem(tr(" H.264: Parse stream until num I-Frames"), &m_cParseH264StreamStart, 0, 20));
219 Add(new cMenuEditIntItem(tr(" H.264: Drop invalid P-Frames until num I-Frames"), &m_cDropInvalidH264PFrames, 0, 20));
220#ifdef USE_GLES
221 Add(SeparatorName(tr(" OSD settings")));
223 Add(new cMenuEditIntItem(tr(" GPU mem used for image caching (MB)"), &m_cMaxSizeGPUImageCache, 0, 4000));
224 }
225#endif
226 Add(SeparatorName(tr(" Misc settings")));
227 Add(new cMenuEditBoolItem(tr(" Show channel switch duration"), &m_cShowChannelSwitchDurationMessage, trVDR("no"), trVDR("yes")));
228 }
229
230 SetCurrent(Get(current)); // restore selected menu entry
231 Display(); // display build menu
232}
233
240{
255
256 eOSState state = cMenuSetupPage::ProcessKey(key);
257
258 if (key != kNone) {
259 // update menu only, if something on the structure has changed
260 // this is needed because VDR menus are evil slow
275
276 Create(); // update menu
277 }
278 }
279
280 return state;
281}
282
289 : m_pDevice(device),
290 m_pConfig(m_pDevice->Config()),
291 m_pAudioDevice(m_pDevice->Audio())
292{
293 //
294 // General
295 //
296 m_cGeneralMenu = 0;
298
299 //
300 // Video
301 //
303
304 m_cVideoMenu = 0;
307
308 //
309 // Audio
310 //
311 m_cAudioMenu = 0;
325
326 //
327 // Audio equalizer
328 //
331 for (int i = 0; i < 18; i++) {
333 }
334
335 //
336 // Picture-in-picture
337 //
338 m_cPipMenu = 0;
346
347 //
348 // Logging
349 //
350 m_cLoggingMenu = 0;
367
368 //
369 // Statistics
370 //
372
373 //
374 // Expert settings
375 //
376 m_cExpertMenu = 0;
385#ifdef USE_GLES
387#endif
389
390 Create();
391}
392
394{
395 m_displayMode.clear();
396
397 // CONFIG_DISPLAY_MODE_DEFAULT = 0
398 m_displayMode.push_back(*cString::sprintf(tr("default %dx%d@%.2f%s"),
403
404 // CONFIG_DISPLAY_MODE_FOLLOW_VIDEO = 1
406 m_displayMode.push_back(*cString::sprintf(tr("match video %dx%d@%.2f%s"),
410 m_pConfig->CurrentDrmMode.interlaced ? "i" : ""));
411 else
412 m_displayMode.push_back(tr("match video"));
413
414 // CONFIG_DISPLAY_MODE_FOLLOW_VIDEO_INTERLACED = 2
416 m_displayMode.push_back(*cString::sprintf(tr("match video (interlaced) %dx%d@%.2f%s"),
420 m_pConfig->CurrentDrmMode.interlaced ? "i" : ""));
421 else
422 m_displayMode.push_back(tr("match video (interlaced)"));
423
424 // CONFIG_DISPLAY_MODE_MANUAL = 3
426 m_displayMode.push_back(*cString::sprintf("%dx%d@%.2f%s",
430 m_pConfig->CollectedDrmModes[i - CONFIG_DISPLAY_MODE_MANUAL].interlaced ? "i" : ""));
431 }
432
433 m_displayModePtrs.clear();
434 for (auto &s : m_displayMode)
435 m_displayModePtrs.push_back(s.c_str());
436}
437
442{
443 //
444 // General
445 //
447
448 //
449 // Video
450 //
455 // only save default and auto adjusted modes
457 SetupStore("VideoDisplayMode", m_cVideoDisplayMode);
458
459 //
460 // Audio
461 //
466 // FIXME: can handle more audio state changes here
467 // downmix changed reset audio, to get change direct
470 }
476 SetupStore("AudioPassthrough", m_pConfig->ConfigAudioPassthroughMask);
478 } else {
479 SetupStore("AudioPassthrough", -m_pConfig->ConfigAudioPassthroughMask);
481 }
493
494 //
495 // Audio equalizer
496 //
498 SetupStore("AudioEqBand01b", m_pConfig->ConfigAudioEqBand[0] = m_cAudioEqBand[0]);
499 SetupStore("AudioEqBand02b", m_pConfig->ConfigAudioEqBand[1] = m_cAudioEqBand[1]);
500 SetupStore("AudioEqBand03b", m_pConfig->ConfigAudioEqBand[2] = m_cAudioEqBand[2]);
501 SetupStore("AudioEqBand04b", m_pConfig->ConfigAudioEqBand[3] = m_cAudioEqBand[3]);
502 SetupStore("AudioEqBand05b", m_pConfig->ConfigAudioEqBand[4] = m_cAudioEqBand[4]);
503 SetupStore("AudioEqBand06b", m_pConfig->ConfigAudioEqBand[5] = m_cAudioEqBand[5]);
504 SetupStore("AudioEqBand07b", m_pConfig->ConfigAudioEqBand[6] = m_cAudioEqBand[6]);
505 SetupStore("AudioEqBand08b", m_pConfig->ConfigAudioEqBand[7] = m_cAudioEqBand[7]);
506 SetupStore("AudioEqBand09b", m_pConfig->ConfigAudioEqBand[8] = m_cAudioEqBand[8]);
507 SetupStore("AudioEqBand10b", m_pConfig->ConfigAudioEqBand[9] = m_cAudioEqBand[9]);
508 SetupStore("AudioEqBand11b", m_pConfig->ConfigAudioEqBand[10] = m_cAudioEqBand[10]);
509 SetupStore("AudioEqBand12b", m_pConfig->ConfigAudioEqBand[11] = m_cAudioEqBand[11]);
510 SetupStore("AudioEqBand13b", m_pConfig->ConfigAudioEqBand[12] = m_cAudioEqBand[12]);
511 SetupStore("AudioEqBand14b", m_pConfig->ConfigAudioEqBand[13] = m_cAudioEqBand[13]);
512 SetupStore("AudioEqBand15b", m_pConfig->ConfigAudioEqBand[14] = m_cAudioEqBand[14]);
513 SetupStore("AudioEqBand16b", m_pConfig->ConfigAudioEqBand[15] = m_cAudioEqBand[15]);
514 SetupStore("AudioEqBand17b", m_pConfig->ConfigAudioEqBand[16] = m_cAudioEqBand[16]);
515 SetupStore("AudioEqBand18b", m_pConfig->ConfigAudioEqBand[17] = m_cAudioEqBand[17]);
517
518 //
519 // Picture-in-picture
520 //
528
536 if (m_pDevice->UsePip() && pipChanged)
538
539 //
540 // Logging
541 //
543 (m_cLogDebug_ ? L_DEBUG : 0) |
544 (m_cLogDRM ? L_DRM : 0) |
545 (m_cLogCodec ? L_CODEC : 0) |
546 (m_cLogAVSync ? L_AV_SYNC : 0) |
547 (m_cLogSound ? L_SOUND : 0) |
548 (m_cLogFFmpeg ? L_FFMPEG : 0) |
549 (m_cLogPacket ? L_PACKET : 0) |
550 (m_cLogOSD ? L_OSD : 0) |
551 (m_cLogGrab ? L_GRAB : 0) |
552 (m_cLogStill ? L_STILL : 0) |
553 (m_cLogTrick ? L_TRICK : 0) |
554 (m_cLogMedia ? L_MEDIA : 0) |
555 (m_cLogGL ? L_OPENGL : 0) |
561 if (cSoftHdLogger::GetLogger()->GetLogLevel() != m_pConfig->ConfigLogLevels) {
564 }
565 } else {
566 SetupStore("LogLevel", -m_pConfig->ConfigLogLevels);
567 cSoftHdLogger::GetLogger()->SetLogLevel(0);
568 }
569
570 //
571 // Expert settings
572 //
576 LOGDEBUG("Disable deinterlacer!");
577 }
588#ifdef USE_GLES
590#endif
592
595}
Audio Interface Header File.
void Create(void)
Build setup menu.
cSoftHdDevice * m_pDevice
virtual eOSState ProcessKey(eKeys)
Process key for setup menu.
cSoftHdAudio * m_pAudioDevice
int m_cShowChannelSwitchDurationMessage
std::vector< std::string > m_displayMode
void BuildDisplayModeList(void)
cMenuSetupSoft(cSoftHdDevice *)
Init the setup menu parameters and build the menu.
virtual void Store(void)
Store settings.
int m_cDecoderFallbackToSwNumPkts
cSoftHdConfig * m_pConfig
std::vector< const char * > m_displayModePtrs
cOsdItem * CollapsedItem(const char *, int &, const char *=NULL)
Create a collapsed item.
void SetStereoDescent(int)
Set stereo loudness descent.
Definition audio.cpp:918
void SetEqualizer(bool, int[18])
Set equalizer bands.
Definition audio.cpp:906
void SetAutoAES(bool appendAes)
Definition audio.h:84
void SetCompression(bool, int)
Set volume compression parameters.
Definition audio.cpp:894
void SetSoftvol(bool softVolume)
Definition audio.h:76
void SetDownmix(int downMix)
Definition audio.h:86
void SetNormalize(bool, int)
Set normalize volume parameters.
Definition audio.cpp:882
bool ConfigParseH264Dimensions
parse h264 stream for width and height for decoder init
Definition config.h:102
int ConfigVideoAudioDelayMs
config audio delay
Definition config.h:68
std::atomic< int > StatMaxLongTermAudioJitterMs
logged max overall audio jitter since stream start
Definition config.h:129
void PrintLogLevel(int)
Definition config.cpp:112
int ConfigVideoDisplayMode
display mode (enum ConfigDisplayMode)
Definition config.h:60
bool ConfigLogState
flag logging on/off
Definition config.h:93
bool ConfigAudioNormalize
config use normalize volume
Definition config.h:69
int ConfigAudioAutoAES
config automatic AES handling
Definition config.h:67
int ConfigAudioStereoDescent
config reduce stereo loudness
Definition config.h:73
int ConfigMaxSizeGPUImageCache
config max gpu image cache size
Definition config.h:106
std::atomic< int > StatMaxShortTermAudioJitterMs
logged max audio jitter of the last 1000 packets
Definition config.h:128
int ConfigParseH264StreamStart
log frames at stream start up to the given number of I-Frames
Definition config.h:103
int ConfigDecoderFallbackToSwNumPkts
maximum number of packets sent before fallback to sw decoder
Definition config.h:100
bool ConfigAudioCompression
config use volume compression
Definition config.h:71
bool ConfigAudioPassthroughState
flag audio-passthrough on/off
Definition config.h:66
std::vector< sDrmMode > CollectedDrmModes
collected available drm modes on the current connector
Definition config.h:132
bool ConfigAudioSoftvol
config use software volume
Definition config.h:63
bool ConfigDisableDeint
disable deinterlacer
Definition config.h:98
int ConfigVideoEnableHDR
enable HDR
Definition config.h:59
int ConfigDisableOglOsd
config disable ogl osd
Definition config.h:120
int ConfigPipAltTopPercent
0 = aligned to top, 100 = aligned to bottom
Definition config.h:90
const char * CurrentDecoderType
current decoder type: "hardware" or "software"
Definition config.h:127
int ConfigAudioEqBand[18]
config equalizer filter bands
Definition config.h:77
int ConfigPipLeftPercent
0 = aligned to left, 100 = aligned to right
Definition config.h:84
int ConfigAdditionalBufferLengthMs
config size ms of a/v buffer
Definition config.h:97
int ConfigAudioMaxCompression
config max volume compression
Definition config.h:72
int ConfigPipAltLeftPercent
0 = aligned to left, 100 = aligned to right
Definition config.h:89
int ConfigLogLevels
loglevel config
Definition config.h:94
int ConfigPipAltScalePercent
alternative scale factor of pip video
Definition config.h:88
std::atomic< int > StatMaxShortTermVideoJitterMs
logged max video jitter of the last 1000 packets
Definition config.h:130
int ConfigShowChannelSwitchDurationMessage
let the skin show a short message about the channel switch duration
Definition config.h:108
int ConfigPipTopPercent
0 = aligned to top, 100 = aligned to bottom
Definition config.h:85
bool ConfigDecoderNeedsIFrame
start h264 decoder only when an I-Frame arrives
Definition config.h:101
sDrmMode AutoDetectedDrmMode
auto detected mode on the first startup (maybe equal to UserSetMode)
Definition config.h:133
const char * CurrentDecoderName
current decoder name
Definition config.h:126
bool ConfigDecoderFallbackToSw
fallback to software decoder if the hardware decoder fails
Definition config.h:99
int GetDecoderNeedsMaxPackets(void)
Definition config.cpp:156
int ConfigAudioEq
config equalizer filter
Definition config.h:76
int ConfigPipScalePercent
scale factor of pip video
Definition config.h:83
int ConfigPipUseAlt
Definition config.h:86
int ConfigAudioPassthroughMask
config audio pass-through mask
Definition config.h:65
std::atomic< int > StatMaxLongTermVideoJitterMs
logged max overall video jitter since stream start
Definition config.h:131
bool ConfigHideMainMenuEntry
config hide main menu entry
Definition config.h:56
bool ConfigAudioDownmix
config ffmpeg audio downmix
Definition config.h:64
int ConfigAudioMaxNormalize
config max normalize factor
Definition config.h:70
sDrmMode CurrentDrmMode
currently used drm mode on the current connector
Definition config.h:135
int ConfigDropInvalidH264PFrames
drop P-Frames with invalid references on stream start up to the given number of I-Frames
Definition config.h:104
Output Device Implementation.
void PipSetSize(void)
void SetEnableHdr(bool)
Enable HDR display mode.
void GetStats(int *, int *, int *)
Get statistics from the renderer.
void ResetChannelId(void)
Reset the channel ID (restarts audio)
bool UsePip(void)
void SetDecoderFallbackToSw(bool)
Force the decoder to fallback to software if the hardware decoder fails after the configured amount o...
void SetDecoderNeedsIFrame(void)
Forces the h264 decoder to wait for an I-Frame to start.
void SetParseH264Dimensions(void)
Parse the h264 stream width and height before starting the decoder.
int GetMinBufferFillLevelThresholdMs(void)
void SetPassthroughMask(int)
Set the passthrough mask (called from setup menu or conf)
void SetDisableDeint(void)
Disables deinterlacer (called from setup menu or conf)
void SetDisplayMode(int)
Trigger a display mode change event if the mode changed.
static std::shared_ptr< cSoftHdLogger > GetLogger()
Get an instance to the global logger.
Definition logger.cpp:43
Audio Decoder Header File.
Plugin Configuration Header File.
@ CONFIG_DISPLAY_MODE_FOLLOW_VIDEO_INTERLACED
Definition config.h:40
@ CONFIG_DISPLAY_MODE_FOLLOW_VIDEO
Definition config.h:39
@ CONFIG_DISPLAY_MODE_MANUAL
Definition config.h:41
@ CODEC_EAC3
E-AC-3 bit mask.
Definition codec_audio.h:42
@ CODEC_AC3
AC-3 bit mask.
Definition codec_audio.h:41
@ CODEC_DTS
DTS bit mask.
Definition codec_audio.h:43
static cOsdItem * SeparatorName(const char *label)
Create a seperator item.
#define LOGDEBUG
log to LOG_DEBUG
Definition logger.h:45
@ L_PACKET
decoder packet/frame tracking logs
Definition logger.h:68
@ L_DRM
drm logs
Definition logger.h:60
@ L_OPENGL_TIME
opengl osd flush time measurement
Definition logger.h:66
@ L_STILL
stillpicture logs
Definition logger.h:62
@ L_FFMPEG
ffmpeg logs
Definition logger.h:70
@ L_AV_SYNC
audio/video sync logs
Definition logger.h:57
@ L_MEDIA
mediaplayer logs
Definition logger.h:64
@ L_OSD
osd logs
Definition logger.h:59
@ L_TRICK
trickspeed logs
Definition logger.h:63
@ L_OPENGL
opengl osd logs
Definition logger.h:65
@ L_DEBUG
common debug logs
Definition logger.h:56
@ L_OPENGL_TIME_ALL
opengl osd all commands time measurement
Definition logger.h:67
@ L_CODEC
codec logs
Definition logger.h:61
@ L_SOUND
sound logs
Definition logger.h:58
@ L_GRAB
grabbing logs
Definition logger.h:69
Logger Header File.
Output Device Header File.
static cOsdItem * SeparatorName(const char *label)
Create a seperator named item.
Plugin Setup Menu Header File.
int width
display width
Definition config.h:31
bool interlaced
is this an interlaced mode?
Definition config.h:34
int height
display height
Definition config.h:32
double refreshRateHz
display refresh rate
Definition config.h:33