Commit Graph

1153 Commits

Author SHA1 Message Date
James Zern
519b9141ad Merge "vp9: fix segfault w/corrupt data post frame-parallel merge" 2015-02-06 00:28:10 -08:00
James Zern
0261fb4c4f vp9: fix segfault w/corrupt data post frame-parallel merge
cm->frame_bufs[].idx values were made consistent in:
61c5e94 Use -1 consistently as invalid buffer idx
update the initialization in swap_frame_buffers() to match.
additionally:
  - remove some shadowed variables in the former and marked them volatile

Change-Id: Ie3f9636c405bd822112bb56bd22d28024ae98909
2015-02-05 12:11:40 -08:00
Johann
421043340a Merge "Ensure the error-concealment code is available" 2015-02-03 09:40:12 -08:00
Alex Converse
a79db92c07 Merge "Allow larger encoder configurations." 2015-02-02 12:05:56 -08:00
hkuang
be6aeadaf4 Try again to merge branch 'frame-parallel' into master branch.
In frame parallel decode, libvpx decoder decodes several frames on all
cpus in parallel fashion. If not being flushed, it will only return frame
when all the cpus are busy. If getting flushed, it will return all the
frames in the decoder. Compare with current serial decode mode in which
libvpx decoder is idle between decode calls, libvpx decoder is busy
between decode calls.

Current frame parallel decode will only speed up the decoding for frame
parallel encoded videos. For non frame parallel encoded videos, frame
parallel decode is slower than serial decode due to lack of loopfilter
worker thread.

There are still some known issues that need to be addressed. For example:
decode frame parallel videos with segmentation enabled is not right sometimes.

* frame-parallel:
  Add error handling for frame parallel decode and unit test for that.
  Fix a bug in frame parallel decode and add a unit test for that.
  Add two test vectors to test frame parallel decode.
  Add key frame seeking to webmdec and webm_video_source.
  Implement frame parallel decode for VP9.
  Increase the thread test range to cover 5, 6, 7, 8 threads.
  Fix a bug in adding frame parallel unit test.
  Add VP9 frame-parallel unit test.
  Manually pick "Make the api behavior conform to api spec." from master branch.
  Move vp9_dec_build_inter_predictors_* to decoder folder.
  Add segmentation map array for current and last frame segmentation.
  Include the right header for VP9 worker thread.
  Move vp9_thread.* to common.
  ctrl_get_reference does not need user_priv.
  Seperate the frame buffers from VP9 encoder/decoder structure.
  Revert "Revert "Revert "Revert 3 patches from Hangyu to get Chrome to build:"""
 Conflicts:
       test/codec_factory.h
       test/decode_test_driver.cc
       test/decode_test_driver.h
       test/invalid_file_test.cc
       test/test-data.sha1
       test/test.mk
       test/test_vectors.cc
       vp8/vp8_dx_iface.c
       vp9/common/vp9_alloccommon.c
       vp9/common/vp9_entropymode.c
       vp9/common/vp9_loopfilter_thread.c
       vp9/common/vp9_loopfilter_thread.h
       vp9/common/vp9_mvref_common.c
       vp9/common/vp9_onyxc_int.h
       vp9/common/vp9_reconinter.c
       vp9/decoder/vp9_decodeframe.c
       vp9/decoder/vp9_decodeframe.h
       vp9/decoder/vp9_decodemv.c
       vp9/decoder/vp9_decoder.c
       vp9/decoder/vp9_decoder.h
       vp9/encoder/vp9_encoder.c
       vp9/encoder/vp9_pickmode.c
       vp9/encoder/vp9_rdopt.c
       vp9/vp9_cx_iface.c
       vp9/vp9_dx_iface.c

This reverts commit a18da9760a.

Change-Id: I361442ffec1586d036ea2e0ee97ce4f077585f02
2015-01-30 21:00:13 -08:00
Alex Converse
797a2556eb Allow larger encoder configurations.
Allow changing colorspace in the encoder and increasing frame size.

Change-Id: I8e7c3b891af29ce420a15beb4f6f9c250245b2bb
2015-01-29 15:07:40 -08:00
Frank Galligan
e3167f7fbf Add vp9_sad32x32x4d_neon Neon intrinsic function.
On Nexus 7 speed -6 saw ~18% increase in perf.

Tested on Nexus 7, built with ndk r10d, gcc 4.9.

BUG=https://code.google.com/p/webm/issues/detail?id=908

Change-Id: I70ccdea0326750552ed946fb004507d6efe02d5c
2015-01-27 08:54:00 -08:00
Frank Galligan
9f574d0316 Add vp9_sad16x16x4d_neon Neon intrinsic function.
On Nexus 7 speed -6 saw ~15% increase in perf.

Tested on Nexus 7, built with ndk r10d, gcc 4.9.

BUG=https://code.google.com/p/webm/issues/detail?id=908

Change-Id: I4b2006b644c488f42bf06d8a22ef0e6120a96bf9
2015-01-27 08:42:17 -08:00
Frank Galligan
54fa956715 Add vp9_sad64x64x4d_neon Neon intrinsic function.
On Nexus 7 speed -6 saw ~30% increase in perf.

Tested on Nexus 7, built with ndk r10d, gcc 4.9.

BUG=https://code.google.com/p/webm/issues/detail?id=908

Change-Id: Id12af7d1883243c23e6692e898aea82299633d58
2015-01-27 08:33:40 -08:00
Johann
a18da9760a Revert "Merge branch 'frame-parallel' to enable frame parallel decode in master branch."
This reverts commit bde04ce503

Change-Id: I053dae04c761b04a36dc239558503905a14d2470
2015-01-23 08:42:02 -08:00
hkuang
bde04ce503 Merge branch 'frame-parallel' to enable frame parallel decode in master branch.
In frame parallel decode, libvpx decoder decodes several frames on all
cpus in parallel fashion. If not being flushed, it will only return frame
when all the cpus are busy. If getting flushed, it will return all the
frames in the decoder. Compare with current serial decode mode in which
libvpx decoder is idle between decode calls, libvpx decoder is busy
between decode calls. VP9 frame parallel decode is >30% faster than serial
decode with tile parallel threading which will makes devices play 1080P
VP9 videos more easily.

* frame-parallel:
  Add error handling for frame parallel decode and unit test for that.
  Fix a bug in frame parallel decode and add a unit test for that.
  Add two test vectors to test frame parallel decode.
  Add key frame seeking to webmdec and webm_video_source.
  Implement frame parallel decode for VP9.
  Increase the thread test range to cover 5, 6, 7, 8 threads.
  Fix a bug in adding frame parallel unit test.
  Add VP9 frame-parallel unit test.
  Manually pick "Make the api behavior conform to api spec." from master branch.
  Move vp9_dec_build_inter_predictors_* to decoder folder.
  Add segmentation map array for current and last frame segmentation.
  Include the right header for VP9 worker thread.
  Move vp9_thread.* to common.
  ctrl_get_reference does not need user_priv.
  Seperate the frame buffers from VP9 encoder/decoder structure.
  Revert "Revert "Revert "Revert 3 patches from Hangyu to get Chrome to build:"""

 Conflicts:
       test/codec_factory.h
       test/decode_test_driver.cc
       test/decode_test_driver.h
       test/invalid_file_test.cc
       test/test-data.sha1
       test/test.mk
       test/test_vectors.cc
       vp8/vp8_dx_iface.c
       vp9/common/vp9_alloccommon.c
       vp9/common/vp9_entropymode.c
       vp9/common/vp9_loopfilter_thread.c
       vp9/common/vp9_loopfilter_thread.h
       vp9/common/vp9_mvref_common.c
       vp9/common/vp9_onyxc_int.h
       vp9/common/vp9_reconinter.c
       vp9/decoder/vp9_decodeframe.c
       vp9/decoder/vp9_decodeframe.h
       vp9/decoder/vp9_decodemv.c
       vp9/decoder/vp9_decoder.c
       vp9/decoder/vp9_decoder.h
       vp9/encoder/vp9_encoder.c
       vp9/encoder/vp9_pickmode.c
       vp9/encoder/vp9_rdopt.c
       vp9/vp9_cx_iface.c
       vp9/vp9_dx_iface.c

