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

21244 Коммитов

Автор SHA1 Сообщение Дата
Debargha Mukherjee 84f567c725 Add chorma tilesize option in loop-restoration
Adds an option bit in the bitstream syntax to allow chroma to
have restoration tilesize that is coupled to luma based on
subsmapling of the color components.

This is meant to ease encoder hardware implementation.

Change-Id: Ic3cc2b68c0f33701ed3ff2fe19cf57cd864da67f
2017-06-21 22:37:18 +00:00
Timothy B. Terriberry 81ec2619f8 cb4x4: Move sub-4X4 block sizes behind chroma flags.
cb4x4 itself should not require these sizes.

This simplifies compatibility with other experiments, since we can
first make them work with cb4x4 (which is now on by default), and
then worry about chroma_sub8x8 and chroma_2x2 (which is not) in
separate steps.

Encoder and decoder output should remain unchanged.

Change-Id: Iff2a5494cab3b7d96f881e8bd9cd4bf18c817cfa
2017-06-21 21:31:26 +00:00
Frederic Barbier 5c844690be Simplify code based on explicit assertion
Change-Id: I7ba542592b3856f23984c6d6cd0dd8627843cf23
2017-06-21 21:16:40 +00:00
Sebastien Alaiwan 2a19c9e344 Don't silently fail writing the superframe index
Change-Id: I233787c43d200d5648cbaac9887298870097818f
2017-06-21 21:00:09 +00:00
Timothy B. Terriberry 4a81001bb7 ext_inter: Skip compound type probs. for small block sizes.
When writing the compressed header, prob_diff_update() was called
for compound_type_prob[] for every defined block size, even though
luma never uses block sizes smaller than 4x4.

This fixes is_any_masked_compound_used() and
is_interinter_compound_used() to properly return 0 for chroma-only
block sizes, and then uses these functions to guard the probability
updates in write_compressed_header() and read_compressed_header(),
the same way the actual compound type values are guarded in
read_inter_block_mode_info() and pack_inter_mode_mvs().

Change-Id: Ib521cf53f9ec166ef634609c8b47c5814b6a9ff5
2017-06-21 19:57:35 +00:00
Tom Finegan 8c46966378 Fix CMake GUI generated builds.
Change configuration var type from BOOL to NUMBER to fix
CMake GUI interaction with AV1 configuration variables.

BUG=aomedia:604

Change-Id: I3a5c298ae960ef013e727473bdf7d6664da610a2
2017-06-21 11:12:56 -07:00
Frederic Barbier b8f4910554 Cleanup dead code
Change-Id: I300b45f051e49d54860733d19f722645e6c3cad6
2017-06-21 17:56:04 +00:00
Thomas Davies 8c9bcdfa72 NEW_MULTISYMBOL: fix comp_inter decoding.
Change-Id: I1978d48d5df22c84cfea4d550ad74321089a2646
2017-06-21 17:19:50 +00:00
Fergus Simpson 2b4ea11a8d Use last_show_frame in use_prev_frame_mvs calc
Without tempmv-signaling configured, using the previous frame's MVs
requires that the last frame was a show frame. With tempmv-signaling
configured, cm->show_last_frame is not checked when calculating
use_prev_frame_mvs. This patch adds that check and resolves mismatches
seen with random resizing and random superres.

Includes a couple fixes too - cm's last_width, last_height, and
last_show_frame were updated under different conditions. Now they're all
updated at the same time.

Change-Id: Ibdfb196cb6e9d002fd57cb4df10a899b60faac00
2017-06-21 16:49:36 +00:00
Tom Finegan c5c0cbaa4a Fix CMake desync with configure build.
Just missed the addition of av1_highbd_quantize_avx2.c in
b962dbb276.

Change-Id: Ieb2324fc3a8e26be3bd7e190b036a785c39dfa5d
2017-06-21 15:32:48 +00:00
Sebastien Alaiwan 4da880bd2b Always use the 16-bit coding path
The encoder and decoder will now use the 16-bit (high-bitdepth)
coding path, regardless of the encoding profile.

