diff options
Diffstat (limited to 'vp9/decoder/vp9_decodemv.c')
-rw-r--r-- | vp9/decoder/vp9_decodemv.c | 53 |
1 files changed, 20 insertions, 33 deletions
diff --git a/vp9/decoder/vp9_decodemv.c b/vp9/decoder/vp9_decodemv.c index 89ecef86c..7ca69d0a5 100644 --- a/vp9/decoder/vp9_decodemv.c +++ b/vp9/decoder/vp9_decodemv.c @@ -21,8 +21,10 @@ #include "vp9/decoder/vp9_decodemv.h" #include "vp9/decoder/vp9_decodframe.h" #include "vp9/decoder/vp9_onyxd_int.h" +#include "vp9/decoder/vp9_dsubexp.h" #include "vp9/decoder/vp9_treereader.h" + #if CONFIG_DEBUG #include <assert.h> #endif @@ -312,8 +314,7 @@ static void read_switchable_interp_probs(FRAME_CONTEXT *fc, vp9_reader *r) { for (j = 0; j < VP9_SWITCHABLE_FILTERS + 1; ++j) for (i = 0; i < VP9_SWITCHABLE_FILTERS - 1; ++i) if (vp9_read(r, VP9_MODE_UPDATE_PROB)) - fc->switchable_interp_prob[j][i] = vp9_read_prob_diff_update(r, - fc->switchable_interp_prob[j][i]); + vp9_diff_update_prob(r, &fc->switchable_interp_prob[j][i]); } static void read_inter_mode_probs(FRAME_CONTEXT *fc, vp9_reader *r) { @@ -321,8 +322,7 @@ static void read_inter_mode_probs(FRAME_CONTEXT *fc, vp9_reader *r) { for (i = 0; i < INTER_MODE_CONTEXTS; ++i) for (j = 0; j < VP9_INTER_MODES - 1; ++j) if (vp9_read(r, VP9_MODE_UPDATE_PROB)) - fc->inter_mode_probs[i][j] = vp9_read_prob_diff_update(r, - fc->inter_mode_probs[i][j]); + vp9_diff_update_prob(r, &fc->inter_mode_probs[i][j]); } static INLINE COMPPREDMODE_TYPE read_comp_pred_mode(vp9_reader *r) { @@ -347,16 +347,14 @@ static void mb_mode_mv_init(VP9D_COMP *pbi, vp9_reader *r) { for (i = 0; i < INTRA_INTER_CONTEXTS; i++) if (vp9_read(r, VP9_MODE_UPDATE_PROB)) - cm->fc.intra_inter_prob[i] = - vp9_read_prob_diff_update(r, cm->fc.intra_inter_prob[i]); + vp9_diff_update_prob(r, &cm->fc.intra_inter_prob[i]); if (cm->allow_comp_inter_inter) { cm->comp_pred_mode = read_comp_pred_mode(r); if (cm->comp_pred_mode == HYBRID_PREDICTION) for (i = 0; i < COMP_INTER_CONTEXTS; i++) if (vp9_read(r, VP9_MODE_UPDATE_PROB)) - cm->fc.comp_inter_prob[i] = - vp9_read_prob_diff_update(r, cm->fc.comp_inter_prob[i]); + vp9_diff_update_prob(r, &cm->fc.comp_inter_prob[i]); } else { cm->comp_pred_mode = SINGLE_PREDICTION_ONLY; } @@ -364,37 +362,27 @@ static void mb_mode_mv_init(VP9D_COMP *pbi, vp9_reader *r) { if (cm->comp_pred_mode != COMP_PREDICTION_ONLY) for (i = 0; i < REF_CONTEXTS; i++) { if (vp9_read(r, VP9_MODE_UPDATE_PROB)) - cm->fc.single_ref_prob[i][0] = - vp9_read_prob_diff_update(r, cm->fc.single_ref_prob[i][0]); + vp9_diff_update_prob(r, &cm->fc.single_ref_prob[i][0]); + if (vp9_read(r, VP9_MODE_UPDATE_PROB)) - cm->fc.single_ref_prob[i][1] = - vp9_read_prob_diff_update(r, cm->fc.single_ref_prob[i][1]); + vp9_diff_update_prob(r, &cm->fc.single_ref_prob[i][1]); } if (cm->comp_pred_mode != SINGLE_PREDICTION_ONLY) for (i = 0; i < REF_CONTEXTS; i++) if (vp9_read(r, VP9_MODE_UPDATE_PROB)) - cm->fc.comp_ref_prob[i] = - vp9_read_prob_diff_update(r, cm->fc.comp_ref_prob[i]); + vp9_diff_update_prob(r, &cm->fc.comp_ref_prob[i]); // VP9_INTRA_MODES - for (j = 0; j < BLOCK_SIZE_GROUPS; j++) { - for (i = 0; i < VP9_INTRA_MODES - 1; ++i) { - if (vp9_read(r, VP9_MODE_UPDATE_PROB)) { - cm->fc.y_mode_prob[j][i] = - vp9_read_prob_diff_update(r, cm->fc.y_mode_prob[j][i]); - } - } - } - for (j = 0; j < NUM_PARTITION_CONTEXTS; ++j) { - for (i = 0; i < PARTITION_TYPES - 1; ++i) { - if (vp9_read(r, VP9_MODE_UPDATE_PROB)) { - cm->fc.partition_prob[INTER_FRAME][j][i] = - vp9_read_prob_diff_update(r, - cm->fc.partition_prob[INTER_FRAME][j][i]); - } - } - } + for (j = 0; j < BLOCK_SIZE_GROUPS; j++) + for (i = 0; i < VP9_INTRA_MODES - 1; ++i) + if (vp9_read(r, VP9_MODE_UPDATE_PROB)) + vp9_diff_update_prob(r, &cm->fc.y_mode_prob[j][i]); + + for (j = 0; j < NUM_PARTITION_CONTEXTS; ++j) + for (i = 0; i < PARTITION_TYPES - 1; ++i) + if (vp9_read(r, VP9_MODE_UPDATE_PROB)) + vp9_diff_update_prob(r, &cm->fc.partition_prob[INTER_FRAME][j][i]); read_mv_probs(r, nmvc, xd->allow_high_precision_mv); } @@ -787,8 +775,7 @@ void vp9_decode_mode_mvs_init(VP9D_COMP* const pbi, vp9_reader *r) { // vpx_memset(cm->fc.mbskip_probs, 0, sizeof(cm->fc.mbskip_probs)); for (k = 0; k < MBSKIP_CONTEXTS; ++k) if (vp9_read(r, VP9_MODE_UPDATE_PROB)) - cm->fc.mbskip_probs[k] = - vp9_read_prob_diff_update(r, cm->fc.mbskip_probs[k]); + vp9_diff_update_prob(r, &cm->fc.mbskip_probs[k]); mb_mode_mv_init(pbi, r); } |