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

21043 Коммитов

Автор SHA1 Сообщение Дата
Alex Converse ea16687084 Fix build with global motion disabled
Change-Id: I1c00925f83c6a858b0e799ddd90f241570a40575
2017-05-11 19:34:24 +00:00
Alex Converse 619576b412 Deduplicate write_mb_modes_kf declaration
Change-Id: I325f781759c1087815a38ff7c12ea31b8e444575
2017-05-11 19:31:32 +00:00
Yaowu Xu 5ab58722c6 Add missing initializations of HBD buffers
BUG=aomedia:530

Change-Id: I6889a9b7ba05785ea6d4c684e0e12dcc85fdca7c
2017-05-11 19:01:22 +00:00
Urvang Joshi 56bc7ef633 dr_prediction_z2: check that index into 'left' is valid.
For 'left' array indices -1 onwards are valid (left[-1] == above[-1] ==
the top-left reference pixel).
So, make sure that 'base2' is in that range too.

Change-Id: If5118d97d4ef85f6520363bd648bfe6948c1211f
2017-05-11 18:18:24 +00:00
Sean Purser-Haskell 14b8112b42 Extra rounding to let hw to use narrower integers.
Change-Id: I175d6ff03f31a2e0d2fe7cd1c3852210d6e0ddf5
2017-05-11 17:30:02 +00:00
Luc Trudeau f89056aa06 [CFL] Add CFL alphas to inspection data
Change-Id: I4269d5b808e8809199a24b7511a3dee029f31820
2017-05-11 15:59:28 +00:00
David Barker f7a5ee536b More accurate chroma warping
Previously, the projected positions of chroma pixels would effectively
undergo double rounding, since we round both when calculating x4 / y4
and when calculating the filter index. Further, the two roundings
were different: x4 / y4 used ROUND_POWER_OF_TWO_SIGNED, whereas
the filter index uses ROUND_POWER_OF_TWO.

It is slightly more accurate (and faster) to replace the first
rounding by a shift; this is motivated by the fact that
ROUND_POWER_OF_TWO(x >> a, b) == ROUND_POWER_OF_TWO(x, a + b)

Change-Id: Ia52b05745168d0aeb05f0af4c75ff33eee791d82
2017-05-11 11:25:07 +00:00
Yi Luo 40f22ef85b Partial IDCT 32x32 avx2
- Function level improvement (ms):
Functions       ssse3  avx2   Percentage
idct32x32_1024  794    374    52.9%
idct32x32_135   354    169    52.2%
idct32x32_34    197    142    27.9%
idct32x32_1     n/a     26    n/a

- Integrating in default scan order.

Change-Id: I84815112b26b8a8cb800281a1cfb1706342af57d
2017-05-11 05:48:44 +00:00
David Barker ee6743235d Vectorize corner matching function
Add an SSE4 version of compute_cross_correlation() from
corner_match.c. This function is about 3.4x the speed of
the scalar code; determine_correspondence as a whole is about
2.5-3x the speed it was previously.

BUG=aomedia:487

Change-Id: I707b7cfd5c513c025d3ee7fb6a5f1fa335ecd495
2017-05-11 00:37:16 +00:00
Urvang Joshi f695d6596b smooth_pred: 1D weights array to use less memory.
As the block sizes are powers of two, we can index into the weights
array as sm_weights_array[bs] now.

This uses 2 * MAX_BLOCK_DIM memory, instead of NUM_BLOCK_DIMS *
MAX_BLOCK_DIM earlier.

Change-Id: I55bcedc188b8ed7def719c4d002c1fe2ec5e1b7f
2017-05-10 22:00:00 +00:00
Angie Chiang f5733fa71e Use tx_size_wide/high_unit in get_txb_ctx()
Change-Id: I88606ad4e0841fb1ccd18a0e63338723157451e5
2017-05-10 20:16:55 +00:00
Angie Chiang 168445c17b Use get_level_count_mag() in get_level_ctx()
Change-Id: I405b4fca33d7ee6f6010874bde59e1e25877a401
2017-05-10 20:16:55 +00:00
Angie Chiang 20221d9888 Add get_level_count_mag()
This function will be re-used for lv_map's rd optimization

Change-Id: If015fe2319f6b3abdeeb3e5d3e23f705fc1454e2
2017-05-10 20:16:55 +00:00
Luc Trudeau e21c08117e [CFL] use CDF_SIZE macro
EC_ADAPT stores the count at the last position. As such, the CDF_SIZE
macro adds 1 to the array size. This resolves valgrind warnings about
jumps on uninitialized variables.

