12269 Commits

Author SHA1 Message Date
Jack Haughton
fa4b1ca714 Fix cost array overrun bug in search_bilateral_level()
Change-Id: I9b7b727cb45328040a82477a2ce8eb3d15feec77
2015-06-09 14:21:55 +01:00
Julia Robson
ece7479208 Fix to loopfilter tests
Ensuring the random numbers used by the loopfilter tests
are in a valid range

Change-Id: If8130145c413dbe7e29180046eca3e4f7d941706
2015-06-09 13:09:09 +01:00
Debargha Mukherjee
b433dd4443 Adds wavelet transforms + hybrid dct/dwt variants
The wavelets implemented are 2/6, 5/3 and 9/7 each with
a lifting based scheme for even block sizes. The 9/7
one is a double implementation currently.

This is to start experiments with:
1. Replacing large transforms (32x32 and 64x64) with wavelets
or wavelet-dct hybrids that can hopefully localize errors better
spatially. (Will also need alternate entropy coder)
2. Super-resolution modes where the higher sub-bands may be
selectively skipped from being conveyed, while a smart
reconstruction recovers the lost frequencies.

The current patch includes two types of 32x32 and 64x64
transforms: one where only wavelets are used, and another
where a single level wavelet decomposition is followed
by a lower resolution dct on the low-low band.

Change-Id: I2d6755c4e6c8ec9386a04633dacbe0de3b0043ec
2015-06-08 23:30:38 -07:00
Jack Haughton
2799fad98c Fix masked_variance overflow for non-highbitdepth
Change-Id: I668b034111ccc877c70cf65035a9c748fe00aeba
2015-06-08 12:09:48 -07:00
Debargha Mukherjee
5a69abc66b Merge "Windows build fix" into nextgen 2015-06-05 17:40:06 +00:00
Debargha Mukherjee
ad2cf9b444 Windows build fix
Change-Id: I663e0d61c4115a5297baeb25f39743e1eea95fbf
2015-06-05 10:24:24 -07:00
hui su
507857786d Fix lossless mode in tx-skip experiment
Change-Id: I205fa8614a9079ce7e6ca87d7b08fe3602bbd376
2015-06-04 15:13:37 -07:00
Julia Robson
33199783ea Added tests for high bit depth quantize functions
This was originally part of change-id:Idef18f90b111a0d0c9546543d3347e551908fd78
but the rest of that patch has previously been incorporated into nextgen
without these tests.

Change-Id: I6ac491ed1cfc153e0ed3cb999c76feac9d5e74e3
2015-06-04 16:00:39 +01:00
Debargha Mukherjee
b8a793458a Fix lossless mode with new_quant experiment
Change-Id: Ia0b00746e3f7aacf8d9488db3522ab72d9dc22fd
2015-06-04 02:45:54 -07:00
Alex Converse
1f537e3818 intrabc: Remove NEWDV from the intra mode tree.
Change-Id: I4e13da4bf70386f6f70ea733fb9adeb41682c735
2015-06-03 13:26:03 -07:00
Alex Converse
f35fb46c48 intrabc: Fix mismatch introduced by 85a7485.
Change-Id: I1ea51ebbd1e3cb60a13a30e3252253493c28baec
2015-06-03 13:07:49 -07:00
Alex Converse
783d18d22a Merge "intrabc: Include NEWDV in mode_2_counter" into nextgen 2015-06-03 16:09:36 +00:00
Debargha Mukherjee
d6ff3b3b22 Merge "Implied skip is 0 for intra blocks" into nextgen 2015-06-02 21:10:18 +00:00
Alex Converse
7944249b80 Merge "intrabc: Add odd-pel support for 444." into nextgen 2015-06-02 19:03:15 +00:00
Alex Converse
8cbed23cdf intrabc: Include NEWDV in mode_2_counter
This fixes a failure to decode as VP9 with frame level signalling
patched in and removed to implictly force it off.

This is primarily a correctness fix, but there were small coding gains.
0.074% smaller on derlf
0.180% smaller on screen_content

Change-Id: I4cc264bf4d9016201924be198a0c5b8374020fd9
2015-06-02 11:01:00 -07:00
Pieter Kapsenberg
ec1e91847c Implied skip is 0 for intra blocks
Skip flag is removed from the bitstream for all blocks coded in intra
mode. Very minor coding gain in derf and stdhd sets (0.048 and 0.1)

Change-Id: I79f03300f16d6fa84ce54405cafecab8a021cd7d
2015-06-01 18:27:34 -07:00
Jingning Han
b71176b477 Fix the upper limit of row/column tile index
If the decoder is configured to decode a tile indexed above the
upper limit, the internal codec will clip the index to the upper
limits.

