亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频

? 歡迎來到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關(guān)于我們
? 蟲蟲下載站

?? dec_gain.c

?? Linux 影片撥放解碼 Video DVD
?? C
?? 第 1 頁 / 共 2 頁
字號(hào):
      s = ((s << i) + 0x8000) >> 16;

      if((s < 32768) & (s > 0))
      {
         gain_in = s;
      }
      else
      {
         gain_in = 32767;
      }
      exp = exp - i;

      /*
       * g0 = sqrt(gain_in/gain_out)
       */
      s = (gain_out << 15) / gain_in;
      s = s << (7 - exp);   /* s = gain_out / gain_in */
      s = D_UTIL_inverse_sqrt(s);
      g0 = ((s << 9) + 0x8000) >> 16;
   }

   /* sig_out(n) = gain(n) sig_out(n) */
   for(i = 0; i < l_trm; i++)
   {
      s = (sig_out[i] * g0) >> 13;
      sig_out[i] = D_UTIL_saturate(s);
   }

   return;
}


/*
 * D_GAIN_insert_lag
 *
 * Parameters:
 *    array        I/O: pitch lag history
 *    n              I: history size
 *    x              I: lag value
 *
 * Function:
 *    Insert lag into correct location
 *
 * Returns:
 *    void
 */
static void D_GAIN_insert_lag(Word16 array[], Word32 n, Word16 x)
{
   Word32 i;

   for(i = n - 1; i >= 0; i--)
   {
      if(x < array[i])
      {
         array[i + 1] = array[i];
      }
      else
      {
         break;
      }
   }

   array[i + 1] = x;
}


/*
 * D_GAIN_sort_lag
 *
 * Parameters:
 *    array        I/O: pitch lag history
 *    n              I: history size
 *
 * Function:
 *    Sorting of the lag history
 *
 * Returns:
 *    void
 */
static void D_GAIN_sort_lag(Word16 array[], Word16 n)
{
   Word32 i;

   for(i = 0; i < n; i++)
   {
      D_GAIN_insert_lag(array, i, array[i]);
   }
}


/*
 * D_GAIN_lag_concealment_init
 *
 * Parameters:
 *    lag_hist       O: pitch lag history
 *
 * Function:
 *    Initialise lag history to 64
 *
 * Returns:
 *    void
 */
void D_GAIN_lag_concealment_init(Word16 lag_hist[])
{
   Word32 i;

   for(i = 0; i < L_LTPHIST; i++)
   {
      lag_hist[i] = 64;
   }
}


/*
 * D_GAIN_lag_concealment
 *
 * Parameters:
 *    gain_hist         I: gain history
 *    lag_hist          I: pitch lag history
 *    T0                O: current lag
 *    old_T0            I: previous lag
 *    seed            I/O: seed for random
 *    unusable_frame    I: lost frame
 *
 * Function:
 *    Concealment of LTP lags during bad frames
 *
 * Returns:
 *    void
 */
