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

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

?? vlc.c

?? 一個簡單的視頻會議VC++MFC工程文件
?? C
?? 第 1 頁 / 共 3 頁
字號:

/*!
 ***************************************************************************
 * \file vlc.c
 *
 * \brief
 *    (CA)VLC coding functions
 *
 * \author
 *    Main contributors (see contributors.h for copyright, address and affiliation details)
 *    - Inge Lille-Langoy               <inge.lille-langoy@telenor.com>
 *    - Detlev Marpe                    <marpe@hhi.de>
 *    - Stephan Wenger                  <stewe@cs.tu-berlin.de>
 ***************************************************************************
 */

#include "contributors.h"

#include <stdlib.h>
#include <math.h>
#include <string.h>
#include <assert.h>

#include "global.h"

#include "vlc.h"

#if TRACE
#define SYMTRACESTRING(s) strncpy(sym.tracestring,s,TRACESTRING_SIZE)
#else
#define SYMTRACESTRING(s) // do nothing
#endif


/*! 
 *************************************************************************************
 * \brief
 *    ue_v, writes an ue(v) syntax element, returns the length in bits
 *
 * \param tracestring
 *    the string for the trace file
 * \param value
 *    the value to be coded
 *  \param part
 *    the Data Partition the value should be coded into
 *
 * \return
 *    Number of bits used by the coded syntax element
 *
 * \ note
 *    This function writes always the bit buffer for the progressive scan flag, and
 *    should not be used (or should be modified appropriately) for the interlace crap
 *    When used in the context of the Parameter Sets, this is obviously not a
 *    problem.
 *
 *************************************************************************************
 */
int ue_v (char *tracestring, int value, DataPartition *part)
{
  SyntaxElement symbol, *sym=&symbol;
  sym->type = SE_HEADER;
  sym->mapping = ue_linfo;               // Mapping rule: unsigned integer
  sym->value1 = value;
  sym->value2 = 0;
#if TRACE
  strncpy(sym->tracestring,tracestring,TRACESTRING_SIZE);
#endif
  assert (part->bitstream->streamBuffer != NULL);
  return writeSyntaxElement_UVLC (sym, part);
}


/*! 
 *************************************************************************************
 * \brief
 *    se_v, writes an se(v) syntax element, returns the length in bits
 *
 * \param tracestring
 *    the string for the trace file
 * \param value
 *    the value to be coded
 *  \param part
 *    the Data Partition the value should be coded into
 *
 * \return
 *    Number of bits used by the coded syntax element
 *
 * \ note
 *    This function writes always the bit buffer for the progressive scan flag, and
 *    should not be used (or should be modified appropriately) for the interlace crap
 *    When used in the context of the Parameter Sets, this is obviously not a
 *    problem.
 *
 *************************************************************************************
 */
int se_v (char *tracestring, int value, DataPartition *part)
{
  SyntaxElement symbol, *sym=&symbol;
  sym->type = SE_HEADER;
  sym->mapping = se_linfo;               // Mapping rule: signed integer
  sym->value1 = value;
  sym->value2 = 0;
#if TRACE
  strncpy(sym->tracestring,tracestring,TRACESTRING_SIZE);
#endif
  assert (part->bitstream->streamBuffer != NULL);
  return writeSyntaxElement_UVLC (sym, part);
}


/*! 
 *************************************************************************************
 * \brief
 *    u_1, writes a flag (u(1) syntax element, returns the length in bits, 
 *    always 1
 *
 * \param tracestring
 *    the string for the trace file
 * \param value
 *    the value to be coded
 *  \param part
 *    the Data Partition the value should be coded into
 *
 * \return
 *    Number of bits used by the coded syntax element (always 1)
 *
 * \ note
 *    This function writes always the bit buffer for the progressive scan flag, and
 *    should not be used (or should be modified appropriately) for the interlace crap
 *    When used in the context of the Parameter Sets, this is obviously not a
 *    problem.
 *
 *************************************************************************************
 */
int u_1 (char *tracestring, int value, DataPartition *part)
{
  SyntaxElement symbol, *sym=&symbol;

  sym->bitpattern = value;
  sym->len = 1;
  sym->type = SE_HEADER;
  sym->value1 = value;
  sym->value2 = 0;
#if TRACE
  strncpy(sym->tracestring,tracestring,TRACESTRING_SIZE);
#endif
  assert (part->bitstream->streamBuffer != NULL);
  return writeSyntaxElement_fixed(sym, part);
}


