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

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

?? dec_gain2_amr_wb.cpp

?? 實現3GPP的GSM中AMR語音的CODECS。
?? CPP
字號:
/* ------------------------------------------------------------------ * Copyright (C) 2008 PacketVideo * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * *      http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either * express or implied. * See the License for the specific language governing permissions * and limitations under the License. * ------------------------------------------------------------------- *//****************************************************************************************Portions of this file are derived from the following 3GPP standard:    3GPP TS 26.173    ANSI-C code for the Adaptive Multi-Rate - Wideband (AMR-WB) speech codec    Available from http://www.3gpp.org(C) 2007, 3GPP Organizational Partners (ARIB, ATIS, CCSA, ETSI, TTA, TTC)Permission to distribute, modify and use this file under the standard licenseterms listed above has been obtained from the copyright holder.****************************************************************************************//*------------------------------------------------------------------------------ Filename: dec_gain2_amr_wb.cpp     Date: 05/08/2004------------------------------------------------------------------------------ REVISION HISTORY Description:------------------------------------------------------------------------------ INPUT AND OUTPUT DEFINITIONS     int16 index,                 (i)     : index of quantization.     int16 nbits,                 (i)     : number of bits (6 or 7)     int16 code[],                (i) Q9  : Innovative vector.     int16 L_subfr,               (i)     : Subframe lenght.     int16 * gain_pit,            (o) Q14 : Pitch gain.     int32 * gain_cod,            (o) Q16 : Code gain.     int16 bfi,                   (i)     : bad frame indicator     int16 prev_bfi,              (i)     : Previous BF indicator     int16 state,                 (i)     : State of BFH     int16 unusable_frame,        (i)     : UF indicator     int16 vad_hist,              (i)     : number of non-speech frames     int16 * mem                  (i/o)   : static memory (4 words)------------------------------------------------------------------------------ FUNCTION DESCRIPTION    Decode the pitch and codebook gains------------------------------------------------------------------------------ REQUIREMENTS------------------------------------------------------------------------------ REFERENCES------------------------------------------------------------------------------ PSEUDO-CODE------------------------------------------------------------------------------*//*----------------------------------------------------------------------------; INCLUDES----------------------------------------------------------------------------*/#include "pv_amr_wb_type_defs.h"#include "pvamrwbdecoder_basic_op.h"#include "pvamrwb_math_op.h"#include "pvamrwbdecoder_cnst.h"#include "pvamrwbdecoder_acelp.h"#include "qisf_ns.h"/*----------------------------------------------------------------------------; MACROS; Define module specific macros here----------------------------------------------------------------------------*//*----------------------------------------------------------------------------; DEFINES; Include all pre-processor statements here. Include conditional; compile variables also.----------------------------------------------------------------------------*/#define MEAN_ENER    30#define PRED_ORDER   4#define L_LTPHIST 5/*----------------------------------------------------------------------------; LOCAL FUNCTION DEFINITIONS; Function Prototype declaration----------------------------------------------------------------------------*//*----------------------------------------------------------------------------; LOCAL STORE/BUFFER/POINTER DEFINITIONS; Variable declaration - defined here and used outside this module----------------------------------------------------------------------------*/const int16 pdown_unusable[7] = {32767, 31130, 29491, 24576, 7537, 1638, 328};const int16 cdown_unusable[7] = {32767, 16384, 8192, 8192, 8192, 4915, 3277};const int16 pdown_usable[7] = {32767, 32113, 31457, 24576, 7537, 1638, 328};const int16 cdown_usable[7] = {32767, 32113, 32113, 32113, 32113, 32113, 22938};/* MA prediction coeff ={0.5, 0.4, 0.3, 0.2} in Q13 */const int16 pred[PRED_ORDER] = {4096, 3277, 2458, 1638};/*----------------------------------------------------------------------------; EXTERNAL FUNCTION REFERENCES; Declare functions defined elsewhere and referenced in this module----------------------------------------------------------------------------*//*----------------------------------------------------------------------------; EXTERNAL GLOBAL STORE/BUFFER/POINTER REFERENCES; Declare variables used in this module but defined elsewhere----------------------------------------------------------------------------*//*----------------------------------------------------------------------------; FUNCTION CODE----------------------------------------------------------------------------*//* output  :static memory (4 words)      */void dec_gain2_amr_wb_init(int16 * mem){    /* 4nd order quantizer energy predictor (init to -14.0 in Q10) */    mem[0] = -14336;                          /* past_qua_en[0] */    mem[1] = -14336;                          /* past_qua_en[1] */    mem[2] = -14336;                          /* past_qua_en[2] */    mem[3] = -14336;                          /* past_qua_en[3] */    /* 4  *past_gain_pit  */    /* 5  *past_gain_code  */    /* 6  *prev_gc  */    /* next 5  pbuf[]  */    /* next 5  gbuf[]  */    /* next 5  pbuf2[]  */    pv_memset((void *)&mem[4], 0, 18*sizeof(*mem));    mem[22] = 21845;}/*----------------------------------------------------------------------------; FUNCTION CODE----------------------------------------------------------------------------*/void dec_gain2_amr_wb(    int16 index,               /* (i)     : index of quantization.      */    int16 nbits,               /* (i)     : number of bits (6 or 7)     */    int16 code[],              /* (i) Q9  : Innovative vector.          */    int16 L_subfr,             /* (i)     : Subframe lenght.            */    int16 * gain_pit,          /* (o) Q14 : Pitch gain.                 */    int32 * gain_cod,          /* (o) Q16 : Code gain.                  */    int16 bfi,                 /* (i)     : bad frame indicator         */    int16 prev_bfi,            /* (i)     : Previous BF indicator       */    int16 state,               /* (i)     : State of BFH                */    int16 unusable_frame,      /* (i)     : UF indicator                */    int16 vad_hist,            /* (i)     : number of non-speech frames */    int16 * mem                /* (i/o)   : static memory (4 words)     */){    const int16 *p;    int16 *past_gain_pit, *past_gain_code, *past_qua_en, *gbuf, *pbuf, *prev_gc;    int16 *pbuf2;    int16 i, tmp, exp, frac, gcode0, exp_gcode0, qua_ener, gcode_inov;    int16 tmp1, g_code;    int16 tmp2;    int32 L_tmp;    past_qua_en = mem;    past_gain_pit = mem + 4;    past_gain_code = mem + 5;    prev_gc = mem + 6;    pbuf = mem + 7;    gbuf = mem + 12;    pbuf2 = mem + 17;    /*     *  Find energy of code and compute:     *     *    L_tmp = 1.0 / sqrt(energy of code/ L_subfr)     */    L_tmp = Dot_product12(code, code, L_subfr, &exp);    exp -= 24;                /* exp: -18 (code in Q9), -6 (/L_subfr) */    one_ov_sqrt_norm(&L_tmp, &exp);    gcode_inov = extract_h(shl_int32(L_tmp, exp - 3));  /* g_code_inov in Q12 */    /*     * Case of erasure.     */    if (bfi != 0)    {        tmp = median5(&pbuf[2]);        *past_gain_pit = tmp;        if (*past_gain_pit > 15565)        {            *past_gain_pit = 15565;        /* 0.95 in Q14 */        }        if (unusable_frame != 0)        {            *gain_pit = mult_int16(pdown_unusable[state], *past_gain_pit);        }        else        {            *gain_pit = mult_int16(pdown_usable[state], *past_gain_pit);        }        tmp = median5(&gbuf[2]);        if (vad_hist > 2)        {            *past_gain_code = tmp;        }        else        {            if (unusable_frame != 0)            {                *past_gain_code = mult_int16(cdown_unusable[state], tmp);            }            else            {                *past_gain_code = mult_int16(cdown_usable[state], tmp);            }        }        /* update table of past quantized energies */        tmp  = past_qua_en[3];        tmp1 = past_qua_en[2];        L_tmp  = tmp;        L_tmp += tmp1;        past_qua_en[3] = tmp;        tmp  = past_qua_en[1];        tmp1 = past_qua_en[0];        L_tmp += tmp;        L_tmp += tmp1;        past_qua_en[2] = tmp;        qua_ener = (int16)(L_tmp >> 3);        past_qua_en[1] = tmp1;        qua_ener -= 3072;    /* -3 in Q10 */        if (qua_ener < -14336)        {            qua_ener = -14336;                /* -14 in Q10 */        }        past_qua_en[0] = qua_ener;        for (i = 1; i < 5; i++)        {            gbuf[i - 1] = gbuf[i];            pbuf[i - 1] = pbuf[i];        }        gbuf[4] = *past_gain_code;        pbuf[4] = *past_gain_pit;        /* adjust gain according to energy of code */        /* past_gain_code(Q3) * gcode_inov(Q12) => Q16 */        *gain_cod = mul_16by16_to_int32(*past_gain_code, gcode_inov);        return;    }    /*     * Compute gcode0     *  = Sum(i=0,1) pred[i]*past_qua_en[i] + mean_ener - ener_code     */    L_tmp = L_deposit_h(MEAN_ENER);        /* MEAN_ENER in Q16 */    L_tmp = shl_int32(L_tmp, 8);               /* From Q16 to Q24 */    L_tmp = mac_16by16_to_int32(L_tmp, pred[0], past_qua_en[0]);      /* Q13*Q10 -> Q24 */    L_tmp = mac_16by16_to_int32(L_tmp, pred[1], past_qua_en[1]);      /* Q13*Q10 -> Q24 */    L_tmp = mac_16by16_to_int32(L_tmp, pred[2], past_qua_en[2]);      /* Q13*Q10 -> Q24 */    L_tmp = mac_16by16_to_int32(L_tmp, pred[3], past_qua_en[3]);      /* Q13*Q10 -> Q24 */    gcode0 = extract_h(L_tmp);             /* From Q24 to Q8  */    /*     * gcode0 = pow(10.0, gcode0/20)     *        = pow(2, 3.321928*gcode0/20)     *        = pow(2, 0.166096*gcode0)     */    L_tmp = ((int32)gcode0 * 5443) >> 7;      /* *0.166096 in Q15 -> Q24     */    int32_to_dpf(L_tmp, &exp_gcode0, &frac);  /* Extract exponant of gcode0  */    gcode0 = (int16)(power_of_2(14, frac));    /* Put 14 as exponant so that  */    /* output of Pow2() will be:   */    /* 16384 < Pow2() <= 32767     */    exp_gcode0 -= 14;    /* Read the quantized gains */    if (nbits == 6)    {        p = &t_qua_gain6b[index<<1];    }    else    {        p = &t_qua_gain7b[index<<1];    }    *gain_pit = *p++;                         /* selected pitch gain in Q14 */    g_code = *p++;                            /* selected code gain in Q11  */    L_tmp = mul_16by16_to_int32(g_code, gcode0);        /* Q11*Q0 -> Q12 */    L_tmp = shl_int32(L_tmp, exp_gcode0 + 4);   /* Q12 -> Q16 */    *gain_cod = L_tmp;                        /* gain of code in Q16 */    if (prev_bfi == 1)    {        L_tmp = mul_16by16_to_int32(*prev_gc, 5120);    /* prev_gc(Q3) * 1.25(Q12) = Q16 */        /* if((*gain_cod > ((*prev_gc) * 1.25)) && (*gain_cod > 100.0)) */        if ((*gain_cod > L_tmp) && (*gain_cod > 6553600))        {            *gain_cod = L_tmp;        }    }    /* keep past gain code in Q3 for frame erasure (can saturate) */    *past_gain_code = amr_wb_round(shl_int32(*gain_cod, 3));    *past_gain_pit = *gain_pit;    *prev_gc = *past_gain_code;    tmp  = gbuf[1];    tmp1 = pbuf[1];    tmp2 = pbuf2[1];    for (i = 1; i < 5; i++)    {        gbuf[i - 1]  = tmp;        pbuf[i - 1]  = tmp1;        pbuf2[i - 1] = tmp2;        tmp  = gbuf[i];        tmp1 = pbuf[i];        tmp2 = pbuf2[i];    }    gbuf[4] = *past_gain_code;    pbuf[4] = *past_gain_pit;    pbuf2[4] = *past_gain_pit;    /* adjust gain according to energy of code */    int32_to_dpf(*gain_cod, &exp, &frac);    L_tmp = mul_32by16(exp, frac, gcode_inov);    *gain_cod = shl_int32(L_tmp, 3);              /* gcode_inov in Q12 */    past_qua_en[3] = past_qua_en[2];    past_qua_en[2] = past_qua_en[1];    past_qua_en[1] = past_qua_en[0];    /*     * qua_ener = 20*log10(g_code)     *          = 6.0206*log2(g_code)     *          = 6.0206*(log2(g_codeQ11) - 11)     */    L_tmp = (int32)g_code;    amrwb_log_2(L_tmp, &exp, &frac);    exp -= 11;    L_tmp = mul_32by16(exp, frac, 24660);   /* x 6.0206 in Q12 */    /* update table of past quantized energies */    past_qua_en[0] = (int16)(L_tmp >> 3); /* result in Q10 */    return;}

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
在线欧美日韩国产| 91精品办公室少妇高潮对白| 日韩理论片一区二区| 日韩一级高清毛片| 日本道免费精品一区二区三区| 依依成人精品视频| 天天亚洲美女在线视频| 狠狠色狠狠色综合系列| 国产精品久久影院| 国产欧美日韩卡一| 欧美国产日韩亚洲一区| 中文字幕一区日韩精品欧美| 久久久久久久综合狠狠综合| 日韩欧美一二三| 日本一区二区免费在线| 国产欧美一区二区在线| 亚洲日本欧美天堂| 免费看欧美美女黄的网站| 国产一区二区三区国产| 激情综合色综合久久| 亚洲高清免费观看| 日韩精品国产精品| 亚洲成人免费视频| 综合分类小说区另类春色亚洲小说欧美| 国产三级精品三级| 亚洲欧美另类综合偷拍| 亚洲bdsm女犯bdsm网站| 国产99久久精品| 色综合激情五月| 精品国产青草久久久久福利| 国产精品成人一区二区三区夜夜夜 | 日韩影院精彩在线| 成人av网站在线| 91免费看`日韩一区二区| 91麻豆精东视频| 国产精品亲子乱子伦xxxx裸| 美女尤物国产一区| 9191久久久久久久久久久| 亚洲欧洲国产日本综合| 国产美女精品在线| 国产亚洲一本大道中文在线| 婷婷国产在线综合| 91精品黄色片免费大全| 精品国产凹凸成av人导航| 1000精品久久久久久久久| 久久精品99国产精品| 日韩视频永久免费| 国产伦精品一区二区三区免费| 91色porny在线视频| 亚洲精品成人少妇| 欧美人与z0zoxxxx视频| 日韩电影在线观看电影| 6080国产精品一区二区| 韩国一区二区在线观看| 久久久精品免费网站| 99久久精品情趣| 中文字幕在线一区二区三区| 色av成人天堂桃色av| 日本中文在线一区| 最新欧美精品一区二区三区| 欧美色老头old∨ideo| 国产综合色视频| 亚洲免费在线看| 26uuu国产在线精品一区二区| 大胆亚洲人体视频| 看国产成人h片视频| 最新国产成人在线观看| 日韩欧美一二三区| 韩国成人精品a∨在线观看| 国产精品剧情在线亚洲| 欧美一区二区精品在线| 在线免费观看不卡av| 国产精品一区专区| 日本va欧美va精品| 亚洲高清免费观看| 亚洲一区二区三区四区中文字幕 | 久久久精品tv| 日韩一区二区三区av| 91久久精品一区二区| 韩国三级中文字幕hd久久精品| 日本一区二区三区在线观看| 91精品国产一区二区三区蜜臀| 国内久久精品视频| 视频在线观看91| 人禽交欧美网站| 国产精品一区免费在线观看| 日本欧美一区二区三区乱码| 美国一区二区三区在线播放| 久久草av在线| www.欧美精品一二区| 成人18视频在线播放| 91国模大尺度私拍在线视频| 欧美亚洲国产bt| 欧美精品三级日韩久久| 欧美日韩亚洲丝袜制服| 欧美一二三区在线| 91麻豆国产精品久久| 91丨porny丨在线| 欧美一区二区三区在| 欧美性大战xxxxx久久久| 欧美人妖巨大在线| 久久精品男人天堂av| 亚洲风情在线资源站| 韩国女主播成人在线观看| 国产成人综合网| 色婷婷综合久久久中文一区二区| 成人黄色在线视频| 日韩一区二区三| 亚洲成a人片综合在线| 国产999精品久久久久久绿帽| 欧美日韩专区在线| 欧美刺激午夜性久久久久久久| 亚洲欧美一区二区视频| 久久福利资源站| 日韩美女在线视频| 欧美aaa在线| 日韩一区二区电影网| 日韩一区在线免费观看| 成人午夜激情在线| 久久精品一区四区| 成人一级片在线观看| 久久只精品国产| 看电视剧不卡顿的网站| 欧美大度的电影原声| 亚洲精品国产高清久久伦理二区| 韩国一区二区视频| 亚洲国产成人午夜在线一区 | 中文字幕一区二区在线播放| 国产一区久久久| 亚洲欧美日韩国产手机在线 | 日韩午夜激情免费电影| 激情六月婷婷综合| 自拍偷拍亚洲激情| 欧美电影影音先锋| 在线精品视频免费观看| 欧美v日韩v国产v| 成人免费观看男女羞羞视频| 亚洲第一在线综合网站| 中文字幕免费不卡| 国产视频在线观看一区二区三区| 欧美tickling网站挠脚心| 色综合久久久网| 色综合视频在线观看| 国产高清成人在线| 韩日精品视频一区| 青青草97国产精品免费观看 | 亚洲成a人v欧美综合天堂| 欧美唯美清纯偷拍| 午夜电影久久久| 亚洲天堂福利av| 日韩免费一区二区| 欧美专区在线观看一区| 国产精品1区二区.| 久久国产精品第一页| 日韩精品免费视频人成| 亚洲国产精品v| 国产欧美综合在线观看第十页| 欧美一级xxx| 欧美调教femdomvk| 在线视频你懂得一区二区三区| 成人一区二区视频| 91在线观看免费视频| 91在线你懂得| 三级欧美韩日大片在线看| 日韩一区二区三区电影在线观看 | 亚洲免费在线电影| 亚洲美女在线一区| 夜夜爽夜夜爽精品视频| 亚洲国产精品嫩草影院| 欧美va在线播放| 国产偷国产偷精品高清尤物| 久久久噜噜噜久噜久久综合| 国产精品伦一区| 日韩**一区毛片| 成人激情av网| 欧美精品粉嫩高潮一区二区| 欧美精品久久一区二区三区| 日韩欧美一区二区不卡| 久久只精品国产| 亚洲韩国一区二区三区| 免费亚洲电影在线| 欧美性受xxxx| 欧美成人video| 亚洲影视在线播放| 99久久精品情趣| 日本美女视频一区二区| 成人性生交大片免费看中文| 国产成人综合视频| 欧美成人vps| 日产国产高清一区二区三区 | 欧美日韩一区成人| 综合激情网...| 国产69精品一区二区亚洲孕妇 | 一区二区三区影院| 国产成人福利片| 久久新电视剧免费观看| 蜜桃精品视频在线| 久久麻豆一区二区| 国产精品一品二品| 久久久激情视频|