void D_GAIN_lag_concealment(Word16 gain_hist[], Word16 lag_hist[],
                            Word32 *T0, Word16 *old_T0, Word16 *seed,
                            Word16 unusable_frame)
{
   Word32 i, lagDif, tmp, tmp2, D2, meanLag = 0;
   Word16 lag_hist2[L_LTPHIST] = {0};
   Word16 maxLag, minLag, lastLag;
   Word16 minGain, lastGain, secLastGain;
   Word16 D;

   /*
    * Is lag index such that it can be aplied directly
    * or does it has to be subtituted
    */
   lastGain = gain_hist[4];
   secLastGain = gain_hist[3];
   lastLag = lag_hist[0];

   /* SMALLEST history lag */
   minLag = lag_hist[0];

   for(i = 1; i < L_LTPHIST; i++)
   {
      if(lag_hist[i] < minLag)
      {
         minLag = lag_hist[i];
      }
   }

   /* BIGGEST history lag */
   maxLag = lag_hist[0];

   for(i = 1; i < L_LTPHIST; i++)
   {
      if(lag_hist[i] > maxLag)
      {
         maxLag = lag_hist[i];
      }
   }

   /* SMALLEST history gain */
   minGain = gain_hist[0];

   for(i = 1; i < L_LTPHIST; i++)
   {
      if(gain_hist[i] < minGain)
      {
         minGain = gain_hist[i];
      }
   }

   /* Difference between MAX and MIN lag */
   lagDif = maxLag - minLag;

   if(unusable_frame != 0)
   {
      /*
       * LTP-lag for RX_SPEECH_LOST
       * Recognition of the LTP-history
       */
      if((minGain > 8192) & (lagDif < 10))
      {
         *T0 = *old_T0;
      }
      else if((lastGain > 8192) && (secLastGain > 8192))
      {
         *T0 = lag_hist[0];
      }
      else
      {
         /*
          * SORT
          * The sorting of the lag history
          */
         for(i = 0; i < L_LTPHIST; i++)
         {
            lag_hist2[i] = lag_hist[i];
         }
         D_GAIN_sort_lag(lag_hist2, 5);

         /*
          * Lag is weighted towards bigger lags
          * and random variation is added
          */
         lagDif = (lag_hist2[4] - lag_hist2[2]);

         if(lagDif > 40)
         {
            lagDif = 40;
         }

         D = D_UTIL_random(seed);   /* D={-1, ...,1} */

         /* D2={-lagDif/2..lagDif/2} */
         tmp = lagDif >> 1;
         D2 = (tmp * D) >> 15;
         tmp = (lag_hist2[2] + lag_hist2[3]) + lag_hist2[4];
         *T0 = ((tmp * ONE_PER_3) >> 15) + D2;
      }

      /* New lag is not allowed to be bigger or smaller than last lag values */
      if(*T0 > maxLag)
      {
         *T0 = maxLag;
      }

      if(*T0 < minLag)
      {
         *T0 = minLag;
      }
   }
   else
   {
      /*
       * LTP-lag for RX_BAD_FRAME
       * MEAN lag
       */
      meanLag = 0;

      for(i = 0; i < L_LTPHIST; i++)
      {
         meanLag = meanLag + lag_hist[i];
      }

      meanLag = (meanLag * ONE_PER_LTPHIST) >> 15;
      tmp = *T0 - maxLag;
      tmp2 = *T0 - lastLag;

      if((lagDif < 10) & (*T0 > (minLag - 5)) & (tmp < 5))
      {
         *T0 = *T0;
      }
      else if((lastGain > 8192) & (secLastGain > 8192) & ((tmp2 > - 10)
         & (tmp2 < 10)))
      {
         *T0 = *T0;
      }
      else if((minGain < 6554) & (lastGain == minGain) & ((*T0 > minLag)
         & (*T0 < maxLag)))
      {
         *T0 = *T0;
      }
      else if((lagDif < 70) & (*T0 > minLag) & (*T0 < maxLag))
      {
         *T0 = *T0;
      }
      else if((*T0 > meanLag) & (*T0 < maxLag))
      {
         *T0 = *T0;
      }
      else
      {
         if((minGain > 8192) & (lagDif < 10))
         {
            *T0 = lag_hist[0];
         }
         else if((lastGain > 8192) & (secLastGain > 8192))
         {
            *T0 = lag_hist[0];
         }
         else
         {
            /*
             * SORT
             * The sorting of the lag history
             */
            for(i = 0; i < L_LTPHIST; i++)
            {
               lag_hist2[i] = lag_hist[i];
            }

            D_GAIN_sort_lag(lag_hist2, 5);

            /*
             * Lag is weighted towards bigger lags
             * and random variation is added
             */
            lagDif = lag_hist2[4] - lag_hist2[2];

            if(lagDif > 40)
            {
               lagDif = 40;
            }

            D = D_UTIL_random(seed);   /* D={-1,.., 1} */

            /* D2={-lagDif/2..lagDif/2} */
            tmp = lagDif >> 1;
            D2 = (tmp * D) >> 15;
            tmp = (lag_hist2[2] + lag_hist2[3]) + lag_hist2[4];
            *T0 = ((tmp * ONE_PER_3) >> 15) + D2;
         }

         /*
          * New lag is not allowed to be bigger or
          * smaller than last lag values
          */
         if(*T0 > maxLag)
         {
            *T0 = maxLag;
         }

         if(*T0 < minLag)
         {
            *T0 = minLag;
         }
      }
   }
}


