[FFmpeg-devel] [PATCH 19/50] avformat/flacdec: use av_packet_alloc() to allocate packets
Andreas Rheinhardt
andreas.rheinhardt at gmail.com
Mon Feb 8 20:43:06 EET 2021
James Almer:
> Signed-off-by: James Almer <jamrial at gmail.com>
> ---
> libavformat/flacdec.c | 20 ++++++++++++--------
> 1 file changed, 12 insertions(+), 8 deletions(-)
>
> diff --git a/libavformat/flacdec.c b/libavformat/flacdec.c
> index 6aca4755a1..7852a79d39 100644
> --- a/libavformat/flacdec.c
> +++ b/libavformat/flacdec.c
> @@ -259,7 +259,7 @@ static int flac_probe(const AVProbeData *p)
> static av_unused int64_t flac_read_timestamp(AVFormatContext *s, int stream_index,
> int64_t *ppos, int64_t pos_limit)
> {
> - AVPacket pkt;
> + AVPacket *pkt;
> AVStream *st = s->streams[stream_index];
> AVCodecParserContext *parser;
> int ret;
> @@ -268,9 +268,12 @@ static av_unused int64_t flac_read_timestamp(AVFormatContext *s, int stream_inde
> if (avio_seek(s->pb, *ppos, SEEK_SET) < 0)
> return AV_NOPTS_VALUE;
>
> - av_init_packet(&pkt);
> + pkt = av_packet_alloc();
> + if (!pkt)
> + return AV_NOPTS_VALUE;
> parser = av_parser_init(st->codecpar->codec_id);
> if (!parser){
> + av_packet_free(&pkt);
> return AV_NOPTS_VALUE;
> }
> parser->flags |= PARSER_FLAG_USE_CODEC_TS;
> @@ -279,20 +282,20 @@ static av_unused int64_t flac_read_timestamp(AVFormatContext *s, int stream_inde
> uint8_t *data;
> int size;
>
> - ret = ff_raw_read_partial_packet(s, &pkt);
> + ret = ff_raw_read_partial_packet(s, pkt);
> if (ret < 0){
> if (ret == AVERROR(EAGAIN))
> continue;
> else {
> - av_packet_unref(&pkt);
> - av_assert1(!pkt.size);
> + av_packet_unref(pkt);
> + av_assert1(!pkt->size);
> }
> }
> av_parser_parse2(parser, st->internal->avctx,
> - &data, &size, pkt.data, pkt.size,
> - pkt.pts, pkt.dts, *ppos);
> + &data, &size, pkt->data, pkt->size,
> + pkt->pts, pkt->dts, *ppos);
>
> - av_packet_unref(&pkt);
> + av_packet_unref(pkt);
> if (size) {
> if (parser->pts != AV_NOPTS_VALUE){
> // seeking may not have started from beginning of a frame
> @@ -304,6 +307,7 @@ static av_unused int64_t flac_read_timestamp(AVFormatContext *s, int stream_inde
> } else if (ret < 0)
> break;
> }
> + av_packet_free(&pkt);
> av_parser_close(parser);
> return pts;
> }
>
The parse_packet is unused during this function, so it can be reused.
- Andreas
More information about the ffmpeg-devel
mailing list