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

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

?? vlc.c

?? jm_frext22.ZIP的壓縮文件,主要用于嵌入式系統圖象的編解碼的開發.
?? C
?? 第 1 頁 / 共 3 頁
字號:
 *    bit offset from start of partition
 * \param bytecount
 *    buffer length
 * \return
 *    true if more bits available
 ************************************************************************
 */
int more_rbsp_data (byte buffer[],int totbitoffset,int bytecount)
{

  long byteoffset;      // byte from start of buffer
  int bitoffset;      // bit from start of byte
  int ctr_bit=0;      // control bit for current bit posision

  int cnt=0;

  
  byteoffset= totbitoffset/8;
  bitoffset= 7-(totbitoffset%8);

  assert (byteoffset<bytecount);

  // there is more until we're in the last byte
  if (byteoffset<(bytecount-1)) return TRUE;

  // read one bit
  ctr_bit = (buffer[byteoffset] & (0x01<<bitoffset));
  
  // a stop bit has to be one
  if (ctr_bit==0) return TRUE;

  bitoffset--;

  while (bitoffset>=0)
  {
    ctr_bit = (buffer[byteoffset] & (0x01<<bitoffset));   // set up control bit
    if (ctr_bit>0) cnt++;
    bitoffset--;
  }

  return (0!=cnt);

}


/*!
 ************************************************************************
 * \brief
 *    Check if there are symbols for the next MB
 ************************************************************************
 */
int uvlc_startcode_follows(struct img_par *img, struct inp_par *inp, int dummy)
{
  int dp_Nr = assignSE2partition[img->currentSlice->dp_mode][SE_MBTYPE];
  DataPartition *dP = &(img->currentSlice->partArr[dp_Nr]);
  Bitstream   *currStream = dP->bitstream;
  byte *buf = currStream->streamBuffer;

  //KS: new function test for End of Buffer
  return (!(more_rbsp_data(buf, currStream->frame_bitoffset,currStream->bitstream_length)));
}



/*!
 ************************************************************************
 * \brief
 *  read one exp-golomb VLC symbol
 *
 * \param buffer
 *    containing VLC-coded data bits
 * \param totbitoffset
 *    bit offset from start of partition
 * \param  info 
 *    returns the value of the symbol
 * \param bytecount
 *    buffer length
 * \return
 *    bits read
 ************************************************************************
 */
int GetVLCSymbol (byte buffer[],int totbitoffset,int *info, int bytecount)
{

  register int inf;
  long byteoffset;      // byte from start of buffer
  int bitoffset;      // bit from start of byte
  int ctr_bit=0;      // control bit for current bit posision
  int bitcounter=1;
  int len;
  int info_bit;

  byteoffset= totbitoffset/8;
  bitoffset= 7-(totbitoffset%8);
  ctr_bit = (buffer[byteoffset] & (0x01<<bitoffset));   // set up control bit

  len=1;
  while (ctr_bit==0)
  {                 // find leading 1 bit
    len++;
    bitoffset-=1;           
    bitcounter++;
    if (bitoffset<0)
    {                 // finish with current byte ?
      bitoffset=bitoffset+8;
      byteoffset++;
    }
    ctr_bit=buffer[byteoffset] & (0x01<<(bitoffset));
  }
    // make infoword
  inf=0;                          // shortest possible code is 1, then info is always 0
  for(info_bit=0;(info_bit<(len-1)); info_bit++)
  {
    bitcounter++;
    bitoffset-=1;
    if (bitoffset<0)
    {                 // finished with current byte ?
      bitoffset=bitoffset+8;
      byteoffset++;
    }
    if (byteoffset > bytecount)
    {
      return -1;
    }
    inf=(inf<<1);
    if(buffer[byteoffset] & (0x01<<(bitoffset)))
      inf |=1;
  }

  *info = inf;
  return bitcounter;           // return absolute offset in bit from start of frame
}

extern void tracebits2(const char *trace_str,  int len,  int info) ;

/*!
 ************************************************************************
 * \brief
 *    code from bitstream (2d tables)
 ************************************************************************
 */

