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

20406 Коммитов

Автор SHA1 Сообщение Дата
Jingning Han 3ca0e67298 Fix enc/dec mismatch in global motion
Resolve an enc/dec mismatch issue when global motion is turned on.

BUG=aomedia:424

Change-Id: Ifad02fab4412588527ec7e8b24ab9b8c6327e5ba
2017-04-17 15:53:42 +00:00
Jingning Han 041c67b9c7 Singularity handling in Gaussian elimination
When the fwd Gaussian elimination process encounters diagonal
element as zero value, the linear equation does not have unique
solution. Return the linear solver state as unsolvable in such
case. This resolves a floating point exception issue due to divided
by zero in the loop restoration filter.

BUG=aomedia:437

Change-Id: I3c67525691a3003f9f470e8a0d5b4ee187cba963
2017-04-17 14:45:07 +00:00
Debargha Mukherjee 8c41024b48 Reduce prec of matrices/vectors for warp estimate
Reduces precision of matrices by 2 bits.

No material change in performance.

Change-Id: I549a27da1dcb381fb329c345ee280dbd86b45bac
2017-04-17 05:46:31 +00:00
Angie Chiang cf50989eb3 Fix rd bug in av1_search_txk_type
Change-Id: I585999b1709303dee8d1c7bf626b5cd0ef36341c
2017-04-16 23:44:54 +00:00
Angie Chiang 05917873d7 Correct the tx_type cost for lv_map exp
Change-Id: Ia5e565f910c6d0c0bc6b0dc62f72a5df1346d06e
2017-04-16 23:44:54 +00:00
Angie Chiang b6d770cd5d get_tx_type after av1_read_coeffs_txb_facade
In lv_map experiment, tx_type will be decoded after
av1_read_coeffs_tx_facade.
So one should only call get_tx_type after that.

This CL fix a mismatch happens in lv_map

Change-Id: I91193f0952e82e6ee53b63c51305f0eafbbf29c9
2017-04-15 18:32:31 +00:00
Angie Chiang 39b06eb87c Add plane to tx_type read/write/update functions
This is for lv_map experiment

Change-Id: Ie000f7850efac32ffb46b9a4679cff2814c6246a
2017-04-15 18:32:31 +00:00
Angie Chiang de58e49fb5 Decode tx_type in av1_read_coeffs_txb()
Change-Id: I3e9d9b3b59ee179b0fd24da2f0366ec841d2cfcf
2017-04-15 18:32:31 +00:00
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
hui su 3dfe608f3b Enable ext_intra by default
Change-Id: Id7a257fb56f2e435fadb9202f775c5d12fc1bea6
2017-04-14 22:33:12 +00:00
Debargha Mukherjee 6ae588f60a Reduce array sizes for Wiener update steps
Change-Id: Iff0cb1d492c7a8c2035b9bd752b1d00260135672
2017-04-14 20:26:47 +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 d5b89d0d07 ec_smallmul: Simplify binary read/write.
This should be the same number of operations as the non-ec_smallmul
version (though ideally we'd use the real 15-bit probability
natively).

Encoder output should not change, and all streams should remain
decodable without decoder changes.

Change-Id: I2998a77a02f566cd0c82c415395637acf49b5a97
2017-04-14 19:07:43 +00:00
Timothy B. Terriberry ead52876d6 daala_ec: Convert the decoder to use iCDFs
This only changes the internal coding engine. We convert CDFs into
iCDFs at the "bool" reader <-> daala_ec boundary.

Decoder output should not change.

Change-Id: I483dfe3e5588d2038c3c7ec4cd5ba62d6699b920
2017-04-14 19:07:43 +00:00
Timothy B. Terriberry 881f109bf3 daala_ec: Invert the internal state of the decoder
This removes one subtraction from the CDF search loop (reducing the
dependency chain for reading from the CDF) at the cost of one
increment and decrement during renormalization (easily absorbed by
the reorder buffer).

There should be no change in decoded output.

Change-Id: Ia7905bb8ca7c5d4ab73f23ccc61bcd3432349aa2
2017-04-14 19:07:43 +00:00
Timothy B. Terriberry 41b4f75b87 daala_ec: Convert the encoder to use iCDFs
This only changes the internal coding engine. We convert CDFs into
iCDFs at the "bool" writer <-> daala_ec boundary.

