[FFmpeg-devel] [PATCH]Allow to overwrite mov (audio) tags

Carl Eugen Hoyos cehoyos at ag.or.at
Tue Jan 3 03:30:03 CET 2012


Hi!

Attached patch fixes ticket #867 for me, does not seems to break -acodec copy.

Please review, Carl Eugen
-------------- next part --------------
diff --git a/libavformat/isom.c b/libavformat/isom.c
index 7cadcef..73cc7d2 100644
--- a/libavformat/isom.c
+++ b/libavformat/isom.c
@@ -247,6 +247,18 @@ const AVCodecTag codec_movaudio_tags[] = {
     { CODEC_ID_MP3,             0x6D730055                },
     { CODEC_ID_NELLYMOSER,      MKTAG('n', 'm', 'o', 's') }, /* Flash Media Server */
     { CODEC_ID_PCM_ALAW,        MKTAG('a', 'l', 'a', 'w') },
+    { CODEC_ID_PCM_S16LE,       MKTAG('l', 'p', 'c', 'm') },
+    { CODEC_ID_PCM_F32BE,       MKTAG('l', 'p', 'c', 'm') },
+    { CODEC_ID_PCM_F32LE,       MKTAG('l', 'p', 'c', 'm') },
+    { CODEC_ID_PCM_F64BE,       MKTAG('l', 'p', 'c', 'm') },
+    { CODEC_ID_PCM_F64LE,       MKTAG('l', 'p', 'c', 'm') },
+    { CODEC_ID_PCM_S16BE,       MKTAG('l', 'p', 'c', 'm') },
+    { CODEC_ID_PCM_S24BE,       MKTAG('l', 'p', 'c', 'm') },
+    { CODEC_ID_PCM_S24LE,       MKTAG('l', 'p', 'c', 'm') },
+    { CODEC_ID_PCM_S32BE,       MKTAG('l', 'p', 'c', 'm') },
+    { CODEC_ID_PCM_S32LE,       MKTAG('l', 'p', 'c', 'm') },
+    { CODEC_ID_PCM_S8,          MKTAG('l', 'p', 'c', 'm') },
+    { CODEC_ID_PCM_U8,          MKTAG('l', 'p', 'c', 'm') },
     { CODEC_ID_PCM_F32BE,       MKTAG('f', 'l', '3', '2') },
     { CODEC_ID_PCM_F32LE,       MKTAG('f', 'l', '3', '2') },
     { CODEC_ID_PCM_F64BE,       MKTAG('f', 'l', '6', '4') },
@@ -254,7 +266,6 @@ const AVCodecTag codec_movaudio_tags[] = {
     { CODEC_ID_PCM_MULAW,       MKTAG('u', 'l', 'a', 'w') },
     { CODEC_ID_PCM_S16BE,       MKTAG('t', 'w', 'o', 's') },
     { CODEC_ID_PCM_S16LE,       MKTAG('s', 'o', 'w', 't') },
-    { CODEC_ID_PCM_S16LE,       MKTAG('l', 'p', 'c', 'm') },
     { CODEC_ID_PCM_S24BE,       MKTAG('i', 'n', '2', '4') },
     { CODEC_ID_PCM_S24LE,       MKTAG('i', 'n', '2', '4') },
     { CODEC_ID_PCM_S32BE,       MKTAG('i', 'n', '3', '2') },
diff --git a/libavformat/movenc.c b/libavformat/movenc.c
index e5f0c4c..7815cd7 100644
--- a/libavformat/movenc.c
+++ b/libavformat/movenc.c
@@ -464,8 +464,6 @@ static int mov_write_audio_tag(AVIOContext *pb, MOVTrack *track)
     uint32_t tag = track->tag;
 
     if (track->mode == MODE_MOV) {
-        if (mov_get_lpcm_flags(track->enc->codec_id))
-            tag = AV_RL32("lpcm");
         version = 2;
     }
 
@@ -740,7 +738,11 @@ static int mov_get_codec_tag(AVFormatContext *s, MOVTrack *track)
                            "the file may be unplayable!\n");
             }
         } else if (track->enc->codec_type == AVMEDIA_TYPE_AUDIO) {
+            if (track->enc->codec_tag) {
+                tag = track->enc->codec_tag;
+            } else {
             tag = ff_codec_get_tag(codec_movaudio_tags, track->enc->codec_id);
+            }
             if (!tag) { // if no mac fcc found, try with Microsoft tags
                 int ms_tag = ff_codec_get_tag(ff_codec_wav_tags, track->enc->codec_id);
                 if (ms_tag) {


More information about the ffmpeg-devel mailing list