av1_find_mv_refs sets the ALL_ZERO flag when either (a) we don't have
enough candidate MVs, or (b) all candidate MVs are zero. With global
motion enabled, case (b) does not work as intended and causes two
problems: a significant quality decrease for foreman_cif.y4m, and
test failures in *CpuSpeedTest*Screencast*.
This patch skips check (b) when global motion is enabled, fixing
the above bugs.
Change-Id: I7461588cb02733563c1439f430b89190299a1b5d
This is added as part of ALT_INTRA experiment.
This uses interpolation between top row and estimated bottom row; as
well as left column and estimated right column to generate the
predicted block.The interpolation is done using a predefined weight
array.
Based on experiments, the currently chosen weight array was created
to represent a quadratic curve, but can be tuned further if needed.
Improvement from baseline on Derf set:
ALL Keyframes: 1.279%
Improvement from existing ALT_INTRA:
ALL Keyframes: 1.146%
Change-Id: I12637fa1b91bd836f1c59b27d6caee2004acbdd4
Fix a case in rdopt where a block's mode would be set to ZEROMV but
its motion vector would not be set to the global motion vector.
This caused future inter frames' lists of candidate mvs to become
desynchronized between the encoder and the decoder.
Change-Id: I1bdc619f155c70ca8a1a3fe6eea1baee15dc2c33
This commit adds initialization for tmp_rd_stats, to resolve valgrind
warning of "Conditional jump or move depends on uninitialised value"
Change-Id: I79ed3bc046a66457c27185782645938d223872ba
If there are N frames in a superframe, the superframe
index will enumerate the sizes of only the first
(N - 1) frames. The code assumed that all N frame
sizes are coded.
The size of the final frame in the superframe is
calculated as follows:
(data_size - index_size - sum_of_N-1_frame_sizes)
Change-Id: Ia53ae27455a4f024eec311bf7356a00e8e0d449a
By adjusting the internal scaling and rounding in the transforms,
we can adjust the maximum round-trip errors to:
* 8x16 and 16x8: 0 pixel values (ie, transforms are exact)
* 16x32: 1 pixel value
* 32x16: 2 pixel values
Change-Id: I0ba691a8d27042dcf1dd5ae81568d07a92d68781
Use the offset to code tx_size, which allows better scalability in
the implementation. This commit fixes the enc/dec mismatch issue
in cb4x4 experiment.
Change-Id: Ia814273b0be43819f92d1c41cfae4964cfb76ced
This commit fixes the use of uninitialized value in the RD search
loop. It brings back the coding performance loss when the above
three experiments are all turned on.
BUG=aomedia:92
Change-Id: I19d7904c354e7a94e5f672bf416267971791c371
The recursive transform block partitioning system naturally supports
the use of rectangular transform block size. Hence there is no need
to make a separate coding route for the rectangular transform block
size support there.
Change-Id: I709b61f94cd4a6ea3f33c05abe319488c7d24f5a
The processing units support the rectangular transform block size.
Update the assertion conditions accordingly.
Change-Id: Iebd46dbbb04feaf161fb02f203fa2cde50b2b700
This commit fixes the warnings of "value stored to 'mode_ctx' during
its initialization is never read".
Change-Id: I39e78a5915d29c74854306d009b7a6e002dda781
Move detail logic of reading interp_filter type from
read_inter_block_mode_info to read_mb_interp_filter
Change-Id: I2880488acbd994ead3bed4ae94eaae017e33546b
simp_mv_pred is now merged into ref-mv, this commit removes the code
that is leftover. Removing them fixes compiler warnings.
Change-Id: Iad0c521d10924d0eeeaad0b5022beddf9d2bacce
This commit adds an experiment to interleave the coding of transform
coefficients from YUV planes. The experiment can be enabled at config
time by --enable-coef-interleave.
Change-Id: Ifd92f9c367304bca9732f13fa026eb8996363677
This removes the dependency of context decoding from the candidate
list ranking in hardware implementation.
Change-Id: Iff34e7e6e78c9b32f435ded30629e43e73ac2f13
Replace the int_mv storage in the ref_mv_stack struct with unit8_t
integer to indicate the prediction difference level.
Change-Id: I0bfbcab350a46ecdd5bc47bd918cce9614365227
Includes:
Various table updates and fixes to support 64x64 transforms.
Entropymode updates to support tx_size expansion to 64x64.
tx_mode changes to support an ALLOW_64sXx64 transform mode.
Change-Id: Ib9098cfe27d0c015fe3be6ae13e7d09576771b9e
Bring rd_stats back to proper starting point for the second mode.
Bug introduced during code refactoring preparing for RD_DEBUG:
https://aomedia-review.googlesource.com/#/c/5689/
Change-Id: I9ad10144ae3cc395a6efa700d047741c7734470c
Fix a case where handle_inter_mode could return without restoring
the original values of xd->plane[i].dst.buf. This fixes an
assertion failure in aom_blend_a64_mask, as well as very slightly
improving the rd costing accuracy.
Change-Id: I7f720bcf676c6aa9858c1a4c8f6571a76a9b0772
This commit fixes several issues that prevent experiments to build
when enabled together. The experiments are:
ec-adapt
ext-inter
ext-partition
BUG=aomedia:80
BUG=aomedia:88
Change-Id: I5b790f16ad0ae2450f0be3aa26329b6a57a6a5c5
Only process reference motion vector stack for the used reference
frames at the decoder. This improves the decoding speed by 15%.
Change-Id: I4f7c11d4607f9bcb756b6c375723d017ec6ece22
This commit re-synchronize the reference frame type use cases in
the dynamic motion vector referencing system.
Change-Id: Ib25231c716db4176cd67cbdc889472a06b607194
Previously, any uses of global motion inside supertx blocks were not
counted correctly. This caused encode/decode mismatches when every use
of global motion in a frame occurred inside supertx blocks.
This happened in, for example, AV1/ActiveMapTest.Test/0
This patch makes update_state_supertx count global motion usages in
the same way update_state does, and fixes the above problem.
Change-Id: Id500d5a24c565774fa3aa3b52cd3fdbeab75b486