summaryrefslogtreecommitdiff
path: root/libavformat/daud.c
diff options
context:
space:
mode:
authorPeter Ross <pross@xvid.org>2008-08-04 07:35:07 +0000
committerPeter Ross <pross@xvid.org>2008-08-04 07:35:07 +0000
commit51c3861e1663a1e4e9ea465176e68d82e98cc6e9 (patch)
treef2fc470ee40dc0cc666d1088bc901d223f50e2d3 /libavformat/daud.c
parentbb89b0bc9d82153712c13db00b80e2edcbf697a4 (diff)
Add D-Cinema audio muxer
Originally committed as revision 14531 to svn://svn.ffmpeg.org/ffmpeg/trunk
Diffstat (limited to 'libavformat/daud.c')
-rw-r--r--libavformat/daud.c35
1 files changed, 35 insertions, 0 deletions
diff --git a/libavformat/daud.c b/libavformat/daud.c
index 5f04e7aaee..c0626dfb24 100644
--- a/libavformat/daud.c
+++ b/libavformat/daud.c
@@ -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