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

21244 Коммитов

Автор SHA1 Сообщение Дата
Frederic Barbier 05b45e6b79 Avoid use of deprecated inv-txfm in encoder
Change-Id: Ie721eaf58d0716e340b9ebdff9fd215cfe0c3c2a
2017-06-28 12:04:56 +00:00
Thomas Davies 894cc81312 NEW_MULTISYMBOL: adapt comp_ref and bwd_ref.
Change-Id: I711cd173af501ba955e889d1e2205125615a99fd
2017-06-28 09:50:17 +00:00
Jingning Han 243b66bc32 Support rectangular tx_type coding in var-tx
Support the transform block kernel coding for rectangular
transform block size in var-tx. This integrates txk-sel with
var-tx.

Change-Id: I9a8edd84812168f56c79b78cc9af34f6304b1d54
2017-06-28 04:07:09 +00:00
Angie Chiang 8147372094 Fix lv_map when accounting is on
Change-Id: I2e5191d0274776521ec7e3a2f79468dc86adb9e0
2017-06-28 01:10:49 +00:00
David Barker 6c4af6b7c8 Fix some irregularities in SSE2 variance code
Change-Id: I1dcf3bd33645aed3347301149808c157eeb44cad
2017-06-28 00:53:28 +00:00
Wei-Ting Lin 85a8f70c5c ncobmc_adapt_weight: Add bitstream syntax
Define the syntax and entropy coding templates for
NCOBMC_ADAPT_WEIGHT. The actual values of the default
probabilities and the index tree structure need to
be fine tuned.

In this experiment all mv's in a superblock are sent
first as in the ncobmc case.

Change-Id: I68d50d3d27346c2847ea449a1168c6a99fbb4d3d
2017-06-27 22:30:13 +00:00
Todd Nguyen 302d097096 Add experiment bgsprite
Work in progress to generate ARF with stitched background image.

Change-Id: I2fea75bbe5ac6f713f53eb5825776dadfc1d98c5
2017-06-27 22:28:19 +00:00
Urvang Joshi bda59df37b Enable smooth_hv by default.
This experiment was provisionally adopted on 2017-06-27.

Change-Id: Ic7eb232b8187133f59956eed09e5f5de02c0986e
2017-06-27 22:27:56 +00:00
Luc Trudeau 8fb4c9e730 [CFL] Sum Alpha Distortion Over Transform Block
This change does not impact the bitstream, it changes how to distortion
is summed when evaluating alpha. The sum is still taken over the entire
partition. However, instead of iterating over the entire surface all at
once, CfL now iterates over each transform block. This is in light of
future work to compute alpha over transform blocks and not prediction
blocks.

Results on Subset1 (compared to 9c6f854 with CfL)

  PSNR | PSNR Cb | PSNR Cr | PSNR HVS |   SSIM | MS SSIM | CIEDE 2000
0.0000 |  0.0000 |  0.0000 |   0.0000 | 0.0000 |  0.0000 |     0.0000

Change-Id: Ic7b72201d29ad6b2527748e35b212bec515e3bdb
2017-06-27 22:02:28 +00:00
Debargha Mukherjee f053cba247 Reduce multiplier precision for warp least squares
Includes reordering and other clamping changes, as well as
changes to reduce multiplier precision.

cam_lowres (60 frames): -0.092% BDRATE improvement in
--disable-cdef --disable-global-motion --disable-ext-tx
configuation.

Change-Id: I0660c45b44fcd5a193534d8dadd1aa1ae5c5e27a
2017-06-27 21:49:32 +00:00
Yi Luo 5128109508 Fix inv txfm low/high bitdepth selection logic
We are going to have several commits to setup new low/high
bitdepth data path selection logic. This patch is for inverse
transform. Let me summarize the ideas as following.

- For low/high bitdepth selection, encoder depends on
  input configuration, e.g., video sequence bitdepth,
  profile. Decoder depends on input bitstream. This has
  nothing to do with compiler/build  configuration.

- Typical encoder usage for sampling format 4:2:0.
  1) 8-bit video sequence:
   a) --profile=0
   Fastest encoding/decoding pipeline on speedup.

   b) --profile=2 --bit-depth=10
   Image pixels are left shifted by 2 bits. It
   employs 16-bit reference frame buffer and has high
   calculation precision. It usually enjoys higher
   compression performance.

  2) 10/12-bit video sequence (HDR):
   --profile=2 --bit-depth=10/12

- Transform coefficient type:
  Lowbitdepth:  int16_t
  Highbitdepth: int32_t

- The type, tran_low_t is still used in codebase,
  Which is int32_t, defining the data path capacity.
  Naturally, it is high bitdepth.

