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

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

?? util_lbc.c

?? VC G.723
?? 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 4.1
    copyright (c) 1995, AudioCodes, DSP Group, France Telecom,
    Universite de Sherbrooke.  All rights reserved.
*/


#include <stdlib.h>
#include <stdio.h>
#include <string.h>
//#include <mem.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 ( Dpnt, sizeof(Word16), Len, Fp ) ;
     //memcpy ( Dpnt, Fp, len);

   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( Dpnt, sizeof(Word16), Len, Fp ) ;
	//memcpy(Fp, Dpnt, len)
}

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

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

    /* Check for Sid frame */
    if ( FrType == (Word16) 0x0002 ) {
        return ;
    }

    if ( FrType == (Word16) 0x0000 )
        Size = 24 ;
    else
        Size = 20 ;

    fwrite( Line, Size, 1, Fp ) ;
	//memcpy(Fp,line,1);
}

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

    fread( Line, 1,1, Fp ) ;
     //memcpy(Line,Fp,1)
    FrType = Line[0] & (Word16)0x0003 ;

    /* Check for Sid frame */
    if ( FrType == (Word16) 0x0002 ) {
        Size = 3 ;
        fread( &Line[1], Size, 1, Fp ) ;
        return ;
    }

    if ( FrType == (Word16) 0x0000 )
        Size = 23 ;
    else
        Size = 19 ;

    fread( &Line[1], Size, 1, Fp ) ;
}

