Deb Mukherjee [Fri, 11 Jul 2014 18:43:31 +0000 (11:43 -0700)]
Misc. bit-depth related changes
Sets the bit-depth field as default 8 in the image structure in vp8.
Generalizes yuv read in preparation for support for reading 422/444
for 8-bit and 10/12-bit.
All changes are for spatial svc only.
1. Enable encoding hidden frames in each layer and use alt reference idex to reference the hidden frame in each layer
2. Use golden reference idx for spatial reference
3. For those layers that don't have hidden frames (caused by lack of frame buffers), reference a hidden frame in lower layers
4. Add "auto-alt-refs" in svc options
Change-Id: Idf27d1fd2fb5f3ffd9e86d2119235e3dad36c178
Jingning Han [Fri, 11 Jul 2014 20:37:28 +0000 (13:37 -0700)]
Fix a potential invalid memory access in non-RD coding flow
This commit fixes a potential out-of-boundary memory access due to
the use of reuse_inter_pred_sby in the non-RD coding flow. It
resolves the corresponding asan error.
Jingning Han [Thu, 10 Jul 2014 17:55:44 +0000 (10:55 -0700)]
Fix chrome valgrind warning due to the use of mismatched bsize
This commit fixes a mismatched use case of block size in non-RD
intra prediction check. The residual SSE and variance should be
calculated per transform block size, instead of operating block
size, which caused chrome valgrind warning on conditional jump
based on uninitialized value (webm issue 823). This commit
resolves this issue.
Tom Finegan [Thu, 10 Jul 2014 22:17:05 +0000 (15:17 -0700)]
sh tests: Add support for running tested programs within another program.
Specifying the --prefix command line arg executes all test programs within the
context of the prefix string, which is assigned to VPX_TEST_PREFIX.
All test functions updated to include VPX_TEST_PREFIX in their eval command.
James Zern [Thu, 10 Jul 2014 04:02:02 +0000 (21:02 -0700)]
tests: add API_REGISTER_STATE_CHECK
used to wrap API functions to ensure full environment consistency as
opposed to the renamed ASM_REGISTER_STATE_CHECK which is used with
assembly functions.
currently checks the FPU tag word in x86/x86_64 gcc builds to ensure
emms has been called.
if a thread was still doing work when End() was called there'd be a race
on worker->status_. in these cases, however, the specific value is
meaningless as it would be >= OK and the thread would have been shut
down properly, but we'll check 'impl_' instead to avoid any potential
TSan/DRD reports.
Yunqing Wang [Thu, 10 Jul 2014 16:19:03 +0000 (09:19 -0700)]
Refactor vp9_diamond_search_sad function
Currently, vp9_diamond_search_sadx4() is only called when sse3 is
enabled, which is improper since sse2 optimization of sdx4df
functions are available. Changed to always use
vp9_diamond_search_sadx4().
Combined non-rd motion searchs into a single function
This commit combined the full pel and sub pel motion search into a
single function to avoid code duplication. The commit does not change
encoder outputs.
Jingning Han [Mon, 7 Jul 2014 19:08:40 +0000 (12:08 -0700)]
Re-design quantization process for 32x32 transform block
This commit enables a new quantization process for 32x32 2D-DCT
transform coefficient blocks. It improves the compression
performance of speed 5 by 1.4%. The overall compression gains of
speed 5 due to the new quantization scheme is 4.7%. It also includes
the SSSE3 implementation of the 32x32 quantization process.
Adrian Grange [Mon, 9 Jun 2014 22:22:17 +0000 (15:22 -0700)]
Fix decoder handling of intra-only frames
This patch fixes bug 633:
https://code.google.com/p/webm/issues/detail?id=633
The first decoded frame does not have to be a keyframe,
it could be an inter-frame that is coded intra-only.
This patch fixes the handling of intra-only frames.
A test vector has also been added that encodes 3
intra-only frames at the start of the clip. The
test vector was generated using the code in the
following patch:
https://gerrit.chromium.org/gerrit/#/c/70680/
Tim Kopp [Mon, 7 Jul 2014 18:35:27 +0000 (11:35 -0700)]
Vp9 denoiser MC bugfix
In the previous version, only certain buffers in the macroblockd were saved and
the restored. In this version, all of the buffers are saved and restored. The
code was then rolled into a loop for readability.
Also contains a tiny fix for when the -DOUTPUT_YUV_DENOISED flag is used.
Prepare for frame parallel decoding, the reference count buffers
need to be protected by mutex. Move vp9_thread.* to common
folder so that those buffers could use cross-platform mutex
from vp9_thread.*.
Alex Converse [Tue, 1 Jul 2014 20:02:05 +0000 (13:02 -0700)]
Cleanup motion search speed features.
* Replace max_step_search_steps with constant MAX_MVSEARCH_STEPS
* Fold (reduce_first_step_size + speed > 5) into reduce_first_step_size
replacing uses of reduce_first_step_size that don't add the speed
check with zero.
Alex Converse [Wed, 2 Jul 2014 19:36:48 +0000 (12:36 -0700)]
Split vp9_rdopt into vp9_rdopt and vp9_rd.
vp9_rdopt is for making rd optimal mode decisions. vp9_rd is for all
other rd related routines. Anything used outside of making an rd optimal
decision belongs in rd.
Yunqing Wang [Wed, 2 Jul 2014 19:16:27 +0000 (12:16 -0700)]
Fix rd threshold overflow issue
Moved the threshold adjustment before reference flag checking,
which could set the threshold to INT_MAX for disabled reference
frame, and cause overflow if the adjustment is done after that.
Tim Kopp [Tue, 17 Jun 2014 20:04:39 +0000 (13:04 -0700)]
VP9 denoiser implemented FILTER_BLOCK case
Renamed updating_running_avg() to filter(). Extended function with the rest of
the filter procedure. Made all of the empirically-determined constants used in
VP8 into functions so they can be tweaked more easily.
Tim Kopp [Tue, 1 Jul 2014 18:05:16 +0000 (11:05 -0700)]
VP9 denoising enabled by noise_sensitivity param
As in VP8.
Currently, this parameter is set with the VP8E_SET_NOISE_SENSITIVITY flag.
The flag was not renamed so that we don't break the interface for webrtc. This
should probably be changed at some point in the future.