diff options
author | Deb Mukherjee <debargha@google.com> | 2013-04-04 12:32:34 -0700 |
---|---|---|
committer | Deb Mukherjee <debargha@google.com> | 2013-04-04 12:40:55 -0700 |
commit | ffc92da4c229a007c2553e95e7bb0b07e863e95e (patch) | |
tree | 02c49eccaf9c09ad85b7e9f67d106875cfdf8a81 | |
parent | a9e94301f78c60ca381d8aec86673404fb14786c (diff) | |
download | libvpx-ffc92da4c229a007c2553e95e7bb0b07e863e95e.tar libvpx-ffc92da4c229a007c2553e95e7bb0b07e863e95e.tar.gz libvpx-ffc92da4c229a007c2553e95e7bb0b07e863e95e.tar.bz2 libvpx-ffc92da4c229a007c2553e95e7bb0b07e863e95e.zip |
Fixing the newbintramodes experiment
Adds back special casing B_PRED mode decoding but protected
within the experimental macro.
Change-Id: If98dc8e56b0ecfb1202540c2b7dfdd070cb81ca0
-rw-r--r-- | vp9/decoder/vp9_decodframe.c | 13 | ||||
-rw-r--r-- | vp9/decoder/vp9_detokenize.c | 10 | ||||
-rw-r--r-- | vp9/decoder/vp9_detokenize.h | 5 |
3 files changed, 26 insertions, 2 deletions
diff --git a/vp9/decoder/vp9_decodframe.c b/vp9/decoder/vp9_decodframe.c index ddc0a52ae..7d71ceba3 100644 --- a/vp9/decoder/vp9_decodframe.c +++ b/vp9/decoder/vp9_decodframe.c @@ -353,7 +353,7 @@ static void decode_8x8(VP9D_COMP *pbi, MACROBLOCKD *xd, static void decode_4x4(VP9D_COMP *pbi, MACROBLOCKD *xd, BOOL_DECODER* const bc) { TX_TYPE tx_type; - int i; + int i = 0; MB_PREDICTION_MODE mode = xd->mode_info_context->mbmi.mode; #if 0 // def DEC_DEBUG if (dec_debug) { @@ -404,6 +404,8 @@ static void decode_4x4(VP9D_COMP *pbi, MACROBLOCKD *xd, #if CONFIG_NEWBINTRAMODES xd->mode_info_context->bmi[i].as_mode.context = b->bmi.as_mode.context = vp9_find_bpred_context(xd, b); + if (!xd->mode_info_context->mbmi.mb_skip_coeff) + vp9_decode_coefs_4x4(pbi, xd, bc, PLANE_TYPE_Y_WITH_DC, i); #endif vp9_intra4x4_predict(xd, b, b_mode, b->predictor); tx_type = get_tx_type_4x4(xd, i); @@ -417,6 +419,10 @@ static void decode_4x4(VP9D_COMP *pbi, MACROBLOCKD *xd, *(b->base_dst) + b->dst, 16, b->dst_stride, xd->eobs[i]); } } +#if CONFIG_NEWBINTRAMODES + if (!xd->mode_info_context->mbmi.mb_skip_coeff) + vp9_decode_mb_tokens_4x4_uv(pbi, xd, bc); +#endif vp9_build_intra_predictors_mbuv(xd); xd->itxm_add_uv_block(xd->qcoeff + 16 * 16, xd->block[16].dequant, @@ -813,7 +819,10 @@ static void decode_mb(VP9D_COMP *pbi, MACROBLOCKD *xd, if (xd->mode_info_context->mbmi.mb_skip_coeff) { vp9_reset_mb_tokens_context(xd); } else if (!bool_error(bc)) { - eobtotal = vp9_decode_mb_tokens(pbi, xd, bc); +#if CONFIG_NEWBINTRAMODES + if (mode != B_PRED) +#endif + eobtotal = vp9_decode_mb_tokens(pbi, xd, bc); } //mode = xd->mode_info_context->mbmi.mode; diff --git a/vp9/decoder/vp9_detokenize.c b/vp9/decoder/vp9_detokenize.c index 9db9d42c1..e55826379 100644 --- a/vp9/decoder/vp9_detokenize.c +++ b/vp9/decoder/vp9_detokenize.c @@ -584,3 +584,13 @@ int vp9_decode_mb_tokens(VP9D_COMP* const dx, return vp9_decode_mb_tokens_4x4(dx, xd, bc); } } + +#if CONFIG_NEWBINTRAMODES +int vp9_decode_coefs_4x4(VP9D_COMP *dx, MACROBLOCKD *xd, + BOOL_DECODER* const bc, + PLANE_TYPE type, int i) { + const int segment_id = xd->mode_info_context->mbmi.segment_id; + const int seg_eob = get_eob(xd, segment_id, 16); + return decode_coefs_4x4(dx, xd, bc, type, i, seg_eob); +} +#endif diff --git a/vp9/decoder/vp9_detokenize.h b/vp9/decoder/vp9_detokenize.h index c9569bf34..97de72b9a 100644 --- a/vp9/decoder/vp9_detokenize.h +++ b/vp9/decoder/vp9_detokenize.h @@ -27,5 +27,10 @@ int vp9_decode_sb64_tokens(VP9D_COMP* const pbi, int vp9_decode_mb_tokens_4x4_uv(VP9D_COMP* const dx, MACROBLOCKD* const xd, BOOL_DECODER* const bc); +#if CONFIG_NEWBINTRAMODES +int vp9_decode_coefs_4x4(VP9D_COMP *dx, MACROBLOCKD *xd, + BOOL_DECODER* const bc, + PLANE_TYPE type, int i); +#endif #endif // VP9_DECODER_VP9_DETOKENIZE_H_ |