/*
 * D_GAIN_adaptive_codebook_excitation
 *
 * Parameters:
 *    exc          I/O: excitation buffer
 *    T0             I: integer pitch lag
 *    frac           I: fraction of lag
 *
 * Function:
 *    Compute the result of Word32 term prediction with fractional
 *    interpolation of resolution 1/4.
 *
 * Returns:
 *    interpolated signal (adaptive codebook excitation)
 */
void D_GAIN_adaptive_codebook_excitation(Word16 exc[], Word32 T0, Word32 frac)
{
   Word32 i, j, k, sum;
   Word16 *x;

   x = &exc[ - T0];
   frac = -(frac);

   if(frac < 0)
   {
      frac = (frac + UP_SAMP);
      x--;
   }
   x = x - L_INTERPOL2 + 1;

   for(j = 0; j < L_SUBFR + 1; j++)
   {
      sum = 0L;

      for(i = 0, k = ((UP_SAMP - 1) - frac); i < 2 * L_INTERPOL2; i++,
         k += UP_SAMP)
      {
         sum += x[i] * D_ROM_inter4_2[k];
      }
      sum = (sum + 0x2000) >> 14;

      exc[j] = D_UTIL_saturate(sum);

      x++;
   }
   return;
}


/*
 * D_GAIN_pitch_sharpening
 *
 * Parameters:
 *    x            I/O: impulse response (or algebraic code)
 *    pit_lag        I: pitch lag
 *    sharp          I: (Q15) pitch sharpening factor
 *
 * Function:
 *    Performs Pitch sharpening routine for one subframe.
 *
 * Returns:
 *    void
 */
void D_GAIN_pitch_sharpening(Word16 *x, Word32 pit_lag, Word16 sharp)
{
   Word32 i;
   Word32 tmp;

   for(i = pit_lag; i < L_SUBFR; i++)
   {
      tmp = x[i] << 15;
      tmp += x[i - pit_lag] * sharp;
      x[i] = (Word16)((tmp + 0x4000) >> 15);
   }
   return;
}


/*
 * D_GAIN_find_voice_factor
 *
 * Parameters:
 *    exc            I: pitch excitation
 *    Q_exc          I: exc format
 *    gain_pit       I: (Q14) gain of pitch
 *    code           I: (Q9) fixed codebook excitation
 *    gain_code      I: (Q0) gain of code
 *    L_subfr        I: subframe length
 *
 * Function:
 *    Find the voicing factor.
 *
 * Returns:
 *    (Q15) 1=voice to -1=unvoiced
 */
