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

? 歡迎來(lái)到蟲(chóng)蟲(chóng)下載站! | ?? 資源下載 ?? 資源專輯 ?? 關(guān)于我們
? 蟲(chóng)蟲(chóng)下載站

?? vlc.c

?? h264標(biāo)準(zhǔn)的VC實(shí)現(xiàn)
?? C
?? 第 1 頁(yè) / 共 3 頁(yè)
字號(hào):
    { 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;

  // se->value1 : numcoeff
  // se->value2 : numtrailingones
  se->len = lentab[yuv][se->value2][se->value1];
  se->inf = codtab[yuv][se->value2][se->value1];

  if (se->len == 0)
  {
    printf("ERROR: (numcoeff,trailingones) not valid: (%d, %d)\n", 
      se->value1, se->value2);
    exit(-1);
  }

  symbol2vlc(se);

  writeUVLC2buffer(se, this_dataPart->bitstream);
#if TRACE
  if (se->type <= 1)
    trace2out (se);
#endif

  return (se->len);
}


/*!
 ************************************************************************
 * \brief
 *    write VLC for TotalZeros
 ************************************************************************
 */
int writeSyntaxElement_TotalZeros(SyntaxElement *se, DataPartition *this_dataPart)
{
  static const int lentab[TOTRUN_NUM][16] = 
  {
    { 1,3,3,4,4,5,5,6,6,7,7,8,8,9,9,9},  
    { 3,3,3,3,3,4,4,4,4,5,5,6,6,6,6},  
    { 4,3,3,3,4,4,3,3,4,5,5,6,5,6},  
    { 5,3,4,4,3,3,3,4,3,4,5,5,5},  
    { 4,4,4,3,3,3,3,3,4,5,4,5},  
    { 6,5,3,3,3,3,3,3,4,3,6},  
    { 6,5,3,3,3,2,3,4,3,6},  
    { 6,4,5,3,2,2,3,3,6},  
    { 6,6,4,2,2,3,2,5},  
    { 5,5,3,2,2,2,4},  
    { 4,4,3,3,1,3},  
    { 4,4,2,1,3},  
    { 3,3,1,2},  
    { 2,2,1},  
    { 1,1},  
  };

  static const int codtab[TOTRUN_NUM][16] = 
  {
    {1,3,2,3,2,3,2,3,2,3,2,3,2,3,2,1},
    {7,6,5,4,3,5,4,3,2,3,2,3,2,1,0},
    {5,7,6,5,4,3,4,3,2,3,2,1,1,0},
    {3,7,5,4,6,5,4,3,3,2,2,1,0},
    {5,4,3,7,6,5,4,3,2,1,1,0},
    {1,1,7,6,5,4,3,2,1,1,0},
    {1,1,5,4,3,3,2,1,1,0},
    {1,1,1,3,3,2,2,1,0},
    {1,0,1,3,2,1,1,1,},
    {1,0,1,3,2,1,1,},
    {0,1,1,2,1,3},
    {0,1,1,1,1},
    {0,1,1,1},
    {0,1,1},
    {0,1},  
  };
  int vlcnum;

  vlcnum = se->len;

  // se->value1 : TotalZeros
  se->len = lentab[vlcnum][se->value1];
  se->inf = codtab[vlcnum][se->value1];

  if (se->len == 0)
  {
    printf("ERROR: (TotalZeros) not valid: (%d)\n",se->value1);
    exit(-1);
  }

  symbol2vlc(se);

  writeUVLC2buffer(se, this_dataPart->bitstream);
#if TRACE
  if (se->type <= 1)
    trace2out (se);
#endif

  return (se->len);
}


/*!
 ************************************************************************
 * \brief
 *    write VLC for TotalZeros for Chroma DC
 ************************************************************************
 */
