亚洲欧美第一页_禁久久精品乱码_粉嫩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一区二区三区免费野_久草精品视频
日本强好片久久久久久aaa| 一区二区三区四区蜜桃| 国产日韩在线不卡| 国产精品美女视频| 亚洲综合小说图片| 精彩视频一区二区三区| 成人亚洲一区二区一| 国产成人综合在线观看| 91年精品国产| 精品国产污污免费网站入口| 亚洲色图自拍偷拍美腿丝袜制服诱惑麻豆| 亚洲一区二区三区自拍| 国产福利精品导航| 欧美精品在欧美一区二区少妇| 精品国产成人系列| 亚洲图片自拍偷拍| 91视频在线观看| 精品国产精品网麻豆系列| 伊人夜夜躁av伊人久久| 国产一区二区三区黄视频 | 中文字幕免费在线观看视频一区| 亚洲国产精品人人做人人爽| 大胆欧美人体老妇| 精品国产免费人成在线观看| 亚洲激情五月婷婷| 成熟亚洲日本毛茸茸凸凹| 日韩美一区二区三区| 亚洲一区视频在线| av电影一区二区| 久久久综合激的五月天| 免费不卡在线观看| 欧美视频一区二区| 亚洲色图色小说| 99久久久精品| 国产精品成人免费精品自在线观看| 美洲天堂一区二卡三卡四卡视频| 在线免费观看日本一区| 亚洲三级理论片| 97超碰欧美中文字幕| 日韩一级黄色片| 日韩国产精品久久久久久亚洲| 日本黄色一区二区| 亚洲精品综合在线| 一道本成人在线| 亚洲品质自拍视频| 91官网在线免费观看| 洋洋av久久久久久久一区| 一本大道久久精品懂色aⅴ| 中文字幕va一区二区三区| 成人性色生活片免费看爆迷你毛片| 欧美r级电影在线观看| 美女视频一区在线观看| 欧美日韩激情在线| 婷婷综合久久一区二区三区| 欧美丰满少妇xxxxx高潮对白| 亚洲国产日韩在线一区模特| 91激情五月电影| 青青草国产精品亚洲专区无| 91精品国产91综合久久蜜臀| 久国产精品韩国三级视频| 在线观看亚洲a| 亚洲国产cao| 欧美一区二区免费视频| 激情文学综合插| 欧美一区二区三区婷婷月色| 激情图区综合网| 亚洲国产精品激情在线观看| 91蜜桃网址入口| 亚洲综合在线视频| 91精品国产91久久综合桃花 | 亚洲综合图片区| 欧美理论电影在线| 国产呦精品一区二区三区网站| 国产精品―色哟哟| 欧美体内she精视频| 青娱乐精品在线视频| 国产亚洲美州欧州综合国| 91麻豆免费看| 精品一区二区在线视频| 国产精品久久久久久久久果冻传媒| 在线日韩av片| 日韩成人一级片| 最新高清无码专区| 91精品国产色综合久久久蜜香臀| 国内精品嫩模私拍在线| 一区二区在线免费| 国产日韩欧美麻豆| 欧美日韩国产小视频| 成人免费三级在线| 奇米888四色在线精品| 亚洲欧美在线另类| 精品污污网站免费看| 国产1区2区3区精品美女| 午夜视频在线观看一区| www激情久久| 欧美精品日韩精品| 欧美性videosxxxxx| 91女人视频在线观看| 成人avav影音| 不卡电影一区二区三区| 国产黑丝在线一区二区三区| 国产在线精品国自产拍免费| 奇米四色…亚洲| 青青草精品视频| 久久国产精品免费| 伦理电影国产精品| 美女看a上一区| 久久99九九99精品| 久久av资源网| 精品一区免费av| 国产精品99久久久久久久女警 | av在线不卡电影| 成人久久18免费网站麻豆| 国产风韵犹存在线视精品| 国产成人综合在线播放| 成av人片一区二区| 91在线码无精品| 日本高清不卡一区| 欧美日韩视频在线第一区| 日本久久一区二区| 欧美日韩国产片| 欧美一区二区三区视频在线观看| 欧美一区二区免费视频| 亚洲精品一区二区三区99| 久久蜜桃av一区二区天堂 | 亚洲妇熟xx妇色黄| 日韩高清欧美激情| 国产毛片精品视频| 91美女片黄在线| 7777精品伊人久久久大香线蕉最新版| 日韩欧美在线影院| 欧美激情艳妇裸体舞| 一区二区三区在线播| 亚洲chinese男男1069| 另类综合日韩欧美亚洲| 国产成人精品免费看| 日本久久一区二区| 精品国产一区二区三区不卡 | av电影在线观看一区| 欧美视频精品在线观看| www久久精品| 亚洲精品乱码久久久久久日本蜜臀| 午夜精品影院在线观看| 国产精品一区二区久激情瑜伽 | 精品日韩欧美在线| 亚洲国产精品av| 亚洲香肠在线观看| 国产乱人伦偷精品视频免下载| 91视频.com| 日韩精品专区在线影院重磅| **网站欧美大片在线观看| 午夜成人在线视频| 国产在线精品一区二区三区不卡| 一本久道中文字幕精品亚洲嫩 | 老司机一区二区| 91啦中文在线观看| 精品国产乱码久久久久久久| 亚洲免费在线观看| 国产精品综合一区二区| 欧美日韩一级视频| 中文字幕av不卡| 久草中文综合在线| 欧美手机在线视频| 中文字幕av资源一区| 久久99久久久久久久久久久| 欧美在线免费观看视频| 中文字幕的久久| 国产一区二区在线视频| 欧美区在线观看| 亚洲欧美一区二区三区国产精品| 激情文学综合网| 日韩一区二区精品| 亚洲成av人片| 91免费观看在线| 中文字幕在线一区| 国产99久久久久久免费看农村| 日韩视频免费观看高清完整版在线观看| 亚洲欧洲国产专区| 国产高清亚洲一区| 欧美xxxx老人做受| 老司机精品视频导航| 欧美一区二区三区在线电影| 亚洲成人1区2区| 欧美亚洲综合一区| 亚洲综合精品自拍| 91麻豆免费视频| 亚洲黄色免费电影| 波多野结衣中文一区| 国产精品午夜在线观看| 国产精品99久久久久久似苏梦涵| 欧美va日韩va| 国产麻豆一精品一av一免费| 久久影院视频免费| 激情综合色播激情啊| 久久综合九色综合97_久久久| 蜜臀久久久99精品久久久久久| 日韩一区二区在线看片| 蜜臀91精品一区二区三区 | 国产精品18久久久久久久久| 精品精品国产高清a毛片牛牛|