678 Commits

Author SHA1 Message Date
Yaowu Xu
7e89c102c4 vp9-highbitdepth -> vpx-highbitdepth
Change-Id: I1e90cf7ab4bb02c0ef119b0bd1596771edefedff
2016-08-05 15:41:33 -07:00
Zoe Liu
cbed16b8b3 Merge "Code refactoring on Macros related to ref frame numbers" into nextgenv2 2016-08-05 16:59:36 +00:00
Yaowu Xu
476e44a689 Merge "Replace variants of 'vp8' and 'vp9' with 'vpx'" into nextgenv2 2016-08-04 23:48:59 +00:00
Yaowu Xu
fe291b647e Replace variants of 'vp8' and 'vp9' with 'vpx'
Change-Id: Id6cb96b0b15efdda63348d8bfe59fc0533c85ba1
2016-08-04 22:20:38 +00:00
Yaowu Xu
56a91f139d Fix a number of msvc warnings
Change-Id: Ic5ddba3ca0c87245617b6dbc78c0f13dc952ce8b
2016-08-04 21:42:56 +00:00
Yaowu Xu
2b2ee5cdf6 Merge "more cleanup of vp8 and vp9" into nextgenv2 2016-08-04 18:56:46 +00:00
Zoe Liu
1af28f0230 Code refactoring on Macros related to ref frame numbers
We have renamed following Macros to avoid name confusion:

REFS_PER_FRAME --> INTER_REFS_PER_FRAME
(= ALTREF_FRAME - LAST_FRAME + 1)
MAX_REF_FRAMES --> TOTAL_REFS_PER_FRAME
(= ALTREF_FRAME - INTRA_FRAME + 1)

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.

Change-Id: I19e42ef608946cc76ebfd3e965a05f4b9b93a0b3
2016-08-04 11:21:28 -07:00
Sarah Parker
108df24d2a Merge "Adjust gm parameter computation to avoid mismatch" into nextgenv2 2016-08-03 21:42:30 +00:00
Yaowu Xu
a3cff08259 more cleanup of vp8 and vp9
Change-Id: Ic90ebe6136f4b75645ba699d49c0bcb3764ddccf
2016-08-03 12:20:33 -07:00
Sarah Parker
aa810c002c Adjust gm parameter computation to avoid mismatch
The gm parameters need to have WARPED_PRECISION_BITS precision
until they are written to the bitstream because functions in
reconinter use these parameters before they are written to
the bitstream. Previously, the parameters weren't being converted
to WARPED_PRECISION_BITS until they were read from the bitstream
which causes an encode/decode mismatch.

Change-Id: I31e76e9d6f7d24df21af287a72f8c01f1997304d
2016-08-03 12:20:12 -07:00
Yaowu Xu
b06147de6b Cherry pick from AOMedia
5b5fbad VP9LfSync->VP10LfSync
b752848 vp8_yv12 -> vpx_yv12
e5068cd VP9->VPX for reference frame flags

Change-Id: Ia36860499c81a5aca8cd6190e7370ec404c0df0f
2016-08-02 16:24:41 -07:00
Yaowu Xu
8bf837f153 Cherry pick from AOM:
68e7e4d0 Remove VP9_CAP_POSTPROC
0738390c Remove vp9_temporal denoise
b89861a4 Remove vp9-postproc

Change-Id: I4ecaa0ac83a519c8174a494378fc23df610ff2a8
2016-08-02 15:29:50 -07:00
Hui Su
0594c7f5b1 Merge "Use all possible intra ref pixels for blocks on frame boundary" into nextgenv2 2016-08-01 17:29:09 +00:00
Yaowu Xu
de42ab22bd Merge "Cherry pick renaming changes from AOMedia branch" into nextgenv2 2016-08-01 17:16:07 +00:00
Yaowu Xu
d4c4724090 Cherry pick renaming changes from AOMedia branch
Manually cherry-picked the following changes:
8c8d16de vp9 -> vpx in names
75b57d39 VP9_ -> VPX_ in function names
761a7088 VP9_INTERP_EXTEND -> VPX_INTERP_EXTEND
4273a52c VP9->VPX in border pixel macros
03568c31 VP9_FRAME_MARKER -> VPX_FRAME_MARKER
2334f51d VP9->VPX in fdct function names

