1473 Commits

Author SHA1 Message Date
Debargha Mukherjee
250c6af087 Merge "Various wedge enhancements" into nextgenv2 2016-05-16 21:11:35 +00:00
Debargha Mukherjee
fb8ea1736b Various wedge enhancements
Increases number of wedges for smaller block and removes
wedge coding mode for blocks larger than 32x32.

Also adds various other enhancements for subsequent experimentation,
including adding provision for multiple smoothing functions
(though one is used currently), adds a speed feature that decides
the sign for interinter wedges using a fast mechanism, and refactors
wedge representations.

lowres: -2.651% BDRATE

Most of the gain is due to increase in codebook size for 8x8 - 16x16.

Change-Id: I50669f558c8d0d45e5a6f70aca4385a185b58b5b
2016-05-16 12:41:47 -07:00
Jingning Han
14dd5538e9 Properly handle 2D filter boundary extension
The amount of border extension needed in the first stage inter
filtering is decided by the length of the second stage filter
kernel.

Change-Id: Icddbc58c02234d5df09ff0eeebcf166ffe689203
2016-05-16 11:49:27 -07:00
Angie Chiang
909bbe734a Add flip feature to vp10_inv_txfm2d.c
Change-Id: Id5f0fade42749d2bed5553eda0d690af22b6c5b1
2016-05-13 12:21:58 -07:00
Angie Chiang
6a75253311 add unit test for highbd flip transform
Change-Id: I368d365ee0f58373bc399b615febd790addb2c36
2016-05-13 12:20:06 -07:00
Yi Luo
a3a69b400c HBD inverse HT 4x4 SSE4.1 optimization
- Tx_type: DCT_DCT, DCT_ADST, ADST_DCT, ADST_ADST.
- Encoder overall instruction count drops 2.91%.
- Decoder overall instruction count drops 1.01%.
- Add unit test to test bit-exact result against C.

Change-Id: I908c9e0e5106c58f67dd72d28760e6c9ce54278e
2016-05-13 12:08:43 -07:00
Jingning Han
cacd634791 Fix vp10_get_inv_txfm_64x64_cfg
Add a missing break statement to prevent unintended behavior.

Change-Id: I54ecc95d4a35d4011e85af5635c94015cc944331
2016-05-12 16:07:23 -07:00
Jingning Han
ddee66f2e4 Refactor the inter predictor for supertx
This commit unifies the inter predictor used in supertx at both
encoder and decoder sides. It removes the redundant decoder
implementations related to border extension.

Change-Id: I03985cee52604a518394232fa9258ce057af9c00
2016-05-12 14:43:24 -07:00
Jingning Han
7ac38a7143 Merge "Unify the use of inter predictor in encoder and decoder" into nextgenv2 2016-05-12 21:27:07 +00:00
Jingning Han
d6c881358b Unify the use of inter predictor in encoder and decoder
This commit unifies the inter predictor used in the encoder and
decoder side for super-tx experiment. This resolves an enc/dec
mismatch found in nextgenv2 nightly-run unit test.

Change-Id: I16ab8d6063edf9d2fba79473f470f1a592cc10a0
2016-05-12 12:52:30 -07:00
Yunqing Wang
e7ebe26dd5 Merge "Add decoder APIs and unit tests in tile-coding experiment" into nextgenv2 2016-05-12 19:05:58 +00:00
Angie Chiang
1e587ae616 Merge "Add flip option for vp10_fwd_txfm2d_#x#_c" into nextgenv2 2016-05-12 18:08:28 +00:00
Yunqing Wang
8e5e338727 Add decoder APIs and unit tests in tile-coding experiment
In the tile-coding experiment,
1. In tile decoder, added 2 set control APIs:
   VP10_SET_DECODE_TILE_ROW and VP10_SET_DECODE_TILE_COL. It allowed
   users to set the range of decoding at frame level.
2. Added a unit test while tile-coding experiment is on. It tested
   both tile encoder and decoder to make sure the encoded frame
   can be decoded as a whole frame or as independent tiles.

Change-Id: I73fd0632b685047cb9376008127cde72efa3fb2b
2016-05-11 16:47:26 -07:00
Alex Converse
ccf4f47b99 Merge changes I412c24aa,I28a8bbf0
* changes:
  mcomp: Remove an obsolete undef.
  mcomp: Remove an obsolete comment.
2016-05-11 20:03:21 +00:00
Geza Lore
c1b739014f Cost wedge sign/index properly in rdopt.
Lowres improves by about 0.1%

lowres: -2.164 BDRATE

