Adds a wiener filter based restoration scheme in loop which can
be optionally selected instead of the bilateral filter.
The LMMSE filter generated per frame is a separable symmetric 7
tap filter. Three parameters for each of horizontal and vertical
filters are transmitted in the bitstream. The fourth parameter
is obtained assuming the sum is normalized to 1.
Also integerizes the bilateral filters, along with other
refactoring necessary in order to support the new switchable
restoration type framework.
derflr: -0.75% BDRATE
[A lot of videos still prefer bilateral, however since many frames
now use the simpler separable filter, the decoding speed is
much better].
Further experiments to follow, related to replacing the bilateral.
Yaowu Xu [Fri, 5 Feb 2016 21:03:47 +0000 (13:03 -0800)]
Enable computing PSNRHVS for hbd build
This commit adds computation of PSNRHVS for highbitdepth build, it
also adds tests to make sure the calculation of psnrhvs metric for
10 and 12 bit correct.
Jingning Han [Thu, 11 Feb 2016 17:41:06 +0000 (09:41 -0800)]
Align rate-distortion cost metric for chroma compoments
This commit aligns the rate-distortion metrics for both luma and
chroma components in super transform rate-distortion optimization.
It improves the coding gains due to var-tx and supertx experiments
by 0.2% for high resolution test sets.
Yaowu Xu [Fri, 5 Feb 2016 19:30:12 +0000 (11:30 -0800)]
Enable computing of FastSSIM for HBD build
This commit adds the computation of fastSSIM for highbitdepth build,
it also modifies the hbdmetric test to be more generic and applicable
for fastSSIM.
The 255 used for calculating ssim constants c1 and c2 is not exactly
scaled by 4x and 16x to 1023 and 4095, therefore requries the metric
test to have a thresold more tolerant than 0, currently at 0.03dB.
Yue Chen [Wed, 10 Feb 2016 23:53:08 +0000 (15:53 -0800)]
Adding the config tag for the OBMC experiment
obmc: We add an obmc prediction mode at superblock level.
When it is enabled, predictors of the above and left blocks
are used to refine the regular block-based motion compensation.
Jingning Han [Wed, 10 Feb 2016 01:51:49 +0000 (17:51 -0800)]
Resolve conflict between var-tx and super-tx
This commit aligns the rate-distortion metric for the recursive
transform block partitioning and the super transform. It resolves
the conflicts between these two experiments. The coding performance
gains of the combined experiments (var-tx + super-tx) has been
improved:
Geza Lore [Tue, 9 Feb 2016 10:17:22 +0000 (10:17 +0000)]
Fix partition type costing.
This patch makes rd optimization use the same context for computing
the rate cost of coding the partitioning as the packer actually uses
when emitting it in write_modes_sb.
Yaowu Xu [Tue, 9 Feb 2016 02:31:30 +0000 (18:31 -0800)]
Fix a bug in HBD buffer size computation
The value of use_highbitdepth flag is used for compute the size for
high bit depth buffer allocation, which should take value 0 or 1
depending on if the buffer is used for high bit depth or not.
Previously, the values is set to 8 or 0, this commit fixes the issue
and properly set the value for this flag to 1 or 0.
This cuts the size of highbitdepth buffer memory allocation to 2/9 of
the size prior to the fix.
Jingning Han [Fri, 22 Jan 2016 02:07:31 +0000 (18:07 -0800)]
Entropy coding for dynamic ref mv modes
This commit enables entropy coding for dynamic reference motion
vector modes. The probability model is contexted on the ranking
categories of the reference motion vector candidates.
Fixes an issue where the tx_type was not set correctly for
sub8x8 inter and intra blocks. In the current syntax, for
sub8x8 blocks, there is still a single tx_type that is
transmitted. Ideally, this should be searched for the best
rd performance, albeit at the expense of encode speed.
For now, we just set it to DCT_DCT. Previously it was left
incorrectly as what was used for the previous non sub8x8
block.
Yaowu Xu [Mon, 8 Feb 2016 17:41:43 +0000 (09:41 -0800)]
Fix msvc compiler warnings
There were a number of compiler warnings:
1. int16_t to uint8_t in recon_intra.c;
2. double to float conversions in psnrhvs.c
3. intptr_t to int in quantize.c
4. size_t to int32_t in decoder.c
Zoe Liu [Thu, 4 Feb 2016 13:33:22 +0000 (05:33 -0800)]
Define a macro to replace hardcoded values
The definition is for the number of frames to check to determine the
recent decay rate, further to determine the next key frame in the
first pass of the encoder.
hui su [Wed, 3 Feb 2016 19:32:25 +0000 (11:32 -0800)]
Add a speed feature for intra filter search
Seperate the prediction angle search and fitler search.
It can reduce the computation overhead of filter search by as much
as 85%, while keeping more than 50% of the coding gain.
Marco [Wed, 3 Feb 2016 22:21:59 +0000 (14:21 -0800)]
vp9-skinmap. Some adjustments for model=1.
-use larger threshold on y (as in vp8).
-add distance threshold for each cluster
-use larger skin distance threshold for first cluster
-add some early exist checks.
Jingning Han [Wed, 20 Jan 2016 00:36:25 +0000 (16:36 -0800)]
Generalize the dynamic reference motion vector coding mode
This commit generalizes dynamic reference motion vector coding mode
to support multiple candidate modes in the rate-distortion
optimization scheme and to support the selection in the bit-stream
syntax. The maximum number of modes allowed is currently limited to
4. The syntax elements for the dynamic reference motion vector
modes are using binary codes. The scheme supports single reference
frame.
It improves the compression performance
derf 0.135%
hevcmr 0.098%
Julia Robson [Mon, 1 Feb 2016 15:44:50 +0000 (15:44 +0000)]
Supertx fix for 422 colour subsampling
Fixes assertion for football_422_4sif.y4m when supertx, var_tx and
ext_tx are all enabled. Problem was after subsampling, the u and v
blocks being encoded were no longer square.