static unsigned int tree_merge_probs_impl(unsigned int i, const vp9_tree_index *tree, const vp9_prob *pre_probs, const unsigned int *counts, vp9_prob *probs) { const int l = tree[i]; const unsigned int left_count = (l <= 0) ? counts[-l] : tree_merge_probs_impl(l, tree, pre_probs, counts, probs); const int r = tree[i + 1]; const unsigned int right_count = (r <= 0) ? counts[-r] : tree_merge_probs_impl(r, tree, pre_probs, counts, probs); const unsigned int ct[2] = { left_count, right_count }; probs[i >> 1] = mode_mv_merge_probs(pre_probs[i >> 1], ct); return left_count + right_count; }
void vp9_tree_merge_probs(const vp9_tree_index *tree, const vp9_prob *pre_probs, const unsigned int *counts, unsigned int count_sat, unsigned int max_update_factor, vp9_prob *probs) { tree_merge_probs_impl(0, tree, pre_probs, counts, count_sat, max_update_factor, probs); }
void vp9_tree_merge_probs(const vp9_tree_index *tree, const vp9_prob *pre_probs, const unsigned int *counts, vp9_prob *probs) { tree_merge_probs_impl(0, tree, pre_probs, counts, probs); }