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

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

?? cabac.c

?? 一個簡單的視頻會議VC++MFC工程文件
?? C
?? 第 1 頁 / 共 4 頁
字號:
 * \brief
 *    This function is used to arithmetically decode the macroblock
 *    type info of a given MB.
 ************************************************************************
 */
void readMB_skip_flagInfo_CABAC( SyntaxElement *se,
                                 struct inp_par *inp,
                                 struct img_par *img,
                                 DecodingEnvironmentPtr dep_dp)
{
  int a, b;
  int act_ctx;
  int bframe=(img->type==B_SLICE);
  MotionInfoContexts *ctx = (img->currentSlice)->mot_ctx;
  Macroblock *currMB = &img->mb_data[img->current_mb_nr];


  if (bframe)
  {
    if (currMB->mb_available_up == NULL)
      b = 0;
    else
      b = (currMB->mb_available_up->skip_flag==0 ? 0 : 1);
    if (currMB->mb_available_left == NULL)
      a = 0;
    else
      a = (currMB->mb_available_left->skip_flag==0 ? 0 : 1);
    
    act_ctx = 7 + a + b;
    
    if (biari_decode_symbol (dep_dp, &ctx->mb_type_contexts[2][act_ctx]) == 1)
      se->value1 = se->value2 = 0;
    else
      se->value1 = se->value2 = 1;
  }
  else
  {
    if (currMB->mb_available_up == NULL)
      b = 0;
    else
      b = (( (currMB->mb_available_up)->skip_flag != 0) ? 1 : 0 );
    if (currMB->mb_available_left == NULL)
      a = 0;
    else
      a = (( (currMB->mb_available_left)->skip_flag != 0) ? 1 : 0 );

    act_ctx = a + b;

    if (biari_decode_symbol(dep_dp, &ctx->mb_type_contexts[1][act_ctx]) == 1)
      se->value1 = 0;
    else
      se->value1 = 1;
  }

  currMB->skip_flag = se->value1;

#if TRACE
  fprintf(p_trace, "@%d %s\t\t%d\t%d %d\n",symbolCount++, se->tracestring, se->value1,a,b);
  fflush(p_trace);
#endif
  if (!se->value1)
  {
    last_dquant=0;
  }
  return;
}
/*!
 ************************************************************************
 * \brief
 *    This function is used to arithmetically decode the macroblock
 *    type info of a given MB.
 ************************************************************************
 */
