/* $Id$ */
/* 
 * Copyright (C) 2008-2009 Teluu Inc. (http://www.teluu.com)
 * Copyright (C) 2003-2008 Benny Prijono <benny@prijono.org>
 *
 * This program is free software; you can redistribute it and/or modify
 * it under the terms of the GNU General Public License as published by
 * the Free Software Foundation; either version 2 of the License, or
 * (at your option) any later version.
 *
 * This program is distributed in the hope that it will be useful,
 * but WITHOUT ANY WARRANTY; without even the implied warranty of
 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
 * GNU General Public License for more details.
 *
 * You should have received a copy of the GNU General Public License
 * along with this program; if not, write to the Free Software
 * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA 
 */

#ifndef __PJMEDIA_CODECS_AMR_HELPER_H__
#define __PJMEDIA_CODECS_AMR_HELPER_H__

/**
 * @file pjmedia-codec/amr_helper.h
 * @brief Common tables and helper functions for AMR codec (NB & WB).
 */


#ifdef _MSC_VER
#   pragma warning(disable:4214)    // bit field types other than int
#endif

/**
 * @defgroup PJMED_AMR_CODEC_HELPER AMR Codec Helper
 * @ingroup PJMEDIA_CODEC_CODECS
 * @brief AMR common tables and helper functions.
 * @{
 *
 * This sections describes common AMR constants tables (e.g: bits sensitivity 
 * order map, frame lengths, bitrates) and helper functions (e.g: pack AMR
 * payload in octet-aligned mode or bandwidth-efficient mode, payload parser,
 * reorder AMR bitstream).
 */

PJ_BEGIN_DECL


/* AMR bits sensitivity order maps */

const pj_int16_t pjmedia_codec_amrnb_ordermap122[244] =
{
      0,   1,   2,   3,   4,   5,   6,   7,   8,  9,
     10,  11,  12,  13,  14,  23,  15,  16,  17,  18,
     19,  20,  21,  22,  24,  25,  26,  27,  28,  38,
    141,  39, 142,  40, 143,  41, 144,  42, 145,  43,
    146,  44, 147,  45, 148,  46, 149,  47,  97, 150,
    200,  48,  98, 151, 201,  49,  99, 152, 202,  86,
    136, 189, 239,  87, 137, 190, 240,  88, 138, 191,
    241,  91, 194,  92, 195,  93, 196,  94, 197,  95,
    198,  29,  30,  31,  32,  33,  34,  35,  50, 100,
    153, 203,  89, 139, 192, 242,  51, 101, 154, 204,
     55, 105, 158, 208,  90, 140, 193, 243,  59, 109,
    162, 212,  63, 113, 166, 216,  67, 117, 170, 220,
     36,  37,  54,  53,  52,  58,  57,  56,  62,  61,
     60,  66,  65,  64,  70,  69,  68, 104, 103, 102,
    108, 107, 106, 112, 111, 110, 116, 115, 114, 120,
    119, 118, 157, 156, 155, 161, 160, 159, 165, 164,
    163, 169, 168, 167, 173, 172, 171, 207, 206, 205,
    211, 210, 209, 215, 214, 213, 219, 218, 217, 223,
    222, 221,  73,  72,  71,  76,  75,  74,  79,  78,
     77,  82,  81,  80,  85,  84,  83, 123, 122, 121,
    126, 125, 124, 129, 128, 127, 132, 131, 130, 135,
    134, 133, 176, 175, 174, 179, 178, 177, 182, 181,
    180, 185, 184, 183, 188, 187, 186, 226, 225, 224,
    229, 228, 227, 232, 231, 230, 235, 234, 233, 238,
    237, 236,  96, 199
};

const pj_int16_t pjmedia_codec_amrnb_ordermap102[204] =
{
      7,   6,   5,   4,   3,   2,   1,   0,  16,  15,
     14,  13,  12,  11,  10,   9,   8,  26,  27,  28,
     29,  30,  31, 115, 116, 117, 118, 119, 120,  72,
     73, 161, 162,  65,  68,  69, 108, 111, 112, 154,
    157, 158, 197, 200, 201,  32,  33, 121, 122,  74,
     75, 163, 164,  66, 109, 155, 198,  19,  23,  21,
     22,  18,  17,  20,  24,  25,  37,  36,  35,  34,
     80,  79,  78,  77, 126, 125, 124, 123, 169, 168,
    167, 166,  70,  67,  71, 113, 110, 114, 159, 156,
    160, 202, 199, 203,  76, 165,  81,  82,  92,  91,
     93,  83,  95,  85,  84,  94, 101, 102,  96, 104,
     86, 103,  87,  97, 127, 128, 138, 137, 139, 129,
    141, 131, 130, 140, 147, 148, 142, 150, 132, 149,
    133, 143, 170, 171, 181, 180, 182, 172, 184, 174,
    173, 183, 190, 191, 185, 193, 175, 192, 176, 186,
     38,  39,  49,  48,  50,  40,  52,  42,  41,  51,
     58,  59,  53,  61,  43,  60,  44,  54, 194, 179,
    189, 196, 177, 195, 178, 187, 188, 151, 136, 146,
    153, 134, 152, 135, 144, 145, 105,  90, 100, 107,
     88, 106,  89,  98,  99,  62,  47,  57,  64,  45,
     63,  46,  55,  56
};

const pj_int16_t pjmedia_codec_amrnb_ordermap795[159] =
{
      8,   7,   6,   5,   4,   3,   2,  14,  16,   9,
     10,  12,  13,  15,  11,  17,  20,  22,  24,  23,
     19,  18,  21,  56,  88, 122, 154,  57,  89, 123,
    155,  58,  90, 124, 156,  52,  84, 118, 150,  53,
     85, 119, 151,  27,  93,  28,  94,  29,  95,  30,
     96,  31,  97,  61, 127,  62, 128,  63, 129,  59,
     91, 125, 157,  32,  98,  64, 130,   1,   0,  25,
     26,  33,  99,  34, 100,  65, 131,  66, 132,  54,
     86, 120, 152,  60,  92, 126, 158,  55,  87, 121,
    153, 117, 116, 115,  46,  78, 112, 144,  43,  75,
    109, 141,  40,  72, 106, 138,  36,  68, 102, 134,
    114, 149, 148, 147, 146,  83,  82,  81,  80,  51,
     50,  49,  48,  47,  45,  44,  42,  39,  35,  79,
    77,   76,  74,  71,  67, 113, 111, 110, 108, 105,
    101, 145, 143, 142, 140, 137, 133,  41,  73, 107,
    139,  37,  69, 103, 135,  38,  70, 104, 136
};

const pj_int16_t pjmedia_codec_amrnb_ordermap74[148] =
{
      0,   1,   2,   3,   4,   5,   6,   7,   8,   9,
     10,  11,  12,  13,  14,  15,  16,  26,  87,  27,
     88,  28,  89,  29,  90,  30,  91,  51,  80, 112,
    141,  52,  81, 113, 142,  54,  83, 115, 144,  55,
     84, 116, 145,  58, 119,  59, 120,  21,  22,  23,
     17,  18,  19,  31,  60,  92, 121,  56,  85, 117,
    146,  20,  24,  25,  50,  79, 111, 140,  57,  86,
    118, 147,  49,  78, 110, 139,  48,  77,  53,  82,
    114, 143, 109, 138,  47,  76, 108, 137,  32,  33,
     61,  62,  93,  94, 122, 123,  41,  42,  43,  44,
     45,  46,  70,  71,  72,  73,  74,  75, 102, 103,
    104, 105, 106, 107, 131, 132, 133, 134, 135, 136,
     34,  63,  95, 124,  35,  64,  96, 125,  36,  65,
     97, 126,  37,  66,  98, 127,  38,  67,  99, 128,
     39,  68, 100, 129,  40,  69, 101, 130
};

