diff options
| author | Christophe Thommeret <hftom@free.fr> | 2008-12-27 23:32:41 +0000 |
|---|---|---|
| committer | Christophe Thommeret <hftom@free.fr> | 2008-12-27 23:32:41 +0000 |
| commit | dd2896d3de4070799cdc8c1ed3600d424780811d (patch) | |
| tree | d1f58c3b8b1d1fc4a0007e3bab6fe2dfd2d10d53 /src/libvdpau | |
| parent | 24834b674da33c0c36c71b8dda94254a14562e73 (diff) | |
| download | xine-lib-dd2896d3de4070799cdc8c1ed3600d424780811d.tar.gz xine-lib-dd2896d3de4070799cdc8c1ed3600d424780811d.tar.bz2 | |
Progressive frame & background colour bits.
Diffstat (limited to 'src/libvdpau')
| -rw-r--r-- | src/libvdpau/vdpau_h264.c | 5 | ||||
| -rw-r--r-- | src/libvdpau/vdpau_mpeg12.c | 4 |
2 files changed, 9 insertions, 0 deletions
diff --git a/src/libvdpau/vdpau_h264.c b/src/libvdpau/vdpau_h264.c index d6548b682..c7ad706e9 100644 --- a/src/libvdpau/vdpau_h264.c +++ b/src/libvdpau/vdpau_h264.c @@ -444,7 +444,12 @@ static void vdpau_h264_decode_data (video_decoder_t *this_gen, } if(status != VDP_STATUS_OK) + { xprintf(this->xine, XINE_VERBOSITY_LOG, "vdpau_h264: Decoder failure: %s\n", this->vdpau_accel->vdp_get_error_string(status)); + img->bad_frame = 1; + img->draw(img, this->stream); + this->last_img = 0; + } else { img->duration = this->video_step; diff --git a/src/libvdpau/vdpau_mpeg12.c b/src/libvdpau/vdpau_mpeg12.c index fc7221019..66d451c12 100644 --- a/src/libvdpau/vdpau_mpeg12.c +++ b/src/libvdpau/vdpau_mpeg12.c @@ -118,6 +118,7 @@ typedef struct { int slices_size; int slices_pos, slices_pos_top; + int progressive_frame; int state; } picture_t; @@ -435,6 +436,7 @@ static void picture_coding_extension( sequence_t *sequence, uint8_t *buf, int le lprintf( "alternate_scan: %d\n", get_bits( buf,29,1 ) ); lprintf( "repeat_first_field: %d\n", get_bits( buf,30,1 ) ); lprintf( "chroma_420_type: %d\n", get_bits( buf,31,1 ) ); + sequence->picture.progressive_frame = get_bits( buf,32,1 ); lprintf( "progressive_frame: %d\n", get_bits( buf,32,1 ) ); sequence->picture.state = WANT_SLICE; } @@ -687,6 +689,8 @@ static void decode_picture( vdpau_mpeg12_decoder_t *vd ) img->bad_frame = 0; img->duration = seq->video_step; + img->top_field_first = pic->vdp_infos.top_field_first; + // progressive_frame is unreliable with most mpeg2 streams //img->progressive_frame = pic->progressive_frame; if ( pic->vdp_infos.picture_coding_type!=B_FRAME ) { if ( pic->vdp_infos.picture_coding_type==I_FRAME && !seq->backward_ref ) { |
