/* $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
 * @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 amr_nb    Set PJ_TRUE for AMR-NB and PJ_FALSE for AMR-WB.
 * @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__ */
