[FFmpeg-devel] [PATCH 11/11] avformat/internal: Remove packet for extract_extradata
Andreas Rheinhardt
andreas.rheinhardt at gmail.com
Fri Aug 16 06:05:31 EEST 2019
The effective lifetime of the packet does not extend beyond the
extract_extradata in libavformat/utils.c, so the packet can simply be
put on the stack there. This allows to remove the allocation and the
corresponding frees.
Signed-off-by: Andreas Rheinhardt <andreas.rheinhardt at gmail.com>
---
libavformat/internal.h | 1 -
libavformat/utils.c | 10 +---------
2 files changed, 1 insertion(+), 10 deletions(-)
diff --git a/libavformat/internal.h b/libavformat/internal.h
index d6a039c497..2574d2da0c 100644
--- a/libavformat/internal.h
+++ b/libavformat/internal.h
@@ -182,7 +182,6 @@ struct AVStreamInternal {
* supported) */
struct {
AVBSFContext *bsf;
- AVPacket *pkt;
int inited;
} extract_extradata;
diff --git a/libavformat/utils.c b/libavformat/utils.c
index 64516a6a81..d3cd4b4167 100644
--- a/libavformat/utils.c
+++ b/libavformat/utils.c
@@ -3491,10 +3491,6 @@ static int extract_extradata_init(AVStream *st)
if (!ret)
goto finish;
- sti->extract_extradata.pkt = av_packet_alloc();
- if (!sti->extract_extradata.pkt)
- return AVERROR(ENOMEM);
-
ret = av_bsf_alloc(f, &sti->extract_extradata.bsf);
if (ret < 0)
goto fail;
@@ -3516,14 +3512,13 @@ finish:
return 0;
fail:
av_bsf_free(&sti->extract_extradata.bsf);
- av_packet_free(&sti->extract_extradata.pkt);
return ret;
}
static int extract_extradata(AVStream *st, AVPacket *pkt)
{
AVStreamInternal *sti = st->internal;
- AVPacket *pkt_ref;
+ AVPacket pkt1, *pkt_ref = &pkt1;
int ret;
if (!sti->extract_extradata.inited) {
@@ -3535,7 +3530,6 @@ static int extract_extradata(AVStream *st, AVPacket *pkt)
if (sti->extract_extradata.inited && !sti->extract_extradata.bsf)
return 0;
- pkt_ref = sti->extract_extradata.pkt;
ret = av_packet_ref(pkt_ref, pkt);
if (ret < 0)
return ret;
@@ -4171,7 +4165,6 @@ find_stream_info_err:
avcodec_close(ic->streams[i]->internal->avctx);
av_freep(&ic->streams[i]->info);
av_bsf_free(&ic->streams[i]->internal->extract_extradata.bsf);
- av_packet_free(&ic->streams[i]->internal->extract_extradata.pkt);
}
if (ic->pb)
av_log(ic, AV_LOG_DEBUG, "After avformat_find_stream_info() pos: %"PRId64" bytes read:%"PRId64" seeks:%d frames:%d\n",
@@ -4369,7 +4362,6 @@ static void free_stream(AVStream **pst)
}
av_freep(&st->internal->priv_pts);
av_bsf_free(&st->internal->extract_extradata.bsf);
- av_packet_free(&st->internal->extract_extradata.pkt);
}
av_freep(&st->internal);
--
2.21.0
More information about the ffmpeg-devel
mailing list