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

20318 Коммитов

Автор SHA1 Сообщение Дата
Steinar Midtskogen 3c33def72c Limit line buffer to 6 lines
Change-Id: I6fedfa6427865e9a37fbdf9d9c1bf8be55222cba
2017-03-21 21:27:09 +00:00
Steinar Midtskogen d280a84554 Remove boundary checks in CLPF
Change-Id: Icc93783f47fe7fe3aac395aadcc8bbc307dae1fb
2017-03-21 21:27:09 +00:00
Thomas Daede 6eca835fff Remove "best" deadline parameter from aomenc.
This option increases runtime by 20% and is only marginally
better than good cpu-used=0:

   PSNR | PSNR Cb | PSNR Cr | PSNR HVS |    SSIM | MS SSIM | CIEDE 2000
-0.3382 | -0.3911 | -0.4875 |  -0.2982 | -0.2992 | -0.3164 |    -0.3686

It is also not well integrated with speed_features.c, which is
the main reason for the removal.

Change-Id: If88c50367f63b860ad57f650869b978ec7734aad
2017-03-21 20:15:38 +00:00
Fergus Simpson 10fb9fb24a handle_inter_mode: Motion mode RD calc to function
Refactors the end of handle_inter_mode into a new funciton. This code
is responsible for calculating an accurate RD for the SIMPLE_TRANSLATION
motion mode in the simplest case, and does the same for other motion
modes as their experiments are enabled.

This patch aims to do as little as possible to the code inside the
function - that is left to later patches to reduce the complexity of
this diff.

Change-Id: I62bf5aae34594b0a1dc4813aeba99e675d6db374
2017-03-21 19:37:16 +00:00
Angie Chiang 0b205e687c Update scan count in update_and_record_txb_context
Change-Id: I497221e91c576bc684ee65bcdbab1469b8821fe1
2017-03-21 17:51:30 +00:00
Angie Chiang 29b0fadb56 Add av1_set_contexts in av1_read_coeffs_txb_facade
Change-Id: I45c8e26214cedb822ee5c38556ad03e3f2ad66a5
2017-03-21 17:51:30 +00:00
Angie Chiang c484abe71f Set mbmi_ext's tcoeff to size MAX_SB_SQUARE
This a simple implementation.
We will use a more precise buffer size for tcoeff once the
experiment functions correctly.

Change-Id: Ib561974f21ee1b8d72ce407882ea2be3cf0b069f
2017-03-21 17:51:30 +00:00
Angie Chiang babf3e7870 Add default probability model for lv_map
Change-Id: Ib3b8c70c7ba06043f0017785af035dd1aaf5ba54
2017-03-21 17:51:30 +00:00
Thomas Davies b1bedf5f73 Align EXT_TX with EC_MULTISYMBOL and EC_ADAPT.
Do multisymbol coding for transform type.
Load default cdf probabilities directly.
Use CDF frame update mechanism when EC_ADAPT is
enabled.

Change-Id: Id23c927e81587b560e9df8b9bc56c0e2e3bb6f03
2017-03-21 09:58:29 +00:00
Steinar Midtskogen 7d532719f5 Make input buffers for intrinsics testing uint8_t
BUG=aomedia:401

Change-Id: I46ac4e1c9ad62d67536fd525d768899bfb758ae5
2017-03-21 07:00:55 +00:00
Debargha Mukherjee 37f6fe61df Add config flags and macros to control ext-inter
Adds a dependent config flag 'interintra' to turn on/off interintra
modes altogether.
Adds a dependent config flag 'wedge' to turn on/off wedge compound
for both interinter and interintra.

Adds another macro to change wedge predictors to use
only 0, 1/2, or 1 weights.

From now, use
--enable-ext-inter --enable-wedge --enable-interintra to get the
same behavior as the old --enable-ext-inter.

Change-Id: I2e787e6994163b6b859a9d6431b87c4217834ddc
2017-03-20 23:36:58 +00:00
David Barker 7e08ac3f13 Fix two bugs in highbitdepth self-guided filter
This filter was temporarily removed due to test failures.
This patch reintroduces the filter and fixes two bugs:

* The test cases would occasionally segfault on x86, since
  the highbd filter requires its inputs to be aligned to
  16 bytes. This will always be true when used on real videos,
  so adjust the test cases to match.

* The function calc_block was incorrect for bit_depth > 8,
  due to passing an incorrect argument to _mm_srl_epi32().
  This was the cause of the original test failures.

BUG=aomedia:392

Change-Id: Ia06b76c3e6122eebadd0995fb62f32c2fcab8b3e
2017-03-20 23:32:56 +00:00
hui su bb9c73b05e Add av1 prefix to inv_txfm_add
Change-Id: Id7cbb89ba344770297ef42bf1b09a2b9ba5a1378
2017-03-20 23:19:05 +00:00
hui su b4e25d2ccf Make ext-intra/intra-interp work with ec-multisymbol
Use cdf to signal intra filter type.
Skip forward update when ec-adapt is on.

