Allow for 3 quant profiles from entropy context
Refactored dq_offset bands to allow for re-optimization based on number
of quantization profiles
Change-Id: Ib8d7e8854ad4e0bf8745038df28833d91efcfbea
Added dq_off_index attribute to mbmi to allow for switching between
dequantization modes.
Reduced number of different dequantization modes from 5 to 3.
Changed dequant_val_nuq to be allow for 3 dequant levels instead of 1.
Fixed lint errors
Change-Id: I7aee3548011aa4eee18adb09d835051c3108d2ee
Under the experiment of CONFIG_LAST4_REF. On derflr testset, using
highbitdepth (HBD), in average PSNR,
(1) LAST2+LAST3+LAST4 obtained +0.361% against LAST2+LAST3;
(2) LAST2+LAST3+LAST4 obtained +1.567% against baesline.
Change-Id: Ic8b14272de6a569df2b54418fa72b505e1ed3aad
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
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
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
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
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
Predict displacement vector with the same logic as NEARESTMV. If no
neighbors are available fall back to the current one block left or up
prediction.
vp9+intrabc+tx_skip+palette: -0.489
vp9+intrabc: -0.771
Change-Id: If67d08b54f1a3b847cf7ab8c7b800c55baa1a86b
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
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
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
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
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
Runborgs results on derflr show consistent results between NEW_INTER
and the previous combination of NEWMVREF and COMPOUND_MODES.
Change-Id: Ieba239c4faa7f93bc5c05ad656a7a3b818b4fbfc
Besides code cleaning, this patch contains 3 fixes:
(1) Fixed the COMPOUND_MODES for the NEW_NEWMV mode;
(2) Fixed the joint search when the NEAR_FORNEWMV mode (in NEWMVREF)
is being evaluated;
(3) Fixed the WEDGE_PARTITION when the NEAR_FORNEWMV mode (in NEWMVREF)
is being evaluated.
(4) Adjusted the entropy probability value for NEAR_FORNEW mode.
On derflr turning on all 14 experiments (except for global-motion), the
average gain w.r.t. PSNR is +0.07%:
Maximum on bridge_far_cif: +1.02%
Minimum on hallmonitor_cif: -0.16%
Change-Id: I4c9c6ee24a981af7e655a629580641d9f9745f91
Use separate token probabilities and counters for non-transform
blocks (pixel domain) . Initial probabilities are trained with screen_content
clips. On screen_content, it improves coding performance by about
2% (from +16.4% to +18.45%).
The initial probabilities are not optimized for natural videos. So it should
not be used for natural videos. Set FOR_SCREEN_CONTENT as 0/1 to specify
whether or not to enable this patch.
Change-Id: Ifa361c94bb62aa4b783cbfa50de08c3fecae0984
Implements a first version of global motion where the
existing ZEROMV mode is converted to a translation only
global motion mode.
A lot of the code for supporting a rotation-zoom affine
model is also incorporated.
WIP.
Change-Id: Ia1288a8dfe82f89484d4e291780288388e56d91b
This experiment, referred as NEWMVREF, also merged with NEWMVREF_SUB8X8
and the latter one has been removed. Runborgs results show that:
(1) Turning on this experiment only, compared against the base:
derflf: Average PSNR 0.40%; Overall PSNR 0.40%; SSIM 0.35%
(2) Turning on all the experiments including this feature, compared against
that without this feature, on the highbitdepth case using 12-bit:
derflf: Average PSNR 0.33%; Overall PSNR 0.32%; SSIM 0.30%.
Now for highbitdepth using 12-bit, compared against base:
derflf: Average PSNR 11.12%; Overall PSNR 11.07%; SSIM 20.27%.
Change-Id: Ie61dbfd5a19b8652920d2c602201a25a018a87a6
The basic idea is to use a pixel’s neighboring colors as
context to predict its own color. Up to 4 neighbors are
considered here: left, left-above, above, right-above.
To reduce the number of contexts, the combination of any
4 (or less) colors are mapped to a reduced number of
patterns. For example, 1111, 2222, 3333, … , can be mapped
to the same pattern: AAAA. SImilarly, 1122, 1133, 2233, …,
can be mapped to the pattern AABB. In this way, the total
number of color contexts is reduced to 16.
This almost doubles the gain of palette coding on screen
content videos.
on screen_content
--enable-palette +14.2%
--enable-palette --enable-tx-skip +21.2%
on derflr
--enable-palette +0.12%
with all other experiments +6.16%
Change-Id: I560306dae216f2ac11a9214968c2ad2319fa1718
Also make changes to transmit palette-enabled flag using
neighbor blocks as context.
on screen_content
--enable-palette +7.35%
on derflr
with all other experiments +6.05%
Change-Id: Id6c2f726d21913d54a3f86ecfea474a4044c27f6
on screen_content
--enable-palette +6.74%
on derflr
with all other experiments +6.02%
(--enable-supertx --enable-copy-mode
--enable-ext-tx --enable-filterintra
--enable-tx64x64 --enable-tx-skip
--enable-interintra --enable-wedge-partition
--enable-compound-modes --enable-new-quant
--enable-palette)
Change-Id: Ib85049b4c3fcf52bf95efbc9d6aecf53d53ca1a3
For 444 videos, a single palette of 3-d colors is
generated for YUV. For 420 videos, there may be two
palettes, one for Y, and the other for UV.
Also fixed a bug when palette and tx-skip are both on.
on derflr
--enable-palette +0.00%
with all experiments +5.87% (was +5.93%)
on screen_content
--enable-palette +6.00%
--enable-palette --enable-tx_skip +15.3%
on screen_content 444 version
--enable-palette +6.76%
--enable-palette --enable-tx_skip +19.5%
Change-Id: I7287090aecc90eebcd4335d132a8c2c3895dfdd4
All stats look fine.
derflr: +0.912 with respect to 10-bit internal baseline
(Was +0.747% w.r.t. 8 bit)
+5.545 with respect to 8-bit baseline
Change-Id: I3c14fd17718a640ea2f6bd39534e0b5cbe04fb66
For all sub8x8 partition, the mv ref has changed to its own nearest_mv
instead of the nearest_mv of the super 8x8 block:
--enable-newmvref-sub8x8: ~0.1% gain for derflr
Besides the above new experiment, code has been cleaned largely for the
sub8x8 motion search, such that the mv ref can be fairly easily changed to
use other options, e.g., the next step's global motion effort.
Change-Id: I8e3f4aaa8553ba8c445369692e079db5ce282593
Added palette coding option for Y channel only, key frame only.
Palette colors are obtained with k-means clustering algorithm.
Run-length coding is used to compress the color indices.
On screen_content:
--enable-palette + 5.75%
--enable-palette --enable-tx_skip +15.04% (was 13.3%)
On derflr:
--enable-palette - 0.03%
with all the other expriments + 5.95% (was 5.98%)
Change-Id: I6d1cf45c889be764d14083170fdf14a424bd31b5
Also fixes some build issues with certain experimental combinations.
Results on derflr with all experiments on: +5.516%
Change-Id: I9b492f3d3556bd1f057005571dc9bee63167dd95
COMPOUND_MODES experiment encodes separate MV modes for each frame in a compound
reference prediction. Added modes NEAREST_NEARESTMV, ZERO_ZEROMV,
NEW_NEWMV, NEAREST_NEARMV, NEAR_NEARESTMV, NEW_NEARESTMV, NEAR_NEWMV,
NEW_NEARMV, and NEAREST_NEWMV.
Also enhances the wedge-partition expt to work better with compound
modes.
Results:
derflr +0.227
All experiments on: derflr +5.218
Change-Id: I719e8a34826bf1f1fe3988dac5733a845a89ef2b
Implements vertical, horizontal, and tm dpcm intra prediction for
blocks in tx_skip mode. Typical coding gain on screen content video
is 2%~5%.
Change-Id: Idd5bd84ac59daa586ec0cd724680cef695981651
A smooth weighting scheme is used to put more weight
on the intra predictor samples near the left/top boundaries
and decaying it to favor the inter predictor samples more as
we move away from these boundaries in the direction of
prediction.
Results:
derflr: +0.609% with only this experiment
derflr: +3.901% with all experiments
Change-Id: Ic9dbe599ad6162fb05900059cbd6fc88b203a09c