NEW_TOKENSET: do not code impossible values.
In the last position, No-EOB values and zero are all not
possible.
AWCY, objective-1-fast: -0.08% all metrics
AWCY, screen content:
PSNR YCbCr: -0.42% -0.42% -0.43%
PSNRHVS: -0.40%
SSIM: -0.41%
MSSSIM: -0.41%
CIEDE2000: -0.42%
Change-Id: Iad012abfd2a48a2c9ff27512f92b27235a5a8a4a
diff --git a/av1/encoder/bitstream.c b/av1/encoder/bitstream.c
index 00ae1fd..c5c656c 100644
--- a/av1/encoder/bitstream.c
+++ b/av1/encoder/bitstream.c
@@ -839,9 +839,13 @@
p++;
continue;
}
- int comb_symb = 2 * AOMMIN(token, TWO_TOKEN) - p->is_eob + 1;
-
- aom_write_symbol(w, comb_symb, *p->head_cdf, 6);
+ if (p->eob_val == LAST_EOB) {
+ // Just code a flag indicating whether the value is >1 or 1.
+ aom_write_bit(w, token != ONE_TOKEN);
+ } else {
+ int comb_symb = 2 * AOMMIN(token, TWO_TOKEN) - p->eob_val + 1;
+ aom_write_symbol(w, comb_symb, *p->head_cdf, 6);
+ }
if (token > ONE_TOKEN) {
aom_write_symbol(w, token - TWO_TOKEN, *p->tail_cdf,
CATEGORY6_TOKEN + 1 - 2);