Browse code

Add D-Cinema audio muxer

Originally committed as revision 14531 to svn://svn.ffmpeg.org/ffmpeg/trunk

Peter Ross authored on 2008/08/04 16:35:07
Showing 4 changed files
... ...
@@ -127,6 +127,7 @@ version <next>
127 127
 - Motion Pixels Video decoder
128 128
 - Motion Pixels MVI demuxer
129 129
 - removed animated GIF decoder/demuxer
130
+- D-Cinema audio muxer
130 131
 
131 132
 version 0.4.9-pre1:
132 133
 
... ...
@@ -33,6 +33,7 @@ OBJS-$(CONFIG_BFI_DEMUXER)               += bfi.o
33 33
 OBJS-$(CONFIG_C93_DEMUXER)               += c93.o vocdec.o voc.o
34 34
 OBJS-$(CONFIG_CRC_MUXER)                 += crcenc.o
35 35
 OBJS-$(CONFIG_DAUD_DEMUXER)              += daud.o
36
+OBJS-$(CONFIG_DAUD_MUXER)                += daud.o
36 37
 OBJS-$(CONFIG_DIRAC_DEMUXER)             += raw.o
37 38
 OBJS-$(CONFIG_DIRAC_MUXER)               += raw.o
38 39
 OBJS-$(CONFIG_DSICIN_DEMUXER)            += dsicin.o
... ...
@@ -68,7 +68,7 @@ void av_register_all(void)
68 68
     REGISTER_DEMUXER  (BFI, bfi);
69 69
     REGISTER_DEMUXER  (C93, c93);
70 70
     REGISTER_MUXER    (CRC, crc);
71
-    REGISTER_DEMUXER  (DAUD, daud);
71
+    REGISTER_MUXDEMUX (DAUD, daud);
72 72
     REGISTER_MUXDEMUX (DIRAC, dirac);
73 73
     REGISTER_DEMUXER  (DSICIN, dsicin);
74 74
     REGISTER_MUXDEMUX (DTS, dts);
... ...
@@ -47,6 +47,24 @@ static int daud_packet(AVFormatContext *s, AVPacket *pkt) {
47 47
     return ret;
48 48
 }
49 49
 
50
+static int daud_write_header(struct AVFormatContext *s)
51
+{
52
+    AVCodecContext *codec = s->streams[0]->codec;
53
+    if (codec->channels!=6 || codec->sample_rate!=96000)
54
+        return -1;
55
+    return 0;
56
+}
57
+
58
+static int daud_write_packet(struct AVFormatContext *s, AVPacket *pkt)
59
+{
60
+    put_be16(s->pb, pkt->size);
61
+    put_be16(s->pb, 0x8010); // unknown
62
+    put_buffer(s->pb, pkt->data, pkt->size);
63
+    put_flush_packet(s->pb);
64
+    return 0;
65
+}
66
+
67
+#if CONFIG_DAUD_DEMUXER
50 68
 AVInputFormat daud_demuxer = {
51 69
     "daud",
52 70
     NULL_IF_CONFIG_SMALL("D-Cinema audio format"),
... ...
@@ -58,3 +76,20 @@ AVInputFormat daud_demuxer = {
58 58
     NULL,
59 59
     .extensions = "302",
60 60
 };
61
+#endif
62
+
63
+#ifdef CONFIG_DAUD_MUXER
64
+AVOutputFormat daud_muxer =
65
+{
66
+    "daud",
67
+    NULL_IF_CONFIG_SMALL("D-Cinema audio format"),
68
+    NULL,
69
+    "302",
70
+    0,
71
+    CODEC_ID_PCM_S24DAUD,
72
+    CODEC_ID_NONE,
73
+    daud_write_header,
74
+    daud_write_packet,
75
+    .flags= AVFMT_NOTIMESTAMPS,
76
+};
77
+#endif