]> rtime.felk.cvut.cz Git - frescor/ffmpeg.git/commitdiff
Add D-Cinema audio muxer
authorpross <pross@9553f0bf-9b14-0410-a0b8-cfaf0461ba5b>
Mon, 4 Aug 2008 07:35:07 +0000 (07:35 +0000)
committerpross <pross@9553f0bf-9b14-0410-a0b8-cfaf0461ba5b>
Mon, 4 Aug 2008 07:35:07 +0000 (07:35 +0000)
git-svn-id: file:///var/local/repositories/ffmpeg/trunk@14531 9553f0bf-9b14-0410-a0b8-cfaf0461ba5b

Changelog
libavformat/Makefile
libavformat/allformats.c
libavformat/daud.c

index 0adba1f4951330a86f128b58fd63dfe1b3145728..fb422e1795cd71b4f4be1bdb3fd6a26eae8540cc 100644 (file)
--- a/Changelog
+++ b/Changelog
@@ -127,6 +127,7 @@ version <next>
 - Motion Pixels Video decoder
 - Motion Pixels MVI demuxer
 - removed animated GIF decoder/demuxer
+- D-Cinema audio muxer
 
 version 0.4.9-pre1:
 
index 2d681a707f7ebbce4391bfd1ac7b0d9489ba8b55..8c62a366651a3b95881c8385bb92b27d452c0a35 100644 (file)
@@ -33,6 +33,7 @@ OBJS-$(CONFIG_BFI_DEMUXER)               += bfi.o
 OBJS-$(CONFIG_C93_DEMUXER)               += c93.o vocdec.o voc.o
 OBJS-$(CONFIG_CRC_MUXER)                 += crcenc.o
 OBJS-$(CONFIG_DAUD_DEMUXER)              += daud.o
+OBJS-$(CONFIG_DAUD_MUXER)                += daud.o
 OBJS-$(CONFIG_DIRAC_DEMUXER)             += raw.o
 OBJS-$(CONFIG_DIRAC_MUXER)               += raw.o
 OBJS-$(CONFIG_DSICIN_DEMUXER)            += dsicin.o
index 6441ca996c46ffebb7b273c7752972fe447d54f8..eab3a924f7499e73fe8f61b416317efce180c0c5 100644 (file)
@@ -68,7 +68,7 @@ void av_register_all(void)
     REGISTER_DEMUXER  (BFI, bfi);
     REGISTER_DEMUXER  (C93, c93);
     REGISTER_MUXER    (CRC, crc);
-    REGISTER_DEMUXER  (DAUD, daud);
+    REGISTER_MUXDEMUX (DAUD, daud);
     REGISTER_MUXDEMUX (DIRAC, dirac);
     REGISTER_DEMUXER  (DSICIN, dsicin);
     REGISTER_MUXDEMUX (DTS, dts);
index 5f04e7aaeef07a5064628ffab628160aa64e3c06..c0626dfb240c7d8f90f0e8e6dffa2c923e0be3a9 100644 (file)
@@ -47,6 +47,24 @@ static int daud_packet(AVFormatContext *s, AVPacket *pkt) {
     return ret;
 }
 
+static int daud_write_header(struct AVFormatContext *s)
+{
+    AVCodecContext *codec = s->streams[0]->codec;
+    if (codec->channels!=6 || codec->sample_rate!=96000)
+        return -1;
+    return 0;
+}
+
+static int daud_write_packet(struct AVFormatContext *s, AVPacket *pkt)
+{
+    put_be16(s->pb, pkt->size);
+    put_be16(s->pb, 0x8010); // unknown
+    put_buffer(s->pb, pkt->data, pkt->size);
+    put_flush_packet(s->pb);
+    return 0;
+}
+
+#if CONFIG_DAUD_DEMUXER
 AVInputFormat daud_demuxer = {
     "daud",
     NULL_IF_CONFIG_SMALL("D-Cinema audio format"),
@@ -58,3 +76,20 @@ AVInputFormat daud_demuxer = {
     NULL,
     .extensions = "302",
 };
+#endif
+
+#ifdef CONFIG_DAUD_MUXER
+AVOutputFormat daud_muxer =
+{
+    "daud",
+    NULL_IF_CONFIG_SMALL("D-Cinema audio format"),
+    NULL,
+    "302",
+    0,
+    CODEC_ID_PCM_S24DAUD,
+    CODEC_ID_NONE,
+    daud_write_header,
+    daud_write_packet,
+    .flags= AVFMT_NOTIMESTAMPS,
+};
+#endif