Mercurial > libavformat.hg
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