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

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

?? interf_enc.c

?? Linux 影片撥放解碼 Video DVD
?? C
?? 第 1 頁 / 共 2 頁
字號:
/*
 * ===================================================================
 *  TS 26.104
 *  R99   V3.5.0 2003-03
 *  REL-4 V4.4.0 2003-03
 *  REL-5 V5.1.0 2003-03
 *  3GPP AMR Floating-point Speech Codec
 * ===================================================================
 *
 */

/*
 * interf_enc.c
 *
 *
 * Project:
 *    AMR Floating-Point Codec
 *
 * Contains:
 *    This module contains all the functions needed encoding 160
 *    16-bit speech samples to AMR encoder parameters.
 *
 */

/*
 * include files
 */
#include <stdlib.h>
#include <stdio.h>
#include <memory.h>
#include "sp_enc.h"
#include "interf_rom.h"

/*
 * Declare structure types
 */
/* Declaration transmitted frame types */
enum TXFrameType { TX_SPEECH_GOOD = 0,
                   TX_SID_FIRST,
                   TX_SID_UPDATE,
                   TX_NO_DATA,
                   TX_SPEECH_DEGRADED,
                   TX_SPEECH_BAD,
                   TX_SID_BAD,
                   TX_ONSET,
                   TX_N_FRAMETYPES     /* number of frame types */
};

/* Declaration of interface structure */
typedef struct
{
   Word16 sid_update_counter;   /* Number of frames since last SID */
   Word16 sid_handover_debt;   /* Number of extra SID_UPD frames to schedule */
   Word32 dtx;
   enum TXFrameType prev_ft;   /* Type of the previous frame */
   void *encoderState;   /* Points encoder state structure */
} enc_interface_State;


#ifdef ETSI
/*
 * Prm2Bits
 *
 *
 * Parameters:
 *    value             I: value to be converted to binary
 *    no_of_bits        I: number of bits associated with value
 *    bitstream         O: address where bits are written
 *
 * Function:
 *    Convert integer to binary and write the bits to the array.
 *    The most significant bits are written first.
 * Returns:
 *    void
 */
static void Int2Bin( Word16 value, Word16 no_of_bits, Word16 *bitstream )
{
   Word32 i, bit;
   Word16 *pt_bitstream;

   pt_bitstream = &bitstream[no_of_bits];

   for ( i = 0; i < no_of_bits; i++ ) {
      bit = value & 0x0001;

      if ( bit == 0 ) {
         * --pt_bitstream = 0;
      }
      else {
         * --pt_bitstream = 1;
      }
      value = ( Word16 )( value >> 1 );
   }
}


/*
 * Prm2Bits
 *
 *
 * Parameters:
 *    mode              I: AMR mode
 *    prm               I: analysis parameters
 *    bits              O: serial bits
 *
 * Function:
 *    converts the encoder parameter vector into a vector of serial bits.
 * Returns:
 *    void
 */
static void Prm2Bits( enum Mode mode, Word16 prm[], Word16 bits[] )
{
   Word32 i;

   switch ( mode ) {
      case MR122:
         for ( i = 0; i < PRMNO_MR122; i++ ) {
            Int2Bin( prm[i], bitno_MR122[i], bits );
            bits += bitno_MR122[i];
         }
         break;

      case MR102:
         for ( i = 0; i < PRMNO_MR102; i++ ) {
            Int2Bin( prm[i], bitno_MR102[i], bits );
            bits += bitno_MR102[i];
         }
         break;

      case MR795:
         for ( i = 0; i < PRMNO_MR795; i++ ) {
            Int2Bin( prm[i], bitno_MR795[i], bits );
            bits += bitno_MR795[i];
         }
         break;

      case MR74:
         for ( i = 0; i < PRMNO_MR74; i++ ) {
            Int2Bin( prm[i], bitno_MR74[i], bits );
            bits += bitno_MR74[i];
         }
         break;

      case MR67:
         for ( i = 0; i < PRMNO_MR67; i++ ) {
            Int2Bin( prm[i], bitno_MR67[i], bits );
            bits += bitno_MR67[i];
         }
         break;

      case MR59:
         for ( i = 0; i < PRMNO_MR59; i++ ) {
            Int2Bin( prm[i], bitno_MR59[i], bits );
            bits += bitno_MR59[i];
         }
         break;

      case MR515:
         for ( i = 0; i < PRMNO_MR515; i++ ) {
            Int2Bin( prm[i], bitno_MR515[i], bits );
            bits += bitno_MR515[i];
         }
         break;

      case MR475:
         for ( i = 0; i < PRMNO_MR475; i++ ) {
            Int2Bin( prm[i], bitno_MR475[i], bits );
            bits += bitno_MR475[i];
         }
         break;

      case MRDTX:
         for ( i = 0; i < PRMNO_MRDTX; i++ ) {
            Int2Bin( prm[i], bitno_MRDTX[i], bits );
            bits += bitno_MRDTX[i];
         }
         break;
   }
   return;
}

