This commit enables the 1-D transform to use Manhattan grid vertical
and horizontal scan order for transform coefficient entropy coding.
Enabled in inter prediction mode, the hybrid 1D/2D transform coding
scheme outperforms the 2D-DCT based coding system used in VP9 by
lowres_all 1.7%
hdres_all 1.4%
As one coding option, in addition to the existing 17 other transform
types in ext-tx experiment, the 1D/2D hybrid transform improves
the coding gains:
lowres_all 2.2% -> 3.0%
Change-Id: I9cefa9d9e38224546d0afd67feecd9f8d4a16ab0
- Implemented fdst16_sse2(), fdst16_8col() against C version: fdst16().
- Turned on 7 DST related hybrid txfm types in vp10_fht16x16_sse2().
- Replaced vp10_fht10x10_c() with vp10_fht16x16_sse2() in
fwd_txfm_16x16().
- Added vp10_fht16x16_sse2() unit test against C version:
vp10_fht16x16_c() (--gtest_filter=*VP10Trans16x16*).
- Unit test passed.
- Speed improvement: 2.4%, 3.2%, 3.2%, for city_cif.y4m, garden_sif.y4m,
and mobile_cif.y4m.
Change-Id: Ib30a67ce5d5964bef143d588d0f8fa438be8901f
This commit enables a hybrid 1-D/2-D transform coding scheme and
the accompany entropy coding system. It currently uses hybrid
1-D/2-D DCT transform coding. It provides coding performance gains:
lowres_all 0.55%
hdres_all 0.43%
Change-Id: I2b30dcafd21eb2bb3371f6e854cbab440a4dfa78
For left side obmc, the input of the mask function is corrected as
the column coordinate.
Also, minor fixes for a compiler warning.
Change-Id: Ia981ef443d5b0285a93d73e5c7ab83f8c3a23464
Make the RANS implementation operate on cumulative distribution
functions rather than individual probability distribution functions.
CDFs have shown themselves more flexible to work with.
Reduces decoding memory usage from scaling O(num_distributions *
symbol_resolution) to O(num_distributions).
No bitstream change. This is an purely implementation change.
Change-Id: I4e18d3a0a3d37a36a61487c3d778f9d088b0b374
This allows the codec to use effective motion vector as the candidate
to produce the reference motion vector list.
Change-Id: Ib90be705fe28200c13376d6d7741800a61f13043
The above-right and left-bottom pixels were sometimes not used even
though they are available. Results on lowres_all and hdres_all are
mostly neutral.
Change-Id: Ic13533dd498442ad5592b83bb5fabf053cc8e8f0
Fixes some issues introduced by a merge of two patches.
Also decouples the temporal interpolation filter from the switchable
filters for now for ease of experimentation with both separately.
Change-Id: If1c7c08adf00e0cf818fe8d0d3656c26ea65eb32
Includes various cosmetic changes and refactoring including
naming the sharp filters differently (since they are no longer
8-tap).
Change-Id: Ida5a19ca0daa9f6a64a6734394c685b2a4a2564a
This commit unifies the encoder and decoder border extension and
motion compensated prediction process. Remove the decoder specific
flow to simplify the development flow.
Change-Id: I9c43bbe6d7c017e6da2db6a62c5bf3d0af7ccfce
The interintra experiment, which combines an inter prediction and an
inter prediction have been ported from the nextgen branch. The
experiment is merged into ext_inter, so there is no separate configure
option to enable it.
Change-Id: I0cc20cefd29e9b77ab7bbbb709abc11512320325
This commit uses 12-tap sharp filter to generate alter reference
frame. It improves the compression performance by
derf 0.45%
hevcmr 0.35%
stdhd 0.79%
No encoding time change is observed.
Change-Id: Ia5dc26d5aae6b9b0cb782e5a28dc5066eeeb2ec8
Adds hooks to use 32x32 ext-tx. Also adds scan orders for the masked
transforms for 32x32.
Make macro USE_MSKTX_FOR_32X32 1 in blockd.h to support 32x32 masked
transforms for ext-tx.
Change-Id: Ie6564830266651fcafae2d536c274dafd664ce17
These variable names were legacy from a previous version of this
function and in the current version they were confusingly backwards.
Change-Id: I4f6c1628f296fd5b650fd9c5e2d56d7daf66a3f6
This commit enables a context based motion vector entropy coding
conditioned on dynamic reference motion vector list. This (along with
the previous CL) imporves the coding gains due to dynamic motion
vector referencing based entropy coding:
derf 0.1%
hevcmr 0.2%
stdhd 0.7%
hevchr 0.4%
No encoding time change was observed.
Change-Id: I179c723844079195f6952a12582996a3ca9e9914
Don't initialize first pass costs for a number of symbols where first
pass probabilities aren't initialized.
As a side effect, an illegal read in the ANS experiment is fixed.
https://bugs.chromium.org/p/webm/issues/detail?id=1089
Change-Id: I97438c357bd88f52f5a15c697031cf0c3cc8f510
Priviously, we do 12-tap interpolation even there is no sub pixel,
This could cause a bug becuase decoder doesn't extend border when there
is no sub pixel. In this situation, if we still do interpolation, we
will access the border extension which doesn't exist and cause a
memory error
Change-Id: I55b879722f0a10c5d13261bd9617a75c826a2418
This commit converts the scalar motion vector probability model
into vector format for later precise estimate.
Change-Id: I7008d047ecc1b9577aa8442b4db2df312be869dc
-Avoid unnecessary calculations
-Use SIMD when possible
Encoder is about 5% faster with the extra intra prediction angles
enabled.
Change-Id: I131056befe327cedab217ad4a40d5f2a11318acc
Adds new 32x32 masked 1-d transforms that combine 1-D length-16
DCT with length-16 identity transforms.
To be continued in subsequent patches.
Change-Id: I0b4f66492d44c079b3c3b531ba48a97201de1484