* commit '0955e57ad07640574fc20ce0bea3c0b83982ada1': daud: split muxer and demuxer Conflicts: libavformat/Makefile Merged-by: Michael Niedermayer <michaelni@gmx.at>tags/n2.3
| @@ -111,8 +111,8 @@ OBJS-$(CONFIG_CONCAT_DEMUXER) += concatdec.o | |||||
| OBJS-$(CONFIG_CRC_MUXER) += crcenc.o | OBJS-$(CONFIG_CRC_MUXER) += crcenc.o | ||||
| OBJS-$(CONFIG_DATA_DEMUXER) += rawdec.o | OBJS-$(CONFIG_DATA_DEMUXER) += rawdec.o | ||||
| OBJS-$(CONFIG_DATA_MUXER) += 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_DFA_DEMUXER) += dfa.o | ||||
| OBJS-$(CONFIG_DIRAC_DEMUXER) += diracdec.o rawdec.o | OBJS-$(CONFIG_DIRAC_DEMUXER) += diracdec.o rawdec.o | ||||
| OBJS-$(CONFIG_DIRAC_MUXER) += rawenc.o | OBJS-$(CONFIG_DIRAC_MUXER) += rawenc.o | ||||
| @@ -50,28 +50,6 @@ static int daud_packet(AVFormatContext *s, AVPacket *pkt) { | |||||
| return ret; | 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 = { | AVInputFormat ff_daud_demuxer = { | ||||
| .name = "daud", | .name = "daud", | ||||
| .long_name = NULL_IF_CONFIG_SMALL("D-Cinema audio"), | .long_name = NULL_IF_CONFIG_SMALL("D-Cinema audio"), | ||||
| @@ -79,17 +57,3 @@ AVInputFormat ff_daud_demuxer = { | |||||
| .read_packet = daud_packet, | .read_packet = daud_packet, | ||||
| .extensions = "302,daud", | .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 | |||||
| @@ -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, | |||||
| }; | |||||