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

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

?? coder.c

?? g.723.1源代碼
?? C
字號(hào):
/*
**
** File:        "coder.c"
**
** Description:     Top-level source code for G.723 dual-rate coder
**
** Functions:       Init_Coder()
**                  Coder()
**
**
*/
/*
    ITU-T G.723 Speech Coder   ANSI-C Source Code     Version 5.00
    copyright (c) 1995, AudioCodes, DSP Group, France Telecom,
    Universite de Sherbrooke.  All rights reserved.
*/


#include <stdlib.h>
#include <stdio.h>
#include <string.h>

#include "typedef.h"
#include "basop.h"
#include "cst_lbc.h"
#include "tab_lbc.h"
#include "coder.h"
#include "lpc.h"
#include "lsp.h"
#include "exc_lbc.h"
#include "util_lbc.h"
#include "vad.h"
#include "cod_cng.h"
#include "tame.h"
/*
   This file includes the coder main functions
*/

CODSTATDEF  CodStat  ;
/*
**
** Function:        Init_Coder()
**
** Description:     Initializes non-zero state variables
**          for the coder.
**
** Links to text:   Section 2.21
** 
** Arguments:       None
**
** Outputs:     None
** 
** Return value:    None
**
*/
void  Init_Coder( void)
{
    int   i ;

    /* Initialize encoder data structure with zeros */
    memset(&CodStat, 0, sizeof(CODSTATDEF));

    /* Initialize the previously decoded LSP vector to the DC vector */
    for ( i = 0 ; i < LpcOrder ; i ++ )
        CodStat.PrevLsp[i] = LspDcTable[i] ;

    /* Initialize the taming procedure */
    for(i=0; i<SizErr; i++) CodStat.Err[i] = Err0;

    return;
}

