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

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

?? biaridecod.c

?? TML的參考源代碼
?? C
字號:
/*
***********************************************************************
* COPYRIGHT AND WARRANTY INFORMATION
*
* Copyright 2001, International Telecommunications Union, Geneva
*
* DISCLAIMER OF WARRANTY
*
* These software programs are available to the user without any
* license fee or royalty on an "as is" basis. The ITU disclaims
* any and all warranties, whether express, implied, or
* statutory, including any implied warranties of merchantability
* or of fitness for a particular purpose.  In no event shall the
* contributor or the ITU be liable for any incidental, punitive, or
* consequential damages of any kind whatsoever arising from the
* use of these programs.
*
* This disclaimer of warranty extends to the user of these programs
* and user's customers, employees, agents, transferees, successors,
* and assigns.
*
* The ITU does not represent or warrant that the programs furnished
* hereunder are free of infringement of any third-party patents.
* Commercial implementations of ITU-T Recommendations, including
* shareware, may be subject to royalty fees to patent holders.
* Information regarding the ITU-T patent policy is available from
* the ITU Web site at http://www.itu.int.
*
* THIS IS NOT A GRANT OF PATENT RIGHTS - SEE THE ITU-T PATENT POLICY.
************************************************************************
*/

/*!
 *************************************************************************************
 * \file biaridecod.c
 *
 * \brief
 *    binary arithmetic decoder routines
 * \date
 *    21. Oct 2000
 * \author
 *    Main contributors (see contributors.h for copyright, address and affiliation details)
 *    - Detlev Marpe                    <marpe@hhi.de>
 *    - Gabi Blaettermann               <blaetter@hhi.de>
 *************************************************************************************
 */

#include <stdlib.h>
#include <math.h>
#include "global.h"
#include "biaridecod.h"
#include "memalloc.h"

extern int symbolCount;

/************************************************************************
 * M a c r o s
 ************************************************************************
 */

#define get_byte(){                                                     \
            Dbuffer = Dcodestrm[(*Dcodestrm_len)++];        \
                        Dbits_to_go = 7;                                \
          }


/************************************************************************
 ************************************************************************
                      init / exit decoder
 ************************************************************************
 ************************************************************************/


/*!
 ************************************************************************
 * \brief
 *    Allocates memory for the DecodingEnvironment struct
 * \return DecodingContextPtr
 *    allocated memory
 ************************************************************************
 */
DecodingEnvironmentPtr arideco_create_decoding_environment()
{
  DecodingEnvironmentPtr dep;

  if ((dep = calloc(1,sizeof(DecodingEnvironment))) == NULL)
    no_mem_exit("arideco_create_decoding_environment: dep");
  return dep;
}


/*!
 ***********************************************************************
 * \brief
 *    Frees memory of the DecodingEnvironment struct
 ***********************************************************************
 */
void arideco_delete_decoding_environment(DecodingEnvironmentPtr dep)
{
  if (dep == NULL)
  {
    snprintf(errortext, ET_SIZE, "Error freeing dep (NULL pointer)");
    error (errortext, 200);
  }
  else
    free(dep);
}


/*!
 ************************************************************************
 * \brief
 *    Initializes the DecodingEnvironment for the arithmetic coder
 ************************************************************************
 */
void arideco_start_decoding(DecodingEnvironmentPtr dep, unsigned char *cpixcode,
                            int firstbyte, int *cpixcode_len )
{
  int i;
  int bits;

  bits = CODE_VALUE_BITS;

  Dcodestrm = cpixcode;
  Dcodestrm_len = cpixcode_len;
  *Dcodestrm_len = firstbyte;

  Dbits_to_go = 0;
  dep->Dvalue = 0;

  for (i = 0; i < bits; i++)
  {
    if (--Dbits_to_go < 0)
      get_byte();
    dep->Dvalue += dep->Dvalue  + (Dbuffer & 1);
    Dbuffer >>= 1;
  }
  dep->Dlow = 0;
  dep->Dhigh = TOP_VALUE;
}


