Граф коммитов

1011 Коммитов

Автор SHA1 Сообщение Дата
Yi Luo d4e3c21acc Fix EOB threshold array size
- TX_SIZES_ALL is the correct macro to cover all txfm sizes.

BUG=aomedia:435

Change-Id: I035a8395a78982e5b19857a3ba5f9d9f657b7902
2017-04-14 23:52:28 +00:00
Timothy B. Terriberry 5b4a7264b5 pvq: Remove non-dyadic CDF initialization.
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
2017-04-14 19:07:43 +00:00
Timothy B. Terriberry 033e53688f daala_ec: Remove non-dyadic functions.
Encoder output should not change, and all streams should remain
decodable without decoder changes.

Change-Id: Id1f1b0f2f02c3b46f150a93c451bf48abd0782ca
2017-04-14 19:07:43 +00:00
Ryan Lei dd6fa06a06 update parallel_deblocking experiment with more filter tap options
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
2017-04-14 18:49:07 +00:00
Sarah Parker 4c10a3c287 Refactor gm/wm/obmc for cleaner warping interactions
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
2017-04-14 18:04:23 +00:00
Frederic Barbier 550a117579 Fix loop-filter in ALT_INTRA
Avoid future issues by adding related sanity check on mode_lf_lut size.

Change-Id: I689a90c07ee2b79debf838304cfca0e34783e5bf
2017-04-14 07:18:30 +00:00
Jean-Marc Valin 70f0e5eb8b Only filter the blocks we need to filter (rather than use threshold=0)
Change-Id: Iddb2103452817e9624a28794cab923f00c3e9924
2017-04-14 05:59:49 +00:00
Yaowu Xu 29f1568e14 Use int16_t for warp parameters
This is to fix compiling issues with aom-highbitdepth.

Change-Id: I66ee73e014a028536747e55209f20be81e906267
2017-04-14 04:36:25 +00:00
Tom Finegan 18c663439c Fix CONFIG_FILTER_INTRA in the cmake build.
Properly guard usage of av1_filter_intra_taps_4 in
av1/common/x86/filterintra_sse4.c.

Change-Id: I74d589342e4669765d0d4700c329c5f3eced9530
2017-04-14 03:51:08 +00:00
Yue Chen 85c7e90637 Reduce the bandwidth requirement of sub8x8 chroma obmc
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
2017-04-13 21:07:55 +00:00
Debargha Mukherjee 16056f5b22 Adds option to use 1/32 subpel precision for gm/wm
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
2017-04-13 18:48:43 +00:00
Yi Luo cfe0fede62 Add EOB threshold calculation for ADAPT_SCAN
Change-Id: I0c58fb5ee2a77ae15f6243b1c645dbe601171e67
2017-04-13 18:08:24 +00:00
Steinar Midtskogen 7b069a57f0 CDEF: Optionally filter 8x8 skip blocks
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
2017-04-13 07:58:05 +00:00
Jean-Marc Valin 87c24a1d15 Can't skip deringing on threshold=0 because chroma needs direction
Change-Id: I7481fe139e1c9454c73948de3d8b8fefaf37e79a
2017-04-13 05:14:26 +00:00
Sarah Parker a036d86f4c Disable neighbor warping for gm + obmc
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
2017-04-13 01:09:15 +00:00
Sebastien Alaiwan 71e87847eb Homogenize configuration option name.
Rename '--enable-aom-highbitdepth' to '--enable-highbitdepth'

Change-Id: I1de13c3508c30c552532993419d8ace326142ab6
2017-04-12 22:29:11 +00:00
Timothy B. Terriberry 44bb6d06ca pvq: Remove support for disabling nodesync.
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
2017-04-12 16:10:05 +00:00
Angie Chiang 18ad894a23 Fix invalid tx_type returned by get_tx_type
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
2017-04-11 23:56:30 +00:00
Urvang Joshi ca7ec4b04f Simplify has_top_right() and has_bottom_left().
- More meaningful variable names
- Comments to make code more readable.
- Variables declared near use etc.

