This is an automated email from the git hooks/post-receive script. Git pushed a commit to branch master in repository ffmpeg.
commit c649aebc14ec5265f13d53bd11b5fbbd6bd61b80 Author: Romain Beauxis <[email protected]> AuthorDate: Sun Nov 1 08:37:39 2026 -0600 Commit: Romain Beauxis <[email protected]> CommitDate: Sun Nov 8 12:48:28 2026 +0000 avcodec/opus/dec: split setting up from a header out of init and close Move setting the streams up from a header, and freeing them, out of initialization and closing, so that they can run again for a header arriving later. --- libavcodec/opus/dec.c | 40 ++++++++++++++++++++++++++-------------- 1 file changed, 26 insertions(+), 14 deletions(-) diff --git a/libavcodec/opus/dec.c b/libavcodec/opus/dec.c index bb38aec148..2cc677d667 100644 --- a/libavcodec/opus/dec.c +++ b/libavcodec/opus/dec.c @@ -474,10 +474,8 @@ finish: return output_samples; } -static av_cold int opus_decode_close(AVCodecContext *avctx) +static av_cold void opus_free_streams(OpusContext *c) { - OpusContext *c = avctx->priv_data; - for (int i = 0; i < c->p.nb_streams; i++) { OpusStreamContext *s = &c->streams[i]; @@ -497,27 +495,26 @@ static av_cold int opus_decode_close(AVCodecContext *avctx) c->p.nb_streams = 0; av_freep(&c->p.channel_maps); +} + +static av_cold int opus_decode_close(AVCodecContext *avctx) +{ + OpusContext *c = avctx->priv_data; + + opus_free_streams(c); av_freep(&c->fdsp); return 0; } -static av_cold int opus_decode_init(AVCodecContext *avctx) +static av_cold int opus_init_streams(AVCodecContext *avctx, + const uint8_t *header, int header_size) { OpusContext *c = avctx->priv_data; int ret; - avctx->sample_fmt = AV_SAMPLE_FMT_FLTP; - if (!avctx->sample_rate) - avctx->sample_rate = 48000; - - c->fdsp = avpriv_float_dsp_alloc(0); - if (!c->fdsp) - return AVERROR(ENOMEM); - /* find out the channel configuration */ - ret = ff_opus_parse_extradata(avctx, &c->p, avctx->extradata, - avctx->extradata_size); + ret = ff_opus_parse_extradata(avctx, &c->p, header, header_size); if (ret < 0) return ret; if (c->p.gain_i) @@ -581,6 +578,21 @@ static av_cold int opus_decode_init(AVCodecContext *avctx) return 0; } +static av_cold int opus_decode_init(AVCodecContext *avctx) +{ + OpusContext *c = avctx->priv_data; + + avctx->sample_fmt = AV_SAMPLE_FMT_FLTP; + if (!avctx->sample_rate) + avctx->sample_rate = 48000; + + c->fdsp = avpriv_float_dsp_alloc(0); + if (!c->fdsp) + return AVERROR(ENOMEM); + + return opus_init_streams(avctx, avctx->extradata, avctx->extradata_size); +} + static int opus_decode_packet(AVCodecContext *avctx, AVFrame *frame, int *got_frame_ptr, AVPacket *avpkt) { -- To stop receiving notification emails like this one, please contact [email protected]. _______________________________________________ ffmpeg-cvslog mailing list -- [email protected] To unsubscribe send an email to [email protected]
