Commit dd28aed8 authored by Nathan E. Egge's avatar Nathan E. Egge Committed by Nathan Egge

Use uv_mode_cdf with CONFIG_EC_MULTISYMBOL.

Change-Id: I0cacd4e8cdd07458b36bbdd56e4f005327854b34
parent 10ba2bed
...@@ -1772,13 +1772,11 @@ static void init_mode_probs(FRAME_CONTEXT *fc) { ...@@ -1772,13 +1772,11 @@ static void init_mode_probs(FRAME_CONTEXT *fc) {
#if CONFIG_LOOP_RESTORATION #if CONFIG_LOOP_RESTORATION
av1_copy(fc->switchable_restore_prob, default_switchable_restore_prob); av1_copy(fc->switchable_restore_prob, default_switchable_restore_prob);
#endif // CONFIG_LOOP_RESTORATION #endif // CONFIG_LOOP_RESTORATION
#if CONFIG_DAALA_EC
av1_tree_to_cdf_1D(av1_intra_mode_tree, fc->uv_mode_prob, fc->uv_mode_cdf,
INTRA_MODES);
#endif
#if CONFIG_EC_MULTISYMBOL #if CONFIG_EC_MULTISYMBOL
av1_tree_to_cdf_1D(av1_intra_mode_tree, fc->y_mode_prob, fc->y_mode_cdf, av1_tree_to_cdf_1D(av1_intra_mode_tree, fc->y_mode_prob, fc->y_mode_cdf,
BLOCK_SIZE_GROUPS); BLOCK_SIZE_GROUPS);
av1_tree_to_cdf_1D(av1_intra_mode_tree, fc->uv_mode_prob, fc->uv_mode_cdf,
INTRA_MODES);
av1_tree_to_cdf_1D(av1_switchable_interp_tree, fc->switchable_interp_prob, av1_tree_to_cdf_1D(av1_switchable_interp_tree, fc->switchable_interp_prob,
fc->switchable_interp_cdf, SWITCHABLE_FILTER_CONTEXTS); fc->switchable_interp_cdf, SWITCHABLE_FILTER_CONTEXTS);
av1_tree_to_cdf_1D(av1_partition_tree, fc->partition_prob, fc->partition_cdf, av1_tree_to_cdf_1D(av1_partition_tree, fc->partition_prob, fc->partition_cdf,
...@@ -1812,6 +1810,10 @@ void av1_set_mode_cdfs(struct AV1Common *cm) { ...@@ -1812,6 +1810,10 @@ void av1_set_mode_cdfs(struct AV1Common *cm) {
cm->fc->seg.tree_cdf); cm->fc->seg.tree_cdf);
} }
for (i = 0; i < INTRA_MODES; ++i)
av1_tree_to_cdf(av1_intra_mode_tree, fc->uv_mode_prob[i],
fc->uv_mode_cdf[i]);
for (i = 0; i < PARTITION_CONTEXTS; ++i) for (i = 0; i < PARTITION_CONTEXTS; ++i)
av1_tree_to_cdf(av1_partition_tree, fc->partition_prob[i], av1_tree_to_cdf(av1_partition_tree, fc->partition_prob[i],
fc->partition_cdf[i]); fc->partition_cdf[i]);
...@@ -1842,12 +1844,6 @@ void av1_set_mode_cdfs(struct AV1Common *cm) { ...@@ -1842,12 +1844,6 @@ void av1_set_mode_cdfs(struct AV1Common *cm) {
av1_tree_to_cdf(av1_ext_tx_tree, fc->inter_ext_tx_prob[i], av1_tree_to_cdf(av1_ext_tx_tree, fc->inter_ext_tx_prob[i],
fc->inter_ext_tx_cdf[i]); fc->inter_ext_tx_cdf[i]);
#endif #endif
#if CONFIG_DAALA_EC
for (i = 0; i < INTRA_MODES; ++i)
av1_tree_to_cdf(av1_intra_mode_tree, fc->uv_mode_prob[i],
fc->uv_mode_cdf[i]);
#endif
} }
#endif #endif
......
...@@ -165,11 +165,9 @@ typedef struct frame_contexts { ...@@ -165,11 +165,9 @@ typedef struct frame_contexts {
#if CONFIG_LOOP_RESTORATION #if CONFIG_LOOP_RESTORATION
aom_prob switchable_restore_prob[RESTORE_SWITCHABLE_TYPES - 1]; aom_prob switchable_restore_prob[RESTORE_SWITCHABLE_TYPES - 1];
#endif // CONFIG_LOOP_RESTORATION #endif // CONFIG_LOOP_RESTORATION
#if CONFIG_DAALA_EC
aom_cdf_prob uv_mode_cdf[INTRA_MODES][INTRA_MODES];
#endif
#if CONFIG_EC_MULTISYMBOL #if CONFIG_EC_MULTISYMBOL
aom_cdf_prob y_mode_cdf[BLOCK_SIZE_GROUPS][INTRA_MODES]; aom_cdf_prob y_mode_cdf[BLOCK_SIZE_GROUPS][INTRA_MODES];
aom_cdf_prob uv_mode_cdf[INTRA_MODES][INTRA_MODES];
aom_cdf_prob partition_cdf[PARTITION_CONTEXTS][PARTITION_TYPES]; aom_cdf_prob partition_cdf[PARTITION_CONTEXTS][PARTITION_TYPES];
aom_cdf_prob switchable_interp_cdf[SWITCHABLE_FILTER_CONTEXTS] aom_cdf_prob switchable_interp_cdf[SWITCHABLE_FILTER_CONTEXTS]
[SWITCHABLE_FILTERS]; [SWITCHABLE_FILTERS];
......
...@@ -47,7 +47,7 @@ static INLINE int read_uniform(aom_reader *r, int n) { ...@@ -47,7 +47,7 @@ static INLINE int read_uniform(aom_reader *r, int n) {
} }
#endif // CONFIG_EXT_INTRA || CONFIG_FILTER_INTRA || CONFIG_PALETTE #endif // CONFIG_EXT_INTRA || CONFIG_FILTER_INTRA || CONFIG_PALETTE
#if CONFIG_DAALA_EC #if CONFIG_EC_MULTISYMBOL
static PREDICTION_MODE read_intra_mode(aom_reader *r, aom_cdf_prob *cdf) { static PREDICTION_MODE read_intra_mode(aom_reader *r, aom_cdf_prob *cdf) {
return (PREDICTION_MODE) return (PREDICTION_MODE)
av1_intra_mode_inv[aom_read_symbol(r, cdf, INTRA_MODES, ACCT_STR)]; av1_intra_mode_inv[aom_read_symbol(r, cdf, INTRA_MODES, ACCT_STR)];
...@@ -57,12 +57,6 @@ static PREDICTION_MODE read_intra_mode(aom_reader *r, const aom_prob *p) { ...@@ -57,12 +57,6 @@ static PREDICTION_MODE read_intra_mode(aom_reader *r, const aom_prob *p) {
return (PREDICTION_MODE)aom_read_tree(r, av1_intra_mode_tree, p, ACCT_STR); return (PREDICTION_MODE)aom_read_tree(r, av1_intra_mode_tree, p, ACCT_STR);
} }
#endif #endif
#if CONFIG_EC_MULTISYMBOL
static PREDICTION_MODE read_intra_mode_cdf(aom_reader *r, aom_cdf_prob *cdf) {
return (PREDICTION_MODE)
av1_intra_mode_inv[aom_read_symbol(r, cdf, INTRA_MODES, ACCT_STR)];
}
#endif
#if CONFIG_DELTA_Q #if CONFIG_DELTA_Q
static int read_delta_qindex(AV1_COMMON *cm, MACROBLOCKD *xd, aom_reader *r, static int read_delta_qindex(AV1_COMMON *cm, MACROBLOCKD *xd, aom_reader *r,
...@@ -104,7 +98,7 @@ static PREDICTION_MODE read_intra_mode_y(AV1_COMMON *cm, MACROBLOCKD *xd, ...@@ -104,7 +98,7 @@ static PREDICTION_MODE read_intra_mode_y(AV1_COMMON *cm, MACROBLOCKD *xd,
aom_reader *r, int size_group) { aom_reader *r, int size_group) {
const PREDICTION_MODE y_mode = const PREDICTION_MODE y_mode =
#if CONFIG_EC_MULTISYMBOL #if CONFIG_EC_MULTISYMBOL
read_intra_mode_cdf(r, cm->fc->y_mode_cdf[size_group]); read_intra_mode(r, cm->fc->y_mode_cdf[size_group]);
#else #else
read_intra_mode(r, cm->fc->y_mode_prob[size_group]); read_intra_mode(r, cm->fc->y_mode_prob[size_group]);
#endif #endif
...@@ -117,7 +111,7 @@ static PREDICTION_MODE read_intra_mode_uv(AV1_COMMON *cm, MACROBLOCKD *xd, ...@@ -117,7 +111,7 @@ static PREDICTION_MODE read_intra_mode_uv(AV1_COMMON *cm, MACROBLOCKD *xd,
aom_reader *r, aom_reader *r,
PREDICTION_MODE y_mode) { PREDICTION_MODE y_mode) {
const PREDICTION_MODE uv_mode = const PREDICTION_MODE uv_mode =
#if CONFIG_DAALA_EC #if CONFIG_EC_MULTISYMBOL
read_intra_mode(r, cm->fc->uv_mode_cdf[y_mode]); read_intra_mode(r, cm->fc->uv_mode_cdf[y_mode]);
#else #else
read_intra_mode(r, cm->fc->uv_mode_prob[y_mode]); read_intra_mode(r, cm->fc->uv_mode_prob[y_mode]);
...@@ -813,7 +807,7 @@ static void read_intra_frame_mode_info(AV1_COMMON *const cm, ...@@ -813,7 +807,7 @@ static void read_intra_frame_mode_info(AV1_COMMON *const cm,
(void)i; (void)i;
mbmi->mode = mbmi->mode =
#if CONFIG_EC_MULTISYMBOL #if CONFIG_EC_MULTISYMBOL
read_intra_mode_cdf(r, get_y_mode_cdf(cm, mi, above_mi, left_mi, 0)); read_intra_mode(r, get_y_mode_cdf(cm, mi, above_mi, left_mi, 0));
#else #else
read_intra_mode(r, get_y_mode_probs(cm, mi, above_mi, left_mi, 0)); read_intra_mode(r, get_y_mode_probs(cm, mi, above_mi, left_mi, 0));
#endif #endif
...@@ -823,8 +817,7 @@ static void read_intra_frame_mode_info(AV1_COMMON *const cm, ...@@ -823,8 +817,7 @@ static void read_intra_frame_mode_info(AV1_COMMON *const cm,
for (i = 0; i < 4; ++i) for (i = 0; i < 4; ++i)
mi->bmi[i].as_mode = mi->bmi[i].as_mode =
#if CONFIG_EC_MULTISYMBOL #if CONFIG_EC_MULTISYMBOL
read_intra_mode_cdf(r, read_intra_mode(r, get_y_mode_cdf(cm, mi, above_mi, left_mi, i));
get_y_mode_cdf(cm, mi, above_mi, left_mi, i));
#else #else
read_intra_mode(r, get_y_mode_probs(cm, mi, above_mi, left_mi, i)); read_intra_mode(r, get_y_mode_probs(cm, mi, above_mi, left_mi, i));
#endif #endif
...@@ -833,13 +826,13 @@ static void read_intra_frame_mode_info(AV1_COMMON *const cm, ...@@ -833,13 +826,13 @@ static void read_intra_frame_mode_info(AV1_COMMON *const cm,
case BLOCK_4X8: case BLOCK_4X8:
mi->bmi[0].as_mode = mi->bmi[2].as_mode = mi->bmi[0].as_mode = mi->bmi[2].as_mode =
#if CONFIG_EC_MULTISYMBOL #if CONFIG_EC_MULTISYMBOL
read_intra_mode_cdf(r, get_y_mode_cdf(cm, mi, above_mi, left_mi, 0)); read_intra_mode(r, get_y_mode_cdf(cm, mi, above_mi, left_mi, 0));
#else #else
read_intra_mode(r, get_y_mode_probs(cm, mi, above_mi, left_mi, 0)); read_intra_mode(r, get_y_mode_probs(cm, mi, above_mi, left_mi, 0));
#endif #endif
mi->bmi[1].as_mode = mi->bmi[3].as_mode = mbmi->mode = mi->bmi[1].as_mode = mi->bmi[3].as_mode = mbmi->mode =
#if CONFIG_EC_MULTISYMBOL #if CONFIG_EC_MULTISYMBOL
read_intra_mode_cdf(r, get_y_mode_cdf(cm, mi, above_mi, left_mi, 1)); read_intra_mode(r, get_y_mode_cdf(cm, mi, above_mi, left_mi, 1));
#else #else
read_intra_mode(r, get_y_mode_probs(cm, mi, above_mi, left_mi, 1)); read_intra_mode(r, get_y_mode_probs(cm, mi, above_mi, left_mi, 1));
#endif #endif
...@@ -847,13 +840,13 @@ static void read_intra_frame_mode_info(AV1_COMMON *const cm, ...@@ -847,13 +840,13 @@ static void read_intra_frame_mode_info(AV1_COMMON *const cm,
case BLOCK_8X4: case BLOCK_8X4:
mi->bmi[0].as_mode = mi->bmi[1].as_mode = mi->bmi[0].as_mode = mi->bmi[1].as_mode =
#if CONFIG_EC_MULTISYMBOL #if CONFIG_EC_MULTISYMBOL
read_intra_mode_cdf(r, get_y_mode_cdf(cm, mi, above_mi, left_mi, 0)); read_intra_mode(r, get_y_mode_cdf(cm, mi, above_mi, left_mi, 0));
#else #else
read_intra_mode(r, get_y_mode_probs(cm, mi, above_mi, left_mi, 0)); read_intra_mode(r, get_y_mode_probs(cm, mi, above_mi, left_mi, 0));
#endif #endif
mi->bmi[2].as_mode = mi->bmi[3].as_mode = mbmi->mode = mi->bmi[2].as_mode = mi->bmi[3].as_mode = mbmi->mode =
#if CONFIG_EC_MULTISYMBOL #if CONFIG_EC_MULTISYMBOL
read_intra_mode_cdf(r, get_y_mode_cdf(cm, mi, above_mi, left_mi, 2)); read_intra_mode(r, get_y_mode_cdf(cm, mi, above_mi, left_mi, 2));
#else #else
read_intra_mode(r, get_y_mode_probs(cm, mi, above_mi, left_mi, 2)); read_intra_mode(r, get_y_mode_probs(cm, mi, above_mi, left_mi, 2));
#endif #endif
...@@ -861,7 +854,7 @@ static void read_intra_frame_mode_info(AV1_COMMON *const cm, ...@@ -861,7 +854,7 @@ static void read_intra_frame_mode_info(AV1_COMMON *const cm,
default: default:
mbmi->mode = mbmi->mode =
#if CONFIG_EC_MULTISYMBOL #if CONFIG_EC_MULTISYMBOL
read_intra_mode_cdf(r, get_y_mode_cdf(cm, mi, above_mi, left_mi, 0)); read_intra_mode(r, get_y_mode_cdf(cm, mi, above_mi, left_mi, 0));
#else #else
read_intra_mode(r, get_y_mode_probs(cm, mi, above_mi, left_mi, 0)); read_intra_mode(r, get_y_mode_probs(cm, mi, above_mi, left_mi, 0));
#endif #endif
......
...@@ -1370,7 +1370,7 @@ static void pack_inter_mode_mvs(AV1_COMP *cpi, const MODE_INFO *mi, ...@@ -1370,7 +1370,7 @@ static void pack_inter_mode_mvs(AV1_COMP *cpi, const MODE_INFO *mi,
} }
} }
} }
#if CONFIG_DAALA_EC #if CONFIG_EC_MULTISYMBOL
aom_write_symbol(w, av1_intra_mode_ind[mbmi->uv_mode], aom_write_symbol(w, av1_intra_mode_ind[mbmi->uv_mode],
cm->fc->uv_mode_cdf[mode], INTRA_MODES); cm->fc->uv_mode_cdf[mode], INTRA_MODES);
#else #else
...@@ -1725,7 +1725,7 @@ static void write_mb_modes_kf(AV1_COMMON *cm, const MACROBLOCKD *xd, ...@@ -1725,7 +1725,7 @@ static void write_mb_modes_kf(AV1_COMMON *cm, const MACROBLOCKD *xd,
} }
} }
} }
#if CONFIG_DAALA_EC #if CONFIG_EC_MULTISYMBOL
aom_write_symbol(w, av1_intra_mode_ind[mbmi->uv_mode], aom_write_symbol(w, av1_intra_mode_ind[mbmi->uv_mode],
cm->fc->uv_mode_cdf[mbmi->mode], INTRA_MODES); cm->fc->uv_mode_cdf[mbmi->mode], INTRA_MODES);
#else #else
......
Markdown is supported
0% or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment