mpegtsmux: optionally use fixed-size PES header
This commit is contained in:
parent
f49e74aa34
commit
898f6b48be
@ -127,6 +127,7 @@ typedef struct TsMuxStream TsMuxStream;
|
|||||||
struct TsMuxPacketInfo {
|
struct TsMuxPacketInfo {
|
||||||
guint16 pid;
|
guint16 pid;
|
||||||
guint32 flags;
|
guint32 flags;
|
||||||
|
guint32 pes_header_length;
|
||||||
|
|
||||||
gboolean packet_start_unit_indicator;
|
gboolean packet_start_unit_indicator;
|
||||||
|
|
||||||
|
@ -512,6 +512,11 @@ tsmux_stream_pes_header_length (TsMuxStream * stream)
|
|||||||
* length + extended stream id */
|
* length + extended stream id */
|
||||||
packet_len += 3;
|
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;
|
return packet_len;
|
||||||
@ -556,6 +561,7 @@ tsmux_stream_write_pes_header (TsMuxStream * stream, guint8 * data)
|
|||||||
{
|
{
|
||||||
guint16 length_to_write;
|
guint16 length_to_write;
|
||||||
guint8 hdr_len = tsmux_stream_pes_header_length (stream);
|
guint8 hdr_len = tsmux_stream_pes_header_length (stream);
|
||||||
|
guint8 *orig_data = data;
|
||||||
|
|
||||||
/* start_code prefix + stream_id + pes_packet_length = 6 bytes */
|
/* start_code prefix + stream_id + pes_packet_length = 6 bytes */
|
||||||
data[0] = 0x00;
|
data[0] = 0x00;
|
||||||
@ -615,6 +621,10 @@ tsmux_stream_write_pes_header (TsMuxStream * stream, guint8 * data)
|
|||||||
/* Write the extended streamID */
|
/* Write the extended streamID */
|
||||||
*data++ = stream->id_extended;
|
*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…
x
Reference in New Issue
Block a user