diff options
author | Ronald S. Bultje <rbultje@google.com> | 2012-10-22 12:54:39 -0700 |
---|---|---|
committer | Gerrit Code Review <gerrit@gerrit.golo.chromium.org> | 2012-10-22 12:54:39 -0700 |
commit | 97096f5fa355a27cd7262bf05f05156e40090c03 (patch) | |
tree | e5f5365e651ea95c64d13255fac114892e904985 /vp8/decoder | |
parent | 7906ed091ab5d16a7fbdc21109a034644aa6b9a3 (diff) | |
parent | f72fdf1c7f443b8b62559279e55b439b0814e58a (diff) | |
download | libvpx-97096f5fa355a27cd7262bf05f05156e40090c03.tar libvpx-97096f5fa355a27cd7262bf05f05156e40090c03.tar.gz libvpx-97096f5fa355a27cd7262bf05f05156e40090c03.tar.bz2 libvpx-97096f5fa355a27cd7262bf05f05156e40090c03.zip |
Merge changes I02e7f64a,Ide954b00,Idc8b5977 into experimental
* changes:
Fix another typo in 4x4-transform-for-i8x8-intra-pred coeff contexts.
8x8 transform support in splitmv.
Use SPLITMV_PARTITIONING instead of a plain integer type.
Diffstat (limited to 'vp8/decoder')
-rw-r--r-- | vp8/decoder/decodemv.c | 11 | ||||
-rw-r--r-- | vp8/decoder/decodframe.c | 20 | ||||
-rw-r--r-- | vp8/decoder/detokenize.c | 3 |
3 files changed, 23 insertions, 11 deletions
diff --git a/vp8/decoder/decodemv.c b/vp8/decoder/decodemv.c index 72ff126f2..064d16426 100644 --- a/vp8/decoder/decodemv.c +++ b/vp8/decoder/decodemv.c @@ -1285,10 +1285,12 @@ static void read_mb_modes_mv(VP8D_COMP *pbi, MODE_INFO *mi, MB_MODE_INFO *mbmi, #if CONFIG_TX_SELECT if (cm->txfm_mode == TX_MODE_SELECT && mbmi->mb_skip_coeff == 0 && ((mbmi->ref_frame == INTRA_FRAME && mbmi->mode <= I8X8_PRED) || - (mbmi->ref_frame != INTRA_FRAME && mbmi->mode != SPLITMV))) { + (mbmi->ref_frame != INTRA_FRAME && !(mbmi->mode == SPLITMV && + mbmi->partitioning == PARTITIONING_4X4)))) { // FIXME(rbultje) code ternary symbol once all experiments are merged mbmi->txfm_size = vp8_read(bc, cm->prob_tx[0]); - if (mbmi->txfm_size != TX_4X4 && mbmi->mode != I8X8_PRED) + if (mbmi->txfm_size != TX_4X4 && mbmi->mode != I8X8_PRED && + mbmi->mode != SPLITMV) mbmi->txfm_size += vp8_read(bc, cm->prob_tx[1]); } else #endif @@ -1297,8 +1299,9 @@ static void read_mb_modes_mv(VP8D_COMP *pbi, MODE_INFO *mi, MB_MODE_INFO *mbmi, (mbmi->ref_frame != INTRA_FRAME && mbmi->mode != SPLITMV))) { mbmi->txfm_size = TX_16X16; } else if (cm->txfm_mode >= ALLOW_8X8 && - ((mbmi->ref_frame == INTRA_FRAME && mbmi->mode != B_PRED) || - (mbmi->ref_frame != INTRA_FRAME && mbmi->mode != SPLITMV))) { + (!(mbmi->ref_frame == INTRA_FRAME && mbmi->mode == B_PRED) && + !(mbmi->ref_frame != INTRA_FRAME && mbmi->mode == SPLITMV && + mbmi->partitioning == PARTITIONING_4X4))) { mbmi->txfm_size = TX_8X8; } else { mbmi->txfm_size = TX_4X4; diff --git a/vp8/decoder/decodframe.c b/vp8/decoder/decodframe.c index cc19985fd..d961c7b2a 100644 --- a/vp8/decoder/decodframe.c +++ b/vp8/decoder/decodframe.c @@ -384,10 +384,16 @@ static void decode_macroblock(VP8D_COMP *pbi, MACROBLOCKD *xd, } } } else if (mode == SPLITMV) { - DEQUANT_INVOKE(&pbi->dequant, idct_add_y_block) - (xd->qcoeff, xd->block[0].dequant, - xd->predictor, xd->dst.y_buffer, - xd->dst.y_stride, xd->eobs); + if (tx_size == TX_8X8) { + vp8_dequant_idct_add_y_block_8x8_c(xd->qcoeff, xd->block[0].dequant, + xd->predictor, xd->dst.y_buffer, + xd->dst.y_stride, xd->eobs, xd); + } else { + DEQUANT_INVOKE(&pbi->dequant, + idct_add_y_block)(xd->qcoeff, xd->block[0].dequant, + xd->predictor, xd->dst.y_buffer, + xd->dst.y_stride, xd->eobs); + } } else { BLOCKD *b = &xd->block[24]; @@ -489,8 +495,10 @@ static void decode_macroblock(VP8D_COMP *pbi, MACROBLOCKD *xd, if (!xd->mode_info_context->mbmi.encoded_as_sb) { #endif if ((tx_size == TX_8X8 && - xd->mode_info_context->mbmi.mode != I8X8_PRED) - || tx_size == TX_16X16) + xd->mode_info_context->mbmi.mode != I8X8_PRED && + xd->mode_info_context->mbmi.mode != SPLITMV) + || tx_size == TX_16X16 + ) DEQUANT_INVOKE(&pbi->dequant, idct_add_uv_block_8x8) // (xd->qcoeff + 16 * 16, xd->block[16].dequant, xd->predictor + 16 * 16, xd->dst.u_buffer, xd->dst.v_buffer, diff --git a/vp8/decoder/detokenize.c b/vp8/decoder/detokenize.c index 0e5e54418..d33c602f0 100644 --- a/vp8/decoder/detokenize.c +++ b/vp8/decoder/detokenize.c @@ -493,7 +493,8 @@ int vp8_decode_mb_tokens_8x8(VP8D_COMP *pbi, MACROBLOCKD *xd, INT16 *qcoeff_ptr = &xd->qcoeff[0]; TX_TYPE tx_type = DCT_DCT; - int bufthred = (xd->mode_info_context->mbmi.mode == I8X8_PRED) ? 16 : 24; + int bufthred = (xd->mode_info_context->mbmi.mode == I8X8_PRED || + xd->mode_info_context->mbmi.mode == SPLITMV) ? 16 : 24; if (xd->mode_info_context->mbmi.mode != B_PRED && xd->mode_info_context->mbmi.mode != SPLITMV && xd->mode_info_context->mbmi.mode != I8X8_PRED) { |