Change-Id: Icc18dbf4b416dd0fa21033b3e19ab8a47c893508
2016-07-29 13:31:32 -07:00
hui su
a4daf360ca Use all possible intra ref pixels for blocks on frame boundary
Tested on lowres and midres, performance impact is neutral.

BUG=https://bugs.chromium.org/p/webm/issues/detail?id=1269

Change-Id: Idaccaf7da7b460e6201efd436c084be66b5d4ebd
2016-07-29 10:06:50 -07:00
hui su
f67ff4a5b7 Fix a missing space
Change-Id: I6a9ab351012b731308d6b4fc78c09744c6afb61a
2016-07-28 09:55:17 -07:00
Jingning Han
8915eb8e9a Separate frame context index for different frame types
This commit makes the encoder to use different frame context index
for different frame types. In the baseline setting, it sets the
frame context index of the overlay frame to be different from other
regular inter frames. In the ext-refs setting, it further allows
the backward reference frame to use a different index.

It improves the compression performance for both settings.

Baseline
lowres  0.12%

ext-refs
lowres  0.50%
midres  0.56%

Change-Id: I7c63ddec9fc296c56a86353cf2c661a740b97a97
2016-07-27 15:35:15 -07:00
hui su
831e009970 ext-intra: squeeze the derivative table
Reduce its size form 270x2 to 90.

Change-Id: Icaacc4258e43cdc19c6f06598fee17c3dd06d7e9
2016-07-26 12:58:22 -07:00
Sarah Parker
d2e11e9705 Fix compiler errors in warped_motion.c
A few functions and variables were named incorrectly

Change-Id: Ib32fa459c51b9e9aad8bb107e1b689a96d98b368
2016-07-22 15:26:28 -07:00
James Zern
19a95f0e07 Merge "Restore vp10_default_scan_orders[]" into nextgenv2 2016-07-22 22:24:58 +00:00
Sarah Parker
da30900381 Restore vp10_default_scan_orders[]
vp10_default_scan_orders was removed in:
e5848de Rectangular transforms 4x8 & 8x4
This fixes compiler error in vp10_quantize_test.cc
Change-Id: I1b8a637e011f9426c3b41e61e00e3babc80defba
2016-07-22 13:39:40 -07:00
Yaowu Xu
44aac61c13 Add and remove explicit type conversions
Change-Id: I8b791fda7c64a0363549add99dc9fcae3b29beae
2016-07-22 10:04:06 -07:00
Yaowu Xu
3826383ca1 Fix compiling issues
Change-Id: I530348b12a1c039842ce4e33d21046fe63878f19
2016-07-22 09:43:22 -07:00
Sarah Parker
0ea035f8b7 Merge "Add affine model to global motion" into nextgenv2 2016-07-21 23:17:33 +00:00
Debargha Mukherjee
a7cfdd9457 Merge "Rectangular transforms 4x8 & 8x4" into nextgenv2 2016-07-21 21:54:12 +00:00
Sarah Parker
e9bd26b826 Add affine model to global motion
Change-Id: I9cd355a3ea344ef66a61028efa25d94f54e7e2bd
2016-07-21 14:50:18 -07:00
Debargha Mukherjee
e5848dea5a Rectangular transforms 4x8 & 8x4
Added a new expt rect-tx to be used in conjunction with ext-tx.
[rect-tx is a temporary config flag and will eventually be
merged into ext-tx once it works correctly with all other
experiments].

Added 4x8 and 8x4 tranforms for use initially with rectangular
sub8x8 y blocks as part of this experiment.

There is about a -0.2% BDRATE improvement on lowres, others pending.

When var-tx is on rectangular transforms are currently not used.
That will be enabled in a subsequent patch.

Change-Id: Iaf3f88ede2740ffe6a0ffb1ef5fc01a16cd0283a
2016-07-21 10:46:41 -07:00
Yaowu Xu
ff3f35c16c Merge "Cleanup x86inc leftovers" into nextgenv2 2016-07-21 02:51:27 +00:00
Yi Luo
b2663a8a67 HBD fast path quantization speed improvement
- HBD encoder speed improvement (SSE4.1):
  Enable CONFIG_VP9_HIGHBITDEPTH, on Xeon E5-2680,
  50 frames, park_joy_1080p, 12-bit,
  Encoding time reduces from 4846481 to 4177471 (ms)
