vdr-plugin-softhddevice-drm-gles 1.6.8-daba64b
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 Add(new cMenuEditStraItem(tr(" Enable fast channel switch"), &m_cVideoChannelSwitchMode, m_channelSwitchModePtrs.size(), m_channelSwitchModePtrs.data()));
81 }
82
83 //
84 // Audio
85 //
86 Add(CollapsedItem(tr("Audio"), m_cAudioMenu));
87 if (m_cAudioMenu) {
88 Add(new cMenuEditBoolItem(tr(" Volume control"), &m_cAudioSoftvol, tr("hardware"), tr("software")));
89 Add(new cMenuEditBoolItem(tr(" Enable stereo downmix"), &m_cAudioDownmix, trVDR("no"), trVDR("yes")));
90 Add(new cMenuEditBoolItem(tr(" Enable passthrough"), &m_cAudioPassthroughDefault, trVDR("off"), trVDR("on")));
92 Add(new cMenuEditBoolItem(tr(" AC-3 passthrough"), &m_cAudioPassthroughAC3, trVDR("no"), trVDR("yes")));
93 Add(new cMenuEditBoolItem(tr(" E-AC-3 passthrough"), &m_cAudioPassthroughEAC3, trVDR("no"), trVDR("yes")));
94 Add(new cMenuEditBoolItem(tr(" DTS passthrough"), &m_cAudioPassthroughDTS, trVDR("no"), trVDR("yes")));
95 Add(new cMenuEditBoolItem(tr(" Enable automatic AES"), &m_cAudioAutoAES, trVDR("no"), trVDR("yes")));
96 }
97 Add(new cMenuEditIntItem(tr(" Audio/Video delay (ms)"), &m_cAudioDelay, -1000, 1000));
98 Add(new cMenuEditBoolItem(tr(" Enable normalize volume"), &m_cAudioNormalize, trVDR("no"), trVDR("yes")));
100 Add(new cMenuEditIntItem(tr(" Max normalize factor (/1000)"), &m_cAudioMaxNormalize, 0, 10000));
101 Add(new cMenuEditBoolItem(tr(" Enable volume compression"), &m_cAudioCompression, trVDR("no"), trVDR("yes")));
103 Add(new cMenuEditIntItem(tr(" Max compression factor (/1000)"), &m_cAudioMaxCompression, 0, 10000));
104 Add(new cMenuEditIntItem(tr(" Reduce stereo volume (/1000)"), &m_cAudioStereoDescent, 0, 1000));
105 }
106
107 //
108 // Audio filter
109 //
110 Add(CollapsedItem(tr("Audio equalizer"), m_cAudioFilterMenu));
111 if (m_cAudioFilterMenu) {
112 Add(new cMenuEditBoolItem(tr(" Enable audio equalizer"), &m_cAudioEq, trVDR("no"), trVDR("yes")));
113 if (m_cAudioEq) {
114 Add(new cMenuEditIntItem(tr(" 60 Hz band gain"), &m_cAudioEqBand[0], -15, 1));
115 Add(new cMenuEditIntItem(tr(" 72 Hz band gain"), &m_cAudioEqBand[1], -15, 1));
116 Add(new cMenuEditIntItem(tr(" 107 Hz band gain"), &m_cAudioEqBand[2], -15, 1));
117 Add(new cMenuEditIntItem(tr(" 150 Hz band gain"), &m_cAudioEqBand[3], -15, 1));
118 Add(new cMenuEditIntItem(tr(" 220 Hz band gain"), &m_cAudioEqBand[4], -15, 1));
119 Add(new cMenuEditIntItem(tr(" 310 Hz band gain"), &m_cAudioEqBand[5], -15, 1));
120 Add(new cMenuEditIntItem(tr(" 430 Hz band gain"), &m_cAudioEqBand[6], -15, 1));
121 Add(new cMenuEditIntItem(tr(" 620 Hz band gain"), &m_cAudioEqBand[7], -15, 1));
122 Add(new cMenuEditIntItem(tr(" 860 Hz band gain"), &m_cAudioEqBand[8], -15, 1));
123 Add(new cMenuEditIntItem(tr(" 1200 Hz band gain"), &m_cAudioEqBand[9], -15, 1));
124 Add(new cMenuEditIntItem(tr(" 1700 Hz band gain"), &m_cAudioEqBand[10], -15, 1));
125 Add(new cMenuEditIntItem(tr(" 2500 Hz band gain"), &m_cAudioEqBand[11], -15, 1));
126 Add(new cMenuEditIntItem(tr(" 3500 Hz band gain"), &m_cAudioEqBand[12], -15, 1));
127 Add(new cMenuEditIntItem(tr(" 4800 Hz band gain"), &m_cAudioEqBand[13], -15, 1));
128 Add(new cMenuEditIntItem(tr(" 7000 Hz band gain"), &m_cAudioEqBand[14], -15, 1));
129 Add(new cMenuEditIntItem(tr(" 9500 Hz band gain"), &m_cAudioEqBand[15], -15, 1));
130 Add(new cMenuEditIntItem(tr(" 13500 Hz band gain"), &m_cAudioEqBand[16], -15, 1));
131 Add(new cMenuEditIntItem(tr(" 17200 Hz band gain"), &m_cAudioEqBand[17], -15, 1));
132 }
133 }
134
135 //
136 // PiP
137 //
138 if (m_pDevice->UsePip()) {
139 Add(CollapsedItem(tr("Picture-in-picture"), m_cPipMenu));
140 if (m_cPipMenu) {
141 Add(new cMenuEditIntItem(tr(" video scaling factor (%)"), &m_cPipScalePercent, 10, 100));
142 Add(new cMenuEditIntItem(tr(" video left (%)"), &m_cPipLeftPercent, 0, 100));
143 Add(new cMenuEditIntItem(tr(" video top (%)"), &m_cPipTopPercent, 0, 100));
144 Add(new cMenuEditBoolItem(tr(" use alternative position as default"), &m_cPipUseAlt, trVDR("no"), trVDR("yes")));
145 Add(new cMenuEditIntItem(tr(" alternative video scaling factor (%)"), &m_cPipAltScalePercent, 10, 100));
146 Add(new cMenuEditIntItem(tr(" alternative video left (%)"), &m_cPipAltLeftPercent, 0, 100));
147 Add(new cMenuEditIntItem(tr(" alternative video top (%)"), &m_cPipAltTopPercent, 0, 100));
148 }
149 }
150
151 //
152 // Logging
153 //
154 Add(CollapsedItem(tr("Logging"), m_cLoggingMenu));
155 if (m_cLoggingMenu) {
156 Add(new cMenuEditBoolItem(tr(" Enable logging"), &m_cLogDefault, trVDR("off"), trVDR("on")));
157 if (m_cLogDefault) {
158 Add(new cMenuEditBoolItem(tr(" Standard debug logs"), &m_cLogDebug_, trVDR("no"), trVDR("yes")));
159 Add(new cMenuEditBoolItem(tr(" DRM debug logs"), &m_cLogDRM, trVDR("no"), trVDR("yes")));
160 Add(new cMenuEditBoolItem(tr(" Codec debug logs"), &m_cLogCodec, trVDR("no"), trVDR("yes")));
161 Add(new cMenuEditBoolItem(tr(" AV Sync debug logs"), &m_cLogAVSync, trVDR("no"), trVDR("yes")));
162 Add(new cMenuEditBoolItem(tr(" Sound debug logs"), &m_cLogSound, trVDR("no"), trVDR("yes")));
163 Add(new cMenuEditBoolItem(tr(" FFmpeg debug logs"), &m_cLogFFmpeg, trVDR("no"), trVDR("yes")));
164 Add(new cMenuEditBoolItem(tr(" Packet tracking logs"), &m_cLogPacket, trVDR("no"), trVDR("yes")));
165 Add(new cMenuEditBoolItem(tr(" OSD debug logs"), &m_cLogOSD, trVDR("no"), trVDR("yes")));
166 Add(new cMenuEditBoolItem(tr(" Grabbing debug logs"), &m_cLogGrab, trVDR("no"), trVDR("yes")));
167 Add(new cMenuEditBoolItem(tr(" Stillpicture debug logs"), &m_cLogStill, trVDR("no"), trVDR("yes")));
168 Add(new cMenuEditBoolItem(tr(" Trickspeed debug logs"), &m_cLogTrick, trVDR("no"), trVDR("yes")));
169 Add(new cMenuEditBoolItem(tr(" Mediaplayer debug logs"), &m_cLogMedia, trVDR("no"), trVDR("yes")));
170 Add(new cMenuEditBoolItem(tr(" OpenGL OSD debug logs"), &m_cLogGL, trVDR("no"), trVDR("yes")));
171 Add(new cMenuEditBoolItem(tr(" OpenGL OSD time measurement"), &m_cLogGLTime, trVDR("no"), trVDR("yes")));
172 Add(new cMenuEditBoolItem(tr(" OpenGL OSD time measurement (extensive)"), &m_cLogGLTimeAll, trVDR("no"), trVDR("yes")));
173 }
174 }
175
176 //
177 // Statistics
178 //
179 Add(CollapsedItem(tr("Statistics"), m_cStatisticsMenu));
180 if (m_cStatisticsMenu) {
181 int duped;
182 int dropped;
183 int counter;
185 Add(new cOsdItem(cString::sprintf(tr(" Frames duped(%d) dropped(%d) total(%d)"), duped, dropped, counter), osUnknown, false));
186#ifdef USE_GLES
187 Add(new cOsdItem(cString::sprintf(tr(" OSD: Using %s rendering"), m_pConfig->ConfigDisableOglOsd ? "software" : "hardware"), osUnknown, false));
188#else
189 Add(new cOsdItem(cString::sprintf(tr(" OSD: Using software rendering")), osUnknown, false));
190#endif
191 Add(new cOsdItem(cString::sprintf(tr(" Video decoder: %s (%s)"), m_pConfig->CurrentDecoderName, m_pConfig->CurrentDecoderType), osUnknown, false));
192 }
193
194 //
195 // Expert settings
196 //
197 Add(CollapsedItem(tr("Expert settings"), m_cExpertMenu));
198 if (m_cExpertMenu) {
199 Add(SeparatorName(tr(" Audio settings")));
200 Add(new cMenuEditIntItem(tr(" Adjust a/v buffer size (ms)"), &m_cAdditionalBufferLengthMs, - (m_pDevice->GetMinBufferFillLevelThresholdMs() - 100), 1000));
201
206 Add(new cOsdItem(cString::sprintf(tr(" Current a/v buffer size: %dms"), m_pDevice->GetMinBufferFillLevelThresholdMs() + m_cAdditionalBufferLengthMs), osUnknown, false));
207 Add(new cOsdItem(cString::sprintf(tr(" Audio jitter: %dms, max: %dms"), shortTermAudioJitter, longTermAudioJitter), osUnknown, false));
208 Add(new cOsdItem(cString::sprintf(tr(" Video jitter: %dms, max: %dms"), shortTermVideoJitter, longTermVideoJitter), osUnknown, false));
209
210 Add(SeparatorName(tr(" Video settings")));
211 Add(new cMenuEditBoolItem(tr(" Disable deinterlacer"), &m_cDisableDeint, trVDR("no"), trVDR("yes")));
212 Add(new cMenuEditBoolItem(tr(" Enable SW decoder fallback"), &m_cDecoderFallbackToSw, trVDR("no"), trVDR("yes")));
214 Add(new cOsdItem(cString::sprintf(tr(" (minimum: %d)"), m_pConfig->GetDecoderNeedsMaxPackets() + 1), osUnknown, false));
215 Add(new cMenuEditIntItem(tr(" fallback after num packets"), &m_cDecoderFallbackToSwNumPkts, 22));
216 }
217 Add(new cMenuEditBoolItem(tr(" H.264: Wait for I-Frames"), &m_cDecoderNeedsIFrame, trVDR("no"), trVDR("yes")));
218 Add(new cMenuEditBoolItem(tr(" H.264: Decoder needs video size for init"), &m_cParseH264Dimensions, trVDR("no"), trVDR("yes")));
219 Add(new cMenuEditIntItem(tr(" H.264: Parse stream until num I-Frames"), &m_cParseH264StreamStart, 0, 20));
220 Add(new cMenuEditIntItem(tr(" H.264: Drop invalid P-Frames until num I-Frames"), &m_cDropInvalidH264PFrames, 0, 20));
221#ifdef USE_GLES
222 Add(SeparatorName(tr(" OSD settings")));
224 Add(new cMenuEditIntItem(tr(" GPU mem used for image caching (MB)"), &m_cMaxSizeGPUImageCache, 0, 4000));
225 }
226#endif
227 Add(SeparatorName(tr(" Misc settings")));
228 Add(new cMenuEditBoolItem(tr(" Show channel switch duration"), &m_cShowChannelSwitchDurationMessage, trVDR("no"), trVDR("yes")));
229 }
230
231 SetCurrent(Get(current)); // restore selected menu entry
232 Display(); // display build menu
233}
234
241{
256
257 eOSState state = cMenuSetupPage::ProcessKey(key);
258
259 if (key != kNone) {
260 // update menu only, if something on the structure has changed
261 // this is needed because VDR menus are evil slow
276
277 Create(); // update menu
278 }
279 }
280
281 return state;
282}
283
290 : m_pDevice(device),
291 m_pConfig(m_pDevice->Config()),
292 m_pAudioDevice(m_pDevice->Audio())
293{
294 //
295 // General
296 //
297 m_cGeneralMenu = 0;
299
300 //
301 // Video
302 //
305
306 m_cVideoMenu = 0;
310
311 //
312 // Audio
313 //
314 m_cAudioMenu = 0;
328
329 //
330 // Audio equalizer
331 //
334 for (int i = 0; i < 18; i++) {
336 }
337
338 //
339 // Picture-in-picture
340 //
341 m_cPipMenu = 0;
349
350 //
351 // Logging
352 //
353 m_cLoggingMenu = 0;
370
371 //
372 // Statistics
373 //
375
376 //
377 // Expert settings
378 //
379 m_cExpertMenu = 0;
388#ifdef USE_GLES
390#endif
392
393 Create();
394}
395
397{
398 m_displayMode.clear();
399
400 // CONFIG_DISPLAY_MODE_DEFAULT = 0
401 m_displayMode.push_back(*cString::sprintf(tr("default %dx%d@%.2f%s"),
406
407 // CONFIG_DISPLAY_MODE_FOLLOW_VIDEO = 1
409 m_displayMode.push_back(*cString::sprintf(tr("match video %dx%d@%.2f%s"),
413 m_pConfig->CurrentDrmMode.interlaced ? "i" : ""));
414 else
415 m_displayMode.push_back(tr("match video"));
416
417 // CONFIG_DISPLAY_MODE_FOLLOW_VIDEO_INTERLACED = 2
419 m_displayMode.push_back(*cString::sprintf(tr("match video (interlaced) %dx%d@%.2f%s"),
423 m_pConfig->CurrentDrmMode.interlaced ? "i" : ""));
424 else
425 m_displayMode.push_back(tr("match video (interlaced)"));
426
427 // CONFIG_DISPLAY_MODE_MANUAL = 3
429 m_displayMode.push_back(*cString::sprintf("%dx%d@%.2f%s",
433 m_pConfig->CollectedDrmModes[i - CONFIG_DISPLAY_MODE_MANUAL].interlaced ? "i" : ""));
434 }
435
436 m_displayModePtrs.clear();
437 for (auto &s : m_displayMode)
438 m_displayModePtrs.push_back(s.c_str());
439}
440
442{
443 m_channelSwitchMode.clear();
444
445 m_channelSwitchMode.push_back(trVDR("off"));
446 m_channelSwitchMode.push_back(tr("video"));
447 m_channelSwitchMode.push_back(tr("video and audio"));
448
449 for (auto &s : m_channelSwitchMode)
450 m_channelSwitchModePtrs.push_back(s.c_str());
451}
452
457{
458 //
459 // General
460 //
462
463 //
464 // Video
465 //
470 // only save default and auto adjusted modes
472 SetupStore("VideoDisplayMode", m_cVideoDisplayMode);
475
476 //
477 // Audio
478 //
483 // FIXME: can handle more audio state changes here
484 // downmix changed reset audio, to get change direct
487 }
493 SetupStore("AudioPassthrough", m_pConfig->ConfigAudioPassthroughMask);
495 } else {
496 SetupStore("AudioPassthrough", -m_pConfig->ConfigAudioPassthroughMask);
498 }
510
511 //
512 // Audio equalizer
513 //
515 SetupStore("AudioEqBand01b", m_pConfig->ConfigAudioEqBand[0] = m_cAudioEqBand[0]);
516 SetupStore("AudioEqBand02b", m_pConfig->ConfigAudioEqBand[1] = m_cAudioEqBand[1]);
517 SetupStore("AudioEqBand03b", m_pConfig->ConfigAudioEqBand[2] = m_cAudioEqBand[2]);
518 SetupStore("AudioEqBand04b", m_pConfig->ConfigAudioEqBand[3] = m_cAudioEqBand[3]);
519 SetupStore("AudioEqBand05b", m_pConfig->ConfigAudioEqBand[4] = m_cAudioEqBand[4]);
520 SetupStore("AudioEqBand06b", m_pConfig->ConfigAudioEqBand[5] = m_cAudioEqBand[5]);
521 SetupStore("AudioEqBand07b", m_pConfig->ConfigAudioEqBand[6] = m_cAudioEqBand[6]);
522 SetupStore("AudioEqBand08b", m_pConfig->ConfigAudioEqBand[7] = m_cAudioEqBand[7]);
523 SetupStore("AudioEqBand09b", m_pConfig->ConfigAudioEqBand[8] = m_cAudioEqBand[8]);
524 SetupStore("AudioEqBand10b", m_pConfig->ConfigAudioEqBand[9] = m_cAudioEqBand[9]);
525 SetupStore("AudioEqBand11b", m_pConfig->ConfigAudioEqBand[10] = m_cAudioEqBand[10]);
526 SetupStore("AudioEqBand12b", m_pConfig->ConfigAudioEqBand[11] = m_cAudioEqBand[11]);
527 SetupStore("AudioEqBand13b", m_pConfig->ConfigAudioEqBand[12] = m_cAudioEqBand[12]);
528 SetupStore("AudioEqBand14b", m_pConfig->ConfigAudioEqBand[13] = m_cAudioEqBand[13]);
529 SetupStore("AudioEqBand15b", m_pConfig->ConfigAudioEqBand[14] = m_cAudioEqBand[14]);
530 SetupStore("AudioEqBand16b", m_pConfig->ConfigAudioEqBand[15] = m_cAudioEqBand[15]);
531 SetupStore("AudioEqBand17b", m_pConfig->ConfigAudioEqBand[16] = m_cAudioEqBand[16]);
532 SetupStore("AudioEqBand18b", m_pConfig->ConfigAudioEqBand[17] = m_cAudioEqBand[17]);
534
535 //
536 // Picture-in-picture
537 //
545
553 if (m_pDevice->UsePip() && pipChanged)
555
556 //
557 // Logging
558 //
560 (m_cLogDebug_ ? L_DEBUG : 0) |
561 (m_cLogDRM ? L_DRM : 0) |
562 (m_cLogCodec ? L_CODEC : 0) |
563 (m_cLogAVSync ? L_AV_SYNC : 0) |
564 (m_cLogSound ? L_SOUND : 0) |
565 (m_cLogFFmpeg ? L_FFMPEG : 0) |
566 (m_cLogPacket ? L_PACKET : 0) |
567 (m_cLogOSD ? L_OSD : 0) |
568 (m_cLogGrab ? L_GRAB : 0) |
569 (m_cLogStill ? L_STILL : 0) |
570 (m_cLogTrick ? L_TRICK : 0) |
571 (m_cLogMedia ? L_MEDIA : 0) |
572 (m_cLogGL ? L_OPENGL : 0) |
578 if (cSoftHdLogger::GetLogger()->GetLogLevel() != m_pConfig->ConfigLogLevels) {
581 }
582 } else {
583 SetupStore("LogLevel", -m_pConfig->ConfigLogLevels);
584 cSoftHdLogger::GetLogger()->SetLogLevel(0);
585 }
586
587 //
588 // Expert settings
589 //
593 LOGDEBUG("Disable deinterlacer!");
594 }
605#ifdef USE_GLES
607#endif
609
612}
Audio Interface Header File.
std::vector< const char * > m_channelSwitchModePtrs
void Create(void)
Build setup menu.
cSoftHdDevice * m_pDevice
virtual eOSState ProcessKey(eKeys)
Process key for setup menu.
void BuildChannelSwitchModeList(void)
cSoftHdAudio * m_pAudioDevice
int m_cShowChannelSwitchDurationMessage
std::vector< std::string > m_displayMode
void BuildDisplayModeList(void)
std::vector< std::string > m_channelSwitchMode
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:934
void SetEqualizer(bool, int[18])
Set equalizer bands.
Definition audio.cpp:922
void SetAutoAES(bool appendAes)
Definition audio.h:85
void SetCompression(bool, int)
Set volume compression parameters.
Definition audio.cpp:910
void SetSoftvol(bool softVolume)
Definition audio.h:77
void SetDownmix(int downMix)
Definition audio.h:87
void SetNormalize(bool, int)
Set normalize volume parameters.
Definition audio.cpp:898
bool ConfigParseH264Dimensions
parse h264 stream for width and height for decoder init
Definition config.h:119
int ConfigVideoAudioDelayMs
config audio delay
Definition config.h:85
std::atomic< int > StatMaxLongTermAudioJitterMs
logged max overall audio jitter since stream start
Definition config.h:146
void PrintLogLevel(int)
Definition config.cpp:113
int ConfigVideoDisplayMode
display mode (enum ConfigDisplayModes)
Definition config.h:76
bool ConfigLogState
flag logging on/off
Definition config.h:110
bool ConfigAudioNormalize
config use normalize volume
Definition config.h:86
int ConfigAudioAutoAES
config automatic AES handling
Definition config.h:84
int ConfigVideoChannelSwitchMode
channel switch mode (enum ChannelSwitchMode)
Definition config.h:77
int ConfigAudioStereoDescent
config reduce stereo loudness
Definition config.h:90
int ConfigMaxSizeGPUImageCache
config max gpu image cache size
Definition config.h:123
std::atomic< int > StatMaxShortTermAudioJitterMs
logged max audio jitter of the last 1000 packets
Definition config.h:145
int ConfigParseH264StreamStart
log frames at stream start up to the given number of I-Frames
Definition config.h:120
int ConfigDecoderFallbackToSwNumPkts
maximum number of packets sent before fallback to sw decoder
Definition config.h:117
bool ConfigAudioCompression
config use volume compression
Definition config.h:88
bool ConfigAudioPassthroughState
flag audio-passthrough on/off
Definition config.h:83
std::vector< sDrmMode > CollectedDrmModes
collected available drm modes on the current connector
Definition config.h:149
bool ConfigAudioSoftvol
config use software volume
Definition config.h:80
bool ConfigDisableDeint
disable deinterlacer
Definition config.h:115
int ConfigVideoEnableHDR
enable HDR
Definition config.h:75
int ConfigDisableOglOsd
config disable ogl osd
Definition config.h:137
int ConfigPipAltTopPercent
0 = aligned to top, 100 = aligned to bottom
Definition config.h:107
const char * CurrentDecoderType
current decoder type: "hardware" or "software"
Definition config.h:144
int ConfigAudioEqBand[18]
config equalizer filter bands
Definition config.h:94
int ConfigPipLeftPercent
0 = aligned to left, 100 = aligned to right
Definition config.h:101
int ConfigAdditionalBufferLengthMs
config size ms of a/v buffer
Definition config.h:114
int ConfigAudioMaxCompression
config max volume compression
Definition config.h:89
int ConfigPipAltLeftPercent
0 = aligned to left, 100 = aligned to right
Definition config.h:106
int ConfigLogLevels
loglevel config
Definition config.h:111
int ConfigPipAltScalePercent
alternative scale factor of pip video
Definition config.h:105
std::atomic< int > StatMaxShortTermVideoJitterMs
logged max video jitter of the last 1000 packets
Definition config.h:147
int ConfigShowChannelSwitchDurationMessage
let the skin show a short message about the channel switch duration
Definition config.h:125
int ConfigPipTopPercent
0 = aligned to top, 100 = aligned to bottom
Definition config.h:102
bool ConfigDecoderNeedsIFrame
start h264 decoder only when an I-Frame arrives
Definition config.h:118
sDrmMode AutoDetectedDrmMode
auto detected mode on the first startup (maybe equal to UserSetMode)
Definition config.h:150
const char * CurrentDecoderName
current decoder name
Definition config.h:143
bool ConfigDecoderFallbackToSw
fallback to software decoder if the hardware decoder fails
Definition config.h:116
int GetDecoderNeedsMaxPackets(void)
Definition config.cpp:157
int ConfigAudioEq
config equalizer filter
Definition config.h:93
int ConfigPipScalePercent
scale factor of pip video
Definition config.h:100
int ConfigPipUseAlt
Definition config.h:103
int ConfigAudioPassthroughMask
config audio pass-through mask
Definition config.h:82
std::atomic< int > StatMaxLongTermVideoJitterMs
logged max overall video jitter since stream start
Definition config.h:148
bool ConfigHideMainMenuEntry
config hide main menu entry
Definition config.h:72
bool ConfigAudioDownmix
config ffmpeg audio downmix
Definition config.h:81
int ConfigAudioMaxNormalize
config max normalize factor
Definition config.h:87
sDrmMode CurrentDrmMode
currently used drm mode on the current connector
Definition config.h:152
int ConfigDropInvalidH264PFrames
drop P-Frames with invalid references on stream start up to the given number of I-Frames
Definition config.h:121
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 SetChannelSwitchMode(ChannelSwitchMode mode)
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.
@ 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
ChannelSwitchMode
Channel switch modes.
Definition config.h:54
@ CONFIG_DISPLAY_MODE_FOLLOW_VIDEO_INTERLACED
Definition config.h:45
@ CONFIG_DISPLAY_MODE_FOLLOW_VIDEO
Definition config.h:44
@ CONFIG_DISPLAY_MODE_MANUAL
Definition config.h:46
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