void readMB_typeInfo_CABAC( SyntaxElement *se,
                            struct inp_par *inp,
                            struct img_par *img,
                            DecodingEnvironmentPtr dep_dp)
{
  int a, b;
  int act_ctx;
  int act_sym;
  int bframe=(img->type==B_SLICE);
  int mode_sym;
  int ct = 0;
  int curr_mb_type;


  MotionInfoContexts *ctx = (img->currentSlice)->mot_ctx;
  Macroblock *currMB = &img->mb_data[img->current_mb_nr];

  if(img->type == I_SLICE)  // INTRA-frame
  {
    if (currMB->mb_available_up == NULL)
      b = 0;
    else 
      b = (( (currMB->mb_available_up)->mb_type != I4MB) ? 1 : 0 );
    if (currMB->mb_available_left == NULL)
      a = 0;
    else 
      a = (( (currMB->mb_available_left)->mb_type != I4MB) ? 1 : 0 );

    act_ctx = a + b;
    act_sym = biari_decode_symbol(dep_dp, ctx->mb_type_contexts[0] + act_ctx);
    se->context = act_ctx; // store context

    if (act_sym==0) // 4x4 Intra
    {
      curr_mb_type = act_sym;
    }
    else // 16x16 Intra
    {
      mode_sym = biari_decode_final(dep_dp);
      if(mode_sym == 1)
      {
        curr_mb_type = 25;
      }
      else
      {
        act_sym = 1;
        act_ctx = 4;
        mode_sym =  biari_decode_symbol(dep_dp, ctx->mb_type_contexts[0] + act_ctx ); // decoding of AC/no AC
        act_sym += mode_sym*12;
        act_ctx = 5;
        // decoding of cbp: 0,1,2
          mode_sym =  biari_decode_symbol(dep_dp, ctx->mb_type_contexts[0] + act_ctx );
        if (mode_sym!=0)
        {
          act_ctx=6;
          mode_sym = biari_decode_symbol(dep_dp, ctx->mb_type_contexts[0] + act_ctx );
          act_sym+=4;
          if (mode_sym!=0)
              act_sym+=4;
            }
          // decoding of I pred-mode: 0,1,2,3
          act_ctx = 7;
          mode_sym =  biari_decode_symbol(dep_dp, ctx->mb_type_contexts[0] + act_ctx );
          act_sym += mode_sym*2;
          act_ctx = 8;
          mode_sym =  biari_decode_symbol(dep_dp, ctx->mb_type_contexts[0] + act_ctx );
          act_sym += mode_sym;
          curr_mb_type = act_sym;
      }
    }
  }
  else if(img->type == SI_SLICE)  // SI-frame
  {
    // special ctx's for SI4MB
    if (currMB->mb_available_up == NULL)
      b = 0;
    else 
      b = (( (currMB->mb_available_up)->mb_type != SI4MB) ? 1 : 0 );
    if (currMB->mb_available_left == NULL)
      a = 0;
    else 
      a = (( (currMB->mb_available_left)->mb_type != SI4MB) ? 1 : 0 );

    act_ctx = a + b;
    act_sym = biari_decode_symbol(dep_dp, ctx->mb_type_contexts[4] + act_ctx);
    se->context = act_ctx; // store context

    if (act_sym==0) //  SI 4x4 Intra
    {
      curr_mb_type = 0;
    }
    else // analog INTRA_IMG
    {
      if (currMB->mb_available_up == NULL)
        b = 0;
      else 
        b = (( (currMB->mb_available_up)->mb_type != I4MB) ? 1 : 0 );
      if (currMB->mb_available_left == NULL)
        a = 0;
      else 
        a = (( (currMB->mb_available_left)->mb_type != I4MB) ? 1 : 0 );

      act_ctx = a + b;
      act_sym = biari_decode_symbol(dep_dp, ctx->mb_type_contexts[0] + act_ctx);
      se->context = act_ctx; // store context
      
      
      if (act_sym==0) // 4x4 Intra
      {
        curr_mb_type = 1;
      }
      else // 16x16 Intra
      {
        mode_sym = biari_decode_final(dep_dp);
        if( mode_sym==1 )
        {
          curr_mb_type = 26;
        }
        else
        {
          act_sym = 2;
          act_ctx = 4;
          mode_sym =  biari_decode_symbol(dep_dp, ctx->mb_type_contexts[0] + act_ctx ); // decoding of AC/no AC
          act_sym += mode_sym*12;
          act_ctx = 5;
          // decoding of cbp: 0,1,2
          mode_sym =  biari_decode_symbol(dep_dp, ctx->mb_type_contexts[0] + act_ctx );
          if (mode_sym!=0)
          {
            act_ctx=6;
            mode_sym = biari_decode_symbol(dep_dp, ctx->mb_type_contexts[0] + act_ctx );
            act_sym+=4;
            if (mode_sym!=0)
              act_sym+=4;
          }
          // decoding of I pred-mode: 0,1,2,3
          act_ctx = 7;
          mode_sym =  biari_decode_symbol(dep_dp, ctx->mb_type_contexts[0] + act_ctx );
          act_sym += mode_sym*2;
          act_ctx = 8;
          mode_sym =  biari_decode_symbol(dep_dp, ctx->mb_type_contexts[0] + act_ctx );
          act_sym += mode_sym;
          curr_mb_type = act_sym;
        }
      }
    }
  }
  else
  {
    if (bframe)
    {
      ct = 1;
      if (currMB->mb_available_up == NULL)
        b = 0;
      else
        b = (( (currMB->mb_available_up)->mb_type != 0) ? 1 : 0 );
      if (currMB->mb_available_left == NULL)
        a = 0;
      else
        a = (( (currMB->mb_available_left)->mb_type != 0) ? 1 : 0 );

      act_ctx = a + b;

      if (biari_decode_symbol (dep_dp, &ctx->mb_type_contexts[2][act_ctx]))
      {
        if (biari_decode_symbol (dep_dp, &ctx->mb_type_contexts[2][4]))
        {
          if (biari_decode_symbol (dep_dp, &ctx->mb_type_contexts[2][5]))
          {
            act_sym=12;
            if (biari_decode_symbol (dep_dp, &ctx->mb_type_contexts[2][6])) act_sym+=8;
            if (biari_decode_symbol (dep_dp, &ctx->mb_type_contexts[2][6])) act_sym+=4;
            if (biari_decode_symbol (dep_dp, &ctx->mb_type_contexts[2][6])) act_sym+=2;

            if      (act_sym==24)  act_sym=11;
            else if (act_sym==26)  act_sym=22;
            else
            {
              if (act_sym==22)     act_sym=23;
              if (biari_decode_symbol (dep_dp, &ctx->mb_type_contexts[2][6])) act_sym+=1; 
            }
          }
          else
          {
            act_sym=3;
            if (biari_decode_symbol (dep_dp, &ctx->mb_type_contexts[2][6])) act_sym+=4;
            if (biari_decode_symbol (dep_dp, &ctx->mb_type_contexts[2][6])) act_sym+=2;
            if (biari_decode_symbol (dep_dp, &ctx->mb_type_contexts[2][6])) act_sym+=1;
          }
        }
        else
        {
          if (biari_decode_symbol (dep_dp, &ctx->mb_type_contexts[2][6])) act_sym=2;
          else                                                            act_sym=1;
        }
      }
      else
      {
        act_sym = 0;
      }
    }
    else // P-frame
    {
      {
        if (biari_decode_symbol(dep_dp, &ctx->mb_type_contexts[1][4] )) 
        {
          if (biari_decode_symbol(dep_dp, &ctx->mb_type_contexts[1][7] ))   act_sym = 7;
          else                                                              act_sym = 6;
        }
        else
        {
          if (biari_decode_symbol(dep_dp, &ctx->mb_type_contexts[1][5] ))
          {
            if (biari_decode_symbol(dep_dp, &ctx->mb_type_contexts[1][7] )) act_sym = 2;
            else                                                            act_sym = 3;
          }
          else
          {
            if (biari_decode_symbol(dep_dp, &ctx->mb_type_contexts[1][6] )) act_sym = 4;
            else                                                            act_sym = 1;
          }
        }
      }
    }

    if (act_sym<=6 || (((img->type == B_SLICE)?1:0) && act_sym<=23))
    {
      curr_mb_type = act_sym;
    }
    else  // additional info for 16x16 Intra-mode
    {
      mode_sym = biari_decode_final(dep_dp);
      if( mode_sym==1 )
      {
        if(bframe)  // B frame
          curr_mb_type = 48;
        else      // P frame
          curr_mb_type = 31;
      }
      else
      {
        act_ctx = 8;
        mode_sym =  biari_decode_symbol(dep_dp, ctx->mb_type_contexts[1] + act_ctx ); // decoding of AC/no AC
        act_sym += mode_sym*12;

        // decoding of cbp: 0,1,2
        act_ctx = 9;
        mode_sym = biari_decode_symbol(dep_dp, ctx->mb_type_contexts[1] + act_ctx );
        if (mode_sym != 0)
        {
          act_sym+=4;
          mode_sym = biari_decode_symbol(dep_dp, ctx->mb_type_contexts[1] + act_ctx );
          if (mode_sym != 0)
            act_sym+=4;
        }

        // decoding of I pred-mode: 0,1,2,3
        act_ctx = 10;
        mode_sym = biari_decode_symbol(dep_dp, ctx->mb_type_contexts[1] + act_ctx );
        act_sym += mode_sym*2;
        mode_sym = biari_decode_symbol(dep_dp, ctx->mb_type_contexts[1] + act_ctx );
        act_sym += mode_sym;
        curr_mb_type = act_sym;
      }
    }
  }
  se->value1 = curr_mb_type;

//  if (curr_mb_type >= 23)       printf(" stopx");
#if TRACE
  fprintf(p_trace, "@%d %s\t\t\t%d\n",symbolCount++, se->tracestring, se->value1);
  fflush(p_trace);
#endif
}