Change-Id: Icbc1bb7b14069ac009e0a2042dd66a46d6f76679
2015-05-29 09:12:05 -07:00
Jingning Han
f5660af165 Allow vpxdec to produce target tile reconstruction
This commit allows the vpxdec to produce the target tile
reconstruction as its output. When the provided tile index is -1,
the entire corresponding row/column tiles will be reconstructed.
If the tile index is over the upper limit, the decoder will decode
left-most/bottom tile.

Change-Id: I4c18bdb32099f736f99b8842f7f177a32b3fee09
2015-05-28 23:20:24 -07:00
Jingning Han
89747d09cc Enable selective key frame tile decoding
This commit allows the decoder to decode selective tiles according
to decoder configuration settings. To decode a single tile out of
the provided key frame bit-stream (test_kf.webm), set compiler
configuration:

--enable-experimental --enable-row-tile --enable-key-frame-tile

use the command:

vpxdec -o test_dec.y4m test_kf.webm --tile-row=1 --tile-column=2

where the tile's row and column indexes are 1 and 2, respectively.

To decode all row tiles inside a provided column index, use:
--tile-row=-1 --tile-column=2

To decode all column tiles inside a provided row index, use:
--tile-row=2 --tile-column=-1

Change-Id: Ib73c266414dcee7eaab5d741b90d0058970dae56
2015-05-28 16:10:13 -07:00
Alex Converse
85a7485137 intrabc: Add odd-pel support for 444.
Odd pel still needs more testing on 4:2:0.

0.2% smaller on the PNG set. 4095 better, 1324 worse.

Change-Id: Idf2f108a96462c7696e63d533605e4a926a8b203
2015-05-28 15:44:15 -07:00
Debargha Mukherjee
fe79548bc8 Merge "Intrabc high bit depth functionality" into nextgen 2015-05-28 22:40:38 +00:00
Debargha Mukherjee
8f82bc172c Merge "Turn on global rotation-zoom warping prediction" into nextgen 2015-05-28 22:07:29 +00:00
Julia Robson
153d824207 Intrabc high bit depth functionality
Fixing compile errors when intrabc and vp9_highbitdepth are both enabled.
Error arose because intrabc uses vp9_setup_scale_factors_for_frame()
which takes an additional argument (use_highbitdepth) when
vp9_highbitdepth is enabled.

Change-Id: I6a15b09dcea0d35525f4c25efb6848804ae5cfab
2015-05-28 12:05:37 +01:00
Alex Converse
f80879d452 Merge "palette: don't repeat calc_dist for j = 0" into nextgen 2015-05-28 01:55:05 +00:00
Jingning Han
30fb5831da Merge "Fix a memory overflow issue in large scale tile use case" into nextgen 2015-05-28 01:53:56 +00:00
Jingning Han
d8d30cfb9b Merge "Configure selective tile decoding" into nextgen 2015-05-28 01:53:38 +00:00
Alex Converse
3df4a571a4 palette: don't repeat calc_dist for j = 0
Change-Id: I043c3b9696dbfa76436763ef871600cb54ade212
2015-05-27 11:45:00 -07:00
Debargha Mukherjee
5930a90cc9 Turn on global rotation-zoom warping prediction
With this patch, the ZEROMV mode is overloaded to represent
a single global dominant motion using one of three models:
1. True zero translation motion (as before)
2. A translation motion different from 0
3. A Rotation-zoom affine model where the predictor is warped
The actual model used is indicated at the frame level for
each reference frame.
A metric that computes the ratio of the error with a global
non-zero model to the error for zero motion, is used to
determine on the encoder side whether to use one of the two
non-zero models or not.

Change-Id: I1f3d235b8860e543191237024a89041ff3aad689
2015-05-27 11:33:33 -07:00
Jingning Han
ceda343d0b Fix a memory overflow issue in large scale tile use case
Increase the tok_count array size defined in VP9_COMP to avoid
out of boundary memory access.

Change-Id: Ib277c1102cb5f8355b1d69991532a94e24a2242e
2015-05-27 11:18:06 -07:00
hui su
c4f04808eb Merge "Fixed a bug in palette expt for 444 video format" into nextgen 2015-05-27 18:14:16 +00:00
hui su
f3f2645f24 Fixed a bug in palette expt for 444 video format
The bug was that palette color map was not correctly recorded.

Change-Id: I237494d1d6449c53c5d24eed8c25dcf2f8d21e66
2015-05-27 10:53:17 -07:00
Jingning Han
3b6901730f Merge "Make the tile coding syntax support large scale tile decoding" into nextgen 2015-05-27 16:40:49 +00:00
Jingning Han
f00bf10de0 Configure selective tile decoding
Add decoder control to extract single tile from key frame.