Change-Id: Idd446e081b8e9ea33356e60423b372bfd85a80db
2017-03-20 23:18:47 +00:00
Thomas Davies 5dad9a8943 EC_ADAPT: minor simplification to adaptation mechanism.
This removes an instruction from the HW path. It also improves
BDR by 0.02% on all metrics (AWCY, High Latency,
objective-1-fast).

Change-Id: I9f8a86871e1c0db4a0704dee297acd6977abcbe4
2017-03-20 23:06:38 +00:00
Alex Converse 76b8963150 Disable OD_ASSERTS asserts when NDEBUG is set
Change-Id: I3d411ef4a6a1be5e7e644f210a5296dbe18807eb
2017-03-20 13:52:08 -07:00
Angie Chiang 1dca126ca7 Turn off token related check for lv_map experiment
lv_map is not using token list anymore

Change-Id: Ief4f743975815c889d83703cc42b019fce517a69
2017-03-20 18:16:51 +00:00
Angie Chiang 4af07d9285 Fix get_txb_ctx
get_txb_ctx is designed under the condition that ctx is uint8_t
Hence, we cast ctx to uint8_t before further operations

Change-Id: If8423d6e5edd346034cb9631726e930c47bc682b
2017-03-20 18:16:51 +00:00
Angie Chiang 133733cbdf Add av1_read_coeffs_txb_facade
Change-Id: I3f059dc16124bbce2210296de5b884b5906ec182
2017-03-20 18:16:51 +00:00
Angie Chiang 8590156372 Change get_txb_skip_context to get_txb_ctx
Generate txb_ctx which contains both txb_skip_ctx and dc_ctx
directly

Change-Id: I5058b72e0b6431a9daf0536925c71da590cf7aeb
2017-03-20 18:16:51 +00:00
Alex Converse 57795a4c56 ext_partition_types: Bring into alignment with ec_multisymbol and ec_adapt
ec_multisymbol+ext_partition_types:
base_ext_types@2017-03-15T18:24:38.012Z -> 8565_3_ext_types@2017-03-17T18:29:48.794Z

   PSNR | PSNR Cb | PSNR Cr | PSNR HVS |    SSIM | MS SSIM | CIEDE 2000
-0.0346 | -0.0343 | -0.0341 |  -0.0345 | -0.0345 | -0.0344 |    -0.0345

ec_multisymbol+ec_adapt+ext_partition_types:
base_adapt_ext_types@2017-03-15T18:27:31.704Z -> 8565_3_adapt_ext_types@2017-03-17T18:30:01.108Z

   PSNR | PSNR Cb | PSNR Cr | PSNR HVS |    SSIM | MS SSIM | CIEDE 2000
-0.0422 | -0.0420 |     N/A |  -0.0425 | -0.0423 | -0.0423 |    -0.0420

Change-Id: Ia40f118f0faf546be13e02ec9ed584dd38529a59
2017-03-20 16:32:16 +00:00
Alex Converse c9d2fcc22a Port optimize_b cache optimizations to AV1.
Bring the following libvpx commits to aom:
e446ffd Cache optimizations in optimize_b()
50d3629 Repack vp9_token_state

Saves 24600 bytes of stack in the default configuration.

Change-Id: If9d6506cf3fe1c34ab639dedb3ef62a996293781
2017-03-20 16:31:52 +00:00
Steinar Midtskogen f53237606a Fix the above boundary test in the SIMD version of CLPF
Change-Id: I097ddaac3e19084542663e142cde5c115ef09099
2017-03-19 21:50:46 +00:00
Tom Finegan eb10b7501e Add neon simd tests to cmake test target.
BUG=https://bugs.chromium.org/p/aomedia/issues/detail?id=76

Change-Id: Iec2b4796286821e786c424d5bedee0ae2de53af8
2017-03-19 01:48:33 +00:00
Tom Finegan 27a17e6a3f Expand cmake rtcd support to support disabling simd flavors.
Required to build for arm targets that lack media (armv6) support.

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

Change-Id: I5c53e413a2eaa4f753ff4163be185ba9255f6661
2017-03-19 01:48:11 +00:00
Tom Finegan 44d2a4643a Add aom_ports arm support to the cmake build.
BUG=https://bugs.chromium.org/p/aomedia/issues/detail?id=76

Change-Id: Ib1c5e04134911fd7ccdcb014b53a06e856368a5d
2017-03-19 01:47:49 +00:00
Tom Finegan 5a49c6cd6d Add support for armv7s to cmake av1 build.
BUG=https://bugs.chromium.org/p/aomedia/issues/detail?id=76

