mirror of
https://gitlab.freedesktop.org/gstreamer/gstreamer.git
synced 2025-04-10 10:04:23 +00:00
mpegtsmux: optionally use fixed-size PES header
This commit is contained in:
parent
f49e74aa34
commit
898f6b48be
2 changed files with 11 additions and 0 deletions
|
@ -127,6 +127,7 @@ typedef struct TsMuxStream TsMuxStream;
|
|||
struct TsMuxPacketInfo {
|
||||
guint16 pid;
|
||||
guint32 flags;
|
||||
guint32 pes_header_length;
|
||||
|
||||
gboolean packet_start_unit_indicator;
|
||||
|
||||
|
|
|
@ -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;
|
||||
}
|
||||
}
|
||||
|
||||
|
|
Loading…
Reference in a new issue