Change-Id: I393bbb92700bfbb8763ace424f4edc2d672a74b4
2016-05-11 11:59:10 -07:00
Debargha Mukherjee
c590c590e6 Merge "Adjust smoothing function for wedge to be sharper" into nextgenv2 2016-05-11 18:02:08 +00:00
Yaowu Xu
a45596cff7 Merge "Added a measure of rc drift." 2016-05-11 18:02:00 +00:00
Yue Chen
372e12b959 Merge "Add single motion search for OBMC predictor" into nextgenv2 2016-05-11 17:20:32 +00:00
Debargha Mukherjee
81abbc203e Adjust smoothing function for wedge to be sharper
Improves performance by 0.2%

lowres: -2.052% BDRATE

Also increases precision of the shift parameters (for further
investigation into different wedge shifts).

Change-Id: I59fcab9baa002e52a6487ed8d617185840a678ed
2016-05-11 09:35:43 -07:00
Paul Wilkins
5fd142e763 Merge "Fixed 8K two pass encoder crash." 2016-05-11 16:25:25 +00:00
paulwilkins
45df87ca57 Added a measure of rc drift.
Added actual and absolute rate miss values to the opsnr.stt
stats output line.

Changes to the borg graphing may be needed before merge.

Change-Id: I1e9d548ce445d29002f0c59ebfd3957a6f15e702
2016-05-11 15:15:07 +01:00
paulwilkins
65732c36a8 Fixed 8K two pass encoder crash.
Bug found by Yunqing relating to the correction for size at 8K and
above in get_twopass_worst_quality().

The basis for the correction was changed to the linear size relative to
1080P as a baseline and the adjustment has been clamped to prevent
problems at extreme images sizes.

For 1080P the results on our test sets were neutral but the low res and
mid res sets saw a small gain (0.1%-0.2% average).

I would also expect some gains on 4k and larger content where the
previous correction was overly aggressive.

