On 3/29/2020 6:07 PM, James Almer wrote: > 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);
Will apply soon if no one objects. _______________________________________________ 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".