diff options
author | Gwenole Beauchesne <gwenole.beauchesne@intel.com> | 2012-03-28 19:15:47 +0200 |
---|---|---|
committer | Gwenole Beauchesne <gwenole.beauchesne@intel.com> | 2012-03-28 19:41:28 +0200 |
commit | b003a2bab28a156032e9c888d8d5a48eb833d980 (patch) | |
tree | bf2ac2423c5dc114498a1d5752ca0e94e899206b | |
parent | 7a9410f826c852377a5214dc21203dc07d250d08 (diff) |
mpeg2: fix invalid interlaced frame in progressive sequence.
Some streams, badly constructed, could have signaled an interlaced
frame while the sequence was meant to be progressive. Warn and force
frame to be progressive in this case.
-rw-r--r-- | gst-libs/gst/vaapi/gstvaapidecoder_mpeg2.c | 5 |
1 files changed, 5 insertions, 0 deletions
diff --git a/gst-libs/gst/vaapi/gstvaapidecoder_mpeg2.c b/gst-libs/gst/vaapi/gstvaapidecoder_mpeg2.c index b2a6367d..dbf66dd3 100644 --- a/gst-libs/gst/vaapi/gstvaapidecoder_mpeg2.c +++ b/gst-libs/gst/vaapi/gstvaapidecoder_mpeg2.c @@ -577,6 +577,11 @@ decode_picture_ext(GstVaapiDecoderMpeg2 *decoder, guchar *buf, guint buf_size) } priv->has_pic_ext = TRUE; + if (priv->progressive_sequence && !pic_ext->progressive_frame) { + GST_WARNING("invalid interlaced frame in progressive sequence, fixing"); + pic_ext->progressive_frame = 1; + } + if (pic_ext->picture_structure == 0 || (pic_ext->progressive_frame && pic_ext->picture_structure != GST_MPEG_VIDEO_PICTURE_STRUCTURE_FRAME)) { |