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

? 歡迎來到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關于我們
? 蟲蟲下載站

?? sp_enc.c

?? Linux 影片撥放解碼 Video DVD
?? C
?? 第 1 頁 / 共 5 頁
字號:
/*
 * ===================================================================
 *  TS 26.104
 *  R99   V3.5.0 2003-03
 *  REL-4 V4.4.0 2003-03
 *  REL-5 V5.1.0 2003-03
 *  3GPP AMR Floating-point Speech Codec
 * ===================================================================
 *
 */

/*
 * sp_enc.c
 *
 *
 * Project:
 *    AMR Floating-Point Codec
 *
 * Contains:
 *    This module contains all the functions needed encoding 160
 *    16-bit speech samples to AMR encoder parameters.
 *
 */
#include <stdlib.h>
#include <stdio.h>
#include <memory.h>
#include <math.h>
#include <float.h>
#include "sp_enc.h"
#include "rom_enc.h"

/*
 * Definition of structures used in encoding process
 */
typedef struct
{
   Float32 y2;
   Float32 y1;
   Float32 x0;
   Float32 x1;

}Pre_ProcessState;

#ifdef VAD2

/* Defines for VAD2 */
#define	FRM_LEN1		80
#define	DELAY0			24
#define	FFT_LEN1		128

#define	UPDATE_CNT_THLD1	50

#define	INIT_FRAMES		4

#define	CNE_SM_FAC1		0.1
#define	CEE_SM_FAC1		0.55

#define	HYSTER_CNT_THLD1	6	/* forced update constants... */
#define	HIGH_ALPHA1		0.9
#define	LOW_ALPHA1		0.7
#define	ALPHA_RANGE1		(HIGH_ALPHA1-LOW_ALPHA1)

#define NORM_ENRG		(4.0)	/* account for div by 2 by the HPF */
#define	MIN_CHAN_ENRG		(0.0625 / NORM_ENRG)
#define	INE			(16.0 / NORM_ENRG)
#define	NOISE_FLOOR		(1.0 / NORM_ENRG)

#define	PRE_EMP_FAC1		(-0.8)

#define	NUM_CHAN		16
#define	LO_CHAN			0
#define	HI_CHAN			15
#define	UPDATE_THLD		35

#define	SINE_START_CHAN		2
#define	P2A_THRESH		10.0
#define	DEV_THLD1		28.0

/* Defines for the FFT function */
#define	SIZE			128
#define	SIZE_BY_TWO		64
#define	NUM_STAGE		6

#define	PI			3.141592653589793

#define	TRUE			1
#define	FALSE			0

/* Macros */
#define	min(a,b)		((a)<(b)?(a):(b))
#define	max(a,b)		((a)>(b)?(a):(b))
#define	square(a)		((a)*(a))

/* structures */
typedef struct
{
  Float32 pre_emp_mem;
  Word16  update_cnt;
  Word16  hyster_cnt;
  Word16  last_update_cnt;
  Float32 ch_enrg_long_db[NUM_CHAN];
  Word32  Lframe_cnt;
  Float32 ch_enrg[NUM_CHAN];
  Float32 ch_noise[NUM_CHAN];
  Float32 tsnr;
  Word16  hangover;
  Word16  burstcount;
  Word16  fupdate_flag;
  Float32 negSNRvar;
  Float32 negSNRbias;
  Float32 R0;
  Float32 Rmax;
  Word16  LTP_flag;
}vadState;
#else
typedef struct
{
   Float32 bckr_est[COMPLEN];   /* background noise estimate */
   Float32 ave_level[COMPLEN];


   /* averaged input components for stationary estimation */
   Float32 old_level[COMPLEN];   /* input levels of the previous frame */
   Float32 sub_level[COMPLEN];


   /* input levels calculated at the end of a frame (lookahead) */
   Float32 a_data5[3][2];   /* memory for the filter bank */
   Float32 a_data3[5];   /* memory for the filter bank */
   Float32 best_corr_hp;   /* FIP filtered value */


   /* counts length of a speech burst incl HO addition */
   Float32 corr_hp_fast;   /* filtered value */
   Word32 vadreg;   /* flags for intermediate VAD decisions */
   Word32 pitch;   /* flags for pitch detection */
   Word32 oldlag_count, oldlag;   /* variables for pitch detection */
   Word32 complex_high;   /* flags for complex detection */
   Word32 complex_low;   /* flags for complex detection */
   Word32 complex_warning;   /* complex background warning */
   Word32 tone;   /* flags for tone detection */
   Word16 burst_count;   /* counts length of a speech burst */
   Word16 hang_count;   /* hangover counter */
   Word16 stat_count;   /* stationary counter */
   Word16 complex_hang_count;   /* complex hangover counter, used by VAD */
   Word16 complex_hang_timer;   /* hangover initiator, used by CAD */
   Word16 speech_vad_decision;   /* final decision */
   Word16 sp_burst_count;


}vadState;
#endif
#define DTX_HIST_SIZE 8
#define DTX_ELAPSED_FRAMES_THRESH (24 + 7 -1)
#define DTX_HANG_CONST 7   /* yields eight frames of SP HANGOVER */
typedef struct
{
   Float32 lsp_hist[M * DTX_HIST_SIZE];
   Float32 log_en_hist[DTX_HIST_SIZE];
   Word32 init_lsf_vq_index;
   Word16 hist_ptr;
   Word16 log_en_index;
   Word16 lsp_index[3];


   /* DTX handler stuff */
   Word16 dtxHangoverCount;
   Word16 decAnaElapsedCount;


}dtx_encState;
typedef struct
{
   /* gain history */
   Float32 gp[N_FRAME];


   /* counters */
   Word16 count;


}tonStabState;
typedef struct
{
   Word32 past_qua_en[4];


   /* normal MA predictor memory, (contains 20*log10(qua_err)) */
}gc_predState;