/*! 
 *************************************************************************************
 * \brief
 *    u_v, writes a n bit fixed length syntax element, returns the length in bits, 
 *
 * \param n
 *    length in bits
 * \param tracestring
 *    the string for the trace file
 * \param value
 *    the value to be coded
 *  \param part
 *    the Data Partition the value should be coded into
 *
 * \return
 *    Number of bits used by the coded syntax element 
 *
 * \ note
 *    This function writes always the bit buffer for the progressive scan flag, and
 *    should not be used (or should be modified appropriately) for the interlace crap
 *    When used in the context of the Parameter Sets, this is obviously not a
 *    problem.
 *
 *************************************************************************************
 */

int u_v (int n, char *tracestring, int value, DataPartition *part)
{
  SyntaxElement symbol, *sym=&symbol;

  sym->bitpattern = value;
  sym->len = n;
  sym->type = SE_HEADER;
  sym->value1 = value;
  sym->value2 = 0;
#if TRACE
  strncpy(sym->tracestring,tracestring,TRACESTRING_SIZE);
#endif
  assert (part->bitstream->streamBuffer != NULL);
  return writeSyntaxElement_fixed(sym, part);
}


/*!
 ************************************************************************
 * \brief
 *    mapping for ue(v) syntax elements
 * \param ue
 *    value to be mapped
 * \param dummy
 *    dummy parameter
 * \param info
 *    returns mapped value
 * \param len
 *    returns mapped value length
 ************************************************************************
 */
void ue_linfo(int ue, int dummy, int *len,int *info)
{
  int i,nn;

  nn=(ue+1)/2;

  for (i=0; i < 16 && nn != 0; i++)
  {
    nn /= 2;
  }
  *len= 2*i + 1;
  *info=ue+1-(int)pow(2,i);
}


/*!
 ************************************************************************
 * \brief
 *    mapping for se(v) syntax elements
 * \param se
 *    value to be mapped
 * \param dummy
 *    dummy parameter
 * \param len
 *    returns mapped value length
 * \param info
 *    returns mapped value
 ************************************************************************
 */
void se_linfo(int se, int dummy, int *len,int *info)
{

  int i,n,sign,nn;

  sign=0;

  if (se <= 0)
  {
    sign=1;
  }
  n=abs(se) << 1;

  /*
  n+1 is the number in the code table.  Based on this we find length and info
  */

  nn=n/2;
  for (i=0; i < 16 && nn != 0; i++)
  {
    nn /= 2;
  }
  *len=i*2 + 1;
  *info=n - (int)pow(2,i) + sign;
}


/*!
 ************************************************************************
 * \par Input:
 *    Number in the code table
 * \par Output:
 *    length and info
 ************************************************************************
 */
void cbp_linfo_intra(int cbp, int dummy, int *len,int *info)
{
  extern const unsigned char NCBP[2][48][2];
  ue_linfo(NCBP[img->yuv_format?1:0][cbp][0], dummy, len, info);
}


/*!
 ************************************************************************
 * \par Input:
 *    Number in the code table
 * \par Output:
 *    length and info
 ************************************************************************
 */
void cbp_linfo_inter(int cbp, int dummy, int *len,int *info)
{
  extern const unsigned char NCBP[2][48][2];
  ue_linfo(NCBP[img->yuv_format?1:0][cbp][1], dummy, len, info);
}


/*!
 ************************************************************************
 * \brief
 *    2x2 transform of chroma DC
 * \par Input:
 *    level and run for coefficients
 * \par Output:
 *    length and info
 * \note
 *    see ITU document for bit assignment
 ************************************************************************
 */
void levrun_linfo_c2x2(int level,int run,int *len,int *info)
{
  const int NTAB[2][2]=
  {
    {1,5},
    {3,0}
  };
  const int LEVRUN[4]=
  {
    2,1,0,0
  };

  int levabs,i,n,sign,nn;

  if (level == 0) //  check if the coefficient sign EOB (level=0)
  {
    *len=1;
    return;
  }
  sign=0;
  if (level <= 0)
  {
    sign=1;
  }
  levabs=abs(level);
  if (levabs <= LEVRUN[run])
  {
    n=NTAB[levabs-1][run]+1;
  }
  else
  {
    n=(levabs-LEVRUN[run])*8 + run*2;
  }

  nn=n/2;

  for (i=0; i < 16 && nn != 0; i++)
  {
    nn /= 2;
  }
  *len= 2*i + 1;
  *info=n-(int)pow(2,i)+sign;
}