#else

#ifndef IF2

/*
 * EncoderMMS
 *
 *
 * Parameters:
 *    mode                 I: AMR mode
 *    param                I: Encoder output parameters
 *    stream               O: packed speech frame
 *    frame_type           I: frame type (DTX)
 *    speech_mode          I: speech mode (DTX)
 *
 * Function:
 *    Pack encoder output parameters to octet structure according
 *    importance table and AMR file storage format according to
 *    RFC 3267.
 * Returns:
 *    number of octets
 */
static int EncoderMMS( enum Mode mode, Word16 *param, UWord8 *stream, enum
      TXFrameType frame_type, enum Mode speech_mode )
{
   Word32 j = 0, k;
   Word16 *mask;

   memset(stream, 0, block_size[mode]);

   *stream = toc_byte[mode];
   stream++;

   if ( mode == 15 ) {
      return 1;
   }
   else if ( mode == MRDTX ) {
      mask = order_MRDTX;

      for ( j = 1; j < 36; j++ ) {
         if ( param[ * mask] & *( mask + 1 ) )
            *stream += 0x01;
         mask += 2;

         if ( j % 8 )
            *stream <<= 1;
         else
            stream++;
      }

      /* add SID type information */
      if ( frame_type == TX_SID_UPDATE )
         *stream += 0x01;
      *stream <<= 3;

      /* speech mode indication */
      *stream += ( unsigned char )(speech_mode & 0x0007);

	  *stream <<= 1;

      /* don't shift at the end of the function */
      return 6;
   }
   else if ( mode == MR475 ) {
      mask = order_MR475;

      for ( j = 1; j < 96; j++ ) {
         if ( param[ * mask] & *( mask + 1 ) )
            *stream += 0x01;
         mask += 2;

         if ( j % 8 )
            *stream <<= 1;
         else
            stream++;
      }
   }
   else if ( mode == MR515 ) {
      mask = order_MR515;

      for ( j = 1; j < 104; j++ ) {
         if ( param[ * mask] & *( mask + 1 ) )
            *stream += 0x01;
         mask += 2;

         if ( j % 8 )
            *stream <<= 1;
         else
            stream++;
      }
   }
   else if ( mode == MR59 ) {
      mask = order_MR59;

      for ( j = 1; j < 119; j++ ) {
         if ( param[ * mask] & *( mask + 1 ) )
            *stream += 0x01;
         mask += 2;

         if ( j % 8 )
            *stream <<= 1;
         else
            stream++;
      }
   }
   else if ( mode == MR67 ) {
      mask = order_MR67;

      for ( j = 1; j < 135; j++ ) {
         if ( param[ * mask] & *( mask + 1 ) )
            *stream += 0x01;
         mask += 2;

         if ( j % 8 )
            *stream <<= 1;
         else
            stream++;
      }
   }
   else if ( mode == MR74 ) {
      mask = order_MR74;

      for ( j = 1; j < 149; j++ ) {
         if ( param[ * mask] & *( mask + 1 ) )
            *stream += 0x01;
         mask += 2;

         if ( j % 8 )
            *stream <<= 1;
         else
            stream++;
      }
   }
   else if ( mode == MR795 ) {
      mask = order_MR795;

      for ( j = 1; j < 160; j++ ) {
         if ( param[ * mask] & *( mask + 1 ) )
            *stream += 0x01;
         mask += 2;

         if ( j % 8 )
            *stream <<= 1;
         else
            stream++;
      }
   }
   else if ( mode == MR102 ) {
      mask = order_MR102;

      for ( j = 1; j < 205; j++ ) {
         if ( param[ * mask] & *( mask + 1 ) )
            *stream += 0x01;
         mask += 2;

         if ( j % 8 )
            *stream <<= 1;
         else
            stream++;
      }
   }
   else if ( mode == MR122 ) {
      mask = order_MR122;

      for ( j = 1; j < 245; j++ ) {
         if ( param[ * mask] & *( mask + 1 ) )
            *stream += 0x01;
         mask += 2;

         if ( j % 8 )
            *stream <<= 1;
         else
            stream++;
      }
   }

   /* shift remaining bits */
   if ( k = j % 8 )	*stream <<= ( 8 - k );
   return( (int)block_size[mode] );
}