/*!
 ************************************************************************
 * \brief
 *    This function is used to arithmetically decode a pair of
 *    intra prediction modes of a given MB.
 ************************************************************************
 */
void readIntraPredMode_CABAC( SyntaxElement *se,
                              struct inp_par *inp,
                              struct img_par *img,
                              DecodingEnvironmentPtr dep_dp)
{
  TextureInfoContexts *ctx     = img->currentSlice->tex_ctx;
  int act_sym;

  // use_most_probable_mode
  act_sym = biari_decode_symbol(dep_dp, ctx->ipr_contexts);

  // remaining_mode_selector
  if (act_sym == 1)
    se->value1 = -1;
  else
  {
    se->value1  = 0;
    se->value1 |= (biari_decode_symbol(dep_dp, ctx->ipr_contexts+1)     );
    se->value1 |= (biari_decode_symbol(dep_dp, ctx->ipr_contexts+1) << 1);
    se->value1 |= (biari_decode_symbol(dep_dp, ctx->ipr_contexts+1) << 2);
  }

#if TRACE
  fprintf(p_trace, "@%d %s\t\t\t%d\n",symbolCount++, se->tracestring, se->value1);
  fflush(p_trace);
#endif
}
/*!
 ************************************************************************
 * \brief
 *    This function is used to arithmetically decode the reference
 *    parameter of a given MB.
 ************************************************************************
 */
