Simplify coding power-of-two distributions.
authorTimothy B. Terriberry <tterribe@xiph.org>
Sun, 3 Apr 2016 14:26:20 +0000 (07:26 -0700)
committerTimothy B. Terriberry <tterribe@xiph.org>
Mon, 4 Apr 2016 13:27:11 +0000 (06:27 -0700)
commit39debe0465c41bed5c2c1654d9f73831dfb241e2
tree27879b567e9625c6eb41b7d0e3083cbe5a9a3f90
parentb7e9ab0f8c72fcdcddf61b8040e2194bca8603a9
Simplify coding power-of-two distributions.

When encoding a probability distribution whose frequency counts sum
 to a power of two, we can use a more traditional partition
 function without requiring any divisions (though we do require
 some 16x16->32 multiplies).
This should have substantially lower overhead in these cases.
This does break compatibility between the Q15 and non-Q15 versions
 of these functions, but we do not actually require this for
 anything (all of the Q15 and dyadic functions remain compatible
 with each other and all of the non-dyadic functions remain
 compatible with each other).

Results on ntt-short-1:
           RATE (%)  DSNR (dB)
      PSNR -0.04686  0.00140
   PSNRHVS -0.04323  0.00204
      SSIM -0.06528  0.00148
  FASTSSIM -0.03908  0.00105

Results on subset1:
           RATE (%)  DSNR (dB)
      PSNR -0.59113  0.02429
   PSNRHVS -0.16622  0.01116
      SSIM -0.59816  0.02052
  FASTSSIM -0.46032  0.01470

Extra ntt-short-1 results requested by jmspeex:

          LOW (%)  MEDIUM (%) HIGH (%)
    PSNR -0.104396  0.033221 -0.007531
 PSNRHVS -0.101554  0.007621 -0.024936
    SSIM -0.147774 -0.016904  0.019413
FASTSSIM -0.072774 -0.148200 -0.035158

Extra subset1 results requested by jmspeex:
          LOW (%)  MEDIUM (%) HIGH (%)
    PSNR NaN  0.192461 -0.419350
 PSNRHVS NaN  0.195388 -0.241006
    SSIM NaN -0.016675 -0.433450
FASTSSIM NaN -0.018038 -0.337764
src/entdec.c
src/entenc.c
src/tests/ectest.c