diff daud.c @ 3627:0dd9806a26ea libavformat

Add D-Cinema audio muxer
author pross
date Mon, 04 Aug 2008 07:35:07 +0000
parents 7a0230981402
children 1d3d17de20ba
line wrap: on
line diff
--- a/daud.c	Sun Aug 03 21:24:30 2008 +0000
+++ b/daud.c	Mon Aug 04 07:35:07 2008 +0000
@@ -47,6 +47,24 @@
     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 @@
     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