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

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

?? mc_prediction.c

?? h.264 影像壓縮 必須在 .net 的環(huán)境 下操作
?? C
?? 第 1 頁 / 共 3 頁
字號:
        cur_line    = cur_img[iClip3(0, maxold_y, y_pos + j)];
        cur_line_p1 = cur_img[iClip3(0, maxold_y, y_pos + j + 1)];
        tmp_pos = x_pos;
        blk_line = block[j];

        for (i = 0; i < hor_block_size; i++)
        {
          ipos    = iClip3(0, maxold_x, tmp_pos++);

          result = (w00 * cur_line[ipos] + w01 * cur_line_p1[ipos]);
          *(blk_line++) = iClip1(img->max_imgpel_value_uv, rshift_rnd_sf(result, total_scale));
        }
      }      
    }
    else if (dy == 0)
    { 
      for (j = 0; j < ver_block_size; j++)
      {
        cur_line    = cur_img[iClip3(0, maxold_y, y_pos + j)];
        tmp_pos = x_pos;
        blk_line = block[j];

        for (i = 0; i < hor_block_size; i++)
        {
          ipos    = iClip3(0, maxold_x, tmp_pos++);
          ipos_p1 = iClip3(0, maxold_x, tmp_pos  );

          result = (w00 * cur_line[ipos   ] + w10 * cur_line[ipos_p1]);
          *(blk_line++) = iClip1(img->max_imgpel_value_uv, rshift_rnd_sf(result, total_scale));
        }
      }      
    }
    else
    { /* other positions */ 
      for (j = 0; j < ver_block_size; j++)
      {
        cur_line    = cur_img[iClip3(0, maxold_y, y_pos + j)];
        cur_line_p1 = cur_img[iClip3(0, maxold_y, y_pos + j + 1)];
        tmp_pos = x_pos;
        blk_line = block[j];

        for (i = 0; i < hor_block_size; i++)
        {
          ipos    = iClip3(0, maxold_x, tmp_pos++);
          ipos_p1 = iClip3(0, maxold_x, tmp_pos  );

          result = (
            w00 * cur_line   [ipos   ] + 
            w10 * cur_line   [ipos_p1] +
            w01 * cur_line_p1[ipos   ] +
            w11 * cur_line_p1[ipos_p1]);
          *(blk_line++) = iClip1(img->max_imgpel_value_uv, rshift_rnd_sf(result, total_scale));
        }
      }      
    }
  }
}


void intra_cr_decoding(Macroblock *currMB, int yuv, struct img_par *img, int smb)
{
  imgpel **curUV, *cur_img;
  int (*m7UV)[16], *m7;
  int uv_shift, uv;
  int b8,b4;
  int ioff, joff, ii, jj, i, j;

  for(uv = 0; uv < 2; uv++)
  {
    curUV = dec_picture->imgUV[uv];
    m7UV = img->m7[uv+1];
    uv_shift = uv * (img->num_uv_blocks);
    intrapred_chroma(currMB, img, uv);

    if (!smb && (currMB->cbp >> 4))
    {
      for (b8 = 0; b8 < (img->num_uv_blocks); b8++)
      {
        for(b4 = 0; b4 < 4; b4++)
        {
          joff = subblk_offset_y[yuv][b8][b4];          
          ioff = subblk_offset_x[yuv][b8][b4];          

          itrans4x4(img, ioff, joff, uv + 1);

          for(jj=joff;jj<joff + 4;jj++)
            {
            cur_img = &curUV[img->pix_c_y+jj][img->pix_c_x + ioff];
            m7 = &m7UV[jj][ioff];

            for(ii=0; ii<4;ii++)
            {
              cur_img[ii] = m7[ii];
            }
            }
        }
      }
    }
    else if ((currMB->cbp >> 4) == 0)
    {
      for (b8 = 0; b8 < (img->num_uv_blocks); b8++)
      {
        for(b4 = 0; b4 < 4; b4++)
        {
          joff = subblk_offset_y[yuv][b8][b4];
          ioff = subblk_offset_x[yuv][b8][b4];          

          for(jj = joff; jj < 4 + joff;jj++)
            memcpy(&(curUV[img->pix_c_y+jj][img->pix_c_x + ioff]), &(img->mpr[uv + 1][jj][ioff]), BLOCK_SIZE * sizeof(imgpel));
        }
      }
    }
    else
    {
      itrans_sp_cr(img, uv);

      for (j = 0; j < 2; j++)
      {
        joff = j * 4;
        for(i = 0; i < 2;i++)
        {
          ioff = i * 4;          
          itrans4x4(img, ioff, joff, uv + 1);

          for(jj = joff; jj < joff + 4; jj++)
            for(ii = ioff; ii < ioff + 4; ii++)
            {
              curUV[img->pix_c_y+jj][ii + img->pix_c_x]=img->m7[uv+1][jj][ii];
            }
        }
      }
    }
  }
}