Change-Id: I1a87d52a73aeefbaee4b9190861155dfcf05985c
2017-04-11 22:30:01 +00:00
Jingning Han b8eed01dcc Use scale_chroma_bsize() function predict_square_intra_block()
Change-Id: Iacc9fd0ddb58066e914f831f8fadc5e3519fd8c4
2017-04-11 21:47:23 +00:00
Jean-Marc Valin a8764951f6 Avoiding extra runs through skip flags
Change-Id: Ia773950145dcee58dd99cb996c4827afd554a3a9
2017-04-11 21:18:57 +00:00
Sean Purser-Haskell e3bc0da107 Change parameter limit to be <1, not <=1. This saves a bit.
Change-Id: Ia9220b7b499567e07307444defe86a1d386cb8f9
2017-04-11 11:22:56 -07:00
Sean Purser-Haskell 6e1c7d77b2 Clip 128s from warped_filter, so that all taps fit into 8 bits.
Change-Id: I88686147ef406b10691cc3e49f5a1a21fe9de029
2017-04-11 18:10:12 +00:00
Jingning Han 2d2dac2b5f Fix YUV444 lossless mode unit test
Properly scale the chroma component size per color plane.

Change-Id: Ibf192d0e99f2fc3611beb82a3a9951ad09b292d3
2017-04-11 17:52:11 +00:00
Angie Chiang 2b58a62271 Modify get_tx_type for lv_map experiment
This CL will break lv_map experiment because it's a partial
implementation for transform kernel selection

Change-Id: I927cb70c2fb0d079d485c1a5ca32c0e72335aad7
2017-04-11 17:35:48 +00:00
Angie Chiang 808d859fc7 Add search_txk_type
Change-Id: I50493fa9daf2de8859608d57f8d2010842c9eb07
2017-04-11 17:35:48 +00:00
Angie Chiang bc2288cc7d Add av1_inverse_transform_block_facade
This function will apply av1_inverse_transform_block to
pd->dst.buf directly.

Change-Id: I703762c2d3cee2af626c190fe3b3995e3cce2082
2017-04-11 17:35:48 +00:00
Zoe Liu 7f24e1b019 Remove the single ref inter mode NEWFROMNEARMV
Change-Id: I246da885154303d139f5d97c53ebfc55d6dc82ca
2017-04-10 20:30:56 -07:00
Fergus Simpson d0565006ca frame-superres: Move resize from encoder to common
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
2017-04-10 22:12:39 +00:00
Debargha Mukherjee 27f6e66e22 Reduce precision of shear parameters to 16 bits
Change-Id: I9cd9362edbb7b642f4b632bf574abfe5b2159ff3
2017-04-10 20:54:20 +00:00
Sarah Parker 27f3f98855 Turn on SEPARATE_GLOBAL_MOTION by default
Change-Id: I7e64307f4bd8821e0abfe804d00d022414759706
2017-04-10 20:14:15 +00:00
Fergus Simpson fc59389f0f scaling: Avoid SSSE3 convolution instructions when scaling
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
2017-04-10 20:11:42 +00:00
Angie Chiang 752ccce724 Use block_idx rather than block_raster_idx
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
2017-04-10 20:08:28 +00:00
Debargha Mukherjee d49c5c414c Reduce max mv allowed for local warp
Reduces value from 512 to 256.

Change-Id: Ia1f924e8b0f38baee812740d7f90e6b95c6df15f
2017-04-10 17:17:04 +00:00
Debargha Mukherjee 1e6e130672 Add clamping to local warp parameters
Change-Id: I1665b3812726fd40326a4ac3da79dc316529e17e
2017-04-08 07:11:50 +00:00
Timothy B. Terriberry 29cdf70f04 new_multisymbol: Fix another illegal CDF value.
Thanks to Alex Converse for the report.

