Commit Graph

322 Commits

Author SHA1 Message Date
Jean-Marc Valin
cf23aefab5 Reducing copies in deringing filter
Only copy the modified pixels from the first filter back into the input of the
second filter.

Change-Id: Ifb9094c33c876a8c6caa0f68771fc7ef59c78b53
2016-11-02 08:22:51 -07:00
Jean-Marc Valin
3e44bccb50 sb_all_skip_out() now computes a list of deringed blocks
No change in output

Change-Id: I9051ed6e1fbca7d80412ba2b53f7aacbc3ef70eb
2016-11-02 08:22:45 -07:00
Jean-Marc Valin
71466d2288 compute bskip as we go
Change-Id: I5681e3329ad3677296161de59f5ff1236a14f086
2016-11-02 08:22:38 -07:00
Yaowu Xu
3e90f84a34 Revert "Fix dering filter when using 4:2:2 or 4:4:0 subsampling"
This reverts commit 401204a50b.

Change-Id: Id27eadf679b0df2d2ccfab61155be29979b0b6ba
2016-11-02 08:22:02 -07:00
Yi Luo
fb77385fd0 Merge "Remove unused copies of transform related source code" into nextgenv2 2016-11-02 01:43:19 +00:00
Yi Luo
7f6bf9c70d Merge "Hybrid inverse transforms 16x16 AVX2 optimization" into nextgenv2 2016-11-02 01:43:02 +00:00
Jingning Han
9679464e28 Merge "Change TXFM_CONTEXT from TX_SIZE to uint8_t" into nextgenv2 2016-11-02 01:18:19 +00:00
Jingning Han
746e2220b5 Merge "Rework transform block partition context model" into nextgenv2 2016-11-02 01:18:13 +00:00
Urvang Joshi
a5b09216b5 Merge "Revert of "Mark bogus palette color probabilities as zero"." into nextgenv2 2016-11-02 00:31:55 +00:00
Jingning Han
8b9478af1e Change TXFM_CONTEXT from TX_SIZE to uint8_t
Count the transform block partition context in the unit of pixels.

Change-Id: Ibb66f053526ed347ad0274b78db7ac35cc086b0e
2016-11-01 15:44:26 -07:00
Urvang Joshi
eb54e0cde8 Revert of "Mark bogus palette color probabilities as zero".
Reverted commit: f8306bfdc (with some changes).

Reason: This was triggering an assert in debug build because of zero
probability values. So, using an "UNUSED_PROB" macro to replace these to
retain clarity.

Assertion failure can be reproduced as follows:

$ make clean; extra_cflags='-O0 -g -fno-inline' ../../configure
--enable-debug --enable-experimental --enable-palette && make -j 16

$ ./aomenc -D --codec=av1 ~/videos/screen_content_set/gimp.y4m -o
/tmp/foo.webm --tune-content=screen --limit=50

