From: Mark Nauwelaerts Date: Sat, 16 Jun 2012 14:50:39 +0000 (+0200) Subject: mpegtsmux: optionally use fixed-size PES header X-Git-Tag: 1.19.3~507^2~15367 X-Git-Url: http://review.tizen.org/git/?a=commitdiff_plain;h=898f6b48be5b8e44f7d531b55fd99c90c9fb7f1d;p=platform%2Fupstream%2Fgstreamer.git mpegtsmux: optionally use fixed-size PES header --- diff --git a/gst/mpegtsmux/tsmux/tsmuxcommon.h b/gst/mpegtsmux/tsmux/tsmuxcommon.h index c9f087e..296ad97 100644 --- a/gst/mpegtsmux/tsmux/tsmuxcommon.h +++ b/gst/mpegtsmux/tsmux/tsmuxcommon.h @@ -127,6 +127,7 @@ typedef struct TsMuxStream TsMuxStream; struct TsMuxPacketInfo { guint16 pid; guint32 flags; + guint32 pes_header_length; gboolean packet_start_unit_indicator; diff --git a/gst/mpegtsmux/tsmux/tsmuxstream.c b/gst/mpegtsmux/tsmux/tsmuxstream.c index 58d8609..f05b72a 100644 --- a/gst/mpegtsmux/tsmux/tsmuxstream.c +++ b/gst/mpegtsmux/tsmux/tsmuxstream.c @@ -512,6 +512,11 @@ tsmux_stream_pes_header_length (TsMuxStream * stream) * length + extended stream id */ packet_len += 3; } + if (stream->pi.pes_header_length) { + /* check for consistency, then we can add stuffing */ + g_assert (packet_len <= stream->pi.pes_header_length + 6 + 3); + packet_len = stream->pi.pes_header_length + 6 + 3; + } } return packet_len; @@ -556,6 +561,7 @@ tsmux_stream_write_pes_header (TsMuxStream * stream, guint8 * data) { guint16 length_to_write; guint8 hdr_len = tsmux_stream_pes_header_length (stream); + guint8 *orig_data = data; /* start_code prefix + stream_id + pes_packet_length = 6 bytes */ data[0] = 0x00; @@ -615,6 +621,10 @@ tsmux_stream_write_pes_header (TsMuxStream * stream, guint8 * data) /* Write the extended streamID */ *data++ = stream->id_extended; } + /* write stuffing bytes if fixed PES header length requested */ + if (stream->pi.pes_header_length) + while (data < orig_data + stream->pi.pes_header_length + 9) + *data++ = 0xff; } }