int writeSyntaxElement_TotalZerosChromaDC(SyntaxElement *se, DataPartition *this_dataPart)
{
  static const int lentab[3][TOTRUN_NUM][16] = 
  {
    //YUV420
   {{ 1,2,3,3},
    { 1,2,2},
    { 1,1}},
    //YUV422
   {{ 1,3,3,4,4,4,5,5},
    { 3,2,3,3,3,3,3},
    { 3,3,2,2,3,3},
    { 3,2,2,2,3},
    { 2,2,2,2},
    { 2,2,1},   
    { 1,1}},
    //YUV444
   {{ 1,3,3,4,4,5,5,6,6,7,7,8,8,9,9,9},  
    { 3,3,3,3,3,4,4,4,4,5,5,6,6,6,6},  
    { 4,3,3,3,4,4,3,3,4,5,5,6,5,6},  
    { 5,3,4,4,3,3,3,4,3,4,5,5,5},  
    { 4,4,4,3,3,3,3,3,4,5,4,5},  
    { 6,5,3,3,3,3,3,3,4,3,6},  
    { 6,5,3,3,3,2,3,4,3,6},  
    { 6,4,5,3,2,2,3,3,6},  
    { 6,6,4,2,2,3,2,5},  
    { 5,5,3,2,2,2,4},  
    { 4,4,3,3,1,3},  
    { 4,4,2,1,3},  
    { 3,3,1,2},  
    { 2,2,1},  
    { 1,1}}  
  };

  static const int codtab[3][TOTRUN_NUM][16] = 
  {
    //YUV420
   {{ 1,1,1,0},
    { 1,1,0},
    { 1,0}},
    //YUV422
   {{ 1,2,3,2,3,1,1,0},
    { 0,1,1,4,5,6,7},
    { 0,1,1,2,6,7},
    { 6,0,1,2,7},
    { 0,1,2,3},
    { 0,1,1},   
    { 0,1}},
    //YUV444
   {{1,3,2,3,2,3,2,3,2,3,2,3,2,3,2,1},
    {7,6,5,4,3,5,4,3,2,3,2,3,2,1,0},
    {5,7,6,5,4,3,4,3,2,3,2,1,1,0},
    {3,7,5,4,6,5,4,3,3,2,2,1,0},
    {5,4,3,7,6,5,4,3,2,1,1,0},
    {1,1,7,6,5,4,3,2,1,1,0},
    {1,1,5,4,3,3,2,1,1,0},
    {1,1,1,3,3,2,2,1,0},
    {1,0,1,3,2,1,1,1,},
    {1,0,1,3,2,1,1,},
    {0,1,1,2,1,3},
    {0,1,1,1,1},
    {0,1,1,1},
    {0,1,1},
    {0,1}}  
  };
  int vlcnum;
  int yuv = img->yuv_format - 1;
  
  vlcnum = se->len;

  // se->value1 : TotalZeros
  se->len = lentab[yuv][vlcnum][se->value1];
  se->inf = codtab[yuv][vlcnum][se->value1];

  if (se->len == 0)
  {
    printf("ERROR: (TotalZeros) not valid: (%d)\n",se->value1);
    exit(-1);
  }

  symbol2vlc(se);

  writeUVLC2buffer(se, this_dataPart->bitstream);
#if TRACE
  if (se->type <= 1)
    trace2out (se);
#endif

  return (se->len);
}


/*!
 ************************************************************************
 * \brief
 *    write VLC for Run Before Next Coefficient, VLC0
 ************************************************************************
 */
int writeSyntaxElement_Run(SyntaxElement *se, DataPartition *this_dataPart)
{
  static const int lentab[TOTRUN_NUM][16] = 
  {
    {1,1},
    {1,2,2},
    {2,2,2,2},
    {2,2,2,3,3},
    {2,2,3,3,3,3},
    {2,3,3,3,3,3,3},
    {3,3,3,3,3,3,3,4,5,6,7,8,9,10,11},
  };

  static const int codtab[TOTRUN_NUM][16] = 
  {
    {1,0},
    {1,1,0},
    {3,2,1,0},
    {3,2,1,1,0},
    {3,2,3,2,1,0},
    {3,0,1,3,2,5,4},
    {7,6,5,4,3,2,1,1,1,1,1,1,1,1,1},
  };
  int vlcnum;

  vlcnum = se->len;

  // se->value1 : run
  se->len = lentab[vlcnum][se->value1];
  se->inf = codtab[vlcnum][se->value1];

  if (se->len == 0)
  {
    printf("ERROR: (run) not valid: (%d)\n",se->value1);
    exit(-1);
  }

  symbol2vlc(se);

  writeUVLC2buffer(se, this_dataPart->bitstream);
#if TRACE
  if (se->type <= 1)
    trace2out (se);
#endif

  return (se->len);
}


/*!
 ************************************************************************
 * \brief
 *    write VLC for Coeff Level (VLC1)
 ************************************************************************
 */
int writeSyntaxElement_Level_VLC1(SyntaxElement *se, DataPartition *this_dataPart)
{
  int level, levabs, sign;

  level = se->value1;
  levabs = abs(level);
  sign = (level < 0 ? 1 : 0);

  
  if (levabs < 8)
  {
    se->len = levabs * 2 + sign - 1;
    se->inf = 1;
  }
  else if (levabs < 8+8)
  {
    // escape code1
    se->len = 14 + 1 + 4;
    se->inf = (1 << 4) | ((levabs - 8) << 1) | sign;
  }
  else
  {
    // escape code2
    se->len = 14 + 2 + 12;
    se->inf = (0x1 << 12) | ((levabs - 16)<< 1) | sign;
  }


  symbol2vlc(se);

  writeUVLC2buffer(se, this_dataPart->bitstream);
#if TRACE
  if (se->type <= 1)
    trace2out (se);
#endif

  return (se->len);
}