/*!
 ************************************************************************
 * \brief
 *    arideco_bits_read
 ************************************************************************
 */
int arideco_bits_read(DecodingEnvironmentPtr dep)
{
  return 8 * ((*Dcodestrm_len)-1) + (8 - Dbits_to_go) - CODE_VALUE_BITS;
}


/*!
 ************************************************************************
 * \brief
 *    arideco_done_decoding():
 ************************************************************************
 */
void arideco_done_decoding(DecodingEnvironmentPtr dep)
{
  (*Dcodestrm_len)++;
}



/*!
 ************************************************************************
 * \brief
 *    biari_decode_symbol():
 * \return
 *    the decoded symbol
 ************************************************************************
 */
unsigned int biari_decode_symbol(DecodingEnvironmentPtr dep, BiContextTypePtr bi_ct )
{
  unsigned int scaled_range;
  unsigned int symbol=0;
  int Dlow_m1 = dep->Dlow - 1;

#if  AAC_FRAC_TABLE
  if ( (scaled_range =  ( ( (dep->Dhigh - Dlow_m1) * ((bi_ct->cum_freq[1]*ARITH_CUM_FREQ_TABLE[bi_ct->cum_freq[0]])>>16))>>10) ) >=  (dep->Dvalue - Dlow_m1) )
#else
  if ( (scaled_range =  ( ( (dep->Dhigh - Dlow_m1) * bi_ct->cum_freq[1]) / bi_ct->cum_freq[0] )) >=  (dep->Dvalue - Dlow_m1) )
#endif
  {
    symbol++;
    dep->Dhigh = Dlow_m1 + scaled_range;
    bi_ct->cum_freq[1]++;
  }
  else
    dep->Dlow += scaled_range;

  if (++bi_ct->cum_freq[0] >= bi_ct->max_cum_freq)
    rescale_cum_freq(bi_ct);

  do
  {
    if (dep->Dhigh >= HALF)
    {
      if (dep->Dlow < HALF)
        if (dep->Dlow >= FIRST_QTR && dep->Dhigh < THIRD_QTR)
        {
          dep->Dhigh -= FIRST_QTR;
          dep->Dvalue -= FIRST_QTR;
          dep->Dlow -= FIRST_QTR;
        }
        else
          break;
        else
        {
          dep->Dhigh -= HALF;
          dep->Dvalue -= HALF;
          dep->Dlow -= HALF;
        }
    }
    dep->Dlow <<= 1;
    dep->Dhigh += dep->Dhigh+1;

    if (--Dbits_to_go < 0)
      get_byte();

    dep->Dvalue += dep->Dvalue  + (Dbuffer & 1);
    Dbuffer >>= 1;
  }
  while (1);

  return symbol;
}



/*!
 ************************************************************************
 * \brief
 *    Initializes a given context with some pre-defined probabilities
 *    and a maximum symbol count for triggering the rescaling
 ************************************************************************
 */
void biari_init_context( BiContextTypePtr ctx, int ini_count_0, int ini_count_1, int max_cum_freq )
{

  ctx->in_use       = TRUE;
  ctx->max_cum_freq = max_cum_freq;


  ctx->cum_freq[1]  = ini_count_1;
  ctx->cum_freq[0]  = ini_count_0 + ini_count_1;

}


/*!
 ************************************************************************
 * \brief
 *    biari_copy_context():
 ************************************************************************
 */
void biari_copy_context( BiContextTypePtr ctx_orig, BiContextTypePtr ctx_dest )
{
  ctx_dest->in_use     =  ctx_orig->in_use;
  ctx_dest->max_cum_freq = ctx_orig->max_cum_freq;

  ctx_dest->cum_freq[1] = ctx_orig->cum_freq[1];
  ctx_dest->cum_freq[0] = ctx_orig->cum_freq[0];

  return;
}

