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
This CL fix the bug
rdopt.c:1687: choose_tx_size_from_rd: Assertion
`mbmi->tx_type == DCT_DCT' failed
It is caused by
1) mms register access before double operation
2) different compiler behaviors
code:
int64_t a = INT64_MAX;
double b = 1. * INT64_MAX;
printf("a < b: %d\n", a < b);
result:
a < b: 0
code:
--target=x86-linux-gcc
int64_t a = INT64_MAX;
double b = 1. * INT64_MAX;
printf("a < b: %d\n", a < b);
result:
a < b: 1
I remove the double operation and test it with EXT_TX experiment.
The psnr change is around 0.05%, which is considered as noise level.
Change-Id: If8935c70c8603617fcfa8571accd30ccdda786a0
In the rd loop, check the perf of obmc, whose mv is copied from regular
inter predictor, when wedge interinter is better than regular inter
(previously it will force allow_obmc = 0). The condition of the early
termination before this step is relaxed to avoid skipping too many obmc
predictions. The rates of the overhead are properly calculated for these tools.
The logic of the bitstream syntax:
(a single ref) the interintra flag is sent first, only if it is 0, we
send the obmc flag;
(compound refs) the obmc flag is sent first, only if it is 0, we send
the wedge interinter flag
Coding gain
lowres: 0.428% (2.287%->2.715%)
Change-Id: I5f3a34640b398e313cbf84235c9fe2073eb2173f
With ext-ref enabled, it is possible that when trying to encode the
first true ALTREF frame after a keyframe, the previous ALTREF frame
(alias for the keyframe) is the same as one of the new LAST{2,3,4}
reference frames, and hence cpi->ref_frame_flags will have the ALTREF
bit clear, as computed by get_ref_frame_flags in encoder.c.
sf->alt_ref_search_fp forces the previous ALTREF frame to
be used as the only possible reference when encoding a new ALTREF
frame, but due to cpi->ref_frame_flags, some buffers will not be
initialized (see rdopt.c:7689 yv12_mb), leading to a segfault.
get_ref_frame_flags in encoder.c has been changed to prefer to keep
the LAST frame, then the ALTREF frame, then any of the LAST{2,3,4}
frames and then the GOLDEN frame in that order of preference in case
any of them are the same. This avoids the segfault and behaves the
same for the baseline.
Change-Id: I4da1991667614009da5d3061a6316c0d5dbc6c0c
* changes:
Branch dct to new implementation for bd12
Change dct32x32's range
Fit dct's stage range into 32-bit when bitdepth is 12
Pass tx_type into get_tx_scale
Skip transform type search in modes with ref_mv_idx > 0. This
brings down the additional encoding time cost due to the DMR system
from 32% to 17%, at minimal coding performance regression.
Change-Id: Ie82e1d2831a313c6f1e47f7da221b51345023eb3
Fix several use cases where MAX_MV_REF_CANDIDATES is mixed up with
is_compound flag to avoid potential coding interruption.
Change-Id: Ifdee1ef8a81ef6d1c155315c6c6a3074aa7a8b5e