Pass 1/2 frame   50/51      8976B    1436b/f   86169b/s 2902620 us
(17.23 fps)
Pass 2/2 frame   25/0          0B 2933053 us 8.52 fps [ETA  unknown]
aomenc: ../../av1/encoder/cost.c:46: cost: Assertion `prob != 0' failed.
Aborted (core dumped)

Change-Id: I47a76b8f415060909bc8448fae3002857eb61d8e
2016-11-01 15:25:57 -07:00
Yi Luo
ea1167c33f Remove unused copies of transform related source code
- Library size reduces: 165 kB, 292 kB (HBD).

Change-Id: I50cb630dde326bd2a28c0db4b7e2d53c2fd94a2a
2016-11-01 15:07:46 -07:00
Jingning Han
c8b8936fdc Rework transform block partition context model
This commit allows the partition context model to account for the
maximum transform block size of the coding block.

Change-Id: I22b91e85fff70faa974afd362ce327d3f2eda81d
2016-11-01 15:00:04 -07:00
Yaowu Xu
980eb2e9fa Merge "Change to use correct variable in for-loop" into nextgenv2 2016-11-01 21:07:11 +00:00
Yi Luo
7317200002 Hybrid inverse transforms 16x16 AVX2 optimization
- Add unit tests to verify the bit-exact result.
- User level time reduction (EXT_TX):
    encoder: 3.63%
    decoder: 2.36%
- Also add tx_type=V_DCT...H_FLIPADST SSE2 for 16x16 inv txfm.

Change-Id: Idc6d9e8254aa536e5f18a87fa0d37c6bd551c083
2016-11-01 13:38:20 -07:00
Yaowu Xu
ddcdd5b1e5 Merge "Fix a compiler warning with --enable-adapt-scan" into nextgenv2 2016-11-01 18:12:49 +00:00
Yaowu Xu
2ce9707910 Merge "Resolve build issue --enable-aom-qm" into nextgenv2 2016-11-01 18:12:39 +00:00
Yaowu Xu
6043bfdb03 Change to use correct variable in for-loop
Change-Id: I252c2f06dfe256d2d33fd1abc42aaadf50273cc8
2016-11-01 09:54:05 -07:00
Jingning Han
ae81f8b2ab Merge "Make txfm_partition_update support rectangular tx_size" into nextgenv2 2016-11-01 16:51:03 +00:00
Yaowu Xu
b386f0b762 Fix a compiler warning with --enable-adapt-scan
Change-Id: I93b191a522ed3e3ca9a363beab4292f64e869610
2016-11-01 09:40:12 -07:00
Yaowu Xu
a5924740a2 Resolve build issue --enable-aom-qm
Change-Id: I9f52ddb53b39cefd2e0ee7144203e1f3958d01aa
2016-11-01 09:32:03 -07:00
Yaowu Xu
fd601e346c Merge "Rename av1_convolve.[hc] to convolve.[hc]" into nextgenv2 2016-11-01 02:25:19 +00:00
Yaowu Xu
6557ea9fe2 Rename av1_convolve.[hc] to convolve.[hc]
Change-Id: I2047adc4c147201ce0ce3c533fe2861cbff1002c
2016-10-31 17:17:37 -07:00
Jingning Han
7956bd64d7 Make txfm_partition_update support rectangular tx_size
Change-Id: I7d2414a8766141d5109b599271179bc505c772d3
2016-10-31 16:46:30 -07:00
Jingning Han
f65b870e27 Refactor max_blocks_wide/high computation
Factor common codes that show up in multiple places.

Change-Id: I0a72213a151f74bdad926d59f86f0a28d00968fc
2016-10-31 12:39:36 -07:00
Jingning Han
393a60d208 Remove unused tx_size tables
Change-Id: I04367fb68e8fd027f4b9d945f4001e5ab346d098
2016-10-31 12:39:33 -07:00
Jingning Han
7e9929736c Replace get_tx2d_size() with direct tx_size_2d[] table access
Change-Id: I20040cdb5d9fdbf6c50082e5e17b4cfbd1926b13
2016-10-31 12:39:33 -07:00
Jingning Han
a98d80fdaa Merge "Use the actual transform block size for loop filter selection" into nextgenv2 2016-10-31 19:09:07 +00:00
Yaowu Xu
750955b4c1 mvref_common.c: apply clang-format
Change-Id: I755bfb11a57e92e3a68855a53e95efe526f198fd
2016-10-31 09:13:53 -07:00
Yaowu Xu
09a4265725 Merge "simp-mv-pred integration with ref-mv" into nextgenv2 2016-10-30 19:54:41 +00:00
Yaowu Xu
aa70234e82 Merge "Fix the top-right reference block location" into nextgenv2 2016-10-30 19:54:23 +00:00
Yaowu Xu
e7a64cc9ec Merge "Let is_interp_needed always return 1" into nextgenv2 2016-10-30 19:53:40 +00:00
Yaowu Xu
a2d2a1858e Merge "EC_ADAPT: refactor and fix MinArfFreq unit tests." into nextgenv2 2016-10-30 17:16:19 +00:00
Yaowu Xu
2ae4214618 Merge "Add ec_multisymbol for common daala_ec and rans code" into nextgenv2 2016-10-30 17:15:28 +00:00
Yaowu Xu
eaafb17d41 Merge "Add EC_ADAPT experiment for symbol-adaptive entropy coding." into nextgenv2 2016-10-30 16:21:47 +00:00
Deng
ca8d24d4e1 simp-mv-pred integration with ref-mv
This commit adds simp-mv-pred experiment. The experiment is to work on
top of ref-mv experiment to save memory bandwidth and reduce the size
of line buffer needed in ref-mv experiment.

When compared to ref-mv, this experiment showed:
low-delay BDR gain: 0.03%
High-delay BDR gain: 0.01%
memory/memory bandwidth saving: 40%
local memory/gate count saving: 20%

Change-Id: Ic4006e041fc58ede411da83d0d730c464ebe1749
2016-10-29 22:26:48 -07:00
Jingning Han
ea9cf097c9 Fix the top-right reference block location
This commit fixes the top-right reference block location for block
sizes above 8x8. It improves the coding performance of ref-mv:

lowres 0.08%
midres 0.15%

Thanks to jiafeng@ for finding this issue.

Change-Id: I70750fc7b18bf0126d3e07abc1b63ca5a160193e
2016-10-29 22:26:48 -07:00
Angie Chiang
a69ce1b314 Let is_interp_needed always return 1
This CL will cause
0.122% PSNR drop on lowres dataset
0.059% PSNR drop on midres dataset

However, it will facilitate hardware implementation.

Change-Id: I0a0713acacbfd571509a721337711c021915dd3c
2016-10-29 22:26:48 -07:00
Thomas Davies
6519bebf34 EC_ADAPT: refactor and fix MinArfFreq unit tests.
Ensure that cdfs are synced with pdfs after every
forward update.

Change-Id: I5677f78300156c8622f1728d7a343ff6c3a4ea64
2016-10-29 22:21:32 -07:00
Alex Converse
aca9feba82 Add ec_multisymbol for common daala_ec and rans code
The new ec_multisymbol experiment supersedes the rans experiment and is
used for multisymbol features that can be backed by either daala_ec or
rans.

This experiment is automatically enabled by ec_adapt and will try to
enable daala_ec or ans (in that order).

Change-Id: Ie75b4002b7a9d7f5f7b4d130c1aacb3dbe97e54f
2016-10-29 17:05:40 -07:00
Thomas
9ac5508f32 Add EC_ADAPT experiment for symbol-adaptive entropy coding.
This experiment performs symbol-by-symbol statistics
adaptation for non-binary symbols. It requires DAALA_EC or
RANS and ANS to be enabled. The adaptation is currently
based on a simple recursive filter and is taken from
Daala. It has an adaptation rate dependent on alphabet size,
taken from Daala. It applies wherever non-binary symbols
are encoded using Cumulative Probability Functions rather
than trees.

Where symbols are adapted, forward updates in the compressed
header are removed.

In the case of RANS coefficient token values are adapted,
with the exception of the zero token which remains a
binary symbol. In the case of DAALA_EC other values
such as inter and intra modes are adapted as CDFs are
provided in those cases.

The experiment is configured with:

./configure --enable-experimental --enable-daala-ec --enable-ec-adapt

or

./configure --enable-experimental --enable-ans --enable-rans \
    --enable-ec-adapt

EC_ADAPT is not currently compatible with tiles.

BDR results on Objective-1-fast give a small loss:

PSNR YCbCr:      0.51%      0.49%      0.48%
PSNRHVS:      0.50%
SSIM:      0.50%
MSSSIM:      0.51%
CIEDE2000:      0.50%

Change-Id: I3888718e42616f3fd87144de7f125228446ac984
2016-10-29 16:57:48 -07:00
Jingning Han
9fb1d69e82 Use the actual transform block size for loop filter selection
Parse the recursive transform block partition to fetch the actual
transform size. Use this correct transform size to select the
corresponding loop filter kernel. This slightly improves the coding
performance of recursive transform partition for hdres to 0.14%.

Change-Id: Ibe8bc3fdd0d222a4f1fb8156c56a407bec052b9b
2016-10-29 15:59:55 -07:00
Zoe Liu
9d37fe47a2 Merge "Clean the code in ref frame context decision for ext-refs" into nextgenv2 2016-10-28 23:36:41 +00:00
Yaowu Xu
efd5725242 Merge "Encode and decode multiple tile groups" into nextgenv2 2016-10-28 21:26:11 +00:00
Zoe Liu
782c96438c Clean the code in ref frame context decision for ext-refs
For compound mode, it is a sure thing that one of the 2 reference frames
would be either a forward predictive reference, or a backward predictive
reference, and the other would provide a different prediction.

Change-Id: I8d7b40525bec4db0f26ba255c8eefa9f20bd52a3
2016-10-28 12:23:38 -07:00
Thomas Davies
80188d1546 Encode and decode multiple tile groups
This is a manual adaptation of the following commit from aom/master:
ce12003d60a1c8d6c65ed07ba165c34062fcbcbd

The original commit message:

A tile group is a set of tiles in scan order.

Each tile group has a version of uncompressed and compressed headers,
identical apart from tile group parameters.
Encoding probability updates takes account of the number of
headers to control overheads.

The decoder supports arbitrary numbers of tile groups with
arbitrary number of tiles. The number of tiles in a TG is
signalled in the uncompressed header for that TG.

The encoder currently only supports a fixed number
of TGs (3, when error resilient mode is on) of equal size
(except possibly for the last one).

The average BDR performnce with 3 tile groups versus
anchor with error resilient mode and up to 16 tiles is:

NR YCbCr:      3.02%      3.04%      3.05%
PSNRHVS:      3.09%
SSIM:      3.06%
MSSSIM:      3.05%
CIEDE2000:      3.04%

Change-Id: I9b97c5ed733103b9160a3a5d4370de5322c00c0b
2016-10-28 11:52:13 -07:00
Urvang Joshi
79f4fc476d get_palette_color_context: Make code more readable.
For clarity, use separate variables for 'color_ctx_hash' and
'color_ctx' instead of reusing same variables for both.

BUG=webm:1324

Change-Id: I3a516ea54353e1f0737822c613a68da252e30c6e
2016-10-28 09:42:05 -07:00
Angie Chiang
6b7255374d Merge "Pass block pixel width/height into av1_predict_intra_block" into nextgenv2 2016-10-28 15:51:30 +00:00
Jingning Han
73144260e3 Merge "Remove unused get_tx1d_width/height wrapper" into nextgenv2 2016-10-28 15:48:25 +00:00
Angie Chiang
45c198a197 Pass block pixel width/height into av1_predict_intra_block
Change-Id: Ia69bceef24b61b0a222783eba79e7a70bb60edd8
2016-10-27 17:13:50 -07:00