const pj_int16_t pjmedia_codec_amrnb_ordermap67[134] =
{
      0,   1,   4,   3,   5,   6,  13,   7,   2,   8,
      9,  11,  15,  12,  14,  10,  28,  82,  29,  83,
     27,  81,  26,  80,  30,  84,  16,  55, 109,  56,
    110,  31,  85,  57, 111,  48,  73, 102, 127,  32,
     86,  51,  76, 105, 130,  52,  77, 106, 131,  58,
    112,  33,  87,  19,  23,  53,  78, 107, 132,  21,
     22,  18,  17,  20,  24,  25,  50,  75, 104, 129,
     47,  72, 101, 126,  54,  79, 108, 133,  46,  71,
    100, 125, 128, 103,  74,  49,  45,  70,  99, 124,
     42,  67,  96, 121,  39,  64,  93, 118,  38,  63,
     92, 117,  35,  60,  89, 114,  34,  59,  88, 113,
     44,  69,  98, 123,  43,  68,  97, 122,  41,  66,
     95, 120,  40,  65,  94, 119,  37,  62,  91, 116,
     36,  61,  90, 115
};

const pj_int16_t pjmedia_codec_amrnb_ordermap59[118] =
{
      0,   1,   4,   5,   3,   6,   7,   2,  13,  15,
      8,   9,  11,  12,  14,  10,  16,  28,  74,  29,
     75,  27,  73,  26,  72,  30,  76,  51,  97,  50,
     71,  96, 117,  31,  77,  52,  98,  49,  70,  95,
    116,  53,  99,  32,  78,  33,  79,  48,  69,  94,
    115,  47,  68,  93, 114,  46,  67,  92, 113,  19,
     21,  23,  22,  18,  17,  20,  24, 111,  43,  89,
    110,  64,  65,  44,  90,  25,  45,  66,  91, 112,
     54, 100,  40,  61,  86, 107,  39,  60,  85, 106,
     36,  57,  82, 103,  35,  56,  81, 102,  34,  55,
     80, 101,  42,  63,  88, 109,  41,  62,  87, 108,
     38,  59,  84, 105,  37,  58,  83, 104
};

const pj_int16_t pjmedia_codec_amrnb_ordermap515[103] =
{
     7,   6,   5,   4,   3,   2,   1,   0,  15,  14,
    13,  12,  11,  10,   9,   8,  23,  24,  25,  26,
    27,  46,  65,  84,  45,  44,  43,  64,  63,  62,
    83,  82,  81, 102, 101, 100,  42,  61,  80,  99,
    28,  47,  66,  85,  18,  41,  60,  79,  98,  29,
    48,  67,  17,  20,  22,  40,  59,  78,  97,  21,
    30,  49,  68,  86,  19,  16,  87,  39,  38,  58,
    57,  77,  35,  54,  73,  92,  76,  96,  95,  36,
    55,  74,  93,  32,  51,  33,  52,  70,  71,  89,
    90,  31,  50,  69,  88,  37,  56,  75,  94,  34,
    53,  72,  91
};

const pj_int16_t pjmedia_codec_amrnb_ordermap475[95] =
{
     0,   1,   2,   3,   4,   5,   6,   7,   8,   9,
    10,  11,  12,  13,  14,  15,  23,  24,  25,  26,
    27,  28,  48,  49,  61,  62,  82,  83,  47,  46,
    45,  44,  81,  80,  79,  78,  17,  18,  20,  22,
    77,  76,  75,  74,  29,  30,  43,  42,  41,  40,
    38,  39,  16,  19,  21,  50,  51,  59,  60,  63,
    64,  72,  73,  84,  85,  93,  94,  32,  33,  35,
    36,  53,  54,  56,  57,  66,  67,  69,  70,  87,
    88,  90,  91,  34,  55,  68,  89,  37,  58,  71,
    92,  31,  52,  65,  86
};


const pj_int16_t pjmedia_codec_amrwb_ordermap_660[] =
{
      0,   5,   6,   7,  61,  84, 107, 130,  62,  85,
      8,   4,  37,  38,  39,  40,  58,  81, 104, 127,
     60,  83, 106, 129, 108, 131, 128,  41,  42,  80,
    126,   1,   3,  57, 103,  82, 105,  59,   2,  63,
    109, 110,  86,  19,  22,  23,  64,  87,  18,  20,
     21,  17,  13,  88,  43,  89,  65, 111,  14,  24,
     25,  26,  27,  28,  15,  16,  44,  90,  66, 112,
      9,  11,  10,  12,  67, 113,  29,  30,  31,  32,
     34,  33,  35,  36,  45,  51,  68,  74,  91,  97,
    114, 120,  46,  69,  92, 115,  52,  75,  98, 121,
     47,  70,  93, 116,  53,  76,  99, 122,  48,  71,
     94, 117,  54,  77, 100, 123,  49,  72,  95, 118,
     55,  78, 101, 124,  50,  73,  96, 119,  56,  79,
    102, 125
};

const pj_int16_t pjmedia_codec_amrwb_ordermap_885[] =
{
      0,   4,   6,   7,   5,   3,  47,  48,  49, 112,
    113, 114,  75, 106, 140, 171,  80, 111, 145, 176,
     77, 108, 142, 173,  78, 109, 143, 174,  79, 110,
    144, 175,  76, 107, 141, 172,  50, 115,  51,   2,
      1,  81, 116, 146,  19,  21,  12,  17,  18,  20,
     16,  25,  13,  10,  14,  24,  23,  22,  26,   8,
     15,  52, 117,  31,  82, 147,   9,  33,  11,  83,
    148,  53, 118,  28,  27,  84, 149,  34,  35,  29,
     46,  32,  30,  54, 119,  37,  36,  39,  38,  40,
     85, 150,  41,  42,  43,  44,  45,  55,  60,  65,
     70,  86,  91,  96, 101, 120, 125, 130, 135, 151,
    156, 161, 166,  56,  87, 121, 152,  61,  92, 126,
    157,  66,  97, 131, 162,  71, 102, 136, 167,  57,
     88, 122, 153,  62,  93, 127, 158,  67,  98, 132,
    163,  72, 103, 137, 168,  58,  89, 123, 154,  63,
     94, 128, 159,  68,  99, 133, 164,  73, 104, 138,
    169,  59,  90, 124, 155,  64,  95, 129, 160,  69,
    100, 134, 165,  74, 105, 139, 170
};

