yading@11: /* yading@11: * Copyright (c) 2011 Miroslav Slugeň yading@11: * yading@11: * This file is part of FFmpeg. yading@11: * yading@11: * FFmpeg is free software; you can redistribute it and/or yading@11: * modify it under the terms of the GNU Lesser General Public yading@11: * License as published by the Free Software Foundation; either yading@11: * version 2.1 of the License, or (at your option) any later version. yading@11: * yading@11: * FFmpeg is distributed in the hope that it will be useful, yading@11: * but WITHOUT ANY WARRANTY; without even the implied warranty of yading@11: * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU yading@11: * Lesser General Public License for more details. yading@11: * yading@11: * You should have received a copy of the GNU Lesser General Public yading@11: * License along with FFmpeg; if not, write to the Free Software yading@11: * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA yading@11: */ yading@11: yading@11: #include "avformat.h" yading@11: #include "rtpdec_formats.h" yading@11: yading@11: #define RTP_G726_HANDLER(bitrate) \ yading@11: static int g726_ ## bitrate ##_init(AVFormatContext *s, int st_index, PayloadContext *data) \ yading@11: { \ yading@11: AVStream *stream = s->streams[st_index]; \ yading@11: AVCodecContext *codec = stream->codec; \ yading@11: \ yading@11: codec->bits_per_coded_sample = bitrate/8; \ yading@11: codec->bit_rate = codec->bits_per_coded_sample * codec->sample_rate; \ yading@11: \ yading@11: return 0; \ yading@11: } \ yading@11: \ yading@11: RTPDynamicProtocolHandler ff_g726_ ## bitrate ## _dynamic_handler = { \ yading@11: .enc_name = "G726-" #bitrate, \ yading@11: .codec_type = AVMEDIA_TYPE_AUDIO, \ yading@11: .codec_id = AV_CODEC_ID_ADPCM_G726, \ yading@11: .init = g726_ ## bitrate ## _init, \ yading@11: } yading@11: yading@11: RTP_G726_HANDLER(16); yading@11: RTP_G726_HANDLER(24); yading@11: RTP_G726_HANDLER(32); yading@11: RTP_G726_HANDLER(40);