Bonjour, je voudrais transformer les données que je recois sur ma ligne RNIS (ISDN Alaw reversed) en PCM 16bits. j'ai trouvé quelque algo sur le net mais aucun marche. il faut inversé les bits de chaque sample et faire la conversion de chaque sample en linear PCM 16. quelqu'un la deja fait ou a deja eu ce probleme ?

voici mon code qui ne renvoi que des parasites

typedef unsigned char alaw8;
typedef signed short pcm16;
pcm16 alawTable[] =
{688, -688, 43, -43, 2752, -2752, 172, -172,
344, -344, 11, -11, 1376, -1376, 86, -86,
944, -944, 59, -59, 3776, -3776, 236, -236,
472, -472, 27, -27, 1888, -1888, 118, -118,
560, -560, 35, -35, 2240, -2240, 140, -140,
280, -280, 3, -3, 1120, -1120, 70, -70,
816, -816, 51, -51, 3264, -3264, 204, -204,
408, -408, 19, -19, 1632, -1632, 102, -102,
752, -752, 47, -47, 3008, -3008, 188, -188,
376, -376, 15, -15, 1504, -1504, 94, -94,
1008, -1008, 63, -63, 4032, -4032, 252, -252,
504, -504, 31, -31, 2016, -2016, 126, -126,
624, -624, 39, -39, 2496, -2496, 156, -156,
312, -312, 7, -7, 1248, -1248, 78, -78,
880, -880, 55, -55, 3520, -3520, 220, -220,
440, -440, 23, -23, 1760, -1760, 110, -110,
656, -656, 41, -41, 2624, -2624, 164, -164,
328, -328, 9, -9, 1312, -1312, 82, -82,
912, -912, 57, -57, 3648, -3648, 228, -228,
456, -456, 25, -25, 1824, -1824, 114, -114,
528, -528, 33, -33, 2112, -2112, 132, -132,
264, -264, 1, -1, 1056, -1056, 66, -66,
784, -784, 49, -49, 3136, -3136, 196, -196,
392, -392, 17, -17, 1568, -1568, 98, -98,
720, -720, 45, -45, 2880, -2880, 180, -180,
360, -360, 13, -13, 1440, -1440, 90, -90,
976, -976, 61, -61, 3904, -3904, 244, -244,
488, -488, 29, -29, 1952, -1952, 122, -122,
592, -592, 37, -37, 2368, -2368, 148, -148,
296, -296, 5, -5, 1184, -1184, 74, -74,
848, -848, 53, -53, 3392, -3392, 212, -212,
424, -424, 21, -21, 1696, -1696, 106, -106};
alaw8 reverseByte[256] = {
0x00, 0x80, 0x40, 0xC0, 0x20, 0xA0, 0x60, 0xE0,
0x10, 0x90, 0x50, 0xD0, 0x30, 0xB0, 0x70, 0xF0,
0x08, 0x88, 0x48, 0xC8, 0x28, 0xA8, 0x68, 0xE8,
0x18, 0x98, 0x58, 0xD8, 0x38, 0xB8, 0x78, 0xF8,
0x04, 0x84, 0x44, 0xC4, 0x24, 0xA4, 0x64, 0xE4,
0x14, 0x94, 0x54, 0xD4, 0x34, 0xB4, 0x74, 0xF4,
0x0C, 0x8C, 0x4C, 0xCC, 0x2C, 0xAC, 0x6C, 0xEC,
0x1C, 0x9C, 0x5C, 0xDC, 0x3C, 0xBC, 0x7C, 0xFC,
0x02, 0x82, 0x42, 0xC2, 0x22, 0xA2, 0x62, 0xE2,
0x12, 0x92, 0x52, 0xD2, 0x32, 0xB2, 0x72, 0xF2,
0x0A, 0x8A, 0x4A, 0xCA, 0x2A, 0xAA, 0x6A, 0xEA,
0x1A, 0x9A, 0x5A, 0xDA, 0x3A, 0xBA, 0x7A, 0xFA,
0x06, 0x86, 0x46, 0xC6, 0x26, 0xA6, 0x66, 0xE6,
0x16, 0x96, 0x56, 0xD6, 0x36, 0xB6, 0x76, 0xF6,
0x0E, 0x8E, 0x4E, 0xCE, 0x2E, 0xAE, 0x6E, 0xEE,
0x1E, 0x9E, 0x5E, 0xDE, 0x3E, 0xBE, 0x7E, 0xFE,
0x01, 0x81, 0x41, 0xC1, 0x21, 0xA1, 0x61, 0xE1,
0x11, 0x91, 0x51, 0xD1, 0x31, 0xB1, 0x71, 0xF1,
0x09, 0x89, 0x49, 0xC9, 0x29, 0xA9, 0x69, 0xE9,
0x19, 0x99, 0x59, 0xD9, 0x39, 0xB9, 0x79, 0xF9,
0x05, 0x85, 0x45, 0xC5, 0x25, 0xA5, 0x65, 0xE5,
0x15, 0x95, 0x55, 0xD5, 0x35, 0xB5, 0x75, 0xF5,
0x0D, 0x8D, 0x4D, 0xCD, 0x2D, 0xAD, 0x6D, 0xED,
0x1D, 0x9D, 0x5D, 0xDD, 0x3D, 0xBD, 0x7D, 0xFD,
0x03, 0x83, 0x43, 0xC3, 0x23, 0xA3, 0x63, 0xE3,
0x13, 0x93, 0x53, 0xD3, 0x33, 0xB3, 0x73, 0xF3,
0x0B, 0x8B, 0x4B, 0xCB, 0x2B, 0xAB, 0x6B, 0xEB,
0x1B, 0x9B, 0x5B, 0xDB, 0x3B, 0xBB, 0x7B, 0xFB,
0x07, 0x87, 0x47, 0xC7, 0x27, 0xA7, 0x67, 0xE7,
0x17, 0x97, 0x57, 0xD7, 0x37, 0xB7, 0x77, 0xF7,
0x0F, 0x8F, 0x4F, 0xCF, 0x2F, 0xAF, 0x6F, 0xEF,
0x1F, 0x9F, 0x5F, 0xDF, 0x3F, 0xBF, 0x7F, 0xFF,
};
static pcm16 alaw2linear(alaw8 a_val){
a_val = reverseByte[a_val & 0xFF]; // isdn alaw est inverse
return alawTable[a_val];
}