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

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

?? util_lbc.c

?? ITU-T G.723.1語音編解碼算法源代碼
?? C
?? 第 1 頁 / 共 2 頁
字號:
/*
**
** File:    util_lbc.c
**
** Description: utility functions for the lbc codec
**
** Functions:
**
**  I/O functions:
**
**      Read_lbc()
**      Write_lbc()
**
**  High-pass filtering:
**
**      Rem_Dc()
**
**  Miscellaneous signal processing functions:
**
**      Vec_Norm()
**      Mem_Shift()
**      Comp_En()
**      Scale()
**
**  Bit stream packing/unpacking:
**
**      Line_Pack()
**      Line_Unpk()
**
**  Mathematical functions:
**
**      Sqrt_lbc()
**      Rand_lbc()
*/

/*
    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 "typedef.h"
#include "basop.h"
#include "cst_lbc.h"
#include "tab_lbc.h"
#include "lbccodec.h"
#include "coder.h"
#include "decod.h"
#include "util_lbc.h"

/*
**
** Function:        Read_lbc()
**
** Description:     Read in a file
**
** Links to text:   Sections 2.2 & 4
**
** Arguments:
**
**  Word16 *Dpnt
**  int     Len
**  FILE *Fp
**
** Outputs:
**
**  Word16 *Dpnt
**
** Return value:    None
**
*/
void  Read_lbc( Word16 *Dpnt, int Len, FILE *Fp )
{
    int   i  ;

    for ( i = 0 ; i < Len ; i ++ )
        Dpnt[i] = (Word16) 0 ;

    fread ( (char *)Dpnt, sizeof(Word16), Len, Fp ) ;

    return;
}

/*
**
** Function:        Write_lbc()
**
** Description:     Write a file
**
** Links to text:   Section
**
** Arguments:
**
**  Word16 *Dpnt
**  int     Len
**  FILE *Fp
**
** Outputs:         None
**
** Return value:    None
**
*/
void    Write_lbc( Word16 *Dpnt, int Len, FILE *Fp )
{
	fwrite( (char *)Dpnt, sizeof(Word16), Len, Fp ) ;
}

void    Line_Wr( char *Line, FILE *Fp )
{
    Word16  Info ;
    int     Size   ;
	int		i;

    Info = Line[0] & (Word16)0x0003 ;

    /* Check frame type and rate informations */
    switch (Info) {

        case 0x0002 : {   /* SID frame */
            Size  = 4;
            break;
        }

        case 0x0003 : {  /* untransmitted silence frame */
            Size  = 1;
            break;
        }

        case 0x0001 : {   /* active frame, low rate */
            Size  = 20;
            break;
        }

        default : {  /* active frame, high rate */
            Size  = 24;
        }
    }
    fwrite( Line, Size , 1, Fp ) ;
}

int Line_Rd( char *Line, FILE *Fp )
{
    Word16  Info ;
    int     Size   ;

    if(fread( Line, 1,1, Fp ) != 1) return(-1);

    Info = Line[0] & (Word16)0x0003 ;
	/* Check frame type and rate informations */
    switch(Info) {

        /* Active frame, high rate */
        case 0 : {
            Size  = 23;
            break;
        }

        /* Active frame, low rate */
        case 1 : {
            Size  = 19;
            break;
        }

        /* Sid Frame */
        case 2 : {
            Size  = 3;
            break;
        }

        /* untransmitted */
        default : {
            return(0);
        }
    }
	fread( &Line[1], Size , 1, Fp ) ;
	
    return(0);
}

/*
**
** Function:        Rem_Dc()
**
** Description:     High-pass filtering
**
** Links to text:   Section 2.3
**
** Arguments:
**
**  Word16 *Dpnt
**
** Inputs:
**
**  CodStat.HpfZdl  FIR filter memory from previous frame (1 word)
**  CodStat.HpfPdl  IIR filter memory from previous frame (1 word)
**
** Outputs:
**
**  Word16 *Dpnt
**
** Return value:    None
**
*/
void  Rem_Dc( Word16 *Dpnt )
{
    int   i  ;


    Word32   Acc0,Acc1 ;

    if ( UseHp ) {
		for ( i = 0 ; i < Frame ; i ++ ) {

            /* Do the Fir and scale by 2 */
            Acc0 = L_mult( Dpnt[i], (Word16) 0x4000 ) ;
            Acc0 = L_mac ( Acc0, CodStat.HpfZdl, (Word16) 0xc000 ) ;
            CodStat.HpfZdl = Dpnt[i] ;

            /* Do the Iir part */
            Acc1 = L_mls( CodStat.HpfPdl, (Word16) 0x7f00 ) ;
            Acc0 = L_add( Acc0, Acc1 ) ;
            CodStat.HpfPdl = Acc0 ;
            Dpnt[i] = round(Acc0) ;
        }
    }
    else {
        for ( i = 0 ; i < Frame ; i ++ )
            Dpnt[i] = shr( Dpnt[i], (Word16) 1 ) ;
    }

    return;
}

