falconia has uploaded this change for review. ( 
https://gerrit.osmocom.org/c/libosmo-abis/+/41478?usp=email )


Change subject: trau_frame: fix de/encoding of TRAU-AMR-8k-6k7 format
......................................................................

trau_frame: fix de/encoding of TRAU-AMR-8k-6k7 format

There exist 3 TRAU frame types (distinguished by sync pattern) for
AMR on 8 kbit/s subslots: Low, 6k7 and 7k4.  osmo_trau_frame_encode()
and osmo_trau_frame_decode_8k() APIs support all 3 TRAU-AMR-8k frame
types since the original 2020 implementation - however, encoding and
decoding of 6k7 format was incorrect.  Fix it.

Correctness of the new implementation is verified by unit tests
added with the next patch in this series.

Change-Id: Ibb98b0c189ced5248dca217384ca34b6a5f8b210
---
M src/trau/trau_frame.c
1 file changed, 11 insertions(+), 11 deletions(-)



  git pull ssh://gerrit.osmocom.org:29418/libosmo-abis refs/changes/78/41478/1

diff --git a/src/trau/trau_frame.c b/src/trau/trau_frame.c
index 896bc20..d8541c5 100644
--- a/src/trau/trau_frame.c
+++ b/src/trau/trau_frame.c
@@ -1045,15 +1045,15 @@
        /* D8 .. D11 */
        memcpy(fr->d_bits + d_idx, trau_bits + 2 * 8 + 4, 4);
        d_idx += 4;
-       /* D12 .. D39 */
-       for (i = 3; i < 7; i++) {
+       /* D12 .. D32 */
+       for (i = 3; i < 6; i++) {
                int offset = i * 8;
-               memcpy(fr->d_bits + d_idx, trau_bits + offset + 2, 7);
+               memcpy(fr->d_bits + d_idx, trau_bits + offset + 1, 7);
                d_idx += 7;
        }

-       /* D40 .. D137 */
-       for (i = 7; i < 20; i+= 2) {
+       /* D33 .. D137 */
+       for (i = 6; i < 20; i += 2) {
                int offset = i * 8;
                memcpy(fr->d_bits + d_idx, trau_bits + offset + 1, 15);
                d_idx += 15;
@@ -1074,7 +1074,7 @@
        trau_bits[3 * 8] = 1;
        trau_bits[4 * 8] = 1;
        trau_bits[5 * 8] = 0;
-       for (i = 5; i < 20; i += 2)
+       for (i = 6; i < 20; i += 2)
                trau_bits[i * 8] = 1;

        /* D1 .. D7 */
@@ -1085,15 +1085,15 @@
        /* D8 .. D11 */
        memcpy(trau_bits + 2 * 8 + 4, fr->d_bits + d_idx, 4);
        d_idx += 4;
-       /* D12 .. D39 */
-       for (i = 3; i < 7; i++) {
+       /* D12 .. D32 */
+       for (i = 3; i < 6; i++) {
                int offset = i * 8;
-               memcpy(trau_bits + offset + 2, fr->d_bits + d_idx, 7);
+               memcpy(trau_bits + offset + 1, fr->d_bits + d_idx, 7);
                d_idx += 7;
        }

-       /* D40 .. D137 */
-       for (i = 7; i < 20; i+= 2) {
+       /* D33 .. D137 */
+       for (i = 6; i < 20; i += 2) {
                int offset = i * 8;
                memcpy(trau_bits + offset + 1, fr->d_bits + d_idx, 15);
                d_idx += 15;

--
To view, visit https://gerrit.osmocom.org/c/libosmo-abis/+/41478?usp=email
To unsubscribe, or for help writing mail filters, visit 
https://gerrit.osmocom.org/settings?usp=email

Gerrit-MessageType: newchange
Gerrit-Project: libosmo-abis
Gerrit-Branch: master
Gerrit-Change-Id: Ibb98b0c189ced5248dca217384ca34b6a5f8b210
Gerrit-Change-Number: 41478
Gerrit-PatchSet: 1
Gerrit-Owner: falconia <[email protected]>

Reply via email to