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

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

?? uvlc.c

?? 網絡MPEG4IP流媒體開發源代碼
?? 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 uvlc.c * * \brief *    UVLC table helper functions * * \author *    Main contributors (see contributors.h for copyright, address and affiliation details) *    - Inge Lille-Lang鴜               <inge.lille-langoy@telenor.com> *    - Detlev Marpe                    <marpe@hhi.de> *    - Stephan Wenger                  <stewe@cs.tu-berlin.de> *************************************************************************** */#include "contributors.h"#include <math.h>#include <stdlib.h>#include <string.h>#include <assert.h>#include "elements.h"/*! ************************************************************************ * \brief *    n_linfo * \par Input: *    Number in the code table * \par Output: *    lenght and info ************************************************************************ */void n_linfo(int n, int *len,int *info){  int i,nn;  nn=(n+1)/2;  for (i=0; i < 16 && nn != 0; i++)  {    nn /= 2;  }  *len= 2*i + 1;  *info=n+1-(int)pow(2,i);}/*! ************************************************************************ * \par Input: *    Number in the code table * \par Output: *    lenght and info ************************************************************************ */void n_linfo2(int n, int dummy, int *len,int *info){  int i,nn;  nn=(n+1)/2;  for (i=0; i < 16 && nn != 0; i++)  {    nn /= 2;  }  *len= 2*i + 1;  *info=n+1-(int)pow(2,i);}/*! ************************************************************************ * \par Input: *    Number in the code table * \par Output: *    lenght and info ************************************************************************ */void intrapred_linfo(int ipred1, int ipred2, int *len,int *info){  extern const int IPRED_ORDER[6][6];  n_linfo(IPRED_ORDER[ipred1][ipred2],len,info);}/*! ************************************************************************ * \par Input: *    Number in the code table * \par Output: *    lenght and info ************************************************************************ */void cbp_linfo_intra(int cbp, int dummy, int *len,int *info){  extern const int NCBP[48][2];  n_linfo(NCBP[cbp][0],len,info);}/*! ************************************************************************ * \par Input: *    Number in the code table * \par Output: *    lenght and info ************************************************************************ */void cbp_linfo_inter(int cbp, int dummy, int *len,int *info){  extern const int NCBP[48][2];  n_linfo(NCBP[cbp][1],len,info);}/*! ************************************************************************ * \par Input: *    delta quant * \par Output: *    lenght and info ************************************************************************ */void dquant_linfo(int dquant, int dummy, int *len,int *info){  int i,n,sign,nn;  sign=0;  if (dquant <= 0)  {    sign=1;  }  n=abs(dquant) << 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: *    motion vector differense * \par Output: *    lenght and info ************************************************************************ */void mvd_linfo2(int mvd, int dummy, int *len,int *info){  int i,n,sign,nn;  sign=0;  if (mvd <= 0)  {    sign=1;  }  n=abs(mvd) << 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;}/*! ************************************************************************ * \brief *    2x2 transform of chroma DC * \par Input: *    level and run for coefficiets * \par Output: *    lenght 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 coefficiets * \par Output: *    lenght 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 coefficiets * \par Output: *    lenght and info * \note *    see ITU document for bit assignment ************************************************************************ */void levrun_linfo_intra(int level,int run,int *len,int *info){  const byte LEVRUN[8]=  {    9,3,1,1,1,0,0,0  };  const byte NTAB[9][5] =  {    { 1, 3, 7,15,17},    { 5,19, 0, 0, 0},    { 9,21, 0, 0, 0},    {11, 0, 0, 0, 0},    {13, 0, 0, 0, 0},    {23, 0, 0, 0, 0},    {25, 0, 0, 0, 0},    {27, 0, 0, 0, 0},    {29, 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])*16 + 16 + 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 *    Makes code word and passes it back *    A code word has the following format: 0 Xn...0 X2 0 X1 0 X0 1 * * \par Input: *    Info   : Xn..X2 X1 X0                                             \n *    Length : Total number of bits in the codeword ************************************************************************ */int symbol2uvlc(SyntaxElement *sym){  int info_len = sym->len/2;  // Convert info into a bitpattern int  sym->bitpattern = 0;  // vlc coding  while(--info_len >= 0)  {    sym->bitpattern <<= 2;    sym->bitpattern |= (0x01 & (sym->inf >> info_len));  }  sym->bitpattern <<= 1;  sym->bitpattern |= 0x01;  return 0;}/*! ************************************************************************ * \brief *    generates UVLC code and passes the codeword to the buffer ************************************************************************ */int writeSyntaxElement_UVLC(SyntaxElement *se, DataPartition *this_dataPart){  se->mapping(se->value1,se->value2,&(se->len),&(se->inf));  symbol2uvlc(se);  writeUVLC2buffer(se, this_dataPart->bitstream);#if TRACE  if(se->type <= 1)    trace2out (se);#endif  return (se->len);}/*! ************************************************************************ * \brief *    writes UVLC code to the appropriate buffer ************************************************************************ */void  writeUVLC2buffer(SyntaxElement *se, Bitstream *currStream){  int i;  unsigned int mask = 1 << (se->len-1);  // Add the new bits to the bitstream.  // Write out a byte if it is full  for (i=0; i<se->len; i++)  {    currStream->byte_buf <<= 1;    if (se->bitpattern & mask)      currStream->byte_buf |= 1;    currStream->bits_to_go--;    mask >>= 1;    if (currStream->bits_to_go==0)    {      currStream->bits_to_go = 8;      currStream->streamBuffer[currStream->byte_pos++]=currStream->byte_buf;    }  }}/*! ************************************************************************ * \brief *    generates UVLC code for EOS and writes it to the appropriate buffer ************************************************************************ */void  writeEOS2buffer(){  int dP_nr = assignSE2partition[input->partition_mode][SE_EOS];  Bitstream *currStream = ((img->currentSlice)->partArr[dP_nr]).bitstream;  SyntaxElement sym;  sym.len = LEN_STARTCODE;  sym.inf = EOS;  sym.type  = SE_EOS;#if TRACE  strncpy(sym.tracestring, "EOS",TRACESTRING_SIZE);#endif  symbol2uvlc(&sym);  writeUVLC2buffer(&sym, currStream);#if TRACE  trace2out(&sym);#endif}/*! ************************************************************************ * \brief *    Write out a trace string on the trace file ************************************************************************ */#if TRACEvoidtrace2out(SyntaxElement *sym){  static int bitcounter = 0;  int i, chars;  if (p_trace != NULL)  {    putc('@', p_trace);    chars = fprintf(p_trace, "%i", bitcounter);    while(chars++ < 6)      putc(' ',p_trace);    chars += fprintf(p_trace, "%s", sym->tracestring);    while(chars++ < 50)      putc(' ',p_trace);  // Align bitpattern    if(sym->len<15)    {      for(i=0 ; i<15-sym->len ; i++)        fputc(' ', p_trace);    }    // Print bitpattern    bitcounter += sym->len;    for(i=1 ; i<=sym->len ; i++)    {      if((sym->bitpattern >> (sym->len-i)) & 0x1)        fputc('1', p_trace);      else        fputc('0', p_trace);    }    fprintf(p_trace, "\n");  }  fflush (p_trace);}#endif

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
aaa国产一区| 樱桃视频在线观看一区| 国产精品萝li| 国内精品国产成人| 欧美人伦禁忌dvd放荡欲情| 欧美激情综合在线| 韩国av一区二区| 亚洲永久免费av| 91亚洲精品乱码久久久久久蜜桃 | 成人免费毛片片v| 久久精品一二三| 精品一区二区三区av| 精品少妇一区二区三区免费观看| 一区二区三区不卡视频| 欧美性三三影院| 亚洲成人www| 欧美人体做爰大胆视频| 91一区二区三区在线观看| 国产在线播放一区二区三区| www国产精品av| 国产不卡高清在线观看视频| 国产精品电影一区二区三区| 在线亚洲高清视频| 天堂va蜜桃一区二区三区| 日韩欧美色综合| 国产综合色视频| 日本aⅴ亚洲精品中文乱码| 精品久久久久久久人人人人传媒| 欧美日韩视频第一区| 久草这里只有精品视频| 亚洲va天堂va国产va久| 亚洲综合激情另类小说区| **欧美大码日韩| 日韩免费电影网站| 91精品国产色综合久久不卡蜜臀| 看片的网站亚洲| 最新不卡av在线| 日韩一级片在线观看| 高清久久久久久| 国产精品99久久不卡二区| 一区二区三区免费在线观看| 国产精品伦一区二区三级视频| 国产农村妇女精品| 欧美日韩在线精品一区二区三区激情| 色狠狠一区二区三区香蕉| 全国精品久久少妇| 蜜臀av一区二区三区| 中文字幕一区二区三区色视频| 国产精品久久毛片av大全日韩| 国产日产亚洲精品系列| 欧美激情综合五月色丁香小说| 欧美激情中文字幕| 中文字幕日韩av资源站| 亚洲欧美在线高清| 亚洲高清免费一级二级三级| 久久精品一区二区三区不卡 | 欧美日韩在线直播| 欧美日韩精品一区二区三区| 欧美精品国产精品| av在线一区二区| 在线观看一区二区视频| 欧美电影影音先锋| 精品黑人一区二区三区久久| 色狠狠色狠狠综合| 欧美日本在线看| 日韩欧美黄色影院| 国产欧美一区二区精品性色超碰| 中文字幕五月欧美| 亚洲一本大道在线| 蜜臀91精品一区二区三区 | 欧美日韩亚洲高清一区二区| 91精品黄色片免费大全| 91色porny蝌蚪| 欧美日韩一区二区三区四区五区 | 亚洲高清三级视频| 久久99精品国产麻豆不卡| 国产夫妻精品视频| 偷窥国产亚洲免费视频| 亚洲男人的天堂在线观看| 国产精品视频免费| 夜夜操天天操亚洲| 久久丁香综合五月国产三级网站 | 欧美亚洲一区二区在线| 日韩免费一区二区三区在线播放| 亚洲国产精品激情在线观看| 亚洲一区二区美女| 国产尤物一区二区在线 | 精品国产第一区二区三区观看体验| 国产欧美一区二区三区鸳鸯浴 | 蜜臀av在线播放一区二区三区 | 日韩欧美国产系列| 亚洲视频一二区| 美女视频黄免费的久久| 91视视频在线观看入口直接观看www| 日韩视频一区二区三区| 亚洲人成网站色在线观看| 久久精品国产亚洲高清剧情介绍| 91原创在线视频| 久久久噜噜噜久久中文字幕色伊伊| 精品美女在线播放| 亚洲狠狠丁香婷婷综合久久久| 捆绑调教一区二区三区| 欧美性视频一区二区三区| 国产日本欧美一区二区| 奇米精品一区二区三区在线观看一| 99精品偷自拍| 色久综合一二码| 国产日韩欧美在线一区| 日本网站在线观看一区二区三区 | 亚洲国产一二三| 成人免费毛片高清视频| 日韩美女视频一区二区在线观看| 琪琪一区二区三区| 欧美三级蜜桃2在线观看| 国产精品美女一区二区三区| 激情图片小说一区| 欧美精品第1页| 亚洲综合色噜噜狠狠| 99精品桃花视频在线观看| 精品久久久久久久久久久久包黑料 | 色综合久久天天综合网| 色老汉一区二区三区| 欧美激情一区二区三区四区 | 国产成a人亚洲| 精品成人a区在线观看| 美女一区二区在线观看| 欧美视频在线一区| 亚洲色图视频网站| 成人不卡免费av| 欧美精品777| 亚洲综合激情网| 日本韩国一区二区| 亚洲视频在线观看一区| av在线综合网| 中文字幕一区在线| a级精品国产片在线观看| 欧美激情一区二区三区蜜桃视频| 国产精品亚洲午夜一区二区三区| 精品国产乱码久久久久久久| 美女诱惑一区二区| 欧美刺激脚交jootjob| 久久成人综合网| 久久久影院官网| 成人中文字幕电影| 国产精品网曝门| 91亚洲精品久久久蜜桃| 一区二区三区四区中文字幕| 色菇凉天天综合网| 亚洲综合999| 欧美日本一道本在线视频| 午夜视黄欧洲亚洲| 欧美一级二级三级乱码| 久久国产精品第一页| 国产日韩欧美制服另类| www.欧美日韩| 亚洲电影欧美电影有声小说| 国产精品福利一区二区三区| 91视视频在线观看入口直接观看www | 91免费看片在线观看| 亚洲伊人伊色伊影伊综合网 | 亚洲欧洲精品天堂一级| 色婷婷精品久久二区二区蜜臀av| 亚洲第一av色| 日韩欧美卡一卡二| 国产成人精品亚洲午夜麻豆| 亚洲欧美二区三区| 欧美一区二区视频免费观看| 国产黄色精品网站| 亚洲品质自拍视频网站| 91精品国产综合久久精品| 国产精品一区二区三区四区| 国产精品超碰97尤物18| 欧美三级日韩三级| 国产乱码精品一区二区三区忘忧草 | 亚洲欧洲日产国码二区| 欧美日韩中文一区| 国产乱人伦偷精品视频不卡| 中文字幕一区av| 欧美一区三区四区| 成人免费观看av| 日韩av中文在线观看| 国产精品无遮挡| 欧美日韩成人综合在线一区二区| 国产伦精一区二区三区| 一区2区3区在线看| 精品播放一区二区| 欧美丝袜丝交足nylons| 豆国产96在线|亚洲| 视频在线观看一区| 亚洲欧美在线aaa| 欧美精品一区二区蜜臀亚洲| 日本道精品一区二区三区 | 成人a免费在线看| 免费一级欧美片在线观看| 亚洲少妇30p| 国产人成一区二区三区影院| 91麻豆精品国产无毒不卡在线观看| 久久久久国产免费免费| 欧美日韩dvd在线观看| 99麻豆久久久国产精品免费优播|