diff options
author | Carl-Anton Ingmarsson <ca.ingmarsson@gmail.com> | 2009-06-05 23:11:18 +0200 |
---|---|---|
committer | Jan Schmidt <thaytan@noraisin.net> | 2009-06-20 15:21:45 +0100 |
commit | d65d4c40f5bc3d883ac934284b07f564eadebd71 (patch) | |
tree | 2e36ff344c672e2ac0c2093e72d253fa14733cd6 /sys/vdpau/gstvdpmpegdec.c | |
parent | e9f028957d6036c5fc51f6111340e917554d3eff (diff) | |
download | gst-plugins-bad-d65d4c40f5bc3d883ac934284b07f564eadebd71.tar.gz gst-plugins-bad-d65d4c40f5bc3d883ac934284b07f564eadebd71.tar.bz2 gst-plugins-bad-d65d4c40f5bc3d883ac934284b07f564eadebd71.zip |
vdpaumpegdec: small cleanups
Diffstat (limited to 'sys/vdpau/gstvdpmpegdec.c')
-rw-r--r-- | sys/vdpau/gstvdpmpegdec.c | 39 |
1 files changed, 20 insertions, 19 deletions
diff --git a/sys/vdpau/gstvdpmpegdec.c b/sys/vdpau/gstvdpmpegdec.c index 7eb05afa..e85b1ec3 100644 --- a/sys/vdpau/gstvdpmpegdec.c +++ b/sys/vdpau/gstvdpmpegdec.c @@ -344,24 +344,6 @@ gst_vdp_mpeg_dec_decode (GstVdpMpegDec * mpeg_dec, buffer = gst_adapter_take_buffer (mpeg_dec->adapter, gst_adapter_available (mpeg_dec->adapter)); - if (info->picture_coding_type != B_FRAME) { - if (info->backward_reference != VDP_INVALID_HANDLE) { - gst_buffer_ref (mpeg_dec->b_buffer); - gst_vdp_mpeg_dec_push_video_buffer (mpeg_dec, - GST_VDP_VIDEO_BUFFER (mpeg_dec->b_buffer)); - } - - if (info->forward_reference != VDP_INVALID_HANDLE) { - gst_buffer_unref (mpeg_dec->f_buffer); - info->forward_reference = VDP_INVALID_HANDLE; - } - - info->forward_reference = info->backward_reference; - mpeg_dec->f_buffer = mpeg_dec->b_buffer; - - info->backward_reference = VDP_INVALID_HANDLE; - } - outbuf = gst_vdp_video_buffer_new (mpeg_dec->device, VDP_CHROMA_TYPE_420, mpeg_dec->width, mpeg_dec->height); GST_BUFFER_TIMESTAMP (outbuf) = timestamp; @@ -380,12 +362,31 @@ gst_vdp_mpeg_dec_decode (GstVdpMpegDec * mpeg_dec, GST_BUFFER_FLAG_UNSET (outbuf, GST_VIDEO_BUFFER_TFF); + if (info->picture_coding_type != B_FRAME) { + if (info->backward_reference != VDP_INVALID_HANDLE) { + gst_buffer_ref (mpeg_dec->b_buffer); + gst_vdp_mpeg_dec_push_video_buffer (mpeg_dec, + GST_VDP_VIDEO_BUFFER (mpeg_dec->b_buffer)); + } + + if (info->forward_reference != VDP_INVALID_HANDLE) { + gst_buffer_unref (mpeg_dec->f_buffer); + info->forward_reference = VDP_INVALID_HANDLE; + } + + info->forward_reference = info->backward_reference; + mpeg_dec->f_buffer = mpeg_dec->b_buffer; + + info->backward_reference = VDP_INVALID_HANDLE; + } + if (info->forward_reference != VDP_INVALID_HANDLE && info->picture_coding_type != I_FRAME) gst_vdp_video_buffer_add_reference (outbuf, GST_VDP_VIDEO_BUFFER (mpeg_dec->f_buffer)); - if (info->backward_reference != VDP_INVALID_HANDLE) + if (info->backward_reference != VDP_INVALID_HANDLE + && info->picture_coding_type == B_FRAME) gst_vdp_video_buffer_add_reference (outbuf, GST_VDP_VIDEO_BUFFER (mpeg_dec->b_buffer)); |