# HG changeset patch # User Mychaela Falconia # Date 1669257407 0 # Node ID b5726d659915f9234fc86873c20d9d605aa16d79 # Parent 3b5958f28a40a1d58bcb2861aa67680b68ea08eb libgsmefr: rename sidclass.c to sid_class.c, in preparation for adding sid_insert.c diff -r 3b5958f28a40 -r b5726d659915 libgsmefr/Makefile --- a/libgsmefr/Makefile Thu Nov 24 02:35:02 2022 +0000 +++ b/libgsmefr/Makefile Thu Nov 24 02:36:47 2022 +0000 @@ -1,6 +1,6 @@ CC= gcc CFLAGS= -O2 -OBJS= frame2params.o params2frame.o sidclass.o +OBJS= frame2params.o params2frame.o sid_class.o LIB= libgsmefr.a INSTALL_PREFIX= /usr/local diff -r 3b5958f28a40 -r b5726d659915 libgsmefr/sid_class.c --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/libgsmefr/sid_class.c Thu Nov 24 02:36:47 2022 +0000 @@ -0,0 +1,50 @@ +/* + * EFR_sid_classify() utility function classifies an EFR frame + * in RTP encoding according to the rules of GSM 06.81 section 6.1.1, + * judging it as SID=0, SID=1 or SID=2. + */ + +#include "gsm_efr.h" + +static const uint8_t SID_codeword_bit_idx[95] = +{ + 45, 46, 48, 49, 50, 51, 52, 53, 54, 55, + 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, + 66, 67, 68, 94, 95, 96, 98, 99, 100, 101, + 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, + 112, 113, 114, 115, 116, 117, 118, 148, 149, 150, + 151, 152, 153, 154, 155, 156, 157, 158, 159, 160, + 161, 162, 163, 164, 165, 166, 167, 168, 169, 170, + 171, 196, 197, 198, 199, 200, 201, 202, 203, 204, + 205, 206, 207, 208, 209, 212, 213, 214, 215, 216, + 217, 218, 219, 220, 221 +}; + +static inline int get_bit(const uint8_t *frame, unsigned bitnum) +{ + unsigned bytenum = bitnum >> 3; + unsigned bit_in_byte = 7 - (bitnum & 7); + unsigned bitmask = 1 << bit_in_byte; + + if (frame[bytenum] & bitmask) + return 1; + else + return 0; +} + +int EFR_sid_classify(const uint8_t *frame) +{ + unsigned idx, n; + + n = 0; + for (idx = 0; idx < 95; idx++) { + if (!get_bit(frame, SID_codeword_bit_idx[idx] + 4)) + n++; + if (n >= 16) + return 0; + } + if (n < 2) + return 2; + else + return 1; +} diff -r 3b5958f28a40 -r b5726d659915 libgsmefr/sidclass.c --- a/libgsmefr/sidclass.c Thu Nov 24 02:35:02 2022 +0000 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,50 +0,0 @@ -/* - * EFR_sid_classify() utility function classifies an EFR frame - * in RTP encoding according to the rules of GSM 06.81 section 6.1.1, - * judging it as SID=0, SID=1 or SID=2. - */ - -#include "gsm_efr.h" - -static const uint8_t SID_codeword_bit_idx[95] = -{ - 45, 46, 48, 49, 50, 51, 52, 53, 54, 55, - 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, - 66, 67, 68, 94, 95, 96, 98, 99, 100, 101, - 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, - 112, 113, 114, 115, 116, 117, 118, 148, 149, 150, - 151, 152, 153, 154, 155, 156, 157, 158, 159, 160, - 161, 162, 163, 164, 165, 166, 167, 168, 169, 170, - 171, 196, 197, 198, 199, 200, 201, 202, 203, 204, - 205, 206, 207, 208, 209, 212, 213, 214, 215, 216, - 217, 218, 219, 220, 221 -}; - -static inline int get_bit(const uint8_t *frame, unsigned bitnum) -{ - unsigned bytenum = bitnum >> 3; - unsigned bit_in_byte = 7 - (bitnum & 7); - unsigned bitmask = 1 << bit_in_byte; - - if (frame[bytenum] & bitmask) - return 1; - else - return 0; -} - -int EFR_sid_classify(const uint8_t *frame) -{ - unsigned idx, n; - - n = 0; - for (idx = 0; idx < 95; idx++) { - if (!get_bit(frame, SID_codeword_bit_idx[idx] + 4)) - n++; - if (n >= 16) - return 0; - } - if (n < 2) - return 2; - else - return 1; -}