PES packet with too much padding trigger unlimited error
messages "PES packet size mismatch" because the code that
corrects the length is wrong.
Here is a sample file: http://99.93.62.129/smpte2038.ts
PID 300 is the one triggering the errors.
I am attaching a patch that fixes the problem.

From 3a2760d42b38023c73f9a3ab18de01a44526dbc9 Mon Sep 17 00:00:00 2001
From: Sergio Ammirata <ser...@ammirata.net>
Date: Tue, 3 Aug 2021 13:43:44 +0000
Subject: [PATCH] Fix setting the correct size for PES packets with too much
 padding

---
 libavformat/mpegts.c | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/libavformat/mpegts.c b/libavformat/mpegts.c
index 640c9afa5d..40439c26c0 100644
--- a/libavformat/mpegts.c
+++ b/libavformat/mpegts.c
@@ -1355,7 +1355,7 @@ skip:
                            buf_size > pes->total_size) {
                     // pes packet size is < ts size packet and pes data is padded with 0xff
                     // not sure if this is legal in ts but see issue #2392
-                    buf_size = pes->total_size;
+                    buf_size = PES_START_SIZE + pes->total_size - pes->pes_header_size;
                 }
                 memcpy(pes->buffer->data + pes->data_index, p, buf_size);
                 pes->data_index += buf_size;
-- 
2.17.1

_______________________________________________
ffmpeg-devel mailing list
ffmpeg-devel@ffmpeg.org
https://ffmpeg.org/mailman/listinfo/ffmpeg-devel

To unsubscribe, visit link above, or email
ffmpeg-devel-requ...@ffmpeg.org with subject "unsubscribe".

Reply via email to