From e91dc1b53670e651d776cfab1d10dc7bdb09d5b2 Mon Sep 17 00:00:00 2001 From: drowe67 Date: Sat, 31 Mar 2012 06:29:42 +0000 Subject: [PATCH] patch for Asterisk git-svn-id: https://svn.code.sf.net/p/freetel/code@359 01035d8c-6547-0410-b346-abe4f91aad63 --- codec2-dev/asterisk/README | 12 +++- codec2-dev/asterisk/asterisk-codec2.patch | 68 ++++++++++++++++++++++ codec2-dev/asterisk/make_asterisk_patch.sh | 11 ++++ 3 files changed, 89 insertions(+), 2 deletions(-) create mode 100644 codec2-dev/asterisk/asterisk-codec2.patch create mode 100755 codec2-dev/asterisk/make_asterisk_patch.sh diff --git a/codec2-dev/asterisk/README b/codec2-dev/asterisk/README index 12701c12..ee368e6f 100644 --- a/codec2-dev/asterisk/README +++ b/codec2-dev/asterisk/README @@ -5,12 +5,20 @@ todo: [ ] Patches for configure macro [ ] document - + make install codec 2 somewhere + + make install codec 2: + david@bear:~/codec2-dev$ ./configure && make clean && sudo make install + david@bear:~/codec2-dev$ sudo ldconfig -v + ./configure Asterisk with Codec2 include and ibrary CFLAGS=-I/home/david/tmp/codec2/include ./configure + install instructions + Asterisk version + + david@bear:~/asterisk-1.8.9.0$ make ASTLDFLAGS=-lcodec2 + + configuration and demo + AST_FORMAT_GSM - + patch frames.h, AST_FORMAT_CODEC2 + + patch: + frames.h, + channel.c + frames.c + support for different Codec 2 bit rates diff --git a/codec2-dev/asterisk/asterisk-codec2.patch b/codec2-dev/asterisk/asterisk-codec2.patch new file mode 100644 index 00000000..695d3237 --- /dev/null +++ b/codec2-dev/asterisk/asterisk-codec2.patch @@ -0,0 +1,68 @@ +--- /home/david/asterisk-1.8.9.0-orig/include/asterisk/frame.h 2011-12-23 05:08:46.000000000 +1030 ++++ /home/david/asterisk-1.8.9.0-codec2/include/asterisk/frame.h 2012-03-27 13:16:55.623452431 +1030 +@@ -299,6 +299,7 @@ + #define AST_FORMAT_G719 (1ULL << 32) + /*! SpeeX Wideband (16kHz) Free Compression */ + #define AST_FORMAT_SPEEX16 (1ULL << 33) ++#define AST_FORMAT_CODEC2 (1ULL << 34) + /*! Raw mu-law data (G.711) */ + #define AST_FORMAT_TESTLAW (1ULL << 47) + /*! Reserved bit - do not use */ +--- /home/david/asterisk-1.8.9.0-orig/main/frame.c 2010-06-18 02:53:43.000000000 +0930 ++++ /home/david/asterisk-1.8.9.0-codec2/main/frame.c 2012-03-28 15:16:16.975581316 +1030 +@@ -102,6 +102,7 @@ + { AST_FORMAT_ADPCM, "adpcm" , 8000, "ADPCM", 40, 10, 300, 10, 20 }, /*!< codec_adpcm.c */ + { AST_FORMAT_SLINEAR, "slin", 8000, "16 bit Signed Linear PCM", 160, 10, 70, 10, 20, AST_SMOOTHER_FLAG_BE }, /*!< Signed linear */ + { AST_FORMAT_LPC10, "lpc10", 8000, "LPC10", 7, 20, 20, 20, 20 }, /*!< codec_lpc10.c */ ++ { AST_FORMAT_CODEC2, "codec2", 8000, "Codec 2", 7, 20, 20, 20, 20 }, /*!< codec_codec2.c */ + { AST_FORMAT_G729A, "g729", 8000, "G.729A", 10, 10, 230, 10, 20, AST_SMOOTHER_FLAG_G729 }, /*!< Binary commercial distribution */ + { AST_FORMAT_SPEEX, "speex", 8000, "SpeeX", 10, 10, 60, 10, 20 }, /*!< codec_speex.c */ + { AST_FORMAT_SPEEX16, "speex16", 16000, "SpeeX 16khz", 10, 10, 60, 10, 20 }, /*!< codec_speex.c */ +@@ -1475,6 +1476,9 @@ + samples = 22 * 8; + samples += (((char *)(f->data.ptr))[7] & 0x1) * 8; + break; ++ case AST_FORMAT_CODEC2: ++ samples = 160 * (f->datalen / 7); ++ break; + case AST_FORMAT_ULAW: + case AST_FORMAT_ALAW: + case AST_FORMAT_TESTLAW: +@@ -1519,6 +1523,9 @@ + case AST_FORMAT_GSM: + len = (samples / 160) * 33; + break; ++ case AST_FORMAT_CODEC2: ++ len = (samples / 160) * 7; ++ break; + case AST_FORMAT_G729A: + len = samples / 8; + break; +--- /home/david/asterisk-1.8.9.0-orig/main/channel.c 2011-12-17 10:21:13.000000000 +1030 ++++ /home/david/asterisk-1.8.9.0-codec2/main/channel.c 2012-03-28 15:05:22.395293391 +1030 +@@ -1075,6 +1075,7 @@ + /*! Ick, LPC10 sounds terrible, but at least we have code for it, if you're tacky enough + to use it */ + AST_FORMAT_LPC10, ++ AST_FORMAT_CODEC2, + /*! G.729a is faster than 723 and slightly less expensive */ + AST_FORMAT_G729A, + /*! Down to G.723.1 which is proprietary but at least designed for voice */ +--- /home/david/asterisk-1.8.9.0-orig/main/rtp_engine.c 2011-12-30 01:43:03.000000000 +1030 ++++ /home/david/asterisk-1.8.9.0-codec2/main/rtp_engine.c 2012-03-28 16:42:02.880872891 +1030 +@@ -101,6 +101,7 @@ + {{1, AST_FORMAT_SLINEAR}, "audio", "L16", 8000}, + {{1, AST_FORMAT_SLINEAR16}, "audio", "L16", 16000}, + {{1, AST_FORMAT_LPC10}, "audio", "LPC", 8000}, ++ {{1, AST_FORMAT_CODEC2}, "audio", "CODEC2", 8000}, + {{1, AST_FORMAT_G729A}, "audio", "G729", 8000}, + {{1, AST_FORMAT_G729A}, "audio", "G729A", 8000}, + {{1, AST_FORMAT_G729A}, "audio", "G.729", 8000}, +@@ -178,6 +179,7 @@ + [117] = {1, AST_FORMAT_SPEEX16}, + [118] = {1, AST_FORMAT_SLINEAR16}, /* 16 Khz signed linear */ + [121] = {0, AST_RTP_CISCO_DTMF}, /* Must be type 121 */ ++ [121] = {1, AST_FORMAT_CODEC2}, + }; + + int ast_rtp_engine_register2(struct ast_rtp_engine *engine, struct ast_module *module) diff --git a/codec2-dev/asterisk/make_asterisk_patch.sh b/codec2-dev/asterisk/make_asterisk_patch.sh new file mode 100755 index 00000000..a642bf7f --- /dev/null +++ b/codec2-dev/asterisk/make_asterisk_patch.sh @@ -0,0 +1,11 @@ +#!/bin/sh +# Create patch for Codec 2 support inside Asterisk + +ORIG=~/asterisk-1.8.9.0-orig +CODEC2=~/asterisk-1.8.9.0-codec2 +diff -ruN $ORIG/include/asterisk/frame.h $CODEC2/include/asterisk/frame.h > asterisk-codec2.patch +diff -ruN $ORIG/main/frame.c $CODEC2/main/frame.c >> asterisk-codec2.patch +diff -ruN $ORIG/main/channel.c $CODEC2/main/channel.c >> asterisk-codec2.patch +diff -ruN $ORIG/main/rtp_engine.c $CODEC2/main/rtp_engine.c >> asterisk-codec2.patch + + -- 2.25.1