const pj_int16_t pjmedia_codec_amrwb_ordermap_1265[] =
{
      0,   4,   6,  93, 143, 196, 246,   7,   5,   3,
     47,  48,  49,  50,  51, 150, 151, 152, 153, 154,
     94, 144, 197, 247,  99, 149, 202, 252,  96, 146,
    199, 249,  97, 147, 200, 250, 100, 203,  98, 148,
    201, 251,  95, 145, 198, 248,  52,   2,   1, 101,
    204, 155,  19,  21,  12,  17,  18,  20,  16,  25,
     13,  10,  14,  24,  23,  22,  26,   8,  15,  53,
    156,  31, 102, 205,   9,  33,  11, 103, 206,  54,
    157,  28,  27, 104, 207,  34,  35,  29,  46,  32,
     30,  55, 158,  37,  36,  39,  38,  40, 105, 208,
     41,  42,  43,  44,  45,  56, 106, 159, 209,  57,
     66,  75,  84, 107, 116, 125, 134, 160, 169, 178,
    187, 210, 219, 228, 237,  58, 108, 161, 211,  62,
    112, 165, 215,  67, 117, 170, 220,  71, 121, 174,
    224,  76, 126, 179, 229,  80, 130, 183, 233,  85,
    135, 188, 238,  89, 139, 192, 242,  59, 109, 162,
    212,  63, 113, 166, 216,  68, 118, 171, 221,  72,
    122, 175, 225,  77, 127, 180, 230,  81, 131, 184,
    234,  86, 136, 189, 239,  90, 140, 193, 243,  60,
    110, 163, 213,  64, 114, 167, 217,  69, 119, 172,
    222,  73, 123, 176, 226,  78, 128, 181, 231,  82,
    132, 185, 235,  87, 137, 190, 240,  91, 141, 194,
    244,  61, 111, 164, 214,  65, 115, 168, 218,  70,
    120, 173, 223,  74, 124, 177, 227,  79, 129, 182,
    232,  83, 133, 186, 236,  88, 138, 191, 241,  92,
    142, 195, 245
};

const pj_int16_t pjmedia_codec_amrwb_ordermap_1425[] =
{
      0,   4,   6, 101, 159, 220, 278,   7,   5,   3,
     47,  48,  49,  50,  51, 166, 167, 168, 169, 170,
    102, 160, 221, 279, 107, 165, 226, 284, 104, 162,
    223, 281, 105, 163, 224, 282, 108, 227, 106, 164,
    225, 283, 103, 161, 222, 280,  52,   2,   1, 109,
    228, 171,  19,  21,  12,  17,  18,  20,  16,  25,
     13,  10,  14,  24,  23,  22,  26,   8,  15,  53,
    172,  31, 110, 229,   9,  33,  11, 111, 230,  54,
    173,  28,  27, 112, 231,  34,  35,  29,  46,  32,
     30,  55, 174,  37,  36,  39,  38,  40, 113, 232,
     41,  42,  43,  44,  45,  56, 114, 175, 233,  62,
    120, 181, 239,  75, 133, 194, 252,  57, 115, 176,
    234,  63, 121, 182, 240,  70, 128, 189, 247,  76,
    134, 195, 253,  83, 141, 202, 260,  92, 150, 211,
    269,  84, 142, 203, 261,  93, 151, 212, 270,  85,
    143, 204, 262,  94, 152, 213, 271,  86, 144, 205,
    263,  95, 153, 214, 272,  64, 122, 183, 241,  77,
    135, 196, 254,  65, 123, 184, 242,  78, 136, 197,
    255,  87, 145, 206, 264,  96, 154, 215, 273,  58,
    116, 177, 235,  66, 124, 185, 243,  71, 129, 190,
    248,  79, 137, 198, 256,  88, 146, 207, 265,  97,
    155, 216, 274,  59, 117, 178, 236,  67, 125, 186,
    244,  72, 130, 191, 249,  80, 138, 199, 257,  89,
    147, 208, 266,  98, 156, 217, 275,  60, 118, 179,
    237,  68, 126, 187, 245,  73, 131, 192, 250,  81,
    139, 200, 258,  90, 148, 209, 267,  99, 157, 218,
    276,  61, 119, 180, 238,  69, 127, 188, 246,  74,
    132, 193, 251,  82, 140, 201, 259,  91, 149, 210,
    268, 100, 158, 219, 277
};

const pj_int16_t pjmedia_codec_amrwb_ordermap_1585[] =
{
      0,   4,   6, 109, 175, 244, 310,   7,   5,   3,
     47,  48,  49,  50,  51, 182, 183, 184, 185, 186,
    110, 176, 245, 311, 115, 181, 250, 316, 112, 178,
    247, 313, 113, 179, 248, 314, 116, 251, 114, 180,
    249, 315, 111, 177, 246, 312,  52,   2,   1, 117,
    252, 187,  19,  21,  12,  17,  18,  20,  16,  25,
     13,  10,  14,  24,  23,  22,  26,   8,  15,  53,
    188,  31, 118, 253,   9,  33,  11, 119, 254,  54,
    189,  28,  27, 120, 255,  34,  35,  29,  46,  32,
     30,  55, 190,  37,  36,  39,  38,  40, 121, 256,
     41,  42,  43,  44,  45,  56, 122, 191, 257,  63,
    129, 198, 264,  76, 142, 211, 277,  89, 155, 224,
    290, 102, 168, 237, 303,  57, 123, 192, 258,  70,
    136, 205, 271,  83, 149, 218, 284,  96, 162, 231,
    297,  62, 128, 197, 263,  75, 141, 210, 276,  88,
    154, 223, 289, 101, 167, 236, 302,  58, 124, 193,
    259,  71, 137, 206, 272,  84, 150, 219, 285,  97,
    163, 232, 298,  59, 125, 194, 260,  64, 130, 199,
    265,  67, 133, 202, 268,  72, 138, 207, 273,  77,
    143, 212, 278,  80, 146, 215, 281,  85, 151, 220,
    286,  90, 156, 225, 291,  93, 159, 228, 294,  98,
    164, 233, 299, 103, 169, 238, 304, 106, 172, 241,
    307,  60, 126, 195, 261,  65, 131, 200, 266,  68,
    134, 203, 269,  73, 139, 208, 274,  78, 144, 213,
    279,  81, 147, 216, 282,  86, 152, 221, 287,  91,
    157, 226, 292,  94, 160, 229, 295,  99, 165, 234,
    300, 104, 170, 239, 305, 107, 173, 242, 308,  61,
    127, 196, 262,  66, 132, 201, 267,  69, 135, 204,
    270,  74, 140, 209, 275,  79, 145, 214, 280,  82,
    148, 217, 283,  87, 153, 222, 288,  92, 158, 227,
    293,  95, 161, 230, 296, 100, 166, 235, 301, 105,
    171, 240, 306, 108, 174, 243, 309
};