- Add unit test to verify bit-exact and EOB calculation

Change-Id: I08e8ef3549ddad5ab36d86e78557df3b288537ea
2016-07-20 14:11:10 -07:00
Yaowu Xu
dec16abf7f Cleanup x86inc leftovers
Change-Id: I732d6942d56042a79c4259f775a6045fa95fbeff
2016-07-20 12:32:19 -07:00
Sarah Parker
0be4d3b11f Merge "Change order of warped motion parameters" into nextgenv2 2016-07-19 21:27:59 +00:00
James Zern
95fef21468 Merge "fix vp10_convolve() signatures" into nextgenv2 2016-07-19 19:53:08 +00:00
sarahparker
78ea3b3e3e Change order of warped motion parameters
This makes it easier to interface between global motion and warped motion

Change-Id: I850e0a383969a1973f03fb207f100713cda6bb51
2016-07-19 11:04:29 -07:00
Hui Su
096d8ace8e Merge "Extra round of subpel MV search around second best full-pixel MV" into nextgenv2 2016-07-19 16:55:11 +00:00
Sarah Parker
5fa46c0b60 Add global motion parameters to compressed header
Currently nothing is implemented to compute GM parameters, this
just adds the capability to send them in the bitstream if they
were computed. Still need to implement the reconstruction
based on the parameters in reconinter.

Change-Id: I72aea3c6a9de9f5a40f96da76c82b54a52781fe2
2016-07-18 17:24:07 -07:00
Yaowu Xu
681ba36414 Merge "Merge changes from libvpx/master by cherry-pick" into nextgenv2 2016-07-18 22:43:40 +00:00
Sarah Parker
e03af51203 Merge "Add buf0, width, height fields to buf_2d" into nextgenv2 2016-07-18 22:40:37 +00:00
hui su
9a4702417a Extra round of subpel MV search around second best full-pixel MV
Keep track of the best and second best full pixel motion vector
candidates, and do subpel search around both of them.

Compression improvement:
lowres 0.22%   midres 0.23%   hdres 0.18%

No noticeable encoding speed changes observed on lowres test clips.

Change-Id: I5f4df2a03d1db061cfdfdba6138b27e9ea91f089
2016-07-18 12:25:24 -07:00
Sarah Parker
166c3250a3 Add buf0, width, height fields to buf_2d
These are needed for the warping function in the global motion
experiment.

Change-Id: Iaab176d0c0b90f6b938e2bac48b24c07e87e3cd9
2016-07-18 11:04:56 -07:00
Johann
2967bf355e Merge changes from libvpx/master by cherry-pick
This commit bring all up-to-date changes from master that are
applicable to nextgenv2. Due to the remove VP10 code in master,
we had to cherry pick the following commits to get those changes:

Add default flags for arm64/armv8 builds

Allows building simple targets with sane default flags.

For example, using the Android arm64 toolchain from the NDK:
https://developer.android.com/ndk/guides/standalone_toolchain.html
./build/tools/make-standalone-toolchain.sh --arch=arm64 \
  --platform=android-24 --install-dir=/tmp/arm64
CROSS=/tmp/arm64/bin/aarch64-linux-android- \
  ~/libvpx/configure --target=arm64-linux-gcc --disable-multithread

BUG=webm:1143

vpx_lpf_horizontal_4_sse2: Remove dead load.

Change-Id: I51026c52baa1f0881fcd5b68e1fdf08a2dc0916e

Fail early when android target does not include --sdk-path

Change-Id: I07e7e63476a2e32e3aae123abdee8b7bbbdc6a8c

configure: clean up var style and set_all usage

Use quotes whenever possible and {} always for variables.

Replace multiple set_all calls with *able_feature().

Conflicts:
	build/make/configure.sh

vp9-svc: Remove some unneeded code/comment.

datarate_test,DatarateTestLarge: normalize bits type

quiets a msvc warning:
conversion from 'const int64_t' to 'size_t', possible loss of data

mips added p6600 cpu support

Removed -funroll-loops

psnr.c: use int64_t for sum of differences

Since the values can be negative.

*.asm: normalize label format

add a trailing ':', though it's optional with the tools we support, it's
more common to use it to mark a label. this also quiets the
orphan-labels warning with nasm/yasm.

