summaryrefslogtreecommitdiff
path: root/gst-libs
diff options
context:
space:
mode:
authorZhao Halley <halley.zhao@intel.com>2011-12-08 12:12:21 +0800
committerThibault Saunier <thibault.saunier@collabora.com>2012-01-05 08:34:35 -0300
commit1138aab1db5d359dade2585c83dc4e61501677a9 (patch)
tree8b3d432f21b8981e081ca399a70447a17dbeb11f /gst-libs
parent052d1ace5e617015af99663b1bcd9f13d462b41d (diff)
downloadgstreamer-plugins-bad-1138aab1db5d359dade2585c83dc4e61501677a9.tar.gz
codecparsers: includes start_marker in h263 header for parsing
Diffstat (limited to 'gst-libs')
-rw-r--r--gst-libs/gst/codecparsers/gstmpeg4parser.c10
1 files changed, 9 insertions, 1 deletions
diff --git a/gst-libs/gst/codecparsers/gstmpeg4parser.c b/gst-libs/gst/codecparsers/gstmpeg4parser.c
index 686ae9336..ad7fcb638 100644
--- a/gst-libs/gst/codecparsers/gstmpeg4parser.c
+++ b/gst-libs/gst/codecparsers/gstmpeg4parser.c
@@ -1497,7 +1497,10 @@ gst_mpeg4_parse_video_plane_short_header (GstMpeg4VideoPlaneShortHdr *
g_return_val_if_fail (shorthdr != NULL, GST_MPEG4_PARSER_ERROR);
- if (gst_bit_reader_get_remaining (&br) < 26)
+ if (gst_bit_reader_get_remaining (&br) < 48)
+ goto failed;
+
+ if (gst_bit_reader_get_bits_uint32_unchecked (&br, 22) != 0x20)
goto failed;
shorthdr->temporal_reference =
@@ -1518,26 +1521,31 @@ gst_mpeg4_parse_video_plane_short_header (GstMpeg4VideoPlaneShortHdr *
shorthdr->vop_height = 96;
shorthdr->num_macroblocks_in_gob = 8;
shorthdr->num_gobs_in_vop = 6;
+ break;
case 0x02:
shorthdr->vop_width = 176;
shorthdr->vop_height = 144;
shorthdr->num_macroblocks_in_gob = 11;
shorthdr->num_gobs_in_vop = 9;
+ break;
case 0x03:
shorthdr->vop_width = 352;
shorthdr->vop_height = 288;
shorthdr->num_macroblocks_in_gob = 22;
shorthdr->num_gobs_in_vop = 18;
+ break;
case 0x04:
shorthdr->vop_width = 704;
shorthdr->vop_height = 576;
shorthdr->num_macroblocks_in_gob = 88;
shorthdr->num_gobs_in_vop = 18;
+ break;
case 0x05:
shorthdr->vop_width = 1408;
shorthdr->vop_height = 1152;
shorthdr->num_macroblocks_in_gob = 352;
shorthdr->num_gobs_in_vop = 18;
+ break;
default:
shorthdr->vop_width = 0;
shorthdr->vop_height = 0;