diff --git a/libavformat/flacdec.c b/libavformat/flacdec.c index 8394e47483..cb516fb1f3 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, out_pkt; + AVPacket pkt; AVStream *st = s->streams[stream_index]; AVCodecParserContext *parser; int ret; @@ -276,6 +276,9 @@ static av_unused int64_t flac_read_timestamp(AVFormatContext *s, int stream_inde parser->flags |= PARSER_FLAG_USE_CODEC_TS; for (;;){ + uint8_t *data; + int size; + ret = ff_raw_read_partial_packet(s, &pkt); if (ret < 0){ if (ret == AVERROR(EAGAIN)) @@ -285,14 +288,12 @@ static av_unused int64_t flac_read_timestamp(AVFormatContext *s, int stream_inde av_assert1(!pkt.size); } } - av_init_packet(&out_pkt); av_parser_parse2(parser, st->internal->avctx, - &out_pkt.data, &out_pkt.size, pkt.data, pkt.size, + &data, &size, pkt.data, pkt.size, pkt.pts, pkt.dts, *ppos); av_packet_unref(&pkt); - if (out_pkt.size){ - int size = out_pkt.size; + if (size) { if (parser->pts != AV_NOPTS_VALUE){ // seeking may not have started from beginning of a frame // calculate frame start position from next frame backwards