Jingning Han [Tue, 3 Jun 2014 01:48:33 +0000 (18:48 -0700)]
Fix potential overflow issue in SSSE3 forward 8x8 2D-DCT
The SSSE3 implementation might find a potential overflow issue in
its second 1-D transform, if all input residual pixels are close to
255. This commit fixes the issue and re-enables the unit test on
the SSSE3 version.
Jingning Han [Mon, 2 Jun 2014 23:40:01 +0000 (16:40 -0700)]
Rework unit test for 8x8 transformation
This commit reworks the unit test for 8x8 forward/inverse
transformation. It adds extreme input value test to detect overflow
issues in the intermediate steps.
It temporarily disables unit test for the SSSE3 version, which
showed overflow failure in the new test conditions.
Jingning Han [Thu, 29 May 2014 19:50:54 +0000 (12:50 -0700)]
Add overflow check unit test for 16x16 inverse DCT/ADST transform
This commit applies quantization process with coarse quantization
step size to the forward transform coefficients and tests all the
inverse 16x16 DCT and ADST implementation versions with the
dequantized coefficients as input, to verify that the outcomes
match the prototype.
hkuang [Fri, 23 May 2014 22:18:41 +0000 (15:18 -0700)]
Refactor the vp9_get_frame code for frame parallel.
In frame parallel decoding mode, there will be still several frames inside
the decoder when application stop calling vpx_codec_decode to decode frames.
The application will need to keep calling vpx_codec_get_frame to get all the
remaining decoded frames in the decoder.
Yaowu Xu [Fri, 30 May 2014 17:15:30 +0000 (10:15 -0700)]
Fix a problem of using an uninitialized parameter
This commit added a call to set speed feature before initializing
motion search, fixed the problem where unintialized search method
is used before its value being set.
Marco Paniconi [Tue, 27 May 2014 23:44:17 +0000 (16:44 -0700)]
vp8 denoiser: fix to zero_mv mode selection.
In the current logic, if the sse for zero motion is smaller
than the sse for new_mv (i.e., best_sse), we may still end up
using the non-zero mv for denoising (if the magnitude of new_mv is above threshold).
This can happen for very noisy content, and can lead to artifacts.
This change ensures that we always use zero_mv (over new_mv) for
denoisng if sse_zero_mv <= best_sse.
Paul Wilkins [Fri, 23 May 2014 18:01:43 +0000 (19:01 +0100)]
Remove brightness weighting in two pass.
This code dates from the ancient past and
applied an error score weighting based on pixel
brightness. This not seem to be providing any
benefit metrics wise and could be making some
visual issues in dark frames worse.
The field is left in place in the FIRSTPASS_STATS data
structure in this patch, pending changes to unit tests that
use a pre-defined first pass file.
Jingning Han [Thu, 22 May 2014 16:44:40 +0000 (09:44 -0700)]
Inverse 16x16 2D-DCT SSSE3 implementation
This commit enables the SSSE3 implementation of full inverse 16x16
2D-DCT. The unit runtime goes down from 1642 cycles to 1519 cycles,
about 7% speed-up.
Yaowu Xu [Fri, 23 May 2014 19:23:29 +0000 (12:23 -0700)]
Use extreme values for input in convovle tests
The intepolation filter functions can be better tested withe extreme
values, especially given the optimization functions are prone to
overflow signed 16 bit intermediate value when operation order is
wrong.
Paul Wilkins [Wed, 21 May 2014 12:17:00 +0000 (13:17 +0100)]
Further first pass allocation changes.
Further changes to first pass allocation for gf/arf groups.
Three variables removed from TWO_PASS structure as only
now used locally. Dont adjust gf_group_bits in the post
encode update as this will no longer have any effect.
Yunqing Wang [Fri, 23 May 2014 18:52:20 +0000 (11:52 -0700)]
Fix decoder mismatch in sub-pixel SSSE3 intrinsic filters
In 8-tap filtering, to guarantee the intermediate results fit in
16 bits, the order of accumulating the products needs to be done
correctly, and the largest product should be added last. This
patch fixed the problem using the method in commit "Correct ssse3
8/16-pixel wide sub-pixel filter calculation".
Deb Mukherjee [Fri, 23 May 2014 08:26:01 +0000 (01:26 -0700)]
Fixes a bug for uninitialized frame buffers
Fixes a bug introduced in
https://gerrit.chromium.org/gerrit/#/c/69779/13, where
uninitialized frame buffers due to corrupt and short
buffer sizes, may cause a crash.
This patch fixes the currently failing
video/processing/static_image/vp8_convert_test
Yaowu Xu [Wed, 21 May 2014 16:52:23 +0000 (09:52 -0700)]
change to use assembly version of ssse3 filter code
As mismatchs were found between the intrinsic version and c only. The
commit temporarily revert to use the matching assembly version to
allow further investigation.
Alex Converse [Thu, 22 May 2014 23:17:59 +0000 (16:17 -0700)]
Use offset mode info when filling pc tree.
Use the appropriate subblock offset mode info rather than the parent
block base, when filling mbmi in the pc tree in nonrd_use_partition.
This mimics what is done in the vertical case and what is done for
both cases in nonrd_pick_partition.
This change has little practical effect at the moment since in speed 5
rt horizontal and vertical partitions are currently only used unpaired
at edges of the picture.