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

19917 Коммитов

Автор SHA1 Сообщение Дата
Urvang Joshi 4d5bbbd907 SMOOTH_PRED: Use 8-bit weights for real.
Use 255 instead of 256, to restrict to 8-bits.

Only noise level differences in performance.

AWCY:
                   High Latency     Low Latency
  All Keyframes    -0.01            -0.01
  Video overall    -0.01            -0.07

Google Set:
                  All KF            Video
lowres            -0.005            -0.029
midres            -0.008             0.028
hdres             -0.010            -0.022      

Note: By moving from 18-bit to 8-bit and then
cutting off at 255 (this change, overall effect is
noise level too (neutral or better).

Change-Id: I9f2852023015e36c01203bafe486ec400b2ba46f
2017-03-06 20:11:50 +00:00
Nathan E. Egge 7e37993b0e Fix bug when indexing inspection mi_grid.
Change-Id: I9bee09b364223e776cd14ae4a3d47e0c3ffcf008
2017-03-06 19:31:27 +00:00
Jingning Han d3f441c9b9 Resolve codec issue between tile-groups and ext-refs
This fixes the coding failure when both tile-groups and ext-refs
are turned on. It clears the nightly-run unit test failure.

Change-Id: Idb67580ebe3ef625cf3ab18dcf7a274db4dacab3
2017-03-06 19:16:08 +00:00
Thomas Davies 2ba3277ae1 Remove duplicate backwards adaptation for delta q.
Change-Id: I49fc7c63b5a8db648856ee046e3209dc577f4067
2017-03-06 14:32:31 +00:00
Thomas Davies 665cd70a75 DELTA_Q: use correct probability description.
Delta Q is coded with a single tree context.

Change-Id: Ie1e56c70285e948232049bfb4a51ad0e9ee25f75
2017-03-06 13:17:52 +00:00
Debargha Mukherjee 00c54330f3 Remove unnecessary filtering and buffer copies
Removes redundant deblocking filtering operations and buffer copies,
during search for the restoration filters.
Also, makes the order of cdef and loop-restoration consistent.

BUG=AOMEDIA:373

Change-Id: I571e331f9dfadfd2c1494f279e50510ec212ea29
2017-03-06 04:37:32 +00:00
Jingning Han 8b77d04e25 Decouples rect-tx from var-tx
With this patch, --enable-var-tx only enables recursive transform
partitioning without using rectangular transforms.
To enable use of rectangular transforms in addition, use:
--enable-var-tx --enable-rect-tx

The RD selection process is not fully tested under the var-tx flag
only. We might expect certain performance loss there.

Change-Id: Ie6aa17f1bbc3e8563b9990bc9ff79cc860d9a361
2017-03-05 09:38:06 -08:00
Debargha Mukherjee febb59cd74 Allow global motion based translation for sub8x8
Also handle block centers for sub8x8 blocks correctly.

BDRATE: lowres: -1.308%

Change-Id: I6bdb25bdaceb5086a8b951617fd62ed41cd89023
2017-03-04 04:29:28 +00:00
Yushin Cho 5dcc48ba28 Delete unused function, has_high_freq_coeff()
Change-Id: I4bbe63a4e54dd14a05fca26a11abb5a0d12480d5
2017-03-03 10:30:08 -08:00
Tom Finegan 27f65d94bc Support CONFIG_PVQ in the cmake build.
BUG=https://bugs.chromium.org/p/aomedia/issues/detail?id=76

Change-Id: Ia857648599f176834307191af6a380b3e411850d
2017-03-03 17:40:42 +00:00
Tom Finegan 6598843c00 aom_dsp.mk: Remove redundant CONFIG_PVQ section.
Same sources as CONFIG_AV1 section. Combined them, and fixed
a comment.

Change-Id: I5273849143c0c92a506deeb9241a761e5ee125d3
2017-03-03 17:02:03 +00:00
Tom Finegan 7bb58b1abd Group optional configurations in av1/av1.cmake.
Change-Id: I0dd17ec7ea59cecf8298831d0e46e971f744c2c7
2017-03-03 17:00:40 +00:00
Tom Finegan b48758261b Support CONFIG_CDEF in the cmake build.
BUG=https://bugs.chromium.org/p/aomedia/issues/detail?id=76

Change-Id: I3e19eb302eb2f0f5a12243bf093c8f9807d97e91
2017-03-03 17:00:30 +00:00
Tom Finegan 03e80211f0 Set cmake minimum version to that which is really required.
The use of target_sources in combination with generator expressions
is not supported before v3.5. Set min required version to v3.5.

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

Change-Id: Ifa1ea25e17ac58d631436c31ab9d4d9231e689f2
2017-03-03 17:00:22 +00:00
Tom Finegan 677d24bff5 Add support for CONFIG_FILTER_INTRA to the cmake build.
Note: CONFIG_FILTER_INTRA is broken in both build systems due
to link errors. This is a parity patch.

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

Change-Id: I713bc7b6f5f13387bbf6b9e3df22731c22d558cc
2017-03-03 17:00:12 +00:00
Tom Finegan 48f2f96b79 Freshen cmake configs and remove hard coded RTCD configs.
- Build and maintain a list of configurable variables.
- Add/remove CONFIG_ variables to sync w/old build system.
- Update defaults for same reason.
- Set RTCD versions of CONFIG_ variables using the CONFIG_
  vars directly.

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

Change-Id: If3ca6c94a8919d92dcc5c47e0010098f5694b165
2017-03-03 16:59:47 +00:00
Tom Finegan 52d68c6fcd Set CONFIG_OS_SUPPORT correctly in the cmake build.
BUG=https://bugs.chromium.org/p/aomedia/issues/detail?id=76

Change-Id: Iddb07288166af582b52d75e8b2cb37a55e13a196
2017-03-03 16:58:17 +00:00
Tom Finegan 354e509eca Set CONFIG_GCC correctly in the cmake build.
BUG=https://bugs.chromium.org/p/aomedia/issues/detail?id=76

Change-Id: I70539530b5db7f971928706122626d524a8fae61
2017-03-03 16:58:02 +00:00
Luc Trudeau 9e6a96078e Merging robust and nodesync in PVQ
The variables robust and nodesync appear to represent the same concept.
In order to simplify, they are merged into nodesync. This change does
not alter the bitstream as this value is hard coded to 1.

Change-Id: If9b2eb52f628e3f615b6270e26569815d5e79ae0
2017-03-03 16:10:38 +00:00
Luc Trudeau 9a834c035b Remove frame type dependency in od_pvq_rate
In Daala, od_pvq_rate depended on the frame type because of H/V pred.
However, H/V pred is not in AV1, as such this code can be removed.

This changes do not impact the bitstream as currently is_keyframe is
hard coded to zero.

Change-Id: Ic4b7c91c004133bc4520870ce39e47cd6a63f298
2017-03-03 16:10:07 +00:00
Thomas Davies 74b2643e95 Enable tile groups by default.
ext-tile is incompatible, so when it is enabled, tile groups
will be disabled.

Change-Id: Ibf1728a7b576c7c6ad92a2a0de3145a8ecbed6d8
2017-03-03 16:08:01 +00:00
Thomas Davies a0de6d59ce TILE_GROUPS: omit tile length from last tile in the frame.
This change improves efficiency and means that tile groups
cause negligible loss (+0.03% BDR) in the current default
encoding configurations (1 tile group no matter how many tiles)
with frame-based wrapping.

In future, when wrapper formats support tile groups, lengths
can be omitted from the last tile in every tile group.

Change-Id: Ia701e6720208fbfa727f9aef0b692a6aafbcc93f
2017-03-03 16:07:47 +00:00
Luc Trudeau 9638228302 Remove H/V considerations in pvq_theta
As H/V Prediction is not implemented in AV1, pvq_theta does not need to
consider it when adjusting its parameters.

It is important to understand that the results shown here are not the outcome
of this patch but the outcome of leaving the condition in and enabling
is_keyframe. Currently, this change does not impact the bitstream as
is_keyframe is hard coded to 0 for PVQ.

The following result show that enabled for spatial intra, the H/V pred
tweaks do not yeild benefits.

Enabling the condition for all planes in a keyframe:
Subset1:
pvq@2017-02-28T20:31:50.969Z -> pvq-unreliable-intra@2017-02-28T20:30:32.049Z
PSNR | PSNR Cb | PSNR Cr | PSNR HVS |   SSIM | MS SSIM | CIEDE 2000
0.0896 |  0.0860 | -0.0759 |   0.1608 | 0.1442 |  0.1599 |     0.0147

Enabling the condition for Luma plane in a keyframe:
Subset1:
pvq@2017-02-28T20:31:50.969Z
 -> pvq-unreliable-intra-luma@2017-02-28T20:34:18.029Z
PSNR | PSNR Cb | PSNR Cr | PSNR HVS |   SSIM | MS SSIM | CIEDE 2000
0.0713 |  0.1317 |  0.0717 |   0.1253 | 0.1365 |  0.1406 |     0.0312

Enabling the condition for Chroma planes in a keyframe:
Subset1:
pvq@2017-02-28T20:31:50.969Z -> pvq-unreliable-intra-chroma@2017-02-28T21:09:38.992Z
PSNR | PSNR Cb | PSNR Cr | PSNR HVS |   SSIM | MS SSIM | CIEDE 2000
0.0232 | -0.1240 | -0.1379 |   0.0029 | 0.0187 |  0.0191 |    -0.0916

Based on these results, the condition in the if statement is removed.

Change-Id: Icd2f1313952548939069b4570cf7db04632f35f3
2017-03-03 15:34:33 +00:00
Yue Chen 5329a2bfa0 Restrict the number of neighbors in obmc mode
Enable obmc mode only when there are <= 2 left neighbors and <=2
above neighbors. Also disable it when there is no overlappable
neighbors.

Gain in AWCY test: 1.60%, was 1.64% when there is no restriction

Change-Id: I2d82ef4fb4daa9b0843ac8844f99b9f412c4f379
2017-03-03 13:21:45 +00:00
Tom Finegan 641b7a8e11 Ensure cmake config storage produces a valid command line.
- Quote the generator since it's almost always more than one word.
- Include AOM_TARGET_CPU when autodetected, and omit it in favor
  of including the toolchain file when a toolchain file is
  specified.

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

Change-Id: If0ba115074b96c93fc93c97747d8f60e919bf6f7
2017-03-02 22:09:06 -08:00
Tom Finegan b7d025400d Move aom_util cmake commands to aom_util/aom_util.cmake.
Also adds CONFIG_BITSTREAM_DEBUG support (because it was in
aom_util/aom_util.mk, and that's partly the guidance here).

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

Change-Id: I971b4025e345fd7d6d766526059f74d8b6ff2ebd
2017-03-02 22:09:03 -08:00
Tom Finegan f0d1444f98 Move aom_scale cmake commands to aom_scale/aom_scale.cmake.
Also, add TODO for rtcd target setup.

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

Change-Id: Ib2e4ecb30f0d2ce9b538986efdb1ac3117bd59df
2017-03-03 06:04:20 +00:00
Tom Finegan 507e2e1b12 Move aom_ports build commands into aom_ports/aom_ports.cmake.
- Stop abuse of the aom_util target to expose aom_ports includes
  to IDEs.
- Create aom_ports target only on appropriate platforms.
- Otherwise add the include only sources to the libaom target (aka abuse
  the libaom target instead of the aom_util target).

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

Change-Id: I82a27a0fc2d6ab13ea273726a4777e21ebdbd247
2017-03-03 06:04:04 +00:00
Tom Finegan dd6d0574ca Move aom_mem build commands into aom_mem/aom_mem.cmake.
BUG=https://bugs.chromium.org/p/aomedia/issues/detail?id=76

Change-Id: Ic9072ba53bc7b0b13b227a576ca3d4a691926385
2017-03-03 06:03:38 +00:00
Nathan E. Egge 20f9ae1d20 Add missing license block to inspection.[ch].
Change-Id: Icc85b0990adfdaf31f246204bee0c9b9d54654a0
2017-03-03 03:23:38 +00:00
Nathan E. Egge 74b7338513 Add extern "C" for C++ compatibility.
Change-Id: I13369c84fa736e0d38f19480068abfb5dc54dcc8
2017-03-03 03:23:38 +00:00
Fergus Simpson 4063a68b0a rdopt.c: add comments to #endif's
Fixes missing and wrong comments for all of the #endif's in rdopt.c to
improve readability.

Change-Id: Idd557a9e6244bbc335c2a646d150ed59074ee7a1
2017-03-03 02:24:58 +00:00
Tom Finegan 4f7e1042ff Add test data download support to the cmake build.
BUG=https://bugs.chromium.org/p/aomedia/issues/detail?id=76

Change-Id: I8f6dff99e413b799bed67ad0d5ecafc6c0197e22
2017-03-02 17:03:38 -08:00
Nathan E. Egge 2cf03b1a1a Add a simple frame data inspection API.
This patch adds a decoder control that exposes frame data via a simple
 callback.

Change-Id: Icae73ae6b5da8a7783db9fadb1fff4a85d77174b
2017-03-03 00:27:36 +00:00
Yaowu Xu ec660c3e4a Use uint64_t to avoid integer overflow
Fixes the overflow of unsigned int in *state * 1103515245.

Change-Id: Id35b8baa205f1ef8829ae4c8708f0c65edb01ada
2017-03-02 23:14:04 +00:00
Debargha Mukherjee 931055389a Some optimizations on integer affine estimation
1. Adds a limit on number of candidate samples used for the
estimation.
2. Adds a limit on max mv magnitude for use in the least-squares
3. Makes some of the internal variables 32-bit.

Impact on coding efficiency in the noise range.

Change-Id: I8c1c3216368ceb2e3548660a3b8c159df54a8312
2017-03-02 19:22:29 +00:00
Steinar Midtskogen c20176e559 Remove ASM_REGISTER_STATE_CHECK when testing v64/v128/v256 intrinsics
Since the tested functions are always forced inline in regular use,
ASM_REGISTER_STATE_CHECK doesn't make sense on this level (the test
should rather be applied to unit tests checking functions making use
of these inlined functions).  The test fails on Win64 because the
Win64 ABI requires xmm6 to xmm15 to be preserved across function
calls, but the ABI is only relevant for non-inlined functions.

BUG=aomedia:371

Change-Id: Icb795083f69465cf09ec8f6871899943efaeaab8
2017-03-02 06:35:59 +00:00
David Barker 7dcd7f5e4f Remove double rounding in selfguided filter
In av1_selfguided_restoration, the values stored into 'dgd' are
unnecessarily rounded twice. This patch replaces this by a single
rounding operation.

Change-Id: I188d283137b74823f5d5447d441250520d6ee294
2017-03-02 06:17:05 +00:00
Jingning Han b83e64baa3 Avoid the use of undefined marco value
Always define USE_TXTYPE_SEARCH_FOR_SUB8X8_IN_CB4X4 to avoid the
use of undefined value.

Change-Id: I0ad90c5b5316db231e9538487bb4591dfd6a9ce7
2017-03-02 05:04:15 +00:00
Yue Chen 8d8638a186 Use 3-tap spatial filter in FILTER_INTRA experiment
3-tap recursive intra prediction filters are added.
Macro USE_3TAP_INTRA_FILTER is set to 1 to use 3-tap by default.
Coding gain of FILTER_INTRA experiment in AWCY, high delay 150f
3-tap: 0.51%
4-tap: 0.68%

Change-Id: I44192dd08bfd8155f58a9b0b5cf1de88fceb762e
2017-03-02 00:17:14 +00:00
Sarah Parker ae7c458a7a Turn off global motion for sub8x8 blocks
Lowres: 0.03% improvement, 1% improvement on waterfall_cif.y4m
Midres: 0.085% overall improvement, 1.253% improvement on station2_480p25.y4m
Change-Id: I3872934d978bb4ca828c6b9acd2fdb951d9da299
2017-03-02 00:02:16 +00:00
Rostislav Pehlivanov 614411fc40 Organize #includes in the xiphrc experimental RC system
Removes the unneeded one (encint.h) and moves everything not needed in
the header to the .c file itself, thus this commit should make including
both ratectrl_xiph.h and pvq headers without error.

Change-Id: Ie1e8e32b546bc1357414144ea8ff9a247091e97b
2017-03-01 22:15:54 +00:00
Yushin Cho d8059d53b8 Fix missing headers with xiphrc and daala-dist
Fixed the build fail in the xiphrc and daala-dist, which are tested
for inclusion in libaom__compile_experiments but produced error
as reported in above bug report.

Thanks to James Zern for reporting and suggesting how to fix.

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

Change-Id: I46823255012e6c3d20b57e3bd65a45c03de8222c
2017-03-01 21:53:25 +00:00
Alex Converse 7d22ea4ad0 Rearrange decode_coefs arguments to remove some duplication
Change-Id: I1b4eb806432cfe187e690e846429ac17d06e68ee
2017-03-01 21:36:20 +00:00
Ryan Lei 392d0ff726 implement combined parallel_deblocking experiment
The parallel_deblocking experiment is proposed jointly by Intel
and Microsoft. The following changes are implemented in this
experiment:

- deblocking filter order is changed to filter all vertical edges
  of the whole frame followed by filtering all horizontal edges
  of the whole frame

- filter length decision is made based on the transform block size
  on both sides of the edge. block with smaller transform size
  determines the final filter length.

- transform blocks on both sides of the edge are checked, only when
  both blocks are skipped and they belong to the same prediction
  block, filtering of that edge can be skipped.

- 15-tap filter and extended flat area detection are removed.

- special rule for handling 4x4 transform block on the super block
  boundary in VP9 is removed.

Change-Id: I1aa82c6b5335d47c2f73eec8fc8bee2c08a1cf74
2017-03-01 19:59:33 +00:00
Jingning Han ab77e73b77 Fix compiling warnings in var-tx and pvq
Change-Id: Ie836a113978028f3bde2acd31061d9a663547087
2017-03-01 19:52:00 +00:00
Tom Finegan 919caadb59 Fix naming inconsistency in aom_dsp cmake source list vars.
The AVX2 intrinsics vars were violating the pattern.

Change-Id: I0bd2e270b7dbb173d753b2f5aeb48823efac4feb
2017-03-01 10:26:34 -08:00
Tom Finegan 75fa1a9034 Add CONFIG_PALETTE support to the cmake build.
BUG=https://bugs.chromium.org/p/aomedia/issues/detail?id=76

Change-Id: Idda64f9bc15a5a51ae30e0f9bd69cc19e56e1d39
2017-03-01 15:25:11 +00:00
Tom Finegan 44916e7e87 Move av1 cmake support into av1/av1.cmake.
BUG=https://bugs.chromium.org/p/aomedia/issues/detail?id=76

Change-Id: Id5b5d42199897c441549eb2115a4443e93f1989b
2017-03-01 15:24:50 +00:00
Tom Finegan 5abae0a761 Move aom_dsp.cmake lib list updates into setup_aom_dsp_targets().
Change-Id: I5eb53ef88fb136bf8e06aa2cdc2c1feae9bec956
2017-03-01 15:24:25 +00:00