2722 Commits

Author SHA1 Message Date
Zoe Liu
411c490bc3 Improved LAST3's single ref prob context design a little
On derflr testset, using 12-bit HightBitDepth mode, this CL obtained a
small gain of +0.031% by turning on LAST2+LAST3.

Change-Id: Ib6c9d595e56269634bf29d684eabcd806fc08cc9
2015-09-21 15:03:43 -07:00
Zoe Liu
c0889b9a8c Added a 3rd reference frame LAST3_FRAME
Under experiment CONFIG_LAST3_REF, which can only be turned on when
the experiment of CONFIG_MULTI_REF is on, i.e. LAST3_FRAME can only
be used when LAST2_FRAME is used. CONFIG_LAST3_REF would most likely
be combined with CONFIG_MULTI_REF once the performance improvement
is further confirmed.

On the testset of derflr, using Average PSNR metrics, with HighBitDepth
(HBD) on:

(1) LAST2 HBD obtained +0.579% against base HBD;
(2) LAST2 + LAST3 HBD obtained +0.591% against LAST2 HBD;
(3) LAST2 + LAST3 HBD obtained +1.173% against base HBD.

Change-Id: I1aa2b2e2d2c9834e5f8e61bf2d8818c7b1516669
2015-09-18 15:25:46 -07:00
Debargha Mukherjee
b6d5b0838b ext-tx extension to intra blocks
derflr: improves to 1.692%

Change-Id: Idf583216b40ed02526b9b39031eaf2fb72fed11d
2015-09-17 14:21:24 -07:00
Debargha Mukherjee
c104998b61 Merge "Redo DST1 in the ext-tx experiment" into nextgen 2015-09-16 18:38:03 +00:00
Debargha Mukherjee
4dbaf9a5ab Redo DST1 in the ext-tx experiment
Moved from nextgenv2 branch to test with other experiments.

derflr: +1.629%

Change-Id: Ie7c720053ed8b628177679c4351bb31b54716a71
2015-09-16 09:46:13 -07:00
Zoe Liu
ec8864a8bf Added MACRO for reference frame encoding
This CL introduces a few macros plus code cleaning on the encoding of
the reference frames. Coding performance remains unchanged.

For the encoding of either the compound reference or the single reference
case, since each bit has different contexts, the tree structure may not
be applied to treat the combined bits as one symbol. It is possible we may
explore the sharing of the same context for all the bits to introduce
the use of tree structure for the next step.

Change-Id: I6916ae53c66be1a0b23e6273811c0139515484df
2015-09-11 14:57:31 -07:00
Zoe Liu
897192be43 Added one more reference frame LAST2_FRAME
Under the experiment CONFIG_MULTI_REF. Current version shows
LAST2 vs base in nextgen on the testset of derflr:

(1) 8-bit: Average PSNR +0.53%
(worst: students_cif: -0.247%; best: mobile_cif: 1.902%)
(2) 12-bit HBD: Average PSNR +0.63%
(worst: pamphlet_cif: -0.213%, best: mobile_cif: 2.101%)

More tuning on the reference frame context design and default
probs are being conducted. This version does not guarantee to
work with other experiments in nextgen. A separate CL will address
the working with all other experiments.

Change-Id: I7f40d2522517afc26ca389c995bad56989587f65
2015-09-09 14:27:05 -07:00
Shunyao Li
2de18d1fd2 Super resolution mode (+CONFIG_SR_MODE)
CONFIG_SR_MODE=1, enable SR mode
USE_POST_F=1, enable SR post filter
SR_USE_MULTI_F=1, enable SR post filter family
Not compatible with other experiments yet

Change-Id: I116f1d898cc2ff7dd114d7379664304907afe0ec
2015-08-31 15:29:39 -07:00
Debargha Mukherjee
9c685602d0 Make tests work with new configurations
Disables some test vector tests when Vp8/Vp9 decoders are disabled
in configuration. Also moves some macros to the vpx level in
line with recent refactoring on the master branch.

Change-Id: Iaac8008992110398ae096c36b9726f723164c207
2015-08-27 14:05:59 -07:00
Debargha Mukherjee
4525961d80 Some tweaks to probabilities for ext-tx with dst1
derflr: up to 1.429% from a little less than 1.3% when
--enable-dst1 is also enabled with --enable-ext-tx.

Change-Id: I301229f2239b18acb96accc4fc44b64fa6927ace
2015-08-12 14:31:31 -07:00
Debargha Mukherjee
23690fc5d1 Adds support for DST1 transforms for inter blocks
Adds an additional transform in the ext_tx experiment that
is a 2d DST1-DST1 combination.

To enable use --enable-ext-tx --enable-dst1.

This needs to be later extended to combine DST1 with DCT
or ADST.

Change-Id: I6d29f1b778ef8294bcfb6a512a78fc5eda20723b
2015-07-24 16:23:09 -07:00
Shunyao Li
188087202c Speed up of supertx
Limited the prediction extension to 8 pixels at each edge
Fixed a bug in the combination of wedge prediction and supertx

~10% speed up in decoder
derflr:     -0.004
derflr+hbd: +0.002
hevcmr:     +0.015

