diff options
-rw-r--r-- | ChangeLog | 1 | ||||
-rw-r--r-- | README.txt | 3 | ||||
-rw-r--r-- | softhddevice.cpp | 16 | ||||
-rw-r--r-- | video.c | 18 | ||||
-rw-r--r-- | video.h | 3 |
5 files changed, 38 insertions, 3 deletions
@@ -1,5 +1,6 @@ User johns + VDPAU: Enables inverse telecine configuration. Find AC3 (Dolby Digital) inside PES packet. Fix bug: audio increments invalid audio PTS. Fix bug: dvd plugin not working. @@ -127,6 +127,9 @@ Setup: /etc/vdr/setup.conf softhddevice.<res>.SkipChromaDeinterlace = 0 0 = disabled, 1 = enabled (for slower cards, poor qualität) + softhddevice.<res>.InverseTelecine = 0 + 0 = disabled, 1 = enabled + softhddevice.<res>.Denoise = 0 0 .. 1000 noise reduction level (0 off, 1000 max) diff --git a/softhddevice.cpp b/softhddevice.cpp index 11af6db..35d32ed 100644 --- a/softhddevice.cpp +++ b/softhddevice.cpp @@ -70,6 +70,9 @@ static int ConfigVideoDeinterlace[RESOLUTIONS]; /// config skip chroma static int ConfigVideoSkipChromaDeinterlace[RESOLUTIONS]; + /// config inverse telecine +static int ConfigVideoInverseTelecine[RESOLUTIONS]; + /// config denoise static int ConfigVideoDenoise[RESOLUTIONS]; @@ -389,6 +392,7 @@ class cMenuSetupSoft:public cMenuSetupPage int Scaling[RESOLUTIONS]; int Deinterlace[RESOLUTIONS]; int SkipChromaDeinterlace[RESOLUTIONS]; + int InverseTelecine[RESOLUTIONS]; int Denoise[RESOLUTIONS]; int Sharpen[RESOLUTIONS]; int AudioDelay; @@ -469,6 +473,9 @@ cMenuSetupSoft::cMenuSetupSoft(void) SkipChromaDeinterlace[i] = ConfigVideoSkipChromaDeinterlace[i]; Add(new cMenuEditBoolItem(tr("SkipChromaDeinterlace (vdpau)"), &SkipChromaDeinterlace[i], trVDR("no"), trVDR("yes"))); + InverseTelecine[i] = ConfigVideoInverseTelecine[i]; + Add(new cMenuEditBoolItem(tr("Inverse Telecine (vdpau)"), + &InverseTelecine[i], trVDR("no"), trVDR("yes"))); Denoise[i] = ConfigVideoDenoise[i]; Add(new cMenuEditIntItem(tr("Denoise (0..1000) (vdpau)"), &Denoise[i], 0, 1000)); @@ -538,6 +545,8 @@ void cMenuSetupSoft::Store(void) "SkipChromaDeinterlace"); SetupStore(buf, ConfigVideoSkipChromaDeinterlace[i] = SkipChromaDeinterlace[i]); + snprintf(buf, sizeof(buf), "%s.%s", Resolution[i], "InverseTelecine"); + SetupStore(buf, ConfigVideoInverseTelecine[i] = InverseTelecine[i]); snprintf(buf, sizeof(buf), "%s.%s", Resolution[i], "Denoise"); SetupStore(buf, ConfigVideoDenoise[i] = Denoise[i]); snprintf(buf, sizeof(buf), "%s.%s", Resolution[i], "Sharpen"); @@ -546,6 +555,7 @@ void cMenuSetupSoft::Store(void) VideoSetScaling(ConfigVideoScaling); VideoSetDeinterlace(ConfigVideoDeinterlace); VideoSetSkipChromaDeinterlace(ConfigVideoSkipChromaDeinterlace); + VideoSetInverseTelecine(ConfigVideoInverseTelecine); VideoSetDenoise(ConfigVideoDenoise); VideoSetSharpen(ConfigVideoSharpen); @@ -1292,6 +1302,12 @@ bool cPluginSoftHdDevice::SetupParse(const char *name, const char *value) VideoSetSkipChromaDeinterlace(ConfigVideoSkipChromaDeinterlace); return true; } + snprintf(buf, sizeof(buf), "%s.%s", Resolution[i], "InverseTelecine"); + if (!strcmp(name, buf)) { + ConfigVideoInverseTelecine[i] = atoi(value); + VideoSetInverseTelecine(ConfigVideoInverseTelecine); + return true; + } snprintf(buf, sizeof(buf), "%s.%s", Resolution[i], "Denoise"); if (!strcmp(name, buf)) { ConfigVideoDenoise[i] = atoi(value); @@ -291,12 +291,12 @@ static VideoDeinterlaceModes VideoDeinterlace[VideoResolutionMax]; /// Default number of deinterlace surfaces static const int VideoDeinterlaceSurfaces = 4; - /// Default Inverse telecine flag (VDPAU only). -static char VideoInverseTelecine[VideoResolutionMax]; - /// Default skip chroma deinterlace flag (VDPAU only). static char VideoSkipChromaDeinterlace[VideoResolutionMax]; + /// Default inverse telecine flag (VDPAU only). +static char VideoInverseTelecine[VideoResolutionMax]; + /// Default amount of noise reduction algorithm to apply (0 .. 1000). static int VideoDenoise[VideoResolutionMax]; @@ -9061,6 +9061,18 @@ void VideoSetSkipChromaDeinterlace(int onoff[VideoResolutionMax]) } /// +/// Set inverse telecine on/off. +/// +void VideoSetInverseTelecine(int onoff[VideoResolutionMax]) +{ + VideoInverseTelecine[0] = onoff[0]; + VideoInverseTelecine[1] = onoff[1]; + VideoInverseTelecine[2] = onoff[2]; + VideoInverseTelecine[3] = onoff[3]; + VideoSurfaceModesChanged = 1; +} + +/// /// Set denoise level (0 .. 1000). /// void VideoSetDenoise(int level[VideoResolutionMax]) @@ -92,6 +92,9 @@ extern void VideoSetDeinterlace(int[]); /// Set skip chroma deinterlace. extern void VideoSetSkipChromaDeinterlace(int[]); + /// Set inverse telecine. +extern void VideoSetInverseTelecine(int[]); + /// Set scaling. extern void VideoSetScaling(int[]); |