shithub: libvpx

Download patch

ref: dea6f5217ef405cfd1f11f48edf43c4e2ca95e3d
parent: dcc0c894c4594d66a58ec5f05a6b44e43f504cb5
author: Alex Converse <[email protected]>
date: Fri Jan 15 08:55:29 EST 2016

Deduplicate sign cost for ONE/TWO/THREE/FOUR tokens

Change-Id: I9c383d604dfd240e38b198ac5bf86ddd3456f442

--- a/vp10/encoder/tokenize.c
+++ b/vp10/encoder/tokenize.c
@@ -75,10 +75,7 @@
     14, 14, 16, 16, 18, 18, 20, 20, 22, 22, 24, 24, 26, 26, 0, 0};
 
 static const int16_t zero_cost[] = {0};
-static const int16_t one_cost[] = {255, 257};
-static const int16_t two_cost[] = {255, 257};
-static const int16_t three_cost[] = {255, 257};
-static const int16_t four_cost[] = {255, 257};
+static const int16_t sign_cost[] = {255, 257};
 static const int16_t cat1_cost[] = {429, 431, 616, 618};
 static const int16_t cat2_cost[] = {624, 626, 727, 729, 848, 850, 951, 953};
 static const int16_t cat3_cost[] = {
@@ -386,11 +383,11 @@
 #endif
 
 const vp10_extra_bit vp10_extra_bits[ENTROPY_TOKENS] = {
-  {0, 0, 0, 0, zero_cost},                             // ZERO_TOKEN
-  {0, 0, 0, 1, one_cost},                              // ONE_TOKEN
-  {0, 0, 0, 2, two_cost},                              // TWO_TOKEN
-  {0, 0, 0, 3, three_cost},                            // THREE_TOKEN
-  {0, 0, 0, 4, four_cost},                             // FOUR_TOKEN
+  {0, 0, 0, 0, zero_cost},                              // ZERO_TOKEN
+  {0, 0, 0, 1, sign_cost},                              // ONE_TOKEN
+  {0, 0, 0, 2, sign_cost},                              // TWO_TOKEN
+  {0, 0, 0, 3, sign_cost},                              // THREE_TOKEN
+  {0, 0, 0, 4, sign_cost},                              // FOUR_TOKEN
   {cat1, vp10_cat1_prob, 1,  CAT1_MIN_VAL, cat1_cost},  // CATEGORY1_TOKEN
   {cat2, vp10_cat2_prob, 2,  CAT2_MIN_VAL, cat2_cost},  // CATEGORY2_TOKEN
   {cat3, vp10_cat3_prob, 3,  CAT3_MIN_VAL, cat3_cost},  // CATEGORY3_TOKEN
@@ -397,16 +394,16 @@
   {cat4, vp10_cat4_prob, 4,  CAT4_MIN_VAL, cat4_cost},  // CATEGORY4_TOKEN
   {cat5, vp10_cat5_prob, 5,  CAT5_MIN_VAL, cat5_cost},  // CATEGORY5_TOKEN
   {cat6, vp10_cat6_prob, 14, CAT6_MIN_VAL, 0},          // CATEGORY6_TOKEN
-  {0, 0, 0, 0, zero_cost}                              // EOB_TOKEN
+  {0, 0, 0, 0, zero_cost}                               // EOB_TOKEN
 };
 
 #if CONFIG_VP9_HIGHBITDEPTH
 const vp10_extra_bit vp10_extra_bits_high10[ENTROPY_TOKENS] = {
-  {0, 0, 0, 0, zero_cost},                                           // ZERO
-  {0, 0, 0, 1, one_cost},                                            // ONE
-  {0, 0, 0, 2, two_cost},                                            // TWO
-  {0, 0, 0, 3, three_cost},                                          // THREE
-  {0, 0, 0, 4, four_cost},                                           // FOUR
+  {0, 0, 0, 0, zero_cost},                                            // ZERO
+  {0, 0, 0, 1, sign_cost},                                            // ONE
+  {0, 0, 0, 2, sign_cost},                                            // TWO
+  {0, 0, 0, 3, sign_cost},                                            // THREE
+  {0, 0, 0, 4, sign_cost},                                            // FOUR
   {cat1_high10, vp10_cat1_prob_high10, 1,  CAT1_MIN_VAL, cat1_cost},  // CAT1
   {cat2_high10, vp10_cat2_prob_high10, 2,  CAT2_MIN_VAL, cat2_cost},  // CAT2
   {cat3_high10, vp10_cat3_prob_high10, 3,  CAT3_MIN_VAL, cat3_cost},  // CAT3
@@ -413,14 +410,14 @@
   {cat4_high10, vp10_cat4_prob_high10, 4,  CAT4_MIN_VAL, cat4_cost},  // CAT4
   {cat5_high10, vp10_cat5_prob_high10, 5,  CAT5_MIN_VAL, cat5_cost},  // CAT5
   {cat6_high10, vp10_cat6_prob_high10, 16, CAT6_MIN_VAL, 0},          // CAT6
-  {0, 0, 0, 0, zero_cost}                                            // EOB
+  {0, 0, 0, 0, zero_cost}                                             // EOB
 };
 const vp10_extra_bit vp10_extra_bits_high12[ENTROPY_TOKENS] = {
-  {0, 0, 0, 0, zero_cost},                                           // ZERO
-  {0, 0, 0, 1, one_cost},                                            // ONE
-  {0, 0, 0, 2, two_cost},                                            // TWO
-  {0, 0, 0, 3, three_cost},                                          // THREE
-  {0, 0, 0, 4, four_cost},                                           // FOUR
+  {0, 0, 0, 0, zero_cost},                                            // ZERO
+  {0, 0, 0, 1, sign_cost},                                            // ONE
+  {0, 0, 0, 2, sign_cost},                                            // TWO
+  {0, 0, 0, 3, sign_cost},                                            // THREE
+  {0, 0, 0, 4, sign_cost},                                            // FOUR
   {cat1_high12, vp10_cat1_prob_high12, 1,  CAT1_MIN_VAL, cat1_cost},  // CAT1
   {cat2_high12, vp10_cat2_prob_high12, 2,  CAT2_MIN_VAL, cat2_cost},  // CAT2
   {cat3_high12, vp10_cat3_prob_high12, 3,  CAT3_MIN_VAL, cat3_cost},  // CAT3
@@ -427,7 +424,7 @@
   {cat4_high12, vp10_cat4_prob_high12, 4,  CAT4_MIN_VAL, cat4_cost},  // CAT4
   {cat5_high12, vp10_cat5_prob_high12, 5,  CAT5_MIN_VAL, cat5_cost},  // CAT5
   {cat6_high12, vp10_cat6_prob_high12, 18, CAT6_MIN_VAL, 0},          // CAT6
-  {0, 0, 0, 0, zero_cost}                                            // EOB
+  {0, 0, 0, 0, zero_cost}                                             // EOB
 };
 #endif
 
--- a/vp9/encoder/vp9_tokenize.c
+++ b/vp9/encoder/vp9_tokenize.c
@@ -67,10 +67,7 @@
 };
 
 static const int16_t zero_cost[] = {0};
