From 29ac09a2aa1b75ae9e11c14da944f840f37a0735 Mon Sep 17 00:00:00 2001
From: Mark Spencer <markster@digium.com>
Date: Mon, 28 Apr 2003 01:13:19 +0000
Subject: [PATCH] Fix CNG issues in G.723.1

git-svn-id: https://origsvn.digium.com/svn/asterisk/trunk@921 65c4cc65-6c06-0410-ace0-fbb531ad65f3
---
 codecs/codec_g723_1.c | 8 ++++++--
 rtp.c                 | 7 +++++--
 2 files changed, 11 insertions(+), 4 deletions(-)

diff --git a/codecs/codec_g723_1.c b/codecs/codec_g723_1.c
index e8fd71198c..ad56bb02ec 100755
--- a/codecs/codec_g723_1.c
+++ b/codecs/codec_g723_1.c
@@ -15,9 +15,10 @@
  * the GNU General Public License
  */
 
-#define TYPE_SILENCE	 0x2
 #define TYPE_HIGH	 0x0
 #define TYPE_LOW	 0x1
+#define TYPE_SILENCE	 0x2
+#define TYPE_DONTSEND	 0x3
 #define TYPE_MASK	 0x3
 
 #include <asterisk/translate.h>
@@ -189,7 +190,9 @@ static struct ast_frame *g723tolin_frameout(struct ast_translator_pvt *pvt)
 static int g723_len(unsigned char buf)
 {
 	switch(buf & TYPE_MASK) {
-	case TYPE_MASK:
+	case TYPE_DONTSEND:
+		return 0;
+		break;
 	case TYPE_SILENCE:
 		return 4;
 		break;
@@ -293,6 +296,7 @@ static struct ast_frame *lintog723_frameout(struct ast_translator_pvt *pvt)
 #endif
 		/* Assume 8000 Hz */
 		tmp->f.samples += 30;
+		/* FIXME:SLD: Shouldn't the [0] be [cnt]?? */
 		cnt += g723_len(tmp->outbuf[0]);
 		tmp->tail -= Frame;
 		/* Move the data at the end of the buffer to the front */
diff --git a/rtp.c b/rtp.c
index 6f628fee87..aed30a379c 100755
--- a/rtp.c
+++ b/rtp.c
@@ -33,9 +33,10 @@
 #include <asterisk/acl.h>
 #include <asterisk/channel_pvt.h>
 
-#define TYPE_SILENCE	 0x2
 #define TYPE_HIGH	 0x0
 #define TYPE_LOW	 0x1
+#define TYPE_SILENCE	 0x2
+#define TYPE_DONTSEND	 0x3
 #define TYPE_MASK	 0x3
 
 static int dtmftimeout = 300;	/* 300 samples */
@@ -88,7 +89,9 @@ int ast_rtp_fd(struct ast_rtp *rtp)
 static int g723_len(unsigned char buf)
 {
 	switch(buf & TYPE_MASK) {
-	case TYPE_MASK:
+	case TYPE_DONTSEND:
+		return 0;
+		break;
 	case TYPE_SILENCE:
 		return 4;
 		break;
-- 
GitLab