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

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

?? enc_dtx.c

?? Linux 影片撥放解碼 Video DVD
?? C
?? 第 1 頁(yè) / 共 3 頁(yè)
字號(hào):
 * E_DTX_hangover_addition
 *
 * Parameters:
 *    st              I/0: State struct
 *    low_power         I: flag power of the input frame
 *    hang_len          I: hangover length
 *    burst_len         I: minimum burst length for hangover addition
 *
 * Function:
 *    Add hangover after speech bursts.
 *
 * Returns:
 *    VAD_flag indicating final VAD decision
 */
static Word16 E_DTX_hangover_addition(E_DTX_Vad_State *st, Word16 low_power,
                                      Word16 hang_len, Word16 burst_len)
{
   /*
    * if the input power (pow_sum) is lower than a threshold, clear
    * counters and set VAD_flag to "0"  "fast exit"
    */

   if (low_power != 0)
   {
      st->mem_burst_count = 0;
      st->mem_hang_count = 0;
      return 0;
   }

   /* update the counters (hang_count, burst_count) */

   if ((st->mem_vadreg & 0x4000) != 0)
   {
      st->mem_burst_count++;

      if (st->mem_burst_count >= burst_len)
      {
         st->mem_hang_count = hang_len;
      }
      return 1;
   }
   else
   {
      st->mem_burst_count = 0;

      if (st->mem_hang_count > 0)
      {
         st->mem_hang_count--;
         return 1;
      }
   }
   return 0;
}

/*
 * E_DTX_noise_estimate_update
 *
 * Parameters:
 *    st           I/0: State struct
 *    level          I: sub-band levels of the input frame
 *
 * Function:
 *    Update of background noise estimate
 *
 * Returns:
 *    void
 */
static void E_DTX_noise_estimate_update(E_DTX_Vad_State *st, Float32 level[])
{

   Float32 alpha_up, alpha_down, bckr_add, temp;
   Word32 i;

   /* Control update of bckr_est[] */
   E_DTX_update_cntrl(st, level);

   /* Choose update speed */
   bckr_add = 2.0;


   if ((0x7800 & st->mem_vadreg) == 0)
   {
      alpha_up = ALPHA_UP1;
      alpha_down = ALPHA_DOWN1;
   }
   else
   {

      if (st->mem_stat_count == 0)
      {
         alpha_up = ALPHA_UP2;
         alpha_down = ALPHA_DOWN2;
      }
      else
      {
         alpha_up = 0.0;
         alpha_down = ALPHA3;
         bckr_add = 0.0;
      }
   }

   /* Update noise estimate (bckr_est) */
   for (i = 0; i < COMPLEN; i++)
   {
      temp = st->mem_level[i] - st->mem_bckr_est[i];

      if (temp < 0.0)
      { /* update downwards*/
         st->mem_bckr_est[i] += -2 + (alpha_down * temp);

         /* limit minimum value of the noise estimate to NOISE_MIN */

         if (st->mem_bckr_est[i] < NOISE_MIN)
         {
            st->mem_bckr_est[i] = NOISE_MIN;
         }
      }
      else
      { /* update upwards */
         st->mem_bckr_est[i] += bckr_add + (alpha_up * temp);

         /* limit maximum value of the noise estimate to NOISE_MAX */

         if (st->mem_bckr_est[i] > NOISE_MAX)
         {
            st->mem_bckr_est[i] = NOISE_MAX;
         }
      }
   }

   /* Update signal levels of the previous frame (old_level) */
   memcpy(st->mem_level, level, COMPLEN * sizeof(Float32));
}

/*
 * E_DTX_decision
 *
 * Parameters:
 *    st           I/0: State struct
 *    level          I: sub-band levels of the input frame
 *    pow_sum        I: power of the input frame
 *
 * Function:
 *    Calculates VAD_flag
 *
 * Returns:
 *    VAD_flag
 */
