diff options
author | Carl-Anton Ingmarsson <ca.ingmarsson@gmail.com> | 2009-04-22 23:35:07 +0200 |
---|---|---|
committer | Jan Schmidt <thaytan@noraisin.net> | 2009-06-20 15:21:31 +0100 |
commit | 035b5f4efb4d57fccf2a5fa220c0d034f4d777a3 (patch) | |
tree | 13eb43a6ebf3465990422418fe8fd26ef8b19815 /sys/vdpau/gstvdpmpegdecoder.c | |
parent | 17102ad0fadef83a0d8b0d807d698a104bc428b5 (diff) | |
download | gst-plugins-bad-035b5f4efb4d57fccf2a5fa220c0d034f4d777a3.tar.gz gst-plugins-bad-035b5f4efb4d57fccf2a5fa220c0d034f4d777a3.tar.bz2 gst-plugins-bad-035b5f4efb4d57fccf2a5fa220c0d034f4d777a3.zip |
vdpaumpegdec: handle broken_gop field
Diffstat (limited to 'sys/vdpau/gstvdpmpegdecoder.c')
-rw-r--r-- | sys/vdpau/gstvdpmpegdecoder.c | 10 |
1 files changed, 10 insertions, 0 deletions
diff --git a/sys/vdpau/gstvdpmpegdecoder.c b/sys/vdpau/gstvdpmpegdecoder.c index 978d0497..d9b74706 100644 --- a/sys/vdpau/gstvdpmpegdecoder.c +++ b/sys/vdpau/gstvdpmpegdecoder.c @@ -158,6 +158,12 @@ gst_vdp_mpeg_decoder_decode (GstVdpMpegDecoder * mpeg_dec) if (mpeg_dec->vdp_info.picture_coding_type == B_FRAME) { GstVdpBFrame *b_frame; + if (mpeg_dec->broken_gop) { + gst_buffer_unref (buffer); + mpeg_dec->broken_gop = FALSE; + return GST_FLOW_OK; + } + b_frame = g_slice_new (GstVdpBFrame); b_frame->buffer = buffer; @@ -336,6 +342,8 @@ gst_vdp_mpeg_decoder_parse_gop (GstVdpMpegDecoder * mpeg_dec, guint8 * data, if (!mpeg_util_parse_picture_gop (&gop, data, end)) return FALSE; + mpeg_dec->broken_gop = gop.broken_gop; + return TRUE; } @@ -497,6 +505,8 @@ gst_vdp_mpeg_decoder_init (GstVdpMpegDecoder * mpeg_dec, mpeg_dec->b_frames = NULL; + mpeg_dec->broken_gop = FALSE; + mpeg_dec->adapter = gst_adapter_new (); gst_pad_set_chain_function (dec->sink, gst_vdp_mpeg_decoder_chain); |