vdr-plugin-softhddevice-drm-gles 1.4.0
softhdsetupmenu.cpp
Go to the documentation of this file.
1
25#include <vdr/plugin.h>
26
27#include "logger.h"
28#include "softhddevice.h"
29#include "softhdsetupmenu.h"
30
31/*****************************************************************************
32 * cMenuSetupSoft - Setup menu
33 ****************************************************************************/
34
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{
54 cOsdItem *item;
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_cGeneral));
76 if (m_cGeneral) {
77 Add(new cMenuEditBoolItem(tr("Hide main menu entry"), &m_cHideMainMenuEntry, trVDR("no"), trVDR("yes")));
78#ifdef USE_GLES
79 if (!m_pConfig->ConfigDisableOglOsd) {
80 Add(new cMenuEditIntItem(tr("GPU mem used for image caching (MB)"), &m_cMaxSizeGPUImageCache, 0, 4000));
81 }
82#endif
83
84 Add(new cMenuEditIntItem(tr("Additional buffer size (ms)"), &m_cAdditionalBufferLengthMs, 0, 1000));
85 }
86
87 //
88 // Statistics
89 //
90 Add(CollapsedItem(tr("Statistics"), m_cStatistics));
91 if (m_cStatistics) {
92 int duped;
93 int dropped;
94 int counter;
95 m_pDevice->GetStats(&duped, &dropped, &counter);
96 Add(new cOsdItem(cString::sprintf(tr(" Frames duped(%d) dropped(%d) total(%d)"), duped, dropped, counter), osUnknown, false));
97#ifdef USE_GLES
98 Add(new cOsdItem(cString::sprintf(tr(" OSD: Using %s rendering"), m_pConfig->ConfigDisableOglOsd ? "software" : "hardware"), osUnknown, false));
99#else
100 Add(new cOsdItem(cString::sprintf(tr(" OSD: Using software rendering")), osUnknown, false));
101#endif
102 }
103
104#ifdef USE_GLES
105#ifdef WRITE_PNG
106 //
107 // debug
108 //
109 if (!m_pConfig->ConfigDisableOglOsd) {
110 Add(CollapsedItem(tr("Debug"), m_cDebugMenu));
111 if (m_cDebugMenu) {
112 Add(new cMenuEditBoolItem(tr("Write OSD to file"), &m_cWritePngs, trVDR("no"), trVDR("yes")));
113 }
114 }
115#endif
116#endif
117
118 //
119 // Logging
120 //
121 Add(CollapsedItem(tr("Logging"), m_cLogging));
122 if (m_cLogging) {
123 Add(new cMenuEditBoolItem(tr("Enable logging"), &m_cLogDefault, trVDR("off"), trVDR("on")));
124 if (m_cLogDefault) {
125 Add(new cMenuEditBoolItem(tr("\040\040Standard debug logs"), &m_cLogDebug_, trVDR("no"), trVDR("yes")));
126 Add(new cMenuEditBoolItem(tr("\040\040AV Sync debug logs"), &m_cLogAVSync, trVDR("no"), trVDR("yes")));
127 Add(new cMenuEditBoolItem(tr("\040\040Sound debug logs"), &m_cLogSound, trVDR("no"), trVDR("yes")));
128 Add(new cMenuEditBoolItem(tr("\040\040OSD debug logs"), &m_cLogOSD, trVDR("no"), trVDR("yes")));
129 Add(new cMenuEditBoolItem(tr("\040\040DRM debug logs"), &m_cLogDRM, trVDR("no"), trVDR("yes")));
130 Add(new cMenuEditBoolItem(tr("\040\040Codec debug logs"), &m_cLogCodec, trVDR("no"), trVDR("yes")));
131 Add(new cMenuEditBoolItem(tr("\040\040Stillpicture debug logs"), &m_cLogStill, trVDR("no"), trVDR("yes")));
132 Add(new cMenuEditBoolItem(tr("\040\040Trickspeed debug logs"), &m_cLogTrick, trVDR("no"), trVDR("yes")));
133 Add(new cMenuEditBoolItem(tr("\040\040Mediaplayer debug logs"), &m_cLogMedia, trVDR("no"), trVDR("yes")));
134 Add(new cMenuEditBoolItem(tr("\040\040OpenGL OSD debug logs"), &m_cLogGL, trVDR("no"), trVDR("yes")));
135 Add(new cMenuEditBoolItem(tr("\040\040OpenGL OSD time measurement"), &m_cLogGLTime, trVDR("no"), trVDR("yes")));
136 Add(new cMenuEditBoolItem(tr("\040\040OpenGL OSD time measurement (extensive)"), &m_cLogGLTimeAll, trVDR("no"), trVDR("yes")));
137 Add(new cMenuEditBoolItem(tr("\040\040Packet tracking logs"), &m_cLogPacket, trVDR("no"), trVDR("yes")));
138 Add(new cMenuEditBoolItem(tr("\040\040Grabbing debug logs"), &m_cLogGrab, trVDR("no"), trVDR("yes")));
139 }
140 }
141
142 //
143 // Video
144 //
145 Add(CollapsedItem(tr("Video"), m_cVideoMenu));
146 if (m_cVideoMenu) {
147 Add(new cMenuEditBoolItem(tr("Disable deinterlacer"), &m_cDisableDeint, trVDR("no"), trVDR("yes")));
148 Add(SeparatorName(tr("Picture-in-picture")));
149 Add(new cMenuEditIntItem(tr(" video scaling factor (%)"), &m_cPipScalePercent, 10, 100));
150 Add(new cMenuEditIntItem(tr(" video left (%)"), &m_cPipLeftPercent, 0, 100));
151 Add(new cMenuEditIntItem(tr(" video top (%)"), &m_cPipTopPercent, 0, 100));
152 Add(new cMenuEditBoolItem(tr(" use alternative position as default"), &m_cPipUseAlt, trVDR("no"), trVDR("yes")));
153 Add(new cMenuEditIntItem(tr(" alternative video scaling factor (%)"), &m_cPipAltScalePercent, 10, 100));
154 Add(new cMenuEditIntItem(tr(" alternative video left (%)"), &m_cPipAltLeftPercent, 0, 100));
155 Add(new cMenuEditIntItem(tr(" alternative video top (%)"), &m_cPipAltTopPercent, 0, 100));
156 }
157
158 //
159 // Audio
160 //
161 Add(CollapsedItem(tr("Audio"), m_cAudio));
162 if (m_cAudio) {
163 Add(new cMenuEditIntItem(tr("Audio/Video delay (ms)"), &m_cAudioDelay, -1000, 1000));
164 Add(new cMenuEditBoolItem(tr("Volume control"), &m_cAudioSoftvol, tr("Hardware"), tr("Software")));
165 Add(new cMenuEditBoolItem(tr("Enable normalize volume"), &m_cAudioNormalize, trVDR("no"), trVDR("yes")));
167 Add(new cMenuEditIntItem(tr(" Max normalize factor (/1000)"), &m_cAudioMaxNormalize, 0, 10000));
168 Add(new cMenuEditBoolItem(tr("Enable volume compression"), &m_cAudioCompression, trVDR("no"), trVDR("yes")));
170 Add(new cMenuEditIntItem(tr(" Max compression factor (/1000)"), &m_cAudioMaxCompression, 0, 10000));
171 Add(new cMenuEditIntItem(tr("Reduce stereo volume (/1000)"), &m_cAudioStereoDescent, 0, 1000));
172 Add(new cMenuEditBoolItem(tr("Enable Stereo downmix"), &m_cAudioDownmix, trVDR("no"), trVDR("yes")));
173 Add(new cMenuEditBoolItem(tr("Enable Pass-through"), &m_cAudioPassthroughDefault, trVDR("off"), trVDR("on")));
175 Add(new cMenuEditBoolItem(tr("\040\040PCM pass-through"), &m_cAudioPassthroughPCM, trVDR("no"), trVDR("yes")));
176 Add(new cMenuEditBoolItem(tr("\040\040AC-3 pass-through"), &m_cAudioPassthroughAC3, trVDR("no"), trVDR("yes")));
177 Add(new cMenuEditBoolItem(tr("\040\040E-AC-3 pass-through"), &m_cAudioPassthroughEAC3, trVDR("no"), trVDR("yes")));
178 Add(new cMenuEditBoolItem(tr("\040\040DTS pass-through"), &m_cAudioPassthroughDTS, trVDR("no"), trVDR("yes")));
179 Add(new cMenuEditBoolItem(tr("Enable automatic AES"), &m_cAudioAutoAES, trVDR("no"), trVDR("yes")));
180 }
181 }
182
183 //
184 // Audio filter
185 //
186 Add(CollapsedItem(tr("Audio Filter"), m_cAudioFilter));
187 if (m_cAudioFilter) {
188 Add(new cMenuEditBoolItem(tr(" Enable Audio Equalizer"), &m_cAudioEq, trVDR("no"), trVDR("yes")));
189 if (m_cAudioEq) {
190 Add(new cMenuEditIntItem(tr(" 60 Hz band gain"), &m_cAudioEqBand[0], -15, 1));
191 Add(new cMenuEditIntItem(tr(" 72 Hz band gain"), &m_cAudioEqBand[1], -15, 1));
192 Add(new cMenuEditIntItem(tr(" 107 Hz band gain"), &m_cAudioEqBand[2], -15, 1));
193 Add(new cMenuEditIntItem(tr(" 150 Hz band gain"), &m_cAudioEqBand[3], -15, 1));
194 Add(new cMenuEditIntItem(tr(" 220 Hz band gain"), &m_cAudioEqBand[4], -15, 1));
195 Add(new cMenuEditIntItem(tr(" 310 Hz band gain"), &m_cAudioEqBand[5], -15, 1));
196 Add(new cMenuEditIntItem(tr(" 430 Hz band gain"), &m_cAudioEqBand[6], -15, 1));
197 Add(new cMenuEditIntItem(tr(" 620 Hz band gain"), &m_cAudioEqBand[7], -15, 1));
198 Add(new cMenuEditIntItem(tr(" 860 Hz band gain"), &m_cAudioEqBand[8], -15, 1));
199 Add(new cMenuEditIntItem(tr(" 1200 Hz band gain"), &m_cAudioEqBand[9], -15, 1));
200 Add(new cMenuEditIntItem(tr(" 1700 Hz band gain"), &m_cAudioEqBand[10], -15, 1));
201 Add(new cMenuEditIntItem(tr(" 2500 Hz band gain"), &m_cAudioEqBand[11], -15, 1));
202 Add(new cMenuEditIntItem(tr(" 3500 Hz band gain"), &m_cAudioEqBand[12], -15, 1));
203 Add(new cMenuEditIntItem(tr(" 4800 Hz band gain"), &m_cAudioEqBand[13], -15, 1));
204 Add(new cMenuEditIntItem(tr(" 7000 Hz band gain"), &m_cAudioEqBand[14], -15, 1));
205 Add(new cMenuEditIntItem(tr(" 9500 Hz band gain"), &m_cAudioEqBand[15], -15, 1));
206 Add(new cMenuEditIntItem(tr(" 13500 Hz band gain"), &m_cAudioEqBand[16], -15, 1));
207 Add(new cMenuEditIntItem(tr(" 17200 Hz band gain"), &m_cAudioEqBand[17], -15, 1));
208 }
209 }
210
211 SetCurrent(Get(current)); // restore selected menu entry
212 Display(); // display build menu
213}
214
220eOSState cMenuSetupSoft::ProcessKey(eKeys key)
221{
222 int old_cGeneral = m_cGeneral;
223#ifdef USE_GLES
224#ifdef WRITE_PNG
225 int old_cDebugMenu = m_cDebugMenu;
226#endif
227#endif
228 int old_cStatistics = m_cStatistics;
229 int old_cLogging = m_cLogging;
230 int old_cLogDefault = m_cLogDefault;
231 int old_cVideoMenu = m_cVideoMenu;
232 int old_cAudio = m_cAudio;
233 int old_cAudioNormalize = m_cAudioNormalize;
234 int old_cAudioCompression = m_cAudioCompression;
235 int old_cAudioPassthroughDefault = m_cAudioPassthroughDefault;
236 int old_cAudioFilter = m_cAudioFilter;
237 int old_cAudioEq = m_cAudioEq;
238
239 eOSState state = cMenuSetupPage::ProcessKey(key);
240
241 if (key != kNone) {
242 // update menu only, if something on the structure has changed
243 // this is needed because VDR menus are evil slow
244 if (old_cGeneral != m_cGeneral ||
245#ifdef USE_GLES
246#ifdef WRITE_PNG
247 old_cDebugMenu != m_cDebugMenu ||
248#endif
249#endif
250 old_cStatistics != m_cStatistics ||
251 old_cLogging != m_cLogging ||
252 old_cLogDefault != m_cLogDefault ||
253 old_cVideoMenu != m_cVideoMenu ||
254 old_cAudio != m_cAudio ||
255 old_cAudioFilter != m_cAudioFilter ||
256 old_cAudioEq != m_cAudioEq ||
257 old_cAudioNormalize != m_cAudioNormalize ||
258 old_cAudioCompression != m_cAudioCompression ||
259 old_cAudioPassthroughDefault != m_cAudioPassthroughDefault) {
260
261 Create(); // update menu
262 }
263 }
264
265 return state;
266}
267
274{
275 m_pDevice = device;
278
279 //
280 // General
281 //
282 m_cGeneral = 0;
284#ifdef USE_GLES
285 m_cMaxSizeGPUImageCache = m_pConfig->ConfigMaxSizeGPUImageCache;
286#endif
288
289 //
290 // Debug
291 //
292#ifdef USE_GLES
293#ifdef WRITE_PNG
294 m_cDebugMenu = 0;
295 m_cWritePngs = m_pConfig->ConfigWritePngs;
296#endif
297#endif
298
299 //
300 // Statistics
301 //
302 m_cStatistics = 0;
303
304 //
305 // Logging
306 //
307 m_cLogging = 0;
323
324 //
325 // Video
326 //
327 m_cVideoMenu = 0;
336
337 //
338 // Audio
339 //
340 m_cAudio = 0;
355
356 //
357 // Audio filter
358 //
360 m_cAudioFilter = 0;
361 for (int i = 0; i < 18; i++) {
363 }
364
365 Create();
366}
367
372{
373 //
374 // General
375 //
376 SetupStore("HideMainMenuEntry", m_pConfig->ConfigHideMainMenuEntry = m_cHideMainMenuEntry);
377#ifdef USE_GLES
378 SetupStore("MaxSizeGPUImageCache", m_pConfig->ConfigMaxSizeGPUImageCache = m_cMaxSizeGPUImageCache);
379#endif
380 SetupStore("AdditionalBufferLengthMs", m_pConfig->ConfigAdditionalBufferLengthMs = m_cAdditionalBufferLengthMs);
381
382 //
383 // Debug
384 //
385#ifdef USE_GLES
386#ifdef WRITE_PNG
387 m_pConfig->ConfigWritePngs = m_cWritePngs;
388 SetupStore("WritePngs", m_pConfig->ConfigWritePngs);
389#endif
390#endif
391
392 //
393 // Logging
394 //
396 (m_cLogDebug_ ? L_DEBUG : 0) |
397 (m_cLogAVSync ? L_AV_SYNC : 0) |
398 (m_cLogSound ? L_SOUND : 0) |
399 (m_cLogOSD ? L_OSD : 0) |
400 (m_cLogDRM ? L_DRM : 0) |
401 (m_cLogCodec ? L_CODEC : 0) |
402 (m_cLogStill ? L_STILL : 0) |
403 (m_cLogTrick ? L_TRICK : 0) |
404 (m_cLogMedia ? L_MEDIA : 0) |
405 (m_cLogGL ? L_OPENGL : 0) |
408 (m_cLogPacket ? L_PACKET : 0) |
409 (m_cLogGrab ? L_GRAB : 0);
411
413 SetupStore("LogLevel", m_pConfig->ConfigLogLevels);
416 } else {
417 SetupStore("LogLevel", -m_pConfig->ConfigLogLevels);
418 cSoftHdLogger::GetLogger()->SetLogLevel(0);
419 }
420
421 //
422 // Video
423 //
424 SetupStore("DisableDeint", m_pConfig->ConfigDisableDeint = m_cDisableDeint);
426 LOGDEBUG("Disable deinterlacer!");
427 }
429
430 // pip
431 SetupStore("PipScalePercent", m_pConfig->ConfigPipScalePercent = m_cPipScalePercent);
432 SetupStore("PipLeftPercent", m_pConfig->ConfigPipLeftPercent = m_cPipLeftPercent);
433 SetupStore("PipTopPercent", m_pConfig->ConfigPipTopPercent = m_cPipTopPercent);
434 SetupStore("PipUseAlt", m_pConfig->ConfigPipUseAlt = m_cPipUseAlt);
435 SetupStore("PipAltScalePercent", m_pConfig->ConfigPipAltScalePercent = m_cPipAltScalePercent);
436 SetupStore("PipAltLeftPercent", m_pConfig->ConfigPipAltLeftPercent = m_cPipAltLeftPercent);
437 SetupStore("PipAltTopPercent", m_pConfig->ConfigPipAltTopPercent = m_cPipAltTopPercent);
439
440 //
441 // Audio
442 //
443 SetupStore("AudioDelay", m_pConfig->ConfigVideoAudioDelayMs = m_cAudioDelay);
444 SetupStore("AudioSoftvol", m_pConfig->ConfigAudioSoftvol = m_cAudioSoftvol);
446 SetupStore("AudioNormalize", m_pConfig->ConfigAudioNormalize = m_cAudioNormalize);
447 SetupStore("AudioMaxNormalize", m_pConfig->ConfigAudioMaxNormalize = m_cAudioMaxNormalize);
449 SetupStore("AudioCompression", m_pConfig->ConfigAudioCompression = m_cAudioCompression);
450 SetupStore("AudioMaxCompression", m_pConfig->ConfigAudioMaxCompression = m_cAudioMaxCompression);
452 SetupStore("AudioStereoDescent", m_pConfig->ConfigAudioStereoDescent = m_cAudioStereoDescent);
454 SetupStore("AudioDownmix", m_pConfig->ConfigAudioDownmix = m_cAudioDownmix);
456 // FIXME: can handle more audio state changes here
457 // downmix changed reset audio, to get change direct
460 }
467 SetupStore("AudioPassthrough", m_pConfig->ConfigAudioPassthroughMask);
469 } else {
470 SetupStore("AudioPassthrough", -m_pConfig->ConfigAudioPassthroughMask);
472 }
473 SetupStore("AudioAutoAES", m_pConfig->ConfigAudioAutoAES = m_cAudioAutoAES);
475
476 //
477 // Audio filter
478 //
479 SetupStore("AudioEq", m_pConfig->ConfigAudioEq = m_cAudioEq);
480 SetupStore("AudioEqBand01b", m_pConfig->ConfigAudioEqBand[0] = m_cAudioEqBand[0]);
481 SetupStore("AudioEqBand02b", m_pConfig->ConfigAudioEqBand[1] = m_cAudioEqBand[1]);
482 SetupStore("AudioEqBand03b", m_pConfig->ConfigAudioEqBand[2] = m_cAudioEqBand[2]);
483 SetupStore("AudioEqBand04b", m_pConfig->ConfigAudioEqBand[3] = m_cAudioEqBand[3]);
484 SetupStore("AudioEqBand05b", m_pConfig->ConfigAudioEqBand[4] = m_cAudioEqBand[4]);
485 SetupStore("AudioEqBand06b", m_pConfig->ConfigAudioEqBand[5] = m_cAudioEqBand[5]);
486 SetupStore("AudioEqBand07b", m_pConfig->ConfigAudioEqBand[6] = m_cAudioEqBand[6]);
487 SetupStore("AudioEqBand08b", m_pConfig->ConfigAudioEqBand[7] = m_cAudioEqBand[7]);
488 SetupStore("AudioEqBand09b", m_pConfig->ConfigAudioEqBand[8] = m_cAudioEqBand[8]);
489 SetupStore("AudioEqBand10b", m_pConfig->ConfigAudioEqBand[9] = m_cAudioEqBand[9]);
490 SetupStore("AudioEqBand11b", m_pConfig->ConfigAudioEqBand[10] = m_cAudioEqBand[10]);
491 SetupStore("AudioEqBand12b", m_pConfig->ConfigAudioEqBand[11] = m_cAudioEqBand[11]);
492 SetupStore("AudioEqBand13b", m_pConfig->ConfigAudioEqBand[12] = m_cAudioEqBand[12]);
493 SetupStore("AudioEqBand14b", m_pConfig->ConfigAudioEqBand[13] = m_cAudioEqBand[13]);
494 SetupStore("AudioEqBand15b", m_pConfig->ConfigAudioEqBand[14] = m_cAudioEqBand[14]);
495 SetupStore("AudioEqBand16b", m_pConfig->ConfigAudioEqBand[15] = m_cAudioEqBand[15]);
496 SetupStore("AudioEqBand17b", m_pConfig->ConfigAudioEqBand[16] = m_cAudioEqBand[16]);
497 SetupStore("AudioEqBand18b", m_pConfig->ConfigAudioEqBand[17] = m_cAudioEqBand[17]);
499}
void Create(void)
Create setup menu.
cSoftHdDevice * m_pDevice
virtual eOSState ProcessKey(eKeys)
Process key for setup menu.
cSoftHdAudio * m_pAudioDevice
int m_cAudioEqBand[18]
cMenuSetupSoft(cSoftHdDevice *)
cMenuSetupSoft constructor
int m_cAudioPassthroughDefault
virtual void Store(void)
Store setup.
cSoftHdConfig * m_pConfig
cOsdItem * CollapsedItem(const char *, int &, const char *=NULL)
Create a collapsed item.
int m_cAdditionalBufferLengthMs
void SetStereoDescent(int)
Set stereo loudness descent.
Definition: audio.cpp:1005
void SetAutoAES(bool appendAes)
Definition: audio.h:77
void SetCompression(bool, int)
Set volume compression parameters.
Definition: audio.cpp:987
void SetSoftvol(bool softVolume)
Definition: audio.h:72
void SetEq(int[18], int)
Set equalizer bands.
Definition: audio.cpp:348
void SetDownmix(int downMix)
Definition: audio.h:71
void SetNormalize(bool, int)
Set normalize volume parameters.
Definition: audio.cpp:975
int ConfigVideoAudioDelayMs
config audio delay
Definition: config.h:43
void PrintLogLevel(int)
Definition: config.cpp:111
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
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 ConfigPipAltTopPercent
0 = aligned to top, 100 = aligned to bottom
Definition: config.h:72
int ConfigAudioEqBand[18]
config equalizer filter bands
Definition: config.h:55
int ConfigPipLeftPercent
0 = aligned to left, 100 = aligned to right
Definition: config.h:65
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:71
int ConfigLogLevels
loglevel config
Definition: config.h:60
int ConfigPipAltScalePercent
alternative scale factor of pip video
Definition: config.h:70
int ConfigPipTopPercent
0 = aligned to top, 100 = aligned to bottom
Definition: config.h:66
int ConfigAudioEq
config equalizer filter
Definition: config.h:54
int ConfigPipScalePercent
scale factor of pip video
Definition: config.h:64
int ConfigPipUseAlt
Definition: config.h:68
int ConfigAudioPassthroughMask
config audio pass-through mask
Definition: config.h:44
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
void PipSetSize(void)
Set size and position for the pip window.
void GetStats(int *, int *, int *)
Get statistics from the renderer.
void ResetChannelId(void)
Reset the channel ID (restarts audio)
void SetPassthrough(int)
Set the passthrough mask (called from setup menu or conf)
cSoftHdConfig * Config(void)
Definition: softhddevice.h:174
void SetDisableDeint(void)
Disables deinterlacer (called from setup menu or conf)
cSoftHdAudio * Audio(void)
Definition: softhddevice.h:177
static std::shared_ptr< cSoftHdLogger > GetLogger()
Get an instance to the global logger.
Definition: logger.cpp:43
#define CODEC_PCM
bits used for the passthrough mask
Definition: codec_audio.h:31
#define CODEC_EAC3
E-AC-3 bit mask.
Definition: codec_audio.h:34
#define CODEC_AC3
AC-3 bit mask.
Definition: codec_audio.h:33
#define CODEC_DTS
DTS bit mask.
Definition: codec_audio.h:35
Logger class header file.
#define LOGDEBUG
Definition: logger.h:49
#define L_OPENGL_TIME_ALL
Definition: logger.h:69
#define L_DEBUG
Logger flags.
Definition: logger.h:58
#define L_SOUND
Definition: logger.h:60
#define L_DRM
Definition: logger.h:62
#define L_OPENGL_TIME
Definition: logger.h:68
#define L_GRAB
Definition: logger.h:71
#define L_AV_SYNC
Definition: logger.h:59
#define L_STILL
Definition: logger.h:64
#define L_CODEC
Definition: logger.h:63
#define L_PACKET
Definition: logger.h:70
#define L_OPENGL
Definition: logger.h:67
#define L_TRICK
Definition: logger.h:65
#define L_OSD
Definition: logger.h:61
#define L_MEDIA
Definition: logger.h:66
Device class header file.
static cOsdItem * SeparatorName(const char *label)
Create a seperator named item.
Setup menu class header file.