typedef struct
{
   Float32 prev_alpha;   /* previous adaptor output, */
   Float32 prev_gc;   /* previous code gain, */
   Float32 ltpg_mem[LTPG_MEM_SIZE];   /* LTP coding gain history, */
   Word16 onset;   /* onset state, */


   /* (ltpg_mem[0] not used for history) */
}gain_adaptState;
typedef struct
{

   Float32 sf0_target_en;
   Float32 sf0_coeff[5];
   Word32 sf0_gcode0_exp;
   Word32 sf0_gcode0_fra;
   Word16 *gain_idx_ptr;


   gc_predState * gc_predSt;
   gc_predState * gc_predUncSt;
   gain_adaptState * adaptSt;
}gainQuantState;
typedef struct
{
   Word32 T0_prev_subframe;   /* integer pitch lag of previous sub-frame */


}Pitch_frState;
typedef struct
{
   Pitch_frState * pitchSt;
}clLtpState;
typedef struct
{
   Float32 ada_w;
   Word32 old_T0_med;
   Word16 wght_flg;


}pitchOLWghtState;
typedef struct
{
   Float32 past_rq[M];   /* Past quantized prediction error */


}Q_plsfState;
typedef struct
{
   /* Past LSPs */
   Float32 lsp_old[M];
   Float32 lsp_old_q[M];


   /* Quantization state */
   Q_plsfState * qSt;
}lspState;
typedef struct
{
   Float32 old_A[M + 1];   /* Last A(z) for case of unstable filter */


}LevinsonState;
typedef struct
{
   LevinsonState * LevinsonSt;
}lpcState;
typedef struct
{
   /* Speech vector */
   Float32 old_speech[L_TOTAL];
   Float32 *speech, *p_window, *p_window_12k2;
   Float32 *new_speech;   /* Global variable */


   /* Weight speech vector */
   Float32 old_wsp[L_FRAME + PIT_MAX];
   Float32 *wsp;


   /* OL LTP states */
   Word32 old_lags[5];
   Float32 ol_gain_flg[2];


   /* Excitation vector */
   Float32 old_exc[L_FRAME + PIT_MAX + L_INTERPOL];
   Float32 *exc;


   /* Zero vector */
   Float32 ai_zero[L_SUBFR + MP1];
   Float32 *zero;


   /* Impulse response vector */
   Float32 *h1;
   Float32 hvec[L_SUBFR * 2];


   /* Substates */
   lpcState * lpcSt;
   lspState * lspSt;
   clLtpState * clLtpSt;
   gainQuantState * gainQuantSt;
   pitchOLWghtState * pitchOLWghtSt;
   tonStabState * tonStabSt;
   vadState * vadSt;

   Word32 dtx;


   dtx_encState * dtxEncSt;

   /* Filter's memory */
   Float32 mem_syn[M], mem_w0[M], mem_w[M];
   Float32 mem_err[M + L_SUBFR], *error;
   Float32 sharp;


}cod_amrState;
typedef struct
{
   cod_amrState * cod_amr_state;
   Pre_ProcessState * pre_state;

   Word32 dtx;


}Speech_Encode_FrameState;


