ec_multisymbol: Add defines CDF_PROB_BITS, CDF_PROB_TOP

Change-Id: I6c1717ad82d05ebe22327aec6989af2c0db336e3
diff --git a/aom_dsp/prob.c b/aom_dsp/prob.c
index a98a4bc..7d51dbb 100644
--- a/aom_dsp/prob.c
+++ b/aom_dsp/prob.c
@@ -198,7 +198,7 @@
     nsymbs++;
   }
   /* Compute the probabilities of each symbol in Q15 */
-  tree_node_compute_probs(symb, 0, 32768);
+  tree_node_compute_probs(symb, 0, CDF_PROB_TOP);
   /* Extract the cdf, index, path and length */
   tree_node_extract(symb, 0, 0, cdf, index, path, len);
   /* Convert to CDF */
diff --git a/aom_dsp/prob.h b/aom_dsp/prob.h
index 782e4b3..86ed3d3 100644
--- a/aom_dsp/prob.h
+++ b/aom_dsp/prob.h
@@ -27,6 +27,9 @@
 // TODO(negge): Rename this aom_prob once we remove vpxbool.
 typedef uint16_t aom_cdf_prob;
 
+#define CDF_PROB_BITS 15
+#define CDF_PROB_TOP (1 << CDF_PROB_BITS)
+
 #define MAX_PROB 255
 
 #define aom_prob_half ((aom_prob)128)
@@ -144,7 +147,7 @@
 #if 1
   const int tmp0 = 1 << rate2;
   tmp = tmp0;
-  diff = ((32768 - (nsymbs << rate2)) >> rate) << rate;
+  diff = ((CDF_PROB_TOP - (nsymbs << rate2)) >> rate) << rate;
   // Single loop (faster)
   for (i = 0; i < nsymbs - 1; ++i, tmp += tmp0) {
     tmp += (i == val ? diff : 0);
@@ -155,7 +158,7 @@
     tmp = (i + 1) << rate2;
     cdf[i] -= ((cdf[i] - tmp) >> rate);
   }
-  diff = 32768 - cdf[nsymbs - 1];
+  diff = CDF_PROB_TOP - cdf[nsymbs - 1];
 
   for (i = val; i < nsymbs; ++i) {
     cdf[i] += diff;
diff --git a/av1/common/entropy.c b/av1/common/entropy.c
index a3cc11c..ae7b449 100644
--- a/av1/common/entropy.c
+++ b/av1/common/entropy.c
@@ -4405,11 +4405,14 @@
   assert(pdf_model[2] != 0);
 
   // Do the head (ZERO, ONE, TWO or more)
-  cdf_head[ZERO_TOKEN] = sum = (pdf_model[1] << 7);
-  scale = (1 << 15) - cdf_head[ZERO_TOKEN];
-  p = AOMMAX(1, (scale * 128 * pdf_model[2] + (1 << 14)) >> 15);
-  cdf_head[ONE_TOKEN] = cdf_head[ZERO_TOKEN] + p;
-  cdf_head[TWO_TOKEN] = (1 << 15);
+  cdf_head[ZERO_TOKEN] = sum = (pdf_model[1] << (CDF_PROB_BITS - 8));
+  assert(cdf_head[ZERO_TOKEN] < CDF_PROB_TOP);
+  scale = CDF_PROB_TOP - cdf_head[ZERO_TOKEN];
+  p = ROUND_POWER_OF_TWO(scale * (pdf_model[2] << (CDF_PROB_BITS - 8)),
+                         CDF_PROB_BITS);
+  cdf_head[ONE_TOKEN] = cdf_head[ZERO_TOKEN] + AOMMAX(1, p);
+  assert(cdf_head[ONE_TOKEN] < CDF_PROB_TOP);
+  cdf_head[TWO_TOKEN] = CDF_PROB_TOP;
 
   // Do the tail
   sum = 0;