Fix conflict b/w tx_skip and copy_mode in lossless mode

Change-Id: Idb12344adda99dddde8d2cd010ffffe6425aca62
This commit is contained in:
punksu 2015-01-02 20:36:06 +08:00
parent 695c4bc321
commit 42dfd9a728

View File

@ -4105,12 +4105,12 @@ void vp9_rd_pick_inter_mode_sb(VP9_COMP *cpi, MACROBLOCK *x,
int64_t distortion2, distortion_y, distortion_uv, this_rd,
ssey, sseuv, total_sse, tx_cache[TX_MODES];
#if CONFIG_EXT_TX
EXT_TX_TYPE tx_type, best_tx_type;
EXT_TX_TYPE tx_type, best_tx_type = NORM;
TX_SIZE best_tx_size;
int rate2_tx, this_skip2_tx;
int64_t distortion2_tx, bestrd_tx = INT64_MAX;
uint8_t tmp_zcoeff_blk[256];
#endif
#endif // CONFIG_EXT_TX
*mbmi = *inter_ref_list[copy_mode - REF0];
mbmi->sb_type = bsize;
@ -4132,11 +4132,14 @@ void vp9_rd_pick_inter_mode_sb(VP9_COMP *cpi, MACROBLOCK *x,
#if CONFIG_EXT_TX
for (tx_type = NORM; tx_type < EXT_TX_TYPES; tx_type++) {
mbmi->ext_txfrm = tx_type;
#endif
#endif // CONFIG_EXT_TX
super_block_yrd(cpi, x, &rate_y, &distortion_y, &skippable_y, &ssey,
bsize, tx_cache, INT64_MAX);
bsize, tx_cache, best_rd);
super_block_uvrd(cpi, x, &rate_uv, &distortion_uv, &skippable_uv, &sseuv,
bsize, INT64_MAX);
bsize, best_rd);
if (rate_y == INT_MAX || rate_uv == INT_MAX)
continue;
rate2 = rate_y + rate_uv;
distortion2 = distortion_y + distortion_uv;
@ -4182,6 +4185,10 @@ void vp9_rd_pick_inter_mode_sb(VP9_COMP *cpi, MACROBLOCK *x,
sizeof(uint8_t) * ctx->num_4x4_blk);
}
}
if (bestrd_tx == INT64_MAX)
continue;
if (best_tx_size < TX_32X32)
mbmi->ext_txfrm = best_tx_type;
else