summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--ChangeLog1
-rw-r--r--README.txt3
-rw-r--r--softhddevice.cpp16
-rw-r--r--video.c18
-rw-r--r--video.h3
5 files changed, 38 insertions, 3 deletions
diff --git a/ChangeLog b/ChangeLog
index f432de4..fc4ce6c 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -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.
diff --git a/README.txt b/README.txt
index d087f63..c172606 100644
--- a/README.txt
+++ b/README.txt
@@ -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);
diff --git a/video.c b/video.c
index 234350a..ecaa5ac 100644
--- a/video.c
+++ b/video.c
@@ -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])
diff --git a/video.h b/video.h
index b391205..4018ad2 100644
--- a/video.h
+++ b/video.h
@@ -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[]);