/*!
 ************************************************************************
 * \brief
 *    Single scan coefficients
 * \par Input:
 *    level and run for coefficients
 * \par Output:
 *    length and info
 * \note
 *    see ITU document for bit assignment
 ************************************************************************
 */
void levrun_linfo_inter(int level,int run,int *len,int *info)
{
  const byte LEVRUN[16]=
  {
    4,2,2,1,1,1,1,1,1,1,0,0,0,0,0,0
  };
  const byte NTAB[4][10]=
  {
    { 1, 3, 5, 9,11,13,21,23,25,27},
    { 7,17,19, 0, 0, 0, 0, 0, 0, 0},
    {15, 0, 0, 0, 0, 0, 0, 0, 0, 0},
    {29, 0, 0, 0, 0, 0, 0, 0, 0, 0},
  };

  int levabs,i,n,sign,nn;

  if (level == 0)           //  check for EOB
  {
    *len=1;
    return;
  }

  if (level <= 0)
    sign=1;
  else
    sign=0;

  levabs=abs(level);
  if (levabs <= LEVRUN[run])
  {
    n=NTAB[levabs-1][run]+1;
  }
  else
  {
    n=(levabs-LEVRUN[run])*32 + run*2;
  }

  nn=n/2;

  for (i=0; i < 16 && nn != 0; i++)
  {
    nn /= 2;
  }
  *len= 2*i + 1;
  *info=n-(int)pow(2,i)+sign;

}