void prepare_direct_params(Macroblock *currMB, StorablePicture *dec_picture, struct img_par *img, short pmvl0[2], short pmvl1[2],char *l0_rFrame, char *l1_rFrame)
{
  char l0_rFrameL, l0_rFrameU, l0_rFrameUL, l0_rFrameUR;
  char l1_rFrameL, l1_rFrameU, l1_rFrameUL, l1_rFrameUR;
  
  PixelPos mb_left, mb_up, mb_upleft, mb_upright;

  getLuma4x4Neighbour(currMB, -1,  0, &mb_left);
  getLuma4x4Neighbour(currMB,  0, -1, &mb_up);
  getLuma4x4Neighbour(currMB, 16, -1, &mb_upright);
  getLuma4x4Neighbour(currMB, -1, -1, &mb_upleft);

  if (!img->MbaffFrameFlag)
  {
    l0_rFrameL  = mb_left.available    ? dec_picture->ref_idx[LIST_0][mb_left.pos_y][mb_left.pos_x]       : -1;
    l0_rFrameU  = mb_up.available      ? dec_picture->ref_idx[LIST_0][mb_up.pos_y][mb_up.pos_x]           : -1;
    l0_rFrameUL = mb_upleft.available  ? dec_picture->ref_idx[LIST_0][mb_upleft.pos_y][mb_upleft.pos_x]   : -1;
    l0_rFrameUR = mb_upright.available ? dec_picture->ref_idx[LIST_0][mb_upright.pos_y][mb_upright.pos_x] : l0_rFrameUL;

    l1_rFrameL = mb_left.available     ? dec_picture->ref_idx[LIST_1][mb_left.pos_y][mb_left.pos_x]       : -1;
    l1_rFrameU = mb_up.available       ? dec_picture->ref_idx[LIST_1][mb_up.pos_y][mb_up.pos_x]           : -1;
    l1_rFrameUL = mb_upleft.available  ? dec_picture->ref_idx[LIST_1][mb_upleft.pos_y][mb_upleft.pos_x]   : -1;
    l1_rFrameUR = mb_upright.available ? dec_picture->ref_idx[LIST_1][mb_upright.pos_y][mb_upright.pos_x] : l1_rFrameUL;
  }
  else
  {
    if (currMB->mb_field)
    {
      l0_rFrameL = mb_left.available 
        ? img->mb_data[mb_left.mb_addr].mb_field  || dec_picture->ref_idx[LIST_0][mb_left.pos_y][mb_left.pos_x] < 0
        ? dec_picture->ref_idx[LIST_0][mb_left.pos_y][mb_left.pos_x] 
        : dec_picture->ref_idx[LIST_0][mb_left.pos_y][mb_left.pos_x] * 2: -1;

      l0_rFrameU = mb_up.available 
        ? img->mb_data[mb_up.mb_addr].mb_field || dec_picture->ref_idx[LIST_0][mb_up.pos_y][mb_up.pos_x] < 0
        ? dec_picture->ref_idx[LIST_0][mb_up.pos_y][mb_up.pos_x] 
        : dec_picture->ref_idx[LIST_0][mb_up.pos_y][mb_up.pos_x] * 2: -1;

       l0_rFrameUL = mb_upleft.available 
         ? img->mb_data[mb_upleft.mb_addr].mb_field || dec_picture->ref_idx[LIST_0][mb_upleft.pos_y][mb_upleft.pos_x] < 0
         ? dec_picture->ref_idx[LIST_0][mb_upleft.pos_y][mb_upleft.pos_x] 
         : dec_picture->ref_idx[LIST_0][mb_upleft.pos_y][mb_upleft.pos_x] *2: -1;

       l0_rFrameUR = mb_upright.available 
         ? img->mb_data[mb_upright.mb_addr].mb_field || dec_picture->ref_idx[LIST_0][mb_upright.pos_y][mb_upright.pos_x] < 0 
         ? dec_picture->ref_idx[LIST_0][mb_upright.pos_y][mb_upright.pos_x] 
         : dec_picture->ref_idx[LIST_0][mb_upright.pos_y][mb_upright.pos_x] * 2: l0_rFrameUL;

       l1_rFrameL = mb_left.available 
         ? img->mb_data[mb_left.mb_addr].mb_field || dec_picture->ref_idx[LIST_1][mb_left.pos_y][mb_left.pos_x]  < 0 
         ? dec_picture->ref_idx[LIST_1][mb_left.pos_y][mb_left.pos_x] 
         : dec_picture->ref_idx[LIST_1][mb_left.pos_y][mb_left.pos_x] * 2: -1;

       l1_rFrameU = mb_up.available 
         ? img->mb_data[mb_up.mb_addr].mb_field || dec_picture->ref_idx[LIST_1][mb_up.pos_y][mb_up.pos_x]  < 0 
         ? dec_picture->ref_idx[LIST_1][mb_up.pos_y][mb_up.pos_x] 
         : dec_picture->ref_idx[LIST_1][mb_up.pos_y][mb_up.pos_x] * 2: -1;

       l1_rFrameUL = mb_upleft.available 
         ? img->mb_data[mb_upleft.mb_addr].mb_field || dec_picture->ref_idx[LIST_1][mb_upleft.pos_y][mb_upleft.pos_x]  < 0 
         ? dec_picture->ref_idx[LIST_1][mb_upleft.pos_y][mb_upleft.pos_x] 
         : dec_picture->ref_idx[LIST_1][mb_upleft.pos_y][mb_upleft.pos_x] *2 : -1;

       l1_rFrameUR = mb_upright.available 
         ? img->mb_data[mb_upright.mb_addr].mb_field || dec_picture->ref_idx[LIST_1][mb_upright.pos_y][mb_upright.pos_x] < 0
         ? dec_picture->ref_idx[LIST_1][mb_upright.pos_y][mb_upright.pos_x] 
         : dec_picture->ref_idx[LIST_1][mb_upright.pos_y][mb_upright.pos_x] * 2: l1_rFrameUL;
    }
    else
    {
      l0_rFrameL = mb_left.available 
        ? img->mb_data[mb_left.mb_addr].mb_field || dec_picture->ref_idx[LIST_0][mb_left.pos_y][mb_left.pos_x]  < 0 
        ? dec_picture->ref_idx[LIST_0][mb_left.pos_y][mb_left.pos_x] >> 1 
        : dec_picture->ref_idx[LIST_0][mb_left.pos_y][mb_left.pos_x]: -1;

      l0_rFrameU = mb_up.available 
        ? img->mb_data[mb_up.mb_addr].mb_field || dec_picture->ref_idx[LIST_0][mb_up.pos_y][mb_up.pos_x] < 0 
        ? dec_picture->ref_idx[LIST_0][mb_up.pos_y][mb_up.pos_x] >> 1 
        : dec_picture->ref_idx[LIST_0][mb_up.pos_y][mb_up.pos_x] : -1;

      l0_rFrameUL = mb_upleft.available 
        ? img->mb_data[mb_upleft.mb_addr].mb_field || dec_picture->ref_idx[LIST_0][mb_upleft.pos_y][mb_upleft.pos_x] < 0 
        ? dec_picture->ref_idx[LIST_0][mb_upleft.pos_y][mb_upleft.pos_x]>> 1 
        : dec_picture->ref_idx[LIST_0][mb_upleft.pos_y][mb_upleft.pos_x] : -1;

      l0_rFrameUR = mb_upright.available 
        ? img->mb_data[mb_upright.mb_addr].mb_field || dec_picture->ref_idx[LIST_0][mb_upright.pos_y][mb_upright.pos_x] < 0 
        ? dec_picture->ref_idx[LIST_0][mb_upright.pos_y][mb_upright.pos_x] >> 1 
        : dec_picture->ref_idx[LIST_0][mb_upright.pos_y][mb_upright.pos_x] : l0_rFrameUL;

      l1_rFrameL = mb_left.available 
        ? img->mb_data[mb_left.mb_addr].mb_field || dec_picture->ref_idx[LIST_1][mb_left.pos_y][mb_left.pos_x] < 0 
        ? dec_picture->ref_idx[LIST_1][mb_left.pos_y][mb_left.pos_x] >> 1 
        : dec_picture->ref_idx[LIST_1][mb_left.pos_y][mb_left.pos_x] : -1;

      l1_rFrameU = mb_up.available 
        ? img->mb_data[mb_up.mb_addr].mb_field || dec_picture->ref_idx[LIST_1][mb_up.pos_y][mb_up.pos_x] < 0 
        ? dec_picture->ref_idx[LIST_1][mb_up.pos_y][mb_up.pos_x] >> 1 
        : dec_picture->ref_idx[LIST_1][mb_up.pos_y][mb_up.pos_x] : -1;

      l1_rFrameUL = mb_upleft.available 
        ? img->mb_data[mb_upleft.mb_addr].mb_field || dec_picture->ref_idx[LIST_1][mb_upleft.pos_y][mb_upleft.pos_x] < 0 
        ? dec_picture->ref_idx[LIST_1][mb_upleft.pos_y][mb_upleft.pos_x] >> 1 
        : dec_picture->ref_idx[LIST_1][mb_upleft.pos_y][mb_upleft.pos_x] : -1;

      l1_rFrameUR = mb_upright.available 
        ? img->mb_data[mb_upright.mb_addr].mb_field || dec_picture->ref_idx[LIST_1][mb_upright.pos_y][mb_upright.pos_x] < 0 
        ? dec_picture->ref_idx[LIST_1][mb_upright.pos_y][mb_upright.pos_x] >> 1
        : dec_picture->ref_idx[LIST_1][mb_upright.pos_y][mb_upright.pos_x] : l1_rFrameUL;
    }
  }

  *l0_rFrame = (l0_rFrameL >= 0 && l0_rFrameU >= 0) ? imin(l0_rFrameL,l0_rFrameU): imax(l0_rFrameL,l0_rFrameU);
  *l0_rFrame = (*l0_rFrame >= 0 && l0_rFrameUR >= 0) ? imin(*l0_rFrame,l0_rFrameUR): imax(*l0_rFrame,l0_rFrameUR);

  *l1_rFrame = (l1_rFrameL >= 0 && l1_rFrameU >= 0) ? imin(l1_rFrameL,l1_rFrameU): imax(l1_rFrameL,l1_rFrameU);
  *l1_rFrame = (*l1_rFrame >= 0 && l1_rFrameUR >= 0) ? imin(*l1_rFrame,l1_rFrameUR): imax(*l1_rFrame,l1_rFrameUR);

  if (*l0_rFrame >=0)
    SetMotionVectorPredictor (currMB, img, pmvl0, *l0_rFrame, LIST_0, dec_picture->ref_idx, dec_picture->mv, 0, 0, 16, 16);

  if (*l1_rFrame >=0)
    SetMotionVectorPredictor (currMB, img, pmvl1, *l1_rFrame, LIST_1, dec_picture->ref_idx, dec_picture->mv, 0, 0, 16, 16);
}

