This was still being used for CDFs whose size might not match the
declared array size. We replace it with an intialization macro
intended explicitly for this purpose.
Change-Id: I65d9a3c871e1d1bdd906f20ff3a264f58d8e5620
Encoder output should not change, and all streams should remain
decodable without decoder changes.
Change-Id: Id1f1b0f2f02c3b46f150a93c451bf48abd0782ca
this change adds the following filter tap options:
1. add options to replace 15 tap filter with 9 or 11 tap filter
2. force chroma plane to only use maximum 7 tap filter
above options are disabled by default
Change-Id: Iab90a613210c1adaf4475976e9ed7e78ac30803b
This creates a central function which defines when a
block should be warped. It also refactors the
WARPED_MOTION code so that all calls to av1_warp_plane
happen in the same location.
No change in performance.
Change-Id: Icaf9ec7700d34523809258594bb9843bb2975f46
HW does not support < 4x4 prediction. To limit the bandwidth
requirement, for small blocks, only blend with neighbors from one
side. If block-size of current plane is 4x4 or 8x4, the above
neighbor will be skipped. If it is 4x8, the left neighbor (dir = 1)
will be skipped.
This change will keep the bandwidth requirement of OBMC not more
than what is required by normal compound inter modes.
Loss of gain (PSNR-Y/PSNR-Cb/PSNR-Cr/CIEDE2000)
AWCY HL: 0.05/0.09/0.14/0.04
AWCY LL: 0.06/0.07/0.10/0.12
Change-Id: I3854afc69c3014da99bde4b19bb726e4c077d59e
Adds filters for 1/32 subpel precision for warping.
To use 1/32 subpel precision make WARPEDPIXEL_PREC_BITS 5.
By default, WARPEDPIXEL_PREC_BITS is set as 6 in common/mv.h,
which uses 1/64 subpel precision.
If 1/32 precision is used, BDRATE drops:
on lowres:
-1.101 (vs. -1.186% with 1/64) w/warped-motion
-1.587 (vs. -1.650% with 1/64) w/global-motion
on cam_lowres:
-2.638 (vs. -2.707% with 1/64) w/warped-motion
-3.396 (vs. -3.453% with 1/64) w/global-motion
Change-Id: I82fbfddaad9bd9be658fe382401d212833c7ceef
Optionaly filter 8x8 skip blocks, but still leave superblocks that are
completely skipped unchanged. Use one bit in the dering level to
signal replacing the signal for dering damping.
This works better with cb4x4 that now is enabled by default.
Low latency, used-cpu=4 change:
PSNR|PSNR Cb|PSNR Cr|PSNR HVS| SSIM|MS SSIM|CIEDE 2000
-0.6260|-0.3263|-0.3797| -0.3574|-0.7072|-0.4828| -0.6584
Change-Id: I42c4290b52a50779770884fbabb020fdb1034ff7
Adds an option to disable warp when obmc is used with a
global motion neighbor.
Change in BDRATE on cam_lowres
gm + obmc enabled: 0.035%
gm + obmc + wm enabled: -0.005%
Change-Id: I1d6de75c7ead325cec31ed3748b5532f3658d8a7
This was broken by commit 1238137c3c.
When calling the generic coder with a max, it truncates the CDF, but
then tries to encode/decode with the Q15 entropy coder functions
with built-in adaptation. That causes assertion failures, because the
total probability isn't 32768.
We could fix it by re-scaling the CDF, and then doing adaptation
assuming there was no max, but that requires several special-case
code paths.
Instead, since non-robust streams were the only thing that still
required calling the generic coder with a max, and since the gain
from them is very small (and they require doing more DSP just to be
able to parse the stream), we simply remove the option and force
the use of robust streams all the time.
With robust streams enabled, encoder output should not change, and
all streams should remain decodable without decoder changes.
Thanks to Nathan Egge for reporting the problem.
Change-Id: I6c81481abb796688bf703d68f164d208e6a69f20
1) Check if tx_type is valid in get_tx_type
2) Remove scan_order from rdcost_block_args
When lv_map is on, scan_order depends on tx_type but tx_type is
not decided before entering block_rd_txfm yet. Therefore
assigning a scan_order into rdcost_block_args and then passing it
into block_rd_txfm will cause error.
3) Pass correct index into intra_mode_to_tx_type_context in
get_tx_type
This CL doesn't affect baseline/supertx's stats.
Change-Id: I59eb12aaf1edd9110ce7a92ce61f81bf89cd5920
- More meaningful variable names
- Comments to make code more readable.
- Variables declared near use etc.
Change-Id: I1a87d52a73aeefbaee4b9190861155dfcf05985c
This CL will break lv_map experiment because it's a partial
implementation for transform kernel selection
Change-Id: I927cb70c2fb0d079d485c1a5ca32c0e72335aad7
The resizing functions in resize.h and resize.c are useful for the
frame super-res experiment. These functions will be needed in both the
encoder and decoder, so the files have been moved into av1/common.
Change-Id: I66154b7ec0eade0df460c4f4cf8eaa5f663c8904
The SSE3 convolve functions do not work when scaling is involved. If
either x_step_q4 or y_step_q4 is not 16 scaling will occur and an assert
fails.
This patch creates a C version of av1_convolve, av1_convolve_c. This
function in turn calls all C versions of what av1_convolve calls. New C
versions of these called functions have been created where needed and
the same for the functions they call. This means that when scaling is
enabled no asserts fail. av1_convolve_c is called instead of
av1_convolve when x_step_q4 or y_step_q4 is not 16.
Change-Id: I604d2716e034e23a0553fb7004133d3075514a7a
1) block_raster_idx is actually raster order only when tx_size
is TX_4x8.
It's very specific, so we should put it near to the place it's
actually used.
2) Sync the meaning of block_idx on encoder/decoder sides
Change-Id: I7d37a992cb773503e29f9c0d9d2586e580aa6173
Directly use mbmi->mv[0] since the displacment of block center has
been calculated according to GM/WM model and stored in mbmi->mv[0].
Change-Id: I09bc88832d80197fccbb1df1518ad33fafa9756f
Adds an option to disable warp when obmc is used with a
warped motion neighbor.
This change will reduce the line buffer requirement for
mode/mv information since the warping parameters no longer
need to be stored.
Results: 0.05% increase in BDRATE on lowres
Change-Id: I98bd2dcdbbcd47e44f199803ed8996b0f3fd1756
Disable OBMC mode if the current block uses compound prediction.
Results if we only disable this combination for small
block sizes are also listed.
Loss of gain (lowres/midres/AWCYHL)
no compound : 0.230%/0.105%/0.15%
no compound <= 8x8: 0.043%/-0.016%/0%
no compound <= 16x16: 0.153%/0.029%/0.05%
Change-Id: I94c9d704172dd02e53f3b2004a8032a4f1265057
This function was incorrectly using transform width instead of height.
The bug wasn't caught yet, because all calls to this function currently
use square transform sizes only.
Change-Id: Id206c64aa26a8deecbbf90844220ad2f93230c15