static Word16 E_DTX_decision(E_DTX_Vad_State *st, Float32 level[COMPLEN], Float64 pow_sum)
{
   Float64 snr_sum;
   Float32 vad_thr, temp, noise_level;
   Float32 ilog2_speech_level, ilog2_noise_level;
   Float32 temp2;
   Word32 i;
   Word16 low_power_flag;
   Word16 hang_len,burst_len;

   /*
    * Calculate squared sum of the input levels (level)
    * divided by the background noise components (bckr_est).
    */
   snr_sum = 0.0;

   for (i = 0; i < COMPLEN; i++)
   {
      temp = level[i] / st->mem_bckr_est[i];
      snr_sum += temp * temp;
   }

   /* Calculate average level of estimated background noise */
   temp = 0.0;

   for (i = 1; i < COMPLEN; i++) /* ignore lowest band */
   {
      temp += st->mem_bckr_est[i];
   }

   noise_level = (Float32)(temp * 0.0625);
   /*
    * if SNR is lower than a threshold (MIN_SPEECH_SNR),
    * and increase speech_level
    */
   temp = noise_level * MIN_SPEECH_SNR * 8;

   if (st->mem_speech_level <= temp)
   {
      st->mem_speech_level = temp;

      /* avoid log10 error */
      temp -= 1E-8F;
   }
   
   ilog2_noise_level = (Float32)(-1024.0F * log10(noise_level / 2147483648.0F) / log10(2.0F));
  
   /*
    * If SNR is very poor, speech_level is probably corrupted by noise level. This
    * is correctred by subtracting -MIN_SPEECH_SNR*noise_level from speech level
    */
   ilog2_speech_level = (Float32)(-1024.0F * log10((st->mem_speech_level - temp) / 2147483648.0F) / log10(2.0F));

   temp = NO_SLOPE * (ilog2_noise_level- NO_P1) + THR_HIGH;

   temp2 = SP_CH_MIN + SP_SLOPE * (ilog2_speech_level - SP_P1);

   if (temp2 < SP_CH_MIN)
   {
      temp2 = SP_CH_MIN;
   }

   if (temp2 > SP_CH_MAX)
   {
      temp2 = SP_CH_MAX;
   }

   vad_thr = temp + temp2;

   if (vad_thr < THR_MIN)
   {
      vad_thr = THR_MIN;
   }

   /* Shift VAD decision register */
   st->mem_vadreg = (Word16)(st->mem_vadreg >> 1);

   /* Make intermediate VAD decision */

   if (snr_sum > (vad_thr * (Float32)COMPLEN / 128.0F))
   {
      st->mem_vadreg = (Word16)(st->mem_vadreg | 0x4000);
   }
   /* primary vad decision made */

   /* check if the input power (pow_sum) is lower than a threshold" */

   if (pow_sum < VAD_POW_LOW)
   {
      low_power_flag = 1;
   }
   else
   {
      low_power_flag = 0;
   }

   /* Update speech subband background noise estimates */
   E_DTX_noise_estimate_update(st, level);

   hang_len = (Word16)((HANG_SLOPE * (vad_thr - HANG_P1) - 0.5) + HANG_HIGH);

   if (hang_len < HANG_LOW)
   {
      hang_len = HANG_LOW;
   }

   burst_len = (Word16)((BURST_SLOPE * (vad_thr - BURST_P1) - 0.5) + BURST_HIGH);

   return(E_DTX_hangover_addition(st, low_power_flag, hang_len,burst_len));
}

/*
 * E_DTX_dpeech_estimate
 *
 * Parameters:
 *    st           I/0: State struct
 *    in_level       I: level of the input frame
 *
 * Function:
 *    Estimate speech level
 *
 *    Maximum signal level is searched and stored to the variable sp_max.
 *    The speech frames must locate within SP_EST_COUNT number of frames to be counted.
 *    Thus, noisy frames having occasional VAD = "1" decisions will not
 *    affect to the estimated speech_level.
 *
 * Returns:
 *    void
 */