void readRefFrame_CABAC( SyntaxElement *se,
                         struct inp_par *inp,
                         struct img_par *img,
                         DecodingEnvironmentPtr dep_dp)
{
  MotionInfoContexts *ctx = img->currentSlice->mot_ctx;
  Macroblock *currMB = &img->mb_data[img->current_mb_nr];

  int   addctx  = 0;
  int   a, b;
  int   act_ctx;
  int   act_sym;
  int** refframe_array = dec_picture->ref_idx[se->value2];
  int   b8a, b8b;

  PixelPos block_a, block_b;
  
  getLuma4x4Neighbour(img->current_mb_nr, img->subblock_x, img->subblock_y, -1,  0, &block_a);
  getLuma4x4Neighbour(img->current_mb_nr, img->subblock_x, img->subblock_y,  0, -1, &block_b);

  b8a=((block_a.x/2)%2)+2*((block_a.y/2)%2);
  b8b=((block_b.x/2)%2)+2*((block_b.y/2)%2);

  if (!block_b.available)
    b=0;
  else if ( (img->mb_data[block_b.mb_addr].mb_type==IPCM) || IS_DIRECT(&img->mb_data[block_b.mb_addr]) || (img->mb_data[block_b.mb_addr].b8mode[b8b]==0 && img->mb_data[block_b.mb_addr].b8pdir[b8b]==2))
    b=0;
  else 
  {
    if (img->MbaffFrameFlag && (currMB->mb_field == 0) && (img->mb_data[block_b.mb_addr].mb_field == 1))
      b = (refframe_array[block_b.pos_x][block_b.pos_y] > 1 ? 1 : 0);
    else
      b = (refframe_array[block_b.pos_x][block_b.pos_y] > 0 ? 1 : 0);
  }

  if (!block_a.available)
    a=0;
  else if ((img->mb_data[block_a.mb_addr].mb_type==IPCM) || IS_DIRECT(&img->mb_data[block_a.mb_addr]) || (img->mb_data[block_a.mb_addr].b8mode[b8a]==0 && img->mb_data[block_a.mb_addr].b8pdir[b8a]==2))
    a=0;
  else 
  {
    if (img->MbaffFrameFlag && (currMB->mb_field == 0) && (img->mb_data[block_a.mb_addr].mb_field == 1))
      a = (refframe_array[block_a.pos_x][block_a.pos_y] > 1 ? 1 : 0);
    else
      a = (refframe_array[block_a.pos_x][block_a.pos_y] > 0 ? 1 : 0);
  }

  act_ctx = a + 2*b;
  se->context = act_ctx; // store context

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
欧美福利视频导航| 成人av影院在线| 3atv一区二区三区| 香蕉加勒比综合久久| 3d动漫精品啪啪一区二区竹菊| 同产精品九九九| 欧美大片在线观看| 国产精品99久| 亚洲精品中文字幕在线观看| 欧美亚洲综合另类| 免费欧美日韩国产三级电影| 久久精品网站免费观看| av午夜一区麻豆| 亚洲妇女屁股眼交7| 欧美成人官网二区| 成人免费不卡视频| 爽好久久久欧美精品| 欧美成人三级在线| 岛国精品在线观看| 亚洲一区二区三区四区的| 日韩欧美一级在线播放| 国产精品99久久久久久宅男| 亚洲综合色成人| 欧美大片在线观看一区二区| 99精品欧美一区二区三区综合在线| 亚洲国产欧美日韩另类综合 | 欧美日韩不卡一区二区| 久久99精品久久久久久国产越南| 国产精品拍天天在线| 欧美日韩三级视频| 国产一区二区在线免费观看| 亚洲精品美腿丝袜| 精品国偷自产国产一区| 99re在线视频这里只有精品| 免费看黄色91| 亚洲欧美欧美一区二区三区| 精品国产自在久精品国产| 成人av在线电影| 久久99国产精品尤物| 亚洲美女视频一区| 国产三级欧美三级| 欧美蜜桃一区二区三区| 成人性视频网站| 秋霞午夜鲁丝一区二区老狼| 亚洲伦在线观看| 久久久久久久久一| 欧美一区午夜视频在线观看| 91麻豆自制传媒国产之光| 国产一区二区女| 日韩精品一卡二卡三卡四卡无卡| 日韩一区中文字幕| 久久久蜜臀国产一区二区| 欧美丰满少妇xxxbbb| 99视频有精品| 成人永久看片免费视频天堂| 久久精品99国产精品| 亚洲v中文字幕| 亚洲欧美日韩久久精品| 国产精品美女一区二区在线观看| 日韩欧美一区在线观看| 欧美日韩中文一区| 97久久精品人人做人人爽| 国产福利一区二区| 狠狠色丁香久久婷婷综合_中| 亚洲午夜av在线| 亚洲国产综合色| 亚洲青青青在线视频| 日韩一区在线免费观看| 国产精品全国免费观看高清| 国产午夜亚洲精品羞羞网站| 久久综合狠狠综合| 欧美va亚洲va国产综合| 日韩欧美在线影院| 欧美一级免费观看| 91精品国产综合久久精品图片 | 在线免费不卡电影| www.欧美日韩| 99re成人精品视频| 成人激情免费网站| 91蜜桃传媒精品久久久一区二区| 从欧美一区二区三区| 成人中文字幕电影| 成人福利在线看| 99久久精品免费| 色偷偷成人一区二区三区91| 日本电影亚洲天堂一区| 欧美亚洲自拍偷拍| 欧美精品久久一区| 日韩一区二区三区免费看| 7777女厕盗摄久久久| 日韩午夜激情视频| 日韩女优av电影在线观看| 精品福利在线导航| 久久久电影一区二区三区| 国产精品三级久久久久三级| 亚洲丝袜制服诱惑| 亚洲国产人成综合网站| 日韩二区三区在线观看| 老司机精品视频一区二区三区| 精品亚洲免费视频| 国产91精品免费| 99免费精品视频| 在线电影欧美成精品| 日韩欧美aaaaaa| 中文字幕一区av| 天天av天天翘天天综合网色鬼国产| 日本视频在线一区| 国产精华液一区二区三区| 91免费看视频| 日韩一级高清毛片| 国产精品麻豆久久久| 一区二区三区成人| 国模冰冰炮一区二区| 成人av免费在线播放| 欧美乱熟臀69xxxxxx| 久久免费午夜影院| 一个色综合网站| 黑人巨大精品欧美一区| 色婷婷亚洲综合| 日韩免费观看高清完整版| 中文字幕亚洲视频| 老司机免费视频一区二区三区| av成人免费在线观看| 精品日韩av一区二区| 亚洲欧美激情插| 狠狠网亚洲精品| 欧美三区免费完整视频在线观看| 精品国产乱码久久久久久免费| 亚洲激情图片小说视频| 久久99久久精品| 欧美日韩美少妇| 国产精品麻豆久久久| 久久国产人妖系列| 欧美视频三区在线播放| 国产精品天干天干在线综合| 喷白浆一区二区| 色综合久久66| 中文字幕精品一区二区三区精品 | 日韩中文字幕亚洲一区二区va在线| 国产精品一品视频| 91精品国产入口| 亚洲三级小视频| 成人美女在线视频| 欧美精品一区二区久久久| 偷窥国产亚洲免费视频| 日本久久一区二区| 国产精品久久看| 国产久卡久卡久卡久卡视频精品| 这里只有精品99re| 一区二区三区四区视频精品免费 | 久久久www免费人成精品| 亚洲va欧美va人人爽午夜| 91麻豆视频网站| 亚洲欧洲av一区二区三区久久| 国产一区二区日韩精品| 欧美xxxxxxxx| 蜜臀av性久久久久蜜臀aⅴ流畅| 欧美影院一区二区| 一区二区欧美在线观看| 91亚洲精品一区二区乱码| 国产三级欧美三级| 成人综合婷婷国产精品久久免费| 精品久久一区二区三区| 免费的国产精品| 精品国产伦一区二区三区免费| 青青青爽久久午夜综合久久午夜 | 精品国产3级a| 免费xxxx性欧美18vr| 日韩限制级电影在线观看| 日韩国产成人精品| 91精品国产色综合久久不卡电影 | 国产麻豆成人精品| 久久你懂得1024| 成人永久免费视频| 最近日韩中文字幕| 在线免费观看成人短视频| 亚洲国产日韩av| 欧美一级二级三级蜜桃| 五月激情综合色| 2024国产精品视频| 国产精品一区二区在线观看网站| 精品国产乱码91久久久久久网站| 捆绑调教一区二区三区| 久久久久久久网| a亚洲天堂av| 一区二区三区美女| 欧美另类z0zxhd电影| 男女性色大片免费观看一区二区 | 日本一道高清亚洲日美韩| 91精品啪在线观看国产60岁| 狠狠久久亚洲欧美| 国产精品久久久久婷婷二区次| 91免费视频网| 日本欧美加勒比视频| 2021久久国产精品不只是精品| 成人一区二区三区在线观看| 亚洲综合清纯丝袜自拍| 欧美成人一区二区| 波多野洁衣一区| 婷婷中文字幕一区三区|