📄 dec_cavlc.c
字号:
t->mb.vec[0][luma_index[8]].refno = 0;
t->mb.vec[0][luma_index[12]].refno = 0;
}
for(i = 0 ; i < 4 ; i ++)
{
switch(t->mb.submb_part[luma_index[4 * i]])
{
case 0: /* P_L0_8x8 */
t->mb.submb_part[luma_index[4 * i]] = MB_8x8;
vec = t->mb.vec[0][luma_index[4 * i]];
T264_predict_mv(t, 0, luma_index[4 * i], 2, &vec);
t->mb.vec[0][luma_index[4 * i]].x = eg_read_se(t->bs) + vec.x;
t->mb.vec[0][luma_index[4 * i]].y = eg_read_se(t->bs) + vec.y;
t->mb.vec[0][i / 2 * 8 + i % 2 * 2 + 1] =
t->mb.vec[0][i / 2 * 8 + i % 2 * 2 + 4] =
t->mb.vec[0][i / 2 * 8 + i % 2 * 2 + 5] = t->mb.vec[0][i / 2 * 8 + i % 2 * 2 + 0];
t->mb.vec_ref[VEC_LUMA + i / 2 * 16 + i % 2 * 2 + 0].vec[0] =
t->mb.vec_ref[VEC_LUMA + i / 2 * 16 + i % 2 * 2 + 1].vec[0] =
t->mb.vec_ref[VEC_LUMA + i / 2 * 16 + i % 2 * 2 + 8].vec[0] =
t->mb.vec_ref[VEC_LUMA + i / 2 * 16 + i % 2 * 2 + 9].vec[0] = t->mb.vec[0][i / 2 * 8 + i % 2 * 2 + 0];
break;
case MB_8x4 - 4: /* P_L0_8x4 */
t->mb.submb_part[luma_index[4 * i]] = MB_8x4;
vec.refno = t->mb.vec[0][luma_index[4 * i]].refno;
T264_predict_mv(t, 0, luma_index[4 * i], 2, &vec);
t->mb.vec[0][luma_index[4 * i]].x = eg_read_se(t->bs) + vec.x;
t->mb.vec[0][luma_index[4 * i]].y = eg_read_se(t->bs) + vec.y;
t->mb.vec_ref[VEC_LUMA + i / 2 * 16 + i % 2 * 2 + 0].vec[0] =
t->mb.vec_ref[VEC_LUMA + i / 2 * 16 + i % 2 * 2 + 1].vec[0] =
t->mb.vec[0][i / 2 * 8 + i % 2 * 2 + 1] = t->mb.vec[0][i / 2 * 8 + i % 2 * 2 + 0];
T264_predict_mv(t, 0, luma_index[4 * i + 2], 2, &vec);
t->mb.vec[0][luma_index[4 * i + 2]].x = eg_read_se(t->bs) + vec.x;
t->mb.vec[0][luma_index[4 * i + 2]].y = eg_read_se(t->bs) + vec.y;
t->mb.vec[0][luma_index[4 * i + 2]].refno = vec.refno;
t->mb.vec_ref[VEC_LUMA + i / 2 * 16 + i % 2 * 2 + 8].vec[0] =
t->mb.vec_ref[VEC_LUMA + i / 2 * 16 + i % 2 * 2 + 9].vec[0] =
t->mb.vec[0][i / 2 * 8 + i % 2 * 2 + 5] = t->mb.vec[0][i / 2 * 8 + i % 2 * 2 + 4];
break;
case MB_4x8 - 4: /* P_L0_4x8 */
t->mb.submb_part[luma_index[4 * i]] = MB_4x8;
vec.refno = t->mb.vec[0][luma_index[4 * i]].refno;
T264_predict_mv(t, 0, luma_index[4 * i], 1, &vec);
t->mb.vec[0][luma_index[4 * i]].x = eg_read_se(t->bs) + vec.x;
t->mb.vec[0][luma_index[4 * i]].y = eg_read_se(t->bs) + vec.y;
t->mb.vec_ref[VEC_LUMA + i / 2 * 16 + i % 2 * 2 + 0].vec[0] =
t->mb.vec_ref[VEC_LUMA + i / 2 * 16 + i % 2 * 2 + 8].vec[0] =
t->mb.vec[0][i / 2 * 8 + i % 2 * 2 + 4] = t->mb.vec[0][i / 2 * 8 + i % 2 * 2 + 0];
T264_predict_mv(t, 0, luma_index[4 * i + 1], 1, &vec);
t->mb.vec[0][luma_index[4 * i + 1]].x = eg_read_se(t->bs) + vec.x;
t->mb.vec[0][luma_index[4 * i + 1]].y = eg_read_se(t->bs) + vec.y;
t->mb.vec[0][luma_index[4 * i + 1]].refno = vec.refno;
t->mb.vec_ref[VEC_LUMA + i / 2 * 16 + i % 2 * 2 + 1].vec[0] =
t->mb.vec_ref[VEC_LUMA + i / 2 * 16 + i % 2 * 2 + 9].vec[0] =
t->mb.vec[0][i / 2 * 8 + i % 2 * 2 + 5] = t->mb.vec[0][i / 2 * 8 + i % 2 * 2 + 1];
break;
case MB_4x4 - 4: /* P_L0_4x4 */
t->mb.submb_part[luma_index[4 * i]] = MB_4x4;
vec = t->mb.vec[0][luma_index[4 * i]];
T264_predict_mv(t, 0, luma_index[4 * i], 1, &vec);
t->mb.vec[0][luma_index[4 * i]].x = eg_read_se(t->bs) + vec.x;
t->mb.vec[0][luma_index[4 * i]].y = eg_read_se(t->bs) + vec.y;
t->mb.vec_ref[VEC_LUMA + i / 2 * 16 + i % 2 * 2 + 0].vec[0] = t->mb.vec[0][luma_index[4 * i]];
T264_predict_mv(t, 0, luma_index[4 * i + 1], 1, &vec);
t->mb.vec[0][luma_index[4 * i + 1]].x = eg_read_se(t->bs) + vec.x;
t->mb.vec[0][luma_index[4 * i + 1]].y = eg_read_se(t->bs) + vec.y;
t->mb.vec[0][luma_index[4 * i + 1]].refno = vec.refno;
t->mb.vec_ref[VEC_LUMA + i / 2 * 16 + i % 2 * 2 + 1].vec[0] = t->mb.vec[0][luma_index[4 * i + 1]];
T264_predict_mv(t, 0, luma_index[4 * i + 2], 1, &vec);
t->mb.vec[0][luma_index[4 * i + 2]].x = eg_read_se(t->bs) + vec.x;
t->mb.vec[0][luma_index[4 * i + 2]].y = eg_read_se(t->bs) + vec.y;
t->mb.vec[0][luma_index[4 * i + 2]].refno = vec.refno;
t->mb.vec_ref[VEC_LUMA + i / 2 * 16 + i % 2 * 2 + 8].vec[0] = t->mb.vec[0][luma_index[4 * i + 2]];
T264_predict_mv(t, 0, luma_index[4 * i + 3], 1, &vec);
t->mb.vec[0][luma_index[4 * i + 3]].x = eg_read_se(t->bs) + vec.x;
t->mb.vec[0][luma_index[4 * i + 3]].y = eg_read_se(t->bs) + vec.y;
t->mb.vec[0][luma_index[4 * i + 3]].refno = vec.refno;
t->mb.vec_ref[VEC_LUMA + i / 2 * 16 + i % 2 * 2 + 9].vec[0] = t->mb.vec[0][luma_index[4 * i + 3]];
break;
}
}
break;
default:
t->mb.mb_part -= 5;
T264dec_mb_read_intra_cavlc(t);
/* save ref */
memset(t->mb.submb_part, -1, sizeof(t->mb.submb_part));
t->mb.mb_part = -1;
for(i = 0 ; i < 2 ; i ++)
{
for(j = 0 ; j < 16 ; j ++)
{
INITINVALIDVEC(t->mb.vec[i][j]);
}
}
break;
}
INITINVALIDVEC(t->mb.vec[1][0]);
copy_nvec(&t->mb.vec[1][0], &t->mb.vec[1][0], 4, 4, 4);
}
else if (t->slice_type == SLICE_B)
{
T264_vector_t vecPred0, vecPred1;
T264_vector_t vec1[2]; //save the mv info of second Partition
vecPred0.refno = 0; //default reference index
vecPred1.refno = 0;
vec1[0].refno = vec1[1].refno = 0;
t->mb.mb_part = mb_type;
t->mb.mb_mode = B_MODE;
t->mb.mb_part2[0] = mb_type;
t->mb.mb_part2[1] = mb_type;
switch (mb_type)
{
case 0: //B_Direct_16x16
mb_get_directMB16x16_mv(t);
t->mb.mb_part = MB_16x16;
t->mb.is_copy = 1;
break;
case 1: //B_L0_16x16
t->mb.mb_part = MB_16x16;
if (t->refl0_num - 1 > 0)
{
vecPred0.refno = eg_read_te(t->bs, t->refl0_num - 1);
}
T264_predict_mv(t, 0, 0, 4, &vecPred0);
t->mb.vec[0][0].x = eg_read_se(t->bs) + vecPred0.x;
t->mb.vec[0][0].y = eg_read_se(t->bs) + vecPred0.y;
t->mb.vec[0][0].refno = vecPred0.refno;
copy_nvec(&t->mb.vec[0][0], &t->mb.vec[0][0], 4, 4, 4);
INITINVALIDVEC(t->mb.vec[1][0]);
copy_nvec(&t->mb.vec[1][0], &t->mb.vec[1][0], 4, 4, 4);
break;
case 2: //B_L1_16x16
t->mb.mb_part = MB_16x16;
if (t->refl1_num - 1 > 0)
{
vecPred1.refno = eg_read_te(t->bs, t->refl1_num - 1);
}
T264_predict_mv(t, 1, 0, 4, &vecPred1);
t->mb.vec[1][0].x = eg_read_se(t->bs) + vecPred1.x;
t->mb.vec[1][0].y = eg_read_se(t->bs) + vecPred1.y;
t->mb.vec[1][0].refno = vecPred1.refno;
copy_nvec(&t->mb.vec[1][0], &t->mb.vec[1][0], 4, 4, 4);
INITINVALIDVEC(t->mb.vec[0][0]);
copy_nvec(&t->mb.vec[0][0], &t->mb.vec[0][0], 4, 4, 4);
break;
case 3: //B_Bi_16x16
t->mb.mb_part = MB_16x16;
if (t->refl0_num - 1 > 0)
{
vecPred0.refno = eg_read_te(t->bs, t->refl0_num - 1);
}
if (t->refl1_num - 1 > 0)
{
vecPred1.refno = eg_read_te(t->bs, t->refl1_num - 1);
}
T264_predict_mv(t, 0, 0, 4, &vecPred0);
T264_predict_mv(t, 1, 0, 4, &vecPred1);
t->mb.vec[0][0].x = eg_read_se(t->bs) + vecPred0.x;
t->mb.vec[0][0].y = eg_read_se(t->bs) + vecPred0.y;
t->mb.vec[0][0].refno = vecPred0.refno;
t->mb.vec[1][0].x = eg_read_se(t->bs) + vecPred1.x;
t->mb.vec[1][0].y = eg_read_se(t->bs) + vecPred1.y;
t->mb.vec[1][0].refno = vecPred1.refno;
copy_nvec(&t->mb.vec[0][0], &t->mb.vec[0][0], 4, 4, 4);
copy_nvec(&t->mb.vec[1][0], &t->mb.vec[1][0], 4, 4, 4);
break;
case 4: //B_L0_L0_16x8
t->mb.mb_part = MB_16x8;
if (t->refl0_num - 1 > 0)
{
vecPred0.refno = eg_read_te(t->bs, t->refl0_num - 1);
vec1[0].refno = eg_read_te(t->bs, t->refl0_num - 1);
}
T264_predict_mv(t, 0, 0, 4, &vecPred0);
t->mb.vec[0][0].x = eg_read_se(t->bs) + vecPred0.x;
t->mb.vec[0][0].y = eg_read_se(t->bs) + vecPred0.y;
t->mb.vec[0][0].refno = vecPred0.refno;
copy_nvec(&t->mb.vec[0][0], &t->mb.vec[0][0], 4, 2, 4);
t->mb.vec_ref[VEC_LUMA + 8].vec[0] = t->mb.vec[0][0];
T264_predict_mv(t, 0, 8, 4, &vec1[0]);
t->mb.vec[0][8].x = eg_read_se(t->bs) + vec1[0].x;
t->mb.vec[0][8].y = eg_read_se(t->bs) + vec1[0].y;
t->mb.vec[0][8].refno = vec1[0].refno;
copy_nvec(&t->mb.vec[0][8], &t->mb.vec[0][8], 4, 2, 4);
INITINVALIDVEC(t->mb.vec[1][0]);
copy_nvec(&t->mb.vec[1][0], &t->mb.vec[1][0], 4, 4, 4);
break;
case 5: //B_L0_L0_8x16
t->mb.mb_part = MB_8x16;
if (t->refl0_num - 1 > 0)
{
vecPred0.refno = eg_read_te(t->bs, t->refl0_num - 1);
vec1[0].refno = eg_read_te(t->bs, t->refl0_num - 1);
}
T264_predict_mv(t, 0, 0, 2, &vecPred0);
t->mb.vec[0][0].x = eg_read_se(t->bs) + vecPred0.x;
t->mb.vec[0][0].y = eg_read_se(t->bs) + vecPred0.y;
t->mb.vec[0][0].refno = vecPred0.refno;
copy_nvec(&t->mb.vec[0][0], &t->mb.vec[0][0], 2, 4, 4);
t->mb.vec_ref[VEC_LUMA + 1].vec[0] = t->mb.vec[0][0];
T264_predict_mv(t, 0, luma_index[4], 2, &vec1[0]);
t->mb.vec[0][luma_index[4]].x = eg_read_se(t->bs) + vec1[0].x;
t->mb.vec[0][luma_index[4]].y = eg_read_se(t->bs) + vec1[0].y;
t->mb.vec[0][luma_index[4]].refno = vec1[0].refno;
copy_nvec(&t->mb.vec[0][2], &t->mb.vec[0][2], 2, 4, 4);
INITINVALIDVEC(t->mb.vec[1][0]);
copy_nvec(&t->mb.vec[1][0], &t->mb.vec[1][0], 4, 4, 4);
break;
case 6: //B_L1_L1_16x8
t->mb.mb_part = MB_16x8;
if (t->refl1_num - 1 > 0)
{
vecPred1.refno = eg_read_te(t->bs, t->refl1_num - 1);
vec1[1].refno = eg_read_te(t->bs, t->refl1_num - 1);
}
T264_predict_mv(t, 1, 0, 4, &vecPred1);
t->mb.vec[1][0].x = eg_read_se(t->bs) + vecPred1.x;
t->mb.vec[1][0].y = eg_read_se(t->bs) + vecPred1.y;
t->mb.vec[1][0].refno = vecPred1.refno;
copy_nvec(&t->mb.vec[1][0], &t->mb.vec[1][0], 4, 2, 4);
t->mb.vec_ref[VEC_LUMA + 8].vec[1] = t->mb.vec[1][0];
T264_predict_mv(t, 1, 8, 4, &vec1[1]);
t->mb.vec[1][8].x = eg_read_se(t->bs) + vec1[1].x;
t->mb.vec[1][8].y = eg_read_se(t->bs) + vec1[1].y;
t->mb.vec[1][8].refno = vec1[1].refno;
copy_nvec(&t->mb.vec[1][8], &t->mb.vec[1][8], 4, 2, 4);
INITINVALIDVEC(t->mb.vec[0][0]);
copy_nvec(&t->mb.vec[0][0], &t->mb.vec[0][0], 4, 4, 4);
break;
case 7: //B_L1_L1_8x16
t->mb.mb_part = MB_8x16;
if (t->refl1_num - 1 > 0)
{
vecPred1.refno = eg_read_te(t->bs, t->refl1_num - 1);
vec1[1].refno = eg_read_te(t->bs, t->refl1_num - 1);
}
T264_predict_mv(t, 1, 0, 2, &vecPred1);
t->mb.vec[1][0].x = eg_read_se(t->bs) + vecPred1.x;
t->mb.vec[1][0].y = eg_read_se(t->bs) + vecPred1.y;
t->mb.vec[1][0].refno = vecPred1.refno;
copy_nvec(&t->mb.vec[1][0], &t->mb.vec[1][0], 2, 4, 4);
t->mb.vec_ref[VEC_LUMA + 1].vec[1] = t->mb.vec[1][0];
T264_predict_mv(t, 1, luma_index[4], 2, &vec1[1]);
t->mb.vec[1][luma_index[4]].x = eg_read_se(t->bs) + vec1[1].x;
t->mb.vec[1][luma_index[4]].y = eg_read_se(t->bs) + vec1[1].y;
t->mb.vec[1][luma_index[4]].refno = vec1[1].refno;
copy_nvec(&t->mb.vec[1][2], &t->mb.vec[1][2], 2, 4, 4);
INITINVALIDVEC(t->mb.vec[0][0]);
copy_nvec(&t->mb.vec[0][0], &t->mb.vec[0][0], 4, 4, 4);
break;
case 8://B_L0_L1_16x8
t->mb.mb_part = MB_16x8;
if (t->refl0_num - 1 > 0)
{
vecPred0.refno = eg_read_te(t->bs, t->refl0_num - 1);
}
if (t->refl1_num - 1 > 0)
{
vecPred1.refno = eg_read_te(t->bs, t->refl1_num - 1);
}
T264_predict_mv(t, 0, 0, 4, &vecPred0);
t->mb.vec[0][0].x = eg_read_se(t->bs) + vecPred0.x;
t->mb.vec[0][0].y = eg_read_se(t->bs) + vecPred0.y;
t->mb.vec[0][0].refno = vecPred0.refno;
copy_nvec(&t->mb.vec[0][0], &t->mb.vec[0][0], 4, 2, 4);
INITINVALIDVEC(t->mb.vec[0][8]);
copy_nvec(&t->mb.vec[0][8], &t->mb.vec[0][8], 4, 2, 4);
INITINVALIDVEC(t->mb.vec_ref[VEC_LUMA + 8].vec[1]);
INITINVALIDVEC(t->mb.vec[1][0]);
copy_nvec(&t->mb.vec[1][0], &t->mb.vec[1][0], 4, 2, 4);
T264_predict_mv(t, 1, 8, 4, &vecPred1);
t->mb.vec[1][8].x = eg_read_se(t->bs) + vecPred1.x;
t->mb.vec[1][8].y = eg_read_se(t->bs) + vecPred1.y;
t->mb.vec[1][8].refno = vecPred1.refno;
copy_nvec(&t->mb.vec[1][8], &t->mb.vec[1][8], 4, 2, 4);
break;
case 9: //B_L0_L1_8x16
t->mb.mb_part = MB_8x16;
if (t->refl0_num - 1 > 0)
{
vecPred0.refno = eg_read_te(t->bs, t->refl0_num - 1);
}
if (t->refl1_num - 1 > 0)
{
vecPred1.refno = eg_read_te(t->bs, t->refl1_num - 1);
}
T264_predict_mv(t, 0, 0, 2, &vecPred0);
t->mb.vec[0][0].x = eg_read_se(t->bs) + vecPred0.x;
t->mb.vec[0][0].y = eg_read_se(t->bs) + vecPred0.y;
t->mb.vec[0][0].refno = vecPred0.refno;
copy_nvec(&t->mb.vec[0][0], &t->mb.vec[0][0], 2, 4, 4);
INITINVALIDVEC(t->mb.vec[0][2]);
copy_nvec(&t->mb.vec[0][2], &t->mb.vec[0][2], 2, 4, 4);
INITINVALIDVEC(t->mb.vec[1][0]);
copy_nvec(&t->mb.vec[1][0], &t->mb.vec[1][0], 2, 4, 4);
INITINVALIDVEC(t->mb.vec_ref[VEC_LUMA + 1].vec[1]);
T264_predict_mv(t, 1, luma_index[4], 2, &vecPred1);
t->mb.vec[1][luma_index[4]].x = eg_read_se(t->bs) + vecPred1.x;
t->mb.vec[1][luma_index[4]].y = eg_read_se(t->bs) + vecPred1.y;
t->mb.vec[1][luma_index[4]].refno = vecPred1.refno;
copy_nvec(&t->mb.vec[1][2], &t->mb.vec[1][2], 2, 4, 4);
break;
case 10: //B_L1_L0_16x8:
t->mb.mb_part = MB_16x8;
if (t->refl0_num - 1 > 0)
{
vec1[0].refno = eg_read_te(t->bs, t->refl0_num - 1);
}
if (t->refl1_num - 1 > 0)
{
vecPred1.refno = eg_read_te(t->bs, t->refl1_num - 1);
}
INITINVALIDVEC(t->mb.vec[0][0]);
copy_nvec(&t->mb.vec[0][0], &t->mb.vec[0][0], 4, 2, 4);
INITINVALIDVEC(t->mb.vec_ref[VEC_LUMA + 8].vec[0]);
T264_predict_mv(t, 0, 8, 4, &vec1[0]);
t->mb.vec[0][8].x = eg_read_se(t->bs) + vec1[0].x;
t->mb.vec[0][8].y = eg_read_se(t->bs) + vec1[0].y;
t->mb.vec[0][8].refno = vecPred1.refno;
copy_nvec(&t->mb.vec[0][8], &t->mb.vec[0][8], 4, 2, 4);
T264_predict_mv(t, 1, 0, 4, &vecPred1);
t->mb.vec[1][0].x = eg_read_se(t->bs) + vecPred1.x;
t->mb.vec[1][0].y = eg_read_se(t->bs) + vecPred1.y;
t->mb.vec[1][0].refno = vecPred1.refno;
copy_nvec(&t->mb.vec[1][0], &t->mb.vec[1][0], 4, 2, 4);
INITINVALIDVEC(t->mb.vec[1][8]);
copy_nvec(&t->mb.vec[1][8], &t->mb.vec[1][8], 4, 2, 4);
break;
case 11://B_L1_L0_8x16
t->mb.mb_part = MB_8x16;
if (t->refl0_num - 1 > 0)
{
vec1[0].refno = eg_read_te(t->bs, t->refl0_num - 1);
}
if (t->refl1_num - 1 > 0)
{
vecPred1.refno = eg_read_te(t->bs, t->refl1_num - 1);
}
INITINVALIDVEC(t->mb.vec[0][0]);
copy_nvec(&t->mb.vec[0][0], &t->mb.vec[0][0], 2, 4, 4);
INITINVALIDVEC(t->mb.vec_ref[VEC_LUMA + 1].vec[0]);
T264_predict_mv(t, 0, luma_index[4], 2, &vec1[0]);
t->mb.vec[0][luma_index[4]].x = eg_read_se(t->bs) + vec1[0].x;
t->mb.vec[0][luma_index[4]].y = eg_read_se(t->bs) + vec1[0].y;
t->mb.vec[0][luma_index[4]].refno = vec1[0].refno;
copy_nvec(&t->mb.vec[0][2], &t->mb.vec[0][2], 2, 4, 4);
T264_predict_mv(t, 1, 0, 2, &vecPred1);
t->mb.vec[1][0].x = eg_read_se(t->bs) + vecPred1.x;
t->mb.vec[1][0].y = eg_read_se(t->bs) + vecPred1.y;
t->mb.vec[1][0].refno = vecPred1.refno;
copy_nvec(&t->mb.vec[1][0], &t->mb.vec[1][0], 2, 4, 4);
INITINVALIDVEC(t->mb.vec[1][2]);
copy_nvec(&t->mb.vec[1][2], &t->mb.vec[1][2], 2, 4, 4);
break;
case 12: //B_L0_Bi_16x8
t->mb.mb_part = MB_16x8;
if (t->refl0_num - 1 > 0)
{
vecPred0.refno = eg_read_te(t->bs, t->refl0_num - 1);
vec1[0].refno = eg_read_te(t->bs, t->refl0_num - 1);
}
if (t->refl1_num - 1 > 0)
{
vecPred1.refno = eg_read_te(t->bs, t->refl1_num - 1);
}
T264_predict_mv(t, 0, 0, 4, &vecPred0);
t->mb.vec[0][0].x = eg_read_se(t->bs) + vecPred0.x;
t->mb.vec[0][0].y = eg_read_se(t->bs) + vecPred0.y;
t->mb.vec[0][0].refno = vecPred0.refno;
copy_nvec(&t->mb.vec[0][0], &t->mb.vec[0][0], 4, 2, 4);
t->mb.vec_ref[VEC_LUMA + 8].vec[0] = t->mb.vec[0][0];
T264_predict_mv(t, 0, 8, 4, &vec1[0]);
t->mb.vec[0][8].x = eg_read_se(t->bs) + vec1[0].x;
t->mb.vec[0][8].y = eg_read_se(t->bs) + vec1[0].y;
t->mb.vec[0][8].refno = vec1[0].refno;
copy_nvec(&t->mb.vec[0][8], &t->mb.vec[0][8], 4, 2, 4);
INITINVALIDVEC(t->mb.vec[1][0]);
copy_nvec(&t->mb.vec[1][0], &t->mb.vec[1][0], 4, 2, 4);
INITINVALIDVEC(t->mb.vec_ref[VEC_LUMA + 8].vec[1]);
T264_predict_mv(t, 1, 8, 4, &vecPred1);
t->mb.vec[1][8].x = eg_read_se(t->bs) + vecPred1.x;
t->mb.vec[1][8].y = eg_read_se(t->bs) + vecPred1.y;
t->mb.vec[1][8].refno = vecPred1.refno;
copy_nvec(&t->mb.vec[1][8], &t->mb.vec[1][8], 4, 2, 4);
break;
case 13://B_L0_Bi_8x16
t->mb.mb_part = MB_8x16;
if (t->refl0_num - 1 > 0)
{
vecPred0.refno = eg_read_te(t->bs, t->refl0_num - 1);
vec1[0].refno = eg_read_te(t->bs, t->refl0_num - 1);
}
if (t->refl1_num - 1 > 0)
{
vec1[1].refno = eg_read_te(t->bs, t->refl1_num - 1);
}
T264_predict_mv(t, 0, 0, 2, &vecPred0);
t->mb.vec[0][0].x = eg_read_se(t->bs) + vecPred0.x;
t->mb.vec[0][0].y = eg_read_se(t->bs) + vecPred0.y;
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -