mirror of
https://github.com/FFmpeg/FFmpeg.git
synced 2024-11-21 10:55:51 +02:00
avformat/mpegts: fix max_packet_size in mpegts payload parsing
The maximum allowed useful PES payload data was set to PES_packet_length, but it is in fact smaller by the length of the PES header. This changes how corrupt streams are packetized: - If PES header length is bigger than PES_packet_length then the PES packet payload will be handled as an unbound packet - PES packets with payload across multiple MPEGTS packets will always be splitted if with the next chunk of data the payload should exceed PES_packet_length, previously a PES_header_length amount of excess was allowed. Fixes ticket #9355. Signed-off-by: Marton Balint <cus@passwd.hu>
This commit is contained in:
parent
aeea2ad0e4
commit
9420f7e095
@ -1358,8 +1358,8 @@ skip:
|
||||
case MPEGTS_PAYLOAD:
|
||||
do {
|
||||
int max_packet_size = MAX_PES_PAYLOAD;
|
||||
if (pes->PES_packet_length)
|
||||
max_packet_size = pes->PES_packet_length;
|
||||
if (pes->PES_packet_length && pes->PES_packet_length + PES_START_SIZE > pes->pes_header_size)
|
||||
max_packet_size = pes->PES_packet_length + PES_START_SIZE - pes->pes_header_size;
|
||||
|
||||
if (pes->data_index > 0 &&
|
||||
pes->data_index + buf_size > max_packet_size) {
|
||||
|
Loading…
Reference in New Issue
Block a user