BUG=b/29583530

Prevent negative variance

Due to rounding, hbd variance may become negative. This commit put in
check and clamp of negative values to 0.

configure: remove old visual studio support (<2010)

BUG=b/29583530

Conflicts:
	configure

configure: restore vs_version variable

inadvertently lost in the final patchset of:
078dff7 configure: remove old visual studio support (<2010)

this prevents an empty CONFIG_VS_VERSION and avoids make failure

Require x86inc.asm

Force enable x86inc.asm when building for x86. Previously there were
compatibility issues so a flag was added to simplify disabling this
code.

The known issues have been resolved and x86inc.asm is the preferred
abstraction layer (over x86_abi_support.asm).

BUG=b:29583530

convolve_test: fix byte offsets in hbd build

CONVERT_TO_BYTEPTR(x) was corrected in:
003a9d2 Port metric computation changes from nextgenv2
to use the more common (x) within the expansion. offsets should occur
after converting the pointer to the desired type.

+ factorized some common expressions

Conflicts:
	test/convolve_test.cc

vpx_dsp: remove x86inc.asm distinction

BUG=b:29583530

Conflicts:
	vpx_dsp/vpx_dsp.mk
	vpx_dsp/vpx_dsp_rtcd_defs.pl
	vpx_dsp/x86/highbd_variance_sse2.c
	vpx_dsp/x86/variance_sse2.c

test: remove x86inc.asm distinction

BUG=b:29583530

Conflicts:
	test/vp9_subtract_test.cc

configure: remove x86inc.asm distinction

BUG=b:29583530

Change-Id: I59a1192142e89a6a36b906f65a491a734e603617

Update vpx subpixel 1d filter ssse3 asm

Speed test shows the new vertical filters have degradation on Celeron
Chromebook. Added "X86_SUBPIX_VFILTER_PREFER_SLOW_CELERON" to control
the vertical filters activated code. Now just simply active the code
without degradation on Celeron. Later there should be 2 set of vertical
filters ssse3 functions, and let jump table to choose based on CPU type.

improve vpx_filter_block1d* based on replace paddsw+psrlw to pmulhrsw

Make set_reference control API work in VP9

Moved the API patch from NextGenv2. An example was included.
To try it, for example, run the following command:
$ examples/vpx_cx_set_ref vp9 352 288 in.yuv out.ivf 4 30

Conflicts:
	examples.mk
	examples/vpx_cx_set_ref.c
	test/cx_set_ref.sh
	vp9/decoder/vp9_decoder.c

deblock filter : moved from vp8 code branch

The deblocking filters used in vp8 have been moved to vpx_dsp for
use by both vp8 and vp9.

vpx_thread.[hc]: update webp source reference

+ drop the blob hash, the updated reference will be updated in the
commit message

BUG=b/29583578

vpx_thread: use native windows cond var if available

BUG=b/29583578

original webp change:

commit 110ad5835ecd66995d0e7f66dca1b90dea595f5a
Author: James Zern <jzern@google.com>
Date:   Mon Nov 23 19:49:58 2015 -0800

    thread: use native windows cond var if available

    Vista / Server 2008 and up. no speed difference observed.

100644 blob 4fc372b7bc6980a9ed3618c8cce5b67ed7b0f412 src/utils/thread.c
100644 blob 840831185502d42a3246e4b7ff870121c8064791 src/utils/thread.h

vpx_thread: use InitializeCriticalSectionEx if available

BUG=b/29583578

original webp change:

commit 63fadc9ffacc77d4617526a50c696d21d558a70b
Author: James Zern <jzern@google.com>
Date:   Mon Nov 23 20:38:46 2015 -0800

    thread: use InitializeCriticalSectionEx if available

    Windows Vista / Server 2008 and up

100644 blob f84207d89b3a6bb98bfe8f3fa55cad72dfd061ff src/utils/thread.c
100644 blob 840831185502d42a3246e4b7ff870121c8064791 src/utils/thread.h

vpx_thread: use WaitForSingleObjectEx if available

BUG=b/29583578

original webp change:

commit 0fd0e12bfe83f16ce4f1c038b251ccbc13c62ac2
Author: James Zern <jzern@google.com>
Date:   Mon Nov 23 20:40:26 2015 -0800

    thread: use WaitForSingleObjectEx if available

    Windows XP and up