-static const int16_t one_cost[] = {255, 257};
-static const int16_t two_cost[] = {255, 257};
-static const int16_t three_cost[] = {255, 257};
-static const int16_t four_cost[] = {255, 257};
+static const int16_t sign_cost[] = {255, 257};
 static const int16_t cat1_cost[] = {429, 431, 616, 618};
 static const int16_t cat2_cost[] = {624, 626, 727, 729, 848, 850, 951, 953};
 static const int16_t cat3_cost[] = {
@@ -360,10 +357,10 @@
 
 const vp9_extra_bit vp9_extra_bits[ENTROPY_TOKENS] = {
   {0, 0, 0, zero_cost},                          // ZERO_TOKEN
-  {0, 0, 1, one_cost},                           // ONE_TOKEN
-  {0, 0, 2, two_cost},                           // TWO_TOKEN
-  {0, 0, 3, three_cost},                         // THREE_TOKEN
-  {0, 0, 4, four_cost},                          // FOUR_TOKEN
+  {0, 0, 1, sign_cost},                          // ONE_TOKEN
+  {0, 0, 2, sign_cost},                          // TWO_TOKEN
+  {0, 0, 3, sign_cost},                          // THREE_TOKEN
+  {0, 0, 4, sign_cost},                          // FOUR_TOKEN
   {vp9_cat1_prob, 1,  CAT1_MIN_VAL, cat1_cost},  // CATEGORY1_TOKEN
   {vp9_cat2_prob, 2,  CAT2_MIN_VAL, cat2_cost},  // CATEGORY2_TOKEN
   {vp9_cat3_prob, 3,  CAT3_MIN_VAL, cat3_cost},  // CATEGORY3_TOKEN
@@ -376,10 +373,10 @@
 #if CONFIG_VP9_HIGHBITDEPTH
 const vp9_extra_bit vp9_extra_bits_high10[ENTROPY_TOKENS] = {
   {0, 0, 0, zero_cost},                             // ZERO
-  {0, 0, 1, one_cost},                              // ONE
-  {0, 0, 2, two_cost},                              // TWO
-  {0, 0, 3, three_cost},                            // THREE
-  {0, 0, 4, four_cost},                             // FOUR
+  {0, 0, 1, sign_cost},                             // ONE
+  {0, 0, 2, sign_cost},                             // TWO
+  {0, 0, 3, sign_cost},                             // THREE
+  {0, 0, 4, sign_cost},                             // FOUR
   {vp9_cat1_prob, 1,  CAT1_MIN_VAL, cat1_cost},     // CAT1
   {vp9_cat2_prob, 2,  CAT2_MIN_VAL, cat2_cost},     // CAT2
   {vp9_cat3_prob, 3,  CAT3_MIN_VAL, cat3_cost},     // CAT3
@@ -390,10 +387,10 @@
 };
 const vp9_extra_bit vp9_extra_bits_high12[ENTROPY_TOKENS] = {
   {0, 0, 0, zero_cost},                          // ZERO
-  {0, 0, 1, one_cost},                           // ONE
-  {0, 0, 2, two_cost},                           // TWO
-  {0, 0, 3, three_cost},                         // THREE
-  {0, 0, 4, four_cost},                          // FOUR
+  {0, 0, 1, sign_cost},                          // ONE
+  {0, 0, 2, sign_cost},                          // TWO
+  {0, 0, 3, sign_cost},                          // THREE
+  {0, 0, 4, sign_cost},                          // FOUR
   {vp9_cat1_prob, 1,  CAT1_MIN_VAL, cat1_cost},  // CAT1
   {vp9_cat2_prob, 2,  CAT2_MIN_VAL, cat2_cost},  // CAT2
   {vp9_cat3_prob, 3,  CAT3_MIN_VAL, cat3_cost},  // CAT3