/*
**
** Function:        Coder()
**
** Description:     Implements G.723 dual-rate coder for    a frame
**          of speech
**
** Links to text:   Section 2
**
** Arguments:
**
**  Word16 DataBuff[]   frame (480 bytes)
**

** Outputs:
**
**  Word16 Vout[]       Encoded frame (20/24 bytes)
**
** Return value:
**
**  Flag            Always True
**
*/
Flag  Coder( Word16 *DataBuff, char *Vout )
{
    int     i,j   ;

    /*
      Local variables
    */
    Word16   UnqLpc[SubFrames*LpcOrder] ;
    Word16   QntLpc[SubFrames*LpcOrder] ;
    Word16   PerLpc[2*SubFrames*LpcOrder] ;

    Word16   LspVect[LpcOrder] ;
    LINEDEF  Line  ;
    PWDEF    Pw[SubFrames]  ;

    Word16   ImpResp[SubFrLen] ;

    Word16  *Dpnt  ;

    Word16  Ftyp = 1 ;

    /*
      Coder Start
    */
    Line.Crc = (Word16) 0 ;

    Rem_Dc( DataBuff ) ;

    /* Compute the Unquantized Lpc set for whole frame */
    Comp_Lpc( UnqLpc, CodStat.PrevDat, DataBuff ) ;

    /* Convert to Lsp */
    AtoLsp( LspVect, &UnqLpc[LpcOrder*(SubFrames-1)], CodStat.PrevLsp ) ;

    /* Compute the Vad */
    Ftyp = (Word16) Comp_Vad( DataBuff ) ;

    /* VQ Lsp vector */
    Line.LspId = Lsp_Qnt( LspVect, CodStat.PrevLsp ) ;

    Mem_Shift( CodStat.PrevDat, DataBuff ) ;

    /* Compute Perceptual filter Lpc coefficients */
    Wght_Lpc( PerLpc, UnqLpc ) ;

    /* Apply the perceptual weighting filter */
    Error_Wght( DataBuff, PerLpc ) ;

    /*
    // Compute Open loop pitch estimates
    */
    Dpnt = (Word16 *) malloc( sizeof(Word16)*(PitchMax+Frame) ) ;

    /* Construct the buffer */
    for ( i = 0 ; i < PitchMax ; i ++ )
        Dpnt[i] = CodStat.PrevWgt[i] ;
    for ( i = 0 ; i < Frame ; i ++ )
        Dpnt[PitchMax+i] = DataBuff[i] ;

    Vec_Norm( Dpnt, (Word16) (PitchMax+Frame) ) ;

    j = PitchMax ;
    for ( i = 0 ; i < SubFrames/2 ; i ++ ) {
        Line.Olp[i] = Estim_Pitch( Dpnt, (Word16) j ) ;
        VadStat.Polp[i+2] = Line.Olp[i] ;
        j += 2*SubFrLen ;
    }

    if(Ftyp != 1) {

        /*
        // Case of inactive signal
        */
        free ( (char *) Dpnt ) ;

        /* Save PrevWgt */
        for ( i = 0 ; i < PitchMax ; i ++ )
            CodStat.PrevWgt[i] = DataBuff[i+Frame-PitchMax] ;



        /* CodCng => Ftyp = 0 (untransmitted) or 2 (SID) */
        Cod_Cng(DataBuff, &Ftyp, &Line, QntLpc);

        /* Update the ringing delays */
        Dpnt = DataBuff;
        for( i = 0 ; i < SubFrames; i++ ) {

            /* Update exc_err */
            Update_Err(Line.Olp[i>>1], Line.Sfs[i].AcLg, Line.Sfs[i].AcGn);

            Upd_Ring( Dpnt, &QntLpc[i*LpcOrder], &PerLpc[i*2*LpcOrder],
                                                        CodStat.PrevErr ) ;
            Dpnt += SubFrLen;
        }
    }

    else {

        /*
        // Case of Active signal  (Ftyp=1)
        */

        /* Compute the Hmw */
        j = PitchMax ;
        for ( i = 0 ; i < SubFrames ; i ++ ) {
            Pw[i] = Comp_Pw( Dpnt, (Word16) j, Line.Olp[i>>1] ) ;
            j += SubFrLen ;
        }

        /* Reload the buffer */
        for ( i = 0 ; i < PitchMax ; i ++ )
            Dpnt[i] = CodStat.PrevWgt[i] ;
        for ( i = 0 ; i < Frame ; i ++ )
            Dpnt[PitchMax+i] = DataBuff[i] ;

        /* Save PrevWgt */
        for ( i = 0 ; i < PitchMax ; i ++ )
            CodStat.PrevWgt[i] = Dpnt[Frame+i] ;

        /* Apply the Harmonic filter */
        j = 0 ;
        for ( i = 0 ; i < SubFrames ; i ++ ) {
            Filt_Pw( DataBuff, Dpnt, (Word16) j , Pw[i] ) ;
            j += SubFrLen ;
        }
        free ( (char *) Dpnt ) ;

        /* Inverse quantization of the LSP */
        Lsp_Inq( LspVect, CodStat.PrevLsp, Line.LspId, Line.Crc ) ;

        /* Interpolate the Lsp vectors */
        Lsp_Int( QntLpc, LspVect, CodStat.PrevLsp ) ;

        /* Copy the LSP vector for the next frame */
        for ( i = 0 ; i < LpcOrder ; i ++ )
            CodStat.PrevLsp[i] = LspVect[i] ;

        /*
        // Start the sub frame processing loop
        */
        Dpnt = DataBuff ;

        for ( i = 0 ; i < SubFrames ; i ++ ) {

            /* Compute full impulse response */
            Comp_Ir( ImpResp, &QntLpc[i*LpcOrder],
                                            &PerLpc[i*2*LpcOrder], Pw[i] ) ;

            /* Subtract the ringing of previous sub-frame */
            Sub_Ring( Dpnt, &QntLpc[i*LpcOrder], &PerLpc[i*2*LpcOrder],
                                                   CodStat.PrevErr, Pw[i] ) ;

            /* Compute adaptive code book contribution */
            Find_Acbk( Dpnt, ImpResp, CodStat.PrevExc, &Line, (Word16) i ) ;

            /* Compute fixed code book contribution */
            Find_Fcbk( Dpnt, ImpResp, &Line, (Word16) i ) ;

            /* Reconstruct the excitation */
            Decod_Acbk( ImpResp, CodStat.PrevExc, Line.Olp[i>>1],
                                    Line.Sfs[i].AcLg, Line.Sfs[i].AcGn ) ;

            for ( j = SubFrLen ; j < PitchMax ; j ++ )
                CodStat.PrevExc[j-SubFrLen] = CodStat.PrevExc[j] ;

            for ( j = 0 ; j < SubFrLen ; j ++ ) {
                Dpnt[j] = shl( Dpnt[j], (Word16) 1 ) ;
                Dpnt[j] = add( Dpnt[j], ImpResp[j] ) ;
                CodStat.PrevExc[PitchMax-SubFrLen+j] = Dpnt[j] ;
            }

            /* Update exc_err */
            Update_Err(Line.Olp[i>>1], Line.Sfs[i].AcLg, Line.Sfs[i].AcGn);

            /* Update the ringing delays */
            Upd_Ring( Dpnt, &QntLpc[i*LpcOrder], &PerLpc[i*2*LpcOrder],
                                                       CodStat.PrevErr ) ;

            Dpnt += SubFrLen ;
        }  /* end of subframes loop */

        /*
        // Save Vad information and reset CNG random generator
        */
        CodCng.PastFtyp = 1;
        CodCng.RandSeed = 12345;

    } /* End of active frame case */

    /* Pack the Line structure */
    Line_Pack( &Line, Vout, Ftyp ) ;

    return (Flag) True ;
}