const pj_int16_t pjmedia_codec_amrwb_ordermap_1825[] =
{
      0,   4,   6, 121, 199, 280, 358,   7,   5,   3,
     47,  48,  49,  50,  51, 206, 207, 208, 209, 210,
    122, 200, 281, 359, 127, 205, 286, 364, 124, 202,
    283, 361, 125, 203, 284, 362, 128, 287, 126, 204,
    285, 363, 123, 201, 282, 360,  52,   2,   1, 129,
    288, 211,  19,  21,  12,  17,  18,  20,  16,  25,
     13,  10,  14,  24,  23,  22,  26,   8,  15,  53,
    212,  31, 130, 289,   9,  33,  11, 131, 290,  54,
    213,  28,  27, 132, 291,  34,  35,  29,  46,  32,
     30,  55, 214,  37,  36,  39,  38,  40, 133, 292,
     41,  42,  43,  44,  45,  56, 134, 215, 293, 198,
    299, 136, 120, 138,  60, 279,  58,  62, 357, 139,
    140, 295, 156,  57, 219, 297,  63, 217, 137, 170,
    300, 222,  64, 106,  61,  78, 294,  92, 142, 141,
    135, 221, 296, 301, 343,  59, 298, 184, 329, 315,
    220, 216, 265, 251, 218, 237, 352, 223, 157,  86,
    171,  87, 164, 351, 111, 302,  65, 178, 115, 323,
     72, 192, 101, 179,  93,  73, 193, 151, 337, 309,
    143, 274,  69, 324, 165, 150,  97, 338, 110, 310,
    330, 273,  68, 107, 175, 245, 114,  79, 113, 189,
    246, 259, 174,  71, 185,  96, 344, 100, 322,  83,
    334, 316, 333, 252, 161, 348, 147,  82, 269, 232,
    260, 308, 353, 347, 163, 231, 306, 320, 188, 270,
    146, 177, 266, 350, 256,  85, 149, 116, 191, 160,
    238, 258, 336, 305, 255,  88, 224,  99, 339, 230,
    228, 227, 272, 242, 241, 319, 233, 311, 102,  74,
    180, 275,  66, 194, 152, 325, 172, 247, 244, 261,
    117, 158, 166, 354,  75, 144, 108, 312,  94, 186,
    303,  80, 234,  89, 195, 112, 340, 181, 345, 317,
    326, 276, 239, 167, 118, 313,  70, 355, 327, 253,
    190, 176, 271, 104,  98, 153, 103,  90,  76, 267,
    277, 248, 225, 262, 182,  84, 154, 235, 335, 168,
    331, 196, 341, 249, 162, 307, 148, 349, 263, 321,
    257, 243, 229, 356, 159, 119,  67, 187, 173, 145,
    240,  77, 304, 332, 314, 342, 109, 254,  81, 278,
    105,  91, 346, 318, 183, 250, 197, 328,  95, 155,
    169, 268, 226, 236, 264
};

const pj_int16_t pjmedia_codec_amrwb_ordermap_1985[] =
{
      0,   4,   6, 129, 215, 304, 390,   7,   5,   3,
     47,  48,  49,  50,  51, 222, 223, 224, 225, 226,
    130, 216, 305, 391, 135, 221, 310, 396, 132, 218,
    307, 393, 133, 219, 308, 394, 136, 311, 134, 220,
    309, 395, 131, 217, 306, 392,  52,   2,   1, 137,
    312, 227,  19,  21,  12,  17,  18,  20,  16,  25,
     13,  10,  14,  24,  23,  22,  26,   8,  15,  53,
    228,  31, 138, 313,   9,  33,  11, 139, 314,  54,
    229,  28,  27, 140, 315,  34,  35,  29,  46,  32,
     30,  55, 230,  37,  36,  39,  38,  40, 141, 316,
     41,  42,  43,  44,  45,  56, 142, 231, 317,  63,
     73,  92, 340,  82, 324, 149, 353, 159, 334, 165,
    338, 178, 163, 254,  77, 168, 257, 153, 343,  57,
    248, 238,  79, 252, 166,  67,  80, 201, 101, 267,
    143, 164, 341, 255, 339, 187, 376, 318,  78, 328,
    362, 115, 232, 242, 253, 290, 276,  62,  58, 158,
     68,  93, 179, 319, 148, 169, 154,  72, 385, 329,
    333, 344, 102,  83, 144, 233, 323, 124, 243, 192,
    354, 237,  64, 247, 202, 209, 150, 116, 335, 268,
    239, 299, 188, 196, 298,  94, 195, 258, 123, 363,
    384, 109, 325, 371, 170, 370,  84, 110, 295, 180,
     74, 210, 191, 106, 291, 205, 367, 381, 377, 206,
    355, 122, 119, 120, 383, 160, 105, 108, 277, 380,
    294, 284, 285, 345, 208, 269, 249, 366, 386, 300,
    297, 259, 125, 369, 197,  97, 194, 286, 211, 281,
    280, 183, 372,  87, 155, 283,  59, 348, 327, 184,
     76, 111, 330, 203, 349,  69,  98, 152, 145, 189,
     66, 320, 337, 173, 358, 251, 198, 174, 263, 262,
    126, 241, 193,  88, 388, 117,  95, 387, 112, 359,
    287, 244, 103, 272, 301, 171, 162, 234, 273, 127,
    373, 181, 292,  85, 378, 302, 121, 107, 364, 346,
    356, 212, 278, 213,  65, 382, 288, 207, 113, 175,
     99, 296, 374, 368, 199, 260, 185, 336, 331, 161,
    270, 264, 250, 240,  75, 350, 151,  60,  89, 321,
    156, 274, 360, 326,  70, 282, 167, 146, 352,  81,
     91, 389, 266, 245, 177, 235, 190, 256, 204, 342,
    128, 118, 303, 104, 379, 182, 114, 375, 200,  96,
    293, 172, 214, 365, 279,  86, 289, 351, 347, 357,
    261, 186, 176, 271,  90, 100, 147, 322, 275, 361,
     71, 332,  61, 265, 157, 246, 236
};

const pj_int16_t pjmedia_codec_amrwb_ordermap_2305[] =
{
      0,   4,   6, 145, 247, 352, 454,   7,   5,   3,
     47,  48,  49,  50,  51, 254, 255, 256, 257, 258,
    146, 248, 353, 455, 151, 253, 358, 460, 148, 250,
    355, 457, 149, 251, 356, 458, 152, 359, 150, 252,
    357, 459, 147, 249, 354, 456,  52,   2,   1, 153,
    360, 259,  19,  21,  12,  17,  18,  20,  16,  25,
     13,  10,  14,  24,  23,  22,  26,   8,  15,  53,
    260,  31, 154, 361,   9,  33,  11, 155, 362,  54,
    261,  28,  27, 156, 363,  34,  35,  29,  46,  32,
     30,  55, 262,  37,  36,  39,  38,  40, 157, 364,
     41,  42,  43,  44,  45,  56, 158, 263, 365, 181,
    192, 170,  79,  57, 399,  90, 159, 297, 377, 366,
    275,  68, 183, 388, 286, 194, 299,  92,  70, 182,
    401, 172,  59,  91,  58, 400, 368, 161,  81, 160,
    264, 171,  80, 389, 390, 378, 379, 193, 298,  69,
    266, 265, 367, 277, 288, 276, 287, 184,  60, 195,
     82,  93,  71, 369, 402, 173, 162, 444, 300, 391,
     98,  76, 278,  61, 267, 374, 135, 411, 167, 102,
    380, 200,  87, 178,  65,  94, 204, 124,  72, 342,
    189, 305, 381, 396, 433, 301, 226, 407, 289, 237,
    113, 215, 185, 128, 309, 403, 116, 320, 196, 331,
    370, 422, 174,  64, 392,  83, 425, 219, 134, 188,
    432, 112, 427, 139, 279, 163, 436, 208, 447, 218,
    236, 229,  97, 294, 385, 230, 166, 268, 177, 443,
    225, 426, 101, 272, 138, 127, 290, 117, 347, 199,
    414,  95, 140, 240, 410, 395, 209, 129, 283, 346,
    105, 241, 437,  86, 308, 448, 203, 345, 186, 107,
    220, 415, 334, 319, 106, 313, 118, 123,  73, 207,
    421, 214, 384, 373, 438,  62, 371, 341,  75, 449,
    168, 323, 164, 242, 416, 324, 304, 197, 335, 404,
    271,  63, 191, 325,  96, 169, 231, 280, 312, 187,
    406,  84, 201, 100,  67, 382, 175, 336, 202, 330,
    269, 393, 376, 383, 293, 307, 409, 179, 285, 314,
    302, 372, 398, 190, 180,  89,  99, 103, 232,  78,
     88,  77, 136, 387, 165, 198, 394, 125, 176, 428,
     74, 375, 238, 227,  66, 273, 282, 141, 306, 412,
    114,  85, 130, 348, 119, 291, 296, 386, 233, 397,
    303, 405, 284, 445, 423, 221, 210, 205, 450, 108,
    274, 434, 216, 343, 337, 142, 243, 321, 408, 451,
    310, 292, 120, 109, 281, 439, 270, 429, 332, 295,
    418, 211, 315, 222, 326, 131, 430, 244, 327, 349,
    417, 316, 143, 338, 440, 234, 110, 212, 452, 245,
    121, 419, 350, 223, 132, 441, 328, 413, 317, 339,
    126, 104, 137, 446, 344, 239, 435, 115, 333, 206,
    322, 217, 228, 424, 453, 311, 351, 111, 442, 224,
    213, 122, 431, 340, 235, 246, 133, 144, 420, 329,
    318
};