Change-Id: I30b026b5f4535e9601e3178d738066459d19c8fb
2016-05-11 14:45:50 +01:00
Geza Lore
0778f05cab Compute end of frame precisely with selective tile decoding.
Change-Id: I0ee480d437411bebe240bedff204682833efb131
2016-05-11 11:11:14 +01:00
Yue Chen
370f203a40 Add single motion search for OBMC predictor
Weighted single motion search is implemented for obmc predictor.
When NEWMV mode is used, to determine the MV for the current block,
we run weighted motion search to compare the weighted prediction
with (source - weighted prediction using neighbors' MVs), in which
the distortion is the actual prediction error of obmc prediction.

Coding gain: 0.404/0.425/0.366 for lowres/midres/hdres
Speed impact: +14% encoding time
              (obmc w/o mv search 13%-> obmc w/ mv search 27%)

Change-Id: Id7ad3fc6ba295b23d9c53c8a16a4ac1677ad835c
2016-05-10 18:27:45 -07:00
Angie Chiang
1954fa390f Add flip option for vp10_fwd_txfm2d_#x#_c
Will add unit test to test/vp10_fwd_txfm2d_test.cc later

Change-Id: I626900c67fca4eee2ad0ae1828188527a04a5362
2016-05-10 18:14:57 -07:00
Alex Converse
6dd5ec7efb mcomp: Remove an obsolete undef.
The macro was removed in 6724676.

Change-Id: I412c24aac49bd1ff60a331a30933e0d8ae3f2dd5
2016-05-10 18:04:24 -07:00
Alex Converse
7764f8af3e mcomp: Remove an obsolete comment.
This was copied over from VP8. VP9 doesn't seem to do this buffer copy.

Change-Id: I28a8bbf0503a7f99b2cb60620ab3674adde863bb
2016-05-10 18:04:24 -07:00
Yaowu Xu
dc73c3332e Merge "Move count buffers from stack to heap" into nextgenv2 2016-05-10 23:58:59 +00:00
Jingning Han
005564813d Merge "Remove unused highbd_fdct32x32 function" into nextgenv2 2016-05-10 23:16:41 +00:00
Jingning Han
4b639fcf43 Merge "Remove unused highbd_ihalfcenter32_c function" into nextgenv2 2016-05-10 23:16:35 +00:00
Jingning Han
dd4352b5cd Merge "Fix high bit-depth build with ext-inter and dual-filter exps" into nextgenv2 2016-05-10 23:16:26 +00:00
Yaowu Xu
102cdf94ed Move count buffers from stack to heap
This fixes the stack overflow issue on MSVC build.

Change-Id: Icb0a78e5992a097d2192979ec2432546eaa452dd
2016-05-10 14:49:26 -07:00
Jingning Han
5cf3408ba1 Remove unused highbd_fdct32x32 function
The encoder is using vp10_fwd_txfm2d_32x32 now.

Change-Id: I719f18ec0b065f1e062d01fd300533dd2f17c712
2016-05-10 14:33:34 -07:00
Jingning Han
6b9a507f82 Remove unused highbd_ihalfcenter32_c function
Change-Id: I4390fcbdf353d79dadc021d83d40891e518997dc
2016-05-10 14:27:16 -07:00
Jingning Han
f28550d348 Fix high bit-depth build with ext-inter and dual-filter exps
Change-Id: Ie4a884899d73cafea439ecab6ff4de54652b8c28
2016-05-10 14:17:13 -07:00
Sarah Parker
f6acf8ad7c Move new quant experiment in quant_common.c from nextgen
NEW_QUANT allows bin widths to be modified as a factor of the nominal
quantization step size. This adds functions to get dequantization
values based on the dequantization offset and 3 knots for a single
quantization profile.

Change-Id: I41f10599997e943cb3391c7a0847d8485b9d8b43
2016-05-10 13:40:37 -07:00
Debargha Mukherjee
3fbe6e5e49 Merge "Wedge rd improvements" into nextgenv2 2016-05-10 20:34:00 +00:00
Debargha Mukherjee
447032eb32 Wedge rd improvements
Improves speed by about 10-15% by combining y-only rd with
modeling function in a better way.
Also, coding efficiency improves by about 0.1%

lowres: -1.805% BDRATE with ext-inter

Change-Id: I6ef1f8942ec6806252f3fcf749ae4f30dffe42b1
2016-05-10 11:47:48 -07:00
Alex Converse
fcc7edd48f Merge "Fix some ans const warnings." into nextgenv2 2016-05-10 18:26:53 +00:00
Yaowu Xu
bf692e853d Merge "Fix build without dual-filter" into nextgenv2 2016-05-10 18:10:44 +00:00
Yaowu Xu
0f1ee1caeb Merge "Remove "const" for parameters passed by value" into nextgenv2 2016-05-10 18:05:27 +00:00
Debargha Mukherjee
61ac55314d Merge "Break tile row dependencies." into nextgenv2 2016-05-10 18:00:34 +00:00
Debargha Mukherjee
a53337740d Merge "Fix interintra predictor buffer overflow." into nextgenv2 2016-05-10 17:59:33 +00:00
Yaowu Xu
fc9deb6b0c Remove "const" for parameters passed by value
This commit removes const from parameters that are passed by value
for consistency in code style.

Change-Id: I2947c4e9cc6e809c4b9b4c162046e45127b8a41c
2016-05-10 09:30:44 -07:00
Yunqing Wang
a2676565d3 Merge "Refine VP10 REFRESH_FRAME_CONTEXT_MODE" into nextgenv2 2016-05-10 15:53:48 +00:00
Yi Luo
73d28a4068 Merge "Change inverse HT function argument from TXFM_2D_CFG* to int" into nextgenv2 2016-05-10 15:38:11 +00:00
Yaowu Xu
9e41323f13 Merge "Make type conversions explicit" into nextgenv2 2016-05-10 14:33:05 +00:00
Geza Lore
559e8d8e50 Fix build without dual-filter
Change-Id: I91946940c1540c9f935161da89155ed304055fda
2016-05-10 13:12:07 +01:00
Geza Lore
9ab9438fbb Break tile row dependencies.
When not using ext-tile, there were still dependencies between tile
rows due to various tools (eg intra predictors) relying on the above
row or above mode info, which can be in the above tile. This is now
broken (the same way as it was when ext-tile is enabled) by fixing
the appropriate predicates.

Change-Id: I107dd0d8481775a792f14e05cfbbd761f16cdc1e
2016-05-10 13:09:47 +01:00
Geza Lore
e9d2e36264 Fix interintra predictor buffer overflow.
When constructing the intra predictor for rectangular interintra blocks,
the last row/column of the first square is copied back into the source
image (which is the current reconstructed image buffer) before
predicting the second square. The code used to use the height instead
of width for vertical rectangles, and vice versa for horizontal
rectangles, leading to overwriting the block on the right/below. This
leads to an encode/decode mismatch if the right/below block is in a
different tile and is encoded before the current block, which did happen
with multi-threaded encoding tests. This is now fixed.

Change-Id: I073a2a447a98b842b1394d72cc774a78cb296921
2016-05-10 09:53:29 +01:00