亚洲欧美第一页_禁久久精品乱码_粉嫩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一区二区三区免费野_久草精品视频
一区在线播放视频| 成人激情黄色小说| 成人午夜激情在线| 欧美女孩性生活视频| 日本一区二区高清| 捆绑变态av一区二区三区| 91在线一区二区三区| 久久影院午夜论| 日韩高清一区在线| 一本到一区二区三区| 欧美激情一区二区三区蜜桃视频| 日本vs亚洲vs韩国一区三区 | 欧美精品久久一区二区三区| 国产欧美日韩亚州综合| 日韩一区精品字幕| 精品视频在线免费| 亚洲精品视频在线观看网站| 国产成人精品三级麻豆| 精品国产自在久精品国产| 亚洲成人你懂的| 欧美性生活大片视频| 最新不卡av在线| 成人免费视频播放| 国产精品久久久久久久久久久免费看| 国产最新精品精品你懂的| 日韩一区二区在线观看视频 | 国产尤物一区二区| 欧美刺激午夜性久久久久久久| 亚洲国产另类av| 欧美日韩中文字幕一区| 午夜视频在线观看一区二区三区| 欧美中文字幕一区二区三区亚洲| 亚洲精品乱码久久久久久黑人 | 欧美日韩在线三区| 自拍偷拍国产精品| 99在线热播精品免费| 亚洲国产成人在线| 欧美日韩午夜在线| 亚洲一区在线电影| 在线不卡的av| 捆绑调教美女网站视频一区| 日韩欧美成人激情| 国内国产精品久久| 中文在线资源观看网站视频免费不卡| 国产传媒一区在线| 亚洲欧洲日韩综合一区二区| 一本色道久久综合亚洲aⅴ蜜桃 | 激情深爱一区二区| 久久午夜电影网| a在线欧美一区| 亚洲五月六月丁香激情| 欧美日韩成人综合在线一区二区| 秋霞国产午夜精品免费视频| 精品成人在线观看| 91色乱码一区二区三区| 性感美女久久精品| 精品久久五月天| 91视频观看视频| 日韩影院免费视频| 国产精品天美传媒沈樵| 欧洲中文字幕精品| 韩国欧美国产1区| 亚洲精品视频在线观看网站| 7777精品伊人久久久大香线蕉的| 老司机午夜精品| 亚洲乱码一区二区三区在线观看| 欧美日本一区二区三区| 国产成人免费视频一区| 亚洲在线观看免费视频| 欧美精品一区二区久久婷婷| 99久久精品国产一区| 日韩成人一区二区三区在线观看| 亚洲国产精品99久久久久久久久 | 视频一区二区三区入口| 国产欧美日韩另类一区| 欧美性猛交xxxx乱大交退制版| 麻豆高清免费国产一区| 亚洲免费av在线| 久久久久久久久97黄色工厂| 欧美偷拍一区二区| 成人动漫一区二区三区| 日韩成人免费电影| 亚洲青青青在线视频| 久久毛片高清国产| 欧美一区二区三区在线观看视频 | 亚洲老妇xxxxxx| www亚洲一区| 欧美日本国产视频| 91蝌蚪porny| 国产69精品久久777的优势| 奇米影视在线99精品| 亚洲国产aⅴ成人精品无吗| 中文字幕日韩欧美一区二区三区| 欧美一区二区三区四区视频| 在线视频你懂得一区二区三区| 国产不卡视频在线播放| 国产乱码精品一区二区三区av| 日韩国产一区二| 亚洲一区二区中文在线| 亚洲欧美激情插| 国产精品狼人久久影院观看方式| 久久久久久夜精品精品免费| 欧美一级免费观看| 欧美精品乱人伦久久久久久| 欧美色视频在线| 欧美日韩在线综合| 91福利在线播放| 日本高清视频一区二区| 91尤物视频在线观看| 91片在线免费观看| 色又黄又爽网站www久久| 成人激情综合网站| 99久久婷婷国产精品综合| 不卡一区二区三区四区| 不卡一卡二卡三乱码免费网站| 国产91丝袜在线播放0| 粉嫩av一区二区三区粉嫩| 国产乱妇无码大片在线观看| 国产精品一区二区在线观看网站| 国产一区二区三区免费在线观看| 狠狠色伊人亚洲综合成人| 理论片日本一区| 国产老肥熟一区二区三区| 狠狠色狠狠色综合系列| 国产91精品精华液一区二区三区| 国产成人精品影视| 91在线丨porny丨国产| 91久久国产最好的精华液| 欧美伦理电影网| 精品少妇一区二区三区在线视频| 精品国产乱码久久| 国产精品少妇自拍| 亚洲乱码中文字幕综合| 日本视频一区二区三区| 国产一区二区美女诱惑| 不卡的av在线| 欧美色中文字幕| 欧美电影免费观看高清完整版在线| 日韩精品一区二区三区四区 | 成人国产亚洲欧美成人综合网| 99久久精品免费| 3751色影院一区二区三区| 欧美成人精品二区三区99精品| 欧美国产1区2区| 亚洲成人动漫在线免费观看| 国内外成人在线| 99re这里只有精品首页| 91精品一区二区三区在线观看| 亚洲精品一区二区三区99| 亚洲同性同志一二三专区| 午夜精品久久久久影视| 韩国在线一区二区| 欧日韩精品视频| 久久久亚洲精华液精华液精华液| 亚洲精品欧美二区三区中文字幕| 精品一区在线看| 日本高清不卡一区| 久久精品免视看| 天天色综合成人网| 色哟哟国产精品| 久久亚洲春色中文字幕久久久| 亚洲午夜精品在线| 成人av在线一区二区三区| 欧美一区二区三区日韩视频| 亚洲免费观看高清完整版在线 | 日日欢夜夜爽一区| caoporn国产精品| 精品少妇一区二区三区| 午夜精品福利视频网站| 99热99精品| 欧美国产精品v| 国内成+人亚洲+欧美+综合在线| 在线观看成人免费视频| 中文字幕制服丝袜成人av| 久久机这里只有精品| 欧美丝袜丝交足nylons| 国产精品污污网站在线观看| 久久se精品一区二区| 欧美日韩国产首页在线观看| 亚洲精品日韩专区silk| 暴力调教一区二区三区| 久久久久久久久久美女| 老司机午夜精品| 欧美tickling挠脚心丨vk| 成人av影视在线观看| 久久综合999| 国内精品第一页| 久久久久久久久97黄色工厂| 紧缚奴在线一区二区三区| 777色狠狠一区二区三区| 五月婷婷综合在线| 欧美精品三级日韩久久| 日韩精品一二三| 日韩一级完整毛片| 毛片基地黄久久久久久天堂| 7777精品伊人久久久大香线蕉经典版下载 | 日韩理论片网站| 91色|porny| 一个色在线综合| 在线一区二区观看|