tsdemux: more correctly determine expected PES packet payload size

... particularly considering that packet_length == 0 is possible.
This commit is contained in:
Mark Nauwelaerts 2012-07-12 10:13:50 +02:00
parent 7b5340f3be
commit 76aedf5641

View file

@ -1300,8 +1300,16 @@ gst_ts_demux_parse_pes_header (GstTSDemux * demux, TSDemuxStream * stream,
/* Remove PES headers */
GST_DEBUG ("Moving data forward by %d bytes (packet_size:%d, have:%d)",
header.header_size, header.packet_length, length);
g_assert (header.packet_length >= header.header_size);
stream->expected_size = header.packet_length - header.header_size;
stream->expected_size = header.packet_length;
if (stream->expected_size) {
if (G_LIKELY (stream->expected_size > header.header_size)) {
stream->expected_size -= header.header_size;
} else {
/* next packet will have to complete this one */
GST_ERROR ("invalid header and packet size combination");
stream->expected_size = 0;
}
}
data += header.header_size;
length -= header.header_size;