/*
**
** Function:        Vec_Norm()
**
** Description:     Vector normalization
**
** Links to text:
**
** Arguments:
**
**  Word16 *Vect
**  Word16 Len
**
** Outputs:
**
**  Word16 *Vect
**
** Return value:  The power of 2 by which the data vector multiplyed.
**
*/
Word16  Vec_Norm( Word16 *Vect, Word16 Len )
{
    int   i  ;

    Word16  Acc0,Acc1   ;
    Word16  Exp   ;
    Word16  Rez ;
    Word32  Temp  ;

    static   short ShiftTable[16] = {
      0x0001 ,
      0x0002 ,
      0x0004 ,
      0x0008 ,
      0x0010 ,
      0x0020 ,
      0x0040 ,
      0x0080 ,
      0x0100 ,
      0x0200 ,
      0x0400 ,
      0x0800 ,
      0x1000 ,
      0x2000 ,
      0x4000 ,
      0x7fff
   } ;

    /* Find absolute maximum */
    Acc1 = (Word16) 0 ;
    for ( i = 0 ; i < Len ; i ++ ) {
        Acc0 = abs_s( Vect[i] ) ;
        if ( Acc0 > Acc1 )
            Acc1 = Acc0 ;
    }

    /* Get the shift count */
    Rez = norm_s( Acc1 ) ;
    Exp = ShiftTable[Rez] ;

    /* Normalize all the vector */
    for ( i = 0 ; i < Len ; i ++ ) {
        Temp = L_mult( Exp, Vect[i] ) ;
        Temp = L_shr( Temp, 4 ) ;
        Vect[i] = extract_l( Temp ) ;
    }

    Rez = sub( Rez, (Word16) 3) ;
    return Rez ;
}

/*
**
** Function:        Mem_Shift()
**
** Description:     Memory shift, update of the high-passed input speech signal
**
** Links to text:
**
** Arguments:
**
**  Word16 *PrevDat
**  Word16 *DataBuff
**
** Outputs:
**
**  Word16 *PrevDat
**  Word16 *DataBuff
**
** Return value:    None
**
*/
void  Mem_Shift( Word16 *PrevDat, Word16 *DataBuff )
{
    int   i  ;

    Word16   Dpnt[Frame+LpcFrame-SubFrLen] ;

    /*  Form Buffer  */
    for ( i = 0 ; i < LpcFrame-SubFrLen ; i ++ )
        Dpnt[i] = PrevDat[i] ;
    for ( i = 0 ; i < Frame ; i ++ )
        Dpnt[i+LpcFrame-SubFrLen] = DataBuff[i] ;

    /* Update PrevDat */
    for ( i = 0 ; i < LpcFrame-SubFrLen ; i ++ )
        PrevDat[i] = Dpnt[Frame+i] ;

    /* Update DataBuff */
    for ( i = 0 ; i < Frame ; i ++ )
        DataBuff[i] = Dpnt[(LpcFrame-SubFrLen)/2+i] ;

    return;
}