/*!
 ***********************************************************************
 * \brief
 *    biari_print_context():
 ***********************************************************************
 */
void biari_print_context( BiContextTypePtr ctx )
{
  printf("0: %4d\t",ctx->cum_freq[0] - ctx->cum_freq[1]);
  printf("1: %4d",ctx->cum_freq[1]);

  return;
}


/*!
 ***********************************************************************
 * \brief
 *    Rescales a given context model by halvening the symbol counts
 *
 ***********************************************************************
 */
void rescale_cum_freq( BiContextTypePtr   bi_ct)
{
  int old_cum_freq_of_one = bi_ct->cum_freq[1];

  bi_ct->cum_freq[1] = (bi_ct->cum_freq[1] + 1) >> 1;
  bi_ct->cum_freq[0] = bi_ct->cum_freq[1] +
    ( ( bi_ct->cum_freq[0] - old_cum_freq_of_one + 1 ) >> 1);
}

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
99国产精品国产精品毛片| 亚洲欧美日韩综合aⅴ视频| 国产精品美女久久久久久久网站| 成人欧美一区二区三区在线播放| 一区二区三区小说| 免费在线观看一区二区三区| 国产成人免费av在线| 在线日韩av片| 精品国产伦理网| 亚洲人成网站精品片在线观看| 久久99精品国产.久久久久久| 一本久久a久久免费精品不卡| 91国偷自产一区二区使用方法| 日韩一区二区高清| 国产精品二三区| 婷婷国产在线综合| 国产a级毛片一区| 欧美日本一区二区| 中文字幕中文字幕在线一区| 午夜在线电影亚洲一区| 高清不卡一区二区| 在线电影院国产精品| 中文字幕亚洲电影| 久久精品国产免费看久久精品| 91麻豆6部合集magnet| 久久影院视频免费| 午夜av一区二区| 福利电影一区二区三区| 欧美一区二区网站| 一区二区三区四区精品在线视频 | 东方aⅴ免费观看久久av| 欧美日韩一区在线观看| 欧美国产日产图区| 久热成人在线视频| 欧美日韩国产大片| 91精品国产高清一区二区三区| 精品国产一区久久| hitomi一区二区三区精品| 日韩一级二级三级精品视频| 亚洲国产综合91精品麻豆| 成人一区二区三区视频在线观看| 日韩亚洲欧美中文三级| 亚洲福利视频导航| 在线一区二区视频| 国产精品久久久久国产精品日日| 国产乱码字幕精品高清av| 777色狠狠一区二区三区| 亚洲一区二区三区激情| youjizz国产精品| 国产亚洲精品aa| 久久超碰97人人做人人爱| 欧美丰满少妇xxxbbb| 夜夜精品浪潮av一区二区三区| 99国内精品久久| 国产精品免费视频观看| 成人自拍视频在线观看| 国产嫩草影院久久久久| 国产伦精品一区二区三区免费| 日韩一二三区视频| 蜜桃视频在线一区| 欧美一区二区大片| 久久国产生活片100| 日韩欧美亚洲国产精品字幕久久久| 亚洲成人av电影| 欧美久久久久久久久中文字幕| 亚洲国产精品久久不卡毛片| 欧美性高清videossexo| 亚洲二区在线视频| 欧美精品自拍偷拍动漫精品| 三级亚洲高清视频| 日韩免费看网站| 久久91精品久久久久久秒播| 欧美tickling挠脚心丨vk| 久久精品国产亚洲一区二区三区| 日韩一级免费观看| 狠狠久久亚洲欧美| 国产情人综合久久777777| 国产精品 日产精品 欧美精品| 久久久www成人免费无遮挡大片| 国产一区二区三区四区五区入口| 国产亚洲欧美中文| 成人看片黄a免费看在线| 综合激情成人伊人| 欧美丝袜丝nylons| 麻豆一区二区三| 欧美国产综合一区二区| 97久久超碰国产精品电影| 亚洲综合偷拍欧美一区色| 91精品国产综合久久精品| 国产一区亚洲一区| 国产精品欧美一级免费| 色噜噜狠狠一区二区三区果冻| 亚洲国产视频在线| 日韩午夜激情视频| 国产二区国产一区在线观看| 亚洲三级免费电影| 51久久夜色精品国产麻豆| 国产精品一级黄| 亚洲免费观看高清完整版在线观看熊| 欧美性大战久久| 美女看a上一区| 国产精品久久看| bt7086福利一区国产| 亚洲精品亚洲人成人网| 欧美色视频一区| 久久99日本精品| 亚洲欧洲三级电影| 欧美二区三区的天堂| 国产电影一区在线| 亚洲成人在线免费| 337p日本欧洲亚洲大胆色噜噜| 成人高清伦理免费影院在线观看| 亚洲午夜视频在线| 久久欧美一区二区| 欧美专区亚洲专区| 久久99国产精品久久99果冻传媒| 中文字幕日韩一区二区| 91.com视频| 成人精品视频一区二区三区尤物| 毛片av一区二区| 一区在线观看视频| 精品久久久久久久久久久久包黑料 | 97久久久精品综合88久久| 首页亚洲欧美制服丝腿| 欧美极品另类videosde| 4438x亚洲最大成人网| 岛国一区二区三区| 奇米影视在线99精品| 亚洲天堂成人在线观看| 久久精品久久综合| 一本在线高清不卡dvd| 日本在线不卡视频| 中文字幕免费不卡在线| 欧美精品乱码久久久久久| 成人免费av在线| 久久精品国产亚洲一区二区三区| 亚洲精品成人天堂一二三| 久久久美女毛片| 欧美一区中文字幕| 一本一道久久a久久精品| 国产曰批免费观看久久久| 亚洲成人在线免费| 亚洲人成小说网站色在线| 国产日韩综合av| 欧美成人aa大片| 欧美日韩亚洲综合| 91麻豆精品秘密| 成人午夜电影小说| 国产一区欧美二区| 日韩 欧美一区二区三区| 亚洲一卡二卡三卡四卡| 日韩一区中文字幕| 国产精品日韩精品欧美在线| 久久免费的精品国产v∧| 日韩精品专区在线影院观看| 欧美日韩成人综合| 欧美在线一二三| 99国内精品久久| 99精品欧美一区二区三区小说| 高潮精品一区videoshd| 国产剧情在线观看一区二区| 麻豆精品视频在线| 日韩成人一区二区三区在线观看| 亚洲成人一区二区| 亚洲成人一区二区在线观看| 亚洲一区二区三区视频在线播放| 国内精品久久久久影院色| 日本vs亚洲vs韩国一区三区| 亚洲成人第一页| 午夜精品久久久久久久久久久| 亚洲综合偷拍欧美一区色| 亚洲精品免费播放| 一区二区三区精品在线| 亚洲黄色av一区| 一区二区三区日本| 一区二区三区精品视频在线| 亚洲激情一二三区| 亚洲综合免费观看高清在线观看| 亚洲免费观看在线观看| 一区二区三区欧美视频| 亚洲专区一二三| 亚洲成人动漫在线免费观看| 肉丝袜脚交视频一区二区| 丝袜美腿一区二区三区| 美女看a上一区| 极品少妇一区二区| 国产一区二区三区日韩| 国产乱码精品一区二区三区五月婷| 国产成人在线视频播放| 菠萝蜜视频在线观看一区| 色哟哟精品一区| 欧美日韩精品综合在线| 日韩欧美一区电影| 久久综合成人精品亚洲另类欧美| 欧美经典三级视频一区二区三区| 亚洲欧洲成人av每日更新| 亚洲狠狠爱一区二区三区| 日韩电影在线观看电影| 国产美女娇喘av呻吟久久 | 国产欧美日韩视频在线观看|