This produces a small speed up in demuxing Signed-off-by: James Almer <jamr...@gmail.com> --- libavformat/mpegts.c | 20 ++++++++++++++++---- 1 file changed, 16 insertions(+), 4 deletions(-)
diff --git a/libavformat/mpegts.c b/libavformat/mpegts.c index 7f56bacb2c..7746a524c4 100644 --- a/libavformat/mpegts.c +++ b/libavformat/mpegts.c @@ -157,6 +157,8 @@ struct MpegTSContext { int resync_size; int merge_pmt_versions; + AVBufferPool *pool; + /******************************************/ /* private mpegts data */ /* scan context */ @@ -1177,8 +1179,7 @@ static int mpegts_push_data(MpegTSFilter *filter, pes->total_size = MAX_PES_PAYLOAD; /* allocate pes buffer */ - pes->buffer = av_buffer_alloc(pes->total_size + - AV_INPUT_BUFFER_PADDING_SIZE); + pes->buffer = av_buffer_pool_get(ts->pool); if (!pes->buffer) return AVERROR(ENOMEM); @@ -1351,8 +1352,7 @@ skip: if (ret < 0) return ret; pes->total_size = MAX_PES_PAYLOAD; - pes->buffer = av_buffer_alloc(pes->total_size + - AV_INPUT_BUFFER_PADDING_SIZE); + pes->buffer = av_buffer_pool_get(ts->pool); if (!pes->buffer) return AVERROR(ENOMEM); ts->stop_parse = 1; @@ -3032,6 +3032,10 @@ static int mpegts_read_header(AVFormatContext *s) ts->stream = s; ts->auto_guess = 0; + ts->pool = av_buffer_pool_init(MAX_PES_PAYLOAD + AV_INPUT_BUFFER_PADDING_SIZE, NULL); + if (!ts->pool) + return AVERROR(ENOMEM); + if (s->iformat == &ff_mpegts_demuxer) { /* normal demux */ @@ -3200,6 +3204,8 @@ static void mpegts_free(MpegTSContext *ts) clear_programs(ts); + av_buffer_pool_uninit(&ts->pool); + for (i = 0; i < NB_PID_MAX; i++) if (ts->pids[i]) mpegts_close_filter(ts, ts->pids[i]); @@ -3295,6 +3301,12 @@ MpegTSContext *avpriv_mpegts_parse_open(AVFormatContext *s) ts->stream = s; ts->auto_guess = 1; + ts->pool = av_buffer_pool_init(MAX_PES_PAYLOAD + AV_INPUT_BUFFER_PADDING_SIZE, NULL); + if (!ts->pool) { + av_free(ts); + return NULL; + } + mpegts_open_section_filter(ts, SDT_PID, sdt_cb, ts, 1); mpegts_open_section_filter(ts, PAT_PID, pat_cb, ts, 1); mpegts_open_section_filter(ts, EIT_PID, eit_cb, ts, 1); -- 2.25.2 _______________________________________________ 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".