Change-Id: I1e2cfafb537af65f0393e764026567729f2667ee
2017-03-19 01:47:25 +00:00
Tom Finegan 97d29ea7a4 Add support for armv7s to cmake aom_dsp build.
- Add function add_gas_asm_library() to handle conversion of asm
  sources and creation of custom dependencies.
- Uses add_asm_library() to create the library build.
- Add aom_dsp_common_neon_intrinsics target for the neon intrinsics.

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

Change-Id: Ifd99fbd69998a79613e0f5b61003a47973a804bc
2017-03-19 01:47:14 +00:00
Thomas Daede 18f77adf55 Additionally limit upscaled references to <= 720 for profile!=0.
The previous limit was <=1080p, which was sufficient to keep RAM
usage below 3GB for the 8 bit path, but turns out to be insufficient
for the 10 bit path.

Change-Id: I7a19261928a4e1a71f5f297125651113a2465d3d
2017-03-18 00:55:31 +00:00
Sarah Parker 19234cc2b3 Macro to disable warped/obmc_causal with global motion
Enabling SEPARATE_GLOBAL_MOTION will remove the ability for
a block that uses zeromv with global motion to pick warped_causal
or obmc_causal as the motion mode. When this is enabled there is:

0.05% drop on lowres for global + warped enabled
0.15% drop on midres for global + warped enabled

0.12% drop on lowres with global + motion var enabled
0.07% drop on midres with global + motion var enabled
No performance change for global, warped, or motion var individually.

Change-Id: Idbfb8dd7a93da14902438504b06a08e5212e48cb
2017-03-17 23:24:39 +00:00
Debargha Mukherjee 428bbb2b11 Fix config flags among var-tx/ext-tx/rect-tx
BUG=aomedia:396

Change-Id: I1b7f6dddb06eac9e341518a95a0d71465e613e9e
2017-03-17 21:26:12 +00:00
Steinar Midtskogen c16e044c98 Disable intrinsics unit tests if optimisations are disabled
This fix was motivated by a code generation bug in g++ on arm, but it
seems a good idea generally to disable these unit tests if we're not
compiling with optimisations, since the code tested is only intended
to be used as inlined functions, and while it's possible to compile
without optimisations, the tests become somewhat half-hearted since
there are workarounds when there's no inlining (such as for
instrinsics requiring immediate values), so the tests would partly
test code that wont be used anyway.

BUG=aomedia:377

Change-Id: I9a0515c96a7ed2f4636820dfc03fbb92323ca8ee
2017-03-17 20:27:58 +00:00
Steinar Midtskogen 95f1c2ab6e Fix -fsanitize=integer warnings in v64_intrinsics_c.h
Change-Id: I8134c0ac4bd18478b266a0058e00bc6b1e6f8e9e
2017-03-17 20:27:58 +00:00
Steinar Midtskogen 6c79576556 Fix ubsan warnings
BUG=aomedia:376

Change-Id: Ief69f220ec5b6cf15443f872ad2f9a63336c185d
2017-03-17 20:27:58 +00:00
Steinar Midtskogen a9d41e88d2 Merge dering/clpf rdo and filtering
* Dering and clpf were merged into a single pass.
* 32x32 and 128x128 filter block sizes for clpf were removed.
* RDO for dering and clpf merged and improved:
  - "0" no longer required to be in the strength selection
  - Dering strength can now be 0, 1 or 2 bits per block

              LL    HL
PSNR:       -0.04 -0.01
PSNR HVS:   -0.27 -0.18
SSIM:       -0.15 +0.01
CIEDE 2000: -0.11 -0.03
APSNR:      -0.03 -0.00
MS SSIM:    -0.18 -0.11

Change-Id: I9f002a16ad218eab6007f90f1f176232443495f0
2017-03-17 19:06:20 +00:00
Alex Converse f5931e5e61 Fix off by one in an assert.
'bits' can be (less than or) equal to sizeof(av1_cat6_prob).

BUG=aomedia:399

Change-Id: I20ceb6fa3b61dfcc59e28605fe4f90d8bfaacc51
2017-03-17 18:36:29 +00:00
Joe Young 947fa979c1 Fix compile error with ref_mv disabled
Change-Id: I6c5a843df7de0e711db27ccc5cfbe9fde8d6bae4
2017-03-17 18:30:23 +00:00
Angie Chiang c8af61124a Add av1_write_coeffs_mb
This function go through each transform block in the
prediction block and call av1_write_coeffs_txb to
pack coefficients into the bitstream