This is a step towards the removal of the 8-bit (low-bitdepth)
coding path (which remains compile-checked at the moment).

BUG=aomedia:611

Change-Id: Ie764c39a327d48b18d77246a028493b6270b9f88
2017-06-21 15:09:16 +00:00
James Zern a9b275fdd7 variance_test: Use static arrays for test params
fixes compiler warnings in MSVC related to decorated name truncation

Change-Id: I614e2466651d2f90983ba34ba560d093754c1028
2017-06-20 22:59:23 -07:00
James Zern 7184065fae subtract_test: Use static arrays for test params
fixes compiler warnings in MSVC related to decorated name truncation

Change-Id: I07869a4f46baf3995a56073f0d2d1918540b736b
2017-06-20 22:58:56 -07:00
Tom Finegan ff766cd2c8 Make sure Python is present before pulling in gtest.
The CMake build of gtest requires python. Make sure it's
on the system, and disable tests when it's not. Also note
the Python requirement in the prereqs section of README.md.

BUG=aomedia:604

Change-Id: Iafe4891eca121eb57548e14b08477dc3c8a9c9df
2017-06-21 02:25:59 +00:00
Nathan E. Egge a325233ab1 Remove the av1_inter_mode_tree[] constants.
Change-Id: Id5a9a5d0b2ea98d0354dbe8fa5ed11bd6d02e4c8
2017-06-21 01:35:47 +00:00
Yunqing Wang 8657ad7597 Handle the invalid warped model error
Handled the invalid warped model error in the decoder.

BUG=aomedia:610

Change-Id: I8a67a4f6c6fe4dd6c2a71fdef432b3f689e9efcb
2017-06-20 23:29:26 +00:00
James Zern 5d61b60907 get_min_tx_size: disable -Warray-bounds
this warning is covered by an assert and other runtime detection.
expanding the array, adding a conditional or converting the type to int
are less desirable.

BUG=aomedia:578

Change-Id: Idb6a1dec5f17db85a0e9c1d0ee372e701f4e1aa4
2017-06-20 22:39:56 +00:00
Frederic Barbier fe06cb72ce Cleanup useless 'else'
Change-Id: Ieaa6c453cd2cf9d5e15801a246ac0aebf9f4501a
2017-06-20 22:20:16 +00:00
Angie Chiang 4e5b8f7c91 Integrate global_motion with convolve_round in lbd
The performance of convolve_round on top of
global_motion and warped_motion is
lowres 0.899%

Change-Id: I3b4a343bbac8ca14d62cae5bca38f4daa7140f28
2017-06-20 22:14:23 +00:00
Frederic Barbier 237c53e56c Replace dead assertion
As delta_q_present_flag is set to 0 if segment_quantizer_active is 1,
previous assert was never evaluated.

Change-Id: Ia89fffc2f82595198acd2630d5d5d5ba22d43633
2017-06-20 22:13:17 +00:00
Yaowu Xu 36b545888e Change left shifts to multiplications
avoid warnings about left shift of negative numbers.

BUG=aomedia:617

Change-Id: I8793132c562759b0cc9eefb7c7a50fddb3149184
2017-06-20 22:11:34 +00:00
Yunqing Wang 562a39370c Declare rate_mv_bmc in warped motion
A motion refining was added in warped motion, which required the
declaration of rate_mv_bmc in warped motion.

BUG=aomedia:613

Change-Id: I74dfc396f915a5cc4599bfbdccad758fa630505f
2017-06-20 21:27:42 +00:00
Yi Luo 6faf349a3a Add high bit depth fast path quantizer avx2
- User level encoder timer reduction ~4.3% with
  following testing: 1080p, 10-bit, 4Mbps, 4 frames,
  profile=2, i7-6700.

Change-Id: Ib4a579d10cbd705cb7b1c4f0d619159a76bb34d7
2017-06-20 21:03:29 +00:00
Tom Finegan 78516fca4e Build static libaom without internal deps in CMake.
Change the internal lib targets so that external apps
need link only libaom instead of all internal library
targets and libaom.

BUG=aomedia:76,aomedia:609

