Ticket #611: 0001-libavformat-add-support-for-G726-audio-decoder-in-RT.patch
| File 0001-libavformat-add-support-for-G726-audio-decoder-in-RT.patch, 5.1 KB (added by , 15 years ago) |
|---|
-
libavformat/Makefile
From 5d61bfba320bca3037a692c9c45f4d8ab6cd12a9 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Miroslav=20Sluge=C5=88?= <thunder.m@seznam.cz> Date: Mon, 7 Nov 2011 11:38:08 +0100 Subject: [PATCH] libavformat: add support for G726 audio decoder in RTP and RTSP streams, fixes Ticket611 --- libavformat/Makefile | 1 + libavformat/rtpdec.c | 5 +++ libavformat/rtpdec_formats.h | 4 ++ libavformat/rtpdec_g726.c | 75 ++++++++++++++++++++++++++++++++++++++++++ 4 files changed, 85 insertions(+), 0 deletions(-) create mode 100644 libavformat/rtpdec_g726.c diff --git a/libavformat/Makefile b/libavformat/Makefile index 264ab92..420143d 100644
a b OBJS-$(CONFIG_RTPDEC) += rdt.o \ 261 261 rtpdec.o \ 262 262 rtpdec_amr.o \ 263 263 rtpdec_asf.o \ 264 rtpdec_g726.o \ 264 265 rtpdec_h263.o \ 265 266 rtpdec_h264.o \ 266 267 rtpdec_latm.o \ -
libavformat/rtpdec.c
diff --git a/libavformat/rtpdec.c b/libavformat/rtpdec.c index 01902a7..20e5bd7 100644
a b void av_register_rtp_dynamic_payload_handlers(void) 83 83 ff_register_dynamic_payload_handler(&ff_qt_rtp_vid_handler); 84 84 ff_register_dynamic_payload_handler(&ff_quicktime_rtp_aud_handler); 85 85 ff_register_dynamic_payload_handler(&ff_quicktime_rtp_vid_handler); 86 87 ff_register_dynamic_payload_handler(&ff_g726_16_dynamic_handler); 88 ff_register_dynamic_payload_handler(&ff_g726_24_dynamic_handler); 89 ff_register_dynamic_payload_handler(&ff_g726_32_dynamic_handler); 90 ff_register_dynamic_payload_handler(&ff_g726_40_dynamic_handler); 86 91 } 87 92 88 93 RTPDynamicProtocolHandler *ff_rtp_handler_find_by_name(const char *name, -
libavformat/rtpdec_formats.h
diff --git a/libavformat/rtpdec_formats.h b/libavformat/rtpdec_formats.h index 16f5a9d..afd047b 100644
a b int ff_wms_parse_sdp_a_line(AVFormatContext *s, const char *p); 33 33 34 34 extern RTPDynamicProtocolHandler ff_amr_nb_dynamic_handler; 35 35 extern RTPDynamicProtocolHandler ff_amr_wb_dynamic_handler; 36 extern RTPDynamicProtocolHandler ff_g726_16_dynamic_handler; 37 extern RTPDynamicProtocolHandler ff_g726_24_dynamic_handler; 38 extern RTPDynamicProtocolHandler ff_g726_32_dynamic_handler; 39 extern RTPDynamicProtocolHandler ff_g726_40_dynamic_handler; 36 40 extern RTPDynamicProtocolHandler ff_h263_1998_dynamic_handler; 37 41 extern RTPDynamicProtocolHandler ff_h263_2000_dynamic_handler; 38 42 extern RTPDynamicProtocolHandler ff_h264_dynamic_handler; -
new file libavformat/rtpdec_g726.c
diff --git a/libavformat/rtpdec_g726.c b/libavformat/rtpdec_g726.c new file mode 100644 index 0000000..c966d30
- + 1 2 #include "avformat.h" 3 #include "rtpdec_formats.h" 4 5 static int g726_16_parse_sdp_line(AVFormatContext *s, int st_index, 6 PayloadContext *data, const char *line) 7 { 8 AVStream *stream = s->streams[st_index]; 9 AVCodecContext *codec = stream->codec; 10 11 codec->bit_rate = 16000; 12 13 return 0; 14 } 15 16 static int g726_24_parse_sdp_line(AVFormatContext *s, int st_index, 17 PayloadContext *data, const char *line) 18 { 19 AVStream *stream = s->streams[st_index]; 20 AVCodecContext *codec = stream->codec; 21 22 codec->bit_rate = 24000; 23 24 return 0; 25 } 26 27 static int g726_32_parse_sdp_line(AVFormatContext *s, int st_index, 28 PayloadContext *data, const char *line) 29 { 30 AVStream *stream = s->streams[st_index]; 31 AVCodecContext *codec = stream->codec; 32 33 codec->bit_rate = 32000; 34 35 return 0; 36 } 37 38 static int g726_40_parse_sdp_line(AVFormatContext *s, int st_index, 39 PayloadContext *data, const char *line) 40 { 41 AVStream *stream = s->streams[st_index]; 42 AVCodecContext *codec = stream->codec; 43 44 codec->bit_rate = 40000; 45 46 return 0; 47 } 48 49 RTPDynamicProtocolHandler ff_g726_16_dynamic_handler = { 50 .enc_name = "G726-16", 51 .codec_type = AVMEDIA_TYPE_AUDIO, 52 .codec_id = CODEC_ID_ADPCM_G726, 53 .parse_sdp_a_line = g726_16_parse_sdp_line, 54 }; 55 56 RTPDynamicProtocolHandler ff_g726_24_dynamic_handler = { 57 .enc_name = "G726-24", 58 .codec_type = AVMEDIA_TYPE_AUDIO, 59 .codec_id = CODEC_ID_ADPCM_G726, 60 .parse_sdp_a_line = g726_24_parse_sdp_line, 61 }; 62 63 RTPDynamicProtocolHandler ff_g726_32_dynamic_handler = { 64 .enc_name = "G726-32", 65 .codec_type = AVMEDIA_TYPE_AUDIO, 66 .codec_id = CODEC_ID_ADPCM_G726, 67 .parse_sdp_a_line = g726_32_parse_sdp_line, 68 }; 69 70 RTPDynamicProtocolHandler ff_g726_40_dynamic_handler = { 71 .enc_name = "G726-40", 72 .codec_type = AVMEDIA_TYPE_AUDIO, 73 .codec_id = CODEC_ID_ADPCM_G726, 74 .parse_sdp_a_line = g726_40_parse_sdp_line, 75 };