Eventually we shall remove the configuration flags,
CONFIG_HIGHBITDEPTH/CONFIG_LOWBITDEPTH, and seperate
low and high bitdepth data path. Two data paths co-exist
in the same build environment.

Change-Id: I35c06d4d4f19ebf80d909168fdddbae57c3cc884
2017-06-27 21:20:51 +00:00
Sarah Parker 784596d5f1 Remove redundant checks in read/write_tx_type
Change-Id: I348dfd1f8b555306a3fb625bf2303f9cd2649e07
2017-06-27 15:14:24 +00:00
Rupert Swarbrick 580943a78d supertx: Read and write transforms with CDF in decode_partition
Patch b1bedf5f73 converted the three writes in bitstream.c that
specify an extended transform from using av1_write_token (encoded with
probability trees) to aom_write_symbol (encoded with CDFs).

That patch fixed up the two reads in decodemv.c but didn't fix up the
corresponding read in decodeframe.c. This patch does so.

The patch also fixes up a write of a (non-extended) transform when not
CONFIG_EXT_TX and the corresponding read.

Change-Id: Ibf5dcfcf3e7122f08dd0ef8616fb0ecddb95d99a
2017-06-27 10:03:01 +00:00
Jingning Han e3b81bcf6a Rework recursive transform block partition search
Support transform block level kernel selection in the recursive
transform block partitioning search.

Change-Id: I511c39705ee636b0c9fabbe4720fe5a9764b964a
2017-06-27 02:35:37 +00:00
Jingning Han a65f3051d6 Re-organize the block index in decode_reconstruct_tx
Make the block index use cases consistent in the recursive
transform block partition.

Change-Id: I57778acfab73c786a1db8c8b9110d56ce6df4854
2017-06-27 02:35:32 +00:00
Wei-Ting Lin 1d46d90319 Fix token-encoding errors in NCOBMC
mi[0] is not set properly when encoding all mvs in a
super-block first. After this patch NCOBMC can function
properly.

Change-Id: I149a50184c4823c0d3b82b6b21c7608e639668e6
2017-06-27 00:24:15 +00:00
Yaowu Xu d43d6777a6 quantize.c: convert to int before apply sign
This change makes the conversions similar to those in av1_quantize.c,
and fix ubsan warnings shown in nightly tests.

Change-Id: I90851a80dcb9f052a32bf22199fd9ef8ff927725
2017-06-26 15:49:37 -07:00
James Zern 284c883029 aom_dsp.cmake: add highbd_quantize_intrin_avx2.c
added in:
193422e76 Add avx2 highbd_quantize_b

Change-Id: Ie4ba48042ffd36d69d2bf200bba12a1d924c8f9c
2017-06-26 21:36:59 +00:00
Yushin Cho 8ab875d63e daala-dist: high bit depth support
Change-Id: Idafef140d3425a9a9f66cb8864a804c4d2a89a70
2017-06-26 21:01:27 +00:00
Adrian Grange 0d6ab64e67 Remove redundant code line
Change-Id: Iaf9e8192905ea24946d6e2831be5739eaa564fae
2017-06-26 20:58:08 +00:00
Yushin Cho 0474912c38 Fix daala-dist for var-tx
The var-tx has its own suite of tx size/type RD search functions,
which recursively split the partition into square tx blocks.

The Daala-dist requires access to 8x8 pixels (both decoded and predicted)
since it measures the distortion for multiple of a 8x8 pixels.
Thus, if tx block is smaller than 8x8, it waits until all of sub8x8 blocks
are RD searched (with MSE) then replaces the MSE of 8x8 pixels with
daala-dist's calculated distortion for 8x8 pixels.

It is also applied to luma pixels only.

Change-Id: Ic4891e89b4ef05cf880aa26781d2d06ccf3142de
2017-06-26 19:54:41 +00:00
Lester Lu ad8290b8e6 New experiment: LGT
In previous ADSTs, DST-7 and DST-4 are used for length 4 and length
8/16/32, respectively. In this LGT experiment we explore transforms
between DST-4 and DST-7. When CONFIG_LGT flag is on, adst4 and adst8
are replaced by lgt4 and lgt8, the intermediate transforms with
pre-chosen parameters.

The LGTs applied here are lgt4_160 and lgt8_170, where the numbers
mean the self-loop weights times 100. The associated values for DST-7
and DST-4 are 100 and 200.

ovr_psnr:
lowres: -0.140
midres: -0.131
hdres: -0.078

These changes are not applied to the highbd scenario in the
current version.

Change-Id: I20600456da8766528b2b6b11aa28801e70af498e
2017-06-26 19:11:25 +00:00
Yushin Cho 75b0100431 Fix daala_dist to handle visible pixels only
- If invisible pixels, av1_daala_dist() simply use source pixles for dst.
- Added av1_daala_dist_diff() which inputs diff signal instead of dst.

