diff options
author | Alex Converse <aconverse@google.com> | 2015-11-03 15:38:54 -0800 |
---|---|---|
committer | Alex Converse <aconverse@google.com> | 2015-11-03 15:40:44 -0800 |
commit | 246e0eaa71b01e7d619f85e7c39bd3e837dab90e (patch) | |
tree | 2f423e5137f513b328a2ae9ce18620eccb179e1c /vp9 | |
parent | 255bcf869707fc0b4ccc2cbdf6ef2fc05dd09ecb (diff) | |
download | libvpx-246e0eaa71b01e7d619f85e7c39bd3e837dab90e.tar libvpx-246e0eaa71b01e7d619f85e7c39bd3e837dab90e.tar.gz libvpx-246e0eaa71b01e7d619f85e7c39bd3e837dab90e.tar.bz2 libvpx-246e0eaa71b01e7d619f85e7c39bd3e837dab90e.zip |
Deduplicate some high bit depth tables
Change-Id: I6977f7d155cc1e81ae2393933893caac6770821f
Diffstat (limited to 'vp9')
-rw-r--r-- | vp9/common/vp9_entropy.c | 14 | ||||
-rw-r--r-- | vp9/decoder/vp9_detokenize.c | 81 | ||||
-rw-r--r-- | vp9/encoder/vp9_tokenize.c | 48 |
3 files changed, 42 insertions, 101 deletions
diff --git a/vp9/common/vp9_entropy.c b/vp9/common/vp9_entropy.c index 1c8158187..fc022093c 100644 --- a/vp9/common/vp9_entropy.c +++ b/vp9/common/vp9_entropy.c @@ -36,20 +36,6 @@ const vpx_prob vp9_cat6_prob[] = { 254, 254, 254, 252, 249, 243, 230, 196, 177, 153, 140, 133, 130, 129 }; #if CONFIG_VP9_HIGHBITDEPTH -const vpx_prob vp9_cat1_prob_high10[] = { 159 }; -const vpx_prob vp9_cat2_prob_high10[] = { 165, 145 }; -const vpx_prob vp9_cat3_prob_high10[] = { 173, 148, 140 }; -const vpx_prob vp9_cat4_prob_high10[] = { 176, 155, 140, 135 }; -const vpx_prob vp9_cat5_prob_high10[] = { 180, 157, 141, 134, 130 }; -const vpx_prob vp9_cat6_prob_high10[] = { - 255, 255, 254, 254, 254, 252, 249, 243, - 230, 196, 177, 153, 140, 133, 130, 129 -}; -const vpx_prob vp9_cat1_prob_high12[] = { 159 }; -const vpx_prob vp9_cat2_prob_high12[] = { 165, 145 }; -const vpx_prob vp9_cat3_prob_high12[] = { 173, 148, 140 }; -const vpx_prob vp9_cat4_prob_high12[] = { 176, 155, 140, 135 }; -const vpx_prob vp9_cat5_prob_high12[] = { 180, 157, 141, 134, 130 }; const vpx_prob vp9_cat6_prob_high12[] = { 255, 255, 255, 255, 254, 254, 254, 252, 249, 243, 230, 196, 177, 153, 140, 133, 130, 129 diff --git a/vp9/decoder/vp9_detokenize.c b/vp9/decoder/vp9_detokenize.c index 591236530..073cbae08 100644 --- a/vp9/decoder/vp9_detokenize.c +++ b/vp9/decoder/vp9_detokenize.c @@ -65,52 +65,24 @@ static int decode_coefs(const MACROBLOCKD *xd, const int dq_shift = (tx_size == TX_32X32); int v, token; int16_t dqv = dq[0]; - const uint8_t *cat1_prob; - const uint8_t *cat2_prob; - const uint8_t *cat3_prob; - const uint8_t *cat4_prob; - const uint8_t *cat5_prob; - const uint8_t *cat6_prob; + const uint8_t *const cat6_prob = +#if CONFIG_VP9_HIGHBITDEPTH + (xd->bd == VPX_BITS_12) ? vp9_cat6_prob_high12 : + (xd->bd == VPX_BITS_10) ? vp9_cat6_prob_high12 + 2 : +#endif // CONFIG_VP9_HIGHBITDEPTH + vp9_cat6_prob; + const int cat6_bits = +#if CONFIG_VP9_HIGHBITDEPTH + (xd->bd == VPX_BITS_12) ? 18 : + (xd->bd == VPX_BITS_10) ? 16 : +#endif // CONFIG_VP9_HIGHBITDEPTH + 14; if (counts) { coef_counts = counts->coef[tx_size][type][ref]; eob_branch_count = counts->eob_branch[tx_size][type][ref]; } -#if CONFIG_VP9_HIGHBITDEPTH - if (xd->bd > VPX_BITS_8) { - if (xd->bd == VPX_BITS_10) { - cat1_prob = vp9_cat1_prob_high10; - cat2_prob = vp9_cat2_prob_high10; - cat3_prob = vp9_cat3_prob_high10; - cat4_prob = vp9_cat4_prob_high10; - cat5_prob = vp9_cat5_prob_high10; - cat6_prob = vp9_cat6_prob_high10; - } else { - cat1_prob = vp9_cat1_prob_high12; - cat2_prob = vp9_cat2_prob_high12; - cat3_prob = vp9_cat3_prob_high12; - cat4_prob = vp9_cat4_prob_high12; - cat5_prob = vp9_cat5_prob_high12; - cat6_prob = vp9_cat6_prob_high12; - } - } else { - cat1_prob = vp9_cat1_prob; - cat2_prob = vp9_cat2_prob; - cat3_prob = vp9_cat3_prob; - cat4_prob = vp9_cat4_prob; - cat5_prob = vp9_cat5_prob; - cat6_prob = vp9_cat6_prob; - } -#else - cat1_prob = vp9_cat1_prob; - cat2_prob = vp9_cat2_prob; - cat3_prob = vp9_cat3_prob; - cat4_prob = vp9_cat4_prob; - cat5_prob = vp9_cat5_prob; - cat6_prob = vp9_cat6_prob; -#endif - while (c < max_eob) { int val = -1; band = *band_translate++; @@ -149,39 +121,22 @@ static int decode_coefs(const MACROBLOCKD *xd, val = token; break; case CATEGORY1_TOKEN: - val = CAT1_MIN_VAL + read_coeff(cat1_prob, 1, r); + val = CAT1_MIN_VAL + read_coeff(vp9_cat1_prob, 1, r); break; case CATEGORY2_TOKEN: - val = CAT2_MIN_VAL + read_coeff(cat2_prob, 2, r); + val = CAT2_MIN_VAL + read_coeff(vp9_cat2_prob, 2, r); break; case CATEGORY3_TOKEN: - val = CAT3_MIN_VAL + read_coeff(cat3_prob, 3, r); + val = CAT3_MIN_VAL + read_coeff(vp9_cat3_prob, 3, r); break; case CATEGORY4_TOKEN: - val = CAT4_MIN_VAL + read_coeff(cat4_prob, 4, r); + val = CAT4_MIN_VAL + read_coeff(vp9_cat4_prob, 4, r); break; case CATEGORY5_TOKEN: - val = CAT5_MIN_VAL + read_coeff(cat5_prob, 5, r); + val = CAT5_MIN_VAL + read_coeff(vp9_cat5_prob, 5, r); break; case CATEGORY6_TOKEN: -#if CONFIG_VP9_HIGHBITDEPTH - switch (xd->bd) { - case VPX_BITS_8: - val = CAT6_MIN_VAL + read_coeff(cat6_prob, 14, r); - break; - case VPX_BITS_10: - val = CAT6_MIN_VAL + read_coeff(cat6_prob, 16, r); - break; - case VPX_BITS_12: - val = CAT6_MIN_VAL + read_coeff(cat6_prob, 18, r); - break; - default: - assert(0); - return -1; - } -#else - val = CAT6_MIN_VAL + read_coeff(cat6_prob, 14, r); -#endif + val = CAT6_MIN_VAL + read_coeff(cat6_prob, cat6_bits, r); break; } } diff --git a/vp9/encoder/vp9_tokenize.c b/vp9/encoder/vp9_tokenize.c index 6076e2a61..010903a69 100644 --- a/vp9/encoder/vp9_tokenize.c +++ b/vp9/encoder/vp9_tokenize.c @@ -375,32 +375,32 @@ const vp9_extra_bit vp9_extra_bits[ENTROPY_TOKENS] = { #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 - {vp9_cat1_prob_high10, 1, CAT1_MIN_VAL, cat1_cost}, // CAT1 - {vp9_cat2_prob_high10, 2, CAT2_MIN_VAL, cat2_cost}, // CAT2 - {vp9_cat3_prob_high10, 3, CAT3_MIN_VAL, cat3_cost}, // CAT3 - {vp9_cat4_prob_high10, 4, CAT4_MIN_VAL, cat4_cost}, // CAT4 - {vp9_cat5_prob_high10, 5, CAT5_MIN_VAL, cat5_cost}, // CAT5 - {vp9_cat6_prob_high10, 16, CAT6_MIN_VAL, 0}, // CAT6 - {0, 0, 0, zero_cost} // EOB + {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 + {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 + {vp9_cat4_prob, 4, CAT4_MIN_VAL, cat4_cost}, // CAT4 + {vp9_cat5_prob, 5, CAT5_MIN_VAL, cat5_cost}, // CAT5 + {vp9_cat6_prob_high12 + 2, 16, CAT6_MIN_VAL, 0}, // CAT6 + {0, 0, 0, zero_cost} // EOB }; 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 - {vp9_cat1_prob_high12, 1, CAT1_MIN_VAL, cat1_cost}, // CAT1 - {vp9_cat2_prob_high12, 2, CAT2_MIN_VAL, cat2_cost}, // CAT2 - {vp9_cat3_prob_high12, 3, CAT3_MIN_VAL, cat3_cost}, // CAT3 - {vp9_cat4_prob_high12, 4, CAT4_MIN_VAL, cat4_cost}, // CAT4 - {vp9_cat5_prob_high12, 5, CAT5_MIN_VAL, cat5_cost}, // CAT5 - {vp9_cat6_prob_high12, 18, CAT6_MIN_VAL, 0}, // CAT6 - {0, 0, 0, zero_cost} // EOB + {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 + {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 + {vp9_cat4_prob, 4, CAT4_MIN_VAL, cat4_cost}, // CAT4 + {vp9_cat5_prob, 5, CAT5_MIN_VAL, cat5_cost}, // CAT5 + {vp9_cat6_prob_high12, 18, CAT6_MIN_VAL, 0}, // CAT6 + {0, 0, 0, zero_cost} // EOB }; #endif |