/*!
 ************************************************************************
 * \brief
 *    Double scan coefficients
 * \par Input:
 *    level and run for coefficients
 * \par Output:
 *    length and info
 * \note
 *    see ITU document for bit assignment

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
不卡的av网站| 国产综合色视频| 91色porny在线视频| 亚洲女子a中天字幕| 色婷婷综合激情| 亚洲成人手机在线| 欧美一区2区视频在线观看| 蜜桃视频一区二区三区在线观看| 日韩欧美国产综合一区 | 亚洲图片一区二区| 91.xcao| 激情综合色丁香一区二区| 国产亚洲短视频| 91蜜桃传媒精品久久久一区二区| 亚洲国产视频一区| **性色生活片久久毛片| 国产日产精品1区| 一区二区视频在线看| 另类成人小视频在线| 91在线观看高清| 婷婷成人综合网| 国产免费观看久久| 欧美亚洲一区三区| 国产永久精品大片wwwapp| 国产精品午夜免费| 欧美精品乱码久久久久久| 精品一区二区国语对白| 亚洲欧美日韩一区二区三区在线观看| 欧美性xxxxxx少妇| 国产激情视频一区二区在线观看| 亚洲日本欧美天堂| www国产精品av| 欧美午夜一区二区三区| 国产精品456| 视频在线观看91| 亚洲欧美综合网| 日韩va欧美va亚洲va久久| 美美哒免费高清在线观看视频一区二区| 欧美视频三区在线播放| 亚洲欧美怡红院| 精品少妇一区二区三区视频免付费 | 国产欧美精品区一区二区三区 | 亚洲一区免费在线观看| 日韩区在线观看| 91久久免费观看| 国产精品一二三四| 免费观看日韩av| 亚洲风情在线资源站| 日韩毛片精品高清免费| 国产丝袜美腿一区二区三区| 欧美一级片在线| 欧美视频在线观看一区二区| 91视频91自| 偷窥国产亚洲免费视频| 欧美日韩二区三区| av综合在线播放| 国产乱码精品一区二区三| 婷婷激情综合网| 亚洲综合一区二区精品导航| 国产精品每日更新在线播放网址| 欧美大片一区二区三区| 欧美日韩一二区| 色综合天天综合网国产成人综合天 | 国产98色在线|日韩| 老司机一区二区| 日本va欧美va欧美va精品| 性久久久久久久久久久久| 最好看的中文字幕久久| 国产精品网站在线| 久久久久九九视频| 久久久国产精品麻豆| 337p粉嫩大胆色噜噜噜噜亚洲| 欧美一卡在线观看| 日韩你懂的电影在线观看| 91.成人天堂一区| 欧美一级日韩一级| 精品日韩一区二区| 欧美变态tickle挠乳网站| 久久精品一区二区三区不卡牛牛| 日韩欧美精品三级| 久久久久久久网| 国产农村妇女毛片精品久久麻豆 | 91精品国产日韩91久久久久久| 欧美三级日本三级少妇99| 欧美日本国产视频| 欧美xxxxx裸体时装秀| 日韩精品一区二区三区swag| 欧美sm美女调教| 国产日本欧洲亚洲| 亚洲人午夜精品天堂一二香蕉| 亚洲三级电影全部在线观看高清| 一区二区三区四区蜜桃| 亚洲在线观看免费| 日韩国产成人精品| 精品一区二区在线视频| 国产成人精品一区二区三区四区| 波多野结衣在线aⅴ中文字幕不卡| 99精品久久99久久久久| 欧美丝袜丝交足nylons图片| 在线播放日韩导航| 久久欧美一区二区| 亚洲在线视频免费观看| 久久99久久精品欧美| 成人一区二区三区中文字幕| 91久久精品一区二区三| 欧美性大战久久久| 26uuu色噜噜精品一区二区| 欧美日韩在线免费视频| 555夜色666亚洲国产免| 久久综合色8888| 日韩一区中文字幕| 手机精品视频在线观看| 国产宾馆实践打屁股91| 欧美三级三级三级爽爽爽| 久久午夜电影网| 亚洲综合色网站| 国产九色sp调教91| 欧美日韩精品三区| 国产日韩精品一区二区三区| 一区二区高清免费观看影视大全 | 免费成人在线观看| 99久久99久久精品国产片果冻| 4438x成人网最大色成网站| 久久亚区不卡日本| 亚洲一区二区av在线| 国产精品一色哟哟哟| 欧美制服丝袜第一页| 久久网站最新地址| 日韩精品亚洲一区二区三区免费| 国产91丝袜在线播放九色| 69堂国产成人免费视频| 亚洲欧美电影院| 国产精品123| 日韩午夜激情免费电影| 亚洲精品免费视频| 国产精品一区二区不卡| 91精品国产综合久久精品性色| 亚洲欧洲另类国产综合| 国内久久精品视频| 欧美一区2区视频在线观看| 亚洲一区在线视频| av电影在线不卡| 久久久99久久| 麻豆国产91在线播放| 欧美日韩一区中文字幕| 亚洲女同一区二区| 北条麻妃国产九九精品视频| www欧美成人18+| 久久国产精品99精品国产| 欧美人妇做爰xxxⅹ性高电影 | 国产亚洲一二三区| 蜜桃精品在线观看| 69堂成人精品免费视频| 亚洲观看高清完整版在线观看| 色婷婷国产精品| 中文字幕一区二区三区在线不卡| 久久精品国产99| 日韩美女主播在线视频一区二区三区| 婷婷开心激情综合| 欧美日韩的一区二区| 亚洲一级在线观看| 欧美色区777第一页| 亚洲制服丝袜av| 欧美日韩一卡二卡| 无吗不卡中文字幕| 欧美久久久久久久久中文字幕| 午夜精品免费在线| 欧美美女一区二区在线观看| 亚洲aⅴ怡春院| 91精品蜜臀在线一区尤物| 日本亚洲最大的色成网站www| 欧美日本一区二区三区四区| 丝袜亚洲另类欧美| 91精品国产欧美一区二区成人| 日韩主播视频在线| 欧美一区二区三区公司| 男人的天堂久久精品| 精品av综合导航| 国产精品69久久久久水密桃| 亚洲国产精品99久久久久久久久| 成人禁用看黄a在线| 亚洲欧洲美洲综合色网| 在线观看欧美黄色| 日本中文字幕一区二区视频| 日韩欧美高清dvd碟片| 国产麻豆精品95视频| 国产精品美女一区二区在线观看| 91网页版在线| 日韩成人av影视| 国产亚洲精品aa午夜观看| 95精品视频在线| 国产精品99久久久久久似苏梦涵 | 国产99精品国产| 一区二区三区加勒比av| 69av一区二区三区| 国产在线国偷精品产拍免费yy| 中文字幕亚洲区| 在线播放中文一区| 成人性生交大片免费看视频在线| 亚洲最色的网站|