/*
 * Dotproduct40
 *
 *
 * Parameters:
 *    x                 I: First input
 *    y                 I: Second input
 * Function:
 *    Computes dot product size 40
 *
 * Returns:
 *    acc                dot product
 */
static Float64 Dotproduct40( Float32 *x, Float32 *y )
{
   Float64 acc;


   acc = x[0] * y[0] + x[1] * y[1] + x[2] * y[2] + x[3] * y[3];
   acc += x[4] * y[4] + x[5] * y[5] + x[6] * y[6] + x[7] * y[7];
   acc += x[8] * y[8] + x[9] * y[9] + x[10] * y[10] + x[11] * y[11];
   acc += x[12] * y[12] + x[13] * y[13] + x[14] * y[14] + x[15] * y[15];
   acc += x[16] * y[16] + x[17] * y[17] + x[18] * y[18] + x[19] * y[19];
   acc += x[20] * y[20] + x[21] * y[21] + x[22] * y[22] + x[23] * y[23];
   acc += x[24] * y[24] + x[25] * y[25] + x[26] * y[26] + x[27] * y[27];
   acc += x[28] * y[28] + x[29] * y[29] + x[30] * y[30] + x[31] * y[31];
   acc += x[32] * y[32] + x[33] * y[33] + x[34] * y[34] + x[35] * y[35];
   acc += x[36] * y[36] + x[37] * y[37] + x[38] * y[38] + x[39] * y[39];
   return( acc );
}


/*
 * Autocorr
 *
 *
 * Parameters:
 *    x                 I: Input signal
 *    r                 O: Autocorrelations
 *    wind              I: Window for LPC analysis
 * Function:
 *    Calculate autocorrelation with window, LPC order = M
 *
 * Returns:
 *    void
 */
static void Autocorr( Float32 x[], Float32 r[], const Float32 wind[] )
{
   Word32 i, j;   /* Counters */
   Float32 y[L_WINDOW + M + 1];   /* Windowed signal */
   Float64 sum;   /* temp */


   /*
    * Windowing of signal
    */
   for ( i = 0; i < L_WINDOW; i++ ) {
      y[i] = x[i] * wind[i];
   }

   /*
    * Zero remaining memory
    */
   memset( &y[L_WINDOW], 0, 44 );

   /*
    * Autocorrelation
    */
   for ( i = 0; i <= M; i++ ) {
      sum = 0;

      for ( j = 0; j < L_WINDOW; j += 40 ) {
         sum += Dotproduct40( &y[j], &y[j + i] );
      }
      r[i] = (Float32)sum;
   }
}


/*
 * Levinson
 *
 *
 * Parameters:
 *    old_A             I: Vector of old LP coefficients [M+1]
 *    r                 I: Vector of autocorrelations    [M+1]
 *    a                 O: LP coefficients               [M+1]
 *    rc                O: Reflection coefficients       [4]
 * Function:
 *    Levinson-Durbin algorithm
 *
 * Returns:
 *    void
 *
 */
static void Levinson( Float32 *old_A, Float32 *r, Float32 *A, Float32 *rc )
{
   Float32 sum, at, err;
   Word32 l, j, i;
   Float32 rct[M];   /* temporary reflection coefficients  0,...,m-1 */


   rct[0] = ( -r[1] ) / r[0];
   A[0] = 1.0F;
   A[1] = rct[0];
   err = r[0] + r[1] * rct[0];

   if ( err <= 0.0 )
      err = 0.01F;

   for ( i = 2; i <= M; i++ ) {
      sum = 0.0F;

      for ( j = 0; j < i; j++ )
         sum += r[i - j] * A[j];
      rct[i - 1] = ( -sum ) / ( err );

      for ( j = 1; j <= ( i / 2 ); j++ ) {
         l = i - j;
         at = A[j] + rct[i - 1] *A[l];
         A[l] += rct[i - 1] *A[j];
         A[j] = at;
      }
      A[i] = rct[i - 1];
      err += rct[i - 1] *sum;

      if ( err <= 0.0 )
         err = 0.01F;
   }
   memcpy( rc, rct, 4 * sizeof( Float32 ) );
   memcpy( old_A, A, MP1 * sizeof( Float32 ) );
}


