vdr 2.7.3
setup.c
Go to the documentation of this file.
1/*
2 * setup.c: Setup for the DVB HD Full Featured On Screen Display
3 *
4 * See the README file for copyright information and how to reach the author.
5 */
6
7#include "setup.h"
8#include "hdffcmd.h"
9
10const int kResolution1080i = 0;
11const int kResolution720p = 1;
12const int kResolution576p = 2;
13const int kResolution576i = 3;
14
15
17
39
40bool cHdffSetup::SetupParse(const char *Name, const char *Value)
41{
42 if (strcmp(Name, "Resolution") == 0) Resolution = atoi(Value);
43 else if (strcmp(Name, "VideoModeAdaption") == 0) VideoModeAdaption = atoi(Value);
44 else if (strcmp(Name, "TvFormat") == 0) TvFormat = atoi(Value);
45 else if (strcmp(Name, "VideoConversion") == 0) VideoConversion = atoi(Value);
46 else if (strcmp(Name, "AnalogueVideo") == 0) AnalogueVideo = atoi(Value);
47 else if (strcmp(Name, "AudioDelay") == 0) AudioDelay = atoi(Value);
48 else if (strcmp(Name, "AudioDownmix") == 0) AudioDownmix = atoi(Value);
49 else if (strcmp(Name, "AvSyncShift") == 0) AvSyncShift = atoi(Value);
50 else if (strcmp(Name, "OsdSize") == 0) OsdSize = atoi(Value);
51 else if (strcmp(Name, "CecEnabled") == 0) CecEnabled = atoi(Value);
52 else if (strcmp(Name, "CecTvOn") == 0) CecTvOn = atoi(Value);
53 else if (strcmp(Name, "CecTvOff") == 0) CecTvOff = atoi(Value);
54 else if (strcmp(Name, "RemoteProtocol") == 0) RemoteProtocol = atoi(Value);
55 else if (strcmp(Name, "RemoteAddress") == 0) RemoteAddress = atoi(Value);
56 else if (strcmp(Name, "HighLevelOsd") == 0) HighLevelOsd = atoi(Value);
57 else if (strcmp(Name, "TrueColorOsd") == 0) TrueColorOsd = atoi(Value);
58 else if (strcmp(Name, "TrueColorFormat") == 0) TrueColorFormat = atoi(Value);
59 else if (strcmp(Name, "HideMainMenu") == 0) HideMainMenu = atoi(Value);
60 else return false;
61 return true;
62}
63
64void cHdffSetup::GetOsdSize(int &Width, int &Height, double &PixelAspect)
65{
66 if (OsdSize == 0) {
68 Width = 1920;
69 Height = 1080;
70 }
71 else if (Resolution == kResolution720p) {
72 Width = 1280;
73 Height = 720;
74 }
75 else {
76 Width = 720;
77 Height = 576;
78 }
80 PixelAspect = 16.0 / 9.0;
81 else
82 PixelAspect = 4.0 / 3.0;
83 }
84 else if (OsdSize == 1) {
85 Width = 1920;
86 Height = 1080;
87 PixelAspect = 16.0 / 9.0;
88 }
89 else if (OsdSize == 2) {
90 Width = 1280;
91 Height = 720;
92 PixelAspect = 16.0 / 9.0;
93 }
94 else if (OsdSize == 3) {
95 Width = 1024;
96 Height = 576;
97 PixelAspect = 16.0 / 9.0;
98 }
99 else {
100 Width = 720;
101 Height = 576;
102 PixelAspect = 4.0 / 3.0;
103 }
104 PixelAspect /= double(Width) / Height;
105}
106
108{
109 switch (Resolution)
110 {
111 case kResolution1080i:
112 default:
114 case kResolution720p:
116 case kResolution576p:
118 case kResolution576i:
120 }
121}
122
124{
125 int nextVideoConversion = HDFF_VIDEO_CONVERSION_AUTOMATIC;
126
128 {
129 switch (VideoConversion)
130 {
132 nextVideoConversion = HDFF_VIDEO_CONVERSION_CENTRE_CUT_OUT;
133 break;
135 nextVideoConversion = HDFF_VIDEO_CONVERSION_ALWAYS_16_BY_9;
136 break;
138 nextVideoConversion = HDFF_VIDEO_CONVERSION_ZOOM_16_BY_9;
139 break;
141 nextVideoConversion = HDFF_VIDEO_CONVERSION_PILLARBOX;
142 break;
143 }
144 }
145 else
146 {
147 switch (VideoConversion)
148 {
150 nextVideoConversion = HDFF_VIDEO_CONVERSION_LETTERBOX_14_BY_9;
151 break;
153 nextVideoConversion = HDFF_VIDEO_CONVERSION_CENTRE_CUT_OUT;
154 break;
156 nextVideoConversion = HDFF_VIDEO_CONVERSION_LETTERBOX_16_BY_9;
157 break;
158 }
159 }
160 VideoConversion = nextVideoConversion;
161}
162
164{
165 switch (VideoConversion)
166 {
168 default:
169 return tr("Automatic");
171 return tr("Letterbox 16/9");
173 return tr("Letterbox 14/9");
175 return tr("Pillarbox");
177 return tr("CentreCutOut");
179 return tr("Always 16/9");
181 return tr("Zoom 16/9");
182 }
183}
184
186{
187 HdffVideoFormat_t videoFormat;
188
189 videoFormat.AutomaticEnabled = true;
190 videoFormat.AfdEnabled = false;
191 videoFormat.TvFormat = (HdffTvFormat_t) TvFormat;
193 HdffCmdIf->CmdAvSetVideoFormat(0, &videoFormat);
194}
195
197{
198 const int kResolutions = 4;
199 const int kVideoModeAdaptions = 4;
200 const int kTvFormats = 2;
201 const int kAnalogueVideos = 4;
202 const int kAudioDownmixes = 5;
203 const int kOsdSizes = 5;
204 const int kRemoteProtocols = 3;
205 const int kTrueColorFormats = 3;
206
207 static const char * ResolutionItems[kResolutions] =
208 {
209 "1080i",
210 "720p",
211 "576p",
212 "576i",
213 };
214
215 static const char * VideoModeAdaptionItems[kVideoModeAdaptions] =
216 {
217 tr("Off"),
218 tr("Frame rate"),
219 tr("HD Only"),
220 tr("Always")
221 };
222
223 static const char * TvFormatItems[kTvFormats] =
224 {
225 "4/3",
226 "16/9",
227 };
228
229 static const char * AnalogueVideoItems[kAnalogueVideos] =
230 {
231 tr("Disabled"),
232 "RGB",
233 "CVBS + YUV",
234 "YC (S-Video)",
235 };
236
237 static const char * AudioDownmixItems[kAudioDownmixes] =
238 {
239 tr("Disabled"),
240 tr("Analogue only"),
241 tr("Always"),
242 tr("Automatic"),
243 tr("HDMI only"),
244 };
245
246 static const char * OsdSizeItems[kOsdSizes] =
247 {
248 tr("Follow resolution"),
249 "1920x1080",
250 "1280x720",
251 "1024x576",
252 "720x576",
253 };
254
255 static const char * RemoteProtocolItems[] =
256 {
257 tr("none"),
258 "RC5",
259 "RC6",
260 };
261
262 static const char * TrueColorFormatItems[kTrueColorFormats] =
263 {
264 "ARGB8888",
265 "ARGB8565",
266 "ARGB4444",
267 };
268
269 mHdffCmdIf = pHdffCmdIf;
271
272 Add(new cMenuEditStraItem(tr("Resolution"), &mNewHdffSetup.Resolution, kResolutions, ResolutionItems));
273 Add(new cMenuEditStraItem(tr("Video Mode Adaption"), &mNewHdffSetup.VideoModeAdaption, kVideoModeAdaptions, VideoModeAdaptionItems));
274 mTvFormatItem = new cMenuEditStraItem(tr("TV format"), &mNewHdffSetup.TvFormat, kTvFormats, TvFormatItems);
276 Add(new cMenuEditStraItem(tr("Analogue Video"), &mNewHdffSetup.AnalogueVideo, kAnalogueVideos, AnalogueVideoItems));
277 Add(new cMenuEditIntItem(tr("Audio Delay (ms)"), &mNewHdffSetup.AudioDelay, 0, 500));
278 Add(new cMenuEditStraItem(tr("Audio Downmix"), &mNewHdffSetup.AudioDownmix, kAudioDownmixes, AudioDownmixItems));
279 Add(new cMenuEditIntItem(tr("A/V Sync Shift (ms)"), &mNewHdffSetup.AvSyncShift, -500, 500));
280 Add(new cMenuEditStraItem(tr("OSD Size"), &mNewHdffSetup.OsdSize, kOsdSizes, OsdSizeItems));
281 Add(new cMenuEditBoolItem(tr("HDMI CEC"), &mNewHdffSetup.CecEnabled));
282 Add(new cMenuEditBoolItem(tr("CEC: Switch TV on"), &mNewHdffSetup.CecTvOn));
283 Add(new cMenuEditBoolItem(tr("CEC: Switch TV off"), &mNewHdffSetup.CecTvOff));
284 Add(new cMenuEditStraItem(tr("Remote Control Protocol"), &mNewHdffSetup.RemoteProtocol, kRemoteProtocols, RemoteProtocolItems));
285 Add(new cMenuEditIntItem(tr("Remote Control Address"), &mNewHdffSetup.RemoteAddress, -1, 31));
286 Add(new cMenuEditBoolItem(tr("High Level OSD"), &mNewHdffSetup.HighLevelOsd));
287 Add(new cMenuEditBoolItem(tr("Allow True Color OSD"), &mNewHdffSetup.TrueColorOsd));
288 Add(new cMenuEditStraItem(tr("True Color format"), &mNewHdffSetup.TrueColorFormat, kTrueColorFormats, TrueColorFormatItems));
289 Add(new cMenuEditBoolItem(tr("Hide mainmenu entry"), &mNewHdffSetup.HideMainMenu));
290
293 {
295 {
298 break;
301 break;
304 break;
307 break;
308 }
309 }
310 else
311 {
313 {
316 break;
319 break;
322 break;
323 }
324 }
326}
327
331
333{
334 const int kVideoConversions4by3 = 3;
335 const int kVideoConversions16by9 = 4;
336
337 static const char * VideoConversionItems4by3[kVideoConversions4by3] =
338 {
339 tr("Letterbox 16/9"),
340 tr("Letterbox 14/9"),
341 tr("CentreCutOut")
342 };
343
344 static const char * VideoConversionItems16by9[kVideoConversions16by9] =
345 {
346 tr("Pillarbox"),
347 tr("CentreCutOut"),
348 tr("Always 16/9"),
349 tr("Zoom 16/9")
350 };
351
352 cOsdItem * item;
353
356 {
357 item = new cMenuEditStraItem(tr("Video Conversion"), &mVideoConversion,
358 kVideoConversions16by9, VideoConversionItems16by9);
359 }
360 else
361 {
362 item = new cMenuEditStraItem(tr("Video Conversion"), &mVideoConversion,
363 kVideoConversions4by3, VideoConversionItems4by3);
364 }
365 Add(item, false, mTvFormatItem);
366}
367
369{
371 {
372 switch (mVideoConversion)
373 {
374 case 0:
376 break;
377 case 1:
379 break;
380 case 2:
382 break;
383 case 3:
385 break;
386 }
387 }
388 else
389 {
390 switch (mVideoConversion)
391 {
392 case 0:
394 break;
395 case 1:
397 break;
398 case 2:
400 break;
401 }
402 }
403 SetupStore("Resolution", mNewHdffSetup.Resolution);
404 SetupStore("VideoModeAdaption", mNewHdffSetup.VideoModeAdaption);
405 SetupStore("TvFormat", mNewHdffSetup.TvFormat);
406 SetupStore("VideoConversion", mNewHdffSetup.VideoConversion);
407 SetupStore("AnalogueVideo", mNewHdffSetup.AnalogueVideo);
408 SetupStore("AudioDelay", mNewHdffSetup.AudioDelay);
409 SetupStore("AudioDownmix", mNewHdffSetup.AudioDownmix);
410 SetupStore("AvSyncShift", mNewHdffSetup.AvSyncShift);
411 SetupStore("OsdSize", mNewHdffSetup.OsdSize);
412 SetupStore("CecEnabled", mNewHdffSetup.CecEnabled);
413 SetupStore("CecTvOn", mNewHdffSetup.CecTvOn);
414 SetupStore("CecTvOff", mNewHdffSetup.CecTvOff);
415 SetupStore("RemoteProtocol", mNewHdffSetup.RemoteProtocol);
416 SetupStore("RemoteAddress", mNewHdffSetup.RemoteAddress);
417 SetupStore("HighLevelOsd", mNewHdffSetup.HighLevelOsd);
418 SetupStore("TrueColorOsd", mNewHdffSetup.TrueColorOsd);
419 SetupStore("TrueColorFormat", mNewHdffSetup.TrueColorFormat);
420 SetupStore("HideMainMenu", mNewHdffSetup.HideMainMenu);
421
422 if (mHdffCmdIf)
423 {
425 {
427 }
428 HdffHdmiConfig_t hdmiConfig;
429
431
435
437
438 memset(&hdmiConfig, 0, sizeof(hdmiConfig));
439 hdmiConfig.TransmitAudio = true;
440 hdmiConfig.ForceDviMode = false;
443 mHdffCmdIf->CmdHdmiConfigure(&hdmiConfig);
444
447 }
448
450}
451
453{
455
456 if (state == osContinue)
457 {
458 cOsdItem * item;
459 switch (key)
460 {
461 case kLeft:
462 case kRight:
463 item = Get(Current());
464 if (item == mTvFormatItem)
465 {
468 Display();
469 }
470 break;
471 default:
472 break;
473 }
474 }
475 return state;
476}
void CmdAvSetAudioDownmix(HdffAudioDownmixMode_t DownmixMode)
Definition hdffcmd.c:161
void CmdHdmiSetVideoMode(HdffVideoMode_t VideoMode)
Definition hdffcmd.c:373
void CmdAvSetSyncShift(int16_t SyncShift)
Definition hdffcmd.c:171
void CmdRemoteSetProtocol(HdffRemoteProtocol_t Protocol)
Definition hdffcmd.c:389
void CmdMuxSetVideoOut(HdffVideoOut_t VideoOut)
Definition hdffcmd.c:358
void CmdHdmiConfigure(const HdffHdmiConfig_t *pConfig)
Definition hdffcmd.c:379
void CmdAvSetVideoFormat(uint8_t DecoderIndex, const HdffVideoFormat_t *pVideoFormat)
Definition hdffcmd.c:116
void CmdRemoteSetAddressFilter(bool Enable, uint32_t Address)
Definition hdffcmd.c:395
void CmdAvSetAudioDelay(int16_t Delay)
Definition hdffcmd.c:156
virtual void Store(void)
Definition setup.c:368
void BuildVideoConversionItem(void)
Definition setup.c:332
HDFF::cHdffCmdIf * mHdffCmdIf
Definition setup.h:50
virtual ~cHdffSetupPage(void)
Definition setup.c:328
virtual eOSState ProcessKey(eKeys Key)
Definition setup.c:452
cOsdItem * mTvFormatItem
Definition setup.h:52
cHdffSetupPage(HDFF::cHdffCmdIf *pHdffCmdIf)
Definition setup.c:196
cHdffSetup mNewHdffSetup
Definition setup.h:51
int mVideoConversion
Definition setup.h:53
void Del(cListObject *Object, bool DeleteObject=true)
Definition tools.c:2200
cListObject * Next(void) const
Definition tools.h:547
const cOsdItem * Get(int Index) const
Definition tools.h:640
virtual eOSState ProcessKey(eKeys Key)
Definition menuitems.c:1242
void SetupStore(const char *Name, const char *Value=NULL)
Definition menuitems.c:1264
int Current(void) const
Definition osdbase.h:138
void Add(cOsdItem *Item, bool Current=false, cOsdItem *After=NULL)
Definition osdbase.c:213
virtual void Display(void)
Definition osdbase.c:227
HdffTvFormat_t
Definition hdffcmd_av.h:57
@ HDFF_TV_FORMAT_16_BY_9
Definition hdffcmd_av.h:59
HdffAudioDownmixMode_t
Definition hdffcmd_av.h:88
@ HDFF_AUDIO_DOWNMIX_AUTOMATIC
Definition hdffcmd_av.h:92
HdffVideoConversion_t
Definition hdffcmd_av.h:63
@ HDFF_VIDEO_CONVERSION_LETTERBOX_14_BY_9
Definition hdffcmd_av.h:66
@ HDFF_VIDEO_CONVERSION_AUTOMATIC
Definition hdffcmd_av.h:64
@ HDFF_VIDEO_CONVERSION_CENTRE_CUT_OUT
Definition hdffcmd_av.h:68
@ HDFF_VIDEO_CONVERSION_ZOOM_16_BY_9
Definition hdffcmd_av.h:70
@ HDFF_VIDEO_CONVERSION_ALWAYS_16_BY_9
Definition hdffcmd_av.h:69
@ HDFF_VIDEO_CONVERSION_LETTERBOX_16_BY_9
Definition hdffcmd_av.h:65
@ HDFF_VIDEO_CONVERSION_PILLARBOX
Definition hdffcmd_av.h:67
HdffVideoModeAdaption_t
@ HDFF_VIDEO_MODE_ADAPT_OFF
HdffVideoMode_t
@ HDFF_VIDEO_MODE_1080I50
@ HDFF_VIDEO_MODE_576P50
@ HDFF_VIDEO_MODE_720P50
@ HDFF_VIDEO_MODE_576I50
HdffVideoOut_t
Definition hdffcmd_mux.h:29
@ HDFF_VIDEO_OUT_CVBS_YUV
Definition hdffcmd_mux.h:32
HdffRemoteProtocol_t
#define tr(s)
Definition i18n.h:85
eKeys
Definition keys.h:16
@ kRight
Definition keys.h:23
@ kLeft
Definition keys.h:22
eOSState
Definition osdbase.h:18
@ osContinue
Definition osdbase.h:19
const int kResolution576p
Definition setup.c:12
const int kResolution576i
Definition setup.c:13
const int kResolution1080i
Definition setup.c:10
cHdffSetup gHdffSetup
Definition setup.c:16
const int kResolution720p
Definition setup.c:11
cHdffSetup gHdffSetup
Definition setup.c:16
HdffVideoModeAdaption_t VideoModeAdaption
HdffVideoConversion_t VideoConversion
Definition hdffcmd_av.h:78
HdffTvFormat_t TvFormat
Definition hdffcmd_av.h:77
int AudioDownmix
Definition setup.h:29
bool SetupParse(const char *Name, const char *Value)
Definition setup.c:40
int CecTvOn
Definition setup.h:33
const char * GetVideoConversionString(void)
Definition setup.c:163
int RemoteProtocol
Definition setup.h:35
int HideMainMenu
Definition setup.h:42
int AvSyncShift
Definition setup.h:30
int TrueColorFormat
Definition setup.h:40
int HighLevelOsd
Definition setup.h:38
int CecTvOff
Definition setup.h:34
int TvFormat
Definition setup.h:25
int AnalogueVideo
Definition setup.h:27
void SetVideoFormat(HDFF::cHdffCmdIf *HdffCmdIf)
Definition setup.c:185
int CecEnabled
Definition setup.h:32
int VideoModeAdaption
Definition setup.h:24
int VideoConversion
Definition setup.h:26
int OsdSize
Definition setup.h:31
int AudioDelay
Definition setup.h:28
int RemoteAddress
Definition setup.h:36
void SetNextVideoConversion(void)
Definition setup.c:123
cHdffSetup(void)
Definition setup.c:18
void GetOsdSize(int &Width, int &Height, double &PixelAspect)
Definition setup.c:64
HdffVideoMode_t GetVideoMode(void)
Definition setup.c:107
int TrueColorOsd
Definition setup.h:39
int Resolution
Definition setup.h:23