Encoder output should not change, and all streams should remain
decodable without decoder changes.

Change-Id: Id3ac7352926497bf6f7bc371ab9bc76e9a3569d5
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
Zoe Liu c3571bc88f Adjust encoder rate allocations for ext-refs
This CL is targeted to improve the objective/subjective quality of the
"ext-refs" coding tool.

Tuned the frame rate factors as follows:

(1) BRF_UPDATE:
    Decreased from INTER_HIGH (1.5) to GF_ARF_LOW (1.25);
(2) Both LAST_BIPRED_UPDATE and BIPRED_UPDATE:
    Increased from INTER_LOW (0.80) to INTER_NORMAL (1.00)
, which is to reduce the bits allocated to the BWEDREF frame whereas
to increase the bits allocated to the bi-directionally predicted
frames.

Obtained a coding gain in overall PSNR as follows, compared against
the original ext-refs:

lowres: BDRate -0.181%
midres: BDRate -0.090%
hdres:  BDRate -0.701%

Change-Id: Id001f3b124d833da9f80eba4cdec2ca3f6ba9d82
2017-04-14 18:28:44 +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
Dake He 97f56645a4 [optimize-b] Use a greedy search method
The greedy search method improves the BD-rate over the baseline by
more than 0.2% for lowres test set. Larger gain 0.55% is observed for hdres test set.

[2017.04.06] Cleanup to remove redundant computation. On a local linux
machine, the greedy method is now faster than the trellis method in
encoding the first 100 frames of foreman_cif. However, the BD-rate seems
to become smaller due to the recent changes to the codebase.
[2017.04.06-2] Style changes to meet the requirements.
remove "greedy-optimize-b" in configure
[2017.04.10] Move the changes under the macro USE_GREEDY_OPTIMIZE_B
[2017.04.11] Adjust rdmult to accommodate CpuSpeedTest
[2017.04.12] Set USE_GREEDY_OPTIMIZE_B to 0 at the request of debargha@.
[2017.04.13] Move greedy implementation of optimize_b into a separate
function with the same name (selected by USE_GREEDY_OPTIMIZE_B, default
is 0)

Change-Id: Ic15534f8d696d5f02e8f2e3e9f08b52e41e9efd2
2017-04-14 17:07:43 +00:00
Sebastien Alaiwan e5728a955a Simplify coefficient range checking
Deduplicate implementations of check_range, and deduplicate the call
to aom_read_bit.

Change-Id: I63b023758248717125e4df6d1c382d4c517bae84
2017-04-14 16:35:24 +00:00
Angie Chiang a9f9a31cb2 Modify av1_read_tx_type for lv_map exp
Change-Id: I422dfd9d7afe9f7baa04a962e19c8a92d5c12eeb
2017-04-14 16:16:23 +00:00
Angie Chiang 1628fccb3f Write/update tx_type per txb in lv_map exp
Change-Id: I052721017cddd57ff9995e8dd442e4b3436a0b48
2017-04-14 16:16:23 +00:00
Angie Chiang b14b73f92f Add av1_update_tx_type_count()
This will make the code cleaner and lv_map experiment will be able
to reuse this function.

Change-Id: I885336117daa0090e16f1bb7a0c3e7bb54105410
2017-04-14 16:16:23 +00:00
Angie Chiang c31ea682c2 Modify av1_write_tx_type for lv_map experiment
Change-Id: If129748d918995efcc58169d153a0950eeec5efb
2017-04-14 16:16: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 de45e15cdc Fix cmake build.
Missing a ')' in test.cmake.

Change-Id: I9559692e6643f3c07f68ff67c6cf766d8f15c95c
2017-04-13 21:07:46 -07:00
Tom Finegan 6c86ace0a5 Fix CONFIG_HIGHBITDEPTH in cmake.
Broken since 9d247355 when aom_dsp/x86/highbd_convolve_avx2.c was
added to aom_dsp.mk.

Change-Id: Ide6779209a546e1bf84a4997c0cdcf3b2bc2b92b
2017-04-14 03:51:19 +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
Tom Finegan 8b370b6e65 Add mips64 support to the cmake build.
Requires use of new cmake toolchain file:
$ cmake path/to/aom -DCMAKE_TOOLCHAIN_FILE=path/to/aom/build/cmake/toolchains/mips64-linux-gcc.cmake