Change-Id: Ib92eb35851c172d0624970e312ed515054e5ca64
2015-01-22 18:18:53 -08:00
Alex Converse
910ca857df Allow external resize via vpx_codec_enc_config_set
Change-Id: I3d324e2baa4de2d266c5f7ca7b635b62372e90a7
2015-01-21 11:33:06 -08:00
Frank Galligan
6e7e1cf32f Add Neon intrinsics for vp9_avg_8x8_neon
On Nexus 7 speed -5, -6, -7, and -8 saw about a 1% increase
in perf for 480p. Speeds -5, -6, -7, and -8 saw about a 1.5%
increase in perf for 720p.

Tested on Nexus 7, built with ndk r10d, gcc 4.9.

Change-Id: Ibf17ebfd952a6aec941719bd8306df8ec4574bee
2015-01-15 15:32:40 -08:00
Yaowu Xu
829a01dbb7 Merge "Add encoder control for setting color space" 2015-01-14 14:14:34 -08:00
Frank Galligan
68224a6e87 Merge "Add 64x64 sub_pel_variance Neon function" 2015-01-14 12:17:20 -08:00
Yaowu Xu
e94b415c34 Add encoder control for setting color space
This commit adds encoder side control for vp9 to set color space info
in the output compressed bitstream.

It also amends the "vp9_encoder_params_get_to_decoder" test to verify
the correct color space information is passed from the encoder end to
decoder end.

Change-Id: Ibf5fba2edcb2a8dc37557f6fae5c7816efa52650
2015-01-14 10:17:14 -08:00
Yaowu Xu
afae733eed Merge "Enable decoder to pass through color space info" 2015-01-14 10:04:15 -08:00
Frank Galligan
ec1d8387e1 Add 64x64 sub_pel_variance Neon function
On Nexus 7 speed -5, -6, -7, and -8 saw about a 15% increase
in perf for 480p. Speeds -5, -6, -7, and -8 saw about a 10%
increase in perf for 720p.

Tested on Nexus 7, built with ndk r10d, gcc 4.9.

Change-Id: I2fa5315845e3021c9a6e2ea47e52e68b398d8334
2015-01-14 08:36:24 -08:00
Yaowu Xu
6b223fcb58 Enable decoder to pass through color space info
This commit added a field to vpx_image_t for indicating color space,
the field is also added to YUV_BUFFER_CONFIG. This allows the color
space information pass through the decoder from input stream to the
output buffer.

The commit also updated compare_img() function with added verification
of matching color space to ensure the color space information to be
correctly passed from encode to decoder in compressed vp9 streams.

Change-Id: I412776ec83defd8a09d76759aeb057b8fa690371
2015-01-13 15:13:19 -08:00
Frank Galligan
74d40cd507 Add 64x variance Neon functions
Add optimized Neon functions of:
vp9_variance32x64
vp9_variance64x32
vp9_variance64x64

On Nexus 7 speed -5 and -6 saw about a 4% increase in perf.
Speeds -7 and -8 saw about a 6% increase in perf.
Tested on Nexus 7, built with ndk r10d, gcc 4.9.

Change-Id: I5a81f13c9897eb927fa39662530f5524a0f768fa
2015-01-13 15:08:13 -08:00
JackyChen
0337bae9b3 Merge "Unit test for turning VP8 denoiser on/off periodically." 2015-01-12 17:33:34 -08:00
Marco
2c6d9c574f vp8: Fix to crash in pick_inter.
Added unittest that triggers the crash without this fix.

Issue: https://code.google.com/p/webm/issues/detail?id=911

Change-Id: If5208ceb210c821891675fdf3d9951ab83d52ae6
2015-01-12 11:53:26 -08:00
JackyChen
7cb111b148 Unit test for turning VP8 denoiser on/off periodically.
Change-Id: Id537d1126f25c0218adcfb4d6ee641ee81a2169a
2015-01-09 14:51:06 -08:00
Johann
00bbe342c2 Merge "Disable vp9 _8_ loopfilters" 2015-01-08 12:47:52 -08:00
JackyChen
e82a3b245e Unit test for turning VP9 denoiser on/off periodically.
Change-Id: Ifd2813e8ccd8af189a8dc89b24efb6a5681714c7
2015-01-07 18:26:41 -08:00
Jingning Han
21039452c9 Merge "Turn denoiser sensitivity on starting from kf in unit test" 2015-01-07 11:29:54 -08:00
Johann
377b6682f9 Disable vp9 _8_ loopfilters
Investigating https://code.google.com/p/chromium/issues/detail?id=443839

Change-Id: Ibb7485d835c5aa5e1d40f31715596ba8d208eedb
2015-01-06 19:26:11 -08:00
Johann
fca0037e3b Add missing tests for neon _16_ filters
Change-Id: I47174884efa257f331a369410a2fa7440368250b
2015-01-06 19:26:11 -08:00
Frank Galligan
238c4fa74e Fix encode perf test.
JSON was missing a comma.

Change-Id: I7e6b6251b17bc4e74b0197a449ef0313255997e7
2015-01-06 11:12:44 -08:00
Jingning Han
5b860e1251 Turn denoiser sensitivity on starting from kf in unit test
The denoiser sensitivity level should be set to 1 starting from
key frame. The internal function of denoiser should make the
temporal denoising operations cut off in key frame coding.

Change-Id: Id3e704a73e98e4ea801284a2cbbab2ea9c371d23
2015-01-06 10:08:43 -08:00
Yaowu Xu
32d88c2209 Properly set size based on actual buffer layout
VP9FrameSizeTestsLarge.OneByOneVideo has been causing a failure in
jenkins libvpx__unit_tests-valgrind_long for "using of uninitialized
memory", the root cause was that the input image for this test was
not initialized with proper size, therefore plan U and V were not
initialized at all.

This commit fixes the size initialization, and resolves the issue.

Change-Id: Ic4dd1542b7bb0cb260a1e0aeeb505db21ae5edc8
2014-12-30 09:20:36 -08:00
Jim Bankoski
8619274ea3 assert that the write writes the whole packet
As a side effect this should avoid an unsigned signed failure in
jenkins.

Change-Id: I8e6a9c3dbd4252d37e6325f95fc80e49ce4cc59e
2014-12-23 08:35:26 -08:00
Jim Bankoski
d6d431c476 Merge "Revert "Revert "Removal of legacy zbin_extra / zbin_oq_value.""" 2014-12-22 13:43:56 -08:00
Frank Galligan
1f0c4991d6 Merge "Add multithread encodes to the encode perf test" 2014-12-22 11:37:24 -08:00
Jingning Han
d0f2377027 Revert "Revert "Removal of legacy zbin_extra / zbin_oq_value.""
This reverts commit 9946ee23e0.

Fix the ssse3 asm function.

Change-Id: I07f77a63aa98087626e45c4e87aa5dcafc0b0b07
2014-12-22 10:09:25 -08:00
Jim Bankoski
9152537f3e Merge "Resolve several style issues in decode_perf_test" 2014-12-21 16:50:00 -08:00
Jim Bankoski
4276eac294 Resolve several style issues in decode_perf_test
This allows us to track decode speed for new encodes so that we catch
problems like an encode change that makes decode really slow.

