diff --git a/ChangeLog b/ChangeLog index 42eaf5c..f9f8013 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,6 +1,7 @@ User johns Date: + Makes 60Hz display mode configurable with setup.conf. Support downmix of AC-3 to stero. New audio PES packet parser. Fix bug: Grabbing a JPG image fails while suspended. diff --git a/README.txt b/README.txt index 1c7b803..3ef96c8 100644 --- a/README.txt +++ b/README.txt @@ -176,6 +176,10 @@ Setup: /etc/vdr/setup.conf softhddevice.Suspend.X11 = 0 1 suspend stops X11 server (not working yet) + softhddevice.60HzMode = 0 + 0 disable 60Hz display mode + 1 enable 60Hz display mode + VideoDisplayFormat = ? 0 pan and scan 1 letter box diff --git a/Todo b/Todo index 1847d02..6e1de50 100644 --- a/Todo +++ b/Todo @@ -25,7 +25,6 @@ missing: suspend plugin didn't restore full-screen (is this wanted?) Option deinterlace off / deinterlace force! ColorSpace aren't configurable with the gui. - Inverse telecine isn't configurable with the gui. Replay of old vdr 1.6 recordings. svdrp support for hot-keys. diff --git a/softhddevice.cpp b/softhddevice.cpp index 5b9c1e7..77cdec2 100644 --- a/softhddevice.cpp +++ b/softhddevice.cpp @@ -64,6 +64,7 @@ static char ConfigHideMainMenuEntry; ///< config hide main menu entry static int ConfigVideoSkipLines; ///< config skip lines top/bottom static int ConfigVideoStudioLevels; ///< config use studio levels +static int ConfigVideo60HzMode; ///< config use 60Hz display mode /// config deinterlace static int ConfigVideoDeinterlace[RESOLUTIONS]; @@ -950,7 +951,7 @@ bool cSoftHdDevice::SetPlayMode(ePlayMode play_mode) Suspend(1, 1, 0); return true; default: - dsyslog("[softhddev]playmode not implemented... %d\n", play_mode); + dsyslog("[softhddev] playmode not implemented... %d\n", play_mode); break; } ::SetPlayMode(); @@ -1469,98 +1470,102 @@ bool cPluginSoftHdDevice::SetupParse(const char *name, const char *value) //dsyslog("[softhddev]%s: '%s' = '%s'\n", __FUNCTION__, name, value); - if (!strcmp(name, "MakePrimary")) { + if (!strcasecmp(name, "MakePrimary")) { ConfigMakePrimary = atoi(value); return true; } - if (!strcmp(name, "HideMainMenuEntry")) { + if (!strcasecmp(name, "HideMainMenuEntry")) { ConfigHideMainMenuEntry = atoi(value); return true; } - if (!strcmp(name, "SkipLines")) { + if (!strcasecmp(name, "SkipLines")) { VideoSetSkipLines(ConfigVideoSkipLines = atoi(value)); return true; } - if (!strcmp(name, "StudioLevels")) { + if (!strcasecmp(name, "StudioLevels")) { VideoSetStudioLevels(ConfigVideoStudioLevels = atoi(value)); return true; } + if (!strcasecmp(name, "60HzMode")) { + VideoSet60HzMode(ConfigVideo60HzMode = atoi(value)); + return true; + } for (i = 0; i < RESOLUTIONS; ++i) { char buf[128]; snprintf(buf, sizeof(buf), "%s.%s", Resolution[i], "Scaling"); - if (!strcmp(name, buf)) { + if (!strcasecmp(name, buf)) { ConfigVideoScaling[i] = atoi(value); VideoSetScaling(ConfigVideoScaling); return true; } snprintf(buf, sizeof(buf), "%s.%s", Resolution[i], "Deinterlace"); - if (!strcmp(name, buf)) { + if (!strcasecmp(name, buf)) { ConfigVideoDeinterlace[i] = atoi(value); VideoSetDeinterlace(ConfigVideoDeinterlace); return true; } snprintf(buf, sizeof(buf), "%s.%s", Resolution[i], "SkipChromaDeinterlace"); - if (!strcmp(name, buf)) { + if (!strcasecmp(name, buf)) { ConfigVideoSkipChromaDeinterlace[i] = atoi(value); VideoSetSkipChromaDeinterlace(ConfigVideoSkipChromaDeinterlace); return true; } snprintf(buf, sizeof(buf), "%s.%s", Resolution[i], "InverseTelecine"); - if (!strcmp(name, buf)) { + if (!strcasecmp(name, buf)) { ConfigVideoInverseTelecine[i] = atoi(value); VideoSetInverseTelecine(ConfigVideoInverseTelecine); return true; } snprintf(buf, sizeof(buf), "%s.%s", Resolution[i], "Denoise"); - if (!strcmp(name, buf)) { + if (!strcasecmp(name, buf)) { ConfigVideoDenoise[i] = atoi(value); VideoSetDenoise(ConfigVideoDenoise); return true; } snprintf(buf, sizeof(buf), "%s.%s", Resolution[i], "Sharpen"); - if (!strcmp(name, buf)) { + if (!strcasecmp(name, buf)) { ConfigVideoSharpen[i] = atoi(value); VideoSetSharpen(ConfigVideoSharpen); return true; } } - if (!strcmp(name, "AudioDelay")) { + if (!strcasecmp(name, "AudioDelay")) { VideoSetAudioDelay(ConfigVideoAudioDelay = atoi(value)); return true; } - if (!strcmp(name, "AudioPassthrough")) { + if (!strcasecmp(name, "AudioPassthrough")) { CodecSetAudioPassthrough(ConfigAudioPassthrough = atoi(value)); return true; } - if (!strcmp(name, "AudioDownmix")) { + if (!strcasecmp(name, "AudioDownmix")) { CodecSetAudioDownmix(ConfigAudioDownmix = atoi(value)); return true; } - if (!strcmp(name, "AutoCrop.Interval")) { + if (!strcasecmp(name, "AutoCrop.Interval")) { VideoSetAutoCrop(ConfigAutoCropInterval = atoi(value), ConfigAutoCropDelay, ConfigAutoCropTolerance); return true; } - if (!strcmp(name, "AutoCrop.Delay")) { + if (!strcasecmp(name, "AutoCrop.Delay")) { VideoSetAutoCrop(ConfigAutoCropInterval, ConfigAutoCropDelay = atoi(value), ConfigAutoCropTolerance); return true; } - if (!strcmp(name, "AutoCrop.Tolerance")) { + if (!strcasecmp(name, "AutoCrop.Tolerance")) { VideoSetAutoCrop(ConfigAutoCropInterval, ConfigAutoCropDelay, ConfigAutoCropTolerance = atoi(value)); return true; } - if (!strcmp(name, "Suspend.Close")) { + if (!strcasecmp(name, "Suspend.Close")) { ConfigSuspendClose = atoi(value); return true; } - if (!strcmp(name, "Suspend.X11")) { + if (!strcasecmp(name, "Suspend.X11")) { ConfigSuspendX11 = atoi(value); return true; } diff --git a/video.c b/video.c index a147988..9f8575e 100644 --- a/video.c +++ b/video.c @@ -8914,6 +8914,17 @@ int VideoSetGeometry(const char *geometry) return 0; } +/// Set 60hz display mode. +/// +/// Pull up 50 Hz video for 60 Hz display. +/// +/// @param onoff enable / disable the 60 Hz mode. +/// +void VideoSet60HzMode(int onoff) +{ + Video60HzMode = onoff; +} + /// /// Set video output position. /// diff --git a/video.h b/video.h index 90c8c32..3c74730 100644 --- a/video.h +++ b/video.h @@ -80,6 +80,9 @@ extern void VideoDisplayWakeup(void); /// Set video geometry. extern int VideoSetGeometry(const char *); + /// Set 60Hz display mode. +extern void VideoSet60HzMode(int); + /// Set video output position. extern void VideoSetOutputPosition(int, int, int, int);