This is an automated email from the git hooks/post-receive script. Git pushed a commit to branch master in repository ffmpeg.
commit 98e9406426a3ddd55f1a2df18a2bf53994723188 Author: Romain Beauxis <[email protected]> AuthorDate: Sat Oct 31 09:44:35 2026 -0500 Commit: Romain Beauxis <[email protected]> CommitDate: Sun Nov 8 12:48:28 2026 +0000 avcodec/opus/dec: take a new header from packet side data A chained Ogg Opus link has its own header and starts a new logical stream, while the decoder keeps the first link's setup and state. Tear the decoder down and set it up again from a header passed as AV_PKT_DATA_NEW_EXTRADATA, before decoding the packet that carries it. --- libavcodec/opus/dec.c | 18 ++++++++++++++++++ 1 file changed, 18 insertions(+) diff --git a/libavcodec/opus/dec.c b/libavcodec/opus/dec.c index 04cb795402..1f80ecd760 100644 --- a/libavcodec/opus/dec.c +++ b/libavcodec/opus/dec.c @@ -626,8 +626,26 @@ static int opus_decode_packet(AVCodecContext *avctx, AVFrame *frame, int coded_samples = 0; int decoded_samples = INT_MAX; int delayed_samples = 0; + const uint8_t *new_header; + size_t new_header_size; int i, ret; + /* A new header starts a new logical stream, decoded from a fresh state. */ + new_header = av_packet_get_side_data(avpkt, AV_PKT_DATA_NEW_EXTRADATA, + &new_header_size); + if (new_header) { + if (new_header_size > INT_MAX) + return AVERROR_INVALIDDATA; + opus_free_streams(c); + ret = opus_init_streams(avctx, new_header, new_header_size); + if (ret < 0) { + opus_free_streams(c); + return ret; + } + } + if (!c->streams) + return AVERROR_INVALIDDATA; + /* calculate the number of delayed samples */ for (int i = 0; i < c->p.nb_streams; i++) { OpusStreamContext *s = &c->streams[i]; -- 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]
