diff options
author | Alex Converse <aconverse@google.com> | 2015-10-08 16:01:42 -0700 |
---|---|---|
committer | Alex Converse <aconverse@google.com> | 2015-10-26 11:29:46 -0700 |
commit | 7f56cb29787b187c8cb1b778918ca3b80184c804 (patch) | |
tree | 780a14951fa300dd6ef2aca92664e06f1306e740 /vp9/common/vp9_entropy.c | |
parent | 65dd056e413bbc42b99e9930d4914e22a0ec23cb (diff) | |
download | libvpx-7f56cb29787b187c8cb1b778918ca3b80184c804.tar libvpx-7f56cb29787b187c8cb1b778918ca3b80184c804.tar.gz libvpx-7f56cb29787b187c8cb1b778918ca3b80184c804.tar.bz2 libvpx-7f56cb29787b187c8cb1b778918ca3b80184c804.zip |
Replace the zero handling in extend_to_full_distribution.
The old workaround "p = 0 ? 0 : p -1" is misleading.
?: happens before =
assigning back to p truncates to one byte.
Therefore it is equivalent to (p - 1) & 0xFF, but the check just exists
to work around a first pass bug, so let's make the work around more
clear.
https://code.google.com/p/webm/issues/detail?id=1089
Change-Id: Ia6dcc8922e1acbac0eeca23a4d564a355c489572
Diffstat (limited to 'vp9/common/vp9_entropy.c')
-rw-r--r-- | vp9/common/vp9_entropy.c | 9 |
1 files changed, 5 insertions, 4 deletions
diff --git a/vp9/common/vp9_entropy.c b/vp9/common/vp9_entropy.c index 579857bc9..719e542ce 100644 --- a/vp9/common/vp9_entropy.c +++ b/vp9/common/vp9_entropy.c @@ -403,7 +403,6 @@ const vpx_prob vp9_pareto8_full[COEFF_PROB_MODELS][MODEL_NODES] = { {255, 241, 243, 255, 236, 255, 252, 254}, {255, 243, 245, 255, 237, 255, 252, 254}, {255, 246, 247, 255, 239, 255, 253, 255}, - {255, 246, 247, 255, 239, 255, 253, 255}, }; static const vp9_coeff_probs_model default_coef_probs_4x4[PLANE_TYPES] = { @@ -743,14 +742,16 @@ static const vp9_coeff_probs_model default_coef_probs_32x32[PLANE_TYPES] = { }; static void extend_to_full_distribution(vpx_prob *probs, vpx_prob p) { - memcpy(probs, vp9_pareto8_full[p = 0 ? 0 : p - 1], - MODEL_NODES * sizeof(vpx_prob)); + memcpy(probs, vp9_pareto8_full[p - 1], MODEL_NODES * sizeof(vpx_prob)); } void vp9_model_to_full_probs(const vpx_prob *model, vpx_prob *full) { if (full != model) memcpy(full, model, sizeof(vpx_prob) * UNCONSTRAINED_NODES); - extend_to_full_distribution(&full[UNCONSTRAINED_NODES], model[PIVOT_NODE]); + // TODO(aconverse): model[PIVOT_NODE] should never be zero. + // https://code.google.com/p/webm/issues/detail?id=1089 + if (model[PIVOT_NODE] != 0) + extend_to_full_distribution(&full[UNCONSTRAINED_NODES], model[PIVOT_NODE]); } void vp9_default_coef_probs(VP9_COMMON *cm) { |