[MERGED] libosmocore[master]: Fix wrongful GSM FR codec SID frame detection in DTX.

This is merely a historical archive of years 2008-2021, before the migration to mailman3.

A maintained and still updated list archive can be found at https://lists.osmocom.org/hyperkitty/list/gerrit-log@lists.osmocom.org/.

Harald Welte gerrit-no-reply at lists.osmocom.org
Fri Jun 9 08:17:28 UTC 2017


Harald Welte has submitted this change and it was merged.

Change subject: Fix wrongful GSM FR codec SID frame detection in DTX.
......................................................................


Fix wrongful GSM FR codec SID frame detection in DTX.

Based on ETSI TS 101 318 section 5.1.2 the 95 bits SID code word
is not detected correctly due to a wrongful offset in the bits
location indexes.

Change-Id: I45d98c6edf267f313883503a65385190ffbc65ca
---
M src/codec/gsm610.c
M tests/codec/codec_test.ok
M tests/testsuite.at
3 files changed, 27 insertions(+), 11 deletions(-)

Approvals:
  Harald Welte: Looks good to me, approved
  Jenkins Builder: Verified



diff --git a/src/codec/gsm610.c b/src/codec/gsm610.c
index 47faea2..165484d 100644
--- a/src/codec/gsm610.c
+++ b/src/codec/gsm610.c
@@ -306,16 +306,16 @@
 bool osmo_fr_check_sid(uint8_t *rtp_payload, size_t payload_len)
 {
 	struct bitvec bv;
-	uint16_t i, z_bits[] = { 59, 60, 62, 63, 65, 66, 68, 69, 71, 72, 74, 75,
-				 77, 78, 80, 81, 83, 84, 86, 87, 89, 90, 92, 93,
-				 95, 96, 115, 116, 118, 119, 121, 122, 124, 125,
-				 127, 128, 130, 131, 133, 134, 136, 137, 139,
-				 140, 142, 143, 145, 146, 148, 149, 151, 152,
-				 171, 172, 174, 175, 177, 178, 180, 181, 183,
-				 184, 186, 187, 189, 190, 192, 193, 195, 196,
-				 198, 199, 201, 202, 204, 205, 207, 208, 227,
-				 228, 230, 231, 233, 234, 236, 237, 239, 242,
-				 245, 248, 251, 254, 257, 260, 263 };
+	uint16_t i, z_bits[] = { 57, 58, 60, 61, 63, 64, 66, 67, 69, 70, 72, 73,
+				 75, 76, 78, 79, 81, 82, 84, 85, 87, 88, 90, 91,
+				 93, 94, 113, 114, 116, 117, 119, 120, 122, 123,
+				 125, 126, 128, 129, 131, 132, 134, 135, 137,
+				 138, 140, 141, 143, 144, 146, 147, 149, 150,
+				 169, 170, 172, 173, 175, 176, 178, 179, 181,
+				 182, 184, 185, 187, 188, 190, 191, 193, 194,
+				 196, 197, 199, 200, 202, 203, 205, 206, 225,
+				 226, 228, 229, 231, 232, 234, 235, 237, 240,
+				 243, 246, 249, 252, 255, 258, 261 };
 
 	/* signature does not match Full Rate SID */
 	if ((rtp_payload[0] >> 4) != 0xD)
diff --git a/tests/codec/codec_test.ok b/tests/codec/codec_test.ok
index 80c4a09..5307023 100644
--- a/tests/codec/codec_test.ok
+++ b/tests/codec/codec_test.ok
@@ -13,3 +13,20 @@
 HR RTP payload SID test:
 HR SID ? 03 8e b6 cb ff ff ff ff ff ff ff ff ff ff :: 1
 HR SID ? 06 46 76 b1 8e 48 9a 2f 5e 4c 22 2b 62 25 :: 0
+FR RTP payload SID test:
+FR SID d7 e0 a3 61 2c 00 00 80 49 00 00 49 00 00 80 00 04 00 00 00 00 12 40 00 10 08 00 00 00 08 2d 04 09 : 1
+FR SID d7 a2 bb 65 e5 00 00 10 00 04 82 00 00 00 00 49 00 02 41 00 00 00 00 20 80 01 00 00 00 42 40 10 d2 : 1
+FR SID d9 60 ab 21 ea 00 00 80 48 20 00 09 00 00 00 00 24 80 00 00 00 10 08 00 10 08 00 00 00 00 01 00 08 : 1
+FR SID d8 21 ab 25 ea 00 00 00 00 04 10 00 00 00 02 41 00 02 48 00 00 00 01 20 00 00 00 00 00 42 00 02 50 : 1
+FR SID d9 61 9a 65 60 00 00 10 00 04 02 00 00 00 02 00 00 00 40 00 00 00 00 00 80 01 00 00 00 02 40 82 52 : 1
+FR SID d9 a5 93 e1 a0 00 00 10 00 00 02 00 00 00 02 09 00 02 40 00 00 00 01 20 80 01 00 00 90 02 40 02 02 : 1
+FR SID d8 20 a3 e5 aa 00 00 80 00 00 00 08 00 00 80 00 04 80 00 00 00 10 08 00 12 08 00 00 00 00 08 00 09 : 1
+FR SID d7 e0 a3 a1 60 00 00 10 00 04 92 00 00 00 00 40 00 00 40 00 00 00 01 00 00 00 00 00 12 00 40 12 00 : 1
+FR SID d8 20 a3 a5 62 00 00 10 00 04 82 00 00 00 02 49 00 00 00 00 00 80 00 24 00 00 00 00 10 02 00 82 02 : 1
+FR SID d4 aa ba 6e bb 00 00 00 00 00 00 40 00 00 10 00 20 90 00 00 00 00 08 00 02 08 00 00 00 08 2c 20 00 : 1
+FR SID d9 64 bb 6d 62 00 00 80 41 00 00 48 00 00 10 00 04 90 00 00 00 00 08 00 00 00 00 00 00 00 2c 24 01 : 1
+FR SID d8 61 b2 a5 62 00 00 00 41 20 00 48 00 00 10 00 04 90 00 00 00 10 08 00 10 40 00 00 00 01 29 24 08 : 1
+FR SID d9 23 ba e5 e2 00 00 80 41 20 00 01 00 00 10 00 04 00 00 00 00 00 48 00 00 00 00 00 00 09 05 20 00 : 1
+FR SID d8 62 a2 61 60 00 00 10 00 00 92 00 00 00 00 40 00 00 08 00 00 00 01 00 00 01 00 00 80 00 40 02 40 : 1
+FR SID d9 e4 c3 6d 12 00 00 80 00 20 00 40 00 00 00 00 00 10 00 00 00 10 48 00 10 48 00 00 00 00 2d 04 00 : 1
+FR SID d9 a4 c3 29 59 00 00 10 00 00 12 00 00 00 00 41 00 00 01 00 00 00 01 00 80 00 00 00 00 42 00 12 02 : 1
diff --git a/tests/testsuite.at b/tests/testsuite.at
index aa943e8..63027d9 100644
--- a/tests/testsuite.at
+++ b/tests/testsuite.at
@@ -147,7 +147,6 @@
 
 AT_SETUP([codec])
 AT_KEYWORDS([codec])
-AT_CHECK([exit 77])
 cat $abs_srcdir/codec/codec_test.ok > expout
 AT_CHECK([$abs_top_builddir/tests/codec/codec_test], [0], [expout], [ignore])
 AT_CLEANUP

-- 
To view, visit https://gerrit.osmocom.org/2441
To unsubscribe, visit https://gerrit.osmocom.org/settings

Gerrit-MessageType: merged
Gerrit-Change-Id: I45d98c6edf267f313883503a65385190ffbc65ca
Gerrit-PatchSet: 4
Gerrit-Project: libosmocore
Gerrit-Branch: master
Gerrit-Owner: jfdionne <jf.dionne at nutaq.com>
Gerrit-Reviewer: Harald Welte <laforge at gnumonks.org>
Gerrit-Reviewer: Jenkins Builder
Gerrit-Reviewer: Max <msuraev at sysmocom.de>
Gerrit-Reviewer: jfdionne <jf.dionne at nutaq.com>



More information about the gerrit-log mailing list