void perform_mc(Macroblock *currMB, ColorPlane pl, StorablePicture *dec_picture, struct img_par *img, int pred_dir, int i, int j, int list_offset, int block_size_x, int block_size_y, int curr_mb_field)
{
  static imgpel tmp_block_l0[MB_BLOCK_SIZE][MB_BLOCK_SIZE];
  static imgpel tmp_block_l1[MB_BLOCK_SIZE][MB_BLOCK_SIZE];

  static int vec1_x=0, vec1_y=0, vec2_x=0, vec2_y=0;
  static int vec1_y_cr = 0, vec2_y_cr = 0;
  static int alpha_l0, alpha_l1, wp_offset;
  static const int mv_mul = 4;
  
  int i4   = img->block_x + i;
  int j4   = img->block_y + j;
  int ioff = (i << 2);
  int joff = (j << 2);         
  
  assert (pred_dir<=2);

  if (pred_dir != 2)
  {
    //===== Single List Prediction =====
    short          ref_idx = dec_picture->ref_idx[LIST_0 + pred_dir][j4][i4];
    short          ref_idx_wp = ref_idx;
    short      ***mv_array = dec_picture->mv[LIST_0 + pred_dir];
    StorablePicture **list = listX[LIST_0 + list_offset + pred_dir];

    vec1_x = i4 * 4 * mv_mul + mv_array[j4][i4][0];
    vec1_y = (img->block_y_aff + j) * 4 * mv_mul + mv_array[j4][i4][1];

    get_block_luma (pl, ref_idx, list, vec1_x, vec1_y, block_size_x, block_size_y, img, tmp_block_l0); 

    if (img->apply_weights)
    {
      if (curr_mb_field && ((active_pps->weighted_pred_flag&&(img->type==P_SLICE|| img->type == SP_SLICE))||
         (active_pps->weighted_bipred_idc==1 && (img->type==B_SLICE))))
      {
        ref_idx_wp >>=1;
      }

      alpha_l0  = img->wp_weight[pred_dir][ref_idx_wp][0];
      wp_offset = img->wp_offset[pred_dir][ref_idx_wp][0];

      weighted_mc_prediction(img, pl, block_size_y, block_size_x, joff, ioff, tmp_block_l0, alpha_l0, wp_offset, img->luma_log2_weight_denom, img->max_imgpel_value);
    }
    else
    {
      mc_prediction(img, pl, block_size_y, block_size_x, joff, ioff, tmp_block_l0); 
    }

    if ((dec_picture->chroma_format_idc != YUV400) && (dec_picture->chroma_format_idc != YUV444) ) 
    {
      imgpel **curUV;
      int uv;

      int ioff_cr = img->mb_cr_size_x == MB_BLOCK_SIZE ? ioff : ioff >> 1;
      int joff_cr = img->mb_cr_size_y == MB_BLOCK_SIZE ? joff : joff >> 1;
      int block_size_x_cr = img->mb_cr_size_x == MB_BLOCK_SIZE ? block_size_x : block_size_x >> 1;
      int block_size_y_cr = img->mb_cr_size_y == MB_BLOCK_SIZE ? block_size_y : block_size_y >> 1;

      vec1_y_cr = vec1_y + ((active_sps->chroma_format_idc == 1)? list[ref_idx]->chroma_vector_adjustment : 0);

      for(uv=0;uv<2;uv++)
      {
        curUV = dec_picture->imgUV[uv]; 

        get_block_chroma (uv, ref_idx, list, vec1_x, vec1_y_cr, block_size_x_cr, block_size_y_cr, img, tmp_block_l0);

        if (img->apply_weights)
        {
          alpha_l0  = img->wp_weight[pred_dir][ref_idx_wp][uv + 1];
          wp_offset = img->wp_offset[pred_dir][ref_idx_wp][uv + 1];

          weighted_mc_prediction(img, uv + 1, block_size_y_cr, block_size_x_cr, joff_cr, ioff_cr, tmp_block_l0, alpha_l0, wp_offset, img->chroma_log2_weight_denom, img->max_imgpel_value_uv);
        }
        else
        {
          mc_prediction(img, uv + 1, block_size_y_cr, block_size_x_cr, joff_cr, ioff_cr, tmp_block_l0);
        }
      }
    }
  }
  else
  {
    //===== BI-PREDICTION =====
    short ***l0_mv_array = dec_picture->mv[LIST_0];
    short ***l1_mv_array = dec_picture->mv[LIST_1];

    short l0_refframe = dec_picture->ref_idx[LIST_0][j4][i4];
    short l1_refframe = dec_picture->ref_idx[LIST_1][j4][i4];
    short l0_ref_idx  = l0_refframe;
    short l1_ref_idx  = l1_refframe;

    vec1_x = i4 * 4 * mv_mul + l0_mv_array[j4][i4][0];
    vec2_x = i4 * 4 * mv_mul + l1_mv_array[j4][i4][0];

    vec1_y = (img->block_y_aff + j) * 4 * mv_mul + l0_mv_array[j4][i4][1];
    vec2_y = (img->block_y_aff + j) * 4 * mv_mul + l1_mv_array[j4][i4][1];

    get_block_luma(pl, l0_refframe, listX[LIST_0 + list_offset], vec1_x, vec1_y, block_size_x, block_size_y, img, tmp_block_l0);  
    get_block_luma(pl, l1_refframe, listX[LIST_1 + list_offset], vec2_x, vec2_y, block_size_x, block_size_y, img, tmp_block_l1);  

    if(img->apply_weights)
    {
      int wt_list_offset = (active_pps->weighted_bipred_idc==2)? list_offset : 0;

      // This code existed in the original. Seems pointless but copying it here for reference and in case temporal direct breaks.
      // if (mv_mode==0 && img->direct_spatial_mv_pred_flag==0 ) l1_ref_idx=0;    
      if (((active_pps->weighted_pred_flag&&(img->type==P_SLICE|| img->type == SP_SLICE))||
        (active_pps->weighted_bipred_idc==1 && (img->type==B_SLICE))) && curr_mb_field)
      {
        l0_ref_idx >>=1;
        l1_ref_idx >>=1;
      }

      alpha_l0  =   img->wbp_weight[LIST_0 + wt_list_offset][l0_ref_idx][l1_ref_idx][0];
      alpha_l1  =   img->wbp_weight[LIST_1 + wt_list_offset][l0_ref_idx][l1_ref_idx][0];
      wp_offset = ((img->wp_offset [LIST_0 + wt_list_offset][l0_ref_idx][0] + img->wp_offset[LIST_1 + wt_list_offset][l1_ref_idx][0] + 1) >>1);

      weighted_bi_prediction(img, pl, block_size_y, block_size_x, joff, ioff, tmp_block_l0, tmp_block_l1, alpha_l0, alpha_l1, wp_offset, (img->luma_log2_weight_denom + 1), img->max_imgpel_value);
    }
    else
    { 
      bi_prediction(img, pl, block_size_y, block_size_x, joff, ioff, tmp_block_l0, tmp_block_l1); 
    }

    if ((dec_picture->chroma_format_idc != YUV400) && (dec_picture->chroma_format_idc != YUV444) ) 
    {
      imgpel **curUV;
      int uv;

      int ioff_cr = img->mb_cr_size_x == MB_BLOCK_SIZE ? ioff : ioff >> 1;
      int joff_cr = img->mb_cr_size_y == MB_BLOCK_SIZE ? joff : joff >> 1;
      int block_size_x_cr = img->mb_cr_size_x == MB_BLOCK_SIZE ? block_size_x : block_size_x >> 1;
      int block_size_y_cr = img->mb_cr_size_y == MB_BLOCK_SIZE ? block_size_y : block_size_y >> 1;

      vec1_y_cr = vec1_y + ((active_sps->chroma_format_idc == 1)? listX[LIST_0 + list_offset][l0_refframe]->chroma_vector_adjustment : 0);
      vec2_y_cr = vec2_y + ((active_sps->chroma_format_idc == 1)? listX[LIST_1 + list_offset][l1_refframe]->chroma_vector_adjustment : 0);

      for(uv=0;uv<2;uv++)
      {
        curUV = dec_picture->imgUV[uv]; 
        get_block_chroma (uv, l0_refframe, listX[LIST_0 + list_offset], vec1_x, vec1_y_cr, block_size_x_cr, block_size_y_cr, img, tmp_block_l0);
        get_block_chroma (uv, l1_refframe, listX[LIST_1 + list_offset], vec2_x, vec2_y_cr, block_size_x_cr, block_size_y_cr, img, tmp_block_l1);

        if(img->apply_weights)
        {
          int wt_list_offset = (active_pps->weighted_bipred_idc==2)? list_offset : 0;

          alpha_l0  =   img->wbp_weight[LIST_0 + wt_list_offset][l0_ref_idx][l1_ref_idx][uv + 1];
          alpha_l1  =   img->wbp_weight[LIST_1 + wt_list_offset][l0_ref_idx][l1_ref_idx][uv + 1];
          wp_offset = ((img->wp_offset [LIST_0 + wt_list_offset][l0_ref_idx][uv + 1] + img->wp_offset[LIST_1 + wt_list_offset][l1_ref_idx][uv + 1] + 1) >>1);

          weighted_bi_prediction(img, uv + 1, block_size_y_cr, block_size_x_cr, joff_cr, ioff_cr, tmp_block_l0, tmp_block_l1, alpha_l0, alpha_l1, wp_offset, (img->chroma_log2_weight_denom + 1), img->max_imgpel_value_uv);
        }
        else
        {
          bi_prediction(img, uv + 1, block_size_y_cr, block_size_x_cr, joff_cr, ioff_cr, tmp_block_l0, tmp_block_l1);
        }
      }
    }      
  }
}

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
国产福利91精品| 欧美一级理论性理论a| 色婷婷国产精品综合在线观看| 成人午夜精品在线| 91黄色免费网站| 91精品欧美综合在线观看最新| 欧美变态凌虐bdsm| 欧美国产视频在线| 一区二区三区精品在线| 视频在线在亚洲| 国产成人自拍高清视频在线免费播放| 国产精品一品视频| 欧美中文字幕一区二区三区亚洲| 欧美日韩亚洲综合在线| 日韩免费一区二区三区在线播放| 久久综合九色综合欧美98 | 在线精品亚洲一区二区不卡| 91精品蜜臀在线一区尤物| 国产欧美日产一区| 婷婷综合另类小说色区| 成人性生交大片免费看在线播放| 欧美亚洲国产一区在线观看网站| 久久婷婷成人综合色| 亚洲图片欧美综合| eeuss鲁一区二区三区| 欧美tickling挠脚心丨vk| 一区二区三区日韩精品视频| 国产91露脸合集magnet| 欧美日韩国产综合久久| 国产精品福利在线播放| 国产精品888| 精品国免费一区二区三区| 亚洲一区在线观看免费观看电影高清| 国产传媒欧美日韩成人| 久久一夜天堂av一区二区三区| 五月婷婷综合网| 欧美视频自拍偷拍| 亚洲在线视频一区| 欧美写真视频网站| 日韩在线a电影| 色综合久久中文字幕综合网| 日本一区二区三区高清不卡| 激情深爱一区二区| 精品噜噜噜噜久久久久久久久试看| 亚洲国产视频直播| 欧美一区欧美二区| 奇米精品一区二区三区四区| 欧美mv日韩mv| 成人精品国产福利| 亚洲欧洲日韩av| 欧美在线观看视频在线| 亚洲国产综合91精品麻豆| 欧美精品三级日韩久久| 蜜臂av日日欢夜夜爽一区| 欧美精品一区二区三区蜜臀 | 波多野结衣在线一区| 综合色天天鬼久久鬼色| 91成人在线免费观看| 日本大胆欧美人术艺术动态| 久久久久久久久久久黄色| 国产a久久麻豆| 一区二区三区在线不卡| 日韩欧美中文字幕精品| 高清视频一区二区| 亚洲成av人综合在线观看| 日韩视频中午一区| av亚洲精华国产精华精| 日韩高清不卡一区二区| 中文字幕乱码久久午夜不卡 | 久久激五月天综合精品| 国产精品福利一区二区三区| 欧美精品在线一区二区三区| 国产在线乱码一区二区三区| 亚洲一级不卡视频| 久久久精品一品道一区| 欧美老女人在线| 成人精品高清在线| 日韩美女视频一区| 日本欧美在线看| 日韩女优视频免费观看| 久草在线在线精品观看| 一区二区成人在线视频| 国产亚洲1区2区3区| 91精品国产一区二区三区| 91浏览器在线视频| 高清shemale亚洲人妖| 日韩av一区二区在线影视| 亚洲婷婷综合久久一本伊一区| 久久久精品免费观看| 国产人妖乱国产精品人妖| 欧美日韩在线观看一区二区| 色av综合在线| 91在线你懂得| 色婷婷一区二区| 91黄色免费版| 欧美日韩国产bt| 欧美日韩免费一区二区三区视频| 成人黄色小视频| 99在线视频精品| 成人一区二区在线观看| 国产高清在线观看免费不卡| 国产91丝袜在线观看| 国产成人a级片| eeuss鲁片一区二区三区| 91视频国产资源| 欧美伊人精品成人久久综合97 | 91精品国产高清一区二区三区 | 中文字幕国产一区| 日韩毛片一二三区| 亚洲成人av资源| 极品瑜伽女神91| jiyouzz国产精品久久| 欧美性一级生活| 日韩精品专区在线影院重磅| xfplay精品久久| 一区二区三区在线视频免费 | 一本久道中文字幕精品亚洲嫩| 91久久久免费一区二区| 精品国产网站在线观看| 中文字幕免费一区| 香蕉加勒比综合久久| 国产麻豆精品久久一二三| 色综合久久久久综合体| 日韩欧美国产wwwww| 亚洲视频一二三| 美女任你摸久久| 91黄色激情网站| 欧美精彩视频一区二区三区| 日韩三级伦理片妻子的秘密按摩| 国产三级精品视频| 亚洲综合激情网| 国产1区2区3区精品美女| 日韩专区欧美专区| 欧美日韩日日夜夜| 午夜精品免费在线| 日韩免费看网站| 久久国产精品区| 国产欧美一区视频| 不卡欧美aaaaa| 亚洲线精品一区二区三区八戒| 在线观看中文字幕不卡| 天天综合色天天综合| 日韩一区二区三区高清免费看看| 久久精品国产亚洲a| 国产欧美1区2区3区| 日本高清视频一区二区| 日韩成人一级片| 欧美激情在线免费观看| 色综合久久天天| 久久成人av少妇免费| 国产精品亲子乱子伦xxxx裸| 色成年激情久久综合| 蜜桃精品视频在线观看| 欧美国产一区二区| 精品免费日韩av| 成人免费高清视频| 亚洲国产欧美在线人成| 国产亚洲污的网站| 欧美日韩一区二区三区四区| 国产麻豆午夜三级精品| 夜夜精品视频一区二区| 欧美成人性福生活免费看| av在线不卡免费看| 麻豆国产欧美日韩综合精品二区| 国产精品九色蝌蚪自拍| 精品久久久久久无| 在线中文字幕一区二区| 国产精品自拍av| 无码av免费一区二区三区试看| 国产精品乱人伦中文| 日韩一级片在线播放| 欧美综合在线视频| 91免费版在线看| 国产91丝袜在线播放九色| 久久激情综合网| 香蕉成人伊视频在线观看| 亚洲码国产岛国毛片在线| 久久精品一区二区三区不卡 | 丰满白嫩尤物一区二区| 美国精品在线观看| 午夜视频在线观看一区二区| 亚洲黄色免费网站| 亚洲欧美激情在线| 亚洲日本在线视频观看| 成人欧美一区二区三区1314| 国产精品久线在线观看| 国产欧美在线观看一区| 亚洲国产高清在线观看视频| 国产日韩精品一区| 久久久www成人免费无遮挡大片| 精品区一区二区| 久久久99精品免费观看不卡| 久久精品日产第一区二区三区高清版| 91精品国产91综合久久蜜臀| 日韩欧美一区二区免费| 久久综合九色综合97_久久久 | 欧美人xxxx| 精品日韩成人av| 国产精品午夜电影| 亚洲精品视频在线观看网站|