/*
**
** Function:        Line_Pack()
**
** Description:     Packing coded parameters in bitstream of 16-bit words
**
** Links to text:   Section 4
**
** Arguments:
**
**  LINEDEF *Line     Coded parameters for a frame
**  char    *Vout     bitstream chars
**  Word16   VadBit   Voice Activity Indicator
**
** Outputs:
**
**  Word16 *Vout
**
** Return value:    None
**
*/
void    Line_Pack( LINEDEF *Line, char *Vout, Word16 Ftyp )
{
    int     i ;
    int     BitCount ;

    Word16  BitStream[192] ;
    Word16 *Bsp = BitStream ;
    Word32  Temp ;

    /* Clear the output vector */
    for ( i = 0 ; i < 24 ; i ++ )
        Vout[i] = 0 ;

 /*
  * Add the coder rate info and frame type info to the 2 msb
  * of the first word of the frame.
  * The signaling is as follows:
  *     Ftyp  WrkRate => X1X0
  *       1     Rate63     00  :   High Rate
  *       1     Rate53     01  :   Low  Rate
  *       2       x        10  :   Silence Insertion Descriptor frame
  *       0       x        11  :   Used only for simulation of
  *                                 untransmitted silence frames
  */
    switch (Ftyp) {

        case 0 : {
            Temp = 0x00000003L;
            break;
        }

        case 2 : {
            Temp = 0x00000002L;
            break;
        }

        default : {
            if ( WrkRate == Rate63 )
                Temp = 0x00000000L ;
            else
                Temp = 0x00000001L ;
            break;
        }
    }

    /* Serialize Control info */
    Bsp = Par2Ser( Temp, Bsp, 2 ) ;


    /* Check for Speech/NonSpeech case */
    if ( Ftyp == 1 ) {

    /* 24 bit LspId */
    Temp = (*Line).LspId ;
    Bsp = Par2Ser( Temp, Bsp, 24 ) ;

 /*
  * Do the part common to both rates
  */

        /* Adaptive code book lags */
        Temp = (Word32) (*Line).Olp[0] - (Word32) PitchMin ;
        Bsp = Par2Ser( Temp, Bsp, 7 ) ;

        Temp = (Word32) (*Line).Sfs[1].AcLg ;
        Bsp = Par2Ser( Temp, Bsp, 2 ) ;

        Temp = (Word32) (*Line).Olp[1] - (Word32) PitchMin ;
        Bsp = Par2Ser( Temp, Bsp, 7 ) ;

        Temp = (Word32) (*Line).Sfs[3].AcLg ;
        Bsp = Par2Ser( Temp, Bsp, 2 ) ;

        /* Write combined 12 bit index of all the gains */
        for ( i = 0 ; i < SubFrames ; i ++ ) {
            Temp = (*Line).Sfs[i].AcGn*NumOfGainLev + (*Line).Sfs[i].Mamp ;
            if ( WrkRate == Rate63 )
                Temp += (Word32) (*Line).Sfs[i].Tran << 11 ;
            Bsp = Par2Ser( Temp, Bsp, 12 ) ;
            
            /*-->here AcGn(0..84),Mamp(0..23),Tran(0..1)*/
            /*
            in decode, if ( (WrkRate == Rate63) && (Line.Olp[i>>1] < (SubFrLen-2) ) )
            			Bound_AcGn = NbFilt085 ;
            */
		
        }

        /* Write all the Grid indices */
        for ( i = 0 ; i < SubFrames ; i ++ )
            *Bsp ++ = (*Line).Sfs[i].Grid ;

        /* High rate only part */
        if ( WrkRate == Rate63 ) {

            /* Write the reserved bit as 0 */

?? 快捷鍵說明

復(fù)制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
欧美日韩aaa| 免费成人美女在线观看| 成人欧美一区二区三区在线播放| 欧美精品一区二区三区视频 | 精品少妇一区二区三区视频免付费 | 精品国产91九色蝌蚪| 日韩精品一区二区三区四区视频| 日韩一区二区免费电影| 日韩一区二区在线观看| 日韩美女视频在线| 欧美精品一区二区久久婷婷| 欧美精品一区男女天堂| 国产午夜精品理论片a级大结局| 久久久久久久久久久电影| 欧美激情一区三区| 亚洲欧洲日韩一区二区三区| 亚洲天堂精品在线观看| 亚洲影视在线播放| 日本少妇一区二区| 国内精品自线一区二区三区视频| 国产在线精品一区二区不卡了| 国产一区二区在线电影| 成人性色生活片| 色综合天天综合给合国产| 在线精品亚洲一区二区不卡| 欧美福利视频一区| 精品少妇一区二区三区在线播放 | 精品噜噜噜噜久久久久久久久试看| 日韩精品一区二区三区蜜臀| 久久人人爽人人爽| 中文字幕在线不卡| 午夜精品在线看| 国产美女在线精品| 91视频免费观看| 制服丝袜亚洲播放| 亚洲国产精品成人久久综合一区| 亚洲日本免费电影| 免费观看在线综合色| 成人午夜免费av| 精品视频999| 26uuu久久天堂性欧美| 亚洲特级片在线| 蜜臀va亚洲va欧美va天堂| 国产成人免费视频精品含羞草妖精 | 色呦呦一区二区三区| 3atv一区二区三区| 国产精品理伦片| 全国精品久久少妇| 91网址在线看| 欧美精品一区二区三区久久久| 亚洲色图制服诱惑| 国产在线视频一区二区三区| 91蜜桃网址入口| 欧美精品一区二区三区四区| 一片黄亚洲嫩模| 国产精品一二三| 欧美日韩成人高清| 国产精品护士白丝一区av| 蜜桃精品视频在线| 91黄色激情网站| 欧美激情一区二区| 麻豆精品国产传媒mv男同| 色综合久久综合| 国产三级精品在线| 免费成人av在线| 欧美三级视频在线观看| 国产精品美女久久久久av爽李琼 | 国产盗摄一区二区三区| 欧美日韩国产不卡| 亚洲日本va午夜在线影院| 精品一区中文字幕| 欧美精品三级在线观看| 亚洲女同女同女同女同女同69| 国产精品系列在线播放| 日韩午夜在线观看视频| 亚洲午夜久久久久久久久电影院| 成人av网在线| 国产蜜臀97一区二区三区| 日本视频一区二区三区| 欧美日韩亚洲综合在线| 亚洲免费观看高清完整| 成人av在线影院| 国产欧美日本一区视频| 国产一区中文字幕| 精品理论电影在线| 免费不卡在线观看| 欧美一级二级三级蜜桃| 亚洲图片有声小说| 欧美亚洲另类激情小说| 亚洲乱码中文字幕| 91黄视频在线观看| 亚洲理论在线观看| 97久久超碰国产精品电影| 国产精品久久二区二区| 不卡一区二区三区四区| 国产色产综合产在线视频| 久久91精品久久久久久秒播| 欧美一级国产精品| 久久se精品一区精品二区| 日韩精品一区二区三区视频| 久久国产乱子精品免费女| 欧美一区二区三区播放老司机| 日本一道高清亚洲日美韩| 日韩一区二区高清| 另类综合日韩欧美亚洲| 日韩欧美123| 国产一区二区视频在线播放| 26uuu另类欧美亚洲曰本| 国产精品一区二区久激情瑜伽| 精品sm在线观看| 国产精品一级片| 中文字幕国产一区二区| 99国产精品国产精品久久| 亚洲免费在线视频| 欧美日韩一区二区三区高清| 日韩精品国产精品| 欧美va日韩va| 国产一区二区在线视频| 国产精品情趣视频| 欧洲一区二区av| 天堂va蜜桃一区二区三区| 精品欧美一区二区三区精品久久| 国产一区二区0| 亚洲色图.com| 欧美日韩一区二区三区四区五区| 日韩av一区二区三区四区| 久久久影视传媒| 91麻豆精品在线观看| 日韩国产欧美在线视频| xnxx国产精品| 91色婷婷久久久久合中文| 日韩国产高清影视| 欧美激情一区不卡| 欧美色图12p| 国产乱淫av一区二区三区| 日韩一区中文字幕| 91精品国产综合久久精品性色| 韩国av一区二区三区在线观看| 亚洲欧洲精品一区二区三区| 欧美日韩一级视频| 国产黑丝在线一区二区三区| 一区二区三区精品视频在线| 精品少妇一区二区三区视频免付费 | 日韩av不卡一区二区| 国产亚洲欧洲一区高清在线观看| 97超碰欧美中文字幕| 美洲天堂一区二卡三卡四卡视频| 亚洲国产成人一区二区三区| 欧美日韩国产大片| 岛国一区二区三区| 日韩精品久久理论片| 中文字幕一区二区三区四区不卡| 在线播放/欧美激情| 97精品国产露脸对白| 精品一区二区在线看| 亚洲午夜免费电影| 欧美激情一区二区三区蜜桃视频| 欧美亚洲动漫精品| 国产不卡免费视频| 奇米色777欧美一区二区| 国产精品动漫网站| 精品少妇一区二区三区在线视频| 91福利视频在线| 成人妖精视频yjsp地址| 看国产成人h片视频| 亚洲美女一区二区三区| 久久五月婷婷丁香社区| 久久免费国产精品| 欧美日韩不卡一区二区| 99久久伊人网影院| 国产乱色国产精品免费视频| 午夜不卡在线视频| 亚洲色图欧美在线| 欧美国产日韩在线观看| 精品日韩一区二区三区| 欧美电影影音先锋| 在线观看亚洲专区| proumb性欧美在线观看| 国产一区二三区好的| 美国一区二区三区在线播放| 亚洲综合丝袜美腿| 综合久久国产九一剧情麻豆| 久久久久国产精品人| 日韩一区二区三区视频在线观看| 欧美午夜精品电影| 91国产精品成人| 97超碰欧美中文字幕| 高清国产午夜精品久久久久久| 麻豆精品蜜桃视频网站| 日本不卡免费在线视频| 天天综合天天综合色| 亚洲gay无套男同| 亚洲一区二区综合| 一区二区久久久久久| 亚洲免费观看高清在线观看| 国产精品电影一区二区三区| 国产精品欧美久久久久一区二区| 久久精品亚洲一区二区三区浴池| 欧美电影免费提供在线观看| 日韩欧美精品在线视频|