Change-Id: I6dedebef6cf8957f9173241a7de60e9936bc0be8
2017-03-17 17:49:30 +00:00
Debargha Mukherjee 082d4df760 Replace division in warped motion least squares
Replaces the int64 and int32 divisions in least-squares and
gamma or delta computation with a mechanism that decomposes
the divisor D such that 1/D = y * 2^-k where y is obtained
from a lookup table indexed by 8 highest bits of the difference
D - 2^floor(log2(D)). The main complexity is now only from
computing this decomposition, which is essentially equivalent
to finding floor(log2(D)) (position of highest
bit in a 64-bit integer).

Also includes an out of memory bug fix and some cleanups.

Change-Id: I9247fdff5f6b4191175d4b4656357bfff626f02c
2017-03-17 16:45:42 +00:00
Tom Finegan c45213ce81 Add armv7s-ios cmake toolchain.
This is used at cmake generation time via a command line like this:
$ cmake path/to/aom -DCMAKE_TOOLCHAIN_FILE=path/to/aom/build/cmake/toolchain/armv7-ios.cmake

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

Change-Id: Iadacc32c43bc23e0f670b88e3c1563c44319945c
2017-03-16 18:42:25 -07:00
Tom Finegan 285dedba96 Expand cmake assembler support.
- Stop acting as if Yasm is the only assembler.
- Kill generation and report error when yasm is not found for x86
  and x86_64 (remove the generic fallback).
- Use $AOM_AS_FLAGS to pass assembler specific flags.
- Add include guard in aom_optimization.cmake.

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

Change-Id: Ic68d6c81071c24a8ceb6806d04ab8959be97d876
2017-03-17 01:28:21 +00:00
Angie Chiang 0397eda0d1 Draft of av1_update_txb_context
This draft version only pass compiling check, it's not working yet.

The following goal is to use new coding system when doing bitstream
packing but keep old coding system in RD loop.

Change-Id: I224a1581d1cc5c67d73e71558fb77d9faf9c2470
2017-03-16 16:15:15 -07:00
Rostislav Pehlivanov 74021a5a64 Implement twopass support for the xiphrc system
This commit implements support for twopass encoding using the xiphrc
experimental rate control system. Most of the code and logic comes
from the theora project encoder.

Currently support is limited to the bitrate targeting mode of the
rate control system and while it does visibly improve quality and does
bring rate closer to the target than the one pass mode there's still
tuning and bug fixing to be done.

Change-Id: Iae0d65bbce5ddfbb95b436e2238a43d6100a23b3
2017-03-16 21:40:48 +00:00
Angie Chiang f0fbf9d988 Add frame level buffer to store txfm coeffs
Doing tokenize in the last step of RD loop and then doing packing
tokens in bitstream packing phase is hard for debugging.

Therefore, we create a frame-level buffer to store the txfm coeffs
from the reconstruction in RD loop and then in bitstream packing
phase, we can code the txfm coeffs directly.

Change-Id: I999470eef6e038317a91585df2bdfc20aca3573e
2017-03-16 20:48:41 +00:00
Alex Converse da3d94fe2c Account for elided extrabits during rate cost calculation.
Fixes some rd-debug mismatches coding cat6 tokens with tx size < 32x32.
For these tokens the high extrabits are elided during tokenization and
detokenization, but the rd cost was computed with the old tables from
VP9 where these high extrabits are always coded.

Change-Id: I4a9a6ea822ff821e1932c351d43a57bdb4d6d466
2017-03-16 16:36:19 +00:00
Alex Converse e063e2dd3d highbitdepth: deduplicate extrabits
Change-Id: Ib1777433c10e3b64f939c533c12a89dfc839bc6a
2017-03-16 16:36:19 +00:00
Yue Chen 74a7754615 Fix recon mismatches in GLOBAL_MOTION+MOTION_VAR
The offset of neighbors is communicated to av1_make_inter_predictors
so as to use the correct mi in gm warping

Change-Id: I471bbdf2112ed678969492b11730f15d9527eb7e
2017-03-15 22:53:57 +00:00
Alex Converse 4e18d403d8 ext_partition_types: Make update tree shape match
Update the first PARTITION_PLOFFSET (4) contexts with the four classic
partitions. The extended partitions are only codable above 8x8, but
there are PARTITION_PLOFFSET (4) contexts for dropping below 8x8.

Change-Id: Ib3291dded6dc24103222e8f470504c20e29adb88
2017-03-15 17:46:58 +00:00
Thomas Davies 1c05c6351c NEW_TOKENSET: Make zero block value uncodeable for AC coeffs.
Change-Id: Icd7528d1ec8e117205e5e35ad9a11cfa83b08253
2017-03-15 17:44:28 +00:00
Thomas Davies a134e2dc1d Remove decoder coefficient counts for NEW_TOKENSET + EC_ADAPT.
These are no longer used in probability updates.

Change-Id: Idf5037f769d43972434b5ecbff3550b3f97be21a
2017-03-15 17:44:28 +00:00