pespin has uploaded this change for review. ( https://gerrit.osmocom.org/c/libosmo-netif/+/26787 )
Change subject: amr: Fix FormatType from parsing BWE AMR header ......................................................................
amr: Fix FormatType from parsing BWE AMR header
The proper order is CMR(4)+F(1)+FT(4)+Q(1).
Hence, FT is 3 least significant bits of first byte and 1 most significant bit of secont byte.
Change-Id: I66f39d3b9a608f07c202e7a5084a8537e9978a94 --- M src/amr.c M tests/amr/amr_test.c 2 files changed, 3 insertions(+), 2 deletions(-)
git pull ssh://gerrit.osmocom.org:29418/libosmo-netif refs/changes/87/26787/1
diff --git a/src/amr.c b/src/amr.c index 1cb2ccc..2df6967 100644 --- a/src/amr.c +++ b/src/amr.c @@ -236,7 +236,7 @@ return -1;
/* Calculate new payload length */ - ft = (payload[0] & 0xf0) >> 4; + ft = ((payload[0] & 0x07) << 1) | ((payload[1] & 0x80) >> 7); if (!osmo_amr_ft_valid(ft)) return -1;
diff --git a/tests/amr/amr_test.c b/tests/amr/amr_test.c index fc579e9..802fbee 100644 --- a/tests/amr/amr_test.c +++ b/tests/amr/amr_test.c @@ -230,7 +230,8 @@ OSMO_ASSERT(rc == len + 2); printf(" BE: %d bytes (%s),", rc, osmo_hexdump(buf, rc));
- buf[0] = (ft << 4) & 0xf0; + buf[0] = (ft >> 1) & 0x07; + buf[1] = ((ft & 0x01) << 7) | (buf[1] & 0x3f); rc = osmo_amr_bwe_to_iuup(buf, rc); printf(" IuUP: %d bytes\n", rc); OSMO_ASSERT(rc > 0);