Yaowu Xu [Tue, 30 Aug 2016 21:01:10 +0000 (14:01 -0700)]
Port renaming changes from AOMedia
Cherry-Picked the following commits: 0defd8f Changed "WebM" to "AOMedia" & "webm" to "aomedia" 54e6676 Replace "VPx" by "AVx" 5082a36 Change "Vpx" to "Avx" 7df44f1 Replace "Vp9" w/ "Av1" 967f722 Remove kVp9CodecId 828f30c Change "Vp8" to "AOM" 030b5ff AUTHORS regenerated 2524cae Add ref-mv experimental flag 016762b Change copyright notice to AOMedia form 81e5526 Replace vp9 w/ av1 9b94565 Add missing files fa8ca9f Change "vp9" to "av1" ec838b7 Convert "vp8" to "aom" 80edfa0 Change "VP9" to "AV1" d1a11fb Change "vp8" to "aom" 7b58251 Point to WebM test data dd1a5c8 Replace "VP8" with "AOM" ff00fc0 Change "VPX" to "AOM" 01dee0b Change "vp10" to "av1" in source code cebe6f0 Convert "vpx" to "aom" 17b0567 rename vp10*.mk to av1_*.mk fe5f8a8 rename files vp10_* to av1_*
Yunqing Wang [Tue, 30 Aug 2016 18:48:44 +0000 (11:48 -0700)]
Change buffer_alloc_sz and frame_size type to size_t
1. Changed buffer_alloc_sz and frame_size type to size_t.
2. Added a TODO for video resolution limits. On 32 bit systems, the maximum
resolution supported in the encoder is 4k(3840x2160). The malloc() would
fail if encoding >4k video on a 32 bit system.
Zoe Liu [Wed, 24 Aug 2016 23:14:00 +0000 (16:14 -0700)]
Fix a bug in calculating the compound ref frame cost
The previous ext-refs experiment did not consider the cost of the 2nd
reference frame on mode decision in the compound mode. With the fix,
using Overall PSNR, compared to the previous ext-refs RD performance
before the bug fix, all against the baseline, the improvements are:
"ext-refs" before fix: lowres -5.665% midres: -4.833%
"ext-refs" after fix: lowres -5.776% midres: -5.000%
Improvement by the fix: lowres -0.111% midres: -0.167%
Yunqing Wang [Tue, 30 Aug 2016 16:13:16 +0000 (09:13 -0700)]
Fix Visual Studio build warnings
Fixed a list of VS warnings. Warning message:
..\test\vp10_convolve_test.cc(34): warning C4244: 'initializing' : conversion
from 'ptrdiff_t' to 'int', possible loss of data
Frame can be split into rectangular tiles for application of separate
bilateral or Wiener filters per tile. Some variable names changed for
better readability.
For rectangular blocks between 8x8 and 32x32, we can now code the
transform size as one bigger than the largest square that fits in
the block (eg, for 16x8, we can code a transform size of 16x16
rather than the previous maximum of 8x8), when this oversized
transform is coded in the bitstream, the codec will use the full
size rectangular transform for that block (eg 16x8 transform in
the above example).
Yunqing Wang [Thu, 25 Aug 2016 00:05:17 +0000 (17:05 -0700)]
Fix motion vector out of range bugs
2 bugs were fixed in VP9.
https://chromium-review.googlesource.com/#/c/366873/
https://chromium-review.googlesource.com/#/c/368440/
Fixed them in VP10 as well.
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)