const pj_int16_t pjmedia_codec_amrwb_ordermap_2385[] =
{
      0,   4,   6, 145, 251, 360, 466,   7,   5,   3,
     47,  48,  49,  50,  51, 262, 263, 264, 265, 266,
    146, 252, 361, 467, 151, 257, 366, 472, 148, 254,
    363, 469, 149, 255, 364, 470, 156, 371, 150, 256,
    365, 471, 147, 253, 362, 468,  52,   2,   1, 157,
    372, 267,  19,  21,  12,  17,  18,  20,  16,  25,
     13,  10,  14,  24,  23,  22,  26,   8,  15,  53,
    268,  31, 152, 153, 154, 155, 258, 259, 260, 261,
    367, 368, 369, 370, 473, 474, 475, 476, 158, 373,
      9,  33,  11, 159, 374,  54, 269,  28,  27, 160,
    375,  34,  35,  29,  46,  32,  30,  55, 270,  37,
     36,  39,  38,  40, 161, 376,  41,  42,  43,  44,
     45,  56, 162, 271, 377, 185, 196, 174,  79,  57,
    411,  90, 163, 305, 389, 378, 283,  68, 187, 400,
    294, 198, 307,  92,  70, 186, 413, 176,  59,  91,
     58, 412, 380, 165,  81, 164, 272, 175,  80, 401,
    402, 390, 391, 197, 306,  69, 274, 273, 379, 285,
    296, 284, 295, 188,  60, 199,  82,  93,  71, 381,
    414, 177, 166, 456, 308, 403,  98,  76, 286,  61,
    275, 386, 135, 423, 171, 102, 392, 204,  87, 182,
     65,  94, 208, 124,  72, 350, 193, 313, 393, 408,
    445, 309, 230, 419, 297, 241, 113, 219, 189, 128,
    317, 415, 116, 328, 200, 339, 382, 434, 178,  64,
    404,  83, 437, 223, 134, 192, 444, 112, 439, 139,
    287, 167, 448, 212, 459, 222, 240, 233,  97, 302,
    397, 234, 170, 276, 181, 455, 229, 438, 101, 280,
    138, 127, 298, 117, 355, 203, 426,  95, 140, 244,
    422, 407, 213, 129, 291, 354, 105, 245, 449,  86,
    316, 460, 207, 353, 190, 107, 224, 427, 342, 327,
    106, 321, 118, 123,  73, 211, 433, 218, 396, 385,
    450,  62, 383, 349,  75, 461, 172, 331, 168, 246,
    428, 332, 312, 201, 343, 416, 279,  63, 195, 333,
     96, 173, 235, 288, 320, 191, 418,  84, 205, 100,
     67, 394, 179, 344, 206, 338, 277, 405, 388, 395,
    301, 315, 421, 183, 293, 322, 310, 384, 410, 194,
    184,  89,  99, 103, 236,  78,  88,  77, 136, 399,
    169, 202, 406, 125, 180, 440,  74, 387, 242, 231,
     66, 281, 290, 141, 314, 424, 114,  85, 130, 356,
    119, 299, 304, 398, 237, 409, 311, 417, 292, 457,
    435, 225, 214, 209, 462, 108, 282, 446, 220, 351,
    345, 142, 247, 329, 420, 463, 318, 300, 120, 109,
    289, 451, 278, 441, 340, 303, 430, 215, 323, 226,
    334, 131, 442, 248, 335, 357, 429, 324, 143, 346,
    452, 238, 110, 216, 464, 249, 121, 431, 358, 227,
    132, 453, 336, 425, 325, 347, 126, 104, 137, 458,
    352, 243, 447, 115, 341, 210, 330, 221, 232, 436,
    465, 319, 359, 111, 454, 228, 217, 122, 443, 348,
    239, 250, 133, 144, 432, 337, 326
};

/**
 * AMR-NB bitstream sensitivity order maps.
 */
const pj_int16_t* const pjmedia_codec_amrnb_ordermaps[8] =
{
    pjmedia_codec_amrnb_ordermap475,
    pjmedia_codec_amrnb_ordermap515,
    pjmedia_codec_amrnb_ordermap59,
    pjmedia_codec_amrnb_ordermap67,
    pjmedia_codec_amrnb_ordermap74,
    pjmedia_codec_amrnb_ordermap795,
    pjmedia_codec_amrnb_ordermap102,
    pjmedia_codec_amrnb_ordermap122
};

/**
 * AMR-WB bitstream sensitivity order maps.
 */
const pj_int16_t* const pjmedia_codec_amrwb_ordermaps[9] =
{
    pjmedia_codec_amrwb_ordermap_660,
    pjmedia_codec_amrwb_ordermap_885,
    pjmedia_codec_amrwb_ordermap_1265,
    pjmedia_codec_amrwb_ordermap_1425,
    pjmedia_codec_amrwb_ordermap_1585,
    pjmedia_codec_amrwb_ordermap_1825,
    pjmedia_codec_amrwb_ordermap_1985,
    pjmedia_codec_amrwb_ordermap_2305,
    pjmedia_codec_amrwb_ordermap_2385
};

/**
 * Constant of AMR-NB frame lengths in bytes.
 */
const pj_uint8_t  pjmedia_codec_amrnb_framelen[16] = 
    {12, 13, 15, 17, 19, 20, 26, 31, 5, 0, 0, 0, 0, 0, 0, 5};
/**
 * Constant of AMR-NB frame lengths in bits.
 */
const pj_uint16_t pjmedia_codec_amrnb_framelenbits[9] = 
    {95, 103, 118, 134, 148, 159, 204, 244, 39};
/**
 * Constant of AMR-NB bitrates.
 */
const pj_uint16_t pjmedia_codec_amrnb_bitrates[8] = 
    {4750, 5150, 5900, 6700, 7400, 7950, 10200, 12200};

/**
 * Constant of AMR-WB frame lengths in bytes.
 */
const pj_uint8_t  pjmedia_codec_amrwb_framelen[16] = 
    {17, 23, 32, 37, 40, 46, 50, 58, 60, 5, 0, 0, 0, 0, 0, 5};
/**
 * Constant of AMR-WB frame lengths in bits.
 */
const pj_uint16_t pjmedia_codec_amrwb_framelenbits[10] = 
    {132, 177, 253, 285, 317, 365, 397, 461, 477, 40};
/**
 * Constant of AMR-WB bitrates.
 */
