the line buffer.
As compared to ref-mv, the results of this integration are:
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
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
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
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
This is a debug tool used to detect bitstream error. On encoder side, it
pushes each bit and probability into a queue before the bit is written into
the Arithmetic coder. On decoder side, whenever a bit is read out from the
Arithmetic coder, it pops out the reference bit and probability from the
queue as well. If the two results do not match, this debug tool will report
an error. This tool can be used to pin down the bitstream error precisely.
By combining gdb's backtrace method, we can detect which module causes the
bitstream error.
This tool is moved from following two CLs of nextgenv2
https://chromium-review.googlesource.com/#/c/366432/https://chromium-review.googlesource.com/#/c/380300/
Change-Id: Iec6d4c2e3851b8ac1db35776fd7a216a9230a983
Purpose:
-Reduce dynamic range of interpolation filter coefficents from 8
bits to 7 bits.
-Inner product for 8-bit input data can be stored in a 16-bit signed
integer.
Impact on compression efficiency:
-Marginal improvement, typically less than 0.5% BDR.
Change-Id: I58d1408307ae7d2a6f9de8965c5877b258703199
This patch adds bit account infrastructure to the bit reader API.
When configured with --enable-accounting, every bit reader API
function records the number of bits necessary to decoding a symbol.
Accounting symbol entries are collected in global accounting data
structure, that can be used to understand exactly where bits are
spent (http://aomanalyzer.org). The data structure is cleared and
reused each frame to reduce memory usage. When configured without
--enable-accounting, bit accounting does not incur any runtime
overhead.
All aom_read_xxx functions now have an additional string parameter
that specifies the symbol name. By default, the ACCT_STR macro is
used (which expands to __func__). For more precise accounting,
these should be replaced with more descriptive names.
Change-Id: Ia2e1343cb842c9391b12b77272587dfbe307a56d
Palette code originally by huisu@. Gives 11.68% BDRate improvement on
screen content set.
Last 7 small speedup patches from me, giving 10% speedup overall for
screen content set.
From aomedia/master:
Revert 57fa626 : Remove color_index_map
From libvpx/nextgenv2:
c93e5cc : Bring palette back to nextgenv2
827e1b3 : Add test for screen content coding tools in end to end test
78b0bd0 : Complete (mostly) migration of palette mode
8a128c2 : Fixes for Palette mode
4ab0091 : Palette mode: record selected transform type
cbb8be7 : Set block size upper bound for Palette mode
bb0e692 : Convert palette from double to float.
a0a23b7 : faster code: replace nested for loops by memcpy().
016a5da : Palette code: simpler and faster duplicate removal
d000020 : Palette code cleanup
6dde801 : Use built-in qsort(); create remove_dup() method.
f746c10 : Handle centroid rounding inside palette.c itself.
d68c7b6 : Palette: count Y colors only for screen content.
f1906e9 : Palette code: remove the use of same if condition twice.
Locally made sure all combinations of "--enable-ext-intra" and/or
"--enable-palette" and/or "--enable-aom-highbitdepth" build OK.
P.S. Note for future reference:
EXT_INTRA experiment has only been moved *partially* to aomedia at this
point. If and when the rest is moved to aomedia, EXT_INTRA + PALETTE
combo needs to be moved to aomedia as well.
Change-Id: I8826780014ec8a88281e56c8258b7c966121b46f
Note: some of these warnings are enabled by a combination of -Wunused
(added earlier) and -Wextra.
Change-Id: I322a1366bd4fd6c0dec9e758c2d5e88e003b1cbf
Now that all warnings are taken care of, add warning flag -Wshadow to
configure.
Note: Enabling this flag for C++ generates some useless warnings about
some function parameters shadowing class member function names. So, only
enabling this warning for C code.
Change-Id: I53ffb763483fec675a3358c5e64a737a03b93eb1
For now this is in its own experiment for benchmarking purposes, but it
will eventually be folded into the main ANS experiment.
Change-Id: Icdb54b6ca3c0191ba717d6d10aaaffb11e2bebea
- Const correctness
- Refactoring
- Make variables local when possible
etc
- Remove -Wcast-qual to allow explicitly casting away const.
Change-Id: I6ecb7d345162dc08ccdd17095b0800fb3a00cf2f
supertx: super transform
ext_compound: various prediciton modes that combine multiple
inter or intra predictors
Change-Id: I82f50f6647dd2d79e33be1461a6e5a21fcd34167
Will include variantions of motion compensation, including overlapped
block prediction and possibly warped motion.
Change-Id: Ibe393828cf01e8cc31100eb464bf4800b6a4443e
Change the name of source files to replace "vpx" with "aom".
Change occurences of "vpx" in the code to "aom".
Change-Id: I002c0eaa2c350cf1a895bf01bea5788c61328027
The deringing filter documentation is in:
J.-M. Valin, The Daala Directional Deringing Filter, arXiv:1602.05975 [cs.MM],
2016.
http://arxiv.org/pdf/1602.05975.pdf
ntt-short1 results:
MEDIUM (%) HIGH (%)
PSNR -2.488088 -2.003235
PSNRHVS -1.588932 -0.797850
SSIM -1.522767 -1.287861
FASTSSIM 4.307822 3.983496
subset1 improvement is around 2-3% on PSNR (but the rate is mostly outside
the AWCY testing range)
Change-Id: Ic02344ce9faa509f5c3a50a0fb7a7b84a7977e72
This commit adds the constrained low-pass filter. For details, please
see document here: https://goo.gl/VUzEED
Change-Id: Idc21d62052071e6c939c91c0cc8246eed768e6b0
The nominal tx_type for a given mode is used as a context
to encode the actual tx_type for intra.
Results:
derflr: -0.241% BDRATE
hevcmr: -0.366% BDRATE
Change-Id: Icfe7b0a58d79bc6497a06e3441779afec6e01e21