Change-Id: I7210196415c4e53d455e9c81246d9fb324913a06
2014-12-19 15:53:59 -08:00
Frank Galligan
d80d94498c Add multithread encodes to the encode perf test
Encode the files with 1, 2, and 4 threads.

Explicitly turn on error resilient and frame parallel
decoding and turn off altref frames.

Change-Id: I02b66f72b7d35c666c3ba685b33015508e440209
2014-12-19 15:21:40 -08:00
Yunqing Wang
3a3c71aaa5 Merge "vp9_ethread: add the multi-threaded encoder unit tests" 2014-12-19 12:33:27 -08:00
Frank Galligan
2258e28f7e Merge "Fix including test file twice." 2014-12-19 10:31:30 -08:00
Frank Galligan
bc8b0ada3a Merge "Fix encode perf test" 2014-12-19 08:11:36 -08:00
Paul Wilkins
9946ee23e0 Revert "Removal of legacy zbin_extra / zbin_oq_value."
This reverts commit e9b586e21b.

Change-Id: I5b36e6727da6c05278d97e2c37b80c109f79bed4
2014-12-19 15:02:58 +00:00
Paul Wilkins
8ac3f9adaa Merge "Removal of legacy zbin_extra / zbin_oq_value." 2014-12-19 03:37:02 -08:00
Johann
39a74e19fb Ensure the error-concealment code is available
When it's configured, make sure it can be configured. When it's not,
make sure it fails.

Change-Id: I857d4b8014547ddbad70395f17e58d5838bd142f
2014-12-18 17:36:58 -08:00
Yunqing Wang
7c2c2bea96 vp9_ethread: add the multi-threaded encoder unit tests
The unit tests for VP9 multi-threaded encoder are added, which
carry out tests for all three modes(i.e. kTwoPassGood, kOnePassGood
and kRealTime), and speeds ranging from 1 to 8. A 1280x720 test
clip is used, which is encoded into multiple tiles. The number of
threads is num_of_tiles.

Change-Id: I04419eeca145ad841c9c527603668239a82e7fbd
2014-12-18 16:37:38 -08:00
Frank Galligan
675ec943db Fix including test file twice.
The test file niklas_1280_720_30.yuv may be included twice.

Change-Id: I44512073e9e430a8e10fbce5afd62041e0edea17
2014-12-18 16:03:27 -08:00
Frank Galligan
0f3d388685 Fix encode perf test
The accepted range changed to -8..8.
BUG:https://code.google.com/p/webm/issues/detail?id=901

Change-Id: I53ac80b58f4819b82c76db61db5dc476f821191f
2014-12-18 15:19:21 -08:00
Paul Wilkins
e9b586e21b Removal of legacy zbin_extra / zbin_oq_value.
zbin extra / zbin_oq_value was widely passed around,
hence removal touches a lot of code.

Change-Id: Idc94359735b60c38a160e4385ae09d5ca8b6b8e5
2014-12-18 16:49:11 +00:00
James Zern
84eca07c61 tests/examples.sh: skip env. check for filtered tests
Change-Id: Ide670b00ae3ecd9e18f394905341bf793349f247
2014-12-17 19:02:00 -08:00
Deb Mukherjee
4dd5b88535 Merge "Enhance the end to end psnr tests" 2014-12-17 13:49:13 -08:00
Deb Mukherjee
b62064f338 Enhance the end to end psnr tests
Includes more speed settings and also real-time mode now.

Change-Id: I71c77c4a2471d715c61cc30db092aa053cf012e1
2014-12-17 12:00:20 -08:00
Yunqing Wang
3666478195 Improve the libvpx encoder test driver
The encoder initialization is called in EncodeFrame(). Therefore,
in the unit tests, the set control is done when video->frame() is 1.
This didn't cause problem since current tests mainly test lag_frame
> 0 case, or no encoding option that needs to allocate memory before
1st frame is used. If use lag_frame = 0 and encoding multiple tiles,
the unit tests crash. The issue is fixed by doing the initialization
before encoding frames.

Change-Id: I43102048f88448bcf27e9c60e0ec06c176b02e5c
2014-12-17 08:49:46 -08:00
James Yu
aeeaa67987 VP9 common for ARMv8 by using NEON intrinsics 15
Re-write
- vp9_lpf_horizontal_4_dual_neon
in vp9_loopfilter_16_neon.c

Change-Id: Ie14f63d352f9564ad01db3939a61d91cf6d21a31
Signed-off-by: James Yu <james.yu@linaro.org>
2014-12-16 20:00:26 -08:00
Frank Galligan
5fdd0f1fe0 Merge "Revert "Revert "Add support for setting byte alignment.""" 2014-12-16 15:14:17 -08:00
Johann
1d059fa23e Merge "VP9 common for ARMv8 by using NEON intrinsics 06" 2014-12-15 14:49:33 -08:00
Johann
37ea1e1218 Merge "VP9 common for ARMv8 by using NEON intrinsics 05" 2014-12-15 14:48:53 -08:00
Frank Galligan
c4f7079ad4 Revert "Revert "Add support for setting byte alignment.""
This reverts commit 91471d6aad.

Fixes the compile issues if post_proc is enabled.

Change-Id: Ib40a15ce2c194f9b5adfa65a17ab01ddf60f5a59
2014-12-15 12:20:37 -08:00
James Yu
4f856cd7fa VP9 common for ARMv8 by using NEON intrinsics 06
Add vp9_iht8x8_add_neon.c
- vp9_iht8x8_64_add_neon

The assembly did not previously implement tx_type 0
BUG=716

Change-Id: Icfc99dd24f3d59047f9184a7d0c761ba7e3de934
Signed-off-by: James Yu <james.yu@linaro.org>
2014-12-15 12:18:06 -08:00
James Yu
6b71013277 VP9 common for ARMv8 by using NEON intrinsics 05
Add vp9_iht4x4_add_neon.c
- vp9_iht4x4_16_add_neon

The assembly did not previously implement tx_type 0
BUG=715

Change-Id: I60034d1568de034edba45c5cdd13f3d87dbc73b6
Signed-off-by: James Yu <james.yu@linaro.org>
2014-12-15 12:16:19 -08:00
Paul Wilkins
91471d6aad Revert "Add support for setting byte alignment."
Fails to compile. Bad calls to vp9_alloc_frame_buffer
and vp9_realloc_frame_buffer in postproc.c

This reverts commit 399823b6f5.