Change-Id: I58d607a57756cb166a9ae5c4565537ce202183fd
2017-05-10 18:41:08 +00:00
Tom Finegan 4cbf7a3e86 Fix handling of empty $LIBAOM_TEST_DATA_PATH in test_worker.cmake.
Variable needed quoting. Without the quoting the error was somewhat
cryptic.

Change-Id: I76dd9715b9a91436a2b10f8cf7fcbd70ae672d23
2017-05-10 18:20:58 +00:00
Tom Finegan b7336fb936 Enable FilterIntra tests in the CMake build.
BUG=https://bugs.chromium.org/p/aomedia/issues/detail?id=76

Change-Id: I6b51219ff28758b38379033dc3ab11bf288ac3ce
2017-05-10 18:20:50 +00:00
Tom Finegan b688eb7a27 Sync CMake build defaults with the configure build.
- CONFIG_EXT_TX 0 => 1
- Add CONFIG_SMOOTH_HV

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

Change-Id: I44f42e6cda5433d6d2d0993778091308900debbb
2017-05-10 18:20:38 +00:00
Tom Finegan 4e351d3984 Remove build/cmake/rtcd_config.cmake. Generate it instead.
BUG=https://bugs.chromium.org/p/aomedia/issues/detail?id=76

Change-Id: I3db6022d361ce5e8b3db3d49b5e71b4367c355a1
2017-05-10 18:20:29 +00:00
Tom Finegan fb0ad55f30 Add ccache and distcc support to the cmake build.
BUG=https://bugs.chromium.org/p/aomedia/issues/detail?id=76

Change-Id: Ia5622b531d17bb1c67fe4f4bc01e57dd3560021e
2017-05-10 17:45:54 +00:00
Jonathan Matthews f30ae3ebb4 Fix build at top of trunk
Introduced in Change-Id: If9d98e49cee63f40085b179652bfacc31ff462ea

BUG=aomedia:527

Change-Id: Idfa609dc05a5981d83fa5d77c8c51b02bdf9abef
2017-05-10 16:50:33 +00:00
Nathan E. Egge 2f28c2da41 Fix ifdef guard on av1_set_mode_cdfs() declaration.
Change-Id: I8f67a222c27d12fc43cdc2b0f568a3c429901801
2017-05-10 16:41:14 +00:00
Nathan E. Egge c27ef0c835 Fix ifdef guard on av1_set_mv_cdfs() declaration.
Change-Id: I253a3dfdc4329c19fd8c9aca32971c62cea864b3
2017-05-10 16:41:14 +00:00
Nathan E. Egge 2879165307 Force EC_MULTISYMBOL on when --enable-cfl.
The cfl experiment depends on ec_multisymbol.

Change-Id: Ibbdf810b6c586f81fb8bcefa39696c7033970c47
2017-05-10 16:41:14 +00:00
Sebastien Alaiwan 92400ab736 Enable build support for high-bitdepth by default
This causes the HBD operating path to be compiled by default, allowing
default builds to handle all AV1 profiles, instead of only Profile 0.
This doesn't change the current behaviour of the code.

This will help ensuring the HBD operating path continues to compile.

BUG=aomedia:460

Change-Id: I8774b9586b1da479ce3882df482ac3cd3048a9d5
2017-05-10 16:29:51 +00:00
Jingning Han 945a6a1faa Make cdef boundary condition check support 128x128 block
This resolves the performance issue in ext-partition. The
compression performance is up from 0.9% loss to 0.4% gains in
midres.

Change-Id: I0dfeee828dbc114842c72361683271487108c593
2017-05-10 16:23:51 +00:00
Jingning Han 80f74b0ae4 Simplify logic in write_modes_sb
Remove redundant #if statements and condition checks.

Change-Id: Ic7885564f21730ca67279202a9bcd51f45a04414
2017-05-10 16:23:45 +00:00
Nathan E. Egge 23e4e7b679 Simplify ifdef's in encoder.
Change-Id: I110f7b6cad1935351f8d379bc8a208363e07ecd0
2017-05-10 16:20:35 +00:00
Yaowu Xu f35f527f21 Change to use defined macros
Fixes compiling issue of using un-defined macros.

Change-Id: Icf754083c9797c3e141ef247bcd4aa6288ef8877
2017-05-10 08:00:02 -07:00
Tom Finegan d46b4d30cb Add Emscripten support to the CMake build.
Supporting Emscripten requires modification of all uses of the
target_link_libraries() function to match the form
of the target_link_libraries() call in Emscripten.cmake.