/*!
 ************************************************************************
 * \brief
 *    write VLC for Coeff Level
 ************************************************************************
 */
int writeSyntaxElement_Level_VLCN(SyntaxElement *se, int vlc, DataPartition *this_dataPart)
{
  int iCodeword;
  int iLength;

  int level = se->value1;

  int levabs = abs(level);
  int sign = (level < 0 ? 1 : 0);  

  int shift = vlc-1;
  int escape = (15<<shift)+1;

  int numPrefix = (levabs-1)>>shift;

  int sufmask = ~((0xffffffff)<<shift);
  int suffix = (levabs-1)&sufmask;

  if (levabs < escape)
  {
    iLength = numPrefix + vlc + 1;
    iCodeword = (1<<(shift+1))|(suffix<<1)|sign;
  }
  else
  {
    iLength = 28;
    iCodeword = (1<<12)|((levabs-escape)<<1)|sign;
  }
  se->len = iLength;
  se->inf = iCodeword;

  symbol2vlc(se);

  writeUVLC2buffer(se, this_dataPart->bitstream);
#if TRACE
  if (se->type <= 1)
    trace2out (se);
#endif

  return (se->len);
}


/*!
 ************************************************************************
 * \brief
 *    Write out a trace string on the trace file
 ************************************************************************
 */
#if TRACE
void trace2out(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++ < 55)
      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, " (%3d) \n",sym->value1);
  }
  fflush (p_trace);
}
#endif


/*!
 ************************************************************************
 * \brief
 *    puts the less than 8 bits in the byte buffer of the Bitstream into
 *    the streamBuffer.  
 *
 * \param
 *   currStream: the Bitstream the alignment should be established
 *
 ************************************************************************
 */
void writeVlcByteAlign(Bitstream* currStream)
{
  if (currStream->bits_to_go < 8)
  { // trailing bits to process
    currStream->byte_buf = (currStream->byte_buf <<currStream->bits_to_go) | (0xff >> (8 - currStream->bits_to_go));
    stats->bit_use_stuffingBits[img->type]+=currStream->bits_to_go;
    currStream->streamBuffer[currStream->byte_pos++]=currStream->byte_buf;
    currStream->bits_to_go = 8;
  }
}

?? 快捷鍵說(shuō)明