static void E_DTX_speech_estimate(E_DTX_Vad_State *st, Float32 in_level)
{
   Float32 alpha, tmp;

   /* if the required activity count cannot be achieved, reset counters */
   if (SP_ACTIVITY_COUNT  > (SP_EST_COUNT - st->mem_sp_est_cnt + st->mem_sp_max_cnt))
   {
      st->mem_sp_est_cnt = 0;
      st->mem_sp_max = 0.0;
      st->mem_sp_max_cnt = 0;
   }

   st->mem_sp_est_cnt++;

   if (((st->mem_vadreg & 0x4000) || (in_level > st->mem_speech_level))
      && (in_level > MIN_SPEECH_LEVEL1))
   {
      if (in_level > st->mem_sp_max)
      {
         st->mem_sp_max = in_level;
      }

      st->mem_sp_max_cnt++;

      if (st->mem_sp_max_cnt >= SP_ACTIVITY_COUNT)
      {

         tmp = st->mem_sp_max / 2.0F; /* scale to get "average" speech level*/

         if (tmp > st->mem_speech_level)
         {
            alpha = ALPHA_SP_UP;
         }
         else
         {
            alpha = ALPHA_SP_DOWN;
         }

         if (tmp > MIN_SPEECH_LEVEL2)
         {
            st->mem_speech_level += alpha * (tmp - st->mem_speech_level);
         }

         st->mem_sp_max = 0.0;
         st->mem_sp_max_cnt = 0;
         st->mem_sp_est_cnt = 0;
      }
   }
}

/*
 * E_DTX_vad_reset
 *
 * Parameters:
 *    state        I/0: State struct
 *
 * Function:
 *    Initialises state memory
 *
 * Returns:
 *    non-zero with error, zero for ok
 */
Word32 E_DTX_vad_reset (E_DTX_Vad_State *state)
{
   Word32 i;

   if (state == (E_DTX_Vad_State *) NULL)
   {
      return -1;
   }

   /* Initialize pitch detection variables */
   state->mem_pitch_tone = 0;
   state->mem_vadreg = 0;
   state->mem_hang_count = 0;
   state->mem_burst_count = 0;
   state->mem_hang_count = 0;

   /* initialize memory used by the filter bank */
   memset(state->mem_a_data5, 0, F_5TH_CNT * 2 * sizeof(Float32));
   memset(state->mem_a_data3, 0, F_3TH_CNT * sizeof(Float32));

   /* initialize the rest of the memory */
   for (i = 0; i < COMPLEN; i++)
   {
      state->mem_bckr_est[i] = NOISE_INIT;
      state->mem_level[i] = NOISE_INIT;
      state->mem_ave_level[i] = NOISE_INIT;
      state->mem_sub_level[i] = 0;
   }

   state->mem_sp_est_cnt = 0;
   state->mem_sp_max = 0;
   state->mem_sp_max_cnt = 0;
   state->mem_speech_level = SPEECH_LEVEL_INIT;
   state->mem_pow_sum = 0;
   state->mem_stat_count = 0;

   return 0;
}

/*
 * E_DTX_vad_init
 *
 * Parameters:
 *    state        I/0: State struct
 *
 * Function:
 *    Allocates state memory and initializes state memory
 *
 * Returns:
 *    non-zero with error, zero for ok
 */
Word32 E_DTX_vad_init (E_DTX_Vad_State **state)
{
   E_DTX_Vad_State* s;

   if (state == (E_DTX_Vad_State **) NULL)
   {
      return -1;
   }
   *state = NULL;

   /* allocate memory */
   if ((s = (E_DTX_Vad_State *) malloc(sizeof(E_DTX_Vad_State))) == NULL)
   {
      return -1;
   }

   E_DTX_vad_reset(s);

   *state = s;

   return 0;
}

/*
 * E_DTX_vad_exit
 *
 * Parameters:
 *    state        I/0: State struct
 *
 * Function:
 *    The memory used for state memory is freed
 *
 * Returns:
 *    void
 */
void E_DTX_vad_exit (E_DTX_Vad_State **state)
{
   if (state == NULL || *state == NULL)
   {
      return;
   }

   /* deallocate memory */
   free(*state);
   *state = NULL;

   return;
}

/*
 * E_DTX_pitch_tone_detection
 *
 * Parameters:
 *    state        I/0: State struct
 *    p_gain         I: pitch gain
 *
 * Function:
 *    Set tone flag if pitch gain is high. This is used to detect
 *    signaling tones and other signals with high pitch gain.
 *
 * Returns:
 *    void
 */
void E_DTX_pitch_tone_detection (E_DTX_Vad_State *st, Float32 p_gain)
{
   /* update tone flag and pitch flag */
   st->mem_pitch_tone = (Word16)(st->mem_pitch_tone >> 1);

   /* if (pitch_gain > TONE_THR) set tone flag */
   if (p_gain > TONE_THR)
   {
      st->mem_pitch_tone = (Word16)(st->mem_pitch_tone | 0x4000);
   }
}

