With ext-interp, a switchable interpolation filter is coded iff the
motion vector uses fractional pixel movement (ie, true subpixel
movement). With ext-interp and obmc enabled at the same time, the RD
search proceeds as:
1. Do motion search
2. Do interpolation filter search iff subpixel motion, otherwise use
EIGHTTAP_REGULAR
3. Evaluate obmc=0
4. Evaluete obmc=1 - This involves another motion search
If the motion search in step 4 yields an integer motion vector, while
the search in step 1 did not, then an interp_filter value other than
EIGHTTAP_REGULAR is invalid, and will cause an assertion failure
at output time, or a mismatch if not using --enable-debug.
The fix sets the interp_filter to EIGHTTAP_REGULAR if obmc=1 is picked
with an integer motion vector.
Change-Id: I4685d1ad537f41d833dc9eb64845956b67886cca
Use model for interintra mode search.
Speed-up about 5-10% with about 0.04 drop in efficiency.
lowres: -2.60%
Change-Id: I825bf0ba8a46eb7f19fc528c25b8df066fb8ea95
minus the non-existent nonrd portion. original change:
commit d642294b1c57a5adacb1038ff45766c38bae8a6d
Author: Jingning Han <jingning@google.com>
Date: Thu Feb 11 12:36:49 2016 -0800
Fix tsan error in VP9 sub8x8 intra mode search
This commit fixes issue 1141. The issue was triggered in multi-tile
encoding. The change properly saves and restores the block context
information in the real-time mode selection process. It removes
several redundant memcpy operations in sub8x8 intra block mode
search.
Change-Id: I35c9ad197f4bd500ec39b5fc833f052f19eee010
Change-Id: Idfa38c54c9e645479f6870d46f71fb1e91c071da
For the current stage, we assume a single prediction filter type
per direction in the settings of compound inter prediction modes.
Change-Id: I12a1afdd364b93fcee870bd11ad01fc40ab48cff
Increases number of wedges for smaller block and removes
wedge coding mode for blocks larger than 32x32.
Also adds various other enhancements for subsequent experimentation,
including adding provision for multiple smoothing functions
(though one is used currently), adds a speed feature that decides
the sign for interinter wedges using a fast mechanism, and refactors
wedge representations.
lowres: -2.651% BDRATE
Most of the gain is due to increase in codebook size for 8x8 - 16x16.
Change-Id: I50669f558c8d0d45e5a6f70aca4385a185b58b5b
Weighted single motion search is implemented for obmc predictor.
When NEWMV mode is used, to determine the MV for the current block,
we run weighted motion search to compare the weighted prediction
with (source - weighted prediction using neighbors' MVs), in which
the distortion is the actual prediction error of obmc prediction.
Coding gain: 0.404/0.425/0.366 for lowres/midres/hdres
Speed impact: +14% encoding time
(obmc w/o mv search 13%-> obmc w/ mv search 27%)
Change-Id: Id7ad3fc6ba295b23d9c53c8a16a4ac1677ad835c
Improves speed by about 10-15% by combining y-only rd with
modeling function in a better way.
Also, coding efficiency improves by about 0.1%
lowres: -1.805% BDRATE with ext-inter
Change-Id: I6ef1f8942ec6806252f3fcf749ae4f30dffe42b1
When not using ext-tile, there were still dependencies between tile
rows due to various tools (eg intra predictors) relying on the above
row or above mode info, which can be in the above tile. This is now
broken (the same way as it was when ext-tile is enabled) by fixing
the appropriate predicates.
Change-Id: I107dd0d8481775a792f14e05cfbbd761f16cdc1e
The original pruning function was not taking into account
that certain tx sizes/block sizes use a reduced tx set.
Prune 1: -0.3% performance drop, 20% speedup on foreman video
Prune 2: -0.48% perfomance drop, 30% speedup on foreman video
Change-Id: I557e919d97a89f787b47b3c8579a080db57f91d0
Make the bit-stream level support per direction filter type coding
for motion compensated reference.
Change-Id: I61a2360b301075f6734cfd9711b7ae68f214174d
The word 'pick' is usually used in functions that make decisions where
the bitstream allows multiple legal choices, and not to limit the
bitstream format itself.
Change-Id: Ia60709c29e004475e1aa8861aefded27ebaf4712
This is the set of 1D transforms that are used in each
ext_tx_used_inter set. The 1D sets will help speed up
the ext tx pruning functions.
Change-Id: Ib46ad26be2df60b3bfcd2f22d96e7f38ae286df5
Valgrind flags these up as needed by handle_inter_mode.
Initializing fixes some assertion failures in the unit tests with
only ref-mv enabled.
Change-Id: I4d56c356692745dbecd9f790cdbb8dbfbaf72d55
The bug is introduced by commit 1a0352d, in which mv costs are
counted twice in joint_motion_search() in ext_inter experiment.
Change-Id: Ibace453df999d3c2e781d73f1f0912038fee2d4e
MMX and X87 floating point instructions cannot be mixed freely on
the 32 bit x86 architecture.
This fixes a lot of unit tests in the 32bit build with
--enable-ext-intra.
BUG=https://bugs.chromium.org/p/webm/issues/detail?id=1196
Change-Id: I0e1c3565f4b9cb4fc2d716e94d9c40e68b36fac8
This commit fixes an encoding decision process issue that could
trigger enc/dec mismatch in the ext-inter experiment.
Change-Id: I6f10d1fd2fd1aa04e51df04c39a65cf72ac66c42
x->blk_skip used to be uninitialized (leftover from encoding the
previous block), if cm->tx_mode != TX_MODE_SELECT (which is used with
higher --cpu-used or --rt options). This resulted in degraded coding
performance when using cm->tx_mode != TX_MODE_SELECT.
This fixes the VP10/EndToEndTestLarge.EndtoEndPSNRTest/40 unit test.
Also fixed an edge effect where encode_block in encodemb.c used the
formal width of the block (without cropping at the right edge), to
look up blk_skip, while select_tx_block in rdopt.c used the cropped
width to set blk_skip.
Change-Id: I76d0f49ac5ab3ab54203573e0d7fcfcc1c6aa10d
x->blk_skip used to be uninitialzied (leftover from encoding the
previous block), if cm->tx_mode != TX_MODE_SELECT (which is used with
higher --cpu-used or --rt options). This resulted in degraded coding
performance when uning cm->tx_mode != TX_MODE_SELECT.
This fixes the VP10/EndToEndTestLarge.EndtoEndPSNRTest/40 unit test.
Change-Id: If39062927446798c626fc93694b4e6a4f35fa5da
This commit handles the zero motion vector residuals for single
and compound reference modes, respectively. It improves the coding
performance by 0.13% with no additional encoding complexity.
Change-Id: I16075a836025bd2746da2ff4698fb9261e4b08c1
This commit re-arranges the transform type and size selectio
process. It removes an unnecessary rate-distortion cost computation
step. Local experiments show that this speeds up the encoding
process by 6% for both the baseline and the ext-intra experiment.
Change-Id: Iab3b86a63a1e9e55548466791ed5d29a0575c1e7