summaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
Diffstat (limited to 'src')
-rw-r--r--src/libvdpau/vdpau_h264.c5
-rw-r--r--src/video_out/video_out_vdpau.c2
2 files changed, 6 insertions, 1 deletions
diff --git a/src/libvdpau/vdpau_h264.c b/src/libvdpau/vdpau_h264.c
index 0d55abbc6..81932e096 100644
--- a/src/libvdpau/vdpau_h264.c
+++ b/src/libvdpau/vdpau_h264.c
@@ -448,6 +448,11 @@ static void vdpau_h264_decode_data (video_decoder_t *this_gen,
img->bad_frame = 0;
+ if(!pic.field_pic_flag && !pic.mb_adaptive_frame_field_flag)
+ img->progressive_frame = 1;
+ else
+ img->progressive_frame = 0;
+
struct decoded_picture *decoded_pic = NULL;
if(pic.is_reference) {
if(!slc->field_pic_flag || !this->wait_for_bottom_field) {
diff --git a/src/video_out/video_out_vdpau.c b/src/video_out/video_out_vdpau.c
index 11eb0fcb3..ed68b5c5f 100644
--- a/src/video_out/video_out_vdpau.c
+++ b/src/video_out/video_out_vdpau.c
@@ -715,7 +715,7 @@ static void vdpau_display_frame (vo_driver_t *this_gen, vo_frame_t *frame_gen)
layer_count = 0;
}
- if ( frame->vo_frame.duration>2500 && frame->format==XINE_IMGFMT_VDPAU ) {
+ if ( frame->vo_frame.duration>2500 && !frame->vo_frame.progressive_frame && frame->format==XINE_IMGFMT_VDPAU ) {
VdpTime current_time = 0;
VdpVideoSurface past[2];
VdpVideoSurface future[1];