#else

/*
 * Encoder3GPP
 *
 *
 * Parameters:
 *    mode                 I: AMR mode
 *    param                I: Encoder output parameters
 *    stream               O: packed speech frame
 *    frame_type           I: frame type (DTX)
 *    speech_mode          I: speech mode (DTX)
 *
 * Function:
 *    Pack encoder output parameters to octet structure according
 *    importance table.
 * Returns:
 *    number of octets
 */
static int Encoder3GPP( enum Mode mode, Word16 *param, UWord8 *stream, enum
      TXFrameType frame_type, enum Mode speech_mode )
{
   Word32 j = 0;
   Word16 *mask;

   memset(stream, 0, block_size[mode]);

   if ( mode == 15 ) {
      *stream = 0xF;
      return 1;
   }
   else if ( mode == MRDTX ) {
      mask = order_MRDTX;
      *stream = 0x40;

      for ( j = 5; j < 40; j++ ) {
         if ( param[ * mask] & *( mask + 1 ) )
            *stream += 0x80;

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
色综合久久88色综合天天 | 精品999在线播放| 亚洲最大成人网4388xx| 成人av网址在线| 国产精品美日韩| 波多野结衣的一区二区三区| 国产精品成人一区二区艾草 | 九色综合狠狠综合久久| 精品国产第一区二区三区观看体验| 三级成人在线视频| 在线不卡a资源高清| 久久超级碰视频| 精品久久久久久无| 欧美bbbbb| 精品sm捆绑视频| 国产·精品毛片| 亚洲一卡二卡三卡四卡无卡久久| 在线视频一区二区三区| 日本不卡的三区四区五区| 欧美sm美女调教| 国产一区不卡在线| 一区二区三区在线观看视频| 欧美色综合网站| 精品亚洲aⅴ乱码一区二区三区| 精品国产免费视频| 波多野结衣在线一区| 亚洲高清不卡在线| 精品国产伦一区二区三区免费| www.日韩在线| 亚洲1区2区3区视频| 欧美另类videos死尸| 国产成人超碰人人澡人人澡| 中文字幕在线观看不卡视频| 日韩一区二区精品在线观看| 国产高清不卡一区| 国产精品久久久久国产精品日日| 欧美三级中文字幕在线观看| 奇米四色…亚洲| 自拍偷拍亚洲激情| 日韩一级免费一区| 色www精品视频在线观看| 久久激情五月激情| 欧美xxxxxxxx| 欧美裸体bbwbbwbbw| 国产在线精品不卡| 奇米888四色在线精品| 国产精品私人自拍| 欧美亚洲一区三区| 国产乱子伦视频一区二区三区 | 亚洲欧洲韩国日本视频| 欧美精品亚洲一区二区在线播放| 国产高清亚洲一区| 亚洲国产经典视频| 久久久亚洲午夜电影| 色综合欧美在线| 国产aⅴ精品一区二区三区色成熟| 一区二区三区四区不卡视频| 日本一区二区动态图| 欧美电影一区二区| 93久久精品日日躁夜夜躁欧美| 精品制服美女久久| 五月天激情综合| 亚洲精品国产精品乱码不99| 国产视频一区在线观看 | 91在线精品秘密一区二区| 蜜桃精品在线观看| 国产精品污污网站在线观看| 久久影院视频免费| 69堂成人精品免费视频| 欧亚一区二区三区| 99r国产精品| 不卡电影一区二区三区| 国产一区二区三区| 婷婷国产v国产偷v亚洲高清| 亚洲成av人片| 亚洲综合丝袜美腿| 亚洲午夜久久久久久久久久久 | 欧美日韩1区2区| 精品视频1区2区3区| 色综合天天综合网国产成人综合天 | 成人免费在线视频观看| 国产人久久人人人人爽| 日韩美女天天操| 精品国产成人系列| 日韩亚洲欧美一区| 日韩视频一区二区三区| 精品三级在线观看| 日韩精品一区二区三区四区视频 | 国产精品久久久久aaaa| 亚洲天堂a在线| 日韩一区日韩二区| 亚洲激情成人在线| 一区二区三区四区国产精品| 中文字幕在线视频一区| 国产精品毛片大码女人| 精品国产一区二区三区久久久蜜月| 欧美一区二区私人影院日本| 欧美日韩久久一区| 欧美肥妇free| ww久久中文字幕| 欧美激情一区二区三区四区 | 欧美在线色视频| 欧美色区777第一页| 91免费国产视频网站| 欧美日韩国产在线观看| 欧美高清激情brazzers| 国产午夜精品久久久久久免费视| 久久久久亚洲综合| 亚洲精品在线电影| 国产精品日韩成人| 亚洲视频狠狠干| 免费视频一区二区| 国产成人av一区| 欧美日韩专区在线| 日韩午夜在线观看视频| 欧美变态凌虐bdsm| 日本一区二区视频在线观看| 亚洲人成亚洲人成在线观看图片| 奇米色一区二区| 成人高清视频在线| 日韩手机在线导航| 国产精品久久久久影视| 日本免费新一区视频| 国产乱码精品一区二区三 | 日本欧美一区二区在线观看| 国产在线视视频有精品| 99国产精品久久久久| 欧美日韩一本到| 国产精品亲子伦对白| 婷婷中文字幕一区三区| 精一区二区三区| 色噜噜偷拍精品综合在线| 欧美日韩一区高清| 中文字幕日本不卡| 日本不卡一区二区三区| 欧美在线短视频| 久久老女人爱爱| 成人动漫一区二区在线| 在线成人免费观看| 国产欧美日韩亚州综合| 男女性色大片免费观看一区二区| 国产sm精品调教视频网站| 日韩一级免费一区| 亚洲影院久久精品| 久久狠狠亚洲综合| 欧美高清性hdvideosex| 国产精品电影院| 国产成人一级电影| 日韩美一区二区三区| 一区二区三区在线观看国产| www.欧美.com| www国产精品av| 亚洲国产日韩一区二区| 成人激情动漫在线观看| 555夜色666亚洲国产免| 亚洲18女电影在线观看| 99久久伊人精品| 中文文精品字幕一区二区| 蜜桃久久av一区| 日韩精品在线一区| 亚洲超碰精品一区二区| 欧美综合色免费| 国产精品视频一二| 国产成人免费视频网站 | 国产精品一区久久久久| 久久在线免费观看| 日韩精品国产欧美| 91精品国产综合久久久蜜臀图片| 亚洲美女视频在线观看| 一本一本大道香蕉久在线精品| 国产日韩欧美一区二区三区综合 | 在线日韩av片| 一区二区三区日本| 国产99久久久久久免费看农村| 国产日韩欧美制服另类| 狠狠色丁香久久婷婷综合丁香| 精品国产一区二区在线观看| 日本视频中文字幕一区二区三区| 欧美一区二区视频免费观看| 午夜精品久久久久影视| 日韩欧美电影一二三| 秋霞电影一区二区| 精品不卡在线视频| 国产精品一卡二| 亚洲三级在线观看| 91久久免费观看| 日本欧美韩国一区三区| 日韩一区二区在线观看视频播放| 亚洲国产精品久久久男人的天堂| 制服丝袜亚洲精品中文字幕| 奇米影视一区二区三区小说| 久久亚洲一区二区三区明星换脸 | 成人av在线资源网站| 国产欧美精品一区二区三区四区| 99综合影院在线| 亚洲一区二区三区在线看| 欧美久久久久久久久中文字幕| 日本中文字幕一区二区视频| 国产性色一区二区| av成人老司机|