Merge "Properly restore transform block skip flag in RD search" into nextgenv2

This commit is contained in:
Jingning Han
2016-03-03 23:30:58 +00:00
committed by Gerrit Code Review
3 changed files with 21 additions and 2 deletions

View File

@@ -143,6 +143,9 @@ struct macroblock {
uint8_t zcoeff_blk[TX_SIZES][256]; uint8_t zcoeff_blk[TX_SIZES][256];
#if CONFIG_VAR_TX #if CONFIG_VAR_TX
uint8_t blk_skip[MAX_MB_PLANE][256]; uint8_t blk_skip[MAX_MB_PLANE][256];
#if CONFIG_REF_MV
uint8_t blk_skip_drl[MAX_MB_PLANE][256];
#endif
#endif #endif
int skip; int skip;

View File

@@ -3987,6 +3987,9 @@ static void encode_frame_internal(VP10_COMP *cpi) {
vp10_zero(x->skip_txfm); vp10_zero(x->skip_txfm);
#if CONFIG_VAR_TX #if CONFIG_VAR_TX
vp10_zero(x->blk_skip); vp10_zero(x->blk_skip);
#if CONFIG_REF_MV
vp10_zero(x->blk_skip_drl);
#endif
#endif #endif
{ {

View File

@@ -7208,6 +7208,11 @@ void vp10_rd_pick_inter_mode_sb(VP10_COMP *cpi,
rate_y - rate_uv, rate_y - rate_uv,
total_sse); total_sse);
} }
#if CONFIG_VAR_TX
for (i = 0; i < MAX_MB_PLANE; ++i)
memcpy(x->blk_skip_drl[i], x->blk_skip[i],
sizeof(uint8_t) * ctx->num_4x4_blk);
#endif
for (ref_idx = 0; ref_idx < ref_set; ++ref_idx) { for (ref_idx = 0; ref_idx < ref_set; ++ref_idx) {
int64_t tmp_alt_rd = INT64_MAX; int64_t tmp_alt_rd = INT64_MAX;
@@ -7235,8 +7240,6 @@ void vp10_rd_pick_inter_mode_sb(VP10_COMP *cpi,
#else #else
int_mv dummy_single_newmv[MAX_REF_FRAMES] = { { 0 } }; int_mv dummy_single_newmv[MAX_REF_FRAMES] = { { 0 } };
#endif #endif
mbmi->ref_mv_idx = 1 + ref_idx; mbmi->ref_mv_idx = 1 + ref_idx;
frame_mv[NEARMV][ref_frame] = cur_mv; frame_mv[NEARMV][ref_frame] = cur_mv;
@@ -7299,12 +7302,22 @@ void vp10_rd_pick_inter_mode_sb(VP10_COMP *cpi,
this_rd = tmp_alt_rd; this_rd = tmp_alt_rd;
tmp_ref_rd = tmp_alt_rd; tmp_ref_rd = tmp_alt_rd;
backup_mbmi = *mbmi; backup_mbmi = *mbmi;
#if CONFIG_VAR_TX
for (i = 0; i < MAX_MB_PLANE; ++i)
memcpy(x->blk_skip_drl[i], x->blk_skip[i],
sizeof(uint8_t) * ctx->num_4x4_blk);
#endif
} else { } else {
*mbmi = backup_mbmi; *mbmi = backup_mbmi;
} }
} }
frame_mv[NEARMV][ref_frame] = backup_mv; frame_mv[NEARMV][ref_frame] = backup_mv;
#if CONFIG_VAR_TX
for (i = 0; i < MAX_MB_PLANE; ++i)
memcpy(x->blk_skip[i], x->blk_skip_drl[i],
sizeof(uint8_t) * ctx->num_4x4_blk);
#endif
} }
#endif // CONFIG_REF_MV #endif // CONFIG_REF_MV