vdr-plugin-softhddevice-drm-gles 1.6.2
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
40static inline cOsdItem *SeparatorName(const char *label)
41{
42 return new cOsdItem(cString::sprintf("%s:", label), osUnknown, false);
43}
44
52inline cOsdItem *cMenuSetupSoft::CollapsedItem(const char *label, int &flag, const char *msg)
53{
55
56 item = new cMenuEditBoolItem(cString::sprintf("* %s", label), &flag,
57 msg ? msg : tr("show"), tr("hide"));
58
59 return item;
60}
61
66{
67 int current;
68
69 current = Current(); // get current menu item index
70 Clear(); // clear the menu
71
72 //
73 // General
74 //
75 Add(CollapsedItem(tr("General"), m_cGeneralMenu));
76 if (m_cGeneralMenu) {
77 Add(new cMenuEditBoolItem(tr(" Hide main menu entry"), &m_cHideMainMenuEntry, trVDR("no"), trVDR("yes")));
78 }
79
80 //
81 // Video
82 //
83 Add(CollapsedItem(tr("Video"), m_cVideoMenu));
84 if (m_cVideoMenu) {
85 Add(new cMenuEditBoolItem(tr(" Enable HDR"), &m_cVideoEnableHDR, trVDR("no"), trVDR("yes")));
86 }
87
88 //
89 // Audio
90 //
91 Add(CollapsedItem(tr("Audio"), m_cAudioMenu));
92 if (m_cAudioMenu) {
93 Add(new cMenuEditBoolItem(tr(" Volume control"), &m_cAudioSoftvol, tr("hardware"), tr("software")));
94 Add(new cMenuEditBoolItem(tr(" Enable stereo downmix"), &m_cAudioDownmix, trVDR("no"), trVDR("yes")));
95 Add(new cMenuEditBoolItem(tr(" Enable passthrough"), &m_cAudioPassthroughDefault, trVDR("off"), trVDR("on")));
97 Add(new cMenuEditBoolItem(tr(" AC-3 passthrough"), &m_cAudioPassthroughAC3, trVDR("no"), trVDR("yes")));
98 Add(new cMenuEditBoolItem(tr(" E-AC-3 passthrough"), &m_cAudioPassthroughEAC3, trVDR("no"), trVDR("yes")));
99 Add(new cMenuEditBoolItem(tr(" DTS passthrough"), &m_cAudioPassthroughDTS, trVDR("no"), trVDR("yes")));
100 Add(new cMenuEditBoolItem(tr(" Enable automatic AES"), &m_cAudioAutoAES, trVDR("no"), trVDR("yes")));
101 }
102 Add(new cMenuEditIntItem(tr(" Audio/Video delay (ms)"), &m_cAudioDelay, -1000, 1000));
103 Add(new cMenuEditBoolItem(tr(" Enable normalize volume"), &m_cAudioNormalize, trVDR("no"), trVDR("yes")));
105 Add(new cMenuEditIntItem(tr(" Max normalize factor (/1000)"), &m_cAudioMaxNormalize, 0, 10000));
106 Add(new cMenuEditBoolItem(tr(" Enable volume compression"), &m_cAudioCompression, trVDR("no"), trVDR("yes")));
108 Add(new cMenuEditIntItem(tr(" Max compression factor (/1000)"), &m_cAudioMaxCompression, 0, 10000));
109 Add(new cMenuEditIntItem(tr(" Reduce stereo volume (/1000)"), &m_cAudioStereoDescent, 0, 1000));
110 }
111
112 //
113 // Audio filter
114 //
115 Add(CollapsedItem(tr("Audio equalizer"), m_cAudioFilterMenu));
116 if (m_cAudioFilterMenu) {
117 Add(new cMenuEditBoolItem(tr(" Enable audio equalizer"), &m_cAudioEq, trVDR("no"), trVDR("yes")));
118 if (m_cAudioEq) {
119 Add(new cMenuEditIntItem(tr(" 60 Hz band gain"), &m_cAudioEqBand[0], -15, 1));
120 Add(new cMenuEditIntItem(tr(" 72 Hz band gain"), &m_cAudioEqBand[1], -15, 1));
121 Add(new cMenuEditIntItem(tr(" 107 Hz band gain"), &m_cAudioEqBand[2], -15, 1));
122 Add(new cMenuEditIntItem(tr(" 150 Hz band gain"), &m_cAudioEqBand[3], -15, 1));
123 Add(new cMenuEditIntItem(tr(" 220 Hz band gain"), &m_cAudioEqBand[4], -15, 1));
124 Add(new cMenuEditIntItem(tr(" 310 Hz band gain"), &m_cAudioEqBand[5], -15, 1));
125 Add(new cMenuEditIntItem(tr(" 430 Hz band gain"), &m_cAudioEqBand[6], -15, 1));
126 Add(new cMenuEditIntItem(tr(" 620 Hz band gain"), &m_cAudioEqBand[7], -15, 1));
127 Add(new cMenuEditIntItem(tr(" 860 Hz band gain"), &m_cAudioEqBand[8], -15, 1));
128 Add(new cMenuEditIntItem(tr(" 1200 Hz band gain"), &m_cAudioEqBand[9], -15, 1));
129 Add(new cMenuEditIntItem(tr(" 1700 Hz band gain"), &m_cAudioEqBand[10], -15, 1));
130 Add(new cMenuEditIntItem(tr(" 2500 Hz band gain"), &m_cAudioEqBand[11], -15, 1));
131 Add(new cMenuEditIntItem(tr(" 3500 Hz band gain"), &m_cAudioEqBand[12], -15, 1));
132 Add(new cMenuEditIntItem(tr(" 4800 Hz band gain"), &m_cAudioEqBand[13], -15, 1));
133 Add(new cMenuEditIntItem(tr(" 7000 Hz band gain"), &m_cAudioEqBand[14], -15, 1));
134 Add(new cMenuEditIntItem(tr(" 9500 Hz band gain"), &m_cAudioEqBand[15], -15, 1));
135 Add(new cMenuEditIntItem(tr(" 13500 Hz band gain"), &m_cAudioEqBand[16], -15, 1));
136 Add(new cMenuEditIntItem(tr(" 17200 Hz band gain"), &m_cAudioEqBand[17], -15, 1));
137 }
138 }
139
140 //
141 // PiP
142 //
143 if (m_pDevice->UsePip()) {
144 Add(CollapsedItem(tr("Picture-in-picture"), m_cPipMenu));
145 if (m_cPipMenu) {
146 Add(new cMenuEditIntItem(tr(" video scaling factor (%)"), &m_cPipScalePercent, 10, 100));
147 Add(new cMenuEditIntItem(tr(" video left (%)"), &m_cPipLeftPercent, 0, 100));
148 Add(new cMenuEditIntItem(tr(" video top (%)"), &m_cPipTopPercent, 0, 100));
149 Add(new cMenuEditBoolItem(tr(" use alternative position as default"), &m_cPipUseAlt, trVDR("no"), trVDR("yes")));
150 Add(new cMenuEditIntItem(tr(" alternative video scaling factor (%)"), &m_cPipAltScalePercent, 10, 100));
151 Add(new cMenuEditIntItem(tr(" alternative video left (%)"), &m_cPipAltLeftPercent, 0, 100));
152 Add(new cMenuEditIntItem(tr(" alternative video top (%)"), &m_cPipAltTopPercent, 0, 100));
153 }
154 }
155
156 //
157 // Logging
158 //
159 Add(CollapsedItem(tr("Logging"), m_cLoggingMenu));
160 if (m_cLoggingMenu) {
161 Add(new cMenuEditBoolItem(tr(" Enable logging"), &m_cLogDefault, trVDR("off"), trVDR("on")));
162 if (m_cLogDefault) {
163 Add(new cMenuEditBoolItem(tr(" Standard debug logs"), &m_cLogDebug_, trVDR("no"), trVDR("yes")));
164 Add(new cMenuEditBoolItem(tr(" DRM debug logs"), &m_cLogDRM, trVDR("no"), trVDR("yes")));
165 Add(new cMenuEditBoolItem(tr(" Codec debug logs"), &m_cLogCodec, trVDR("no"), trVDR("yes")));
166 Add(new cMenuEditBoolItem(tr(" AV Sync debug logs"), &m_cLogAVSync, trVDR("no"), trVDR("yes")));
167 Add(new cMenuEditBoolItem(tr(" Sound debug logs"), &m_cLogSound, trVDR("no"), trVDR("yes")));
168 Add(new cMenuEditBoolItem(tr(" FFmpeg debug logs"), &m_cLogFFmpeg, trVDR("no"), trVDR("yes")));
169 Add(new cMenuEditBoolItem(tr(" Packet tracking logs"), &m_cLogPacket, trVDR("no"), trVDR("yes")));
170 Add(new cMenuEditBoolItem(tr(" OSD debug logs"), &m_cLogOSD, trVDR("no"), trVDR("yes")));
171 Add(new cMenuEditBoolItem(tr(" Grabbing debug logs"), &m_cLogGrab, trVDR("no"), trVDR("yes")));
172 Add(new cMenuEditBoolItem(tr(" Stillpicture debug logs"), &m_cLogStill, trVDR("no"), trVDR("yes")));
173 Add(new cMenuEditBoolItem(tr(" Trickspeed debug logs"), &m_cLogTrick, trVDR("no"), trVDR("yes")));
174 Add(new cMenuEditBoolItem(tr(" Mediaplayer debug logs"), &m_cLogMedia, trVDR("no"), trVDR("yes")));
175 Add(new cMenuEditBoolItem(tr(" OpenGL OSD debug logs"), &m_cLogGL, trVDR("no"), trVDR("yes")));
176 Add(new cMenuEditBoolItem(tr(" OpenGL OSD time measurement"), &m_cLogGLTime, trVDR("no"), trVDR("yes")));
177 Add(new cMenuEditBoolItem(tr(" OpenGL OSD time measurement (extensive)"), &m_cLogGLTimeAll, trVDR("no"), trVDR("yes")));
178 }
179 }
180
181 //
182 // Statistics
183 //
184 Add(CollapsedItem(tr("Statistics"), m_cStatisticsMenu));
185 if (m_cStatisticsMenu) {
186 int duped;
187 int dropped;
188 int counter;
190 Add(new cOsdItem(cString::sprintf(tr(" Frames duped(%d) dropped(%d) total(%d)"), duped, dropped, counter), osUnknown, false));
191#ifdef USE_GLES
192 Add(new cOsdItem(cString::sprintf(tr(" OSD: Using %s rendering"), m_pConfig->ConfigDisableOglOsd ? "software" : "hardware"), osUnknown, false));
193#else
194 Add(new cOsdItem(cString::sprintf(tr(" OSD: Using software rendering")), osUnknown, false));
195#endif
196 Add(new cOsdItem(cString::sprintf(tr(" Video decoder: %s (%s)"), m_pConfig->CurrentDecoderName, m_pConfig->CurrentDecoderType), osUnknown, false));
197 }
198
199 //
200 // Expert settings
201 //
202 Add(CollapsedItem(tr("Expert settings"), m_cExpertMenu));
203 if (m_cExpertMenu) {
204 Add(SeparatorName(tr(" Audio settings")));
205 Add(new cMenuEditIntItem(tr(" Adjust a/v buffer size (ms)"), &m_cAdditionalBufferLengthMs, - (m_pDevice->GetMinBufferFillLevelThresholdMs() - 100), 1000));
206
211 Add(new cOsdItem(cString::sprintf(tr(" Current a/v buffer size: %dms"), m_pDevice->GetMinBufferFillLevelThresholdMs() + m_cAdditionalBufferLengthMs), osUnknown, false));
212 Add(new cOsdItem(cString::sprintf(tr(" Audio jitter: %dms, max: %dms"), shortTermAudioJitter, longTermAudioJitter), osUnknown, false));
213 Add(new cOsdItem(cString::sprintf(tr(" Video jitter: %dms, max: %dms"), shortTermVideoJitter, longTermVideoJitter), osUnknown, false));
214
215 Add(SeparatorName(tr(" Video settings")));
216 Add(new cMenuEditBoolItem(tr(" Disable deinterlacer"), &m_cDisableDeint, trVDR("no"), trVDR("yes")));
217 Add(new cMenuEditBoolItem(tr(" Enable SW decoder fallback"), &m_cDecoderFallbackToSw, trVDR("no"), trVDR("yes")));
219 Add(new cOsdItem(cString::sprintf(tr(" (minimum: %d)"), m_pConfig->GetDecoderNeedsMaxPackets() + 1), osUnknown, false));
220 Add(new cMenuEditIntItem(tr(" fallback after num packets"), &m_cDecoderFallbackToSwNumPkts, 22));
221 }
222 Add(new cMenuEditBoolItem(tr(" H.264: Wait for I-Frames"), &m_cDecoderNeedsIFrame, trVDR("no"), trVDR("yes")));
223 Add(new cMenuEditBoolItem(tr(" H.264: Decoder needs video size for init"), &m_cParseH264Dimensions, trVDR("no"), trVDR("yes")));
224 Add(new cMenuEditIntItem(tr(" H.264: Parse stream until num I-Frames"), &m_cParseH264StreamStart, 0, 20));
225 Add(new cMenuEditIntItem(tr(" H.264: Drop invalid P-Frames until num I-Frames"), &m_cDropInvalidH264PFrames, 0, 20));
226#ifdef USE_GLES
227 Add(SeparatorName(tr(" OSD settings")));
229 Add(new cMenuEditIntItem(tr(" GPU mem used for image caching (MB)"), &m_cMaxSizeGPUImageCache, 0, 4000));
230 }
231#endif
232 }
233
234 SetCurrent(Get(current)); // restore selected menu entry
235 Display(); // display build menu
236}
237
244{
259
260 eOSState state = cMenuSetupPage::ProcessKey(key);
261
262 if (key != kNone) {
263 // update menu only, if something on the structure has changed
264 // this is needed because VDR menus are evil slow
279
280 Create(); // update menu
281 }
282 }
283
284 return state;
285}
286
293 : m_pDevice(device),
294 m_pConfig(m_pDevice->Config()),
295 m_pAudioDevice(m_pDevice->Audio())
296{
297 //
298 // General
299 //
300 m_cGeneralMenu = 0;
302
303 //
304 // Video
305 //
306 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;
386#ifdef USE_GLES
388#endif
389
390 Create();
391}
392
397{
398 //
399 // General
400 //
402
403 //
404 // Video
405 //
408
409 //
410 // Audio
411 //
416 // FIXME: can handle more audio state changes here
417 // downmix changed reset audio, to get change direct
420 }
426 SetupStore("AudioPassthrough", m_pConfig->ConfigAudioPassthroughMask);
428 } else {
429 SetupStore("AudioPassthrough", -m_pConfig->ConfigAudioPassthroughMask);
431 }
443
444 //
445 // Audio equalizer
446 //
448 SetupStore("AudioEqBand01b", m_pConfig->ConfigAudioEqBand[0] = m_cAudioEqBand[0]);
449 SetupStore("AudioEqBand02b", m_pConfig->ConfigAudioEqBand[1] = m_cAudioEqBand[1]);
450 SetupStore("AudioEqBand03b", m_pConfig->ConfigAudioEqBand[2] = m_cAudioEqBand[2]);
451 SetupStore("AudioEqBand04b", m_pConfig->ConfigAudioEqBand[3] = m_cAudioEqBand[3]);
452 SetupStore("AudioEqBand05b", m_pConfig->ConfigAudioEqBand[4] = m_cAudioEqBand[4]);
453 SetupStore("AudioEqBand06b", m_pConfig->ConfigAudioEqBand[5] = m_cAudioEqBand[5]);
454 SetupStore("AudioEqBand07b", m_pConfig->ConfigAudioEqBand[6] = m_cAudioEqBand[6]);
455 SetupStore("AudioEqBand08b", m_pConfig->ConfigAudioEqBand[7] = m_cAudioEqBand[7]);
456 SetupStore("AudioEqBand09b", m_pConfig->ConfigAudioEqBand[8] = m_cAudioEqBand[8]);
457 SetupStore("AudioEqBand10b", m_pConfig->ConfigAudioEqBand[9] = m_cAudioEqBand[9]);
458 SetupStore("AudioEqBand11b", m_pConfig->ConfigAudioEqBand[10] = m_cAudioEqBand[10]);
459 SetupStore("AudioEqBand12b", m_pConfig->ConfigAudioEqBand[11] = m_cAudioEqBand[11]);
460 SetupStore("AudioEqBand13b", m_pConfig->ConfigAudioEqBand[12] = m_cAudioEqBand[12]);
461 SetupStore("AudioEqBand14b", m_pConfig->ConfigAudioEqBand[13] = m_cAudioEqBand[13]);
462 SetupStore("AudioEqBand15b", m_pConfig->ConfigAudioEqBand[14] = m_cAudioEqBand[14]);
463 SetupStore("AudioEqBand16b", m_pConfig->ConfigAudioEqBand[15] = m_cAudioEqBand[15]);
464 SetupStore("AudioEqBand17b", m_pConfig->ConfigAudioEqBand[16] = m_cAudioEqBand[16]);
465 SetupStore("AudioEqBand18b", m_pConfig->ConfigAudioEqBand[17] = m_cAudioEqBand[17]);
467
468 //
469 // Picture-in-picture
470 //
478 if (m_pDevice->UsePip())
480
481 //
482 // Logging
483 //
485 (m_cLogDebug_ ? L_DEBUG : 0) |
486 (m_cLogDRM ? L_DRM : 0) |
487 (m_cLogCodec ? L_CODEC : 0) |
488 (m_cLogAVSync ? L_AV_SYNC : 0) |
489 (m_cLogSound ? L_SOUND : 0) |
490 (m_cLogFFmpeg ? L_FFMPEG : 0) |
491 (m_cLogPacket ? L_PACKET : 0) |
492 (m_cLogOSD ? L_OSD : 0) |
493 (m_cLogGrab ? L_GRAB : 0) |
494 (m_cLogStill ? L_STILL : 0) |
495 (m_cLogTrick ? L_TRICK : 0) |
496 (m_cLogMedia ? L_MEDIA : 0) |
497 (m_cLogGL ? L_OPENGL : 0) |
505 } else {
506 SetupStore("LogLevel", -m_pConfig->ConfigLogLevels);
507 cSoftHdLogger::GetLogger()->SetLogLevel(0);
508 }
509
510 //
511 // Expert settings
512 //
516 LOGDEBUG("Disable deinterlacer!");
517 }
528#ifdef USE_GLES
530#endif
531}
532
Audio and Alsa Interface Header File.
cSoftHdDevice * m_pDevice
cSoftHdAudio * m_pAudioDevice
int m_cDecoderFallbackToSwNumPkts
cSoftHdConfig * m_pConfig
void SetAutoAES(bool appendAes)
Definition audio.h:78
void SetSoftvol(bool softVolume)
Definition audio.h:73
void SetDownmix(int downMix)
Definition audio.h:72
bool ConfigParseH264Dimensions
parse h264 stream for width and height for decoder init
Definition config.h:63
int ConfigVideoAudioDelayMs
config audio delay
Definition config.h:43
std::atomic< int > StatMaxLongTermAudioJitterMs
logged max overall audio jitter since stream start
Definition config.h:91
bool ConfigLogState
flag logging on/off
Definition config.h:59
bool ConfigAudioNormalize
config use normalize volume
Definition config.h:48
int ConfigAudioAutoAES
config automatic AES handling
Definition config.h:53
int ConfigAudioStereoDescent
config reduce stereo loudness
Definition config.h:52
int ConfigMaxSizeGPUImageCache
config max gpu image cache size
Definition config.h:37
std::atomic< int > StatMaxShortTermAudioJitterMs
logged max audio jitter of the last 1000 packets
Definition config.h:90
int ConfigParseH264StreamStart
log frames at stream start up to the given number of I-Frames
Definition config.h:66
int ConfigDecoderFallbackToSwNumPkts
maximum number of packets sent before fallback to sw decoder
Definition config.h:65
bool ConfigAudioCompression
config use volume compression
Definition config.h:50
bool ConfigAudioPassthroughState
flag audio-passthrough on/off
Definition config.h:45
bool ConfigAudioSoftvol
config use software volume
Definition config.h:47
bool ConfigDisableDeint
disable deinterlacer
Definition config.h:61
int ConfigVideoEnableHDR
enable HDR
Definition config.h:40
int ConfigDisableOglOsd
config disable ogl osd
Definition config.h:38
int ConfigPipAltTopPercent
0 = aligned to top, 100 = aligned to bottom
Definition config.h:78
const char * CurrentDecoderType
current decoder type: "hardware" or "software"
Definition config.h:88
int ConfigAudioEqBand[18]
config equalizer filter bands
Definition config.h:55
int ConfigPipLeftPercent
0 = aligned to left, 100 = aligned to right
Definition config.h:71
int ConfigAdditionalBufferLengthMs
config size ms of a/v buffer
Definition config.h:42
int ConfigAudioMaxCompression
config max volume compression
Definition config.h:51
int ConfigPipAltLeftPercent
0 = aligned to left, 100 = aligned to right
Definition config.h:77
int ConfigLogLevels
loglevel config
Definition config.h:60
int ConfigPipAltScalePercent
alternative scale factor of pip video
Definition config.h:76
std::atomic< int > StatMaxShortTermVideoJitterMs
logged max video jitter of the last 1000 packets
Definition config.h:92
int ConfigPipTopPercent
0 = aligned to top, 100 = aligned to bottom
Definition config.h:72
bool ConfigDecoderNeedsIFrame
start h264 decoder only when an I-Frame arrives
Definition config.h:62
const char * CurrentDecoderName
current decoder name
Definition config.h:87
bool ConfigDecoderFallbackToSw
fallback to software decoder if the hardware decoder fails
Definition config.h:64
int ConfigAudioEq
config equalizer filter
Definition config.h:54
int ConfigPipScalePercent
scale factor of pip video
Definition config.h:70
int ConfigPipUseAlt
Definition config.h:74
int ConfigAudioPassthroughMask
config audio pass-through mask
Definition config.h:44
std::atomic< int > StatMaxLongTermVideoJitterMs
logged max overall video jitter since stream start
Definition config.h:93
bool ConfigHideMainMenuEntry
config hide main menu entry
Definition config.h:58
bool ConfigAudioDownmix
config ffmpeg audio downmix
Definition config.h:46
int ConfigAudioMaxNormalize
config max normalize factor
Definition config.h:49
int ConfigDropInvalidH264PFrames
drop P-Frames with invalid references on stream start up to the given number of I-Frames
Definition config.h:67
Output Device Implementation.
bool UsePip(void)
int GetMinBufferFillLevelThresholdMs(void)
Audio Decoder Header File.
Plugin Configuration Header File.
void SetStereoDescent(int)
Set stereo loudness descent.
Definition audio.cpp:1045
void SetCompression(bool, int)
Set volume compression parameters.
Definition audio.cpp:1027
void SetEq(int[18], int)
Set equalizer bands.
Definition audio.cpp:319
void SetNormalize(bool, int)
Set normalize volume parameters.
Definition audio.cpp:1015
@ CODEC_EAC3
E-AC-3 bit mask.
Definition codec_audio.h:36
@ CODEC_AC3
AC-3 bit mask.
Definition codec_audio.h:35
@ CODEC_DTS
DTS bit mask.
Definition codec_audio.h:37
void PrintLogLevel(int)
Definition config.cpp:103
int GetDecoderNeedsMaxPackets(void)
Definition config.cpp:147
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)
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.
void SetPassthroughMask(int)
Set the passthrough mask (called from setup menu or conf)
void SetDisableDeint(void)
Disables deinterlacer (called from setup menu or conf)
static cOsdItem * SeparatorName(const char *label)
Create a seperator item.
void Create(void)
Build setup menu.
virtual eOSState ProcessKey(eKeys)
Process key for setup menu.
cMenuSetupSoft(cSoftHdDevice *)
Init the setup menu parameters and build the menu.
virtual void Store(void)
Store settings.
cOsdItem * CollapsedItem(const char *, int &, const char *=NULL)
Create a collapsed item.
static std::shared_ptr< cSoftHdLogger > GetLogger()
Get an instance to the global logger.
Definition logger.cpp:50
#define LOGDEBUG
log to LOG_DEBUG
Definition logger.h:40
@ L_PACKET
decoder packet/frame tracking logs
Definition logger.h:63
@ L_DRM
drm logs
Definition logger.h:55
@ L_OPENGL_TIME
opengl osd flush time measurement
Definition logger.h:61
@ L_STILL
stillpicture logs
Definition logger.h:57
@ L_FFMPEG
ffmpeg logs
Definition logger.h:65
@ L_AV_SYNC
audio/video sync logs
Definition logger.h:52
@ L_MEDIA
mediaplayer logs
Definition logger.h:59
@ L_OSD
osd logs
Definition logger.h:54
@ L_TRICK
trickspeed logs
Definition logger.h:58
@ L_OPENGL
opengl osd logs
Definition logger.h:60
@ L_DEBUG
common debug logs
Definition logger.h:51
@ L_OPENGL_TIME_ALL
opengl osd all commands time measurement
Definition logger.h:62
@ L_CODEC
codec logs
Definition logger.h:56
@ L_SOUND
sound logs
Definition logger.h:53
@ L_GRAB
grabbing logs
Definition logger.h:64
Logger Header File.
Output Device Header File.
static cOsdItem * SeparatorName(const char *label)
Create a seperator named item.
Plugin Setup Menu Header File.