const pj_uint16_t pjmedia_codec_amrwb_bitrates[9] = 
    {6600, 8850, 12650, 14250, 15850, 18250, 19850, 23050, 23850};


/**
 * This structure describes AMR frame info, to be fitted into #pjmedia_frame
 * bit info.
 */
#pragma pack(1)
typedef struct pjmedia_codec_amr_bit_info {
    pj_uint8_t frame_type;	/**< AMR frame type.			*/
    pj_int8_t  mode;		/**< AMR mode.				*/
    pj_uint8_t start_bit;	/**< Frame start bit.			*/
    pj_uint8_t good_quality:1;	/**< Flag if frame is good/degraded.	*/
} pjmedia_codec_amr_bit_info;
#pragma pack()


/**
 * This structure describes AMR settings.
 */
typedef struct pjmedia_codec_amr_pack_setting {
    pj_uint8_t amr_nb:1;	/**< Set 1 for AMR-NB, 0 for AMR-WB.	*/
    pj_uint8_t reorder:1;	/**< Reorder bitstream into descending 
				     sensitivity order or vice versa.	*/
    pj_uint8_t octet_aligned:1;	/**< TRUE if payload is in octet-aligned mode,
				     FALSE if payload is in bandwidth 
				     efficient mode.			*/
    pj_uint8_t cmr:4;		/**< Change Mode Request for remote
				     encoder.				*/
} pjmedia_codec_amr_pack_setting;


/**
 * Get AMR mode based on bitrate.
 *
 * @param bitrate   AMR bitrate.
 *
 * @return	    AMR mode.
 */
PJ_INLINE(pj_int8_t) pjmedia_codec_amr_get_mode(unsigned bitrate)
{
    pj_int8_t mode = -1;

    if(bitrate==4750){
	mode = 0;
    } else if(bitrate==5150){
	mode = 1;
    } else if(bitrate==5900){
	mode = 2;
    } else if(bitrate==6700){
	mode = 3;
    } else if(bitrate==7400){
	mode = 4;
    } else if(bitrate==7950){
	mode = 5;
    } else if(bitrate==10200){
	mode = 6;
    } else if(bitrate==12200){
	mode = 7;

    /* AMRWB */
    } else if(bitrate==6600){
	mode = 0;
    } else if(bitrate==8850){
	mode = 1;
    } else if(bitrate==12650){
	mode = 2;
    } else if(bitrate==14250){
	mode = 3;
    } else if(bitrate==15850){
	mode = 4;
    } else if(bitrate==18250){
	mode = 5;
    } else if(bitrate==19850){
	mode = 6;
    } else if(bitrate==23050){
	mode = 7;
    } else if(bitrate==23850){
	mode = 8;
    }
    return mode;
}

/**
 * Get AMR mode based on frame length.
 *
 * @param amrnb	    Set to PJ_TRUE for AMR-NB domain or PJ_FALSE for AMR-WB.
 * @param frame_len The frame length.
 *
 * @return	    AMR mode.
 */

PJ_INLINE(pj_int8_t) pjmedia_codec_amr_get_mode2(pj_bool_t amrnb,
						 unsigned frame_len)
{
    int i;

    if (amrnb) {
	for (i = 0; i < 9; ++i)
	    if (frame_len == pjmedia_codec_amrnb_framelen[i])
		return (pj_int8_t)i;
    } else {
	for (i = 0; i < 10; ++i) {
	    if (frame_len == pjmedia_codec_amrwb_framelen[i])
		return (pj_int8_t)i;
	}
    }
    
    pj_assert(!"Invalid AMR frame length");
    return -1;
}

/**
 * Prepare a frame before pass it to decoder. This function will do:
 * - reorder AMR bitstream from descending sensitivity order into 
 *   encoder bits order. This can be enabled/disabled via param 
 *   'setting' by setting/resetting field 'reorder'.
 * - align left the start bit (make the start_bit to be 0).
 *
 * @param in	    Input frame.
 * @param setting   Settings, see #pjmedia_codec_amr_pack_setting.
 * @param out	    Output frame.
 *
 * @return	    PJ_SUCCESS on success.
 */
PJ_INLINE(pj_status_t) pjmedia_codec_amr_predecode(
			    const pjmedia_frame *in,
			    const pjmedia_codec_amr_pack_setting *setting,
			    pjmedia_frame *out)
{
    pj_int8_t    amr_bits[477 + 7] = {0};
    pj_int8_t   *p_amr_bits = &amr_bits[0];

    pj_uint8_t  *r = (pj_uint8_t*) in->buf;  /* read cursor */
    pj_uint8_t  *w = (pj_uint8_t*) out->buf; /* write cursor */

    /* env vars for AMR or AMRWB */
    pj_uint8_t		     SID_FT;
    const pj_uint8_t	    *framelen_tbl;
    const pj_uint16_t	    *framelenbit_tbl;
    const pj_uint16_t	    *bitrate_tbl;
    const pj_int16_t* const *order_maps;

    pjmedia_codec_amr_bit_info *in_info =
			    (pjmedia_codec_amr_bit_info*) &in->bit_info;
    pjmedia_codec_amr_bit_info *out_info =
			    (pjmedia_codec_amr_bit_info*) &out->bit_info;

    unsigned i;

    *out_info = *in_info;

    if (setting->amr_nb) {
	SID_FT		= 8;
	framelen_tbl	= pjmedia_codec_amrnb_framelen;
	framelenbit_tbl = pjmedia_codec_amrnb_framelenbits;
	bitrate_tbl	= pjmedia_codec_amrnb_bitrates;
	order_maps	= pjmedia_codec_amrnb_ordermaps;
    } else {
	SID_FT		= 9;
	framelen_tbl	= pjmedia_codec_amrwb_framelen;
	framelenbit_tbl = pjmedia_codec_amrwb_framelenbits;
	bitrate_tbl	= pjmedia_codec_amrwb_bitrates;
	order_maps	= pjmedia_codec_amrwb_ordermaps;
    }

    /* unpack AMR bitstream if there is any data */
    if (in_info->frame_type <= SID_FT) {
	i = 0;
	if (in_info->start_bit) {
	    for (; i < (unsigned)(8-in_info->start_bit); ++i)
		*p_amr_bits++ = (pj_uint8_t)
				((*r >> (7-in_info->start_bit-i)) & 1);
	    ++r;
	}
	for(; i < framelenbit_tbl[in_info->frame_type]; i += 8, ++r) {
	    *p_amr_bits++ = (pj_uint8_t)((*r >> 7) & 1);
	    *p_amr_bits++ = (pj_uint8_t)((*r >> 6) & 1);
	    *p_amr_bits++ = (pj_uint8_t)((*r >> 5) & 1);
	    *p_amr_bits++ = (pj_uint8_t)((*r >> 4) & 1);
	    *p_amr_bits++ = (pj_uint8_t)((*r >> 3) & 1);
	    *p_amr_bits++ = (pj_uint8_t)((*r >> 2) & 1);
	    *p_amr_bits++ = (pj_uint8_t)((*r >> 1) & 1);
	    *p_amr_bits++ = (pj_uint8_t)((*r ) & 1);
	}
    }

    if (in_info->frame_type < SID_FT) {

	/* Speech */
	out_info->mode = in_info->frame_type;
	out->size = framelen_tbl[out_info->mode];

	pj_bzero(out->buf, out->size);

	if (setting->reorder) {
	    const pj_int16_t *order_map;

	    order_map = order_maps[out_info->mode];
	    for(i = 0; i < framelenbit_tbl[out_info->mode]; ++i) {
		if (amr_bits[i]) {
		    pj_uint16_t bitpos;
		    bitpos = order_map[i];
		    w[bitpos>>3] |= 1 << (7 - (bitpos % 8));
		}
	    }
	} else {
	    for(i = 0; i < framelenbit_tbl[out_info->mode]; ++i) {
		if (amr_bits[i])
		    w[i >> 3] |= 1 << (7 - (i % 8));
	    }
	}

    } else if (in_info->frame_type == SID_FT) {

	/* SID */
	pj_uint8_t w_bitptr = 0;
	pj_uint8_t FT_;

	if (setting->amr_nb)
	    FT_ = (pj_uint8_t)((amr_bits[36] << 2) | (amr_bits[37] << 1) | 
	                       amr_bits[38]);
	else
	    FT_ = (pj_uint8_t)((amr_bits[36] << 3) | (amr_bits[37] << 2) |
		               (amr_bits[38] << 1) | amr_bits[39]);

	out_info->mode = FT_;
	out->size = 5;

	pj_bzero(out->buf, out->size);
	for(i = 0; i < framelenbit_tbl[SID_FT]; ++i) {
	    if (amr_bits[i])
		*w |= (1 << (7-w_bitptr));

	    if (++w_bitptr == 8) {
		++w;
		w_bitptr = 0;
	    }
	}

    } else {

	/* NO DATA */
	out->size = 0;
	out_info->mode = -1;
    }

    out_info->start_bit = 0;

    return PJ_SUCCESS;
}


