VAAPI: Instant use new deinterlace configuration.

This commit is contained in:
Johns 2012-01-12 23:07:06 +01:00
parent 54661f90ea
commit 8e53cbd4a9
2 changed files with 15 additions and 1 deletions

View File

@ -1,6 +1,7 @@
User johns User johns
Date: Date:
Instant update deinterlace configuration changes.
Fix subtitle position. Fix subtitle position.
Add SVDRP support. Add SVDRP support.
Suspend when user is inactive. Suspend when user is inactive.

15
video.c
View File

@ -209,6 +209,8 @@ static int VideoWindowY; ///< video outout window y coordinate
static unsigned VideoWindowWidth; ///< video output window width static unsigned VideoWindowWidth; ///< video output window width
static unsigned VideoWindowHeight; ///< video output window height static unsigned VideoWindowHeight; ///< video output window height
static char VideoSurfaceModesChanged; ///< flag surface modes changed
/// Default deinterlace mode. /// Default deinterlace mode.
static VideoDeinterlaceModes VideoDeinterlace[VideoResolutionMax]; static VideoDeinterlaceModes VideoDeinterlace[VideoResolutionMax];
@ -2754,10 +2756,16 @@ static void VaapiDisplayFrame(void)
uint32_t put1; uint32_t put1;
uint32_t put2; uint32_t put2;
int i; int i;
VaapiDecoder *decoder;
if (VideoSurfaceModesChanged) { // handle changed modes
for (i = 0; i < VaapiDecoderN; ++i) {
VaapiInitSurfaceFlags(VaapiDecoders[i]);
}
VideoSurfaceModesChanged = 0;
}
// look if any stream have a new surface available // look if any stream have a new surface available
for (i = 0; i < VaapiDecoderN; ++i) { for (i = 0; i < VaapiDecoderN; ++i) {
VaapiDecoder *decoder;
VASurfaceID surface; VASurfaceID surface;
int filled; int filled;
@ -6777,6 +6785,7 @@ void VideoSetDeinterlace(int mode[VideoResolutionMax])
VideoDeinterlace[1] = mode[1]; VideoDeinterlace[1] = mode[1];
VideoDeinterlace[2] = mode[2]; VideoDeinterlace[2] = mode[2];
VideoDeinterlace[3] = mode[3]; VideoDeinterlace[3] = mode[3];
VideoSurfaceModesChanged = 1;
} }
/// ///
@ -6788,6 +6797,7 @@ void VideoSetSkipChromaDeinterlace(int onoff[VideoResolutionMax])
VideoSkipChromaDeinterlace[1] = onoff[1]; VideoSkipChromaDeinterlace[1] = onoff[1];
VideoSkipChromaDeinterlace[2] = onoff[2]; VideoSkipChromaDeinterlace[2] = onoff[2];
VideoSkipChromaDeinterlace[3] = onoff[3]; VideoSkipChromaDeinterlace[3] = onoff[3];
VideoSurfaceModesChanged = 1;
} }
/// ///
@ -6799,6 +6809,7 @@ void VideoSetDenoise(int level[VideoResolutionMax])
VideoSharpen[1] = level[1]; VideoSharpen[1] = level[1];
VideoSharpen[2] = level[2]; VideoSharpen[2] = level[2];
VideoSharpen[3] = level[3]; VideoSharpen[3] = level[3];
VideoSurfaceModesChanged = 1;
} }
/// ///
@ -6810,6 +6821,7 @@ void VideoSetSharpen(int level[VideoResolutionMax])
VideoSharpen[1] = level[1]; VideoSharpen[1] = level[1];
VideoSharpen[2] = level[2]; VideoSharpen[2] = level[2];
VideoSharpen[3] = level[3]; VideoSharpen[3] = level[3];
VideoSurfaceModesChanged = 1;
} }
/// ///
@ -6821,6 +6833,7 @@ void VideoSetScaling(int mode[VideoResolutionMax])
VideoScaling[1] = mode[1]; VideoScaling[1] = mode[1];
VideoScaling[2] = mode[2]; VideoScaling[2] = mode[2];
VideoScaling[3] = mode[3]; VideoScaling[3] = mode[3];
VideoSurfaceModesChanged = 1;
} }
/// ///