- Refactored daala_dist code so that av1_daala_dist() and _diff()
is called inside av1's distortion calculation functions, pixel_sse() and
sum_squares_visible().

Change-Id: Id857db52fe19856d92c46a9e84ac2962c01ae045
2017-06-26 18:47:20 +00:00
Debargha Mukherjee 6f0566e7b1 Fix some valgrind errors in loop-restoration
BUG=aomedia:623

Change-Id: I158072895adb8a9f5f177b8146f3beec265d7406
2017-06-24 00:36:50 -07:00
David Barker 67d968f322 Change mv scaling behaviour
This patch changes the motion vector scaling and clamping to be
slightly more accurate (removing an occasional 1px offset due to
multiple roundings) and fixes the border clamping when scaling
frames.

Change-Id: I032dc0b87854eebafa58f1f803981e23c8cc2d9b
2017-06-24 07:22:02 +00:00
Sebastien Alaiwan 6757197a91 Simplify superframe index writing
Avoids mixing accesses to ctx->pending_cx_data
with serialization logic.
"index_sz" is deduced from the write position,
instead of being redundantly computed.

Change-Id: Ic14f93886da61acc1735fbbe4f787e45a4ca79eb
2017-06-24 06:58:47 +00:00
Sebastien Alaiwan d94476d1c4 Fix double definition of 'pd'
This reverts commit a3d70911c3.

Reason for revert: this was fixed in cb63767 which moved the
definition to a different line causing this change to merge
cleanly, resulting in a duplicate.

Change-Id: I2d8763f0e2af320f043a1417ba33e82f82163592
2017-06-24 06:37:22 +00:00
James Zern d937cdbef9 x86: _mm_set_epi64x -> _mm_{set_epi32,cvtsi32_si128}
_mm_set_epi64x is incompatible with visual studio x86 configurations

Change-Id: I7986e43d0471699553affeefabae66a512d9d46a
2017-06-24 02:37:59 +00:00
James Zern cab708b775 configure,cmake: test for -Wstring-conversion
BUG=aomedia:621

Change-Id: I60b4fa9e5ebbef37bf1859a98d82c34821d2d02b
2017-06-24 00:48:17 +00:00
James Zern 88896734ea {decodeframe,rdopt}.c: fix asserts with strings
lead with '0 &&' to avoid string to bool conversion warnings

BUG=aomedia:621

Change-Id: I2cd6618377f9ed94f4d9dbc252f6f5cfc81efea4
2017-06-24 00:48:17 +00:00
Angie Chiang bd99b38c7f Pass mbmi into get_scan()
This is to facilitate future experiment related to adapt_scan

Change-Id: I51628f3df81bd82db7f8f553d13da0ee5792d7d9
2017-06-24 00:38:20 +00:00
Yushin Cho a3d70911c3 Fix compile warning
Fixed the compile warning when both global-motion
and warped-motion are disabled.

Change-Id: Ie3ac036fc6c0a15e54a56427452682d7ea7864db
2017-06-24 00:30:30 +00:00
Fergus Simpson 7a3f4b3594 scaling: Fix scaling numerator arguments for KFs
0835e7b80 left out the required changes to aomenc.c for the KF numerator
arguments for resize and superres to work. This patch adds them.

Change-Id: I350b01c8b187188de5313fffaa15c1ec9f052469
2017-06-23 21:59:58 +00:00
Wei-Ting Lin 9c6f85475d Add NCOBMC_ADAPT_WEIGHT experiment flag
NCOBMC_ADAPT_WEIGHT allow using different interpolation kernels
to combine overlapped predictions generated using mvs in the
neighboring blocks.
This experiment will build on top of MOTION_VAR and it might conflict
with WARPED_MOTION in the developing stage, so will only be effective
when MOTION_VAR is on and WARPED_MOTION is off.

Change-Id: I4f1b6e55b6146ed443955751c09bfa22ef2f33e8
2017-06-23 20:40:46 +00:00
David Barker 11132ce34c Fix bug with chroma-sub8x8 + resizing
The special path in build_inter_predictors for chroma blocks
corresponding to sub8x8 luma blocks would always fetch the
scale factors from 'xd', which correspond (at least in the
decoder) to the references of the block for which is_chroma_reference
returns true.

The correct behaviour is to fetch the scale factors from 'ref_buf',
which corresponds to the references of the block currently being
predicted.

This patch fixes some encode/decode mismatches which were caused
by the above behaviour when the various reference frames had
different sizes.

