diff options
Diffstat (limited to 'vp10/common/entropymode.c')
-rw-r--r-- | vp10/common/entropymode.c | 37 |
1 files changed, 37 insertions, 0 deletions
diff --git a/vp10/common/entropymode.c b/vp10/common/entropymode.c index 2bb292a6b..78f3650f8 100644 --- a/vp10/common/entropymode.c +++ b/vp10/common/entropymode.c @@ -326,6 +326,26 @@ static const struct segmentation_probs default_seg_probs = { }; #endif +const vpx_tree_index vp10_ext_tx_tree[TREE_SIZE(TX_TYPES)] = { + -DCT_DCT, 2, + -ADST_ADST, 4, + -ADST_DCT, -DCT_ADST +}; + +static const vpx_prob default_intra_ext_tx_prob[EXT_TX_SIZES] + [TX_TYPES][TX_TYPES - 1] = { + {{240, 85, 128}, {4, 1, 248}, {4, 1, 8}, {4, 248, 128}}, + {{244, 85, 128}, {8, 2, 248}, {8, 2, 8}, {8, 248, 128}}, + {{248, 85, 128}, {16, 4, 248}, {16, 4, 8}, {16, 248, 128}}, +}; + +static const vpx_prob default_inter_ext_tx_prob[EXT_TX_SIZES] + [TX_TYPES - 1] = { + {160, 85, 128}, + {176, 85, 128}, + {192, 85, 128}, +}; + static void init_mode_probs(FRAME_CONTEXT *fc) { vp10_copy(fc->uv_mode_prob, default_uv_probs); vp10_copy(fc->y_mode_prob, default_if_y_probs); @@ -342,6 +362,8 @@ static void init_mode_probs(FRAME_CONTEXT *fc) { vp10_copy(fc->seg.tree_probs, default_seg_probs.tree_probs); vp10_copy(fc->seg.pred_probs, default_seg_probs.pred_probs); #endif + vp10_copy(fc->intra_ext_tx_prob, default_intra_ext_tx_prob); + vp10_copy(fc->inter_ext_tx_prob, default_inter_ext_tx_prob); } const vpx_tree_index vp10_switchable_interp_tree @@ -431,6 +453,21 @@ void vp10_adapt_intra_frame_probs(VP10_COMMON *cm) { fc->skip_probs[i] = mode_mv_merge_probs( pre_fc->skip_probs[i], counts->skip[i]); + for (i = TX_4X4; i < EXT_TX_SIZES; ++i) { + int j; + for (j = 0; j < TX_TYPES; ++j) + vpx_tree_merge_probs(vp10_ext_tx_tree, + pre_fc->intra_ext_tx_prob[i][j], + counts->intra_ext_tx[i][j], + fc->intra_ext_tx_prob[i][j]); + } + for (i = TX_4X4; i < EXT_TX_SIZES; ++i) { + vpx_tree_merge_probs(vp10_ext_tx_tree, + pre_fc->inter_ext_tx_prob[i], + counts->inter_ext_tx[i], + fc->inter_ext_tx_prob[i]); + } + #if CONFIG_MISC_FIXES if (cm->seg.temporal_update) { for (i = 0; i < PREDICTION_PROBS; i++) |