[FFmpeg-devel] [PATCH 3/4] avformat/mpegts: rename PES total_size to PES_packet_length
Marton Balint
cus at passwd.hu
Wed Sep 22 20:29:13 EEST 2021
This renames PESContext->total_size to PESContext->PES_packet_length and keeps
it 0 for unbound packets, so its name and semantics will match the standard.
There should be no change in functionality.
Signed-off-by: Marton Balint <cus at passwd.hu>
---
libavformat/mpegts.c | 36 ++++++++++++++++++------------------
1 file changed, 18 insertions(+), 18 deletions(-)
diff --git a/libavformat/mpegts.c b/libavformat/mpegts.c
index 2620e79f57..7d2e7407c1 100644
--- a/libavformat/mpegts.c
+++ b/libavformat/mpegts.c
@@ -254,7 +254,7 @@ typedef struct PESContext {
/* used to get the format */
int data_index;
int flags; /**< copied to the AVPacket flags */
- int total_size;
+ int PES_packet_length;
int pes_header_size;
int extended_stream_id;
uint8_t stream_id;
@@ -998,8 +998,8 @@ static int new_pes_packet(PESContext *pes, AVPacket *pkt)
pkt->data = pes->buffer->data;
pkt->size = pes->data_index;
- if (pes->total_size != MAX_PES_PAYLOAD &&
- pes->pes_header_size + pes->data_index != pes->total_size +
+ if (pes->PES_packet_length &&
+ pes->pes_header_size + pes->data_index != pes->PES_packet_length +
PES_START_SIZE) {
av_log(pes->stream, AV_LOG_WARNING, "PES packet size mismatch\n");
pes->flags |= AV_PKT_FLAG_CORRUPT;
@@ -1183,11 +1183,8 @@ static int mpegts_push_data(MpegTSFilter *filter,
mpegts_set_stream_info(pes->st, pes, 0, 0);
}
- pes->total_size = AV_RB16(pes->header + 4);
- /* NOTE: a zero total size means the PES size is
- * unbounded */
- if (!pes->total_size)
- pes->total_size = MAX_PES_PAYLOAD;
+ pes->PES_packet_length = AV_RB16(pes->header + 4);
+ /* NOTE: zero length means the PES size is unbounded */
if (pes->stream_id != STREAM_ID_PROGRAM_STREAM_MAP &&
pes->stream_id != STREAM_ID_PRIVATE_STREAM_2 &&
@@ -1360,22 +1357,27 @@ skip:
break;
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->data_index > 0 &&
- pes->data_index + buf_size > pes->total_size) {
+ pes->data_index + buf_size > max_packet_size) {
ret = new_pes_packet(pes, ts->pkt);
if (ret < 0)
return ret;
- pes->total_size = MAX_PES_PAYLOAD;
+ pes->PES_packet_length = 0;
+ max_packet_size = MAX_PES_PAYLOAD;
ts->stop_parse = 1;
} else if (pes->data_index == 0 &&
- buf_size > pes->total_size) {
+ buf_size > max_packet_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 = max_packet_size;
}
if (!pes->buffer) {
- pes->buffer = buffer_pool_get(ts, pes->total_size);
+ pes->buffer = buffer_pool_get(ts, max_packet_size);
if (!pes->buffer)
return AVERROR(ENOMEM);
}
@@ -1384,11 +1386,9 @@ skip:
pes->data_index += buf_size;
/* emit complete packets with known packet size
* decreases demuxer delay for infrequent packets like subtitles from
- * a couple of seconds to milliseconds for properly muxed files.
- * total_size is the number of bytes following pes_packet_length
- * in the pes header, i.e. not counting the first PES_START_SIZE bytes */
- if (!ts->stop_parse && pes->total_size < MAX_PES_PAYLOAD &&
- pes->pes_header_size + pes->data_index == pes->total_size + PES_START_SIZE) {
+ * a couple of seconds to milliseconds for properly muxed files. */
+ if (!ts->stop_parse && pes->PES_packet_length &&
+ pes->pes_header_size + pes->data_index == pes->PES_packet_length + PES_START_SIZE) {
ts->stop_parse = 1;
ret = new_pes_packet(pes, ts->pkt);
pes->state = MPEGTS_SKIP;
--
2.31.1
More information about the ffmpeg-devel
mailing list