Change-Id: I48a0a167ea25d47d08018016cf8b77885b3b5d6b
2017-06-23 17:23:27 +00:00
Debargha Mukherjee afe7c5fd7a Do not find transformation for very few points
Adds check to make sure that find transformation functions are
never called for 0 points.

Change-Id: I2d7cf40aace535b1d708d6189aea9c1e0f7c281b
2017-06-23 13:36:49 +00:00
James Zern d598f04df2 variance_test: move Subpel* from tuples to TestParams
this normalizes these tests with the regular variance ones both in
implementation and test list output

Change-Id: Iaa549f2e2a054d716c24f5a64baf700747c55295
2017-06-23 06:02:52 +00:00
Yaowu Xu cde0a31b29 Revert "Always use the 16-bit coding path"
BUG=aomedia:620

This reverts commit 4da880bd2b.

Change-Id: I40a2295083b3328ef743d3eab9c2aa514dc698eb
2017-06-23 00:33:33 +00:00
Steinar Midtskogen 079acac180 Silence warnings in VS
BUG=aomedia:615

Change-Id: I827e857d310020705a5292ef8fe817bc042d8dd0
2017-06-22 20:01:25 +00:00
Yaowu Xu 9180b6e89e Prevent divide-by-zero
Change-Id: Id22615d461bf16272d1b2e2c72ae7e00db8bcb5c
2017-06-22 19:55:13 +00:00
Yaowu Xu bdda9d4e9d convert to int before apply sign
avoids overflow of unsigned integer.

Change-Id: Ic92974b508bb0cd6fc680203ffa6cff14d644ff7
2017-06-22 19:53:31 +00:00
Jingning Han cb63767421 Fix compiler warning in joint_motion_search
Avoid compiler warning when global-motion is off.

Change-Id: Ie6a0d3e4efc0e06b263e8c8c0c0dc153738c3804
2017-06-22 19:07:52 +00:00
Tom Finegan d2a74d6b08 Add missing dependency to CMake test object libraries
The test libs omitted the dependency on aom.

Change-Id: I47fe769252151cf0bf81f245452e22512963c9fa
2017-06-22 16:27:41 +00:00
Zoe Liu a56f916e85 Add entropy stats dump out for individual frame context type
Change-Id: Id0cd184e8b3cea085ecc3adbc7fea7bb765c7986
2017-06-22 16:22:00 +00:00
Yi Luo 193422e76f Add avx2 highbd_quantize_b
- First pass encoding time reduces ~10.9% on i7-6700
  at 100 frames, 1080p.
- avx2 works for coeff number >= 8 cases; coeff number < 8
  case will be implemented by sse2.
- Unit test is added type B/FP/DC.

Change-Id: Ibe5b7807c64e6dfc2d59c470ed50a6e8ca94ef7c
2017-06-22 15:52:01 +00:00
Yushin Cho 04eb9594f1 Fix daala-dist, rd tx search
Previously, for block >=8x8, and tx < 8x8,
we skipped setting the early-exit flag in block_rd_txfm() because
distortion for sub8x8 tx block is from MSE but reference (best)
is from daala-dist.
However, not setting early-exit flag turned out to be the reason
for a regression in MSE probe mode of daala-dist because
it loses the chance to set rd_stats properly.

On the other hand, there is still a small regression, say 0.05% psnr bd-rate,
which seems to occur in the case that a tx block in a partition has chosen
the skipped rd_cost since it is smaller than non-skip rd_cost and
set the early-exit flag to 0 (so, not exit), but the daala-dist applied
to the whole partition cannot access the same info but can choose from
two kinds of rd_costs:
1) all tx blocks are skipped (even if a tx block has non-zero coeff) and 0 bits
2) sum of final distortion of all tx blocks (i.e. non-zero coeff decoded)
and bits to encode coeffs.

Change-Id: I2ec69972aa1f22d465293cb9e8d5e18ef2c6f7f3
2017-06-22 15:16:10 +00:00
Yaowu Xu a0cc9aa816 Add missing accumulation cross threads
BUG=aomedia:618

Change-Id: Ie96ccc363462a28527c99a72e97b7acaf2ab0ff8
2017-06-22 01:50:28 +00:00
Sebastien Alaiwan 493fd88948 Simplify packetization of frames into a superframe
Change-Id: I013780b81b0de04a2a359bf65c44c3c3c5e0729f
2017-06-21 23:21:27 +00:00
Sebastien Alaiwan e4d6f9bfdf Simplify flow of control
Change-Id: Idded8f8774c10c53fba59e7b834583399e57225c
2017-06-21 23:20:32 +00:00
Angie Chiang a1d0c4d53c Integrate global_motion with convolve_round in hbd
Change-Id: I46d77055765c0edcb615f1bb851fea10f6fc84ba
2017-06-21 23:11:46 +00:00