MSA is supported via addition of -DENABLE_MSA=1. Support for i6400
and p6600 targets can be enabled by passing -DMIPS_CPU=i6400 and
-DMIPS_CPU=p6600 respectively.

BUG=https://bugs.chromium.org/p/aomedia/issues/detail?id=76

Change-Id: I7b8949a07e9be63cd6177e4ff4dbc02180f12a60
2017-04-13 17:06:03 -07:00
Angie Chiang f1880e1cb9 Add breaking rule in the while loop of read_golomb
The while loop may become infinite loop due to bitstream error.
Therefore, we add a breaking rule to avoid that.

Change-Id: I5bcda7dea846e280b59abc97c42baf334bca2603
2017-04-13 23:27:23 +00:00
Angie Chiang 8d6bc80b53 Use max_block_wide/high in av1_write_coeffs_mb
This fix the invalid tx_type error happened when mb_to_right_edge
is negative

The invalid tx_type error will cause bitstream error and then
let the decoder hang in the while loop of read_golomb()

Change-Id: Ide6c3497cdd5b69b20b4b093241ed89ccc1b0f00
2017-04-13 23:27:23 +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
Zoe Liu 5b55c88216 Add compound-singleref (compound mode using single ref)
This new coding tool is targeted to add new inter compound modes using
single reference frame - initially NEAREST_NEARMV for single reference
prediction.

Change-Id: I415d40dc285a46a79680b4da0c3f2e2f3784b688
2017-04-13 20:53:19 +00:00
Tom Finegan d148c9637c Add mips32 support to the cmake build.
Requires use of new cmake toolchain file:
$ cmake path/to/aom -DCMAKE_TOOLCHAIN_FILE=path/to/aom/build/cmake/toolchains/mips32-linux-gcc.cmake

DSPR2 and MSA are supported via addition of -DENABLE_DSPR2=1 and
-DENABLE_MSA=1 respectively. Note that the latter requires the addition
of -DMIPS_CPU=p5600.

BUG=https://bugs.chromium.org/p/aomedia/issues/detail?id=76

Change-Id: Idf7d7f2daecf18cc45b834166eaf34ee9f414d49
2017-04-13 13:24:33 -07: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
Jingning Han 9f07be161d Align frame_context to 16 bytes in TileData
BUG=aomedia:432

Change-Id: Ide94ffbf5ed0f25ac64892f02364b67cefa5fd15
2017-04-13 17:23:40 +00:00
Steinar Midtskogen 43edb7b13b Avoid invalid parameter combinations in CLPF test
Change-Id: I1aaa06846ad409dd83ab50a0fb34c8a7e77e45e7
2017-04-13 08:41:36 +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
Steinar Midtskogen 1b2b739bd2 Add s8 -> s16 unpack instrinsics
Change-Id: Iec22c6442c55a5908d858766ff6dfb8bff69835d
2017-04-13 07:48:44 +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
Zoe Liu c670e82f11 A temporary fix on the RAM issue for upsampled referencing
When ext-refs is on, the encoding of HD videos, e.g. 1080p sequences
will cause the failure to allocate up-sampled frame buffers. This CL
temporarily turn off the use of upsampled references when ext-refs is
on for any video resolution larger than 720 in either dimension. A
more effective scheme for up-sampled referencing should be later
considered.

With the fix, the AWCY performance gains of ext-refs, vs baseline are:

PSNR Y
Average -2.55%
1080p   -2.81%
360p    -2.38%
720p    -3.10%

Change-Id: Ica5e75d82190cd68e64c536503e3559f1cfdbdd1
2017-04-12 23:30:49 +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
Jingning Han f6214b9647 Properly release the memory space in encode_frame_to_data_rate()
Explicitly release the locally allocated memory space in
encode_frame_to_data_rate(). This resolves an memory space leak
issue.

BUG=aomedia:431

Change-Id: I46f4b38b46ed951d42c622e88ce00afc566e7eae
2017-04-12 21:44:07 +00:00
hui su d2f12ba5d4 rdopt.c,cosmetics: fix comments for av1_dist_block()
Change-Id: I7a75947cdc4fcfe5b84ea702fa44ee51d7e406de
2017-04-12 21:06:33 +00:00