/*
 * lpc
 *
 *
 * Parameters:
 *    old_A             O: Vector of old LP coefficients [M+1]
 *    x                 I: Input signal
 *    x_12k2            I: Input signal 12.2k
 *    a                 O: predictor coefficients
 *    mode              I: AMR mode
 * Function:
 *    LP analysis
 *
 *    In 12.2 kbit/s mode linear prediction (LP) analysis is performed
 *    twice per speech frame using the auto-correlation approach with
 *    30 ms asymmetric windows. No lookahead is used in
 *    the auto-correlation computation.
 *
 *    In other modes analysis is performed once per speech frame
 *    using the auto-correlation approach with 30 ms asymmetric windows.
 *    A lookahead of 40 samples (5 ms) is used in the auto-correlation computation.
 *
 *    The auto-correlations of windowed speech are converted to the LP
 *    coefficients using the Levinson-Durbin algorithm.
 *    Then the LP coefficients are transformed to the Line Spectral Pair
 *    (LSP) domain  for quantization and interpolation purposes.
 *    The interpolated quantified and unquantized filter coefficients
 *    are converted back to the LP filter coefficients
 *    (to construct the synthesis and weighting filters at each subframe).
 *
 * Returns:
 *    void
 *
 */
static void lpc( Float32 *old_A, Float32 x[], Float32 x_12k2[], Float32 a[], enum Mode
      mode )
{
   Word32 i;
   Float32 r[MP1];
   Float32 rc[4];


   if ( mode == MR122 ) {
      Autocorr( x_12k2, r, window_160_80 );

      /*
       * Lag windowing
       */
      for ( i = 1; i <= M; i++ ) {
         r[i] = r[i] * lag_wind[i - 1];
      }
      r[0] *= 1.0001F;

      if ( r[0] < 1.0F )
         r[0] = 1.0F;

      /*
       * Levinson Durbin
       */
      Levinson( old_A, r, &a[MP1], rc );

      /*
       * Autocorrelations
       */
      Autocorr( x_12k2, r, window_232_8 );

      /*
       * Lag windowing
       */
      for ( i = 1; i <= M; i++ ) {
         r[i] = r[i] * lag_wind[i - 1];
      }
      r[0] *= 1.0001F;

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
欧美福利视频导航| 91免费国产视频网站| 在线播放91灌醉迷j高跟美女 | 国产无一区二区| 国产精品一区二区无线| 国产欧美日韩一区二区三区在线观看| 国产成人亚洲综合a∨婷婷| 久久亚洲精华国产精华液| 丁香激情综合五月| 亚洲女同ⅹxx女同tv| 欧美亚洲愉拍一区二区| 日本 国产 欧美色综合| 精品欧美乱码久久久久久| 国产69精品久久久久777| 国产精品毛片a∨一区二区三区| 成人禁用看黄a在线| 亚洲精品日产精品乱码不卡| 欧美在线视频你懂得| 免费不卡在线观看| 国产精品欧美一区二区三区| 97se亚洲国产综合在线| 性欧美疯狂xxxxbbbb| 久久青草欧美一区二区三区| 9人人澡人人爽人人精品| 亚洲自拍都市欧美小说| 日韩欧美在线不卡| 97精品视频在线观看自产线路二| 亚洲妇女屁股眼交7| 国产亚洲一区字幕| 精品视频在线免费观看| 国产最新精品精品你懂的| 亚洲视频一二区| 日韩三级.com| 日本乱人伦aⅴ精品| 久久精品久久久精品美女| 国产精品国产三级国产aⅴ中文| 欧美日韩美少妇| 丁香婷婷综合网| 蜜臀久久久久久久| 亚洲精品中文在线| 国产午夜精品久久| 日韩视频免费观看高清完整版 | 99久久夜色精品国产网站| 日本va欧美va瓶| 综合电影一区二区三区 | 欧美午夜精品一区二区蜜桃| 国产一区二区三区av电影| 亚洲女性喷水在线观看一区| 精品福利在线导航| 欧美日韩中文字幕一区二区| 成人激情免费视频| 极品少妇一区二区三区精品视频| 亚洲老司机在线| 国产亚洲一本大道中文在线| 6080午夜不卡| 色综合欧美在线| 成人免费av网站| 国产在线精品一区在线观看麻豆| 亚洲国产三级在线| 国产精品福利在线播放| 久久精品网站免费观看| 日韩精品中午字幕| 7777精品伊人久久久大香线蕉 | 成人午夜在线免费| 精彩视频一区二区| 免费精品99久久国产综合精品| 亚洲制服丝袜av| 亚洲美女视频在线观看| 国产精品毛片无遮挡高清| 久久精品一二三| 久久久亚洲国产美女国产盗摄| 91精品国产欧美一区二区| 欧美综合在线视频| 欧美色手机在线观看| 欧美性色aⅴ视频一区日韩精品| 99re8在线精品视频免费播放| 国产成人av一区| 国产精品一二三四区| 精品在线观看免费| 国产伦精品一区二区三区免费迷 | 亚洲一区二区综合| 亚洲综合精品自拍| 亚洲123区在线观看| 亚洲成av人片一区二区梦乃| 亚洲午夜av在线| 肉肉av福利一精品导航| 日韩专区一卡二卡| 卡一卡二国产精品| 国产精品69毛片高清亚洲| 国产超碰在线一区| 99国产精品久久久久久久久久久| 91一区一区三区| 在线一区二区三区| 欧美嫩在线观看| 精品成人在线观看| 国产欧美一区二区三区鸳鸯浴| 国产精品久久毛片| 亚洲综合男人的天堂| 午夜私人影院久久久久| 免费成人你懂的| 成人一区在线观看| 91传媒视频在线播放| 欧美日韩国产免费一区二区| 欧美mv和日韩mv国产网站| 亚洲国产精品99久久久久久久久| 亚洲人成7777| 蜜臀a∨国产成人精品| 国产精品99久久久久久似苏梦涵| 99久久精品99国产精品| 欧美日韩一区二区欧美激情 | 色婷婷国产精品| 51精品视频一区二区三区| 国产亚洲午夜高清国产拍精品 | 亚洲男同性恋视频| 免费在线观看视频一区| 99综合电影在线视频| 欧美群妇大交群的观看方式| 国产亚洲短视频| 亚洲一区二区三区激情| 国产一区二区精品在线观看| 日本韩国精品一区二区在线观看| 日韩视频在线观看一区二区| 中文字幕一区二区三区四区| 亚洲成人资源在线| 成人高清视频在线观看| 91精品国产高清一区二区三区蜜臀 | 另类小说图片综合网| 不卡的av中国片| 欧美一级爆毛片| 亚洲欧美日韩电影| 韩国v欧美v亚洲v日本v| 欧美日韩一区二区三区高清| 国产精品无人区| 日韩国产欧美在线观看| 91在线丨porny丨国产| 精品国产乱子伦一区| 亚洲国产裸拍裸体视频在线观看乱了| 国产乱码精品一区二区三区忘忧草| 欧洲精品一区二区| 欧美激情一区二区三区蜜桃视频| 香蕉影视欧美成人| 色偷偷成人一区二区三区91| 久久久久久电影| 麻豆91在线观看| 欧美日韩一区三区| 亚洲欧洲在线观看av| 国产精品一区一区三区| 日韩美一区二区三区| 午夜av区久久| 在线观看三级视频欧美| 综合自拍亚洲综合图不卡区| 国产xxx精品视频大全| 日韩欧美国产小视频| 日韩av中文字幕一区二区| 在线观看www91| 亚洲男帅同性gay1069| 99久久精品免费| 国产精品久久一级| 粉嫩13p一区二区三区| 日本一区二区免费在线| 国产精品综合av一区二区国产馆| 精品久久久久99| 理论片日本一区| 精品久久久久久久人人人人传媒| 日韩av午夜在线观看| 91精品一区二区三区久久久久久| 亚洲一本大道在线| 欧美精品乱码久久久久久按摩| 婷婷久久综合九色综合伊人色| 欧美亚洲另类激情小说| 亚洲一级电影视频| 欧美日韩在线精品一区二区三区激情 | 中文字幕乱码一区二区免费| 国产在线精品不卡| 久久综合99re88久久爱| 国产一区在线不卡| 国产欧美日韩一区二区三区在线观看| 国产精品一二三四| 综合网在线视频| 在线看日韩精品电影| 亚洲国产aⅴ成人精品无吗| 欧美日韩亚洲综合在线| 视频一区欧美精品| 日韩女同互慰一区二区| 国产精品99久久不卡二区| 成人欧美一区二区三区| 91国偷自产一区二区开放时间| 亚洲综合成人在线| 日韩欧美一区电影| 国产成人99久久亚洲综合精品| 国产精品亲子伦对白| 欧美专区在线观看一区| 日韩av中文在线观看| 久久久欧美精品sm网站| 99久久精品国产毛片| 日韩二区三区四区| 久久久.com| 欧美色图一区二区三区| 久久精品国产亚洲高清剧情介绍| 欧美国产一区在线|