/*
**
** 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 VadBit )
{
    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 the VAD status to the 2 msb
        of the first word of the frame.

    The signaling is as follows:
        00  :   High Rate
        10  :   Low Rate
        01  :   Non Speech
        11  :   Reserved for future use
    */

    if ( VadBit == 1 ) {
        if ( WrkRate == Rate63 )
            Temp = 0x00000000L ;
        else
            Temp = 0x00000001L ;
    }
    else {
        printf("Version 4.1 : Incorrect value of VadBit\n");
        exit(-1);
    }

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

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

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

        /*
            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 ) ;
        }

        /* 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 */
            *Bsp ++ = (Word16) 0 ;

            /* Write 13 bit combined position index */
            Temp = (*Line).Sfs[0].Ppos >> 16 ;
            Temp = Temp * 9 + ( (*Line).Sfs[1].Ppos >> 14) ;
            Temp *= 90 ;
            Temp += ((*Line).Sfs[2].Ppos >> 16) * 9 + ( (*Line).Sfs[3].Ppos >> 14 ) ;
            Bsp = Par2Ser( Temp, Bsp, 13 ) ;

            /* Write all the pulse positions */
            Temp = (*Line).Sfs[0].Ppos & 0x0000ffffL ;
            Bsp = Par2Ser( Temp, Bsp, 16 ) ;

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
成人a级免费电影| 日韩欧美123| 精品国产成人在线影院| 国产精品国模大尺度视频| 偷拍亚洲欧洲综合| 91美女片黄在线观看91美女| 久久亚洲一区二区三区四区| 亚洲国产日韩a在线播放| 国产成a人亚洲| 欧美精品一区男女天堂| 亚洲国产视频直播| 色综合久久综合中文综合网| 久久久久久一二三区| 午夜视频在线观看一区二区| 94-欧美-setu| 中国av一区二区三区| 国产呦精品一区二区三区网站| 欧美日韩视频专区在线播放| 中文字幕一区二区不卡| 国产不卡一区视频| 日韩欧美的一区| 轻轻草成人在线| 91精品国产综合久久久久久久久久| 综合色中文字幕| 国产69精品久久久久毛片| 精品欧美久久久| 精品一区二区久久久| 日韩美女天天操| 久久精品国产精品青草| 欧美一级黄色大片| 日本中文字幕一区二区视频| 精品视频免费在线| 午夜欧美电影在线观看| 欧美日韩精品一区二区三区四区| 亚洲人成网站在线| 日本丶国产丶欧美色综合| 亚洲美女电影在线| 欧美亚洲日本一区| 午夜视频一区二区| 欧美变态tickling挠脚心| 国产精品自拍毛片| 亚洲天堂a在线| 欧洲国内综合视频| 日韩精品一二三四| 精品卡一卡二卡三卡四在线| 久久99精品久久久久| 久久久久久久久伊人| 国产91精品入口| 亚洲日本中文字幕区| 91福利国产精品| 日韩在线播放一区二区| 精品国产精品一区二区夜夜嗨| 狠狠色综合色综合网络| 精品国产一区二区三区四区四 | 韩国精品一区二区| 久久这里只有精品首页| 丰满少妇久久久久久久| 亚洲人成精品久久久久久| 欧美亚洲丝袜传媒另类| 久久精品国产99国产| 国产欧美日韩另类视频免费观看| 色哦色哦哦色天天综合| 天堂蜜桃91精品| 国产欧美精品国产国产专区| 日本高清视频一区二区| 精品一区二区三区不卡| 国产精品理论片| 欧美日韩中文字幕一区| 国产成人夜色高潮福利影视| 一区二区日韩av| 久久久噜噜噜久久人人看| 欧美主播一区二区三区美女| 国产精品一级片| 亚洲第一会所有码转帖| 国产欧美一区二区精品性| 在线观看av不卡| 国产精选一区二区三区| 午夜亚洲福利老司机| 日本一区二区三区在线观看| 欧美疯狂做受xxxx富婆| 99久久国产综合精品色伊| 久久精品国产成人一区二区三区| 亚洲精选免费视频| 久久久不卡网国产精品二区| 欧美色综合网站| 成人动漫视频在线| 久久66热偷产精品| 亚洲大型综合色站| 亚洲欧美一区二区三区极速播放| 久久久一区二区三区捆绑**| 欧美日韩亚洲综合在线| 99视频一区二区| 国产毛片精品视频| 美国十次了思思久久精品导航| 亚洲女人的天堂| 国产精品九色蝌蚪自拍| 久久精品水蜜桃av综合天堂| 欧美一区二区三区在线看| 色香蕉成人二区免费| av欧美精品.com| 成人激情视频网站| 国产精品99久久久久久似苏梦涵| 免费高清视频精品| 午夜av一区二区三区| 一区二区三区免费网站| 成人免费在线视频观看| 国产精品二三区| 国产女主播在线一区二区| www日韩大片| 2020日本不卡一区二区视频| 欧美一区二区在线视频| 3atv一区二区三区| 欧美麻豆精品久久久久久| 欧美色倩网站大全免费| 欧美日韩亚洲丝袜制服| 欧美老肥妇做.爰bbww| 欧美日韩不卡一区| 欧美一区二区美女| 日韩欧美一区二区不卡| 精品国产一二三区| 久久五月婷婷丁香社区| 久久蜜桃av一区精品变态类天堂| 久久久午夜精品理论片中文字幕| 久久免费看少妇高潮| 国产精品美女一区二区在线观看| 国产精品免费免费| 亚洲欧美日韩在线| 亚洲成av人片在www色猫咪| 午夜欧美在线一二页| 喷白浆一区二区| 国产精品一二三| gogo大胆日本视频一区| 一本大道久久a久久综合| 色吧成人激情小说| 欧美高清视频www夜色资源网| 日韩免费一区二区三区在线播放| wwwwww.欧美系列| 国产精品久久久久久妇女6080 | 亚洲精品一区二区三区精华液| 亚洲精品一区二区三区影院 | 国产精品传媒在线| 亚洲电影一区二区三区| 免费观看在线综合| 国产精品影视在线| 一本一道波多野结衣一区二区| 欧美精品免费视频| 国产片一区二区三区| 亚洲精品国产第一综合99久久| 五月天亚洲精品| 国产精品91一区二区| 一本色道久久综合狠狠躁的推荐| 91麻豆精品国产91久久久久久久久| 精品嫩草影院久久| 一区二区三区中文字幕| 国产在线不卡视频| 欧美色图片你懂的| 日本一区二区综合亚洲| 天天综合天天做天天综合| 极品尤物av久久免费看| 91精品福利视频| 国产亲近乱来精品视频| 日日欢夜夜爽一区| 97se狠狠狠综合亚洲狠狠| 精品久久久久一区| 亚洲图片欧美一区| 成人国产免费视频| 欧美精品一区二区三区久久久| 亚洲欧美日韩国产成人精品影院 | 亚洲午夜电影在线观看| 精品在线免费观看| 欧美三级乱人伦电影| 国产精品久久久久7777按摩 | 亚洲国产综合人成综合网站| 粉嫩高潮美女一区二区三区| 91精品欧美综合在线观看最新| 亚洲欧美在线另类| 国产成人综合亚洲91猫咪| 91精品国产综合久久精品app| 亚洲视频综合在线| 国产乱码精品一区二区三| 91精品国产综合久久久久久久| 亚洲综合在线电影| eeuss鲁片一区二区三区在线看| 精品久久五月天| 喷水一区二区三区| 911国产精品| 五月天激情小说综合| 欧美综合色免费| 亚洲一区二区综合| 91久久精品网| 亚洲你懂的在线视频| 99re视频这里只有精品| 国产精品午夜在线| 成人国产精品免费网站| 中文字幕精品在线不卡| 成人激情免费视频| 成人欧美一区二区三区视频网页| 成人精品电影在线观看| 国产精品国产三级国产普通话三级| 国产一区二区看久久|