The AOM_LIB_LINK_TYPE variable has been added to allow for
flexibility on the libaom side when using toolchains that
behave similarly to Emscripten.cmake wrt
target_link_libaries().

To use CMake for an Emscripten build, first install Emscripten, then:
$ cmake path/to/aom -DCMAKE_TOOLCHAIN_FILE=path/to/Emscripten.cmake -DAOM_TARGET_CPU=generic

BUG=aomedia:76,aomedia:468

Change-Id: I22c7df7912ecfdbc2a52180086b205cc8dcfc0c6
2017-05-10 14:23:18 +00:00
Debargha Mukherjee 0f50dcd43d Change wedge primitive functions
Change-Id: Ia2ab55cf13dd269a42653cfd810ed287883111c0
2017-05-10 03:18:30 +00:00
Sarah Parker 7bb84f3003 Lower base weight in difference modulated masks
This improves peformance on the lowres set by about 0.05%

Change-Id: I2b7b7ae11eb96ac6ff582438bcc8e12925f1e2b3
2017-05-10 03:18:16 +00:00
David Barker 40a42d4bb2 Fix for the use of prev frame mvs when ext-refs is on
Also fix a mismatch for resizing with ext-refs enabled.

There are various preconditions which need to be true for it to
be valid to set cm->use_prev_frame_mvs = 1, including that the
sizes of this frame and cm->prev_frame must be equal.

With ext-refs enabled, we would sometimes decide to change
cm->prev_frame to point to the LAST_FRAME reference, without
re-checking the preconditions. If the LAST_FRAME was smaller
than the current frame, this could lead to reading garbage off the
end of its mv array, and eventually to an encode/decode mismatch.

We fix this by rewriting the preconditions as checks on
cm->prev_frame directly (rather than using cm->last_width and
cm->last_height), and by testing the preconditions after any
possible adjustment.

This should not affect the bitstream unless ext-refs is enabled,
but may affect the bitstream with ext-refs even if resizing is
not used.

BUG=aomedia:521

Change-Id: I7dfd9ba82cdf77acc2e27e0c9f3aee21d6afeb54
2017-05-10 03:06:41 +00:00
Debargha Mukherjee ad8be034f7 Build fix for ext-inter
Introduced in https://aomedia-review.googlesource.com/c/11432/

Change-Id: Icbcd2caebd1d0f5451e487722f2078d21e70ee41
2017-05-09 23:47:59 +00:00
Alex Converse daa15e4e7a intrabc: Allow ext_tx transforms
objective-1-fast results:

sequence       PSNR    PSNR HVS    SSIM    CIEDE   APSNR   MS SSIM VMAF
average        -0.02    0.01       -0.02   -0.03   -0.02    0.00    0.06
1080p           0.02    0.01        0.03    0.00    0.01    0.02    0.09
1080p-screen   -0.32   -0.28       -0.32   -0.44   -0.31   -0.27    0.00
360p            0.06    0.14        0.10    0.10    0.08    0.11    0.22
720p            0.00    0.04       -0.05    0.01    0.00   -0.01   -0.10
wikipedia_420  -1.04   -0.95       -1.05   -1.30   -1.03   -0.88   -0.29

Change-Id: I30ce8a869daf1c3ed539ffed552786cbb785e7d0
2017-05-09 22:22:59 +00:00
Thomas Daede 1206a685dc Re-add encoder speed 8, but without VAR_BASED_PARTITION.
Partial revert of "Remove encoder speed 8 in AV1"
6c29f464e4.

Change-Id: I474e26700047854353347ce97cc7d545e3ca0642
2017-05-09 22:17:17 +00:00
Yi Luo 165adf8ec6 Use saturation addition to do rounding for avx2 IDCT
- Found this bug when increasing unit test number to 10000.
- Unit test is therefore also updated.

Change-Id: I938e96f6ebd35ae1bd8affebf8665e1da49a324b
2017-05-09 22:16:50 +00:00
Yaowu Xu 54cae22e70 Reduce number of AltRefForcedKeyTestLarge tests
BUG=aomedia:506

Change-Id: I14c72d8508f250946f8feb221bcd5a48521b787c
2017-05-09 22:11:59 +00:00
Yaowu Xu 93d3001bde Reduce number of video frames in set_maps test
BUG=aomedia:506

