Enable tx_skip for inter blocks

Enable tx_skip for inter blocks whose q-index is smaller than 64.

tx_skip experiment alone:
derflr: +0.233% (was +0.038%)

all experiments:
derflr: +5.98% (was +5.94%)

Change-Id: I35245a476ff7039fec8468a92a6aa63feaf74831
This commit is contained in:
hui su 2015-01-30 11:28:12 -08:00
parent 1ae3989558
commit 2118f66a91
4 changed files with 30 additions and 4 deletions

View File

@ -23,7 +23,7 @@ extern "C" {
#define QINDEX_RANGE (MAXQ - MINQ + 1)
#define QINDEX_BITS 8
#if CONFIG_TX_SKIP
#define TX_SKIP_Q_THRESH_INTER 0
#define TX_SKIP_Q_THRESH_INTER 64
#define TX_SKIP_Q_THRESH_INTRA 255
#define TX_SKIP_SHIFT_THRESH 0
#endif // CONFIG_TX_SKIP

View File

@ -1020,8 +1020,13 @@ static void read_inter_frame_mode_info(VP9_COMMON *const cm,
int q_idx = vp9_get_qindex(&cm->seg, mbmi->segment_id, cm->base_qindex);
int try_tx_skip = inter_block ? q_idx <= TX_SKIP_Q_THRESH_INTER :
q_idx <= TX_SKIP_Q_THRESH_INTRA;
#if CONFIG_COPY_MODE
if (mbmi->copy_mode != NOREF)
try_tx_skip = 0;
#endif // CONFIG_COPY_MODE
#if CONFIG_SUPERTX
if (try_tx_skip) {
if (try_tx_skip && !supertx_enabled) {
#else
if (try_tx_skip && (!mbmi->skip || !inter_block)) {
#endif // CONFIG_SUPERTX

View File

@ -478,8 +478,15 @@ static void pack_inter_mode_mvs(VP9_COMP *cpi, const MODE_INFO *mi,
int q_idx = vp9_get_qindex(seg, segment_id, cm->base_qindex);
int try_tx_skip = is_inter ? q_idx <= TX_SKIP_Q_THRESH_INTER :
q_idx <= TX_SKIP_Q_THRESH_INTRA;
#if CONFIG_COPY_MODE
if (mbmi->copy_mode != NOREF) {
try_tx_skip = 0;
}
#endif // CONFIG_COPY_MODE
#if CONFIG_SUPERTX
if (try_tx_skip) {
if (try_tx_skip && !supertx_enabled) {
#else
if (try_tx_skip && (!skip || !is_inter)) {
#endif // CONFIG_SUPERTX

View File

@ -1090,7 +1090,11 @@ static void update_supertx_param(VP9_COMP *cpi, PICK_MODE_CONTEXT *ctx,
ctx->skip = x->skip;
#if CONFIG_EXT_TX
ctx->mic.mbmi.ext_txfrm = best_tx;
#endif
#endif // CONFIG_EXT_TX
#if CONFIG_TX_SKIP
ctx->mic.mbmi.tx_skip[0] = 0;
ctx->mic.mbmi.tx_skip[1] = 0;
#endif // CONFIG_EXT_TX
}
static void update_supertx_param_sb(VP9_COMP *cpi, int mi_row, int mi_col,
@ -4833,6 +4837,11 @@ static void encode_superblock(VP9_COMP *cpi, TOKENEXTRA **t, int output_enabled,
int q_idx = vp9_get_qindex(&cm->seg, mbmi->segment_id, cm->base_qindex);
int try_tx_skip = is_inter_block(mbmi) ? q_idx <= TX_SKIP_Q_THRESH_INTER :
q_idx <= TX_SKIP_Q_THRESH_INTRA;
#if CONFIG_COPY_MODE
if (mbmi->copy_mode != NOREF)
try_tx_skip = 0;
#endif // CONFIG_COPY_MODE
#if CONFIG_SUPERTX
if (try_tx_skip) {
#else
@ -5303,6 +5312,11 @@ static void rd_supertx_sb(VP9_COMP *cpi, const TileInfo *const tile,
*best_tx = NORM;
#endif
#if CONFIG_TX_SKIP
xd->mi[0].mbmi.tx_skip[0] = 0;
xd->mi[0].mbmi.tx_skip[1] = 0;
#endif
// chroma
skippable_uv = 1;
rate_uv = 0;