diff mbox

[FFmpeg-devel,v1] avformat/wavdec.c: copy id3 metadata to format metadata and stream side data

Message ID 20191020053355.29223-1-junli1026@gmail.com
State Superseded
Headers show

Commit Message

Jun Li Oct. 20, 2019, 5:33 a.m. UTC
Enhancement #7803
Copy id3 metadata to format meta data and steams side data.

Signed-off-by: Jun Li <junli1026@gmail.com>
---
 libavformat/wavdec.c | 10 ++++++++++
 1 file changed, 10 insertions(+)

Comments

Moritz Barsnick Oct. 20, 2019, 1:11 p.m. UTC | #1
On Sat, Oct 19, 2019 at 22:33:55 -0700, Jun Li wrote:
> +        ret = ff_replaygain_export(st, s->internal->id3v2_meta);

In libavformat/Makefile, CONFIG_W64_DEMUXER and CONFIG_WAV_DEMUXER now
probably need to depend on replaygain.o.

(I made the same mistake recently.)

Cheers,
Moritz
Jun Li Oct. 20, 2019, 11:21 p.m. UTC | #2
On Sun, Oct 20, 2019 at 6:11 AM Moritz Barsnick <barsnick@gmx.net> wrote:

> On Sat, Oct 19, 2019 at 22:33:55 -0700, Jun Li wrote:
> > +        ret = ff_replaygain_export(st, s->internal->id3v2_meta);
>
> In libavformat/Makefile, CONFIG_W64_DEMUXER and CONFIG_WAV_DEMUXER now
> probably need to depend on replaygain.o.
>
> Thanks for review, Moritz.
Yes, it breaks the standalone build. Version 2 is sent out to fix it.
Thanks!

Best regards,
-Jun


> (I made the same mistake recently.)
>
> Cheers,
> Moritz
> _______________________________________________
> ffmpeg-devel mailing list
> ffmpeg-devel@ffmpeg.org
> https://ffmpeg.org/mailman/listinfo/ffmpeg-devel
>
> To unsubscribe, visit link above, or email
> ffmpeg-devel-request@ffmpeg.org with subject "unsubscribe".
diff mbox

Patch

diff --git a/libavformat/wavdec.c b/libavformat/wavdec.c
index 52194f54ef..d82bdaaa66 100644
--- a/libavformat/wavdec.c
+++ b/libavformat/wavdec.c
@@ -41,6 +41,7 @@ 
 #include "riff.h"
 #include "w64.h"
 #include "spdif.h"
+#include "replaygain.h"
 
 typedef struct WAVDemuxContext {
     const AVClass *class;
@@ -537,6 +538,15 @@  break_loop:
 
     avio_seek(pb, data_ofs, SEEK_SET);
 
+    if (s->internal->id3v2_meta) {
+        ret = av_dict_copy(&s->metadata, s->internal->id3v2_meta, 0);
+        if (ret < 0)
+            return ret;
+        ret = ff_replaygain_export(st, s->internal->id3v2_meta);
+        if (ret < 0)
+            return ret;
+    }
+
     if (data_size > (INT64_MAX>>3)) {
         av_log(s, AV_LOG_WARNING, "Data size %"PRId64" is too large\n", data_size);
         data_size = 0;