Urvang Joshi [Tue, 23 Aug 2016 22:01:41 +0000 (15:01 -0700)]
Palette code: remove the use of same if condition twice.
rd_pick_palette_intra_sby() method is called only when,
cpi->common.allow_screen_content_tools is on. So, no need to check that
again. We just use an assert() instead to still be safe.
Wei-ting Lin [Mon, 22 Aug 2016 18:19:30 +0000 (11:19 -0700)]
Allow LF_UPDATE type of frames to use BWDREF
Originally, only bi-pred type of frames can use BWDREF. When
extra alt-refs are inserted in a gf group, the closest alt-ref
serves as ALTREF for the frames within the corresponding
subgroup. Therefore, the original alt-ref can be used as BWDREF
for the LF_UPDATE type of frames.
This patch further swaps the virtual indices of BWDREF and ALTREF
for those frames whose BWDREF is farther than ALTREF. As a result,
the BWDREF is always the closet backward reference frame, and the
ALTREF is the farther one.
It improves the average RD performance by
0.132% in lowres, and
0.030% in midres.
The overall gains for the ext-refs compared to the baseline are
Sarah Parker [Fri, 19 Aug 2016 01:49:56 +0000 (18:49 -0700)]
Fix compiler warnings in rdopt when warped motion is enabled
The previous code was giving:
unused variable ‘tmp_rate’ [-Wunused-variable]
unused variable ‘tmp_dist’ [-Wunused-variable]
‘rate2_nocoeff’ may be used uninitialized in this function [-Wmaybe-uninitialized]
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.