Word16 D_GAIN_find_voice_factor(Word16 exc[], Word16 Q_exc,
                                Word16 gain_pit, Word16 code[],
                                Word16 gain_code, Word16 L_subfr)
{

   Word32 tmp, ener1, ener2, i;
   Word16 exp, exp1, exp2;

   ener1 = (D_UTIL_dot_product12(exc, exc, L_subfr, &exp1)) >> 16;
   exp1 = (Word16)(exp1 - (Q_exc + Q_exc));
   tmp = (gain_pit * gain_pit) << 1;
   exp = D_UTIL_norm_l(tmp);
   tmp = (tmp << exp) >> 16;
   ener1 = (ener1 * tmp) >> 15;
   exp1 = (Word16)((exp1 - exp) - 10);   /* 10 -> gain_pit Q14 to Q9 */
   ener2 = D_UTIL_dot_product12(code, code, L_subfr, &exp2) >> 16;
   exp = D_UTIL_norm_s(gain_code);
   tmp = gain_code << exp;
   tmp = (tmp * tmp) >> 15;
   ener2 = (ener2 * tmp) >> 15;
   exp2 = (Word16)(exp2 - (exp << 1));
   i = exp1 - exp2;

   if(i >= 0)
   {
      ener1 = ener1 >> 1;
      ener2 = ener2 >> (i + 1);
   }
   else if(i > (-16))
   {
      ener1 = ener1 >> (1 - i);
      ener2 = ener2 >> 1;
   }
   else
   {
      ener1 = 0;
      ener2 = ener2 >> 1;
   }

   tmp = ener1 - ener2;
   ener1 = (ener1 + ener2) + 1;
   tmp = (tmp << 15) / ener1;

   return((Word16)tmp);
}

?? 快捷鍵說明

