static int repack_gsm0610_voip_to_wav49(uint8_t c[], const uint8_t d[])
{
    gsm0610_frame_t frame[2];
    int n;
 
	n = gsm0610_unpack_voip(&frame[0], d);
	gsm0610_unpack_voip(&frame[1], d + n);
    n = gsm0610_pack_wav49(c, frame);
    return n;
}
Esempio n. 2
0
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, &amp[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);
}