vdr-plugin-drmdevice 2.0.0-46418f1
setupmenu.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 "device.h"
23#include "logger.h"
24#include "setupmenu.h"
25
33static inline cOsdItem *SeparatorName(const char *label)
34{
35 return new cOsdItem(cString::sprintf("%s:", label), osUnknown, false);
36}
37
45inline cOsdItem *cDeviceSetupMenu::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 cMenuEditIntItem(tr(" H.264: Parse stream until num I-Frames"), &m_cParseH264StreamStart, 0, 20));
218 Add(new cMenuEditIntItem(tr(" H.264: Drop invalid P-Frames until num I-Frames"), &m_cDropInvalidH264PFrames, 0, 20));
219#ifdef USE_GLES
220 Add(SeparatorName(tr(" OSD settings")));
222 Add(new cMenuEditIntItem(tr(" GPU mem used for image caching (MB)"), &m_cMaxSizeGPUImageCache, 0, 4000));
223 }
224#endif
225 Add(SeparatorName(tr(" Misc settings")));
226 Add(new cMenuEditBoolItem(tr(" Show channel switch duration"), &m_cShowChannelSwitchDurationMessage, trVDR("no"), trVDR("yes")));
227 }
228
229 SetCurrent(Get(current)); // restore selected menu entry
230 Display(); // display build menu
231}
232
239{
254
255 eOSState state = cMenuSetupPage::ProcessKey(key);
256
257 if (key != kNone) {
258 // update menu only, if something on the structure has changed
259 // this is needed because VDR menus are evil slow
274
275 Create(); // update menu
276 }
277 }
278
279 return state;
280}
281
288 : m_pDevice(device),
289 m_pConfig(m_pDevice->Config()),
290 m_pAudioDevice(m_pDevice->Audio())
291{
292 //
293 // General
294 //
295 m_cGeneralMenu = 0;
297
298 //
299 // Video
300 //
303
304 m_cVideoMenu = 0;
308
309 //
310 // Audio
311 //
312 m_cAudioMenu = 0;
326
327 //
328 // Audio equalizer
329 //
332 for (int i = 0; i < 18; i++) {
334 }
335
336 //
337 // Picture-in-picture
338 //
339 m_cPipMenu = 0;
347
348 //
349 // Logging
350 //
351 m_cLoggingMenu = 0;
368
369 //
370 // Statistics
371 //
373
374 //
375 // Expert settings
376 //
377 m_cExpertMenu = 0;
384#ifdef USE_GLES
386#endif
388
389 Create();
390}
391
393{
394 m_displayMode.clear();
395
396 // CONFIG_DISPLAY_MODE_DEFAULT = 0
397 m_displayMode.push_back(*cString::sprintf(tr("default %dx%d@%.2f%s"),
402
403 // CONFIG_DISPLAY_MODE_FOLLOW_VIDEO = 1
405 m_displayMode.push_back(*cString::sprintf(tr("match video %dx%d@%.2f%s"),
409 m_pConfig->CurrentDrmMode.interlaced ? "i" : ""));
410 else
411 m_displayMode.push_back(tr("match video"));
412
413 // CONFIG_DISPLAY_MODE_FOLLOW_VIDEO_INTERLACED = 2
415 m_displayMode.push_back(*cString::sprintf(tr("match video (interlaced) %dx%d@%.2f%s"),
419 m_pConfig->CurrentDrmMode.interlaced ? "i" : ""));
420 else
421 m_displayMode.push_back(tr("match video (interlaced)"));
422
423 // CONFIG_DISPLAY_MODE_MANUAL = 3
425 m_displayMode.push_back(*cString::sprintf("%dx%d@%.2f%s",
429 m_pConfig->CollectedDrmModes[i - CONFIG_DISPLAY_MODE_MANUAL].interlaced ? "i" : ""));
430 }
431
432 m_displayModePtrs.clear();
433 for (auto &s : m_displayMode)
434 m_displayModePtrs.push_back(s.c_str());
435}
436
438{
439 m_channelSwitchMode.clear();
440
441 m_channelSwitchMode.push_back(trVDR("off"));
442 m_channelSwitchMode.push_back(tr("video"));
443 m_channelSwitchMode.push_back(tr("video and audio"));
444
445 for (auto &s : m_channelSwitchMode)
446 m_channelSwitchModePtrs.push_back(s.c_str());
447}
448
453{
454 //
455 // General
456 //
458
459 //
460 // Video
461 //
466 // only save default and auto adjusted modes
468 SetupStore("VideoDisplayMode", m_cVideoDisplayMode);
471
472 //
473 // Audio
474 //
479 // FIXME: can handle more audio state changes here
480 // downmix changed reset audio, to get change direct
483 }
489 SetupStore("AudioPassthrough", m_pConfig->ConfigAudioPassthroughMask);
491 } else {
492 SetupStore("AudioPassthrough", -m_pConfig->ConfigAudioPassthroughMask);
494 }
506
507 //
508 // Audio equalizer
509 //
511 SetupStore("AudioEqBand01b", m_pConfig->ConfigAudioEqBand[0] = m_cAudioEqBand[0]);
512 SetupStore("AudioEqBand02b", m_pConfig->ConfigAudioEqBand[1] = m_cAudioEqBand[1]);
513 SetupStore("AudioEqBand03b", m_pConfig->ConfigAudioEqBand[2] = m_cAudioEqBand[2]);
514 SetupStore("AudioEqBand04b", m_pConfig->ConfigAudioEqBand[3] = m_cAudioEqBand[3]);
515 SetupStore("AudioEqBand05b", m_pConfig->ConfigAudioEqBand[4] = m_cAudioEqBand[4]);
516 SetupStore("AudioEqBand06b", m_pConfig->ConfigAudioEqBand[5] = m_cAudioEqBand[5]);
517 SetupStore("AudioEqBand07b", m_pConfig->ConfigAudioEqBand[6] = m_cAudioEqBand[6]);
518 SetupStore("AudioEqBand08b", m_pConfig->ConfigAudioEqBand[7] = m_cAudioEqBand[7]);
519 SetupStore("AudioEqBand09b", m_pConfig->ConfigAudioEqBand[8] = m_cAudioEqBand[8]);
520 SetupStore("AudioEqBand10b", m_pConfig->ConfigAudioEqBand[9] = m_cAudioEqBand[9]);
521 SetupStore("AudioEqBand11b", m_pConfig->ConfigAudioEqBand[10] = m_cAudioEqBand[10]);
522 SetupStore("AudioEqBand12b", m_pConfig->ConfigAudioEqBand[11] = m_cAudioEqBand[11]);
523 SetupStore("AudioEqBand13b", m_pConfig->ConfigAudioEqBand[12] = m_cAudioEqBand[12]);
524 SetupStore("AudioEqBand14b", m_pConfig->ConfigAudioEqBand[13] = m_cAudioEqBand[13]);
525 SetupStore("AudioEqBand15b", m_pConfig->ConfigAudioEqBand[14] = m_cAudioEqBand[14]);
526 SetupStore("AudioEqBand16b", m_pConfig->ConfigAudioEqBand[15] = m_cAudioEqBand[15]);
527 SetupStore("AudioEqBand17b", m_pConfig->ConfigAudioEqBand[16] = m_cAudioEqBand[16]);
528 SetupStore("AudioEqBand18b", m_pConfig->ConfigAudioEqBand[17] = m_cAudioEqBand[17]);
530
531 //
532 // Picture-in-picture
533 //
541
549 if (m_pDevice->UsePip() && pipChanged)
551
552 //
553 // Logging
554 //
556 (m_cLogDebug_ ? L_DEBUG : 0) |
557 (m_cLogDRM ? L_DRM : 0) |
558 (m_cLogCodec ? L_CODEC : 0) |
559 (m_cLogAVSync ? L_AV_SYNC : 0) |
560 (m_cLogSound ? L_SOUND : 0) |
561 (m_cLogFFmpeg ? L_FFMPEG : 0) |
562 (m_cLogPacket ? L_PACKET : 0) |
563 (m_cLogOSD ? L_OSD : 0) |
564 (m_cLogGrab ? L_GRAB : 0) |
565 (m_cLogStill ? L_STILL : 0) |
566 (m_cLogTrick ? L_TRICK : 0) |
567 (m_cLogMedia ? L_MEDIA : 0) |
568 (m_cLogGL ? L_OPENGL : 0) |
574 if (LOGGER->GetLogLevel() != m_pConfig->ConfigLogLevels) {
576 LOGGER->SetLogLevel(m_pConfig->ConfigLogLevels);
577 }
578 } else {
579 SetupStore("LogLevel", -m_pConfig->ConfigLogLevels);
580 LOGGER->SetLogLevel(0);
581 }
582
583 //
584 // Expert settings
585 //
589 LOGDEBUG("Disable deinterlacer!");
590 }
597#ifdef USE_GLES
599#endif
601
604}
Audio Interface Header File.
void SetNormalize(bool, int)
Set normalize volume parameters.
Definition audio.cpp:959
void SetStereoDescent(int)
Set stereo loudness descent.
Definition audio.cpp:995
void SetEqualizer(bool, int[18])
Set equalizer bands.
Definition audio.cpp:983
void SetSoftvol(bool softVolume)
Definition audio.h:84
void SetDownmix(int downMix)
Definition audio.h:94
void SetCompression(bool, int)
Set volume compression parameters.
Definition audio.cpp:971
void SetAutoAES(bool appendAes)
Definition audio.h:92
int ConfigPipUseAlt
Definition config.h:103
std::atomic< int > StatMaxShortTermVideoJitterMs
logged max video jitter of the last 1000 packets
Definition config.h:145
int ConfigPipAltScalePercent
alternative scale factor of pip video
Definition config.h:105
bool ConfigAudioSoftvol
config use software volume
Definition config.h:80
std::atomic< int > StatMaxShortTermAudioJitterMs
logged max audio jitter of the last 1000 packets
Definition config.h:143
void PrintLogLevel(int)
Definition config.cpp:111
std::atomic< int > StatMaxLongTermAudioJitterMs
logged max overall audio jitter since stream start
Definition config.h:144
bool ConfigDecoderFallbackToSw
fallback to software decoder if the hardware decoder fails
Definition config.h:116
int ConfigAdditionalBufferLengthMs
config size ms of a/v buffer
Definition config.h:114
int ConfigPipLeftPercent
0 = aligned to left, 100 = aligned to right
Definition config.h:101
sDrmMode CurrentDrmMode
currently used drm mode on the current connector
Definition config.h:150
int ConfigAudioAutoAES
config automatic AES handling
Definition config.h:84
std::atomic< int > StatMaxLongTermVideoJitterMs
logged max overall video jitter since stream start
Definition config.h:146
bool ConfigLogState
flag logging on/off
Definition config.h:110
int ConfigAudioEqBand[18]
config equalizer filter bands
Definition config.h:94
bool ConfigAudioNormalize
config use normalize volume
Definition config.h:86
int ConfigAudioMaxNormalize
config max normalize factor
Definition config.h:87
bool ConfigAudioCompression
config use volume compression
Definition config.h:88
bool ConfigDisableDeint
disable deinterlacer
Definition config.h:115
int ConfigVideoChannelSwitchMode
channel switch mode (enum ChannelSwitchMode)
Definition config.h:77
int ConfigDecoderFallbackToSwNumPkts
maximum number of packets sent before fallback to sw decoder
Definition config.h:117
int GetDecoderNeedsMaxPackets(void)
Definition config.cpp:155
bool ConfigHideMainMenuEntry
config hide main menu entry
Definition config.h:72
int ConfigVideoAudioDelayMs
config audio delay
Definition config.h:85
int ConfigDisableOglOsd
config disable ogl osd
Definition config.h:135
int ConfigAudioPassthroughMask
config audio pass-through mask
Definition config.h:82
int ConfigPipAltLeftPercent
0 = aligned to left, 100 = aligned to right
Definition config.h:106
bool ConfigAudioDownmix
config ffmpeg audio downmix
Definition config.h:81
int ConfigVideoEnableHDR
enable HDR
Definition config.h:75
int ConfigDropInvalidH264PFrames
drop P-Frames with invalid references on stream start up to the given number of I-Frames
Definition config.h:119
int ConfigVideoDisplayMode
display mode (enum ConfigDisplayModes)
Definition config.h:76
int ConfigAudioEq
config equalizer filter
Definition config.h:93
const char * CurrentDecoderType
current decoder type: "hardware" or "software"
Definition config.h:142
int ConfigAudioStereoDescent
config reduce stereo loudness
Definition config.h:90
int ConfigAudioMaxCompression
config max volume compression
Definition config.h:89
bool ConfigAudioPassthroughState
flag audio-passthrough on/off
Definition config.h:83
const char * CurrentDecoderName
current decoder name
Definition config.h:141
int ConfigLogLevels
loglevel config
Definition config.h:111
int ConfigParseH264StreamStart
log frames at stream start up to the given number of I-Frames
Definition config.h:118
sDrmMode AutoDetectedDrmMode
auto detected mode on the first startup (maybe equal to UserSetMode)
Definition config.h:148
std::vector< sDrmMode > CollectedDrmModes
collected available drm modes on the current connector
Definition config.h:147
int ConfigShowChannelSwitchDurationMessage
let the skin show a short message about the channel switch duration
Definition config.h:123
int ConfigPipScalePercent
scale factor of pip video
Definition config.h:100
int ConfigPipAltTopPercent
0 = aligned to top, 100 = aligned to bottom
Definition config.h:107
int ConfigPipTopPercent
0 = aligned to top, 100 = aligned to bottom
Definition config.h:102
int ConfigMaxSizeGPUImageCache
config max gpu image cache size
Definition config.h:121
int m_cVideoChannelSwitchMode
Definition setupmenu.h:44
cAudioStream * m_pAudioDevice
Definition setupmenu.h:115
cDeviceSetupMenu(cOutputDevice *)
Init the setup menu parameters and build the menu.
std::vector< const char * > m_displayModePtrs
Definition setupmenu.h:118
std::vector< const char * > m_channelSwitchModePtrs
Definition setupmenu.h:120
cOutputDevice * m_pDevice
Definition setupmenu.h:113
int m_cAudioStereoDescent
Definition setupmenu.h:60
int m_cDecoderFallbackToSwNumPkts
Definition setupmenu.h:104
cDeviceConfig * m_pConfig
Definition setupmenu.h:114
int m_cDropInvalidH264PFrames
Definition setupmenu.h:106
void Create(void)
Build setup menu.
Definition setupmenu.cpp:58
int m_cParseH264StreamStart
Definition setupmenu.h:105
int m_cAudioPassthroughAC3
Definition setupmenu.h:51
int m_cDecoderFallbackToSw
Definition setupmenu.h:103
int m_cPipAltScalePercent
Definition setupmenu.h:73
int m_cPipAltLeftPercent
Definition setupmenu.h:74
int m_cAudioMaxCompression
Definition setupmenu.h:59
int m_cAudioCompression
Definition setupmenu.h:58
void BuildDisplayModeList(void)
int m_cShowChannelSwitchDurationMessage
Definition setupmenu.h:110
std::vector< std::string > m_channelSwitchMode
Definition setupmenu.h:119
int m_cHideMainMenuEntry
Definition setupmenu.h:38
void BuildChannelSwitchModeList(void)
int m_cAudioPassthroughDefault
Definition setupmenu.h:50
int m_cVideoDisplayMode
Definition setupmenu.h:43
virtual eOSState ProcessKey(eKeys)
Process key for setup menu.
int m_cAudioMaxNormalize
Definition setupmenu.h:57
virtual void Store(void)
Store settings.
int m_cMaxSizeGPUImageCache
Definition setupmenu.h:108
int m_cAdditionalBufferLengthMs
Definition setupmenu.h:101
int m_cAudioEqBand[18]
Definition setupmenu.h:65
int m_cAudioPassthroughDTS
Definition setupmenu.h:53
int m_cPipAltTopPercent
Definition setupmenu.h:75
std::vector< std::string > m_displayMode
Definition setupmenu.h:117
cOsdItem * CollapsedItem(const char *, int &, const char *=NULL)
Create a collapsed item.
Definition setupmenu.cpp:45
int m_cAudioPassthroughEAC3
Definition setupmenu.h:52
Output Device Implementation.
Definition device.h:72
void SetPassthroughMask(int)
Set the passthrough mask (called from setup menu or conf)
Definition device.cpp:1227
void SetEnableHdr(bool)
Enable HDR display mode.
Definition device.cpp:904
void SetDecoderFallbackToSw(bool)
Force the decoder to fallback to software if the hardware decoder fails after the configured amount o...
Definition device.cpp:890
bool UsePip(void)
Definition device.h:197
void ResetChannelId(void)
Reset the channel ID (restarts audio)
Definition device.cpp:1237
void SetChannelSwitchMode(ChannelSwitchMode mode)
Definition device.h:149
int GetMinBufferFillLevelThresholdMs(void)
Definition device.h:172
void PipSetSize(void)
Definition device.cpp:1455
void SetDisplayMode(int)
Trigger a display mode change event if the mode changed.
Definition device.cpp:914
void SetDisableDeint(void)
Disables deinterlacer (called from setup menu or conf)
Definition device.cpp:879
void GetStats(int *, int *, int *)
Get statistics from the renderer.
Definition device.cpp:1254
Audio Decoder Header File.
Plugin Configuration Header File.
Output Device Header File.
@ CODEC_EAC3
E-AC-3 bit mask.
Definition codec_audio.h:44
@ CODEC_AC3
AC-3 bit mask.
Definition codec_audio.h:43
@ CODEC_DTS
DTS bit mask.
Definition codec_audio.h:45
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.
Definition menu.cpp:56
#define LOGDEBUG
log to LOG_DEBUG
Definition logger.h:46
#define LOGGER
shortcut to the logger
Definition logger.h:51
@ L_PACKET
decoder packet/frame tracking logs
Definition logger.h:72
@ L_DRM
drm logs
Definition logger.h:64
@ L_OPENGL_TIME
opengl osd flush time measurement
Definition logger.h:70
@ L_STILL
stillpicture logs
Definition logger.h:66
@ L_FFMPEG
ffmpeg logs
Definition logger.h:74
@ L_AV_SYNC
audio/video sync logs
Definition logger.h:61
@ L_MEDIA
mediaplayer logs
Definition logger.h:68
@ L_OSD
osd logs
Definition logger.h:63
@ L_TRICK
trickspeed logs
Definition logger.h:67
@ L_OPENGL
opengl osd logs
Definition logger.h:69
@ L_DEBUG
common debug logs
Definition logger.h:60
@ L_OPENGL_TIME_ALL
opengl osd all commands time measurement
Definition logger.h:71
@ L_CODEC
codec logs
Definition logger.h:65
@ L_SOUND
sound logs
Definition logger.h:62
@ L_GRAB
grabbing logs
Definition logger.h:73
Logger Header File.
static cOsdItem * SeparatorName(const char *label)
Create a seperator named item.
Definition setupmenu.cpp:33
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