Change-Id: I29d5c68ffe9bc9f440d7c0e8f2e134dd64267d78
2017-05-09 21:33:39 +00:00
Yaowu Xu 37fe5fbced Prevent access array with -1 index
Change-Id: I9fdf3b543a00700d47b3012b3de7b30ae455900f
2017-05-09 21:25:02 +00:00
Yaowu Xu 446d037bdc Reduce number of tests for DatarateTest
BUG=aomedia:506

Change-Id: I8b52eadefa1946c082bdd06f07657aa2d43e3f2c
2017-05-09 19:40:00 +00:00
Urvang Joshi 330aec864c rdopt.c: Add intra-only sanity checks.
Adds sanity checks to methods that should only be called for intra
blocks.

Change-Id: I34b24dbb24f6d35ff42bbdf31d29eef2980a05b4
2017-05-09 18:26:18 +00:00
Alex Converse 8d38fb74f3 Move AOM_CHECK_MEM_ERROR away from the ABI defining aom_codec_internal.h
Change-Id: I0c2ae6110142ce6fc6bedf10f1ba3778a8c19c3e
2017-05-09 18:08:08 +00:00
Jingning Han df068334b5 Fix enc/dec mismatch in ext-partition and cdef
BUG=aomedia:455

Change-Id: I97ecab4f01417734c83a9b8886f145236c9b38a5
2017-05-09 17:06:09 +00:00
Tom Finegan fc1aac56f7 Default CMake build type to release with debug info.
Use RelWithDebInfo when CMAKE_BUILD_TYPE is empty in
non-emscripten builds.

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

Change-Id: Ie1e8aba5949f28e66056e2efdff1a0fb26ad04bb
2017-05-09 16:15:19 +00:00
Jingning Han c44009c160 Rework inter prediction process in cb4x4 mode
Use 2x2 inter prediction for chroma component. This improves the
compression performance by 0.6% for lowres.

Change-Id: If9d98e49cee63f40085b179652bfacc31ff462ea
2017-05-09 16:15:12 +00:00
Sebastien Alaiwan b507bf192a Reduce variable scope
This fixes a warning about unused computed values when
CONFIG_HIGHBITDEPTH is 1.

Change-Id: Ibf1076c4838f750da4a1b940b550ef8ecac6ba02
2017-05-09 16:11:56 +00:00
Fergus Simpson fecb2abc4e resize-refactor: Change resizing process with helpers
Adds three new helpers and changes one other. The intention of this is
to make the triggering and function of resizing simpler. The new process
is to resize to the next state and then update the current state to
match. The new helpers reflect this change and make the overall flow
simpler.

resize_pending is now a helper instead of a member, so it doesn't need
to be raised manually. A resize is pending when the numerator or
denominator of the next resize state is different from the current one.
resize_pending could be 1 (scale down), 0 (no change), or -1 (return to
original resolution if 1-pass CBR), but now it can only be 1 or 0. To
return to the original resolution just set the scale to 1:1. This
reduces complexity with no change in functionality.

resize_unscaled just returns 1 if the current numerator and denominator
are equal. This makes some if conditions cleaner.

resize_step makes the current scale equal to the next scale. This
signifies that a resize is complete and will cause resize_pending to be
false until the next state is changed. This is the end of the new
resizing procedure.

av1_calculate_coded_size has been changed to calculate the next size
instead of the current size. The current state can't be updated until
the resize is complete because if it were, the resize_pending state
would drop and the resize wouldn't finish. This just means the next
resolution is the target resolution until the resize is complete.

Change-Id: I5d5855cc83f532d3a8b1f8853ba70a0d43221fbf
2017-05-09 16:08:13 +00:00
Sebastien Alaiwan e13a11f34f Fix warning about unused functions
Change-Id: Ia6707cf50441f757fb053daeae85fb2d0c9b135e
2017-05-09 10:54:57 +02:00
Zoe Liu dd0d426482 Remove the incorrect comment
The element of "idx" in the data structure of RefBuffer is a
connection between AV1_COMMON::RefBuffer and
AV1_COMMON::BufferPool::RefCntBuffer.

It is being used currently in many places in both the encoder and the
decoder. "idx" is not only used to track whether a reference buffer is
alive, but also serve as the connection to RefCntBuffer which contains
info that RefBuffer itself cannot access.

Change-Id: I5ccdb9c2afe840d04a025da359a704f5fc216ddd
2017-05-09 02:56:04 +00:00
Zoe Liu 3ca58dfbf7 A small cleanup on LOWDELAY_COMPOUND
BUG=aomedia:442

Change-Id: I98ada843016d0dd046f89bbcb2e9ae72442a101e
2017-05-09 02:54:54 +00:00