diff options
author | Peter Ross <pross@xvid.org> | 2008-08-04 11:35:07 +0400 |
---|---|---|
committer | Peter Ross <pross@xvid.org> | 2008-08-04 11:35:07 +0400 |
commit | 51c3861e1663a1e4e9ea465176e68d82e98cc6e9 (patch) | |
tree | f2fc470ee40dc0cc666d1088bc901d223f50e2d3 /libavformat/daud.c | |
parent | bb89b0bc9d82153712c13db00b80e2edcbf697a4 (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.c | 35 |
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 |