Change-Id: I38862fcd90cb585300b6b23e8558f78a1934750f
2017-06-20 19:57:02 +00:00
Tom Finegan b962dbb276 Sync CMake build with the configure build.
Added: CONFIG_EXT_COMP_REFS
Changed, 0 => 1: CONFIG_ONE_SIDED_COMPOUND

BUG=aomedia:76

Change-Id: Ibe84d6fe18a58029345b0c06c4e9825f94221dd2
2017-06-20 19:24:57 +00:00
Tom Finegan 84f2d796c8 Add shared library support to the CMake build.
This is enabled via:
$ cmake path/to/aom -DBUILD_SHARED_LIBS=1

Currently supports only Linux and MacOS targets. Symbol visibility
is handled by exports.cmake and its helpers exports_sources.cmake
and generate_exports.cmake.

Some sweeping changes were required to properly support shared libs
and control symbol visibility:

- Object libraries are always linked privately into static
  libraries.
- Static libraries are always linked privately into eachother
  in the many cases where the CMake build merges multiple library
  targets.
- aom_dsp.cmake now links all its targets into the aom_dsp static
  library target, and privately links aom_dsp into the aom target.
- av1.cmake now links all its targets into the aom_av1 static library
  target, and privately links in aom_dsp and aom_scale as well. It
  then privately links aom_av1 into the aom target.
- The aom_mem, aom_ports, aom_scale, and aom_util targets are now
  static libs that are privately linked into the aom target.
- In CMakeLists.txt libyuv and libwebm are now privately linked into
  app targets.
- The ASM and intrinsic library functions in aom_optimization.cmake
  now both require a dependent target argument. This facilitates the
  changes noted above regarding new privately linked static library
  targets for ASM and intrinsics sources.

BUG=aomedia:76,aomedia:556

Change-Id: I4892059880c5de0f479da2e9c21d8ba2fa7390c3
2017-06-20 19:24:53 +00:00
Angie Chiang 81b2e50213 Pass conv_params into warp-related functions
This aims at integrate convolve_round/compound_round
with global_motion

Change-Id: I1d91ff2de6b075f807eaaaa0a7a66edb2036e57b
2017-06-20 17:42:12 +00:00
Yaowu Xu 31d192794f Avoid left shift of negative values
changes shifts to multiplications

BUG=aomedia:617

Change-Id: I46a7b3b5d566f8c671e54d8cb876cc53fdc5009d
2017-06-20 16:51:36 +00:00
David Michael Barr 23198661a6 [CFL] drop skip logic, always write alpha
Results on Subset 1 (Compared to a0f8c145 with CfL)

  PSNR | PSNR Cb | PSNR Cr | PSNR HVS |   SSIM | MS SSIM | CIEDE 2000
0.0677 | -0.3359 | -0.2115 |   0.0529 | 0.0735 |  0.0495 |    -0.0907

Change-Id: Ib61ff862e8cfbdf0c693a4eba5f2712a6e9ab819
Signed-off-by: David Michael Barr <b@rr-dav.id.au>
2017-06-20 16:40:44 +00:00
Jonathan Matthews c6469232c7 Fix compilation for
CONFIG_DELTA_Q &&
 !CONFIG_EC_ADAPT &&
 !CONFIG_EXT_DELTA_Q

Introduced in
  Ic42f60e19c56db52dd51b3784fd305c7e6b595c7

BUG=aomedia:616

Change-Id: Id0af560914d6b32c467dbb773d9462a089260944
2017-06-20 09:17:46 +01:00
Sebastien Alaiwan 0ba49a588b Use AOMMAX instead of ternary
Change-Id: Icfe43e3eda3dcdf5a6d5209e60b842e950655678
2017-06-20 04:47:21 +00:00
Sebastien Alaiwan 918c3c113d Rename 'size' to 'frame_size'
Change-Id: Ie720d1befcfe3c77db56bd3313b6e920fd69945c
2017-06-20 04:39:46 +00:00
Sebastien Alaiwan 62fc41adc8 Reduce scope of local variables
Change-Id: I702240cde0bd3befa196d722311003758b507c04
2017-06-20 04:39:13 +00:00
Yaowu Xu 1fd71059d6 lpf_8_test: Use static arrays for test params
fixes compiler warnings in MSVC related to decorated name truncation

