Browse code

Write channel_layout for multichannel aif files.

Carl Eugen Hoyos authored on 2011/05/17 08:56:01
Showing 2 changed files
... ...
@@ -24,7 +24,7 @@ OBJS-$(CONFIG_AC3_MUXER)                 += rawenc.o
24 24
 OBJS-$(CONFIG_ADTS_MUXER)                += adtsenc.o
25 25
 OBJS-$(CONFIG_AEA_DEMUXER)               += aea.o pcm.o
26 26
 OBJS-$(CONFIG_AIFF_DEMUXER)              += aiffdec.o riff.o pcm.o isom.o
27
-OBJS-$(CONFIG_AIFF_MUXER)                += aiffenc.o riff.o
27
+OBJS-$(CONFIG_AIFF_MUXER)                += aiffenc.o riff.o isom.o
28 28
 OBJS-$(CONFIG_AMR_DEMUXER)               += amr.o
29 29
 OBJS-$(CONFIG_AMR_MUXER)                 += amr.o
30 30
 OBJS-$(CONFIG_ANM_DEMUXER)               += anm.o
... ...
@@ -22,6 +22,7 @@
22 22
 #include "avformat.h"
23 23
 #include "aiff.h"
24 24
 #include "avio_internal.h"
25
+#include "isom.h"
25 26
 
26 27
 typedef struct {
27 28
     int64_t form;
... ...
@@ -61,6 +62,12 @@ static int aiff_write_header(AVFormatContext *s)
61 61
         avio_wb32(pb, 0xA2805140);
62 62
     }
63 63
 
64
+    if (enc->channels > 2 && enc->channel_layout) {
65
+        ffio_wfourcc(pb, "CHAN");
66
+        avio_wb32(pb, 12);
67
+        ff_mov_write_chan(pb, enc->channel_layout);
68
+    }
69
+
64 70
     /* Common chunk */
65 71
     ffio_wfourcc(pb, "COMM");
66 72
     avio_wb32(pb, aifc ? 24 : 18); /* size */