Allow the transform size writing, reading, and the reconstruction
process to support rectangular transform block size coding.
Change-Id: I57393c73ec60835a088d785ca838d7e3d7eb29a4
This commit allows the partition context model to account for the
maximum transform block size of the coding block.
Change-Id: I22b91e85fff70faa974afd362ce327d3f2eda81d
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
It always returns true since the related misc_fix[1] was merged.
[1] 23e83574b6a5105bdc686c49f2d5909f33ea721f
Change-Id: Ie3af685572a2f0a42d2b9fb9903c1abeea225dfd
Move computing the class0_fp_cdf and fp_cdf tables per coded mv
symbol to computing it only when the probabilities are updated.
Change-Id: Ib4957c8ab21e6189bcc3817a07b7681dfb343223
Move computing the class_cdf table per coded mv class symbol to
computing it only when the probabilities are updated.
Change-Id: I6c4a9075817e8ba2e251f0e82436995f08f2ec5c
Move computing the joint_cdf table per coded mv joint symbol to
computing it only when the probabilities are updated.
Change-Id: If5d195f70e6fad7b60f69606c8386ad5e69657d2
Move computing the inter_mode_cdf tables per coded inter mode symbol to
computing them only when the probabilities are updated.
Change-Id: I7a7b059ee75723cb6f278ed82a20cf34c27915d8
Limit the recursive transform block partition depth to 2. For a
32x32 transform block unit, one can maximally go down to 8x8 transform
block size.
Change-Id: I2caa92bb2eee64762b7ecca8920259f7c50fb0aa
Skip counting the inter transform block size distribution for
the intra transform block size coding.
Change-Id: Ifad9d843f57d069d0619a54d66ca18101e1b69f1
Move computing the uv_mode_cdf tables per coded intra mode symbol to
computing them only when the probabilities are updated.
Change-Id: I627b59d30726c913f5d7ba7753cb0446a12655bb
Move computing the y_mode_cdf tables per coded intra mode symbol to
computing them only when the probabilities are updated.
Change-Id: I8c43d09b8ef5febe2a3ec64bd51d28bd78ea73ed
Move computing the kf_y_mode_cdf tables per coded intra mode symbol to
computing them only when the probabilities are updated.
Change-Id: I5999447050c2f7d5dbccde80bee05ecd1c5440ab
The av1_mv_class0_tree is a balanced tree with two leafs and can
simply be coded as a boolean with probability class0[0].
If CLASS0_SIZE is ever changed from 1, this change will need to be
reverted.
Change-Id: If294dac825a5f945371092c74aa8e3f84cd962b6
When building with --enable-daala_ec, the tx_type for intra blocks can be
coded using the CDFs that are updated once per frame.
This patch converts a tx_type symbol to be coded with aom_write_symbol()
and aom_read_symbol() that was missed in f3e8e267.
Change-Id: I34f8fef7525f88e156bbcb78dfc48994367610ce
* changes:
Fix warnings reported by -Wshadow: Part4: main directory
Fix warnings reported by -Wshadow: Part3: test/ directory
Fix warnings reported by -Wshadow: Part2b: more from av1 directory
Fix warnings reported by -Wshadow: Part2: av1 directory
Fix warnings reported by -Wshadow: Part1b: scan_order struct and variable
Fix warnings reported by -Wshadow: Part1: aom_dsp directory
Move STAT_TYPE enum to source file.
Code cleanup: mainly rd_pick_partition and methods called from there.
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
While we are at it:
- Rename some variables to more meaningful names
- Reuse some common consts from a header instead of redefining them.
Cherry-picked from aomedia/master: 863b0499
Change-Id: Ida5de713156dc0126a27f90fdd36d29a398a3c88
Move computing the segmentation_probs.tree_cdf table per symbol to
computing it only when the probabilities are updated.
Change-Id: I3826418094bbaca4ded87de5ff04d4b27c85e35a
Move computing the inter_ext_tx_cdf tables per symbol to
computing them only when the probabilities are updated.
Change-Id: I5e1e62f8eae8f6b2edbbd378beeb786649502c10
Move computing the intra_ext_tx_cdf tables per symbol to
computing them only when the probabilities are updated.
Change-Id: I26d5e419e103093e98a7d896c196176305b50fc9
Move from computing the switchable_interp_cdf per symbol to
computing once per frame when the probabilities are adapted.
Change-Id: I6571126239f0327e22bb09ee8bad94114291683e
This flag was already added to aomedia/master, so bringing it back to
webm/nextgenv2, as part of an effort to get the two codebases in sync.
Change-Id: I2b933a6a160e4210d1411a9e7978149eb8553205
To get ready for pulling AV1 to nextgenv2
Replace the experimental flag by MOTION_VAR. Rename major variables.
Change-Id: If6cf4f37b9319c46d8f90df551cc7295d66ca205
Previously, only the motion vectors were being stored. This caused
a mismatch in the global motion experiment, which needs this
mode information to decide whether or not to use the gm parameters
in reconstruction.
Change-Id: I58cde750ec06587dbfb8d65b07c15a67b7d6b1f6
Disable rect_tx because we only support 4x4 Walsh-Hadamard transform
in lossless mode.
Fixes failure in ./test_libaom --gtest_filter=*Large*ScreencastQ0/1
Configuration: --enable-experimental --enable-var-tx --enable-rect-tx
--enable-ref-mv --enable-ext_intra --enable-ext_tx --enable-debug
--disable-optimizations
Change-Id: Ib6b3494c7dcf7182f1cab9b138388d054851a23d