mpeg2: fix invalid interlaced frame in progressive sequence.
authorGwenole Beauchesne <gwenole.beauchesne@intel.com>
Wed, 28 Mar 2012 17:15:47 +0000 (19:15 +0200)
committerGwenole Beauchesne <gwenole.beauchesne@intel.com>
Wed, 28 Mar 2012 17:41:28 +0000 (19:41 +0200)
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.

gst-libs/gst/vaapi/gstvaapidecoder_mpeg2.c

index b2a6367..dbf66dd 100644 (file)
@@ -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)) {