X-Git-Url: https://git.sesse.net/?a=blobdiff_plain;ds=sidebyside;f=libavformat%2Fwavdec.c;h=1b131ee2c1cb9401a6b865a2556df5c4717ea8d9;hb=208ae228fa129041dc6671dcc45c025a11bf2cc6;hp=e280be4d44e650895db7a5ef7473960c9a4efa61;hpb=5c1aafff2d844b177b0b20db4a38d8460992558b;p=ffmpeg diff --git a/libavformat/wavdec.c b/libavformat/wavdec.c index e280be4d44e..1b131ee2c1c 100644 --- a/libavformat/wavdec.c +++ b/libavformat/wavdec.c @@ -34,6 +34,7 @@ #include "avformat.h" #include "avio.h" #include "avio_internal.h" +#include "id3v2.h" #include "internal.h" #include "metadata.h" #include "pcm.h" @@ -128,7 +129,7 @@ static int64_t find_tag(WAVDemuxContext * wav, AVIOContext *pb, uint32_t tag1) return size; } -static int wav_probe(AVProbeData *p) +static int wav_probe(const AVProbeData *p) { /* check file header */ if (p->buf_size <= 32) @@ -500,6 +501,18 @@ static int wav_read_header(AVFormatContext *s) ff_read_riff_info(s, size - 4); } break; + case MKTAG('I', 'D', '3', ' '): + case MKTAG('i', 'd', '3', ' '): { + ID3v2ExtraMeta *id3v2_extra_meta = NULL; + ff_id3v2_read_dict(pb, &s->internal->id3v2_meta, ID3v2_DEFAULT_MAGIC, &id3v2_extra_meta); + if (id3v2_extra_meta) { + ff_id3v2_parse_apic(s, &id3v2_extra_meta); + ff_id3v2_parse_chapters(s, &id3v2_extra_meta); + ff_id3v2_parse_priv(s, &id3v2_extra_meta); + } + ff_id3v2_free_extra_meta(&id3v2_extra_meta); + } + break; } /* seek to next tag unless we know that we'll run into EOF */ @@ -761,7 +774,7 @@ AVInputFormat ff_wav_demuxer = { #endif /* CONFIG_WAV_DEMUXER */ #if CONFIG_W64_DEMUXER -static int w64_probe(AVProbeData *p) +static int w64_probe(const AVProbeData *p) { if (p->buf_size <= 40) return 0;