pvq: add --enable-float-pvq option to configure
authorTristan Matthews <tmatth@videolan.org>
Thu, 17 Mar 2016 14:35:10 +0000 (10:35 -0400)
committerTristan Matthews <tmatth@videolan.org>
Fri, 25 Mar 2016 07:47:50 +0000 (03:47 -0400)
commit8965b9dd24636483799f61f586b8aaee8330f0e7
treeaa638f8285960c357f74497c6ea83eba9d35ebd3
parent9fe543517e0bd70a1a0fbc28e314004735dcf0a5
pvq: add --enable-float-pvq option to configure

This will allow us to revert to earlier, pre-fixed point behaviour for
debugging/comparison purposes.

When enabled, there is a slight change in metrics between this and the
original PVQ float code (e.g. 0ed89290fc6627520187f0378831e7f14cc6719c) on
some clips (see comment before od_pvq_compute_gain() invocation):
ntt-short1:
          LOW (%)  MEDIUM (%) HIGH (%)
    PSNR -0.024708  0.008433  0.001629
 PSNRHVS -0.028322  0.005017  0.013243
    SSIM -0.024769 -0.013816 -0.009093
FASTSSIM -0.048246 -0.064317  0.018761

but no change on subset1. The above metrics are with reverts of all other
(non-PVQ) metrics changing patches since 0ed89, namely:

9fe5435 Fixes uninitialized curr_coding_order from f7499812617
f749981 Add closed-form frame determination code along with verification
b3885ab Alter golden frame spacing calculation
685b54c Alter od_quantizer_to_codedquantizer to find closet match
5c0b0d0 Fix overflow when coding more than 536870912 bits.
91a60fd Fix some additional overflows in the 64x64 DCT.

Actual metrics change (with --enable-float-pvq) between the parent and this
patch, i.e. the current fixed-point PVQ code and the restored float PVQ code:
subset1:
          LOW (%)  MEDIUM (%) HIGH (%)
    PSNR -0.015591 0.010948  0.001300
 PSNRHVS  0.026496 0.048591  0.009870
    SSIM -0.012691 0.023220  0.013913
FASTSSIM  0.104007 0.027649 -0.187406

ntt-short1:
          LOW (%)  MEDIUM (%) HIGH (%)
    PSNR -0.006558  0.036382 -0.014382
 PSNRHVS  0.062005  0.040058 -0.042301
    SSIM  0.039120 -0.004784 -0.021224
FASTSSIM  0.057295  0.030152  0.130065

Finally, no change in metrics when disabled (the default).
configure.ac
src/odintrin.h
src/pvq.c
src/pvq.h
src/pvq_decoder.c
src/pvq_encoder.c