static int repack_gsm0610_wav49_to_voip(uint8_t d[], const uint8_t c[]) { gsm0610_frame_t frame[2]; int n[2]; gsm0610_unpack_wav49(frame, c); n[0] = gsm0610_pack_voip(d, &frame[0]); n[1] = gsm0610_pack_voip(d + n[0], &frame[1]); return n[0] + n[1]; }
int gsm0610_encode(gsm0610_state_t *s, uint8_t code[], const int16_t amp[], int quant) { gsm0610_frame_t frame; uint8_t *c; int i; c = code; if (s->packing == GSM0610_PACKING_WAV49) quant <<= 1; for (i = 0; i < quant; i++) { encode_a_frame(s, &[i*GSM0610_FRAME_LEN], &frame); /* variable size LARc[0] 6 LARc[1] 6 LARc[2] 5 LARc[3] 5 LARc[4] 4 LARc[5] 4 LARc[6] 3 LARc[7] 3 Nc[0] 7 bc[0] 2 Mc[0] 2 xmaxc[0] 6 xMc[0] 3 xMc[1] 3 xMc[2] 3 xMc[3] 3 xMc[4] 3 xMc[5] 3 xMc[6] 3 xMc[7] 3 xMc[8] 3 xMc[9] 3 xMc[10] 3 xMc[11] 3 xMc[12] 3 Nc[1] 7 bc[1] 2 Mc[1] 2 xmaxc[1] 6 xMc[13] 3 xMc[14] 3 xMc[15] 3 xMc[16] 3 xMc[17] 3 xMc[18] 3 xMc[19] 3 xMc[20] 3 xMc[21] 3 xMc[22] 3 xMc[23] 3 xMc[24] 3 xMc[25] 3 Nc[2] 7 bc[2] 2 Mc[2] 2 xmaxc[2] 6 xMc[26] 3 xMc[27] 3 xMc[28] 3 xMc[29] 3 xMc[30] 3 xMc[31] 3 xMc[32] 3 xMc[33] 3 xMc[34] 3 xMc[35] 3 xMc[36] 3 xMc[37] 3 xMc[38] 3 Nc[3] 7 bc[3] 2 Mc[3] 2 xmaxc[3] 6 xMc[39] 3 xMc[40] 3 xMc[41] 3 xMc[42] 3 xMc[43] 3 xMc[44] 3 xMc[45] 3 xMc[46] 3 xMc[47] 3 xMc[48] 3 xMc[49] 3 xMc[50] 3 xMc[51] 3 */ switch (s->packing) { case GSM0610_PACKING_NONE: c += gsm0610_pack_none(c, &frame); break; case GSM0610_PACKING_WAV49: s->frame_index = !s->frame_index; c += gsm0610_pack_wav49(c, &frame, s->frame_index); break; case GSM0610_PACKING_VOIP: c += gsm0610_pack_voip(c, &frame); break; } /*endswitch*/ } /*endwhile*/ return (int) (c - code); }