This commit adds simp-mv-pred experiment. The experiment is to work on
top of ref-mv experiment to save memory bandwidth and reduce the size
of line buffer needed in ref-mv experiment.
When compared to ref-mv, this experiment showed:
low-delay BDR gain: 0.03%
High-delay BDR gain: 0.01%
memory/memory bandwidth saving: 40%
local memory/gate count saving: 20%
Change-Id: Ic4006e041fc58ede411da83d0d730c464ebe1749
This commit fixes the top-right reference block location for block
sizes above 8x8. It improves the coding performance of ref-mv:
lowres 0.08%
midres 0.15%
Thanks to jiafeng@ for finding this issue.
Change-Id: I70750fc7b18bf0126d3e07abc1b63ca5a160193e
This prevents a crash if the upsample_refs speed feature is
changed as part of set_size_dependent_vars, when the recode
loop is enabled.
Change-Id: I645e389bfe961879dd2001439a34fde2993868d9
This CL will cause
0.122% PSNR drop on lowres dataset
0.059% PSNR drop on midres dataset
However, it will facilitate hardware implementation.
Change-Id: I0a0713acacbfd571509a721337711c021915dd3c
The EC_ADAPT experiment cannot work unless EC_MULTISYMBOL is also
enabled.
This patch replaces all individual checks with a centralized check in
both the bitreader.h and bitwriter.h.
Change-Id: I418852d95c5012cc074ed65cd24997e08bc2aadd
The new ec_multisymbol experiment supersedes the rans experiment and is
used for multisymbol features that can be backed by either daala_ec or
rans.
This experiment is automatically enabled by ec_adapt and will try to
enable daala_ec or ans (in that order).
Change-Id: Ie75b4002b7a9d7f5f7b4d130c1aacb3dbe97e54f
Due to the way the daala entropy coder handles raw bits, the current
test is broken because the buffer length is not known when calling
aom_reader_init() is called.
Change-Id: I76e93ec0e160e31f286c23f7c9c0094390c6c2d4
This experiment performs symbol-by-symbol statistics
adaptation for non-binary symbols. It requires DAALA_EC or
RANS and ANS to be enabled. The adaptation is currently
based on a simple recursive filter and is taken from
Daala. It has an adaptation rate dependent on alphabet size,
taken from Daala. It applies wherever non-binary symbols
are encoded using Cumulative Probability Functions rather
than trees.
Where symbols are adapted, forward updates in the compressed
header are removed.
In the case of RANS coefficient token values are adapted,
with the exception of the zero token which remains a
binary symbol. In the case of DAALA_EC other values
such as inter and intra modes are adapted as CDFs are
provided in those cases.
The experiment is configured with:
./configure --enable-experimental --enable-daala-ec --enable-ec-adapt
or
./configure --enable-experimental --enable-ans --enable-rans \
--enable-ec-adapt
EC_ADAPT is not currently compatible with tiles.
BDR results on Objective-1-fast give a small loss:
PSNR YCbCr: 0.51% 0.49% 0.48%
PSNRHVS: 0.50%
SSIM: 0.50%
MSSSIM: 0.51%
CIEDE2000: 0.50%
Change-Id: I3888718e42616f3fd87144de7f125228446ac984
Parse the recursive transform block partition to fetch the actual
transform size. Use this correct transform size to select the
corresponding loop filter kernel. This slightly improves the coding
performance of recursive transform partition for hdres to 0.14%.
Change-Id: Ibe8bc3fdd0d222a4f1fb8156c56a407bec052b9b
Also:
- For unsigned ints, don't check value >= 0 as that is always true.
- Add "-Wlogical-op" warning flag which would have warned that "logical
'or' of collectively exhaustive tests is always true" before this
patch.
Change-Id: Idf3bd312464397f2df19256fc69b22f345dc7753
Making this change in case the future implementation changes and the
compairson is no longer between single bits.
Change-Id: I94f474ce7d82febfa23cec65cbe1b9d240b42e02
This ensures TGs can be decoded even if the whole
frame has not been received and the frame length
is not known.
Change-Id: If24837fcc3b5c46554751be792e91100de73e8d6
For compound mode, it is a sure thing that one of the 2 reference frames
would be either a forward predictive reference, or a backward predictive
reference, and the other would provide a different prediction.
Change-Id: I8d7b40525bec4db0f26ba255c8eefa9f20bd52a3
This is a manual adaptation of the following commit from aom/master:
ce12003d60a1c8d6c65ed07ba165c34062fcbcbd
The original commit message:
A tile group is a set of tiles in scan order.
Each tile group has a version of uncompressed and compressed headers,
identical apart from tile group parameters.
Encoding probability updates takes account of the number of
headers to control overheads.
The decoder supports arbitrary numbers of tile groups with
arbitrary number of tiles. The number of tiles in a TG is
signalled in the uncompressed header for that TG.
The encoder currently only supports a fixed number
of TGs (3, when error resilient mode is on) of equal size
(except possibly for the last one).
The average BDR performnce with 3 tile groups versus
anchor with error resilient mode and up to 16 tiles is:
NR YCbCr: 3.02% 3.04% 3.05%
PSNRHVS: 3.09%
SSIM: 3.06%
MSSSIM: 3.05%
CIEDE2000: 3.04%
Change-Id: I9b97c5ed733103b9160a3a5d4370de5322c00c0b
For clarity, use separate variables for 'color_ctx_hash' and
'color_ctx' instead of reusing same variables for both.
BUG=webm:1324
Change-Id: I3a516ea54353e1f0737822c613a68da252e30c6e