h264parse: outgoing byte stream prefix always has size 4

Fixes #664123.
This commit is contained in:
Jonas Larsson 2011-11-16 10:56:24 +01:00 committed by Mark Nauwelaerts
parent 92f07e3898
commit 5099ff23af

View file

@ -337,7 +337,7 @@ gst_h264_parse_wrap_nal (GstH264Parse * h264parse, guint format, guint8 * data,
guint size) guint size)
{ {
GstBuffer *buf; GstBuffer *buf;
const guint nl = h264parse->nal_length_size; guint nl = h264parse->nal_length_size;
GST_DEBUG_OBJECT (h264parse, "nal length %d", size); GST_DEBUG_OBJECT (h264parse, "nal length %d", size);
@ -345,7 +345,10 @@ gst_h264_parse_wrap_nal (GstH264Parse * h264parse, guint format, guint8 * data,
if (format == GST_H264_PARSE_FORMAT_AVC) { if (format == GST_H264_PARSE_FORMAT_AVC) {
GST_WRITE_UINT32_BE (GST_BUFFER_DATA (buf), size << (32 - 8 * nl)); GST_WRITE_UINT32_BE (GST_BUFFER_DATA (buf), size << (32 - 8 * nl));
} else { } else {
g_assert (nl == 4); /* HACK: nl should always be 4 here, otherwise this won't work.
* There are legit cases where nl in avc stream is 2, but byte-stream
* SC is still always 4 bytes. */
nl = 4;
GST_WRITE_UINT32_BE (GST_BUFFER_DATA (buf), 1); GST_WRITE_UINT32_BE (GST_BUFFER_DATA (buf), 1);
} }