int code_from_bitstream_2d(SyntaxElement *sym,  
                           DataPartition *dP,
                           int *lentab,
                           int *codtab,
                           int tabwidth,
                           int tabheight,
                           int *code)
{
  Bitstream   *currStream = dP->bitstream;
  int frame_bitoffset = currStream->frame_bitoffset;
  byte *buf = currStream->streamBuffer;
  int BitstreamLengthInBytes = currStream->bitstream_length;

  int i,j;
  int len, cod;

  // this VLC decoding method is not optimized for speed
  for (j = 0; j < tabheight; j++) {
    for (i = 0; i < tabwidth; i++)
    {
      len = lentab[i];
      if (!len)
        continue;
      cod = codtab[i];

      if ((ShowBits(buf, frame_bitoffset, BitstreamLengthInBytes, len) == cod))
      {
        sym->value1 = i;
        sym->value2 = j;
        currStream->frame_bitoffset += len; // move bitstream pointer
        sym->len = len;
        goto found_code;
      }
    }
    lentab += tabwidth;
    codtab += tabwidth;
  }
  
  return -1;  // failed to find code

found_code:

  *code = cod;

  return 0;
}


/*!
 ************************************************************************
 * \brief
 *    read FLC codeword from UVLC-partition 
 ************************************************************************
 */
int readSyntaxElement_FLC(SyntaxElement *sym, Bitstream *currStream)
{
  int frame_bitoffset = currStream->frame_bitoffset;
  byte *buf = currStream->streamBuffer;
  int BitstreamLengthInBytes = currStream->bitstream_length;

  if ((GetBits(buf, frame_bitoffset, &(sym->inf), BitstreamLengthInBytes, sym->len)) < 0)
    return -1;

  currStream->frame_bitoffset += sym->len; // move bitstream pointer
  sym->value1 = sym->inf;

#if TRACE
  tracebits2(sym->tracestring, sym->len, sym->inf);
#endif

  return 1;
}



/*!
 ************************************************************************
 * \brief
 *    read NumCoeff/TrailingOnes codeword from UVLC-partition 
 ************************************************************************
 */

int readSyntaxElement_NumCoeffTrailingOnes(SyntaxElement *sym,  DataPartition *dP,
                                           char *type)
{
  Bitstream   *currStream = dP->bitstream;
  int frame_bitoffset = currStream->frame_bitoffset;
  byte *buf = currStream->streamBuffer;
  int BitstreamLengthInBytes = currStream->bitstream_length;

  int vlcnum, retval;
  int code, *ct, *lt;

  int lentab[3][4][17] = 
  {
    {   // 0702
      { 1, 6, 8, 9,10,11,13,13,13,14,14,15,15,16,16,16,16},
      { 0, 2, 6, 8, 9,10,11,13,13,14,14,15,15,15,16,16,16},
      { 0, 0, 3, 7, 8, 9,10,11,13,13,14,14,15,15,16,16,16},
      { 0, 0, 0, 5, 6, 7, 8, 9,10,11,13,14,14,15,15,16,16},
    },                                                 
    {                                                  
      { 2, 6, 6, 7, 8, 8, 9,11,11,12,12,12,13,13,13,14,14},
      { 0, 2, 5, 6, 6, 7, 8, 9,11,11,12,12,13,13,14,14,14},
      { 0, 0, 3, 6, 6, 7, 8, 9,11,11,12,12,13,13,13,14,14},
      { 0, 0, 0, 4, 4, 5, 6, 6, 7, 9,11,11,12,13,13,13,14},
    },                                                 
    {                                                  
      { 4, 6, 6, 6, 7, 7, 7, 7, 8, 8, 9, 9, 9,10,10,10,10},
      { 0, 4, 5, 5, 5, 5, 6, 6, 7, 8, 8, 9, 9, 9,10,10,10},
      { 0, 0, 4, 5, 5, 5, 6, 6, 7, 7, 8, 8, 9, 9,10,10,10},
      { 0, 0, 0, 4, 4, 4, 4, 4, 5, 6, 7, 8, 8, 9,10,10,10},
    },

  };

  int codtab[3][4][17] = 
  {
    {
      { 1, 5, 7, 7, 7, 7,15,11, 8,15,11,15,11,15,11, 7,4}, 
      { 0, 1, 4, 6, 6, 6, 6,14,10,14,10,14,10, 1,14,10,6}, 
      { 0, 0, 1, 5, 5, 5, 5, 5,13, 9,13, 9,13, 9,13, 9,5}, 
      { 0, 0, 0, 3, 3, 4, 4, 4, 4, 4,12,12, 8,12, 8,12,8},
    },
    {
      { 3,11, 7, 7, 7, 4, 7,15,11,15,11, 8,15,11, 7, 9,7}, 
      { 0, 2, 7,10, 6, 6, 6, 6,14,10,14,10,14,10,11, 8,6}, 
      { 0, 0, 3, 9, 5, 5, 5, 5,13, 9,13, 9,13, 9, 6,10,5}, 
      { 0, 0, 0, 5, 4, 6, 8, 4, 4, 4,12, 8,12,12, 8, 1,4},
    },
    {
      {15,15,11, 8,15,11, 9, 8,15,11,15,11, 8,13, 9, 5,1}, 
      { 0,14,15,12,10, 8,14,10,14,14,10,14,10, 7,12, 8,4},
      { 0, 0,13,14,11, 9,13, 9,13,10,13, 9,13, 9,11, 7,3},
      { 0, 0, 0,12,11,10, 9, 8,13,12,12,12, 8,12,10, 6,2},
    },
  };

  vlcnum = sym->value1;
  // vlcnum is the index of Table used to code coeff_token
  // vlcnum==3 means (8<=nC) which uses 6bit FLC

  if (vlcnum == 3)
  {
    // read 6 bit FLC
    code = ShowBits(buf, frame_bitoffset, BitstreamLengthInBytes, 6);
    currStream->frame_bitoffset += 6;
    sym->value2 = code & 3;
    sym->value1 = (code >> 2);

    if (!sym->value1 && sym->value2 == 3)
    {
      // #c = 0, #t1 = 3 =>  #c = 0
      sym->value2 = 0;
    }
    else
      sym->value1++;

    sym->len = 6;

    retval = 0;
  }
  else

  {
    lt = &lentab[vlcnum][0][0];
    ct = &codtab[vlcnum][0][0];
    retval = code_from_bitstream_2d(sym, dP, lt, ct, 17, 4, &code);
  }

  if (retval)
  {
    printf("ERROR: failed to find NumCoeff/TrailingOnes\n");
    exit(-1);
  }

#if TRACE
  snprintf(sym->tracestring, 
    TRACESTRING_SIZE, "%s # c & tr.1s vlc=%d #c=%d #t1=%d",
           type, vlcnum, sym->value1, sym->value2);
  tracebits2(sym->tracestring, sym->len, code);

#endif

  return retval;
}