Change-Id: I777518896894a612c9704d3de0e7902bf498b0ea
2015-07-24 11:19:19 -07:00
Debargha Mukherjee
4b57a8b356 Add extended transforms for 32x32 and 64x64
Framework for alternate transforms for inter 32x32 and larger based
on dwt-dct hybrid is implemented.
Further experiments are to be condcuted with different
variations of hybrid dct/dwt or plain dwt, as well as super-resolution
mode.

Change-Id: I9a2bf49ba317e7668002cf1499211d7da6fa14ad
2015-07-23 18:01:22 -07:00
Shunyao Li
dac589d6d4 Optimize bilateral filter to improve speed
Optimization of bilateral filter:
1) Pre-calculate the bilateral filters at all the
levels at the initialization.
2) Convert 1D matrix to 2D matrix, avoid too many
multiplications in the bilateral filter loop.
3) Fix a bug in "loop_bilateral_filter_highbd".
The right-shifted range index can be larger than 255.

Change-Id: I42f6177e896706948e2403bd9edce46e3eb5cbf8
2015-06-29 14:48:59 -07:00
Peter de Rivaz
269f6e2cb1 Added support for extended partitions with copy_mode
Change-Id: I815374bd89e3faf2bac1b4155dbbe7366f0a1d29
2015-06-23 11:09:34 -07:00
Julia Robson
84d0da63d0 Palette high bit depth functionality
Changes to allow high bit depth and palette to be enabled at the
same time by using a 16 bit (instead of 8bit) palette when high
bit depth is enabled and modifying related functions accordingly.

Change-Id: I97d30b4d9338d3a51db02c94bc568eba60a8905d
2015-06-22 18:53:34 +01:00
hui su
c96afa256f Merge "Add q-index as context for initial token probs" into nextgen 2015-06-22 17:44:26 +00:00
hui su
5963fd35dd Add q-index as context for initial token probs
There are 4 entropy tables to select for initial entropy table,
depending on the frame base q-index. The entropy tables are
trained with derf, yt, and stdhd sets. About 0.2% gain on
the following test sets:

derflr       0.227%
yt           0.277%
stdhd        0.233%
hevclr       0.221%
hevcmr       0.155%
hevchr       0.182%

Change-Id: I3fde846c47fc020e80c814897690b4cda1da569c

Change-Id: I460408372586c823974f945ed9fd8dcb0360fbaf
2015-06-21 13:09:57 -07:00
Peter de Rivaz
100fff09b6 Added ext_partitions to supertx
Change-Id: I0e2a0253e5a8dcdb5b765836a3301299409e9d0a
2015-06-17 20:28:32 +00:00
hui su
0809dc09cb Merge "Fix tx-skip warnings on Windows" into nextgen 2015-06-15 19:41:24 +00:00
Alex Converse
a046bece1e Merge changes I9d80152b,I4e13da4b into nextgen
* changes:
  intrabc: Add a frame level flag
  intrabc: Remove NEWDV from the intra mode tree.
2015-06-15 16:57:05 +00:00
Peter de Rivaz
3bf31c4c98 Allow extended partition support to encode
Change-Id: I75246e2ee35a1b7c1ad46669c464e582e3a9961c
2015-06-11 11:52:45 -07:00
Debargha Mukherjee
e0617385d6 Merge "Add extended partition support to decode" into nextgen 2015-06-11 18:47:29 +00:00
hui su
c80386a5ab Fix tx-skip warnings on Windows
Change-Id: I2a515abe20e6989de233fc8ae2c31d8ee462add2
2015-06-11 11:20:16 -07:00
hui su
0c8bcb43a0 Merge "Fix palette build on windows" into nextgen 2015-06-11 17:56:26 +00:00
hui su
5d132c799e Fix palette build on windows
Change-Id: I2a90e235ab5bdf95eb83f684e46ef844553ba629
2015-06-11 10:44:05 -07:00
Peter de Rivaz
31d17053f3 Add extended partition support to decode
Change-Id: I65f7aed37d65dbba76999d2b9585129c48e70b11
2015-06-11 09:37:00 -07:00
Debargha Mukherjee
db90b74c1a Merge "Fix copy mode bug: searches made outside of the current tile" into nextgen 2015-06-11 16:30:23 +00:00
Jack Haughton
286983b8c6 Fix copy mode bug: searches made outside of the current tile
Change-Id: Ib3cf4bf4da0a575053493609956e133d1ce028a1
2015-06-11 09:23:32 +01:00
Alex Converse
c3e884f5be intrabc: Add a frame level flag
For the combination of this and removing NEWDV from the tree:
derflr: -0.101 screen_content: +0.053

The bulk of the decline in screen content effecincy is from the liquify
clip. These should be recoverable by further entropy tweaks.

Change-Id: I9d80152b8492e60a0367c31797fb6932fb09bba9
2015-06-09 11:23:23 -07: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
Debargha Mukherjee
ad2cf9b444 Windows build fix
Change-Id: I663e0d61c4115a5297baeb25f39743e1eea95fbf
2015-06-05 10:24:24 -07: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
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
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
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
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
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
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
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
Jingning Han
bae6229884 Merge "Make internal codec support arbitrary tile size" into nextgen 2015-05-21 22:24:28 +00:00
Jingning Han
98339250c1 Make internal codec support arbitrary tile size
This commit allows the internal codec handle arbitrary tile size
in the unit of 64x64 pixel blocks.

Change-Id: I3ad24de392064645bebab887c94e1db957794916
2015-05-21 09:20:31 -07:00