This is an automated email from the git hooks/post-receive script. Git pushed a commit to branch master in repository ffmpeg.
commit 769105da7bc3e88b07c18b3c2ed01a2e877ca94a Author: Romain Beauxis <[email protected]> AuthorDate: Sat Oct 31 09:27:28 2026 -0500 Commit: Romain Beauxis <[email protected]> CommitDate: Sat Nov 7 15:00:17 2026 +0000 avcodec/vorbisdec: take new headers from packet side data A chained Ogg Vorbis link has its own setup header, which the demuxer passes as AV_PKT_DATA_NEW_EXTRADATA while the decoder keeps the first link's codebooks. Parse the new headers before the packet that carries them, and treat that packet as the first of a fresh stream, whose samples only prime the overlap. The second link of chained-setup now matches that link decoded on its own, and the chained-meta tags of the second link move to its first frame actually output. --- libavcodec/vorbisdec.c | 13 +++++++++++++ tests/ref/fate/ogg-vorbis-chained-meta.txt | 3 +-- tests/ref/fate/ogg-vorbis-chained-setup | 5 ++--- 3 files changed, 16 insertions(+), 5 deletions(-) diff --git a/libavcodec/vorbisdec.c b/libavcodec/vorbisdec.c index e952af825c..6c5b9c5228 100644 --- a/libavcodec/vorbisdec.c +++ b/libavcodec/vorbisdec.c @@ -1797,10 +1797,23 @@ static int vorbis_decode_frame(AVCodecContext *avctx, AVFrame *frame, vorbis_context *vc = avctx->priv_data; GetBitContext *gb = &vc->gb; float *channel_ptrs[255]; + const uint8_t *new_headers; + size_t new_headers_size; int i, len, ret; ff_dlog(NULL, "packet length %d \n", buf_size); + new_headers = av_packet_get_side_data(avpkt, AV_PKT_DATA_NEW_EXTRADATA, + &new_headers_size); + if (new_headers) { + if (new_headers_size > INT_MAX) + return AVERROR_INVALIDDATA; + vorbis_free(vc); + vc->first_frame = 0; + if ((ret = vorbis_parse_headers(avctx, new_headers, new_headers_size)) < 0) + return ret; + } + if (*buf == 1 && buf_size > 7) { if ((ret = init_get_bits8(gb, buf + 1, buf_size - 1)) < 0) return ret; diff --git a/tests/ref/fate/ogg-vorbis-chained-meta.txt b/tests/ref/fate/ogg-vorbis-chained-meta.txt index 84feb88ddd..f46532b6f8 100644 --- a/tests/ref/fate/ogg-vorbis-chained-meta.txt +++ b/tests/ref/fate/ogg-vorbis-chained-meta.txt @@ -7,8 +7,7 @@ Stream ID: 0, packet PTS: 576, packet DTS: 576 Stream ID: 0, frame PTS: 576, metadata: N/A Stream ID: 0, packet PTS: 1600, packet DTS: 1600 Stream ID: 0, new metadata: encoder=Lavc61.19.100 libvorbis:title=Second Stream -Stream ID: 0, frame PTS: 1600, metadata: encoder=Lavc61.19.100 libvorbis:title=Second Stream Stream ID: 0, packet PTS: 1728, packet DTS: 1728 -Stream ID: 0, frame PTS: 1728, metadata: N/A +Stream ID: 0, frame PTS: 1728, metadata: encoder=Lavc61.19.100 libvorbis:title=Second Stream Stream ID: 0, packet PTS: 2304, packet DTS: 2304 Stream ID: 0, frame PTS: 2304, metadata: N/A diff --git a/tests/ref/fate/ogg-vorbis-chained-setup b/tests/ref/fate/ogg-vorbis-chained-setup index b36c826bd7..4be3e37008 100644 --- a/tests/ref/fate/ogg-vorbis-chained-setup +++ b/tests/ref/fate/ogg-vorbis-chained-setup @@ -1,5 +1,4 @@ -21 -21 --51 --49 --45 +-21 +-21 -- 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]
