From: David Vossel Date: Thu, 17 Jun 2010 18:36:06 +0000 (+0000) Subject: adds support for slin16 in sip X-Git-Tag: 11.0.0-beta1~2817 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=ba3d1ad680ca96981537cebeb97a6045f593d033;p=thirdparty%2Fasterisk.git adds support for slin16 in sip (closes issue #16153) Reported by: kfister Patches: 16153-1.6.2.0-rc5.patch uploaded by kfister (license 912) slin16.sip.patch.1 uploaded by malcolmd (license 924) Tested by: kfister, malcolmd git-svn-id: https://origsvn.digium.com/svn/asterisk/trunk@271261 65c4cc65-6c06-0410-ace0-fbb531ad65f3 --- diff --git a/CHANGES b/CHANGES index 779adfbbdc..d59eebd118 100644 --- a/CHANGES +++ b/CHANGES @@ -68,6 +68,7 @@ SIP Changes * Added the 'snom_aoc_enabled' option to turn on support for sending Advice of Charge messages to snom phones. * Added support for G.719 media streams. + * Added support for 16khz signed linear media streams. IAX2 Changes ----------- diff --git a/main/rtp_engine.c b/main/rtp_engine.c index 5e4db23094..eeaa008a8b 100644 --- a/main/rtp_engine.c +++ b/main/rtp_engine.c @@ -97,6 +97,7 @@ static const struct ast_rtp_mime_type { {{1, AST_FORMAT_G726}, "audio", "G726-32", 8000}, {{1, AST_FORMAT_ADPCM}, "audio", "DVI4", 8000}, {{1, AST_FORMAT_SLINEAR}, "audio", "L16", 8000}, + {{1, AST_FORMAT_SLINEAR16}, "audio", "L16", 16000}, {{1, AST_FORMAT_LPC10}, "audio", "LPC", 8000}, {{1, AST_FORMAT_G729A}, "audio", "G729", 8000}, {{1, AST_FORMAT_G729A}, "audio", "G729A", 8000}, @@ -165,15 +166,16 @@ static const struct ast_rtp_payload_type static_RTP_PT[AST_RTP_MAX_PT] = { [102] = {1, AST_FORMAT_SIREN7}, [103] = {1, AST_FORMAT_H263_PLUS}, [104] = {1, AST_FORMAT_MP4_VIDEO}, - [105] = {1, AST_FORMAT_T140RED}, /* Real time text chat (with redundancy encoding) */ - [106] = {1, AST_FORMAT_T140}, /* Real time text chat */ + [105] = {1, AST_FORMAT_T140RED}, /* Real time text chat (with redundancy encoding) */ + [106] = {1, AST_FORMAT_T140}, /* Real time text chat */ [110] = {1, AST_FORMAT_SPEEX}, [111] = {1, AST_FORMAT_G726}, [112] = {1, AST_FORMAT_G726_AAL2}, [115] = {1, AST_FORMAT_SIREN14}, [116] = {1, AST_FORMAT_G719}, [117] = {1, AST_FORMAT_SPEEX16}, - [121] = {0, AST_RTP_CISCO_DTMF}, /* Must be type 121 */ + [118] = {1, AST_FORMAT_SLINEAR16}, /* 16 Khz signed linear */ + [121] = {0, AST_RTP_CISCO_DTMF}, /* Must be type 121 */ }; int ast_rtp_engine_register2(struct ast_rtp_engine *engine, struct ast_module *module) diff --git a/res/res_rtp_asterisk.c b/res/res_rtp_asterisk.c index 7fe8ff9ba5..edea6112c0 100644 --- a/res/res_rtp_asterisk.c +++ b/res/res_rtp_asterisk.c @@ -2230,7 +2230,7 @@ static struct ast_frame *ast_rtp_read(struct ast_rtp_instance *instance, int rtc if (rtp->f.subclass.codec & AST_FORMAT_AUDIO_MASK) { rtp->f.samples = ast_codec_get_samples(&rtp->f); - if (rtp->f.subclass.codec == AST_FORMAT_SLINEAR) + if (rtp->f.subclass.codec == AST_FORMAT_SLINEAR || AST_FORMAT_SLINEAR16) ast_frame_byteswap_be(&rtp->f); calc_rxstamp(&rtp->f.delivery, rtp, timestamp, mark); /* Add timing data to let ast_generic_bridge() put the frame into a jitterbuf */