This commit refactors the trellis coefficient optimization process.
It saves multiplications used to generate the final dequantized
coefficients. It also removes two memset operations on quantized
and dequantized coefficient sets.
The trellis coefficient optimization is on average running over
10% faster.
Change-Id: If3aa26d2a706c3012bf2b7ac059bf1825250e81f
This fixes some crashes in
VP10/EndToEndTestLarge.EndtoEndPSNRTest/ with high bit-depth and
ext-inter.
Change-Id: I10f0f08e1be4bd5c388616074d4aa3f91a2fda7a
This commit reworks the transform and quantization unit. It enables
the use of adaptive quantization for intra modes. This further
improves the compression performance:
lowres 0.36%
midres 0.79%
hdres 0.73%
The key frame coding performance is improved:
lowres 1.7%
midres 1.9%
hdres 3.3%
The overall coding gains are:
lowres 1.1%
midres 1.8%
hdres 2.3%
Change-Id: Iaec1a3a4c1d5eac883ab526ed076d957060479dd
Move filter intra modes search to the end, after regular
mode search.
On average no performance changes.
Change-Id: I9293c8fdf706ebf831fbd61c6bb81959790f4848
The speed feature sf->lpf_picl == LPF_PICK_MINIMAL_LPF is used
to disable loop filtering. This did not work with the loop-restoration
experiment, but now it is respected.
Note that this speed feature is only used in real-time cpu-used >= 8
settings.
Change-Id: I193723c9ac5f802ec31d8c8b4d37650796e065fd
mi->stride now depends on the maximum superblock size, and hence
the constant 8 padding is no longer appropriate. Traverse the array
using mi->stride instead.
Change-Id: I8e84b9fe1728f6663f8c10765fe32206375f1e71
Segment based loopfilter strength for supertx coded blocks is now
selected based on the minimum of all segment IDs within a supertx
coded block (same as the quantiser settings).
Change-Id: Ib056bd0d05f6a1d3b512a76deb4e2ad4db0f7dc4
Segment level quantizer settings for supertx coded blocks are now
selected based on the minimum of all segment IDs within a supertx
coded block.
This also fixes the 3 adaptive quantization modes with supertx.
Change-Id: Ib5db099539d4f82f240e1d745d6e5264f8b34cde
Exit early from function when supertx is used, rather than putting
the bulk of the function body in a single conditional.
Change-Id: I41f388a45bd46e4a6ee1c51f26782ed9bddff4e5
When using VARIANCE_AQ, we can change the segment assignment after
initialising the quantiser in set_offsets, so re-initialise it when
we do so.
Change-Id: I1f168553aaf0ade419f0d4bf05820cd591b87659
Explicitly signal when the segment map is being refreshed when
using VARIANE_AQ. This simplifies decisions about when the segment id
needs to be set from the previous segment map vs based on the current
variance.
Change-Id: Ieb12c950e9cfbc3f53f4d184880071dea805563c
This commit makes the dual filter experiment work with non-420
settings. It fixes unit test failure in EndToEndTestLarge.
Change-Id: I04f7afdee78f91389d9ff72947efa152098af930
Revisit the compression performance and complexity trade-off after
making the SIMD version of trellis optimizations. Before that,
reduce the transform-quantization function calls temporarily. This
would cause about 0.3% performance drop for lowres set.
Change-Id: I16917a6bd5c44ec6cd8cd0b59f3c336c4fd96dd2
This commit combines uniform quantizer with trellis based coefficient
level optimization. It improves the codebase compression performance:
lowres 0.8%
midres 1.0%
hdres 1.6%
Note that the current trellis optimization unit is using C code. This
will make the cost of the overall quantization process slower. A number
of optimizations will come up next.
Change-Id: Id441dd238e4844409d0f08f82604be777f3f5282
This experiment implements non-uniform quantization where
the width of the bins increases gradually to more closely
match a laplacian distribution of the coeficcients.
Performance Gain:
derflr: 0.15%
hevcmr: 0.675%
Change-Id: I25234244e3bcd94b87c1f77cf682190b61c8ef94
This reverts commit efda2831e5f758b4f350679b5c55c0b9282449b0.
This commit causes segmentation fault at SSE2/SumSquares2DTest.RandomValues/0
Change-Id: I171937e4daf6f15323e8206418773deb03bd8c53
Bring commits 575e81f and 3d6b8a6 to VP10. These changes predate
the creation of the active map cyclic refresh test.
BUG=https://bugs.chromium.org/p/webm/issues/detail?id=1224
Change-Id: I3559b6933ffa5649926a4b214e45ed0fae523a25