復(fù)制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號(hào) Ctrl + =
減小字號(hào) Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
91视频一区二区| 中文字幕在线观看一区| 亚洲国产综合在线| 91欧美一区二区| 亚洲国产中文字幕在线视频综合| 一本大道久久a久久精品综合| 中文字幕一区日韩精品欧美| 色悠久久久久综合欧美99| 亚洲激情六月丁香| 91麻豆精品国产91久久久久久久久 | 久久色.com| 国产精品一卡二卡| 亚洲人成精品久久久久久| 欧美性xxxxx极品少妇| 奇米亚洲午夜久久精品| 精品动漫一区二区三区在线观看| 成人网在线播放| 午夜精品久久久久久久蜜桃app| 制服丝袜中文字幕亚洲| 欧美伊人精品成人久久综合97| 视频一区在线视频| 欧美国产日韩一二三区| 91成人在线精品| 麻豆视频观看网址久久| 欧美激情一区二区三区| 欧美在线观看视频一区二区三区| 日韩精品福利网| 国产精品久99| 欧美一级日韩一级| 99精品视频在线播放观看| 日本欧美在线看| 国产精品久久久久天堂| 在线播放欧美女士性生活| 丁香啪啪综合成人亚洲小说 | 久久久久一区二区三区四区| 91丨九色porny丨蝌蚪| 久久99热这里只有精品| 亚洲精品老司机| 久久综合99re88久久爱| 欧美三级在线播放| 成人毛片在线观看| 久久99热国产| 丝袜亚洲另类欧美| 自拍偷拍欧美精品| 久久精品一级爱片| 91精品国产色综合久久不卡蜜臀| kk眼镜猥琐国模调教系列一区二区| 日韩国产欧美在线播放| 亚洲欧美偷拍卡通变态| 久久亚洲二区三区| 欧美一级国产精品| 欧美日韩高清一区二区| 99riav一区二区三区| 国产精品影视在线观看| 日本不卡高清视频| 亚洲成人av一区二区| 亚洲欧洲日产国产综合网| 久久综合久色欧美综合狠狠| 69堂成人精品免费视频| 欧美日韩五月天| 91色婷婷久久久久合中文| 国产99精品国产| 国产精品1区2区3区| 男人的天堂久久精品| 丝袜亚洲精品中文字幕一区| 亚洲一卡二卡三卡四卡无卡久久| 亚洲欧美综合在线精品| 国产精品看片你懂得| 国产欧美一区二区三区网站 | 久久久99久久精品欧美| 精品日韩一区二区三区| 日韩视频免费直播| 欧美一区二区三区男人的天堂| 欧美日韩亚洲综合在线 欧美亚洲特黄一级 | 亚洲欧美另类在线| 亚洲精品免费在线| 亚洲最大成人网4388xx| 亚洲欧美aⅴ...| 亚洲综合一二区| 亚洲大片精品永久免费| 亚洲午夜激情网页| 日欧美一区二区| 91美女视频网站| 91在线观看下载| 91猫先生在线| 欧美日韩一级二级三级| 欧美二区三区的天堂| 欧美一级淫片007| 欧美电视剧免费全集观看| 337p粉嫩大胆噜噜噜噜噜91av| 精品国产一区二区精华| 久久久精品欧美丰满| 国产精品另类一区| 一区二区三区鲁丝不卡| 午夜电影一区二区三区| 久久超碰97中文字幕| 成人免费毛片aaaaa**| 91看片淫黄大片一级在线观看| 精品婷婷伊人一区三区三| 欧美一区二区大片| 日本一区二区三区在线不卡| 国产精品伦一区二区三级视频| 国产精品灌醉下药二区| 一区二区免费看| 久久99精品一区二区三区 | 日韩精品一卡二卡三卡四卡无卡| 日本不卡视频在线观看| 久久精品国产澳门| 波多野结衣精品在线| 色伊人久久综合中文字幕| 欧美巨大另类极品videosbest| 精品捆绑美女sm三区| 中文无字幕一区二区三区 | 免费人成在线不卡| 不卡的av在线| 欧美一区二区三区爱爱| 国产亚洲午夜高清国产拍精品| 国产精品久久二区二区| 爽爽淫人综合网网站| 丁香婷婷深情五月亚洲| 色悠悠亚洲一区二区| 欧美精品一区二区三区四区 | 91精品一区二区三区在线观看| 久久色在线观看| 亚洲福利电影网| 国产成人精品免费网站| 欧美人妖巨大在线| 中国av一区二区三区| 亚洲免费看黄网站| 精品一区二区影视| 欧美日韩免费一区二区三区| 久久久久国产精品厨房| 亚洲午夜视频在线| 成人av在线一区二区三区| 欧美色精品在线视频| 中文字幕的久久| 男男gaygay亚洲| 在线视频你懂得一区二区三区| 精品国产精品网麻豆系列| 一区二区视频免费在线观看| 国产一区二区h| 欧美一区二区三区视频在线| 亚洲欧美日韩一区| 国产乱妇无码大片在线观看| 欧美久久久久久蜜桃| 亚洲三级免费电影| 国产成人免费在线观看不卡| 欧美一级二级三级蜜桃| 亚洲一级片在线观看| 91网站在线播放| 久久免费国产精品| 肉丝袜脚交视频一区二区| 91福利国产精品| 国产精品第四页| 粉嫩久久99精品久久久久久夜| 日韩写真欧美这视频| 亚洲国产欧美另类丝袜| 一本色道久久综合狠狠躁的推荐| 国产精品网站一区| 成人av综合在线| 欧美韩日一区二区三区四区| 狠狠网亚洲精品| 欧美一级理论片| 日韩av一二三| 欧美老肥妇做.爰bbww视频| 亚洲第一成年网| 4438x成人网最大色成网站| 亚洲在线免费播放| 欧洲一区二区三区免费视频| 18欧美亚洲精品| 色综合色综合色综合色综合色综合| 成人欧美一区二区三区小说| 99精品视频在线观看| ●精品国产综合乱码久久久久| 国产精品亚洲午夜一区二区三区 | av不卡免费在线观看| 中文字幕一区二区三区在线观看| 国产成人免费在线观看不卡| 国产亚洲精品7777| 成人午夜大片免费观看| 国产精品久久久久久久久动漫| kk眼镜猥琐国模调教系列一区二区| 国产精品萝li| 91网站在线观看视频| 亚洲自拍偷拍综合| 欧美三片在线视频观看| 蜜臀精品久久久久久蜜臀| 欧美一区二区啪啪| 首页综合国产亚洲丝袜| 日韩精品一区二区三区在线播放| 激情六月婷婷久久| 国产精品免费aⅴ片在线观看| 成人app在线| 亚洲综合999| 日韩一级免费观看| 国产91富婆露脸刺激对白| 17c精品麻豆一区二区免费| 欧美日韩午夜影院| 国产在线精品一区二区| 成人免费一区二区三区在线观看|