summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorJulian Scheel <julian@jusst.de>2008-12-23 18:04:00 +0000
committerJulian Scheel <julian@jusst.de>2008-12-23 18:04:00 +0000
commit08b37241e90cddc8d1db6d0aaf6fbb602bd61ae1 (patch)
treead39184be82aca18c1ea1f1e59e40b9905badae3
parent27a05e59f563e7bb43fa8286646d15448f1670bf (diff)
downloadxine-lib-08b37241e90cddc8d1db6d0aaf6fbb602bd61ae1.tar.gz
xine-lib-08b37241e90cddc8d1db6d0aaf6fbb602bd61ae1.tar.bz2
Set H.264 progressive_frame_flag; follow it in video_out_vdpau.
(Maybe following the flag is not a good idea for mpeg2...)
-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];