/*!
 ************************************************************************
 * \brief
 *    read NumCoeff/TrailingOnes codeword from UVLC-partition ChromaDC
 ************************************************************************
 */
int readSyntaxElement_NumCoeffTrailingOnesChromaDC(SyntaxElement *sym,  DataPartition *dP)
{
  int retval;
  int code, *ct, *lt;

  int lentab[3][4][17] = 
  {
    //YUV420
   {{ 2, 6, 6, 6, 6, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0},
    { 0, 1, 6, 7, 8, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}, 
    { 0, 0, 3, 7, 8, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}, 
    { 0, 0, 0, 6, 7, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}},
    //YUV422
   {{ 1, 7, 7, 9, 9,10,11,12,13, 0, 0, 0, 0, 0, 0, 0, 0},
    { 0, 2, 7, 7, 9,10,11,12,12, 0, 0, 0, 0, 0, 0, 0, 0}, 
    { 0, 0, 3, 7, 7, 9,10,11,12, 0, 0, 0, 0, 0, 0, 0, 0}, 
    { 0, 0, 0, 5, 6, 7, 7,10,11, 0, 0, 0, 0, 0, 0, 0, 0}},
    //YUV444
   {{ 1, 6, 8, 9,10,11,13,13,13,14,14,15,15,16,16,16,16},
    { 0, 2, 6, 8, 9,10,11,13,13,14,14,15,15,15,16,16,16},
    { 0, 0, 3, 7, 8, 9,10,11,13,13,14,14,15,15,16,16,16},
    { 0, 0, 0, 5, 6, 7, 8, 9,10,11,13,14,14,15,15,16,16}}
  };

  int codtab[3][4][17] = 
  {
    //YUV420
   {{ 1, 7, 4, 3, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0},
    { 0, 1, 6, 3, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0},
    { 0, 0, 1, 2, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0},
    { 0, 0, 0, 5, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}},
    //YUV422
   {{ 1,15,14, 7, 6, 7, 7, 7, 7, 0, 0, 0, 0, 0, 0, 0, 0},
    { 0, 1,13,12, 5, 6, 6, 6, 5, 0, 0, 0, 0, 0, 0, 0, 0},
    { 0, 0, 1,11,10, 4, 5, 5, 4, 0, 0, 0, 0, 0, 0, 0, 0},
    { 0, 0, 0, 1, 1, 9, 8, 4, 4, 0, 0, 0, 0, 0, 0, 0, 0}},
    //YUV444
   {{ 1, 5, 7, 7, 7, 7,15,11, 8,15,11,15,11,15,11, 7, 4}, 
    { 0, 1, 4, 6, 6, 6, 6,14,10,14,10,14,10, 1,14,10, 6}, 
    { 0, 0, 1, 5, 5, 5, 5, 5,13, 9,13, 9,13, 9,13, 9, 5}, 
    { 0, 0, 0, 3, 3, 4, 4, 4, 4, 4,12,12, 8,12, 8,12, 8}}
  
  };
  int yuv = img->yuv_format - 1;
  //ADD-VG-14052004-END

  lt = &lentab[yuv][0][0];
  ct = &codtab[yuv][0][0];

  retval = code_from_bitstream_2d(sym, dP, lt, ct, 17, 4, &code);

  if (retval)
  {
    printf("ERROR: failed to find NumCoeff/TrailingOnes ChromaDC\n");
    exit(-1);
  }


#if TRACE
    snprintf(sym->tracestring, 
      TRACESTRING_SIZE, "ChrDC # c & tr.1s  #c=%d #t1=%d",
              sym->value1, sym->value2);
    tracebits2(sym->tracestring, sym->len, code);

#endif

  return retval;
}