Change-Id: I8a46898ac61d97ba3479268f16a93cc5d3169f4b
2017-06-20 03:48:07 +00:00
David Michael Barr c854bacc54 [CFL] Restore missing pair in cfl_alpha_codes
In 84a44dbe, there was a transcription error in the table.
Point { 5, 3 } was duplicated and { 5, 0 } was missing.

While we are here, updated the order and CDF from subset3.

Results on subset1 (compared to cab68ae6 with CfL)
   PSNR | PSNR Cb | PSNR Cr | PSNR HVS |    SSIM | MS SSIM | CIEDE 2000
 0.0416 | -0.2732 | -0.3848 |   0.0385 | 0.0309 |  0.0230 |    -0.0178

Change-Id: I3244245792c5ab99b4149ae5f8a2439d4214ed69
Signed-off-by: David Michael Barr <b@rr-dav.id.au>
2017-06-20 02:38:08 +00:00
Joe Young aa2f1c7a5a [intra-edge] Cosmetic changes
Change-Id: Ib28bd27d0c2b2e1eb89ef3168b4293f8aa1712bc
2017-06-20 02:24:12 +00:00
Luc Trudeau 14fc50452d [CFL] RDO Loop Rework
CfL performs an extra loop iteration during luma mode selection. Recent
changes have broken the extra iteration. Remove previous approach.

New approach adds the extra iteration right before uv parameter
selection. Interesting fact, If the best luma intra mode already has
worse RD performance than the best inter mode found so far (if any),
then the entire chroma intra search is skipped, including the extra 
iteration.

Results on Subset1 (compared to 3e18e4a with CfL)

   PSNR | PSNR Cb | PSNR Cr | PSNR HVS |    SSIM | MS SSIM | CIEDE 2000
-0.3090 | -2.7271 | -2.3521 |  -0.3369 | -0.3463 | -0.3525 |    -1.1868

Change-Id: If67b0badd2c8ea25c61685483d39d622c1729b18
2017-06-20 01:39:16 +00:00
Luc Trudeau 5f3d370b50 [CFL] Fix stack smash in cfl_load
The height padding offset was computed from the beginning of the pixel buffer
and not the current position in the pixel buffer.

  PSNR | PSNR Cb | PSNR Cr | PSNR HVS |    SSIM | MS SSIM | CIEDE 2000
0.0000 | -0.0001 |  0.0002 |  -0.0000 | -0.0000 | -0.0000 |    -0.0002

Change-Id: Id20ec3a6395b11d0258ec1e100890fe4701b820c
2017-06-20 00:25:26 +00:00
Joe Young 830d4ce495 [intra-edge] Convert 4x4 VP9 to ext-intra; upsample edge samples
Updates to intra-edge experiment

- Convert VP9-style intra pred to Ext-intra style
- Upsample edge predictors by 2x based on angle and edge size

BD-rate, 1-kf AWCY
  360p:  -0.11%
  720p:  -0.54
  1080p: -0.96

Change-Id: Ib73805d31d5d286e607a7ee7470fcbdf11edbbff
2017-06-19 22:01:28 +00:00
Jingning Han 71adf5292a Revert "Clamp inverse transform coefficients"
This reverts commit 79b78b7d47.

The transform coefficient range needs some more tuning.
Before we finalize on that front, directly applying clamping
would cause multiple unit test failure issues. Hence revert
this Cl temporarily.

BUG=aomedia:612

Change-Id: I1dd8680dee17289801c4a209275f05a498355c8e
2017-06-19 21:50:48 +00:00
Jingning Han acca889afc Fix tile independency unit test
BUG=aomedia:614

Change-Id: I8aab46954af9d6c6d31aba0bd96d6eb9f181b84c
2017-06-19 21:50:16 +00:00
Ryan Lei a9a23f7fe2 fix a bug in the parallel deblocking experiment for chroma plane
for chroma plane, when mapping from pixel location to the mi_row
and mi_col, need to consider sampling ration of the chroma plane.