/*
 * E_DTX_vad
 *
 * Parameters:
 *    st           I/0: State struct
 *    in_buf         I: samples of the input frame
 *
 * Function:
 *    Main program for Voice Activity Detection (VAD)
 *
 * Returns:
 *    VAD Decision, 1 = speech, 0 = noise
 */
Word16 E_DTX_vad(E_DTX_Vad_State *st, Float32 in_buf[])
{
   Float64 L_temp, pow_sum;
   Float32 level[COMPLEN];
   Float32 temp;
   Word32 i;
   Word16 VAD_flag;

   /* Calculate power of the input frame. */
   L_temp = 0.0;

   for (i = 0; i < FRAME_LEN; i++)
   {
      L_temp += in_buf[i] * in_buf[i];
   }

   L_temp *= 2.0;

   /* pow_sum = power of current frame and previous frame */
   pow_sum = L_temp + st->mem_pow_sum;

   /* save power of current frame for next call */
   st->mem_pow_sum = L_temp;

   /* If input power is very low, clear tone flag */
   if (pow_sum < POW_PITCH_TONE_THR)
   {
      st->mem_pitch_tone = (Word16)(st->mem_pitch_tone & 0x1fff);
   }

   /*  Run the filter bank and calculate signal levels at each band */
   E_DTX_filter_bank(st, in_buf, level);

   /* compute VAD decision */
   VAD_flag = E_DTX_decision(st, level, pow_sum);

   /* Calculate input level */
   L_temp = 0.0;
   for (i = 1; i < COMPLEN; i++) /* ignore lowest band */
   {
      L_temp += level[i];
   }

   temp = (Float32)(L_temp / 16.0F);

   E_DTX_speech_estimate(st, temp); /* Estimate speech level */

   return(VAD_flag);
}

?? 快捷鍵說(shuō)明