Change-Id: Id018bf267d748bfd96a6261055de4194f632190c
2015-05-27 09:22:34 -07:00
Alex Converse
57fefc1d73 Merge "intrabc: Fix probs of illegal modes." into nextgen 2015-05-27 01:03:02 +00:00
Jingning Han
f7a39d7f08 Make the tile coding syntax support large scale tile decoding
This commit makes the bit-stream syntax support fast selective tile
decoding in a large scale tile array. It reduces the computational
complexity of computing the target tile offset in the bit-stream
from quadratic to linear scale, while maintaining relatively small
stack space requirement (in the order of 1024 bytes instead of 1M
bytes). The overhead cost due to tile separation remains identical.

Change-Id: Id60c6915733d33a627f49e167c57d2534e70aa96
2015-05-26 12:54:00 -07:00
Alex Converse
1748a59f83 intrabc: Fix probs of illegal modes.
ibc: derflr -0.069 screen_content -0.085
ibc+tx+pal: derflr +0.017 screen_content -0.029

Change-Id: I79c0ca0a5c38c53afd209286dbcd78873e070098
2015-05-26 12:51:53 -07:00
Jingning Han
7099fd12bd Fix assertion conditions for tile coding
Allow up to 1024 row/col tiles instead of 4 for row tile and 64 for
column tile.

Change-Id: I1702254e241401821f3aaab1645f6df6dbc48b8d
2015-05-26 16:38:15 +00:00
Debargha Mukherjee
a14e3616b3 Merge "Loop_postfilter high bit depth functionality" into nextgen 2015-05-25 08:04:04 +00:00
Zoe Liu
98f6f54d93 Merge "Refined the mv ref candidate selection" into nextgen 2015-05-23 00:00:15 +00:00
Zoe Liu
e84c1d24bc Refined the mv ref candidate selection
Now this is an on-going work on the re-work on the motion vector
references for all Inter coding modes. Currently implementation on
sub8x8 and BLOCK_8X8 is done. More work will be added along the way.

Essetial ideas include:

(1) Added new nearestmv algorithm through adaptive median search, out of
the four nearest neighbors: TOP, LEFT, TOPLEFT, and TOPRIGHT;

(2) Added new sheme for sub8x8 to obtain the mv ref candidates,
specially, mv ref candidates are obtained depending on the sub8x8 mode
of the current block as well as the sub8x8 mode of the neighboring
block;

(3) Added top right corner mv ref candidate whenever it is available;
The adding of the top right mv ref has showed potential in helping such
video clips as bridge_far_cif.

Change-Id: I573c04cd346ed7010f4ad87a6eaa6bab6e2caf9c
2015-05-22 16:06:45 -07:00
Julia Robson
650e12dd63 Loop_postfilter high bit depth functionality
Adding a high bit depth version of the function loop_bilateral_filter()
and ensuring the appropriate version of this function is called when
vp9_highbitdepth is enabled.

Change-Id: I7a78029c733a9a79b3b2f39af0de0824239ad5a3
2015-05-22 10:34:44 -07:00
hui su
8806e25215 Code cleanup in tx-skip expt
No effect on performance

Change-Id: I493da0d4d8fb3a7d95f07574b800cb6c85705229
2015-05-22 10:20:58 -07:00
Pieter Kapsenberg
70ddd92d9a Removing skip inferrence with all 0 TX
If a non-skipped block has all transform blocks with only 0 data, then
decoder infers skip flag. This affects the loopfilter. No real encoder
would do this though, so it is pointless. Also, it causes headaches in
HW implmentations as the loop filter cannot proceed until all TX blocks
in the block have been checked. There could be up to 768 of them in
64x64 4:4:4 with 4x4 transform.

Change-Id: I45a021d1f27ca7feefed2242605777e70ce7cabd
2015-05-21 23:03:16 +00:00
Jingning Han
c238d6cd72 Merge "Enable arbitrary tile size support" into nextgen 2015-05-21 22:56:59 +00:00
Alex Converse
feb3a14e44 Merge "intrabc: Cleanup." into nextgen 2015-05-21 22:27:56 +00:00
Alex Converse
afea20e94c Merge "intrabc: Fix costing for tx_skip." into nextgen 2015-05-21 22:27:47 +00:00
Alex Converse
57f6a6d225 Merge "intrabc: Don't double account for skip" into nextgen 2015-05-21 22:27:40 +00:00
Jingning Han
bae6229884 Merge "Make internal codec support arbitrary tile size" into nextgen 2015-05-21 22:24:28 +00:00
Jingning Han
73ca749ddb Merge "Refactor internal tile_info variables to support 1024 tiles" into nextgen 2015-05-21 22:24:05 +00:00
Jingning Han
ad5ede6e36 Merge "Support up to 64 row tile coding" into nextgen 2015-05-21 22:23:42 +00:00