[SCM] libav/experimental: support pcm_f32/64le in mov

siretart at users.alioth.debian.org siretart at users.alioth.debian.org
Sun Jun 30 16:55:05 UTC 2013


The following commit has been merged in the experimental branch:
commit 7c4b7d0f41646039fcbda6a8093a25d493f084ff
Author: Baptiste Coudurier <baptiste.coudurier at gmail.com>
Date:   Sun Nov 29 02:27:08 2009 +0000

    support pcm_f32/64le in mov
    
    Originally committed as revision 20649 to svn://svn.ffmpeg.org/ffmpeg/trunk

diff --git a/libavformat/isom.c b/libavformat/isom.c
index ae16532..714b6eb 100644
--- a/libavformat/isom.c
+++ b/libavformat/isom.c
@@ -185,7 +185,9 @@ const AVCodecTag codec_movaudio_tags[] = {
     { CODEC_ID_PCM_S16LE, MKTAG('s', 'o', 'w', 't') }, /*  */
     { CODEC_ID_PCM_S16LE, 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') },
+    { CODEC_ID_PCM_F64LE, MKTAG('f', 'l', '6', '4') },
     { CODEC_ID_PCM_S8,    MKTAG('s', 'o', 'w', 't') },
     { CODEC_ID_PCM_U8,    MKTAG('r', 'a', 'w', ' ') }, /* 8 bits unsigned */
     { CODEC_ID_PCM_U8,    MKTAG('N', 'O', 'N', 'E') }, /* uncompressed */
diff --git a/libavformat/movenc.c b/libavformat/movenc.c
index 0e954a7..80c9622 100644
--- a/libavformat/movenc.c
+++ b/libavformat/movenc.c
@@ -360,6 +360,14 @@ static int mov_write_esds_tag(ByteIOContext *pb, MOVTrack *track) // Basic
     return updateSize(pb, pos);
 }
 
+static int mov_pcm_le_gt16(enum CodecID codec_id)
+{
+    return codec_id == CODEC_ID_PCM_S24LE ||
+           codec_id == CODEC_ID_PCM_S32LE ||
+           codec_id == CODEC_ID_PCM_F32LE ||
+           codec_id == CODEC_ID_PCM_F64LE;
+}
+
 static int mov_write_wave_tag(ByteIOContext *pb, MOVTrack *track)
 {
     int64_t pos = url_ftell(pb);
@@ -377,8 +385,7 @@ static int mov_write_wave_tag(ByteIOContext *pb, MOVTrack *track)
         put_tag(pb, "mp4a");
         put_be32(pb, 0);
         mov_write_esds_tag(pb, track);
-    } else if (track->enc->codec_id == CODEC_ID_PCM_S24LE ||
-               track->enc->codec_id == CODEC_ID_PCM_S32LE) {
+    } else if (mov_pcm_le_gt16(track->enc->codec_id)) {
         mov_write_enda_tag(pb);
     } else if (track->enc->codec_id == CODEC_ID_AMR_NB) {
         mov_write_amr_tag(pb, track);
@@ -442,9 +449,7 @@ static int mov_write_audio_tag(ByteIOContext *pb, MOVTrack *track)
             if (mov_get_lpcm_flags(track->enc->codec_id))
                 tag = AV_RL32("lpcm");
             version = 2;
-        } else if (track->audio_vbr ||
-                   track->enc->codec_id == CODEC_ID_PCM_S32LE ||
-                   track->enc->codec_id == CODEC_ID_PCM_S24LE) {
+        } else if (track->audio_vbr || mov_pcm_le_gt16(track->enc->codec_id)) {
             version = 1;
         }
     }
@@ -505,9 +510,8 @@ static int mov_write_audio_tag(ByteIOContext *pb, MOVTrack *track)
        (track->enc->codec_id == CODEC_ID_AAC ||
         track->enc->codec_id == CODEC_ID_AC3 ||
         track->enc->codec_id == CODEC_ID_AMR_NB ||
-        track->enc->codec_id == CODEC_ID_PCM_S24LE ||
-        track->enc->codec_id == CODEC_ID_PCM_S32LE ||
-        track->enc->codec_id == CODEC_ID_ALAC))
+        track->enc->codec_id == CODEC_ID_ALAC ||
+        mov_pcm_le_gt16(track->enc->codec_id)))
         mov_write_wave_tag(pb, track);
     else if(track->tag == MKTAG('m','p','4','a'))
         mov_write_esds_tag(pb, track);

-- 
Libav/FFmpeg packaging



More information about the pkg-multimedia-commits mailing list