/**
 * Pack encoded AMR frame(s) into an RTP payload.
 *
 * @param frames    AMR frames to be packed.
 * @param nframes   Number of frames to be packed.
 * @param setting   Settings, see #pjmedia_codec_amr_pack_setting.
 * @param pkt	    Payload.
 * @param pkt_size  Payload size, as input this specifies payload maximum size,
 *		    as output this specifies payload packed size.
 *
 * @return	    PJ_SUCCESS on success.
 */
PJ_INLINE (pj_status_t) pjmedia_codec_amr_pack(
			    const pjmedia_frame frames[],
			    unsigned nframes,
			    const pjmedia_codec_amr_pack_setting *setting,
			    void *pkt, 
			    pj_size_t *pkt_size)
{
    /* Write cursor */
    pj_uint8_t *w = (pj_uint8_t*)pkt;
    pj_uint8_t w_bitptr = 0;

    /* Read cursor */
    pj_uint8_t *r;

    /* env vars for AMR or AMRWB */
    pj_uint8_t		     SID_FT;
    const pj_uint8_t	    *framelen_tbl;
    const pj_uint16_t	    *framelenbit_tbl;
    const pj_uint16_t	    *bitrate_tbl;
    const pj_int16_t* const *order_maps;

    /* frame info */
    pjmedia_codec_amr_bit_info *info;

    unsigned i, max_pkt_size;

    max_pkt_size = *pkt_size;

    if (setting->amr_nb) {
	SID_FT		= 8;
	framelen_tbl	= pjmedia_codec_amrnb_framelen;
	framelenbit_tbl = pjmedia_codec_amrnb_framelenbits;
	bitrate_tbl	= pjmedia_codec_amrnb_bitrates;
	order_maps	= pjmedia_codec_amrnb_ordermaps;
    } else {
	SID_FT		= 9;
	framelen_tbl	= pjmedia_codec_amrwb_framelen;
	framelenbit_tbl = pjmedia_codec_amrwb_framelenbits;
	bitrate_tbl	= pjmedia_codec_amrwb_bitrates;
	order_maps	= pjmedia_codec_amrwb_ordermaps;
    }

    /* Code Mode Request, 4 bits */
    *w = (pj_uint8_t)(setting->cmr << 4);
    w_bitptr = 4;
    if (setting->octet_aligned) {
	++w;
	w_bitptr = 0;
    }

    /* Table Of Contents, 6 bits each */
    for (i = 0; i < nframes; ++i) {
	pj_uint8_t TOC, FT, Q;
	pj_bool_t F;

	info = (pjmedia_codec_amr_bit_info*)&frames[i].bit_info;

	F = (i != nframes-1);
	FT = info->frame_type;
	Q  = (pj_uint8_t)(info->good_quality == 1);
	pj_assert(FT <= SID_FT || FT == 14 || FT == 15);

	/* Check buffer availability */
	*pkt_size = w - (pj_uint8_t*)pkt + 1;
	PJ_ASSERT_RETURN(*pkt_size <= max_pkt_size, PJ_ETOOSMALL);

	TOC = (pj_uint8_t)((F<<5) | (FT<<1) | Q);
	if (w_bitptr == 0) {
	    *w = (pj_uint8_t)(TOC<<2);
	    w_bitptr = 6;
	} else if (w_bitptr == 2) {
	    *w++ |= TOC;
	    w_bitptr = 0;
	} else if (w_bitptr == 4) {
	    *w++ |= TOC>>2;
	    *w = (pj_uint8_t)(TOC<<6);
	    w_bitptr = 2;
	} else if (w_bitptr == 6) {
	    *w++ |= TOC>>4;
	    *w = (pj_uint8_t)(TOC<<4);
	    w_bitptr = 4;
	}
	if (setting->octet_aligned) {
	    ++w;
	    w_bitptr = 0;
	}
    }

    /* Encoded data */
    for (i = 0; i < nframes; ++i) {
	pj_int8_t amr_bits[477 + 7] = {0};
	pj_int8_t *p_amr_bits = &amr_bits[0];
	unsigned j;

	info = (pjmedia_codec_amr_bit_info*)&frames[i].bit_info;

	/* Check buffer availability */
	*pkt_size = w - (pj_uint8_t*)pkt;
	if (info->frame_type <= SID_FT)
	    *pkt_size += framelen_tbl[info->frame_type] + 1;
	PJ_ASSERT_RETURN(*pkt_size <= max_pkt_size, PJ_ETOOSMALL);

	/* Skip if there is no data */
	if (info->frame_type > SID_FT)
	    continue;

	/* Unpack bits */
	r = (pj_uint8_t*) frames[i].buf;
	j = 0;
	if (info->start_bit) {
	    for (; j < (unsigned)(8-info->start_bit); ++j)
		*p_amr_bits++ = (pj_uint8_t)
				((*r >> (7-info->start_bit-j)) & 1);
	    ++r;
	}
	for(; j < framelenbit_tbl[info->frame_type]; j+=8, ++r) {
	    *p_amr_bits++ = (pj_uint8_t)((*r >> 7) & 1);
	    *p_amr_bits++ = (pj_uint8_t)((*r >> 6) & 1);
	    *p_amr_bits++ = (pj_uint8_t)((*r >> 5) & 1);
	    *p_amr_bits++ = (pj_uint8_t)((*r >> 4) & 1);
	    *p_amr_bits++ = (pj_uint8_t)((*r >> 3) & 1);
	    *p_amr_bits++ = (pj_uint8_t)((*r >> 2) & 1);
	    *p_amr_bits++ = (pj_uint8_t)((*r >> 1) & 1);
	    *p_amr_bits++ = (pj_uint8_t)((*r ) & 1);
	}

	if (info->frame_type < SID_FT) {

	    /* Speech */
	    if (w_bitptr == 0) *w = 0;

	    if (setting->reorder) {
		const pj_int16_t *order_map;

		/* Put bits in the packet, sensitivity descending ordered */
		order_map = order_maps[info->frame_type];
		for(j = 0; j < framelenbit_tbl[info->frame_type]; ++j) {
		    if (amr_bits[order_map[j]])
			*w |= (1 << (7-w_bitptr));

		    if (++w_bitptr == 8) {
			w_bitptr = 0;
			++w;
			*w = 0;
		    }
		}
	    } else {
		for(j = 0; j < framelenbit_tbl[info->frame_type]; ++j) {
		    if (amr_bits[j])
			*w |= (1 << (7-w_bitptr));

		    if (++w_bitptr == 8) {
			w_bitptr = 0;
			++w;
			*w = 0;
		    }
		}
	    }

	} else if (info->frame_type == SID_FT) {

	    /* SID */
	    pj_uint8_t STI = 0;

	    amr_bits[35] = (pj_uint8_t)(STI & 1);

	    if (setting->amr_nb) {
		amr_bits[36] = (pj_uint8_t)((info->mode >> 2) & 1);
		amr_bits[37] = (pj_uint8_t)((info->mode >> 1) & 1);
		amr_bits[38] = (pj_uint8_t)((info->mode) & 1);
	    } else {
		amr_bits[36] = (pj_uint8_t)((info->mode >> 3) & 1);
		amr_bits[37] = (pj_uint8_t)((info->mode >> 2) & 1);
		amr_bits[38] = (pj_uint8_t)((info->mode >> 1) & 1);
		amr_bits[39] = (pj_uint8_t)((info->mode) & 1);
	    }

	    if (w_bitptr == 0) *w = 0;
	    for(j = 0; j < framelenbit_tbl[info->frame_type]; ++j) {
		if (amr_bits[j])
		    *w |= (1 << (7-w_bitptr));

		if (++w_bitptr == 8) {
		    w_bitptr = 0;
		    ++w;
		    *w = 0;
		}
	    }
	}

	if (setting->octet_aligned) {
	    ++w;
	    w_bitptr = 0;
	}
    }

    *pkt_size = w - (pj_uint8_t*)pkt;
    if (w_bitptr)
	*pkt_size += 1;

    return PJ_SUCCESS;
}


