diff options
Diffstat (limited to 'src')
-rw-r--r-- | src/libvdpau/vdpau_h264.c | 5 | ||||
-rw-r--r-- | src/video_out/video_out_vdpau.c | 2 |
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]; |