[FFmpeg-devel] [PATCH v9 0/8] Properly decode ogg metadata in ogg/{vorbis, flac, opus} chained bitstreams
Romain Beauxis
romain.beauxis at gmail.com
Mon Mar 24 16:50:51 EET 2025
This is a series of patches to allow proper decoding of ogg metadata in chained
`ogg/vorbis, `ogg/flac` and `ogg/opus` streams.
FATE samples for the new tests can be found here: https://www.dropbox.com/scl/fo/xrtrna2rxr1j354hrtymq/AGwemlxHYecBLNmQ8Fsy--4?rlkey=lzilr4m9w4gfdqygoe172vvy8&dl=0
## Changes since last version:
* Fixed fate test run in cross-compiled environments.
* Switched to av_tree to store pending metadata as pts->metadata
mappings in case packets arrive in non-linear order or metadata
updates are split accross multiple packets for a single frame.
Romain Beauxis (8):
libavcodec/decode.c: intercept `AV_PKT_DATA_METADATA_UPDATE` packet
extra data, attach them to the next decoded frame with the same PTS.
tests: Add stream dump test API util.
tests: Add chained ogg/vorbis stream dump test.
libavformat/oggdec.h, libavformat/oggparsevorbis.c: Factor out vorbis
metadata update mechanism.
libavformat/oggparseflac.c: Parse ogg/flac comments in new ogg
packets, add them to ogg stream new_metadata.
tests: Add chained ogg/flac stream dump test.
libavformat/oggparseopus.c: Parse comments from secondary chained
streams header packet.
tests: Add chained ogg/opus stream dump test.
libavcodec/decode.c | 131 +++++++++++++++
libavformat/oggdec.h | 14 ++
libavformat/oggparseflac.c | 21 +++
libavformat/oggparseopus.c | 13 +-
libavformat/oggparsevorbis.c | 25 ++-
tests/Makefile | 4 +
tests/api/Makefile | 2 +-
tests/api/api-dump-stream-meta-test.c | 175 +++++++++++++++++++++
tests/fate/ogg-flac.mak | 11 ++
tests/fate/ogg-opus.mak | 11 ++
tests/fate/ogg-vorbis.mak | 11 ++
tests/ref/fate/ogg-flac-chained-meta.txt | 13 ++
tests/ref/fate/ogg-opus-chained-meta.txt | 27 ++++
tests/ref/fate/ogg-vorbis-chained-meta.txt | 17 ++
14 files changed, 465 insertions(+), 10 deletions(-)
create mode 100644 tests/api/api-dump-stream-meta-test.c
create mode 100644 tests/fate/ogg-flac.mak
create mode 100644 tests/fate/ogg-opus.mak
create mode 100644 tests/fate/ogg-vorbis.mak
create mode 100644 tests/ref/fate/ogg-flac-chained-meta.txt
create mode 100644 tests/ref/fate/ogg-opus-chained-meta.txt
create mode 100644 tests/ref/fate/ogg-vorbis-chained-meta.txt
--
2.39.5 (Apple Git-154)
More information about the ffmpeg-devel
mailing list