diff --git a/libavformat/Makefile b/libavformat/Makefile index b42c823fe9..7e7a7fbaa5 100644 --- a/libavformat/Makefile +++ b/libavformat/Makefile @@ -111,8 +111,8 @@ OBJS-$(CONFIG_CONCAT_DEMUXER) += concatdec.o OBJS-$(CONFIG_CRC_MUXER) += crcenc.o OBJS-$(CONFIG_DATA_DEMUXER) += rawdec.o OBJS-$(CONFIG_DATA_MUXER) += rawdec.o -OBJS-$(CONFIG_DAUD_DEMUXER) += daud.o -OBJS-$(CONFIG_DAUD_MUXER) += daud.o +OBJS-$(CONFIG_DAUD_DEMUXER) += dauddec.o +OBJS-$(CONFIG_DAUD_MUXER) += daudenc.o OBJS-$(CONFIG_DFA_DEMUXER) += dfa.o OBJS-$(CONFIG_DIRAC_DEMUXER) += diracdec.o rawdec.o OBJS-$(CONFIG_DIRAC_MUXER) += rawenc.o diff --git a/libavformat/daud.c b/libavformat/dauddec.c similarity index 66% rename from libavformat/daud.c rename to libavformat/dauddec.c index 6983785f3c..30d1200c0e 100644 --- a/libavformat/daud.c +++ b/libavformat/dauddec.c @@ -50,28 +50,6 @@ 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) -{ - if (pkt->size > 65535) { - av_log(s, AV_LOG_ERROR, - "Packet size too large for s302m. (%d > 65535)\n", pkt->size); - return -1; - } - avio_wb16(s->pb, pkt->size); - avio_wb16(s->pb, 0x8010); // unknown - avio_write(s->pb, pkt->data, pkt->size); - return 0; -} - -#if CONFIG_DAUD_DEMUXER AVInputFormat ff_daud_demuxer = { .name = "daud", .long_name = NULL_IF_CONFIG_SMALL("D-Cinema audio"), @@ -79,17 +57,3 @@ AVInputFormat ff_daud_demuxer = { .read_packet = daud_packet, .extensions = "302,daud", }; -#endif - -#if CONFIG_DAUD_MUXER -AVOutputFormat ff_daud_muxer = { - .name = "daud", - .long_name = NULL_IF_CONFIG_SMALL("D-Cinema audio"), - .extensions = "302", - .audio_codec = AV_CODEC_ID_PCM_S24DAUD, - .video_codec = AV_CODEC_ID_NONE, - .write_header = daud_write_header, - .write_packet = daud_write_packet, - .flags = AVFMT_NOTIMESTAMPS, -}; -#endif diff --git a/libavformat/daudenc.c b/libavformat/daudenc.c new file mode 100644 index 0000000000..99b18d35aa --- /dev/null +++ b/libavformat/daudenc.c @@ -0,0 +1,54 @@ +/* + * D-Cinema audio muxer + * Copyright (c) 2005 Reimar Döffinger + * + * This file is part of FFmpeg. + * + * FFmpeg is free software; you can redistribute it and/or + * modify it under the terms of the GNU Lesser General Public + * License as published by the Free Software Foundation; either + * version 2.1 of the License, or (at your option) any later version. + * + * FFmpeg is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General Public + * License along with FFmpeg; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA + */ + +#include "avformat.h" + +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) +{ + if (pkt->size > 65535) { + av_log(s, AV_LOG_ERROR, + "Packet size too large for s302m. (%d > 65535)\n", pkt->size); + return -1; + } + avio_wb16(s->pb, pkt->size); + avio_wb16(s->pb, 0x8010); // unknown + avio_write(s->pb, pkt->data, pkt->size); + return 0; +} + +AVOutputFormat ff_daud_muxer = { + .name = "daud", + .long_name = NULL_IF_CONFIG_SMALL("D-Cinema audio"), + .extensions = "302", + .audio_codec = AV_CODEC_ID_PCM_S24DAUD, + .video_codec = AV_CODEC_ID_NONE, + .write_header = daud_write_header, + .write_packet = daud_write_packet, + .flags = AVFMT_NOTIMESTAMPS, +};