Change-Id: I7a369fd6a5c6c4dc5495da64d83f90a532de7ad5
2017-06-19 20:11:21 +00:00
Luc Trudeau 3e18e4aeaa [CFL] Compute Luma Average Over Partition Unit
Extract the compution of the luma reconstructed average out of cfl_load
and into cfl_compute_average. The reconstructed luma average is stored
in the CFL_CONTEXT to avoid computing it for each transform block and
for each plane.

Results on subset1 (compared to 803bea2 with CfL)
   PSNR | PSNR Cb | PSNR Cr | PSNR HVS |    SSIM | MS SSIM | CIEDE 2000
-0.0474 | -0.1486 | -0.2931 |  -0.0358 | -0.0397 | -0.0127 |    -0.1162

Change-Id: I9e34af0fe5961ce8dbe70cb80aea2a16221d0d92
2017-06-19 20:10:14 +00:00
Jingning Han 401680b4c4 Fix coefficient range for identity matrix
Account for the scaling factors in coefficient range of identity
matrix.

BUG=aomedia:612

Change-Id: If3e9669b72797862e6af65a943f2054ae34430ae
2017-06-19 19:11:15 +00:00
Timothy B. Terriberry 5d24b6f049 encoder: Remove 64x upsampled reference buffers
They do not handle border extension correctly (interpolation and
border extension do not commute unless you upsample into the
border), nor do they handle crop dimensions that are not a multiple
of 8 (the upsampled version is not sufficiently large), in addition
to using massive amounts of memory and being a criminal waste of
cache (1 byte used for every 8 bytes fetched).

This commit reimplements use_upsampled_references by computing the
subpixel samples on the fly. This implementation not only corrects
the border handling, but is also faster, while maintaining the
same quality.

HL AWCY results are basically noise:
    PSNR | PSNR HVS |   SSIM | MS SSIM | CIEDE 2000
  0.0188 |   0.0187 | 0.0045 |  0.0063 |     0.0228

Change-Id: I7527db9f83b87a7bb8b35342f7e6457cd0bef9cd
2017-06-19 18:50:57 +00:00
Angie Chiang 0eac3199d9 Fix compile error of lv_map
Change-Id: Ic328d112a4f950396d60113cf1b0f50e96fdfebf
2017-06-19 18:22:57 +00:00
Debargha Mukherjee 887069f3cd Fix a bug for non 420 formats and some refactoring
BUG=aomedia:607

Change-Id: I5a5fb893f0237e7ca6e0d807e825f8d4e26949b2
2017-06-19 17:32:11 +00:00
Zoe Liu c082bbcbad Add new coding tool of ext-comp-refs
The tool of ext-comp-refs adds the uni-directional compound reference
prediction. In details, 3 pairs of uni-direcitonal compound references
are added for the comp ref prediction:
(LAST_FRAME, LAST2_FRAME),
(LAST_FRAME, GOLDEN_FRAME), and
(BWDREF_FRAME, ALTREF_FRAME).

This new tool of ext-comp-refs will eventually overwrite
one-side-compound and have the two coding tools to merge to one.

It achieves -0.35 ~ -0.55% coding gains in BDRate, compared against
AV1 baseline with the default experiments on, but without
one-sided-compound. It achieves -0.2% ~ -0.3% coding gains when
one-sided-compound is on. It achieves larger gains on higher
resolution.

Change-Id: Icbdb16e97b96aaebaf2213f5f72d5331e2e358eb
2017-06-19 16:38:00 +00:00
Zoe Liu 0c634c704b Unify the checking on compound mode prediction
Change-Id: Id9c025febf21aeb67cbc719f585661b715bdb9ce
2017-06-19 16:30:35 +00:00
Jingning Han db252a43a1 Fix ext-tile unit test
Resolve enc/dec mismatch due to recent changes on low-bitdepth
flag.

BUG=aomedia:611

Change-Id: I833d30517edbab7bb19949cea8d1f7553c0babb5
2017-06-19 16:08:36 +00:00