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

1839 Коммитов

Автор SHA1 Сообщение Дата
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 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 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
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 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
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
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
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 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
Sebastien Alaiwan cb57c95a6a Fix potential integer overflow in range checking
Change-Id: I20b951bb67f4c2147055751a8cd9534ceddc7215
2017-03-01 08:14:21 +00:00
Sebastien Alaiwan 07e33f4ee4 Fix integer overflow.
Found using the undefined behaviour sanitizer (-fsanitize=undefined).

Change-Id: I5534a97c0e38f76b38c6a53b42759b0b676e360a
2017-03-01 08:13:48 +00:00
Jingning Han 07441df3c1 Make ec-multisymbol work with rectangular transform size
Resolve the encoding failure when ec-multisymbol and rectangular
(rect-tx or var-tx) are both turned on.

Change-Id: I708ed66d907c5928adecfd2a53498566296594d6
2017-03-01 03:00:37 +00:00
James Zern fd2b1b8153 make: fix missing headers in dist
Change-Id: I259f2983d1e9446f3e29c74f44ae583a676ce81f
2017-03-01 01:43:44 +00:00
Fergus Simpson 073c6f3377 handle_inter_mode: add arguments struct
Adds the arguments struct HandleInterModeArgs to hold arguments that
are conditional on compiled features. This means that there are no
longer #if's in the function's argument list.

Some of the array pointers that were optional arguments have been
made array members in the new struct, but not all. This is due to the
function being called with either references to arrays that are
maintained between trying different modes OR with references to
"dummy" arrays initialized to zero. The arrays that are always used
are now members of the HandleInterModeArgs struct.

Change-Id: I3076fd53c3cddf5a6d14bbe7d23a889465ed716d
2017-03-01 00:51:14 +00:00
Yaowu Xu 1772cf552d Remove an unused declaration
Change-Id: I10cb9af13d50f2e5ac471af86a4393739c28b509
2017-03-01 00:27:27 +00:00
Jingning Han dddb21f9ed Fix compiling warnings in var-tx and coef-interleave
Resolve compiler warnings when the two experiments are turned on.

Change-Id: I568ddd74afad6fe720e1f46d0119df08fd2f689b
2017-03-01 00:02:14 +00:00
Angie Chiang e4f98f67a5 Turn on SIMD implementation of av1_fht32x32
Change-Id: Ie1bfece43c81ee5d149ed25c3f7fd959a8f95030
2017-02-28 23:57:30 +00:00
Michael Bebenita 3a88de8f82 Add SIMD code for PVQ search
This reduces the runtime profile of pvq_search_rdo_double from 37%
to 15% and improves overall encoding speed when PVQ is enabled by ~40%.
The SIMD code is not bit accurate with the C version and introduces a
slight PSNR regression on AWCY:

  PSNR | PSNR Cb | PSNR Cr | PSNR HVS | SSIM | MS SSIM | CIEDE 2000
0.0607 |  0.1044 |     N/A |   0.0126 |  N/A | -0.0309 |        N/A

Change-Id: Ie22cebc62df2e72618305f2268668d79167860c6
2017-02-28 19:39:01 +00:00
Angie Chiang 47c7218942 Add av1_cost_coeffs_txb() for lv_map experiment
Change-Id: I44842387207b19f8e0c3894d3f4e8d0646a4cafd
2017-02-28 18:34:32 +00:00
Debargha Mukherjee 246d27371d Assign offsets correctly to compute warped motion
Offsets for the least-squares for affine motion computation
are now set at the top left corner of the current block.

Improves stability and performance a little.

Change-Id: I68ca7e74c6102502daa8ca3373af2b2dd59400c3
2017-02-28 15:43:48 +00:00
Jingning Han c41a549a01 Disable compound mode in sub8x8 coding blocks
Disable the support of compound prediction modes for sub8x8 codking
blocks. Make the rate-distortion optimizations process account for
such constraints.

With the use 2x2 chroma prediction block, this makes the wrost case
number of inter predictors same as vp9. It affects the coding
gains by 0.35% for lowres, 0.17% for midres, and 0.08% for hdres.

The encoding speed is up by 10%.

Change-Id: Ieb2a83030676911baa403e586f1f800cbf485d81
2017-02-28 07:04:12 +00:00
Yaowu Xu 1e2aae1ae7 Use correct segment
Segmment based lossless flag is used in select transform size, this
commit fixes a bug where wrong segment_id is used in such selection.

BUG=aomedia:350

Change-Id: Ibc981c779739849bac00447155180abbd319eb28
2017-02-27 16:59:28 -08:00
Yaowu Xu cdf8a14e85 Move asserts into correct scope
The macro used in assert is defined under CONFIG_VAR_TX. This fixes a
build issuse when --enable-var-tx and --enable-rd-debug are both on.

Change-Id: I497fe4a8b1fa6c7b05ac2b41c97522f7bdedc0ce
2017-02-28 00:52:35 +00:00
Angie Chiang 44701f2cff Remove redundant return in set_offsets
Change-Id: Idf8f03052a7e21b8a273986204038545573d7962
2017-02-27 14:36:02 -08:00
Debargha Mukherjee f6dd3c6827 Better block center in gm_get_motion_vector fn
Also supports homography models for future experiments.

Change-Id: I4510540f54133e063891ed491c95c087222f7810
2017-02-27 21:57:19 +00:00