/*!
 ************************************************************************
 * \brief
 *    read Level VLC0 codeword from UVLC-partition 
 ************************************************************************
 */
int readSyntaxElement_Level_VLC0(SyntaxElement *sym, struct datapartition *dP)
{
  Bitstream   *currStream = dP->bitstream;
  int frame_bitoffset = currStream->frame_bitoffset;
  byte *buf = currStream->streamBuffer;
  int BitstreamLengthInBytes = currStream->bitstream_length;
  int len, sign=0, level=0, code;
  int offset, addbit;

  len = 0;
  while (!ShowBits(buf, frame_bitoffset+len, BitstreamLengthInBytes, 1))
    len++;

  len++;
  code = 1;
  frame_bitoffset += len;

  if (len < 15)
  {
    sign = (len - 1) & 1;
    level = (len-1) / 2 + 1;
  }
  else if (len == 15)
  {
    // escape code
    code = (code << 4) | ShowBits(buf, frame_bitoffset, BitstreamLengthInBytes, 4);
    len += 4;
    frame_bitoffset += 4;
    sign = (code & 1);
    level = ((code >> 1) & 0x7) + 8;
  }
  else if (len >= 16)
  {
    // escape code
    addbit=len-16;
    code = ShowBits(buf, frame_bitoffset, BitstreamLengthInBytes, (len-4));
    len  = (len-4);
    frame_bitoffset += len;
    sign =  (code & 1);

    offset=(2048<<addbit)+16-2048;
    level = (code >> 1) + offset;

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
欧美成人a∨高清免费观看| 久久99日本精品| 日韩av一级电影| 久久国产麻豆精品| 国产传媒久久文化传媒| 一本色道久久综合亚洲aⅴ蜜桃| 欧美视频在线一区| 精品国产乱码久久久久久牛牛| 中文字幕亚洲精品在线观看| 午夜精品久久久久久久99樱桃| 国产一区二区不卡在线| 91网站在线播放| 日韩三级免费观看| 国产精品国产三级国产专播品爱网| 亚洲制服丝袜在线| 国产成人超碰人人澡人人澡| 欧美体内she精高潮| 欧美精品一区二区三区很污很色的 | 欧美精品粉嫩高潮一区二区| 久久精品人人做人人爽97| 一区二区日韩av| 国产一区日韩二区欧美三区| 91久久精品日日躁夜夜躁欧美| 欧美成人一区二区| 一区二区国产盗摄色噜噜| 激情另类小说区图片区视频区| 99riav一区二区三区| 精品福利二区三区| 亚洲图片欧美视频| 91.xcao| 美女免费视频一区二区| 欧美精品国产精品| 国产乱理伦片在线观看夜一区| 日本高清视频一区二区| 欧美成人a在线| 国产精品国产三级国产aⅴ中文| www.日韩在线| 国产成人精品一区二| 欧美人妇做爰xxxⅹ性高电影 | 亚洲国产精品久久久男人的天堂| 久久机这里只有精品| 欧亚洲嫩模精品一区三区| 久久精品视频网| 99久久伊人久久99| 欧美va在线播放| 中文字幕中文乱码欧美一区二区| eeuss鲁一区二区三区| 欧美tickle裸体挠脚心vk| 国产精品嫩草99a| 中文字幕在线观看一区| 亚洲欧洲在线观看av| 欧美精品久久99久久在免费线| 久久人人97超碰com| 国产福利一区二区三区视频在线| 国产亚洲va综合人人澡精品 | 91久久精品午夜一区二区| 亚洲一区二区影院| 欧美一区二区三区免费在线看| 男人操女人的视频在线观看欧美 | 久久久精品tv| 色悠久久久久综合欧美99| 精品无码三级在线观看视频 | 欧美日韩午夜在线| 蜜桃视频一区二区三区| 日本一区免费视频| 欧美一区二区三区四区在线观看| 国产精品一区二区在线观看不卡 | 激情综合网最新| 国产精品久久久久久一区二区三区| 色综合天天性综合| 国产专区欧美精品| 亚洲国产精品视频| 亚洲欧洲另类国产综合| 日韩免费电影网站| 欧美午夜精品久久久久久超碰| 天堂蜜桃91精品| 91麻豆精品国产自产在线观看一区 | 精品一区二区精品| 悠悠色在线精品| 久久老女人爱爱| 日韩一区二区精品在线观看| 91美女视频网站| 国产成a人亚洲| 紧缚捆绑精品一区二区| 久久国内精品自在自线400部| 日韩一区二区三区视频| 国内精品久久久久影院色| 婷婷久久综合九色国产成人| 一区二区三区日韩欧美精品| 国产精品女同互慰在线看| 精品久久久久一区二区国产| 91麻豆精品国产91久久久资源速度| 91黄色免费版| 欧美三级午夜理伦三级中视频| 91亚洲精华国产精华精华液| 国产成人综合网| 国产欧美一区二区三区沐欲 | 久久日一线二线三线suv| 制服丝袜日韩国产| 欧美电影一区二区三区| 欧美一区二区三区在线视频| 日韩一区二区三区三四区视频在线观看| 欧美性猛交一区二区三区精品| 欧美日韩国产综合一区二区| 看片网站欧美日韩| 亚洲与欧洲av电影| 美腿丝袜一区二区三区| 精品系列免费在线观看| 国产成人在线看| 色系网站成人免费| 欧美精品久久久久久久久老牛影院| 在线成人午夜影院| 欧美国产精品一区| 欧美色涩在线第一页| 成人性生交大片免费看中文| 成人网在线播放| 欧美日韩精品一区二区在线播放| 精品福利一区二区三区免费视频| 中文字幕一区二区三区四区| 午夜电影网一区| 国产成人综合亚洲91猫咪| 在线视频国产一区| 久久久久久毛片| a亚洲天堂av| 91偷拍与自偷拍精品| 日韩欧美国产小视频| 国产精品不卡视频| 久久精品国产**网站演员| 在线观看一区不卡| 国产网站一区二区| 蜜臂av日日欢夜夜爽一区| 欧美综合天天夜夜久久| 久久久久国产精品麻豆| 91丨九色丨蝌蚪丨老版| 欧美日韩精品电影| 亚洲六月丁香色婷婷综合久久| 国产精品中文字幕欧美| 久久综合久久综合久久| 日韩福利视频网| 91精品国产欧美日韩| 亚洲自拍偷拍综合| 91麻豆国产精品久久| 中文字幕日韩一区| 91精品黄色片免费大全| 日韩三区在线观看| 毛片不卡一区二区| 欧美大黄免费观看| 国产激情一区二区三区| 欧美激情在线一区二区| 丁香婷婷综合网| 久久九九国产精品| 国产99精品国产| 日本一区二区三区视频视频| 性感美女久久精品| 日本不卡123| 在线播放日韩导航| 国产一区三区三区| 欧美激情一区不卡| 91浏览器在线视频| 一区二区三区色| 欧美一区二区在线不卡| 国产精品综合视频| 中文字幕乱码亚洲精品一区 | 99九九99九九九视频精品| 国产成人免费xxxxxxxx| 久久这里只有精品首页| 97久久久精品综合88久久| 亚洲黄色尤物视频| 91精品久久久久久蜜臀| 激情成人综合网| 亚洲麻豆国产自偷在线| 91.com视频| 成人三级伦理片| 视频一区二区三区在线| 国产亚洲一二三区| 精品国产第一区二区三区观看体验| 日本不卡123| 欧美精品第1页| 欧美色精品在线视频| 亚洲风情在线资源站| 欧美久久久久久蜜桃| 国产乱国产乱300精品| 欧美日韩精品欧美日韩精品一综合| 欧美丰满一区二区免费视频| 亚洲成人免费视频| 日韩三级视频在线看| 91麻豆免费看片| 精品无码三级在线观看视频| 午夜欧美在线一二页| 国产欧美日韩综合| 欧美在线不卡一区| 91视频在线看| 色悠悠久久综合| 91久久精品一区二区三| 91免费观看在线| 欧美色中文字幕| 7777精品伊人久久久大香线蕉| 欧美日韩在线播放| 日韩一级完整毛片| 国产日韩高清在线|