adds support for slin16 in sip
authorDavid Vossel <dvossel@digium.com>
Thu, 17 Jun 2010 18:36:06 +0000 (18:36 +0000)
committerDavid Vossel <dvossel@digium.com>
Thu, 17 Jun 2010 18:36:06 +0000 (18:36 +0000)
(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

CHANGES
main/rtp_engine.c
res/res_rtp_asterisk.c

diff --git a/CHANGES b/CHANGES
index 779adfb..d59eebd 100644 (file)
--- 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
 -----------
index 5e4db23..eeaa008 100644 (file)
@@ -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)
index 7fe8ff9..edea611 100644 (file)
@@ -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 */