⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 g729ev_tdbwe_extract_time_envelope.c

📁 最新的ITU-T的宽带语音编解码标准G.729.1,是对原先的G.729的最好的调整.码流输出速率可以进行自适应调整.满足未来通信要求.希望对大家有所帮助.
💻 C
字号:
/* ITU-T G.729EV Optimization/Characterization Candidate                         *//* Version:       1.0.a                                                          *//* Revision Date: June 28, 2006                                                  *//*   ITU-T G.729EV Optimization/Characterization Candidate    ANSI-C Source Code   Copyright (c) 2006    France Telecom, Matsushita Electric, Mindspeed, Siemens AG, ETRI, VoiceAge Corp.   All rights reserved*/#include "G729EV_TDBWE_extract_time_envelope.h"#include "G729EV_MAIN_defines.h"#include "G729EV_MAIN_DSPFUNC.h"#include "G729EV_MAIN_OPER_32B.h"/*--------------------------------------------------------------------------* *  Function  G729EV_TDBWE_extract_time_envelope()                          * *  ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~                     * *  TDBWE time envelope (segment energy) computation                        * *--------------------------------------------------------------------------*/void G729EV_TDBWE_extract_time_envelope(Word16 * signal,          /* (i) Q.nls, original highband input signal */                                        Word16 nls,               /* (i) normalization of input signal */                                        Word16 * envelope,        /* (o) Q.10, time envelope parameters */                                        Word16 number_subframes)  /* (i) number of consecutive subframes in signal[] */{  Word32    ACC0;  Word16   *ptr_signal;  Word16    i, k;  Word16    log_int, log_frac;  Word16    norm;  ptr_signal = signal;  /* loop over all segments */  FOR(i = 0; i < number_subframes; i++)  {    ACC0 = (Word32) 0;#ifdef WMOPS    move32();#endif    /* accumulate square sample values */    FOR(k = 0; k < G729EV_TDBWE_SUBFRAME_SIZE; k++)    {      ACC0 = L_mac0(ACC0, *ptr_signal, *ptr_signal);      ptr_signal++;    }    /* compute (1/2)log2 of segment energies */    /* Normalize ACC0 before Log2 for max precision */    norm = norm_l(ACC0);    ACC0 = L_shl(ACC0, norm);    Log2(ACC0, &log_int, &log_frac);    norm = add(norm, shl(nls, 1));    ACC0 = L_Comp(sub(log_int, norm), log_frac);  /* ACC0 = envelope[i] in Q17 */    envelope[i] = extract_h(L_shl(ACC0, 9));  /* envelope[i] in Q10 */    envelope[i] = sub(envelope[i], 0x6A4);  /* log2(10)/2 = 0x6A4 in Q10 */#ifdef WMOPS    move16();    move16();#endif  }}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -