32 #define BITSTREAM_READER_LE 
   41 #define CNG_RANDOM_SEED 12345 
   49     60,     0,  0,  2489, 60,     0,  0,  5217,
 
   50      1,  6171,  0,  3953,  0, 10364,  1,  9357,
 
   51     -1,  8843,  1,  9396,  0,  5794, -1, 10816,
 
   52      2, 11606, -2, 12072,  0,  8616,  1, 12170,
 
   53      0, 14440,  0,  7787, -1, 13721,  0, 18205,
 
   54      0, 14471,  0, 15807,  1, 15275,  0, 13480,
 
   55     -1, 18375, -1,     0,  1, 11194, -1, 13010,
 
   56      1, 18836, -2, 20354,  1, 16233, -1,     0,
 
   57     60,     0,  0, 12130,  0, 13385,  1, 17834,
 
   58      1, 20875,  0, 21996,  1,     0,  1, 18277,
 
   59     -1, 21321,  1, 13738, -1, 19094, -1, 20387,
 
   60     -1,     0,  0, 21008, 60,     0, -2, 22807,
 
   61      0, 15900,  1,     0,  0, 17989, -1, 22259,
 
   62      1, 24395,  1, 23138,  0, 23948,  1, 22997,
 
   63      2, 22604, -1, 25942,  0, 26246,  1, 25321,
 
   64      0, 26423,  0, 24061,  0, 27247, 60,     0,
 
   65     -1, 25572,  1, 23918,  1, 25930,  2, 26408,
 
   66     -1, 19049,  1, 27357, -1, 24538, 60,     0,
 
   67     -1, 25093,  0, 28549,  1,     0,  0, 22793,
 
   68     -1, 25659,  0, 29377,  0, 30276,  0, 26198,
 
   69      1, 22521, -1, 28919,  0, 27384,  1, 30162,
 
   70     -1,     0,  0, 24237, -1, 30062,  0, 21763,
 
   71      1, 30917, 60,     0,  0, 31284,  0, 29433,
 
   72      1, 26821,  1, 28655,  0, 31327,  2, 30799,
 
   73      1, 31389,  0, 32322,  1, 31760, -2, 31830,
 
   74      0, 26936, -1, 31180,  1, 30875,  0, 27873,
 
   75     -1, 30429,  1, 31050,  0,     0,  0, 31912,
 
   76      1, 31611,  0, 31565,  0, 25557,  0, 31357,
 
   77     60,     0,  1, 29536,  1, 28985, -1, 26984,
 
   78     -1, 31587,  2, 30836, -2, 31133,  0, 30243,
 
   79     -1, 30742, -1, 32090, 60,     0,  2, 30902,
 
   80     60,     0,  0, 30027,  0, 29042, 60,     0,
 
   81      0, 31756,  0, 24553,  0, 25636, -2, 30501,
 
   82     60,     0, -1, 29617,  0, 30649, 60,     0,
 
   83      0, 29274,  2, 30415,  0, 27480,  0, 31213,
 
   84     -1, 28147,  0, 30600,  1, 31652,  2, 29068,
 
   85     60,     0,  1, 28571,  1, 28730,  1, 31422,
 
   86      0, 28257,  0, 24797, 60,     0,  0,     0,
 
   87     60,     0,  0, 22105,  0, 27852, 60,     0,
 
   88     60,     0, -1, 24214,  0, 24642,  0, 23305,
 
   89     60,     0, 60,     0,  1, 22883,  0, 21601,
 
   90     60,     0,  2, 25650, 60,     0, -2, 31253,
 
  104     {21299, 13844,  8999,  5849, 3802, 2471, 1606, 1044,  679,  441},
 
  106     {24576, 18432, 13824, 10368, 7776, 5832, 4374, 3281, 2460, 1845}
 
  111 static const int cng_filt[4] = { 273, 998, 499, 333 };
 
  113 static const int cng_bseg[3] = { 2048, 18432, 231233 };
 
  121         av_log(avctx, 
AV_LOG_ERROR, 
"Only mono and stereo are supported (requested channels: %d).\n",
 
  152     int temp, info_bits, 
i;
 
  162     if (info_bits == 3) {
 
  172     if (info_bits == 2) {
 
  282                                enum Rate cur_rate, 
int pitch_lag, 
int index)
 
  319         for (
i = 0; 
i < 8; 
i += 2) {
 
  320             offset         = ((cb_pos & 7) << 3) + cb_shift + 
i;
 
  321             vector[
offset] = (cb_sign & 1) ? cb_gain : -cb_gain;
 
  333                 vector[
i] += beta * vector[
i - lag] >> 15;
 
  349                         int pitch_lag, 
int length, 
int dir)
 
  351     int limit, ccr, lag = 0;
 
  358         limit = pitch_lag + 3;
 
  360     for (
i = pitch_lag - 3; 
i <= 
limit; 
i++) {
 
  363         if (ccr > *ccr_max) {
 
  382                            int tgt_eng, 
int ccr, 
int res_eng)
 
  389     temp1 = tgt_eng * res_eng >> 1;
 
  390     temp2 = ccr * ccr << 1;
 
  393         if (ccr >= res_eng) {
 
  396             ppf->
opt_gain = (ccr << 15) / res_eng *
 
  400         temp1       = (tgt_eng << 15) + (ccr * ppf->
opt_gain << 1);
 
  402         pf_residual = 
av_sat_add32(temp1, temp2 + (1 << 15)) >> 16;
 
  404         if (tgt_eng >= pf_residual << 1) {
 
  407             temp1 = (tgt_eng << 14) / pf_residual;
 
  444     int energy[5] = {0, 0, 0, 0, 0};
 
  456     if (!back_lag && !fwd_lag)
 
  474     for (
i = 0; 
i < 5; 
i++)
 
  475         temp1 = 
FFMAX(energy[
i], temp1);
 
  478     for (
i = 0; 
i < 5; 
i++)
 
  479         energy[
i] = (energy[
i] << 
scale) >> 16;
 
  481     if (fwd_lag && !back_lag) {  
 
  484     } 
else if (!fwd_lag) {       
 
  493         temp1 = energy[4] * ((energy[1] * energy[1] + (1 << 14)) >> 15);
 
  494         temp2 = energy[2] * ((energy[3] * energy[3] + (1 << 14)) >> 15);
 
  495         if (temp1 >= temp2) {
 
  516                              int *exc_eng, 
int *
scale)
 
  543     temp = best_eng * *exc_eng >> 3;
 
  545     if (
temp < ccr * ccr) {
 
  561                             int gain, 
int *rseed)
 
  567         for (
i = 0; 
i < lag; 
i++)
 
  568             out[
i] = vector_ptr[
i - lag] * 3 >> 2;
 
  573             *rseed = (int16_t)(*rseed * 521 + 259);
 
  574             out[
i] = gain * *rseed >> 15;
 
  589 #define iir_filter(fir_coef, iir_coef, src, dest, width)\ 
  592     int res_shift = 16 & ~-(width);\ 
  593     int in_shift  = 16 - res_shift;\ 
  595     for (m = 0; m < SUBFRAME_LEN; m++) {\ 
  597         for (n = 1; n <= LPC_ORDER; n++) {\ 
  598             filter -= (fir_coef)[n - 1] * (src)[m - n] -\ 
  599                       (iir_coef)[n - 1] * ((dest)[m - n] >> in_shift);\ 
  602         (dest)[m] = av_clipl_int32(((src)[m] * 65536) + (filter * 8) +\ 
  603                                    (1 << 15)) >> res_shift;\ 
  622         int temp = buf[
i] >> 2;
 
  630         num     = num << bits1 >> 1;
 
  636         gain = (num >> 1) / (denom >> 16);
 
  658                                int16_t *buf, int16_t *dst)
 
  674         iir_filter(filter_coef[0], filter_coef[1], buf + 
i, filter_signal + 
i, 1);
 
  696         temp = auto_corr[1] >> 16;
 
  706                                    (signal_ptr[j - 1] >> 16) * 
temp) >> 16;
 
  714             energy = auto_corr[1] >> 
temp;
 
  728     else if (gain < 0x20)
 
  729         return gain - 8 << 7;
 
  731         return gain - 20 << 8;
 
  742     int i, 
shift, seg, seg2, t, 
val, val_add, x, y;
 
  753     } 
else if(
shift < -31) {
 
  769     seg2 = 
FFMIN(seg, 3);
 
  774         t = seg * 32 + (
val << seg2);
 
  783     t = seg * 32 + (
val << seg2);
 
  786         t = seg * 32 + (
val + 1 << seg2);
 
  788         val = (seg2 - 1) * 16 + 
val;
 
  792         t = seg * 32 + (
val - 1 << seg2);
 
  794         val = (seg2 - 1) * 16 + 
val;
 
  825         for (j = 0; j < 11; j++) {
 
  826             signs[
i * 11 + j] = ((t & 1) * 2 - 1)  * (1 << 14);
 
  836         for (j = 0; j < 
pulses[
i]; j++, idx++) {
 
  839             pos[idx]  = 
tmp[idx2] * 2 + off[
i];
 
  858             t |= 
FFABS(vector_ptr[j]);
 
  859         t = 
FFMIN(t, 0x7FFF);
 
  870                t      = vector_ptr[j] * (1 << -
shift);
 
  876                t      = vector_ptr[j] >> 
shift;
 
  883         for (j = 0; j < 11; j++)
 
  884             b0 += 
tmp[
pos[(
i / 2) * 11 + j]] * signs[(
i / 2) * 11 + j];
 
  885         b0 = 
b0 * 2 * 2979LL + (1 << 29) >> 30; 
 
  888         if (
shift * 2 + 3 >= 0)
 
  911         for (j = 0; j < 11; j++) {
 
  912             idx = (
i / 2) * 11 + j;
 
  914                                                  (x * signs[idx] >> 15));
 
  918         memcpy(vector_ptr + 
PITCH_MAX, vector_ptr,
 
  928                                int *got_frame_ptr, 
AVPacket *avpkt)
 
  931     const uint8_t *buf = avpkt->
data;
 
  932     int buf_size       = avpkt->
size;
 
  933     int dec_mode       = buf[0] & 3;
 
  941     int bad_frame = 0, 
i, j, 
ret;
 
  946                    "Expected %d bytes, got %d - skipping packet\n",
 
  956     for (
int ch = 0; ch < 
channels; ch++) {
 
  958         int16_t *audio = p->
audio;
 
 1013                 if (
s->postfilter) {
 
 1022                                                      vector_ptr + 
i + ppf[j].
index,
 
 1083         if (
s->postfilter) {
 
 1096 #define OFFSET(x) offsetof(G723_1_Context, x) 
 1097 #define AD     AV_OPT_FLAG_AUDIO_PARAM | AV_OPT_FLAG_DECODING_PARAM 
 1101       { .i64 = 1 }, 0, 1, 
AD },
 
 1122 #if FF_API_SUBFRAMES 
 1123                       AV_CODEC_CAP_SUBFRAMES |