100644 blob d58f74e5523dbc985fc531cf5f0833f1e9157cf0 src/utils/thread.c
100644 blob 840831185502d42a3246e4b7ff870121c8064791 src/utils/thread.h

vpx_thread: use CreateThread for windows phone

BUG=b/29583578

original webp change:

commit d2afe974f9d751de144ef09d31255aea13b442c0
Author: James Zern <jzern@google.com>
Date:   Mon Nov 23 20:41:26 2015 -0800

    thread: use CreateThread for windows phone

    _beginthreadex is unavailable for winrt/uwp

    Change-Id: Ie7412a568278ac67f0047f1764e2521193d74d4d

100644 blob 93f7622797f05f6acc1126e8296c481d276e4047 src/utils/thread.c
100644 blob 840831185502d42a3246e4b7ff870121c8064791 src/utils/thread.h

vp9_postproc.c missing extern.

BUG=webm:1256

deblock: missing const on extern const.

postproc - move filling of noise buffer to vpx_dsp.

Fix encoder crashes for odd size input

clean-up vp9_intrapred_test

remove tuple and overkill VP9IntraPredBase class.

postproc: noise style fixes.

gtest-all.cc: quiet an unused variable warning

under windows / mingw builds

vp9_intrapred_test: follow-up cleanup

address few comments from ce050afaf3e288895c3bee4160336e2d2133b6ea

Change-Id: I3eece7efa9335f4210303993ef6c1857ad5c29c8
2016-07-18 10:31:10 -07:00
skal
87c2db8296 fix vp10_convolve() signatures
fortunately, the call site was calling the function with
the correct parameter order.

Change-Id: Ia48099c18288a2416c8b9a7062d2b8d417fd07df
2016-07-18 15:35:18 +00:00
Yaowu Xu
6fe07a207b Merge branch 'master' into nextgenv2
Change-Id: Ia3c0f2103fd997613d9f16156795028f89f63265
2016-07-14 16:05:48 -07:00
Jingning Han
75b3224a42 Merge "Fix highbd inter prediction filter sse4 overwriting issue" into nextgenv2 2016-07-13 21:35:29 +00:00
Jingning Han
edbbce8e61 Fix highbd inter prediction filter sse4 overwriting issue
Properly handle the case where the height is an integer multiple
of 4.

Change-Id: I11ac188c13f78db20902e2e333c60ce76ce837c5
2016-07-13 12:51:02 -07:00
Yue Chen
f2b34c3ad8 Merge "Optimize and cleanup obmc predictor and rd search." into nextgenv2 2016-07-13 18:40:49 +00:00
Geza Lore
4c4f04ac11 Optimize and cleanup obmc predictor and rd search.
Use vpx_blend_a64_hmask and vpx_blend_a64_vmask to speed up
computing the obmc predictor. Clean up calc_target_weighted_pred.

Encoder speedup: 1.3%
Decoder speedup: 6.5%

Change-Id: I0c774fe53d22399e92a10d1daf3af0010d88d2c5
2016-07-13 16:54:20 +00:00
Yi Luo
fde48c980a Merge "HBD convolution filtering (10/12 taps) SSE4.1 optimization" into nextgenv2 2016-07-12 19:28:48 +00:00
Yi Luo
8cacca73bf HBD convolution filtering (10/12 taps) SSE4.1 optimization
- For experiment EXT_INTERP under high bit depth.
- Add unit test to verify bit-exact.
- Speed performance improvement:
  On Xeon E5-2680, park_joy_1080p_12.y4m, 50 frames, encoding time
  drops from 6682503 ms to 5390270 ms.

Change-Id: Iea4debf5414f3accf1eb5672abeab56a0539ac77
2016-07-12 10:13:30 -07:00
James Zern
b8a28fbb3a Merge changes from topic 'missing-proto' into nextgenv2
* changes:
  vp10/encoder/rdopt.c: make a function static
  vp10/encoder/rd.c: make a function static
  vp10_convolve_ssse3.c: make some functions static
  vp10/encoder/bitstream.[hc]: correct a prototype
  vp10/common/idct.h: add some missing prototypes
  highbd_quantize_intrin_sse2.c: add missing rtcd include
  vp10: add some missing includes
2016-07-12 02:39:24 +00:00