/**
 * Parse AMR payload into frames.
 *
 * @param pkt	    Payload.
 * @param pkt_size  Payload size.
 * @param ts	    Base timestamp.
 * @param setting   Settings, see #pjmedia_codec_amr_pack_setting.
 * @param frames    Frames parsed.
 * @param nframes   Number of frames parsed.
 * @param cmr	    Change Mode Request message for local encoder.
 *
 * @return	    PJ_SUCCESS on success.
 */
PJ_INLINE(pj_status_t) pjmedia_codec_amr_parse(
			     void *pkt, 
			     pj_size_t pkt_size, 
			     const pj_timestamp *ts,
			     const pjmedia_codec_amr_pack_setting* setting,
			     pjmedia_frame frames[], 
			     unsigned *nframes,
			     pj_uint8_t *cmr)
{
    unsigned cnt = 0;
    pj_timestamp ts_ = *ts;

    /* Read cursor */
    pj_uint8_t r_bitptr = 0;
    pj_uint8_t *r = (pj_uint8_t*)pkt;

    /* env vars for AMR or AMRWB */
    pj_uint8_t		     SID_FT;
    const pj_uint8_t	    *framelen_tbl;
    const pj_uint16_t	    *framelenbit_tbl;
    const pj_int16_t* const *order_maps;

    /* frame info */
    pjmedia_codec_amr_bit_info *info;

    if (setting->amr_nb) {
	SID_FT		= 8;
	framelen_tbl	= pjmedia_codec_amrnb_framelen;
	framelenbit_tbl = pjmedia_codec_amrnb_framelenbits;
	order_maps	= pjmedia_codec_amrnb_ordermaps;
    } else {
	SID_FT		= 9;
	framelen_tbl	= pjmedia_codec_amrwb_framelen;
	framelenbit_tbl = pjmedia_codec_amrwb_framelenbits;
	order_maps	= pjmedia_codec_amrwb_ordermaps;
    }

    PJ_UNUSED_ARG(pkt_size);

    /* Code Mode Request, 4 bits */
    *cmr = (pj_uint8_t)((*r >> 4) & 0x0F);
    r_bitptr = 4;
    if (setting->octet_aligned) {
	++r;
	r_bitptr = 0;
    }

    /* Table Of Contents, 6 bits each */
    for (;;) {
	pj_uint8_t TOC = 0;
	pj_uint8_t F, FT, Q;

	if (r_bitptr == 0) {
	    TOC = (pj_uint8_t)(*r >> 2);
	    r_bitptr = 6;
	} else if (r_bitptr == 2) {
	    TOC = (pj_uint8_t)(*r++ & 0x3F);
	    r_bitptr = 0;
	} else if (r_bitptr == 4) {
	    TOC = (pj_uint8_t)((*r++ & 0x0f) << 2);
	    TOC |= *r >> 6;
	    r_bitptr = 2;
	} else if (r_bitptr == 6) {
	    TOC = (pj_uint8_t)((*r++ & 0x03) << 4);
	    TOC |= *r >> 4;
	    r_bitptr = 4;
	}

	F = (pj_uint8_t)(TOC >> 5);
	FT = (pj_uint8_t)((TOC >> 1) & 0x0F);
	Q = (pj_uint8_t)(TOC & 1);

	if (FT > SID_FT && FT < 14) {
	    pj_assert(!"Invalid AMR frametype, stream may be corrupted!");
	    break;
	}

	if (setting->octet_aligned) {
	    ++r;
	    r_bitptr = 0;
	}

	/* Set frame attributes */
	info = (pjmedia_codec_amr_bit_info*) &frames[cnt].bit_info;
	info->frame_type = FT;
	info->mode = (pj_int8_t)((FT < SID_FT)? FT : -1);
	info->good_quality = (pj_uint8_t)(Q == 1);
	info->start_bit = 0;
	frames[cnt].timestamp = ts_;
	frames[cnt].type = PJMEDIA_FRAME_TYPE_AUDIO;

	/* AMR frame length is 20ms */
	ts_.u64 += setting->amr_nb? 160 : 320;
	
	if (++cnt == *nframes || !F)
	    break;
    }
    *nframes = cnt;

    cnt = 0;

    /* Speech frames */
    while (cnt < *nframes) {
	pj_uint8_t FT;

	info = (pjmedia_codec_amr_bit_info*) &frames[cnt].bit_info;
	FT = info->frame_type;

	frames[cnt].buf = r;
	info->start_bit = r_bitptr;

	if (setting->octet_aligned) {
	    r += framelen_tbl[FT];
	    frames[cnt].size = framelen_tbl[FT];
	} else {
	    if (FT == 14 || FT == 15) {
		/* NO DATA */
		frames[cnt].size = 0;
	    } else {
		unsigned adv_bit;

		adv_bit = framelenbit_tbl[FT] + r_bitptr;
		r += adv_bit >> 3;
		r_bitptr = (pj_uint8_t)(adv_bit % 8);

		frames[cnt].size = adv_bit >> 3;
		if (r_bitptr)
		    ++frames[cnt].size;
	    }
	}
	++cnt;
    }

    return PJ_SUCCESS;
}


PJ_END_DECL

/**
 * @}
 */

#endif /* __PJMEDIA_CODECS_AMR_HELPER_H__ */