?? 快捷鍵說(shuō)明

復(fù)制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號(hào) Ctrl + =
減小字號(hào) Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
处破女av一区二区| 久久尤物电影视频在线观看| 欧美videos中文字幕| 亚洲婷婷国产精品电影人久久| 视频在线观看一区二区三区| 成人少妇影院yyyy| 精品美女一区二区三区| 亚洲成av人**亚洲成av**| 成人免费观看男女羞羞视频| 日韩免费高清av| 亚洲aaa精品| 欧美性视频一区二区三区| 亚洲视频一区二区在线| 夫妻av一区二区| 国产丝袜欧美中文另类| 麻豆国产精品777777在线| 欧美伊人久久久久久午夜久久久久| 欧美国产日韩一二三区| 精品一区二区免费看| 欧美一区二区美女| 免费成人在线影院| 欧美一卡二卡三卡| 蜜臀精品一区二区三区在线观看| 在线观看国产91| 亚洲国产综合色| 欧美男人的天堂一二区| 丝袜美腿亚洲一区| 91精品国产综合久久久久久久久久 | 亚洲一区二区四区蜜桃| 91免费看片在线观看| 中文字幕一区二区在线播放| 国产91富婆露脸刺激对白| 久久久高清一区二区三区| 国产真实精品久久二三区| 精品国产一二三| 久久国产精品色婷婷| 精品国产乱码久久久久久久| 久久99精品久久只有精品| 26uuu国产电影一区二区| 激情综合色播五月| 久久精品一级爱片| 91丝袜美女网| 亚洲一区二三区| 91精品国产乱码| 国产一区二区在线看| 国产精品污www在线观看| 97久久精品人人做人人爽50路| 亚洲欧美日韩国产一区二区三区| 色狠狠色噜噜噜综合网| 性做久久久久久久久| 精品捆绑美女sm三区| 国产成人午夜视频| 亚洲一区二区三区四区在线| 这里只有精品电影| 国产高清不卡二三区| 亚洲欧美日韩久久| 日韩精品专区在线影院重磅| 国产不卡视频在线播放| 亚洲制服丝袜在线| 亚洲精品在线观看网站| 99精品视频中文字幕| 日产国产欧美视频一区精品 | 日韩成人午夜精品| 日本一区二区三区四区| 色综合久久久久综合体桃花网| 图片区小说区国产精品视频| 久久久久久9999| 欧美中文字幕一二三区视频| 国产毛片精品视频| 亚洲午夜久久久久久久久电影网 | www.亚洲人| 午夜精品影院在线观看| 欧美激情在线看| 91精品国产91综合久久蜜臀| 成人av网站大全| 美女网站在线免费欧美精品| 亚洲伦理在线精品| 国产日韩欧美综合一区| 欧美一区二区三区的| 日本精品裸体写真集在线观看| 另类小说一区二区三区| 亚洲综合清纯丝袜自拍| 国产精品美女久久久久aⅴ国产馆| 欧美视频完全免费看| 91一区二区在线观看| 国产在线不卡视频| 麻豆精品国产传媒mv男同| 一区二区三区精品在线观看| 国产精品素人一区二区| 26uuu另类欧美| 日韩一区二区免费在线观看| 日本福利一区二区| 色综合久久久久网| gogogo免费视频观看亚洲一| 国产夫妻精品视频| 韩国成人在线视频| 美女视频一区二区三区| 午夜欧美一区二区三区在线播放| 亚洲桃色在线一区| 亚洲欧洲日产国码二区| 亚洲国产精品精华液2区45| 久久久久成人黄色影片| 久久综合国产精品| 2020日本不卡一区二区视频| 欧美一区二区视频在线观看| 欧美高清精品3d| 欧美精品一卡二卡| 在线播放91灌醉迷j高跟美女 | 久久精品人人做人人综合 | 日本欧美肥老太交大片| 天天影视网天天综合色在线播放 | 欧美一区二区网站| 777午夜精品视频在线播放| 欧美午夜片在线看| 在线观看免费成人| 欧美精品久久一区二区三区| 欧美日韩国产影片| 欧美精品粉嫩高潮一区二区| 91精品婷婷国产综合久久竹菊| 91精品久久久久久久久99蜜臂| 91麻豆精品国产自产在线观看一区| 欧美区在线观看| 日韩欧美专区在线| 国产欧美日韩另类视频免费观看| 国产偷国产偷精品高清尤物| 国产精品国产自产拍高清av王其| 中文字幕中文字幕在线一区| 亚洲综合在线电影| 蜜臀久久久久久久| 国产精品一品视频| 91同城在线观看| 91精选在线观看| 久久久久国产成人精品亚洲午夜 | 美女久久久精品| 国产乱一区二区| 色欧美乱欧美15图片| 在线观看91av| 久久精品一区二区三区不卡| 亚洲日本一区二区| 蜜臀久久99精品久久久久久9| 国产不卡免费视频| 欧美色窝79yyyycom| 精品少妇一区二区三区视频免付费| 久久久高清一区二区三区| 亚洲欧美色综合| 精品影院一区二区久久久| 成人午夜精品在线| 欧美丰满少妇xxxxx高潮对白| 欧美videos大乳护士334| 亚洲人123区| 老司机精品视频线观看86| 成人av电影在线观看| 欧美一级精品在线| 亚洲日本护士毛茸茸| 韩国成人福利片在线播放| 色婷婷国产精品久久包臀| 久久免费精品国产久精品久久久久| 亚洲欧美日韩在线| 国产精品影视网| 在线成人免费视频| 中文字幕制服丝袜成人av | 亚洲国产欧美在线| 国产suv一区二区三区88区| 欧美日韩亚洲丝袜制服| 国产精品乱码一区二区三区软件| 视频一区二区国产| 国产福利电影一区二区三区| 91精品国产综合久久久久久漫画 | 亚洲综合男人的天堂| 成人国产精品免费| 337p日本欧洲亚洲大胆色噜噜| 亚洲黄一区二区三区| 成人av电影在线| 国产日韩欧美激情| 国内精品嫩模私拍在线| 欧美人妇做爰xxxⅹ性高电影| 亚洲日本在线看| 成人美女在线视频| 国产欧美一二三区| 国产一区在线不卡| 欧美videossexotv100| 蓝色福利精品导航| 日韩午夜精品视频| 日韩成人午夜精品| 欧美久久免费观看| 亚洲成人免费影院| 欧美性感一区二区三区| 亚洲精品菠萝久久久久久久| 99免费精品在线| 国产精品福利一区二区三区| 国产成人午夜精品5599| 精品成人私密视频| 国产伦精品一区二区三区免费| 欧美一区二区三区男人的天堂| 午夜影院久久久| 91麻豆精品国产91久久久使用方法| 亚洲高清免费观看| 欧美日韩www| 蜜臀av性久久久久蜜臀aⅴ流畅 | 欧美在线观看禁18|