Change-Id: I47f6cb6de52ca31ab92de6d74a11a16063a8023f
2017-04-08 05:53:21 +00:00
Steinar Midtskogen 95a2f869c4 Make CDEF handle 4:2:2 and 4:4:0 properly
Change-Id: I6570518c16d0d7707ddf4e8e8ad1b756eb5a7648
2017-04-08 03:35:52 +00:00
Jean-Marc Valin 40c6ffc0f0 Fixes mi_wide_l2 vs mi_high_l2 errors
That should help 4:2:2

Change-Id: I299e43db5b75880294c501bc0ad322823e70590c
2017-04-08 00:42:36 +00:00
Yi Luo 49378566e5 Add extended partition size in txfm_partition_context()
Change-Id: I66fdc495b337debbc8599c9b9ae124cb27758b92
2017-04-07 23:26:31 +00:00
Jingning Han 589055540e Fix intra boundary condition for YUV444 in cb4x4
Unify the intra boundary condition in the cb4x4 mode for all the
YUV 420/422/444 formats.

Change-Id: I97f048d5d69cbe91b6b53ef2192b2d9418d2a845
2017-04-07 23:23:29 +00:00
Sarah Parker f178329191 Add gm parameter coding based on ref parameters
Change-Id: Ic2344a6475b967fa07f70b3ffad2714de657bb49
2017-04-07 22:39:42 +00:00
Debargha Mukherjee 65bd6da060 Minor change in shifting for warp affine int
Change-Id: I5546263d3b3ce4c1b9b70175bc4e6a301b1c8463
2017-04-07 21:49:57 +00:00
Urvang Joshi 982d985297 Remove an obsolete comment about intra mode tree.
Change-Id: Ie3cbc3161c202724c0c0d500c908206f3639ac4d
2017-04-07 18:57:39 +00:00
Yue Chen ff61610f31 Simply calculation of sample projections in WM+GM
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
2017-04-07 18:30:59 +00:00
Debargha Mukherjee 604d846a04 Do not warp for warped-motion neighbors with obmc
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
2017-04-07 18:26:42 +00:00
Jingning Han d3a6443df0 Rework sub8x8 chroma reference check to support non-420 format
Make is_chroma_reference() account for all the YUV420, 444, and
422 formats.

Change-Id: Ia87e51894493dcea86843194a34e5de05799248a
2017-04-07 18:05:52 +00:00
Steinar Midtskogen daab348db1 Restrict dering thresholds and add damping to RDO
High latency, cpu-used=0:
   PSNR | PSNR Cb | PSNR Cr | PSNR HVS |    SSIM | MS SSIM | CIEDE 2000
-0.0947 |  0.0968 |  0.1203 |  -0.0325 | -0.0648 | -0.0290 |    -0.0099

Low latency, cpu-used=0:
PSNR | PSNR Cb | PSNR Cr | PSNR HVS |    SSIM | MS SSIM | CIEDE 2000
-0.0635 |  0.1315 | -0.0771 |  -0.0122 | -0.0598 |  0.0111 |    -0.0362

High latency, cpu-used=4:
   PSNR | PSNR Cb | PSNR Cr | PSNR HVS |    SSIM | MS SSIM | CIEDE 2000
-0.1178 |  0.0026 |  0.1003 |  -0.0609 | -0.1287 | -0.1119 |    -0.1249

Low latency, cpu-used=4:
   PSNR | PSNR Cb | PSNR Cr | PSNR HVS |    SSIM | MS SSIM | CIEDE 2000
-0.0404 |  0.0547 |  0.0976 |   0.0042 | -0.0585 | -0.0234 |    -0.0245

Change-Id: I48bcdb4d3d27512160ae1e1a36308dd62cf54c59
2017-04-07 04:49:00 +00:00
Yue Chen 8636da613b Disable OBMC + compound
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
2017-04-06 22:27:52 +00:00
Urvang Joshi 1c2479747c av1_has_bottom() Bugfix.
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
2017-04-06 22:23:49 +00:00
David Barker 521383ae59 Add SSSE3 highbd warp filter
Change-Id: Ic3b8508c3364aecff1b2f53c7246a5e381b63018
2017-04-06 22:00:10 +00:00