Change-Id: I29f0e173f8e185d3a303cfdb17813e1eccb51e3a
2014-12-15 11:54:13 +00:00
hkuang
9353607ac8 Fix a bug that break the vp8 fragment decoder.
(issue #882).

Change-Id: I2ca7f96d390c4eaec0473c50cb01b903d0bd3ee6
2014-12-12 16:44:14 -08:00
Frank Galligan
399823b6f5 Add support for setting byte alignment.
Add support for setting byte alignment on the Y, U, and V plane of the
reference buffers. The byte alignment must be a power of 2, from 32 to
1024. A value of 0 sets legacy alignment.

Change-Id: I7c1399622f7aa68e123646369216b32047dda73d
2014-12-12 13:34:36 -08:00
Jim Bankoski
cf6a5c8759 Merge "Adds a test to make sure encoder parms get to decoder." 2014-12-12 11:10:08 -08:00
Jim Bankoski
18d323606d Fix test to call clear system state in convolve_test.
Assembly tests should clear system state, as we have no
expectation of proper system state in between test runs..

Change-Id: I0f591996c1f17ef2a5a8572a6b445f757223a144
2014-12-12 06:18:56 -08:00
Jim Bankoski
a0d9a9dd51 Adds a test to make sure encoder parms get to decoder.
This is meant as a framework for testing that encode parms make it
through to the decoder.

Change-Id: Idb86ee3668b45b4e73c23c6e4daef94b0650b786
2014-12-11 17:34:32 -08:00
Deb Mukherjee
847636fe88 Merge "Re-enable 8x8 fdct/fht tests by changing tolerance" 2014-12-11 12:29:06 -08:00
Johann
26a0721268 Enable neon idct tests for intrinsics
Change-Id: I45d4a22f3ecb9af172e37c95f168805e492c5493
2014-12-10 18:20:04 -08:00
Johann
2d8f581330 Merge "VP9 common for ARMv8 by using NEON intrinsics 07" 2014-12-10 11:40:46 -08:00
Johann
913d0adbaf Merge "VP9 common for ARMv8 by using NEON intrinsics 04" 2014-12-10 11:40:29 -08:00
Jim Bankoski
d01c7e3544 Merge changes I92251a8b,I5d23a685
* changes:
  Adds a decode perf test that builds a new file.
  Make the decoder Cfg available to encoder tests..
2014-12-10 06:42:08 -08:00
James Yu
01fc6f51e0 VP9 common for ARMv8 by using NEON intrinsics 07
Add vp9_convolve8_neon.c
- vp9_convolve8_horiz_neon
- vp9_convolve8_vert_neon

Change-Id: I0bdd99ff72d275223fe211ac7243c25a5a60cf87
Signed-off-by: James Yu <james.yu@linaro.org>
2014-12-09 20:03:07 -08:00
James Yu
893534a996 VP9 common for ARMv8 by using NEON intrinsics 04
Add vp9_convolve8_avg_neon.c
- vp9_convolve8_avg_horiz_neon
- vp9_convolve8_avg_vert_neon

Change-Id: I617971e37b02186fec5aca181f4f9622050ea2df
Signed-off-by: James Yu <james.yu@linaro.org>
2014-12-09 20:03:07 -08:00
James Yu
d12757f5c6 VP9 common for ARMv8 by using NEON intrinsics 03
Add vp9_copy_neon.c
- vp9_convolve_copy_neon

Change-Id: I291fc5423d06240876411bbceab03eae5ef585be
Signed-off-by: James Yu <james.yu@linaro.org>
2014-12-09 20:02:46 -08:00
Scott LaVarnway
617382a2e3 VP9 common for ARMv8 by using NEON intrinsics 02
Add vp9_avg_neon.c
- vp9_convolve_avg_neon

Change-Id: Id2c9d5bcfa37cff1a16417aba1656ff07bdf10fd
Signed-off-by: James Yu <james.yu@linaro.org>
2014-12-09 19:00:21 -08:00
Johann
65247d8f59 Merge "Add convolve_copy and convolve_avg to the test" 2014-12-09 16:51:35 -08:00
Johann
1c3594c334 Add convolve_copy and convolve_avg to the test
Change-Id: Ic9438031282e63e627550f7e4cdeda36e43e647b
2014-12-09 12:56:38 -08:00
Jim Bankoski
c2638bd80a Adds a decode perf test that builds a new file.
This allows us to track decode speed for new encodes so that we catch
problems like an encode change that makes decode really slow.

Change-Id: I92251a8b1f710b241f66e1042413df1b71b76038
2014-12-09 12:44:45 -08:00
James Yu
5b098b1825 VP9 common for ARMv8 by using NEON intrinsics 01
Add vp9_loopfilter_neon.c
- vp9_lpf_horizontal_4_neon
- vp9_lpf_vertical_4_neon
- vp9_lpf_horizontal_8_neon
- vp9_lpf_vertical_8_neon

Change-Id: I97a0d7b399a431c21ee77396be3d5f5a1f7ebccb
Signed-off-by: James Yu <james.yu@linaro.org>
2014-12-09 12:26:56 -08:00
hkuang
d05cf10fe7 Add error handling for frame parallel decode and unit test for that.
Change-Id: I6e309e11f1641618d2424b7a2c0fe744b8974dec
2014-12-08 12:30:19 -08:00
Jim Bankoski
be7a285820 Make the decoder Cfg available to encoder tests..
Adds decoder config as a changeable parameter to unit tests, and
changes end to end test to use commonly used parameters to enable
base test of tiles encoding and frame parallel decoding.

Change-Id: I5d23a6857303b4d68b92b15c3f2f04a1bcb4c2bb
2014-12-07 11:28:51 -08:00
Deb Mukherjee
1fe643cf03 Re-enable 8x8 fdct/fht tests by changing tolerance
Increases tolerance for tests to ensure the fdct tests pass after
random number range change.

Change-Id: I5b622099e850f91a14b903d10cf14685f4dd3c2b
2014-12-04 16:46:06 -08:00
James Zern
dd26b9a6d0 Merge "Loop filter test fix" 2014-12-04 15:14:20 -08:00
Deb Mukherjee
072ed17d1e Loop filter test fix
Related to fixing random number range.

Change-Id: I84d004600e1f6918badf08d08da421b4e8cc4826
2014-12-04 01:26:06 -08:00
Marco
7cb7588b1e Merge "Various updates to vp8." 2014-12-03 18:12:47 -08:00
James Zern
615230b810 acm_random: provide full range for Rand16()
the gtest implementation used only returns values between 0 and 2^31-1

+ temporarily disable some tests in fdct8x8_test which misbehave with the
  new range

Change-Id: I45381076f0bea3317cc6728305890e4fd2f2facd
2014-12-03 16:59:40 -08:00
Marco
af898b56bb Various updates to vp8.
Change-Id: Icc7a816491897107764e4c936288e9000e6319b8
2014-12-03 16:01:28 -08:00
James Zern
306319387b acm_random: provide full range for Rand8()
the gtest implementation used only returns values between 0 and 2^31-1

+ temporarily disable some tests in lpf_8_test which misbehave with the
  new range

Change-Id: I8a026680c4b8c12dc14d4f24c33edb2315963114
2014-12-03 12:56:05 -08:00
Marco
8fd3f9a2fb Enable non-rd mode coding on key frame, for speed 6.
For key frame at speed 6: enable the non-rd mode selection in speed setting
and use the (non-rd) variance_based partition.

Adjust some logic/thresholds in variance partition selection for key frame only (no change to delta frames),
mainly to bias to selecting smaller prediction blocks, and also set max tx size of 16x16.

Loss in key frame quality (~0.6-0.7dB) compared to rd coding,
but speeds up key frame encoding by at least 6x.
Average PNSR/SSIM metrics over RTC clips go down by ~1-2% for speed 6.

Change-Id: Ie4845e0127e876337b9c105aa37e93b286193405
2014-12-03 09:18:08 -08:00
Debargha Mukherjee
dcb29c1406 Merge "Added high bitdepth sse2 transform functions" 2014-12-02 12:29:21 -08:00
Peter de Rivaz
7e40a55ef9 Added high bitdepth sse2 transform functions
Also removes some spurious changes in common/vp9_blockd.h which
was introduced by a rebase issue between nextgen and master branches.

Change-Id: If359f0e9a71bca9c2ba685a87a355873536bb282
(cherry picked from commit 005d80cd05)
(cherry picked from commit 08d2f54800)
(cherry picked from commit 4230c2306c)
2014-12-02 11:16:24 -08:00
Jingning Han
bf758b6afa Enforce error resilient mode on in temporal svc real-time mode
This commit makes the codec automatically turn on error resilient
mode when using real-time mode for temporal scalable coding. It
fixes an enc/dec mismatch issue and re-enables the corresponding
unit test.

Change-Id: Ie1f7134e9a78ddd43e9b1555b3ee991c8a3afd0d
2014-12-02 10:53:01 -08:00
Jingning Han
65d6320cf8 Turn off temporal svc unit test in RTC setting
A hidden enc/dec mismatch bug was accidentally triggered by
https://gerrit.chromium.org/gerrit/#/c/72247/
Adaptively adjust mode test kick-off thresholds in RTC coding

This commit temporarily turns off the broken unit tests to avoid
blocking other CLs while fixing.

Change-Id: I0a0f195030321190ce10879cd833187680576367
2014-12-01 15:14:47 -08:00
James Zern
31bb7a2570 Merge "tests: enable resize_test for vp8" 2014-11-25 15:12:41 -08:00
Johann
ee30dd000c Remove unfreed memory in quantize_test.cc
vp8_config doesn't need to be on the stack. Just use a local copy.

Change-Id: Ia241b1d87fd9422556d957f3ea43ad71eb5c414a
2014-11-25 12:48:51 -08:00
James Zern
3726d45d5b Merge "sad_test: initialize bit_depth_ in all cases" 2014-11-24 12:26:15 -08:00
James Zern
65d7fa7169 sad_test: initialize bit_depth_ in all cases
previously 'bit_depth_', which is later used to calculate 'mask_', would
be left uninitialized in non-high-bitdepth builds

Change-Id: Ia72035f4645baf3bb0f191504f491b934cdf1e0e
2014-11-22 12:12:59 -08:00
Debargha Mukherjee
02355a4abf Merge "Added highbitdepth sse2 acceleration for quantize" 2014-11-21 16:08:47 -08:00
James Zern
508b345b44 Merge "vp9_thread_test: fix 'had_error' assignment" 2014-11-21 11:35:59 -08:00
Johann
08ad7e4db5 Correctly initialize "ones" value in neon quantize
By using 0xff for a short it was not setting the high bits. When
comparing the output with vtst to find non-zero elements it was skipping
vaules which had no low bits set such as -512 / 0xFE00.

Using -8191 as the first element of coeff will generate this condition.

BUG=883

Change-Id: Ia1e10fb809d1e7866f28c56769fe703e6231a657
2014-11-20 18:34:45 -08:00
James Zern
a37607bc8c tests: enable resize_test for vp8
this was incorrectly set in test.mk by
93ffd37 Enable and fix resize_test for VP9

the test is now available when using --disable-vp9

Change-Id: I6acf44b0de647b34812ef5e18fd96447cdf9b25d
2014-11-20 14:34:40 -08:00
James Zern
a0d1582d65 vp9_thread_test: fix 'had_error' assignment
worker hooks return false on error, fix the assignment in Execute() used
in the TestSerialInterface test

Change-Id: I93c2e45f270330ae6d35a3a303411c4ee0f31337
2014-11-20 14:16:28 -08:00
Peter de Rivaz
a7b2d09f36 Added highbitdepth sse2 acceleration for quantize
Also includes block error.

(This patch is mostly cherry picked from
commit db7192e0b0)

Change-Id: Idef18f90b111a0d0c9546543d3347e551908fd78
2014-11-19 23:55:19 -08:00
James Zern
16d2696978 sad_test: fix vp8-only build
ROUND_POWER_OF_TWO() is defined in vp9 headers currently, avoid it in
non-high-bitdepth code

Change-Id: Ic28b8f95ef7964800475ee8b35be5f9cea9afab6
2014-11-19 19:18:25 -08:00
Debargha Mukherjee
c3a9056df4 Merge "Added sse2 acceleration for highbitdepth variance" 2014-11-14 21:11:27 -08:00
Peter de Rivaz
48032bfcdb Added sse2 acceleration for highbitdepth variance
Change-Id: I446bdf3a405e4e9d2aa633d6281d66ea0cdfd79f
(cherry picked from commit d7422b2b1e)
(cherry picked from commit 6d741e4d76)
2014-11-14 15:18:53 -08:00
Deb Mukherjee
00c385f17a Visual studio build fix using explicit cast
Change-Id: If74510370723e497f4f33d988b8b398124edf69b
2014-11-14 15:12:01 -08:00
hkuang
a9a20a1040 Fix a bug in frame parallel decode and add a unit test for that.
A flush bug is discovered during putting frame parallel decoder
into Android. This test will expose that bug.

Change-Id: Ia047f27972f4da0471649f79f1f91e7695297473
2014-11-14 10:16:34 -08:00
James Zern
8da5088da1 Revert "Fix SSSE3 partial_idct_test detection"
This reverts commit 7d07f512cd.

this breaks visual studio builds:
'#' : invalid character : possibly the result of a macro expansion

Change-Id: I77170d549afb71e75a878fa0f6acd204fe8d9e67
2014-11-13 11:32:02 -08:00
Debargha Mukherjee
002172efd6 Merge "Added highbitdepth sse2 SAD acceleration and tests" 2014-11-12 21:20:34 -08:00
Peter de Rivaz
7eee487c00 Added highbitdepth sse2 SAD acceleration and tests
Change-Id: I1a74a1b032b198793ef9cc526327987f7799125f
(cherry picked from commit b1a6f6b9cb)
2014-11-12 14:25:45 -08:00
Johann
64b3739bf1 Merge "Fix SSSE3 partial_idct_test detection" 2014-11-12 12:20:36 -08:00
Johann
18366964b1 Merge "Remove asm offset dependencies" 2014-11-10 10:22:09 -08:00
Deb Mukherjee
27dce0f324 Test name changes to use SSE/SSE2 exactly
Change-Id: I3b5a478d198868c2796366f0ac59d0e2036308b8
2014-11-07 13:44:19 -08:00
hkuang
165db2343a Merge "Add two test vectors to test frame parallel decode." into frame_parallel 2014-11-07 10:06:35 -08:00
hkuang
f2fe530e15 Add two test vectors to test frame parallel decode.
The added vectors are mainly used to test the output cache
mechanism in frame parallel decode.

Change-Id: I3d413d060daa5abf72358f6350bd1d16d71adc5a
2014-11-06 16:28:35 -08:00
Johann
6eec73a747 Remove asm offset dependencies
The obj_int_extract code is no longer worth maintaining. It creates
significant issues when adapting for different build systems and no
longer offers as significant of a performance benefit due to
improvements in intrinsics.

Source files will remain until the various third-party builds are updated.

The neon fast quantizer has been moved to intrinsics. The armv6 version
has been removed because so few remaining targets require it.

Compilers and processors have improved significantly since the
pack_tokens code was written. The assembly is no longer faster than the
C code.

pack_tokens were the only optimizations for the armv5te targets so the targets
will be removed after the test infrastructure has been updated.

BUG=710

Change-Id: Ic785b167cd9f95eeff31c7c76b7b736c07fb30eb
2014-11-06 16:00:01 -08:00
hkuang
ad693e1ff5 Add key frame seeking to webmdec and webm_video_source.
This is for the frame parallel's pause/seek/resume unit test.

Change-Id: Ie235f86ca5f3d525896222766f6d610e6682fd76
2014-11-06 13:51:08 -08:00
Yunqing Wang
1228433430 Modify the frame context memory deallocation
This patch was to fix the vpxdec fuzzing3 test failure. When an
error occurs, setjmp() is invoked, which calls the decoder
removing routine. In multiple thread situation, other threads
could try to access the frame context memory that is already
deallocated, thus causing a segfault.

An invalid unit test was added for this issue.

Change-Id: Ida7442154f3d89759483f0f4fe0324041fffb952
2014-11-06 11:34:19 -08:00
Johann
7d07f512cd Fix SSSE3 partial_idct_test detection
The test filter is not a prefix matcher. It requires test type to
contain no more than the optimization type. In this example, SSSE3_64
fails to match and the test is not skipped even when SSSE3 is not
available.

Change-Id: Ia74229a167c88da4e6da169012a7a77d438c3f75
2014-11-05 12:58:08 -08:00
Johann
d1b64deef4 vp8 quantize is now in intrinsics, not asm
Change-Id: Ie106c5335c9ba5aac81e23150e7026fb6ea6196e
2014-11-05 12:28:07 -08:00
James Zern
df1b0cafd6 quantize_test: delete QuantizePair related tests
functions were removed in:
2134eb2 Remove pair quantization

fixes ARM build

Change-Id: I634de50c2752408381d70afb0f5088b61052853c
2014-11-05 13:11:34 +01:00
Johann
dae280d537 Align structures in quantize test
MACROBLOCKD structures require alignment.

This fixes an issue caught by clang IOC.

Change-Id: Ibb5bcc122f531b4302a87e1144e4feaf46c1de64
2014-11-04 10:49:59 -08:00
Johann
9c6ce43df6 Add some indirection to the quantize test
Visual Studio and XCode require the address of the functions be passed.

Change-Id: Id39cab8e50061fdc6ac6018371a3a158c713e14b
2014-11-04 10:48:32 -08:00
Yunqing Wang
6d90a9d289 Merge "WORKAROUND FIX FOR GCC4.9.1" 2014-11-03 16:56:38 -08:00
Johann
6bab322d49 Merge "vp8 quantize test" 2014-11-03 15:45:21 -08:00
Johann
53b68de565 vp8 quantize test
Test for Regular, Fast and Pair quantization

Change-Id: I0a26c164afe632db869099402189826c0d43f9a2
2014-11-03 14:15:34 -08:00
levytamar82
86175a5788 WORKAROUND FIX FOR GCC4.9.1
In the function mb_lpf_horizontal_edge_w_avx2_16 the usage of the intrinsic
_mm256_cvtepu8_epi16 cause a compiler bug in gcc 4.9.1.
until it will be fixed I created a workaround that create the up convert by
using broadcast128+shuffle.
The bug was reported here:
https://code.google.com/p/webm/issues/detail?id=867

Change-Id: I73452e6806f42e0fadcde96b804ea3afa7eeb351
2014-11-01 11:27:28 -07:00
Marco
8fd5525191 Addd error resilience test for temporal layers.
Test for successful decoding when dropping enhancement layer frames.

Change-Id: Id3ae6e5676894f352680973e52352dc5d98bbf55
2014-10-29 16:47:56 -07:00
Deb Mukherjee
bec307acda Adding test vectors for profile 2 and 3
Also adds mising test vectors for profile 1.

Change-Id: I5269af8b9e6b708ce50a0d9c69b6cae4bb2870dc
2014-10-21 00:35:07 -07:00
Yunqing Wang
687c56e802 Merge "SAD32xh and SAD64xh for AVX2" 2014-10-20 12:37:55 -07:00
levytamar82
7045aec00a SAD32xh and SAD64xh for AVX2
All sad function that process above 32 consecutive elements are optimized
for AVX2:
vp9_sad64x64
vp9_sad64x32
vp9_sad32x64
vp9_sad32x32
vp9_sad32x16
vp9_sad64x64_avg
vp9_sad64x32_avg
vp9_sad32x64_avg
vp9_sad32x32_avg
vp9_sad32x16_avg
The functions that appeared as a hotspot is vp9_sad32x32 and vp9_sad64x64
vp9_sad32x32 was optimized by 68% and vp9_sad64x64 was optimized by 90%
both of them gave and overall ~2.3% user level gain

Change-Id: Iccf86b375a2b54c5fbbe685902ead0c9a561b9fd
2014-10-19 13:59:10 -07:00
Deb Mukherjee
8101e82a1b Merge "Adds a set of end-to-end encode tests" 2014-10-16 14:27:26 -07:00
Deb Mukherjee
50c59cdae9 Adds a set of end-to-end encode tests
Covers all profiles and input formats. The tests check if the
encode succeeds and if the psnr is sane.

Change-Id: I195a5330debf92562846121819b6eaf961e27c01
2014-10-16 11:14:03 -07:00
Minghai Shang
68b550f551 [spatial svc]Another workaround to avoid using prev_mi
We encode a empty invisible frame in front of the base layer frame to
avoid using prev_mi. Since there's a restriction for reference frame
scaling factor, we have to make it smaller and smaller gradually until
its size is 16x16.

Change remerged.

Change-Id: I9efab38bba7da86e056fbe8f663e711c5df38449
2014-10-16 16:09:40 +01:00
Paul Wilkins
468032961d Revert "[spatial svc]Another workaround to avoid using prev_mi"
This reverts commit c113457af9.

Temporary revert to allow clean revert of another commit.

Change-Id: Ia9b7b755e6c48e1b6e383329f121fef175a24b27
2014-10-16 15:52:08 +01:00
Minghai Shang
c113457af9 [spatial svc]Another workaround to avoid using prev_mi
We encode a empty invisible frame in front of the base layer frame to
avoid using prev_mi. Since there's a restriction for reference frame
scaling factor, we have to make it smaller and smaller gradually until
its size is 16x16.
Change-Id: I60b680314e33a60b4093cafc296465ee18169c19
2014-10-14 16:26:39 -07:00
JackyChen
755451c423 Merge "Code style change in unit test for VP8/VP9 denoiser." 2014-10-14 08:46:33 -07:00
Alex Converse
99a132f561 Add a seg map preservation test vector.
Add a test vector to show the cases where segmentation map is preserved
from frome to frame as outlined in the inquiry in issue 761.

Change-Id: I630c6aba27d0d0b109cc7fd7c6fcd008222a0cf3
2014-10-13 11:18:22 -07:00
JackyChen
31780e6647 Code style change in unit test for VP8/VP9 denoiser.
Change-Id: If4b0aca18c8474dd2456900ae9681e74222e645f
2014-10-13 09:43:10 -07:00
James Zern
6420585c8a Merge changes Ib5030373,Id614cfe6
* changes:
  test-data.mk: add some sectional comments
  add test-data.mk
2014-10-10 06:48:04 -07:00
Deb Mukherjee
1929c9b391 Rename highbitdepth functions to use highbd prefix
Uses highbd_ prefix convention consistently.

Change-Id: I58f7f799a7ff8e32701bcd71c955bcf1cdd4581e
2014-10-09 14:40:40 -07:00
James Zern
e952c3412d test-data.mk: add some sectional comments
+ sort

Change-Id: Ib503037376368cec0cf57cbedeb215ab0eac8304
2014-10-09 06:51:54 -07:00
James Zern
a51d45a748 add test-data.mk
splits the test sources (test.mk) and the test data.

Change-Id: Id614cfe68bfbc09b0e429a37a21ec7a9dcdfadc6
2014-10-09 06:51:54 -07:00
JackyChen
e638aff245 Merge "Add unit test for VP8 denoiser." 2014-10-08 11:41:14 -07:00
JackyChen
09fbe88631 Add unit test for VP8 denoiser.
The unit test is to check the bitexactness of SSE2 code with C code.

Change-Id: I13cc08a557b02357e5d6c2db7a49e93ce0d8e16f
2014-10-08 09:34:43 -07:00
Jim Bankoski
0ce51d823f experimental : partition using 1/8 x 1/8 image
The concept:

There's too much noise in source pixels for variance and at low bitrate
the reconstructed looks nothing like the source so we have problems
getting good partitionings with either.   This skirts the issue by using
a box blur scaled down version for variance calculations.  To compare
against source_var_ moved keyframe to be rd based like source_var.

Change-Id: Ie3babdbfadae324b7b5a76bea192893af27f0624
2014-10-07 16:36:14 -07:00
JackyChen
a9f479682a Merge "Add SSE2 code and unit test for VP9 denoiser." 2014-10-07 10:51:55 -07:00
JackyChen
80465dae88 Add SSE2 code and unit test for VP9 denoiser.
This SSE2 is based on VP8 denoiser's SSE2 code. In VP8, there are
only 16x16 blocks in denoiser, while in VP9, there are 13 different
block sizes.

By adding this SSE2 code, the improvement of encoder speed is around
20%(using C code vs using SSE2 code), vary for different clips.

The unit test for VP9 denoiser is to confirm that the SSE2 code is
bit-exact with the C code. The unit test covers all block size.

Change-Id: Ic8d8ac26db4ea40a5f146b5678a065af07eaaa3d
2014-10-06 15:27:40 -07:00
Jingning Han
12344f2697 Add range check in inverse ADST 16x16
Bit-stream clarification related to Issue 868.

Change-Id: I92a7bc5b7782c9ea5c3f6cceec761742183c9514
2014-10-06 11:07:58 -07:00
Deb Mukherjee
8a01074d04 Merge "Incorporate WRAPLOW macro into non-highbitdepth tx" 2014-10-03 12:45:39 -07:00
Deb Mukherjee
d50716face Incorporate WRAPLOW macro into non-highbitdepth tx
Incorporates the WRAPLOW macro into the non-highbitdepth transforms
to aid hardware verification between a software C model and an
intended hardware implementation though the use of the configure
options: --enable-experimental --enable-emulate-hardware.
Note that to avoid further discrepancies between the sse/sse2
implementations of the transforms and the C implementation, when the
emulate hardware option is invoked, we also disable sse/sse2/etc.

Also incudes some minor cleanups/renaming etc.

Change-Id: Ib864d8493313927d429cce402982f1c8e45b3287
2014-10-03 11:38:05 -07:00
Alex Converse
655fbd1b4a Add a 1x1 enc/dec test.
Change-Id: I777f49a3c2c2aaa04ae23904396bd7254e1afd8c
2014-10-02 12:33:02 -07:00
Alex Converse
feee7d97b7 Drop the very slow BEST encoding from the lossless test.
BEST is used in very few tests.

Change-Id: I71880534fe5a44721e7bac8be49b5f71766c1e5f
2014-10-01 11:58:36 -07:00
Deb Mukherjee
e2a90c0b21 Merge "High bit-depth loop/arf/postproc filter functions" 2014-09-23 17:26:32 -07:00
Deb Mukherjee
931ed516ba High bit-depth loop/arf/postproc filter functions
Adds high-bitdepth loopfilter, temporal filter and postproc functions

Change-Id: I81c8a9176890784686bc4f2af0d550d243b3b2d3
2014-09-23 16:20:43 -07:00
Johann
b51f0ea22e Merge "invalid_file_test.cc is only for VP9 decoder" 2014-09-22 15:57:03 -07:00
Johann
176ae593a7 invalid_file_test.cc is only for VP9 decoder
Fix --disable-vp9 build

https://code.google.com/p/webm/issues/detail?id=857

Change-Id: I98eacab5aa4aa9a657647acadd8ce2bd1a4590c0
2014-09-22 14:29:51 -07:00
Minghai Shang
38b6aed8fd Merge "[spatial svc] Remove vpx_svc_parameters_t and the loop that sets it for each layer" 2014-09-22 14:01:24 -07:00
Minghai Shang
45a577e83c Merge "[spatial svc]Remove quantizers option. Use max/min quantizers for each layer." 2014-09-22 14:01:16 -07:00
Minghai Shang
c150ba2784 Merge "[spatial svc] Use string for quantizers and scale-factors option in the test app" 2014-09-22 14:01:06 -07:00
hkuang
8e7db6dd08 Merge "Fix compile warning." 2014-09-22 10:05:12 -07:00
hkuang
db71c1bd55 Fix compile warning.
warning: comparison between signed and unsigned integer expressions.

Change-Id: Ib6ee7500fe910983f290fc321ad89c0ab9989455
2014-09-19 22:48:38 -07:00
Tom Finegan
f34d728717 test/tools_common.sh: Add support for dumping list of tests.
Via new command line argument --list-tests.

Change-Id: I0f12d10b49c14f5f68aafd5bc45362b1ea4f361f
2014-09-19 16:15:20 -07:00
Minghai Shang
209ee12110 [spatial svc] Remove vpx_svc_parameters_t and the loop that sets it for each layer
vpx_svc_parameters_t contains id, resolution and min/max qp for each spatial layer.

In this change we will use extra config to send min/max qp and scaling factors, then calculate layer resolution inside encoder.

Change-Id: Ib673303266605fe803c3b067284aae5f7a25514a
2014-09-18 18:05:07 -07:00
JackyChen
4eece0d983 Add a conditional compilation macro to VP8 unit test.
In many tests in VP8, the denoiser is disabled. By adding this
conditional comilation macro, the unit test will not be included
when denoiser is not enabled.

Change-Id: I6edec85c996acca22aacd11161c52408be2660a3
2014-09-18 15:38:32 -07:00
JackyChen
5887aededb Merge "Add unit test for VP9 denoiser." 2014-09-18 12:56:23 -07:00
JackyChen
a86e6e8358 Add unit test for VP9 denoiser.
Check basic datarate targeting for a single bitrate
when the denoiser is on.

Change-Id: Iad0e664859ffeb4ae6dd5f6dfb71a121e917e3fb
2014-09-18 11:26:08 -07:00
Minghai Shang
4f5b2b2892 [spatial svc]Remove quantizers option. Use max/min quantizers for each layer.
Change-Id: I214bc4169f6c5eaee4957cd308a74d309e999005
2014-09-18 11:10:11 -07:00
Deb Mukherjee
0d3c3d3ce7 Adds high bitdepth convolve, interpred & scaling
Change-Id: Ie51c352a6b250547207cbc1ebba833a01ed053e3
2014-09-18 07:26:17 -07:00
Minghai Shang
76885de5ad [spatial svc] Use string for quantizers and scale-factors option in the test app
1. This is to align with the ffmpeg implementation
2. Remove APIs for setting quantizers and scale-factors

Change-Id: I6e238d71db790a9fb3254baaeb61e2a5aac58f48
2014-09-17 17:39:16 -07:00
Deb Mukherjee
f7cf05cfe0 Merge "Adding high-bitdepth intra prediction functions" 2014-09-16 17:10:24 -07:00
Frank Galligan
ecd7e3d2b7 Merge "Remove memset of every external frame buffer." 2014-09-16 15:17:26 -07:00
Deb Mukherjee
81a8138fc3 Adding high-bitdepth intra prediction functions
Change-Id: I6f5cb101e2dc57c3d3f4d7e0ffb4ddbed027d111
2014-09-16 15:04:39 -07:00
Frank Galligan
175d9dfe0a Remove memset of every external frame buffer.
Libvpx was memseting every external frame buffer before decode. This
was to work around a valgrind issue in our C loop filter. Most of
the time this was not needed and we have noticed some significant
performance loss on some platforms. Now we require the application to
zero out the buffers if it is using external frame buffers.

Change-Id: I7330d00a315e65137ed30edd5f813e8929b76242
2014-09-15 15:37:36 -07:00
Scott LaVarnway
fe2cc873dc VP8 encoder for ARMv8 by using NEON intrinsics 1
Add vp8_mse16x16_neon.c
- vp8_mse16x16_neon
- vp8_get4x4sse_cs_neon

Change-Id: I108952f60a9ae50613f0ce3903c2c81df19d99d0
Signed-off-by: James Yu <james.yu@linaro.org>
2014-09-15 12:04:09 -07:00
Deb Mukherjee
41e6ec4a57 Visual Studio build (warning) fix
Explicit type casting to prevent warning.

Change-Id: Ib5be4ad6d4126d88f7c67d246bb085df1e813329
2014-09-14 07:32:18 -07:00
Deb Mukherjee
10783d4f3a Adds high bitdepth transform functions and tests
Adds various high bitdepth transform functions and tests.
Much of the changes are related to using typedefs tran_low_t
and tran_high_t for the final transform cofficients and intermediate
stages of the transform computation respectively rather than fixed
types int16_t/int. When vp9_highbitdepth configure flag is off,
these map tp int16_t/int32_t, but when the flag is on, they map
to int32_t/int64_t to make space for needed extra precision.

Change-Id: I3c56de79e15b904d6f655b62ffae170729befdd8
2014-09-11 19:56:33 -07:00
Johann
ac2f2e7855 Merge "Allow specifying opt dependencies" 2014-09-11 16:02:41 -07:00
Johann
8645a53039 Allow specifying opt dependencies
If optimizations use more than one cpu feature, allow
specifying them so that '--disable-X' still works

https://code.google.com/p/webm/issues/detail?id=854

Change-Id: I3108ea37b397371a2be84dd5f2380b304db23f18
2014-09-11 13:43:48 -07:00
Minghai Shang
12aaff560b [spatial svc] Remove handling frame and stats packets in the codec
1. svc_encodeframe.c will not handle frame or stats packets anymore.
   The app will process them.
2. Remove APIs that related to these packets.

Change-Id: Id0d7f8b458dc09c6f77064c0878fd4e572db001b
2014-09-11 11:35:27 -07:00
James Zern
7ee073e61d vp9: wait for key/intra-only frame after corruption
don't bother decoding any further after receiving an earlier decode
error until a key/intra-only frame is encountered.

Change-Id: I381917b70d7a9e6f8d6de42e3d181bb113a4cec4
2014-09-09 19:36:11 -07:00
Alex Converse
864fd85011 Add an invalid file test for referencing a different color space.
Change-Id: I46472a524f5188b293332946be943bd15cfc8777
2014-09-08 11:12:15 -07:00
Dmitry Kovalev
1f19ebbab6 Replacing vp9_get_mb_ss_sse2 asm implementation with intrinsics.
Change-Id: Ib4f5dd733eb2939b108070a01e83da5d9990bac0
2014-09-06 00:10:25 -07:00
hkuang
4d0d78424b Increase the thread test range to cover 5, 6, 7, 8 threads.
Change-Id: Id25c294720551bb5153987d8758668befaa57929
2014-09-05 17:11:30 -07:00
James Zern
bb4950dfdf vp9: correct context buffer resize check
allocations within vp9_alloc_context_buffers() rely on mi_rows/mi_cols
individually, use those to determine whether to realloc rather than
stride and stride * rows. this fixes a crash with some fuzzed files for
invalid accesses into last_frame_seg_map and above_context.

Change-Id: I7b9f40dcf170d443890f3bd2acd285507943c7d4
2014-09-04 19:14:21 -07:00
James Zern
440f5097c7 vp9: fail decode if block/frame refs are corrupt
proceeding using a corrupt (incompletely decoded) frame reference may
lead to incorrect assumptions about allocation sizes leading to a crash.

Change-Id: I76e74f2e1be127c2e2c7e1174bb3307497dfd23d
2014-09-04 19:14:00 -07:00
Dmitry Kovalev
202edb3d23 Actually resetting random generator for all variance test cases.
Calling Reset(int) method instead of overloaded operator()(int).
Adding underscore at the end of class member name.

Change-Id: I01934e7bc056d4b594e5d05d693328febd34ac3c
2014-09-04 12:24:52 -07:00
Alex Converse
81e5d3f988 Add a more complex SEG_LVL_SKIP test vector.
This file changes the segmentation map, deactivates the map, and
reactivates the map.

Change-Id: I1c8b8949887257b9f4c49a1a9ba9a7c74666ef2e
2014-09-03 15:08:49 -07:00
Scott LaVarnway
dcbfacbb98 Neon version of vp8_build_intra_predictors_mby_s() and
vp8_build_intra_predictors_mbuv_s().

This patch replaces the assembly version with an intrinsic
version.

On a Nexus 7, vpxenc (in realtime mode, speed -12)
reported a performance improvement of ~2.6%.

Change-Id: I9ef65bad929450c0215253fdae1c16c8b4a8f26f
2014-09-03 13:41:27 -07:00
Minghai Shang
759afe525c Merge "[svc] Temporal svc with two pass rate control" 2014-09-03 10:51:19 -07:00
Yaowu Xu
14bcbdac76 Merge "Add a test vector for SEG_LVL_SKIP." 2014-09-03 08:12:20 -07:00
Dmitry Kovalev
0ecc75c819 Merge "Removing MMX SAD calculation code." 2014-09-02 17:35:59 -07:00
Alex Converse
deeeb427dd Add a test vector for SEG_LVL_SKIP.
Change-Id: Ib41acade12fe6cdd4c4a4efdb1260d5f100a3e7f
2014-09-02 16:48:36 -07:00
Dmitry Kovalev
318fc0c34f Removing MMX SAD calculation code.
Removed functions:
* vp9_sad_16x16_mmx
* vp9_sad_8x16_mmx
* vp9_sad_16x8_mmx
* vp9_sad_8x8_mmx
* vp9_sad_4x4_mmx

Change-Id: Ic5174b93b64d65d846f0c11e72cab149e9472bc3
2014-09-02 14:41:36 -07:00
Deb Mukherjee
5acfafb18e Adds config opt for highbitdepth + misc. vpx
Adds config parameter vp9_highbitdepth, to support highbitdepth profiles.
Also includes most vpx level high bit-depth functions. However
encode/decode in the highbitdepth profiles will not work until
the rest of the code is in place.

Change-Id: I34c53b253c38873611057a6cbc89a1361b8985a6
2014-09-02 14:37:10 -07:00
Minghai Shang
be3b08da3e [svc] Temporal svc with two pass rate control
It's built based on current spatial svc code.
We only support one spatial two temporal layers at this time.
Change-Id: I1fdc8584354b910331e626bfae60473b3b701ba1
2014-09-02 12:05:14 -07:00
Dmitry Kovalev
72037944df Merge "Removing variance MMX code." 2014-08-29 14:08:02 -07:00
James Zern
fec40f9269 vp9: fix m/t loop filter invalid free
store the number of allocated rows in VP9LfSync, the calculated values
can not be relied on when dealing with corrupt material.

Change-Id: I13b8bcec9738c299a71df726772ab7ac05511e5b
2014-08-29 11:04:45 -07:00
Dmitry Kovalev
12cd6f421d Removing variance MMX code.
Removed functions:
* vp9_mse16x16_mmx
* vp9_get_mb_ss_mmx
* vp9_get4x4var_mmx
* vp9_get8x8var_mmx
* vp9_variance4x4_mmx
* vp9_variance8x8_mmx
* vp9_variance16x16_mmx
* vp9_variance16x8_mmx
* vp9_variance8x16_mmx

They all have SSE2 equivalent.

Change-Id: I3796f2477c4f59b35b4828f46a300c16e62a2615
2014-08-29 10:26:42 -07:00
James Zern
c29cc89c78 Merge "vp9: fix crash in inline loopfilter w/corrupt file" 2014-08-28 18:37:30 -07:00