With row-tile enabled, the encoder test driver needs to configure the
decoder in order to decode all tiles correctly.
Change-Id: I8b00a766cf5e41255625846f92fd71915c614ec1
Allow for 3 quant profiles from entropy context
Refactored dq_offset bands to allow for re-optimization based on number
of quantization profiles
Change-Id: Ib8d7e8854ad4e0bf8745038df28833d91efcfbea
Optical flow parameters still need to be tweaked and is much slower
so feature based should be the default for now.
Change-Id: Id6cafb5a245e329f728e9c66c89c0ed1018c347c
For each global motion parameter, search some step
size to the left and right to try and minimize warp
mse and correct for error.
Change-Id: I1f0b464b0924d56b15460e509f89736af9b7e78f
A tile copy mode is introduced, while allows a tile to use
another tile's coded data directly at bitstream level. This
largely reduces the bit rate in this use case. Our tests
showed that 10% - 20% bit rate reduction was achieved.
Change-Id: Icf5ae00320e27193b15ce95297720f8b6f5e7fd9
1. Made VP8_SET_REFERENCE vpx_codec_control API work in VP9 based
on Ryan Overbeck's patch. (Thanks.)
2. Added vp9cx_set_ref example, which demonstrated how to set
VP8_SET_REFERENCE vpx_codec_control in encoder and decoder. If
we only set_reference in the encoder, the encoder/decoder
mismatch would be observed.
3. Also updated test/cx_set_ref.sh.
Change-Id: I433a6220616947ca8c73e65a5fb3694751ea84b6
Added dq_off_index attribute to mbmi to allow for switching between
dequantization modes.
Reduced number of different dequantization modes from 5 to 3.
Changed dequant_val_nuq to be allow for 3 dequant levels instead of 1.
Fixed lint errors
Change-Id: I7aee3548011aa4eee18adb09d835051c3108d2ee
Implements wedge mask generation by pre-computing arrays.
Improves encode speed by 15-20%.
Also consolidates the mask generation code for inter-inter
and inter-intra.
Change-Id: If1d4ae2babb2c05bd50cc30affce22785fd59f95
In large-scale tile coding, when the number of tiles is large and the tile
size is small, using a fixed number of bytes in the tile header to store
tile-data size information as done in current VP9 codec would bring high
overhead for each tile. This patch implemented 2 ways to lower that overhead
and adaptively determine the number of bytes needed for tile-data size
transmission.
The test on a test clip having the tile size of 64x64 showed that the number
of bytes used for storing tile-data size was reduced from 4 to 1, which
substantially improved the compression ratio in large-scale tile coding.
Change-Id: Ia02fc43eda67fa252fbc2554321957790f53f6fd
A small gain (0.1 - 0.2%) with this experiment on derflr/hevcmr.
The DST2 can be implemened very efficiently using sign flipping
of odd indexed inputs, followed by DCT, followed by reversal of
the output. This is how it is implemented in this patch.
SIMD optimization is pending.
Change-Id: Ic2fc211ce0e6b7c6702974d76d6573f55cc4da0e
Includes tests which compare output of new SSSE3 functions with
their C equivalents, and fixes to the C code to ensure these tests
pass.
Change-Id: Iec3980cce95a8ee6bf9421fa4793130e92c162e3
Changes ensure wedge_partition, interintra and palette expts all
work alongside the ext_coding_unit_size experiment.
Change-Id: I18f17acb29071f6fc6784e815661c73cc21144d6
When the error resilient mode is on, the decoder resets mode info structure
to zero once per frame. This makes decoder about 10x slower if we decode
a single tile at a time. This patch resolves the issue by only memset mode
info of those decoded tiles. Currently, to decode a frame, tile decoding is
less than 2x slower than frame decoding.
Change-Id: Ia3fd88d91a4e74e7bbbc6547d87c24d085a1533e
This is a port of 4f5108090a6047d5d4d9ce1df302da23b2ef4bc5
This commit also fixes a bug where FLIPADST transforms when combined
with a DST (that is FLIPADST_DST and DST_FLIPADST) did not actually did
a flipped transform but a straight ADST instead. This was due to the C
implementation that it fell back on not implementing flipping. This is
now fixed as well and FLIPADST_DST and DST_FLIPADST does what it is
supposed to do.
There are 3 functions in the SR_MODE experiment that should be updated,
but given that the build of SR_MODE is broken at the upstream tip of
nextgen, I could not test these, so I have put in assertions and FIXME
notes at the problematic places.
Change-Id: I5b8175b85f944f2369b183a26256e08d97f4bdef
Extending the SSE2 implementation of vp9_subtract_block to work
with the 128x128 coding unit experiment
Change-Id: Ib3cc16bf5801ef2c7eecc19d3cc07a8c50631580
This is a port of 01bb4a318dc0f9069264b7fd5641bc3014f47f32
This commit also fixes a bug where FLIPADST transforms when combined
with a DST (that is FLIPADST_DST and DST_FLIPADST) did not actually did
a flipped transform but a straight ADST instead. This was due to the C
implementation that it fell back on not implementing flipping. This is
now fixed as well and FLIPADST_DST and DST_FLIPADST does what it is
supposed to do.
Change-Id: I89c67ca1d5e06808a1567c51e7d6bec4998182bd
Also fixes a valgrind error when optimizations are disabled.
Done in preparation for the work on the extended coding unit size
experiment.
Change-Id: Ib074c5a02c94ebed7dd61ff0465d26fa89834545