mpeg2: fix decoding of 4K videos.
authorGwenole Beauchesne <gwenole.beauchesne@intel.com>
Wed, 30 Jan 2013 17:38:38 +0000 (18:38 +0100)
committerGwenole Beauchesne <gwenole.beauchesne@intel.com>
Wed, 30 Jan 2013 18:19:47 +0000 (19:19 +0100)
Account for slice_vertical_position_extension when vertical_size > 2800.

gst-libs/gst/vaapi/gstvaapidecoder_mpeg2.c

index 540e5ee..c889e9a 100644 (file)
@@ -1127,7 +1127,7 @@ parse_slice(GstVaapiDecoderMpeg2 *decoder,
     GstMpegVideoSliceHdr *slice_hdr;
     GstBitReader br;
     gint mb_x, mb_y, mb_inc;
-    guint8 slice_vertical_position_extension;
+    guint8 slice_vertical_position_extension = 0;
     guint8 extra_bit_slice, junk8;
 
     priv->state &= (GST_MPEG_VIDEO_STATE_GOT_SEQ_HDR|
@@ -1164,7 +1164,8 @@ parse_slice(GstVaapiDecoderMpeg2 *decoder,
     }
     slice_hdr->header_size = 32 + gst_bit_reader_get_pos(&br);
 
-    mb_y = packet->type - GST_MPEG_VIDEO_PACKET_SLICE_MIN;
+    mb_y = ((guint)slice_vertical_position_extension << 7) +
+        packet->type - GST_MPEG_VIDEO_PACKET_SLICE_MIN;
     mb_x = -1;
     do {
         if (!decode_vlc(&br, &mb_inc, mpeg2_mbaddr_vlc_table,