Wei-ting Lin [Mon, 15 Aug 2016 20:52:18 +0000 (13:52 -0700)]
Change the B-frame coding structure.
Originally we can have a BRF right before an overlay frame (in
display order), which might be unnecessary since we already has a
quality backward reference frame (ARF).
This patch avoids such a coding structure and improves the RD
performance by 0.086% in Avg in the lowres dataset, and 0.153 in
Avg in the midres dataset.
In the lowres dataset, significant gains are obtained for the
following sequences:
Yaowu Xu [Mon, 15 Aug 2016 17:27:19 +0000 (10:27 -0700)]
Port dering experiment from aom
Mannually cherry-picked: 1579133 Use OD_DIVU for small divisions in temporal_filter. 0312229 Replace divides by small values with multiplies. 9c48eec Removing divisions from od_dir_find8() 0950ed8 Merge "Port active map / cyclic refresh fixes to vp10." efefdad Port active map / cyclic refresh fixes to vp10. 1eaf748 Port switch to 9-bit rate cost to aom. 0b1606e Only build deringing code when --enable-dering. e2511e1 Deringing cleanup: don't hardcode the number of levels 8fe5c5d Rename dering_in to od_dering_in to sync with Daala 4eb1380 Makes second filters for 45-degree directions horizontal 7f4c3f5 Removes the superblock variance contribution to the threshold 3dc56f9 Simplifying arithmetic by using multiply+shift cf2aaba Return 0 explicitly for OD_ILOG(0). 49ca22a Use the Daala implementation of OD_ILOG(). 8518724 Fix compiler warning in od_dering.c. 485d6a6 Prevent multiple inclusion of odintrin.h. 51b7a99 Adds the Daala deringing filter as experimental
Note that a few of the changes were already in libvpx codebse.
Yaowu Xu [Thu, 11 Aug 2016 16:39:47 +0000 (09:39 -0700)]
Port commits related to clpf and qm experiments
Manually cherry-picked following commits from AOMedia git repository: bb2727c Sort includess for "clpf.h" c297fd0 Add quantisation matrix range parameters. 0527894 Add encoder option and signaling for quant matrix control. 4106232 Turn off trellis coding for quantization matrices. 4017fca Modify tests to allow quantization matrices. 1c122c2 Add quant and dequant functions for new quant matrices. 95a8999 Enable CLPF f72782b Fix a build issue 73bae50 Add quantisation matrices and selection functions 33208d2 Added support for constrained low pass filter (CLPF)
Yi Luo [Wed, 10 Aug 2016 23:21:16 +0000 (16:21 -0700)]
Optimization for HBD filter intra predictors (SSE4.1)
- Add unit tests to verify the bit-exact.
- Speed unit test, function improvement: about 8%-23%.
- On E5-2680, park_joy_1080p_12, 25 frames, --kf-max-dist=1
encoding time improves from <1% to 3.5%
This is a debug tool used to detect bitstream error. On encoder side, it pushes
each bit and probability into a queue before the bit is written into the
Arithmetic coder. On decoder side, whenever a bit is read out from the
Arithmetic coder, it pops up the reference bit and probability from the queue as
well. If the two results do not match, this debug tool will report an error.
This tool can be used to pin down the bitstream error precisely. By combining
gdb's backtrace method, we can detect which module causes the bitstream error.
Zoe Liu [Thu, 28 Jul 2016 00:24:42 +0000 (17:24 -0700)]
Fix a bug in RATE_FACTOR_LEVEL definition for ext-refs
There was a bug in the original set up for RATE_FACTOR_LEVELS, which
results that rate_factor_deltas for GF_ARF_STD is 2.00, instead of the
intentional value of 1.75, whereas for KF_STD is 0.00, instead of the
intentional value of 2.00.
Nevertheless, if simply fixing the bug as in the first patch, the RD
performance unexpectedly dropped by 0.143% in Avg bitrate using
Overall PSNR, especially for following sequences in lowres:
bridge_close_cif: dropped by 1.468%
container_cif: dropped by 2.140%
husky_cif: dropped by 0.826%
motherdaughter_cif: dropped by 0.798%
rasehorses_240p: dropped by 0.805%
students_cif: dropped by 1.411%
This indicates that we should boost up the value for GF_ARF_STD from
1.75 to at least to 2.00. After doing so, while still keeps 2.00 for
KF_STD, the new patch achieves a small gain of 0.15% for the baseline,
and a smaller gain of 0.06% for the experiment of ext-refs. Most
sequences keep the similar RD performance in lowres, except for the
following ones that obtain a bigger gain:
James Zern [Mon, 8 Aug 2016 22:09:30 +0000 (15:09 -0700)]
remove SVC
spatial/temporal scalability are not supported in VP10 currently.
+ remove the unused vp10/encoder/skin_detection.[hc]
this also enables DatarateTestLarge for VP10 which passes with no
experiments enabled. these were removed previously when only the SVC
tests should have been: 134710a Disable tests not applicable to VP10
Sarah Parker [Tue, 9 Aug 2016 01:11:05 +0000 (18:11 -0700)]
Add interface to compute gm parameters in encodeframe
This patch just creates the interface for global motion computation
and calls it from encodeframe. Currently, the function
compute_global_motion_feature_based is empty and the work to do
the actual parameter calculation will be added in a future patch.
Sarah Parker [Wed, 3 Aug 2016 19:29:27 +0000 (12:29 -0700)]
Add reconstruction using gm parameters
This patch only includes inter frame reconstruction using gm
parameters when GLOBAL_MOTION and/or VP9_HIGHBITDEPTH are enabled.
GM is not currently used when EXT_INTER or DUAL_FILTER is enabled.
This will be added in a followup patch. For now, these experiments
will take precedence over GLOBAL_MOTION when they are all enabled.
Yi Luo [Tue, 2 Aug 2016 16:57:08 +0000 (09:57 -0700)]
Optimization EXT_INTRA's filtered intra predictor (SSE4.1)
- Add unit tests to verify the bit-exact result.
- In speed test, function speed (for each mode/tx_size)
improves about 23%~35%.
- On E5-2680, park_joy_1080p, 10 frames, --kf-max-dist=1,
encoding time improves about 1%~2%.
Yue Chen [Fri, 5 Aug 2016 17:37:24 +0000 (10:37 -0700)]
Speed filter intra mode search in EXT_INTRA experiment
(1) Key frame: skip filter intra modes whose directional pred
version is relatively bad (rd >= 1.125 * best_rd)
(2) Inter frame: do not check filter intra modes if best_intra_rd
>= 1.25 * best_rd
Encoding time overhead is reduced by:
4.9% (9.2%->4.3%, soccer_cif)
Coding gains drop by 0.021% on lowres and by 0.076% on midres
Wei-ting Lin [Fri, 5 Aug 2016 20:32:47 +0000 (13:32 -0700)]
Fix a bug for multi_arf_allowed
The ARF Index was wrong when updating the upsampled reference
frame buffer.
Compared to the baseline in which multi_arf_allowed is disabled, the
RD performance drops 2.250% in Avg using Overall PSNR in the derf
dataset. The performance decrease is especially in the following
video sequences:
INTER_REFS_PER_FRAME specifies the maximum number of reference frames
that each Inter frame may use.
TOTAL_REFS_PER_FRAME is equal to INTER_REFS_PER_FRAME + 1, which
counts the INTRA_FRAME.
Further, at the encoder side, since REF_FRAMES specifies the maximum
number of the reference frames that the encoder may store, REF_FRAMES
is usually larger than INTER_REFS_PER_FRAME. For example, in the
ext-refs experiment, REF_FRAMES == 8, which allows the encoder to
store maximum 8 reference frames in the buffer, but
INTER_REFS_PER_FRAME equals to 6, which allows each Inter frame may
use up to 6 frames out of the 8 buffered frames as its references.
Hence, in order to explore the possibility to store more reference
frames in future patches, we modified a couple of array sizes to
accomodate the case that the number of buffered reference frames is
not always equal to the number of the references that are being used
by each Inter frame.