This commit replaces the previous table based intra mode model
coding with a more balanced entropy coding system. It reduces the
decoder lookup table size by 1K bytes. The key frame compression
performance is about even on average. There are a few points where
the compression performance is improved by over 5%. Most test
points are fairly close to the lookup table approach.
Change-Id: I47154276c0a6a22ae87de8845bc2d494681b95f6
This commit allows the entropy coder for transform block partition
to account for its relative position with respect to the block size.
Change-Id: I2b5019c378bfb58c11b926fa50c0db1933f35852
Refactor the recursive transform block partition to reduce repeated
computation maximum transform block size per block.
Change-Id: Ib408c78dc6923fe7d337dc937e74f2701ac63859
If a block is coded in the intra modes, update the transform block
partition information as maximum block size.
Change-Id: I5ea440c700fc887ff2fe84fabde77a9d896d16f4
This commit allows the encoder to force all zero quantized
coefficient block per transform block, if that provides better
rate-distortion trade-off.
Change-Id: I5b57b28cccd257ebfaf7c1749dda7be482abc834
If a block has all coefficients quantized to zero, the codec will
assume that it uses largest transform block size.
Change-Id: I1a32527e50026e8e4759ad8de474189cd20e89c8
This commit refactors the transform block partition entropy
coding process to improve the encoding speed. There is no change
in the compression statistics.
Change-Id: I237466fd95c1b888df432babfa36e01f74240eef
Unify transform block partition update process used in rate
distortion optimization and encoding stage.
Change-Id: I4e5f2b6d2482c53ceadb7c8743435158f229a82c
This commit allows the encoder to account for the boundary block
information to estimate the transform block partitiion rate cost
in the rate-distortion optimization scheme.
Change-Id: Idb79cf936d96cdd15bcba27e47318295413a5f5d
Select the probability model for transform block partition coding
conditioned on the neighbor transform block sizes.
Change-Id: Ib701296e59009bad97dbd21d8dcd58bc5e552f39
The encoding and tokenization process support the recursive
transform block partition coding scheme.
Change-Id: I47283cc6ee9c383059950623ece60a0fcce82e00
Make the encoder packetize transform block in a recursive order.
Note that the block index with respect to the coding block remains
identical.
Change-Id: I07c6d2017f4f150274aff46c05388a7fd47cd920
This commit re-designs the bitstream syntax to support recursive
transform block partition. It disables the decoder vector unit
tests.
Change-Id: I6cac24c4f1e44f29ffcc9b87ba1167eeb32d1b69
This experiment biases the rd decision based on the impact
a mode decision has on the relative spatial complexity of the
reconstruction vs the source.
The aim is to better retain a semblance of texture even if it
is slightly misaligned / wrong, rather than use a simple rd
measure that tends to favor use of a flat predictor if a perfect
match can't be found.
This improves the appearance of texture and visual quality
on specific test clips but is hidden under a flag and currently
off by default pending visual quality testing on a wider Yt set.
Change-Id: Idf6e754a8949bf39ed9d314c6f2daaa20c888aad
Factor in segment#2 and skip blocks into the postencode estimated bits,
and increase somewhat the aggressiveness of the refresh.
PSNR/SSIM Metrics on RTC set go up by ~0.8/0.5%.
Change-Id: I5d4e7cb00a3aefb25d18c88b6b24118b72dc5d51
Use force_split to constrain the partition selection.
This is used because in the top-down approach to variance partition,
a block size may be selected even though one of its subblocks may have
high variance.
In this patch the selection of the 64x64 block size will only
be allowed if the variance of all the 32x32 subblocks are also below the threshold.
Stil testing, but some visual improvement for areas near slow moving boundary
can be seen. Metrics for RTC set increase by about ~0.5%.
Change-Id: Iab3e7b19bf70f534236f7a43fd873895a2bb261d
The compression performance of speed -5 is on average 12.6% better
than speed -6. At lower bit-rates, the gains are typically 20% or
more. For 2-thread encoding, the speed -5 takes about 1.6x time of
speed -6.
Change-Id: If7a73464a24d33e8f49b9533b51ec51c8da7fc80
Crash occured on very first key frame, because denoiser
temporal function was beng entered.
Updated denoiser unittest to set cpu_used from first frame,
and verified fix fixes the crash.
Change-Id: I3be1124b52846fbbe7248d2c3d6136e086c80bc1
Re-arrange the multiplication and right shift operations to avoid
integer overflow in choose_partitioning.
Change-Id: Ib4005cafb410a67c1960486471d75b6ebe38c4e0
Make the vp9_int_pro_motion_estimation() function return zero
motion vector if high bit depth is turned on, instead of removing
it from compiled codes.
Change-Id: Ia48f010eb590b2d517d5678c394110b326a1a95e
Choose_partition uses only the last frame as reference frame in making
partition decision, this commit adds the check on how well Golden
frame with (0,0) predicts the current block, and uses GF(0,0) as
basis for partition decision if it produces better prediction.
The commit improves rtc speed 6 and 7 encoding by 0.14% and 0.19%
respectively.
Change-Id: I156acf925bd6e0b586d48155d1940d27270a3915
Force 64x64 partitioning when a whole superblock is SEGMENT_LVL_SKIP. This
drops encode times of screens mostly at rest by 20%.
Change-Id: Ieba554b0b8a0c1679aae784a8bd11f038ab942c3
While turning on "--aq_mode=3", the quantizers are updated by each
thread. Fixed the me consts initialization function to make sure
that the correct thread data are updated.
Change-Id: Ied27bb7bae76fc3fa2cda4f8c35ac0b46271bef4
This saves an extra 64x64 variance calculation and replaces two
32x32 variance functions with sad functions. The compression
performance change is unnoticeable.
Change-Id: I6d33868695664ec73b56c42945162ae61c484856
Frame buffers are now allocated dynamically on-demand.
Entries in the reference frame map, cm->ref_frame_map,
may now be set to -1 (INVALID_IDX) to indicate that
there is not a valid reference buffer in that "slot".
All slots in the reference frame map are now initialized
to the empty state (-1) and each buffer is initialized
to have a reference count of 0.
Change-Id: Id1afe98de98db4ae8b2dfefed7889c3b28c68582