復(fù)制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號(hào) Ctrl + =
減小字號(hào) Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
婷婷丁香激情综合| 91国偷自产一区二区三区观看| 国产精品天美传媒| 欧美午夜精品一区| 高潮精品一区videoshd| 喷水一区二区三区| 亚洲一二三区视频在线观看| 久久婷婷成人综合色| 欧美精品一二三| 国产视频一区二区在线| 色www精品视频在线观看| 国产精品99久久久久久宅男| 日韩不卡一区二区| 一区二区三区色| 亚洲欧美怡红院| 久久久久亚洲蜜桃| 日韩亚洲欧美综合| 欧美日韩亚洲国产综合| 色噜噜偷拍精品综合在线| av中文字幕一区| 国产精品中文有码| 久久99国产乱子伦精品免费| 日韩高清不卡一区二区三区| 图片区小说区区亚洲影院| 一级日本不卡的影视| 亚洲另类在线制服丝袜| 亚洲日本在线观看| 亚洲色图20p| 亚洲男人电影天堂| 亚洲乱码中文字幕综合| 亚洲视频免费观看| 亚洲欧洲无码一区二区三区| 中文字幕不卡在线| 中文字幕不卡一区| 国产精品久久久久aaaa樱花| 国产精品三级视频| 中文一区二区完整视频在线观看| 久久精品一二三| 国产午夜亚洲精品午夜鲁丝片| 久久精品欧美日韩精品| 国产精品天干天干在线综合| 国产精品久久久久aaaa樱花| 中文字幕日韩一区二区| 亚洲人成在线观看一区二区| 亚洲美女免费视频| 亚洲一区二区成人在线观看| 91视频免费看| 97精品国产97久久久久久久久久久久| 成人丝袜视频网| 99re成人精品视频| 91福利社在线观看| 欧美日韩在线电影| 日韩欧美另类在线| 久久精品视频免费| 亚洲欧美日韩国产另类专区| 亚洲一卡二卡三卡四卡五卡| 日韩国产精品久久久久久亚洲| 蜜臀va亚洲va欧美va天堂| 国产乱妇无码大片在线观看| av资源网一区| 欧美人与z0zoxxxx视频| 久久一区二区视频| 最新成人av在线| 亚洲h在线观看| 国产自产2019最新不卡| 99久久免费视频.com| 欧美性色黄大片| 欧美精品一区二区三区一线天视频 | 懂色av一区二区三区蜜臀| 国产成人av福利| 91国偷自产一区二区三区成为亚洲经典| 精品视频1区2区| 国产亚洲欧美激情| 亚洲另类色综合网站| 日本系列欧美系列| 国产成人亚洲综合色影视| 色欧美片视频在线观看| 精品国产乱码久久久久久图片| 日本一区二区不卡视频| 无吗不卡中文字幕| 国产91精品久久久久久久网曝门| 欧美性做爰猛烈叫床潮| 久久综合九色综合97婷婷| 亚洲精品水蜜桃| 精品一区二区三区免费观看| 99久久国产免费看| 日韩久久免费av| 亚洲人亚洲人成电影网站色| 美女视频网站久久| 99精品在线观看视频| 日韩三区在线观看| 亚洲精品成人悠悠色影视| 国产一区二区三区四区在线观看 | 色综合久久中文字幕| 欧美成人一区二区三区片免费| 亚洲人成精品久久久久| 国产真实精品久久二三区| 欧美视频一区二区在线观看| 久久久久久99久久久精品网站| 天天影视色香欲综合网老头| 成人免费高清在线观看| 日韩欧美国产午夜精品| 亚洲无线码一区二区三区| 国产91精品露脸国语对白| 精品精品欲导航| 视频一区在线播放| 91极品美女在线| 国产精品亚洲一区二区三区妖精| 日本韩国欧美在线| 欧美韩日一区二区三区四区| 麻豆精品精品国产自在97香蕉| 欧美在线观看你懂的| 国产精品成人免费在线| 国内精品第一页| 日韩美女一区二区三区四区| 亚洲午夜久久久| 色综合夜色一区| 国产精品久久99| 国产成人在线视频网站| 精品免费视频一区二区| 视频一区二区三区中文字幕| 91成人看片片| 亚洲美女屁股眼交| 91理论电影在线观看| 日本一区二区高清| 成人永久aaa| 国产精品欧美精品| 国产成都精品91一区二区三| 久久久久亚洲蜜桃| 国产成人亚洲综合a∨婷婷 | 精品视频在线视频| 亚洲午夜免费福利视频| 欧美视频在线观看一区二区| 亚洲一卡二卡三卡四卡| 在线亚洲+欧美+日本专区| 亚洲精选视频免费看| 在线一区二区视频| 午夜欧美电影在线观看| 在线成人小视频| 久久国产综合精品| 久久久五月婷婷| 国产91综合一区在线观看| 国产欧美日韩综合| 99久久国产综合精品色伊| 亚洲视频图片小说| 欧美伊人久久久久久午夜久久久久| 亚洲免费在线视频一区 二区| 91激情在线视频| 视频在线观看一区二区三区| 欧美va在线播放| 国产乱国产乱300精品| 国产精品久久久久7777按摩| 成人高清免费观看| 一区二区欧美精品| 日韩视频在线你懂得| 国产精品自拍av| 亚洲人被黑人高潮完整版| 欧美美女一区二区三区| 韩国精品主播一区二区在线观看 | 一个色妞综合视频在线观看| 欧美三级午夜理伦三级中视频| 婷婷久久综合九色国产成人 | 一区二区三区日韩欧美精品| 欧美日本韩国一区二区三区视频 | av成人免费在线观看| 亚洲一级二级在线| 日韩亚洲欧美在线| 不卡一区二区中文字幕| 亚洲一区国产视频| 久久综合五月天婷婷伊人| youjizz国产精品| 欧美色区777第一页| 久久精品国产在热久久| 国产精品久久久久天堂| 正在播放亚洲一区| 国产成人av电影在线播放| 一区二区在线免费观看| 日韩欧美成人一区二区| 91免费小视频| 精品亚洲aⅴ乱码一区二区三区| 国产精品短视频| 日韩一级二级三级精品视频| 成人av免费在线观看| 日韩av一区二区在线影视| 日本一区二区三区国色天香| 欧美伊人久久大香线蕉综合69| 激情综合五月婷婷| 亚洲一区二区av电影| 日本一区二区三区免费乱视频| 91精品国产综合久久福利软件 | 亚洲伦在线观看| 欧美成人福利视频| 在线精品视频小说1| 国产精品一区二区在线播放| 亚洲国产美国国产综合一区二区| 国产欧美精品日韩区二区麻豆天美| 精品视频1区2区| 91免费观看国产| 国产精品亚洲专一区二区三区 | 26uuu亚洲|