Adds an option bit in the bitstream syntax to allow chroma to
have restoration tilesize that is coupled to luma based on
subsmapling of the color components.
This is meant to ease encoder hardware implementation.
Change-Id: Ic3cc2b68c0f33701ed3ff2fe19cf57cd864da67f
cb4x4 itself should not require these sizes.
This simplifies compatibility with other experiments, since we can
first make them work with cb4x4 (which is now on by default), and
then worry about chroma_sub8x8 and chroma_2x2 (which is not) in
separate steps.
Encoder and decoder output should remain unchanged.
Change-Id: Iff2a5494cab3b7d96f881e8bd9cd4bf18c817cfa
When writing the compressed header, prob_diff_update() was called
for compound_type_prob[] for every defined block size, even though
luma never uses block sizes smaller than 4x4.
This fixes is_any_masked_compound_used() and
is_interinter_compound_used() to properly return 0 for chroma-only
block sizes, and then uses these functions to guard the probability
updates in write_compressed_header() and read_compressed_header(),
the same way the actual compound type values are guarded in
read_inter_block_mode_info() and pack_inter_mode_mvs().
Change-Id: Ib521cf53f9ec166ef634609c8b47c5814b6a9ff5
Change configuration var type from BOOL to NUMBER to fix
CMake GUI interaction with AV1 configuration variables.
BUG=aomedia:604
Change-Id: I3a5c298ae960ef013e727473bdf7d6664da610a2
Without tempmv-signaling configured, using the previous frame's MVs
requires that the last frame was a show frame. With tempmv-signaling
configured, cm->show_last_frame is not checked when calculating
use_prev_frame_mvs. This patch adds that check and resolves mismatches
seen with random resizing and random superres.
Includes a couple fixes too - cm's last_width, last_height, and
last_show_frame were updated under different conditions. Now they're all
updated at the same time.
Change-Id: Ibdfb196cb6e9d002fd57cb4df10a899b60faac00
The encoder and decoder will now use the 16-bit (high-bitdepth)
coding path, regardless of the encoding profile.
This is a step towards the removal of the 8-bit (low-bitdepth)
coding path (which remains compile-checked at the moment).
BUG=aomedia:611
Change-Id: Ie764c39a327d48b18d77246a028493b6270b9f88
The CMake build of gtest requires python. Make sure it's
on the system, and disable tests when it's not. Also note
the Python requirement in the prereqs section of README.md.
BUG=aomedia:604
Change-Id: Iafe4891eca121eb57548e14b08477dc3c8a9c9df
this warning is covered by an assert and other runtime detection.
expanding the array, adding a conditional or converting the type to int
are less desirable.
BUG=aomedia:578
Change-Id: Idb6a1dec5f17db85a0e9c1d0ee372e701f4e1aa4
As delta_q_present_flag is set to 0 if segment_quantizer_active is 1,
previous assert was never evaluated.
Change-Id: Ia89fffc2f82595198acd2630d5d5d5ba22d43633
A motion refining was added in warped motion, which required the
declaration of rate_mv_bmc in warped motion.
BUG=aomedia:613
Change-Id: I74dfc396f915a5cc4599bfbdccad758fa630505f
Change the internal lib targets so that external apps
need link only libaom instead of all internal library
targets and libaom.
BUG=aomedia:76,aomedia:609
Change-Id: I38862fcd90cb585300b6b23e8558f78a1934750f
This is enabled via:
$ cmake path/to/aom -DBUILD_SHARED_LIBS=1
Currently supports only Linux and MacOS targets. Symbol visibility
is handled by exports.cmake and its helpers exports_sources.cmake
and generate_exports.cmake.
Some sweeping changes were required to properly support shared libs
and control symbol visibility:
- Object libraries are always linked privately into static
libraries.
- Static libraries are always linked privately into eachother
in the many cases where the CMake build merges multiple library
targets.
- aom_dsp.cmake now links all its targets into the aom_dsp static
library target, and privately links aom_dsp into the aom target.
- av1.cmake now links all its targets into the aom_av1 static library
target, and privately links in aom_dsp and aom_scale as well. It
then privately links aom_av1 into the aom target.
- The aom_mem, aom_ports, aom_scale, and aom_util targets are now
static libs that are privately linked into the aom target.
- In CMakeLists.txt libyuv and libwebm are now privately linked into
app targets.
- The ASM and intrinsic library functions in aom_optimization.cmake
now both require a dependent target argument. This facilitates the
changes noted above regarding new privately linked static library
targets for ASM and intrinsics sources.
BUG=aomedia:76,aomedia:556
Change-Id: I4892059880c5de0f479da2e9c21d8ba2fa7390c3
In 84a44dbe, there was a transcription error in the table.
Point { 5, 3 } was duplicated and { 5, 0 } was missing.
While we are here, updated the order and CDF from subset3.
Results on subset1 (compared to cab68ae6 with CfL)
PSNR | PSNR Cb | PSNR Cr | PSNR HVS | SSIM | MS SSIM | CIEDE 2000
0.0416 | -0.2732 | -0.3848 | 0.0385 | 0.0309 | 0.0230 | -0.0178
Change-Id: I3244245792c5ab99b4149ae5f8a2439d4214ed69
Signed-off-by: David Michael Barr <b@rr-dav.id.au>
CfL performs an extra loop iteration during luma mode selection. Recent
changes have broken the extra iteration. Remove previous approach.
New approach adds the extra iteration right before uv parameter
selection. Interesting fact, If the best luma intra mode already has
worse RD performance than the best inter mode found so far (if any),
then the entire chroma intra search is skipped, including the extra
iteration.
Results on Subset1 (compared to 3e18e4a with CfL)
PSNR | PSNR Cb | PSNR Cr | PSNR HVS | SSIM | MS SSIM | CIEDE 2000
-0.3090 | -2.7271 | -2.3521 | -0.3369 | -0.3463 | -0.3525 | -1.1868
Change-Id: If67b0badd2c8ea25c61685483d39d622c1729b18
The height padding offset was computed from the beginning of the pixel buffer
and not the current position in the pixel buffer.
PSNR | PSNR Cb | PSNR Cr | PSNR HVS | SSIM | MS SSIM | CIEDE 2000
0.0000 | -0.0001 | 0.0002 | -0.0000 | -0.0000 | -0.0000 | -0.0002
Change-Id: Id20ec3a6395b11d0258ec1e100890fe4701b820c
Updates to intra-edge experiment
- Convert VP9-style intra pred to Ext-intra style
- Upsample edge predictors by 2x based on angle and edge size
BD-rate, 1-kf AWCY
360p: -0.11%
720p: -0.54
1080p: -0.96
Change-Id: Ib73805d31d5d286e607a7ee7470fcbdf11edbbff
This reverts commit 79b78b7d47.
The transform coefficient range needs some more tuning.
Before we finalize on that front, directly applying clamping
would cause multiple unit test failure issues. Hence revert
this Cl temporarily.
BUG=aomedia:612
Change-Id: I1dd8680dee17289801c4a209275f05a498355c8e
for chroma plane, when mapping from pixel location to the mi_row
and mi_col, need to consider sampling ration of the chroma plane.
Change-Id: I7a369fd6a5c6c4dc5495da64d83f90a532de7ad5
Extract the compution of the luma reconstructed average out of cfl_load
and into cfl_compute_average. The reconstructed luma average is stored
in the CFL_CONTEXT to avoid computing it for each transform block and
for each plane.
Results on subset1 (compared to 803bea2 with CfL)
PSNR | PSNR Cb | PSNR Cr | PSNR HVS | SSIM | MS SSIM | CIEDE 2000
-0.0474 | -0.1486 | -0.2931 | -0.0358 | -0.0397 | -0.0127 | -0.1162
Change-Id: I9e34af0fe5961ce8dbe70cb80aea2a16221d0d92
They do not handle border extension correctly (interpolation and
border extension do not commute unless you upsample into the
border), nor do they handle crop dimensions that are not a multiple
of 8 (the upsampled version is not sufficiently large), in addition
to using massive amounts of memory and being a criminal waste of
cache (1 byte used for every 8 bytes fetched).
This commit reimplements use_upsampled_references by computing the
subpixel samples on the fly. This implementation not only corrects
the border handling, but is also faster, while maintaining the
same quality.
HL AWCY results are basically noise:
PSNR | PSNR HVS | SSIM | MS SSIM | CIEDE 2000
0.0188 | 0.0187 | 0.0045 | 0.0063 | 0.0228
Change-Id: I7527db9f83b87a7bb8b35342f7e6457cd0bef9cd
The tool of ext-comp-refs adds the uni-directional compound reference
prediction. In details, 3 pairs of uni-direcitonal compound references
are added for the comp ref prediction:
(LAST_FRAME, LAST2_FRAME),
(LAST_FRAME, GOLDEN_FRAME), and
(BWDREF_FRAME, ALTREF_FRAME).
This new tool of ext-comp-refs will eventually overwrite
one-side-compound and have the two coding tools to merge to one.
It achieves -0.35 ~ -0.55% coding gains in BDRate, compared against
AV1 baseline with the default experiments on, but without
one-sided-compound. It achieves -0.2% ~ -0.3% coding gains when
one-sided-compound is on. It achieves larger gains on higher
resolution.
Change-Id: Icbdb16e97b96aaebaf2213f5f72d5331e2e358eb