[FFmpeg-devel] [PATCHv4 0/7] vorbis: update metadata mid-stream
Ben Boeckel
mathstuf at gmail.com
Mon Nov 18 02:36:24 CET 2013
Ogg/vorbis streams from MPD contain metadata updates mid-stream and need to be
plumbed from ffmpeg. A new side_data type is added for the data. The ogg
decoder in avformat needs a way for codecs to plumb up the metadata and then,
finally, vorbis fills it in.
Patch 4 has ffmpeg combine multiple tags with the same name with semicolon
separators. This is to prevent tags such as performer from only showing up as
the last one in the file. An example file can be retrieved from my site[1].
When played using this branch, the following is output as metadata:
RELEASETYPE : album;remix
PERFORMER : prophetik (saxophone);Usa (percussion)
without the patch, the following is shown instead:
RELEASETYPE : remix
PERFORMER : Usa (percussion)
The file is from the OverClocked Remix album Teen Agent.
Testing with flac, mp3 (via lame; twolame untested), and ogg/opus in MPD (and
one mp3 stream from somafm) shows no mid-stream tag updates, only ICY Info, so
I have not updated these decoders. If other formats are found, the
av_packet_pack_dictionary function should make things easy.
The last patch contains an entry to doc/APIchanges.
[1]http://benboeckel.net/files/multi-performer.ogg
[2]http://teenagent.ocremix.org/
Ben Boeckel (7):
avcodec: add side_data type for updated metadata
avpacket: add pack/unpack functions for AVDictionary
ogg: allow streams to update metadata
vorbis: append data from tags together
vorbis: extract metadata from the middle of a stream
avcodec/utils: use the unpack_dictionary function
Document new APIs for av_packet_{un,}pack_dictionary()
doc/APIchanges | 5 +++
libavcodec/avcodec.h | 25 ++++++++++++++
libavcodec/avpacket.c | 58 ++++++++++++++++++++++++++++++++
libavcodec/utils.c | 25 +++-----------
libavformat/oggdec.c | 26 ++++++++++++---
libavformat/oggdec.h | 2 ++
libavformat/oggparsevorbis.c | 78 +++++++++++++++++++++++++++++++++++---------
7 files changed, 177 insertions(+), 42 deletions(-)
--
1.8.4.2
More information about the ffmpeg-devel
mailing list