VDPAU: Enable inverse telecine configuration.

This commit is contained in:
Johns 2012-02-14 22:29:17 +01:00
parent 6775173e4f
commit 8dd95dab5e
5 changed files with 38 additions and 3 deletions

View File

@ -1,5 +1,6 @@
User johns User johns
VDPAU: Enables inverse telecine configuration.
Find AC3 (Dolby Digital) inside PES packet. Find AC3 (Dolby Digital) inside PES packet.
Fix bug: audio increments invalid audio PTS. Fix bug: audio increments invalid audio PTS.
Fix bug: dvd plugin not working. Fix bug: dvd plugin not working.

View File

@ -127,6 +127,9 @@ Setup: /etc/vdr/setup.conf
softhddevice.<res>.SkipChromaDeinterlace = 0 softhddevice.<res>.SkipChromaDeinterlace = 0
0 = disabled, 1 = enabled (for slower cards, poor qualität) 0 = disabled, 1 = enabled (for slower cards, poor qualität)
softhddevice.<res>.InverseTelecine = 0
0 = disabled, 1 = enabled
softhddevice.<res>.Denoise = 0 softhddevice.<res>.Denoise = 0
0 .. 1000 noise reduction level (0 off, 1000 max) 0 .. 1000 noise reduction level (0 off, 1000 max)

View File

@ -70,6 +70,9 @@ static int ConfigVideoDeinterlace[RESOLUTIONS];
/// config skip chroma /// config skip chroma
static int ConfigVideoSkipChromaDeinterlace[RESOLUTIONS]; static int ConfigVideoSkipChromaDeinterlace[RESOLUTIONS];
/// config inverse telecine
static int ConfigVideoInverseTelecine[RESOLUTIONS];
/// config denoise /// config denoise
static int ConfigVideoDenoise[RESOLUTIONS]; static int ConfigVideoDenoise[RESOLUTIONS];
@ -389,6 +392,7 @@ class cMenuSetupSoft:public cMenuSetupPage
int Scaling[RESOLUTIONS]; int Scaling[RESOLUTIONS];
int Deinterlace[RESOLUTIONS]; int Deinterlace[RESOLUTIONS];
int SkipChromaDeinterlace[RESOLUTIONS]; int SkipChromaDeinterlace[RESOLUTIONS];
int InverseTelecine[RESOLUTIONS];
int Denoise[RESOLUTIONS]; int Denoise[RESOLUTIONS];
int Sharpen[RESOLUTIONS]; int Sharpen[RESOLUTIONS];
int AudioDelay; int AudioDelay;
@ -469,6 +473,9 @@ cMenuSetupSoft::cMenuSetupSoft(void)
SkipChromaDeinterlace[i] = ConfigVideoSkipChromaDeinterlace[i]; SkipChromaDeinterlace[i] = ConfigVideoSkipChromaDeinterlace[i];
Add(new cMenuEditBoolItem(tr("SkipChromaDeinterlace (vdpau)"), Add(new cMenuEditBoolItem(tr("SkipChromaDeinterlace (vdpau)"),
&SkipChromaDeinterlace[i], trVDR("no"), trVDR("yes"))); &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]; Denoise[i] = ConfigVideoDenoise[i];
Add(new cMenuEditIntItem(tr("Denoise (0..1000) (vdpau)"), &Denoise[i], Add(new cMenuEditIntItem(tr("Denoise (0..1000) (vdpau)"), &Denoise[i],
0, 1000)); 0, 1000));
@ -538,6 +545,8 @@ void cMenuSetupSoft::Store(void)
"SkipChromaDeinterlace"); "SkipChromaDeinterlace");
SetupStore(buf, ConfigVideoSkipChromaDeinterlace[i] = SetupStore(buf, ConfigVideoSkipChromaDeinterlace[i] =
SkipChromaDeinterlace[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"); snprintf(buf, sizeof(buf), "%s.%s", Resolution[i], "Denoise");
SetupStore(buf, ConfigVideoDenoise[i] = Denoise[i]); SetupStore(buf, ConfigVideoDenoise[i] = Denoise[i]);
snprintf(buf, sizeof(buf), "%s.%s", Resolution[i], "Sharpen"); snprintf(buf, sizeof(buf), "%s.%s", Resolution[i], "Sharpen");
@ -546,6 +555,7 @@ void cMenuSetupSoft::Store(void)
VideoSetScaling(ConfigVideoScaling); VideoSetScaling(ConfigVideoScaling);
VideoSetDeinterlace(ConfigVideoDeinterlace); VideoSetDeinterlace(ConfigVideoDeinterlace);
VideoSetSkipChromaDeinterlace(ConfigVideoSkipChromaDeinterlace); VideoSetSkipChromaDeinterlace(ConfigVideoSkipChromaDeinterlace);
VideoSetInverseTelecine(ConfigVideoInverseTelecine);
VideoSetDenoise(ConfigVideoDenoise); VideoSetDenoise(ConfigVideoDenoise);
VideoSetSharpen(ConfigVideoSharpen); VideoSetSharpen(ConfigVideoSharpen);
@ -1292,6 +1302,12 @@ bool cPluginSoftHdDevice::SetupParse(const char *name, const char *value)
VideoSetSkipChromaDeinterlace(ConfigVideoSkipChromaDeinterlace); VideoSetSkipChromaDeinterlace(ConfigVideoSkipChromaDeinterlace);
return true; 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"); snprintf(buf, sizeof(buf), "%s.%s", Resolution[i], "Denoise");
if (!strcmp(name, buf)) { if (!strcmp(name, buf)) {
ConfigVideoDenoise[i] = atoi(value); ConfigVideoDenoise[i] = atoi(value);

18
video.c
View File

@ -291,12 +291,12 @@ static VideoDeinterlaceModes VideoDeinterlace[VideoResolutionMax];
/// Default number of deinterlace surfaces /// Default number of deinterlace surfaces
static const int VideoDeinterlaceSurfaces = 4; static const int VideoDeinterlaceSurfaces = 4;
/// Default Inverse telecine flag (VDPAU only).
static char VideoInverseTelecine[VideoResolutionMax];
/// Default skip chroma deinterlace flag (VDPAU only). /// Default skip chroma deinterlace flag (VDPAU only).
static char VideoSkipChromaDeinterlace[VideoResolutionMax]; static char VideoSkipChromaDeinterlace[VideoResolutionMax];
/// Default inverse telecine flag (VDPAU only).
static char VideoInverseTelecine[VideoResolutionMax];
/// Default amount of noise reduction algorithm to apply (0 .. 1000). /// Default amount of noise reduction algorithm to apply (0 .. 1000).
static int VideoDenoise[VideoResolutionMax]; static int VideoDenoise[VideoResolutionMax];
@ -9060,6 +9060,18 @@ void VideoSetSkipChromaDeinterlace(int onoff[VideoResolutionMax])
VideoSurfaceModesChanged = 1; VideoSurfaceModesChanged = 1;
} }
///
/// 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). /// Set denoise level (0 .. 1000).
/// ///

View File

@ -92,6 +92,9 @@ extern void VideoSetDeinterlace(int[]);
/// Set skip chroma deinterlace. /// Set skip chroma deinterlace.
extern void VideoSetSkipChromaDeinterlace(int[]); extern void VideoSetSkipChromaDeinterlace(int[]);
/// Set inverse telecine.
extern void VideoSetInverseTelecine(int[]);
/// Set scaling. /// Set scaling.
extern void VideoSetScaling(int[]); extern void VideoSetScaling(int[]);