|
|
|
@ -9,106 +9,106 @@ typedef unsigned char wav_byte;
|
|
|
|
|
typedef unsigned int uword;
|
|
|
|
|
|
|
|
|
|
#define readGSM_33(c1) { \
|
|
|
|
|
gsm_byte *c = (c1); \
|
|
|
|
|
LARc[0] = (*c++ & 0xF) << 2; /* 1 */ \
|
|
|
|
|
LARc[0] |= (*c >> 6) & 0x3; \
|
|
|
|
|
LARc[1] = *c++ & 0x3F; \
|
|
|
|
|
LARc[2] = (*c >> 3) & 0x1F; \
|
|
|
|
|
LARc[3] = (*c++ & 0x7) << 2; \
|
|
|
|
|
LARc[3] |= (*c >> 6) & 0x3; \
|
|
|
|
|
LARc[4] = (*c >> 2) & 0xF; \
|
|
|
|
|
LARc[5] = (*c++ & 0x3) << 2; \
|
|
|
|
|
LARc[5] |= (*c >> 6) & 0x3; \
|
|
|
|
|
LARc[6] = (*c >> 3) & 0x7; \
|
|
|
|
|
LARc[7] = *c++ & 0x7; \
|
|
|
|
|
Nc[0] = (*c >> 1) & 0x7F; \
|
|
|
|
|
bc[0] = (*c++ & 0x1) << 1; \
|
|
|
|
|
bc[0] |= (*c >> 7) & 0x1; \
|
|
|
|
|
Mc[0] = (*c >> 5) & 0x3; \
|
|
|
|
|
xmaxc[0] = (*c++ & 0x1F) << 1; \
|
|
|
|
|
xmaxc[0] |= (*c >> 7) & 0x1; \
|
|
|
|
|
xmc[0] = (*c >> 4) & 0x7; \
|
|
|
|
|
xmc[1] = (*c >> 1) & 0x7; \
|
|
|
|
|
xmc[2] = (*c++ & 0x1) << 2; \
|
|
|
|
|
xmc[2] |= (*c >> 6) & 0x3; \
|
|
|
|
|
xmc[3] = (*c >> 3) & 0x7; \
|
|
|
|
|
xmc[4] = *c++ & 0x7; \
|
|
|
|
|
xmc[5] = (*c >> 5) & 0x7; \
|
|
|
|
|
xmc[6] = (*c >> 2) & 0x7; \
|
|
|
|
|
xmc[7] = (*c++ & 0x3) << 1; /* 10 */ \
|
|
|
|
|
xmc[7] |= (*c >> 7) & 0x1; \
|
|
|
|
|
xmc[8] = (*c >> 4) & 0x7; \
|
|
|
|
|
xmc[9] = (*c >> 1) & 0x7; \
|
|
|
|
|
xmc[10] = (*c++ & 0x1) << 2; \
|
|
|
|
|
xmc[10] |= (*c >> 6) & 0x3; \
|
|
|
|
|
xmc[11] = (*c >> 3) & 0x7; \
|
|
|
|
|
xmc[12] = *c++ & 0x7; \
|
|
|
|
|
Nc[1] = (*c >> 1) & 0x7F; \
|
|
|
|
|
bc[1] = (*c++ & 0x1) << 1; \
|
|
|
|
|
bc[1] |= (*c >> 7) & 0x1; \
|
|
|
|
|
Mc[1] = (*c >> 5) & 0x3; \
|
|
|
|
|
xmaxc[1] = (*c++ & 0x1F) << 1; \
|
|
|
|
|
xmaxc[1] |= (*c >> 7) & 0x1; \
|
|
|
|
|
xmc[13] = (*c >> 4) & 0x7; \
|
|
|
|
|
xmc[14] = (*c >> 1) & 0x7; \
|
|
|
|
|
xmc[15] = (*c++ & 0x1) << 2; \
|
|
|
|
|
xmc[15] |= (*c >> 6) & 0x3; \
|
|
|
|
|
xmc[16] = (*c >> 3) & 0x7; \
|
|
|
|
|
xmc[17] = *c++ & 0x7; \
|
|
|
|
|
xmc[18] = (*c >> 5) & 0x7; \
|
|
|
|
|
xmc[19] = (*c >> 2) & 0x7; \
|
|
|
|
|
xmc[20] = (*c++ & 0x3) << 1; \
|
|
|
|
|
xmc[20] |= (*c >> 7) & 0x1; \
|
|
|
|
|
xmc[21] = (*c >> 4) & 0x7; \
|
|
|
|
|
xmc[22] = (*c >> 1) & 0x7; \
|
|
|
|
|
xmc[23] = (*c++ & 0x1) << 2; \
|
|
|
|
|
xmc[23] |= (*c >> 6) & 0x3; \
|
|
|
|
|
xmc[24] = (*c >> 3) & 0x7; \
|
|
|
|
|
xmc[25] = *c++ & 0x7; \
|
|
|
|
|
Nc[2] = (*c >> 1) & 0x7F; \
|
|
|
|
|
bc[2] = (*c++ & 0x1) << 1; /* 20 */ \
|
|
|
|
|
bc[2] |= (*c >> 7) & 0x1; \
|
|
|
|
|
Mc[2] = (*c >> 5) & 0x3; \
|
|
|
|
|
xmaxc[2] = (*c++ & 0x1F) << 1; \
|
|
|
|
|
xmaxc[2] |= (*c >> 7) & 0x1; \
|
|
|
|
|
xmc[26] = (*c >> 4) & 0x7; \
|
|
|
|
|
xmc[27] = (*c >> 1) & 0x7; \
|
|
|
|
|
xmc[28] = (*c++ & 0x1) << 2; \
|
|
|
|
|
xmc[28] |= (*c >> 6) & 0x3; \
|
|
|
|
|
xmc[29] = (*c >> 3) & 0x7; \
|
|
|
|
|
xmc[30] = *c++ & 0x7; \
|
|
|
|
|
xmc[31] = (*c >> 5) & 0x7; \
|
|
|
|
|
xmc[32] = (*c >> 2) & 0x7; \
|
|
|
|
|
xmc[33] = (*c++ & 0x3) << 1; \
|
|
|
|
|
xmc[33] |= (*c >> 7) & 0x1; \
|
|
|
|
|
xmc[34] = (*c >> 4) & 0x7; \
|
|
|
|
|
xmc[35] = (*c >> 1) & 0x7; \
|
|
|
|
|
xmc[36] = (*c++ & 0x1) << 2; \
|
|
|
|
|
xmc[36] |= (*c >> 6) & 0x3; \
|
|
|
|
|
xmc[37] = (*c >> 3) & 0x7; \
|
|
|
|
|
xmc[38] = *c++ & 0x7; \
|
|
|
|
|
Nc[3] = (*c >> 1) & 0x7F; \
|
|
|
|
|
bc[3] = (*c++ & 0x1) << 1; \
|
|
|
|
|
bc[3] |= (*c >> 7) & 0x1; \
|
|
|
|
|
Mc[3] = (*c >> 5) & 0x3; \
|
|
|
|
|
xmaxc[3] = (*c++ & 0x1F) << 1; \
|
|
|
|
|
xmaxc[3] |= (*c >> 7) & 0x1; \
|
|
|
|
|
xmc[39] = (*c >> 4) & 0x7; \
|
|
|
|
|
xmc[40] = (*c >> 1) & 0x7; \
|
|
|
|
|
xmc[41] = (*c++ & 0x1) << 2; \
|
|
|
|
|
xmc[41] |= (*c >> 6) & 0x3; \
|
|
|
|
|
xmc[42] = (*c >> 3) & 0x7; \
|
|
|
|
|
xmc[43] = *c++ & 0x7; /* 30 */ \
|
|
|
|
|
xmc[44] = (*c >> 5) & 0x7; \
|
|
|
|
|
xmc[45] = (*c >> 2) & 0x7; \
|
|
|
|
|
xmc[46] = (*c++ & 0x3) << 1; \
|
|
|
|
|
xmc[46] |= (*c >> 7) & 0x1; \
|
|
|
|
|
xmc[47] = (*c >> 4) & 0x7; \
|
|
|
|
|
xmc[48] = (*c >> 1) & 0x7; \
|
|
|
|
|
xmc[49] = (*c++ & 0x1) << 2; \
|
|
|
|
|
xmc[49] |= (*c >> 6) & 0x3; \
|
|
|
|
|
xmc[50] = (*c >> 3) & 0x7; \
|
|
|
|
|
xmc[51] = *c & 0x7; /* 33 */ \
|
|
|
|
|
gsm_byte *__c = (c1); \
|
|
|
|
|
LARc[0] = (*__c++ & 0xF) << 2; /* 1 */ \
|
|
|
|
|
LARc[0] |= (*__c >> 6) & 0x3; \
|
|
|
|
|
LARc[1] = *__c++ & 0x3F; \
|
|
|
|
|
LARc[2] = (*__c >> 3) & 0x1F; \
|
|
|
|
|
LARc[3] = (*__c++ & 0x7) << 2; \
|
|
|
|
|
LARc[3] |= (*__c >> 6) & 0x3; \
|
|
|
|
|
LARc[4] = (*__c >> 2) & 0xF; \
|
|
|
|
|
LARc[5] = (*__c++ & 0x3) << 2; \
|
|
|
|
|
LARc[5] |= (*__c >> 6) & 0x3; \
|
|
|
|
|
LARc[6] = (*__c >> 3) & 0x7; \
|
|
|
|
|
LARc[7] = *__c++ & 0x7; \
|
|
|
|
|
Nc[0] = (*__c >> 1) & 0x7F; \
|
|
|
|
|
bc[0] = (*__c++ & 0x1) << 1; \
|
|
|
|
|
bc[0] |= (*__c >> 7) & 0x1; \
|
|
|
|
|
Mc[0] = (*__c >> 5) & 0x3; \
|
|
|
|
|
xmaxc[0] = (*__c++ & 0x1F) << 1; \
|
|
|
|
|
xmaxc[0] |= (*__c >> 7) & 0x1; \
|
|
|
|
|
xmc[0] = (*__c >> 4) & 0x7; \
|
|
|
|
|
xmc[1] = (*__c >> 1) & 0x7; \
|
|
|
|
|
xmc[2] = (*__c++ & 0x1) << 2; \
|
|
|
|
|
xmc[2] |= (*__c >> 6) & 0x3; \
|
|
|
|
|
xmc[3] = (*__c >> 3) & 0x7; \
|
|
|
|
|
xmc[4] = *__c++ & 0x7; \
|
|
|
|
|
xmc[5] = (*__c >> 5) & 0x7; \
|
|
|
|
|
xmc[6] = (*__c >> 2) & 0x7; \
|
|
|
|
|
xmc[7] = (*__c++ & 0x3) << 1; /* 10 */ \
|
|
|
|
|
xmc[7] |= (*__c >> 7) & 0x1; \
|
|
|
|
|
xmc[8] = (*__c >> 4) & 0x7; \
|
|
|
|
|
xmc[9] = (*__c >> 1) & 0x7; \
|
|
|
|
|
xmc[10] = (*__c++ & 0x1) << 2; \
|
|
|
|
|
xmc[10] |= (*__c >> 6) & 0x3; \
|
|
|
|
|
xmc[11] = (*__c >> 3) & 0x7; \
|
|
|
|
|
xmc[12] = *__c++ & 0x7; \
|
|
|
|
|
Nc[1] = (*__c >> 1) & 0x7F; \
|
|
|
|
|
bc[1] = (*__c++ & 0x1) << 1; \
|
|
|
|
|
bc[1] |= (*__c >> 7) & 0x1; \
|
|
|
|
|
Mc[1] = (*__c >> 5) & 0x3; \
|
|
|
|
|
xmaxc[1] = (*__c++ & 0x1F) << 1; \
|
|
|
|
|
xmaxc[1] |= (*__c >> 7) & 0x1; \
|
|
|
|
|
xmc[13] = (*__c >> 4) & 0x7; \
|
|
|
|
|
xmc[14] = (*__c >> 1) & 0x7; \
|
|
|
|
|
xmc[15] = (*__c++ & 0x1) << 2; \
|
|
|
|
|
xmc[15] |= (*__c >> 6) & 0x3; \
|
|
|
|
|
xmc[16] = (*__c >> 3) & 0x7; \
|
|
|
|
|
xmc[17] = *__c++ & 0x7; \
|
|
|
|
|
xmc[18] = (*__c >> 5) & 0x7; \
|
|
|
|
|
xmc[19] = (*__c >> 2) & 0x7; \
|
|
|
|
|
xmc[20] = (*__c++ & 0x3) << 1; \
|
|
|
|
|
xmc[20] |= (*__c >> 7) & 0x1; \
|
|
|
|
|
xmc[21] = (*__c >> 4) & 0x7; \
|
|
|
|
|
xmc[22] = (*__c >> 1) & 0x7; \
|
|
|
|
|
xmc[23] = (*__c++ & 0x1) << 2; \
|
|
|
|
|
xmc[23] |= (*__c >> 6) & 0x3; \
|
|
|
|
|
xmc[24] = (*__c >> 3) & 0x7; \
|
|
|
|
|
xmc[25] = *__c++ & 0x7; \
|
|
|
|
|
Nc[2] = (*__c >> 1) & 0x7F; \
|
|
|
|
|
bc[2] = (*__c++ & 0x1) << 1; /* 20 */ \
|
|
|
|
|
bc[2] |= (*__c >> 7) & 0x1; \
|
|
|
|
|
Mc[2] = (*__c >> 5) & 0x3; \
|
|
|
|
|
xmaxc[2] = (*__c++ & 0x1F) << 1; \
|
|
|
|
|
xmaxc[2] |= (*__c >> 7) & 0x1; \
|
|
|
|
|
xmc[26] = (*__c >> 4) & 0x7; \
|
|
|
|
|
xmc[27] = (*__c >> 1) & 0x7; \
|
|
|
|
|
xmc[28] = (*__c++ & 0x1) << 2; \
|
|
|
|
|
xmc[28] |= (*__c >> 6) & 0x3; \
|
|
|
|
|
xmc[29] = (*__c >> 3) & 0x7; \
|
|
|
|
|
xmc[30] = *__c++ & 0x7; \
|
|
|
|
|
xmc[31] = (*__c >> 5) & 0x7; \
|
|
|
|
|
xmc[32] = (*__c >> 2) & 0x7; \
|
|
|
|
|
xmc[33] = (*__c++ & 0x3) << 1; \
|
|
|
|
|
xmc[33] |= (*__c >> 7) & 0x1; \
|
|
|
|
|
xmc[34] = (*__c >> 4) & 0x7; \
|
|
|
|
|
xmc[35] = (*__c >> 1) & 0x7; \
|
|
|
|
|
xmc[36] = (*__c++ & 0x1) << 2; \
|
|
|
|
|
xmc[36] |= (*__c >> 6) & 0x3; \
|
|
|
|
|
xmc[37] = (*__c >> 3) & 0x7; \
|
|
|
|
|
xmc[38] = *__c++ & 0x7; \
|
|
|
|
|
Nc[3] = (*__c >> 1) & 0x7F; \
|
|
|
|
|
bc[3] = (*__c++ & 0x1) << 1; \
|
|
|
|
|
bc[3] |= (*__c >> 7) & 0x1; \
|
|
|
|
|
Mc[3] = (*__c >> 5) & 0x3; \
|
|
|
|
|
xmaxc[3] = (*__c++ & 0x1F) << 1; \
|
|
|
|
|
xmaxc[3] |= (*__c >> 7) & 0x1; \
|
|
|
|
|
xmc[39] = (*__c >> 4) & 0x7; \
|
|
|
|
|
xmc[40] = (*__c >> 1) & 0x7; \
|
|
|
|
|
xmc[41] = (*__c++ & 0x1) << 2; \
|
|
|
|
|
xmc[41] |= (*__c >> 6) & 0x3; \
|
|
|
|
|
xmc[42] = (*__c >> 3) & 0x7; \
|
|
|
|
|
xmc[43] = *__c++ & 0x7; /* 30 */ \
|
|
|
|
|
xmc[44] = (*__c >> 5) & 0x7; \
|
|
|
|
|
xmc[45] = (*__c >> 2) & 0x7; \
|
|
|
|
|
xmc[46] = (*__c++ & 0x3) << 1; \
|
|
|
|
|
xmc[46] |= (*__c >> 7) & 0x1; \
|
|
|
|
|
xmc[47] = (*__c >> 4) & 0x7; \
|
|
|
|
|
xmc[48] = (*__c >> 1) & 0x7; \
|
|
|
|
|
xmc[49] = (*__c++ & 0x1) << 2; \
|
|
|
|
|
xmc[49] |= (*__c >> 6) & 0x3; \
|
|
|
|
|
xmc[50] = (*__c >> 3) & 0x7; \
|
|
|
|
|
xmc[51] = *__c & 0x7; /* 33 */ \
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
static inline void conv66(gsm_byte * d, wav_byte * c) {
|
|
|
|
|