復(fù)制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號(hào) Ctrl + =
減小字號(hào) Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
成人性生交大片免费| 97久久精品人人爽人人爽蜜臀| 欧美日韩一区二区欧美激情| 一区二区三区四区亚洲| 9i看片成人免费高清| 欧美国产日本视频| 国产成人精品免费视频网站| 久久久国产精华| 国产精品影视网| 日本一区二区免费在线| 国产激情一区二区三区四区| 国产日韩欧美麻豆| 成人性生交大合| 国产精品久久久久久户外露出| 懂色一区二区三区免费观看| 国产精品日日摸夜夜摸av| 粉嫩高潮美女一区二区三区| 国产精品日日摸夜夜摸av| 99国产欧美另类久久久精品| 亚洲色图清纯唯美| 在线看国产一区| 午夜久久久影院| 91精品久久久久久久91蜜桃| 蜜桃视频在线观看一区二区| 精品国产一区二区三区久久久蜜月| 久久99深爱久久99精品| 久久久美女毛片| 成人丝袜高跟foot| 亚洲免费av高清| 欧美日韩亚洲综合一区| 日本不卡123| 久久精品男人的天堂| 成人毛片老司机大片| 亚洲柠檬福利资源导航| 欧美日韩在线直播| 黄色日韩三级电影| 国产精品热久久久久夜色精品三区| 99九九99九九九视频精品| 一区二区不卡在线播放| 91精品国产品国语在线不卡| 国产永久精品大片wwwapp| 中文字幕在线免费不卡| 欧美性猛片aaaaaaa做受| 裸体在线国模精品偷拍| 亚洲国产电影在线观看| 欧美伊人久久大香线蕉综合69| 日韩专区中文字幕一区二区| 26uuu亚洲婷婷狠狠天堂| 成人av集中营| 亚洲第一综合色| www成人在线观看| 色综合中文综合网| 欧美视频自拍偷拍| 精品制服美女久久| 亚洲欧洲精品天堂一级| 7878成人国产在线观看| 国产一区二区视频在线播放| 亚洲免费高清视频在线| 精品乱码亚洲一区二区不卡| 99精品国产99久久久久久白柏| 日韩国产在线观看| 中文字幕一区二区三区在线观看| 欧美日韩一区二区三区四区五区| 极品美女销魂一区二区三区免费| 中文字幕一区二区三区在线播放| 4hu四虎永久在线影院成人| 国产suv一区二区三区88区| 五月激情综合婷婷| 日本一二三不卡| 欧美一区二区三区免费大片| 国产成人日日夜夜| 午夜电影久久久| 国产精品免费视频网站| 欧美一区二区二区| 91精彩视频在线观看| 国产一区欧美日韩| 午夜精品福利在线| 欧美经典一区二区三区| 国产风韵犹存在线视精品| 亚洲成人av免费| 日韩美女视频一区二区| 精品福利一区二区三区| 欧美伊人久久大香线蕉综合69| 国产精品一二三区在线| 日韩激情av在线| 亚洲伦在线观看| 国产调教视频一区| 欧美一区二区在线免费观看| 色婷婷综合视频在线观看| 国产一区二区三区日韩| 日韩一区欧美二区| 一区二区三区在线看| 欧美国产1区2区| 欧美xxxxxxxx| 欧美剧情片在线观看| 91麻豆福利精品推荐| 国产成人福利片| 老司机午夜精品99久久| 日韩高清不卡一区二区三区| 亚洲精品免费在线| 国产精品欧美极品| 久久久久久久久久久久久夜| 日韩视频一区二区三区| 在线播放日韩导航| 欧美优质美女网站| 色婷婷久久99综合精品jk白丝| 成人影视亚洲图片在线| 国产在线视频一区二区三区| 青青草国产成人av片免费| 亚洲一区精品在线| 亚洲精品成人悠悠色影视| 亚洲欧美自拍偷拍| 国产精品视频麻豆| 国产精品女主播av| 国产精品网曝门| 日本一二三四高清不卡| 欧美激情一区二区在线| 久久久精品国产免大香伊| 久久免费电影网| 久久婷婷成人综合色| 亚洲精品一区在线观看| 精品乱人伦一区二区三区| 日韩一区二区中文字幕| 日韩欧美中文字幕公布| 欧美一区中文字幕| 91精品一区二区三区在线观看| 欧美图区在线视频| 欧美三区在线视频| 欧美久久婷婷综合色| 欧美群妇大交群的观看方式| 欧美人狂配大交3d怪物一区| 欧美日韩成人综合在线一区二区| 欧美日韩在线三级| 欧美精品一级二级| 日韩一区二区三区高清免费看看| 日韩一级二级三级| 精品国产一二三区| 久久久久国色av免费看影院| 国产亚洲欧美色| 中文字幕一区二区三区四区不卡 | 成人午夜视频网站| 91在线视频免费观看| 一本在线高清不卡dvd| 91黄色激情网站| 欧美日本一道本| 欧美变态口味重另类| 国产视频一区在线播放| 亚洲欧洲日本在线| 亚洲愉拍自拍另类高清精品| 香蕉成人伊视频在线观看| 免费在线观看精品| 国产成人在线视频免费播放| 成人动漫在线一区| 欧美性生活影院| 日韩一区二区麻豆国产| 久久久国产精华| 亚洲日本一区二区| 亚洲bt欧美bt精品| 韩国精品免费视频| www.99精品| 欧美日韩日日摸| xvideos.蜜桃一区二区| 国产精品天天摸av网| 亚洲最新在线观看| 男人的天堂亚洲一区| 成人在线视频首页| 欧美性猛片xxxx免费看久爱| 日韩欧美国产综合一区| 日本一区二区三区高清不卡| 亚洲综合视频网| 激情欧美日韩一区二区| 91蜜桃婷婷狠狠久久综合9色| 欧美日韩国产一区| 久久久国产午夜精品| 一区二区三区四区蜜桃 | 天堂蜜桃91精品| 国产伦精品一区二区三区免费| www.亚洲激情.com| 欧美一区在线视频| 国产精品乱码一区二三区小蝌蚪| 亚洲国产一区二区a毛片| 精品一区二区三区香蕉蜜桃| 99re这里只有精品视频首页| 666欧美在线视频| 国产精品色一区二区三区| 丝袜亚洲另类丝袜在线| 高清国产一区二区| 欧美日韩三级视频| 国产精品嫩草影院av蜜臀| 日韩激情一二三区| 99久久99久久久精品齐齐| 欧美成人精品1314www| 亚洲色图色小说| 国产剧情一区二区三区| 欧美丝袜第三区| 欧美国产激情二区三区| 热久久免费视频| 一本色道亚洲精品aⅴ| 精品国产一区二区精华| 亚洲午夜电影在线|