Commit Graph

154 Commits

Author SHA1 Message Date
Jingning Han
e083f6bd08 Refactor sub-pixel motion search unit
This commit unfolds the legacy macro definitions used in the
sub-pixel motion search and refactors the operational flow for
later optimizations.

Change-Id: I3e3f770cad961d03d1a6eb0b2a0186cc77eaf2b8
2014-11-03 09:02:57 -08:00
Deb Mukherjee
9a29fdbae7 Merge "Rename highbitdepth functions to use highbd prefix" 2014-10-09 15:39:56 -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
Deb Mukherjee
d78dbff09a Subpel search cleanups and enhancements
- Some fixes to surface fit.
- Returns variance function as cost rather than sad in the
  pattern search and diamond search functions. Only
  vp9_pattern_search_sad function used in bigdia search
  uses sad as integer 1-away costs.
- Deploys SUBPEL_TREE_PRUNED_MORE for speed 4+.

Results:
derf [Speed 3]: About +0.036% in coding efficiency without any
discernible speed loss.
derf [Speed 4]: About 2-3% faster at -0.199% loss in coding efficiency.
derf [Speed 5]: About 3-4% faster at -0.149% loss in coding efficiency.

Change-Id: I8462f94f6adb46966ca964f2bd0400977357fd63
2014-10-08 23:59:43 -07:00
Deb Mukherjee
4e9c0d2ad4 Adds two new subpel search methods
One is a more aggressive version of the pruned subpel tree
search where only a single halfpel candidate is searched.
The search candidate is based on a surface fit result.
The other is a method to obtain the subpel position at one
shot based on the same surface fit.

The methods have not been deployed in any speed setting yet.

Change-Id: I34fef3f2e34f11396c9d1ba97f4be8c4ffca62d3
2014-09-29 12:51:20 -07:00
Deb Mukherjee
993d10a217 Adds various high bit-depth encode functions
Change-Id: I6f67b171022bbc8199c6d674190b57f6bab1b62f
2014-09-25 01:50:36 -07:00
Deb Mukherjee
c94b17f4b2 Pruned subpel search for speed 3.
Adds code to return an integer cost list for NSTEP search. Then
uses it for pruned subpel search in speed 3.

derf: -0.06%
Speed on mobcal 720p increaes from 10.28 fps to 10.65 fps.
[Subject to further testing].

Change-Id: Ib591382d25b2c11bcaba9d3a27a93a9d1ab27a96
2014-09-23 11:27:58 -07:00
Deb Mukherjee
83c76118eb Use bigdia search with pruned subpel search
Improves function to return sad of integer pels by reusing integer
pels already visited in the smallest scale.
Turns on BIGDIA search for speed 4. Also, turns on the
first version of the pruned subpel search at this speed.

derf: -0.32% (speed 4)

Speed seems to improve by at least 5% but subject to verification.

Change-Id: Iaec8eaffd61d6237ac029e6a2a1b0a88b2a35271
2014-09-12 10:25:12 -07:00
Deb Mukherjee
04b100b23e Updates vp9_pattern search to return integer sads
Updates the vp9_pattern_search function to return integer one-away
neighbors' sad values, for subsequent use in speeding up the
sub-pel search. Also, removes code for the do_refine option
which is not being used currently.
Updates the integer and subpel functions to pass in a 5-element
sad list for output or input.

A new pruned sub-pel search algorithm is implemented that uses
the sad returned from the integer pel search. But it is not
deployed yet.

Change-Id: Ifa9f5ad024b5b660570366d2bd900343e1891520
2014-08-28 06:49:58 -07:00
Yaowu Xu
6673d2f309 Remove an unused parameter in vp9_init_search_range()
Change-Id: I3d9130e726a1299fd258f6dfe93315e2d12f76da
2014-07-11 10:32:39 -07:00
Yunqing Wang
75cd57503d 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().

Change-Id: I4b95d6b7a3c6c645783c373f0ba8d645ece24717
2014-07-10 09:19:03 -07:00
Yunqing Wang
30117a576d Refactor refining_search_sad code
There are sse2 optimization of sdx4df functions. Instead of calling
vp9_refining_search_sadx4 only when sse3 is enabled, call it always.

Change-Id: I24f93818f7d4209d1425039e0eb099ff9ff08fe9
2014-07-09 16:50:11 -07:00
Yunqing Wang
a581da218e Remove repetitive code in mcomp.c
Deleted vp9_find_best_sub_pixel_comp_tree(), and combined it in
vp9_find_best_sub_pixel_tree().

Change-Id: Ifb25763c8b19822df5537cc1daa76ce88dc3b056
2014-07-09 14:50:50 -07:00
Alex Converse
f60a1178c6 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.

Change-Id: Iae46395dbf3eaca138bf4d18b838a9e364b5a198
2014-07-07 10:08:45 -07:00
Dmitry Kovalev
4ff1a614f1 Adding MV_SPEED_FEATURES struct.
Moving all motion vector related speed parameters from SPEED_FEATURES to
MV_SPEED_FEATURES.

Change-Id: I3e9af0039c7162f8671878c5920bce3cb256a84e
2014-06-12 14:15:27 -07:00
Dmitry Kovalev
442cbf565d Moving full_pixel_search() to vp9_mcomp.c.
Change-Id: I12389f801ebd3bd2ae3bf31e125433bfb429ee65
2014-06-12 13:06:37 -07:00
Deb Mukherjee
fc88292ef2 Remove Wextra warnings from vp9_sad.c
As a side-effect, the sad unit tests for VP8 and VP9
had to be separated.

Fixes a bug in original patch:
(https://gerrit.chromium.org/gerrit/#/c/70163/8)
that was reverted due to a nightly test failure.

Change-Id: Ia2a4e9e278fd3c89d6c3c82fcc6381320ec2a8a6
2014-06-02 13:50:20 -07:00
Frank Galligan
0b44988952 Revert "Remove Wextra warnings from vp9_sad.c"
This reverts commit 916550428d

Change-Id: I500822b03f09c64ff6ec5396c68edee9ca3b75cb
2014-06-01 16:20:26 -07:00
Deb Mukherjee
916550428d Remove Wextra warnings from vp9_sad.c
As a side-effect, the sad unit tests for VP8 and VP9
had to be separated.

Change-Id: I068cc2391eed51e9b140ea6aba78338c5fec8d71
2014-05-22 22:21:16 -07:00
Jim Bankoski
ec82d2dfec Merge "Revert "Remove Wextra warnings from vp9_sad.c"" 2014-05-15 11:54:23 -07:00
Jim Bankoski
a16794dd31 Revert "Remove Wextra warnings from vp9_sad.c"
This reverts commit 7ab9a9587b

Nightly test http://build.webmproject.org/jenkins/view/libvpx-nightly-tests/job/libvpx%20unit%20tests%20(valgrind-2)/arch=x86_64-linux-gcc,filter=-*VP8*:*Large.*/276/console

Failed 

This patch did not address all the assembly issues 
some of the vp8 assembly counts on 5 arguments being passed in to this function:   

one example : vp8_sad8x16_wmt

Please address or split this into vp9 and vp8 patches.

Change-Id: I78afcc171649894f887bb8ee3c66de24aaddc7ca
2014-05-15 08:31:20 -07:00
Paul Wilkins
8deb0e182b Merge "Silence unused parameter warnings." 2014-05-15 02:39:22 -07:00
Deb Mukherjee
9687c057f8 Merge "Remove Wextra warnings from vp9_sad.c" 2014-05-14 10:01:50 -07:00
Paul Wilkins
82cf10702d Silence unused parameter warnings.
The various motion search functions share a
common function prototype. In the case of
vp9_full_range_search() two of the parameters
are not needed.

Change-Id: I0e190af54a3b3f276409f20e8ec55912f9b0b798
2014-05-14 16:47:32 +01:00
Paul Wilkins
200f9aed4f Silence unused parameter warnings.
Remove two unused parameters in the function
vp9_refining_search_8p_c().

Change-Id: Ic192734586291cf5400926eeb8e720e69d40835c
2014-05-14 14:06:16 +01:00
Deb Mukherjee
7ab9a9587b Remove Wextra warnings from vp9_sad.c
As a side-effect, the max_sad check is removed from the
C-implementation of VP8, for consistency with VP9, and to
ensure that the SAD tests common to VP8/VP9 pass.
That will make the VP8 C implementation of sad a little slower
but given that is rarely used in practice, the impact will be
minimal.

Change-Id: I7f43089fdea047fbf1862e40c21e4715c30f07ca
2014-05-14 03:17:31 -07:00
Dmitry Kovalev
e91616a5d4 Merge "Using SPEED_FEATURES instead of VP9_COMP in vp9_init_search_range()." 2014-05-07 14:07:33 -07:00
Dmitry Kovalev
7d9d5df263 Using SPEED_FEATURES instead of VP9_COMP in vp9_init_search_range().
Change-Id: I961d50d6fafdd37ef7f23f0a871d28e28d2084ca
2014-05-01 16:36:51 -07:00
Dmitry Kovalev
c9dfa3f72e Cleaning up vp9_full_range_search_c() function.
Change-Id: Ifc9114aeacd493cfa04d4cb3d071bf1de80e0568
2014-04-30 15:40:24 -07:00
Dmitry Kovalev
d2bc8816a1 Merge "Adding search_site_config struct." 2014-04-29 16:59:47 -07:00
Dmitry Kovalev
aa464eca5e Adding search_site_config struct.
Change-Id: I2ad333553e673dbabcdc0f0366aea311e90849bf
2014-04-29 10:34:53 -07:00
Dmitry Kovalev
b87130093e Cleaning up vp9_full_search_sadx8() function.
Change-Id: I61f977a7d0b177881bd5c1a7179fa5f8f089e9a6
2014-04-25 14:55:02 -07:00
Dmitry Kovalev
fae988dc3b Merge "Cleaning up vp9_full_search_sadx3()." 2014-04-25 13:52:20 -07:00
Dmitry Kovalev
ef003078e8 Renaming "onyx" to "encoder".
Actual renames:
  vp9_onyx_if.c -> vp9_encoder.c
  vp9_onyx_int.h -> vp9_encoder.h

Change-Id: I80532a80b118d0060518e6c6a0d640e3f411783c
2014-04-22 14:57:05 -07:00
Dmitry Kovalev
6733ad19e1 Cleaning up vp9_full_search_sadx3().
Change-Id: Ia63fee65c827fd33080119184e6cf3167421807c
2014-04-14 11:13:33 -07:00
Dmitry Kovalev
58c40986e0 Removing redundant mvsadcost local variables.
Change-Id: I19a197b9525172579f253702c77fa76af88f6565
2014-04-11 14:10:37 -07:00
Dmitry Kovalev
145b24719a Merge "Removing offset argument of mvcomp macros." 2014-04-11 14:09:17 -07:00
Dmitry Kovalev
63fa722179 Removing unused cost arguments from mcomp functions.
Change-Id: Id81a76d18be6b2de69f81bb563d74c3bb356d434
2014-04-11 10:24:36 -07:00
Dmitry Kovalev
d3127382fd Removing offset argument of mvcomp macros.
Change-Id: I8bb72b790a0783720833f27b7cf41055bee6becd
2014-04-10 16:07:41 -07:00
Dmitry Kovalev
c8167f5ba7 Fixing invalid ref buffer in vp9_diamond_search_sad_c().
Problem has been introduced recently with the cleanup patch
I0816ec12ec0a6f21d0f25f10c214b5fd327afc6c

Change-Id: Iaacb956a6039eb5826b82618dc03be32053fb892
2014-04-10 15:16:48 -07:00
Dmitry Kovalev
9243edc737 Cleaning up vp9_diamond_search_sad_c() function.
Change-Id: I0816ec12ec0a6f21d0f25f10c214b5fd327afc6c
2014-04-07 16:28:35 -07:00
Dmitry Kovalev
1ea18dc258 Cleaning up vp9_refining_search_sadx4() function.
Change-Id: I47a7148bf746f61d0c4947f9b22624a8c071359f
2014-04-02 18:59:21 -07:00
Dmitry Kovalev
5c185a0587 Merge "Cleaning up vp9_pattern_search() function." 2014-04-02 18:28:47 -07:00
Dmitry Kovalev
224d986858 Cleaning up vp9_get_mvpred_{av_,}var() functions.
Change-Id: I0df8c2a6d9863f92ee406010f2daeb5e40627649
2014-03-26 15:40:41 -07:00
Dmitry Kovalev
0038bbec32 Cleaning up vp9_pattern_search() function.
Change-Id: I8da5e13b23a3d6b73c82bbe443c82dd87fd689f3
2014-03-25 17:41:19 -07:00
Dmitry Kovalev
ac49c8ca13 Merge "Adding get_buf_from_mv() function." 2014-03-24 15:52:09 -07:00
Jim Bankoski
1a8a37ceda vp9_variance.h header static version converted to global
Change-Id: I8d02cdb5e7fef02b8c95413dfd239fa51a8c7777
2014-03-24 09:55:58 -07:00
Dmitry Kovalev
6e9ca1ecef Adding get_buf_from_mv() function.
Change-Id: I21aff45546778b8393e2edf2d810448dec1f4cdb
2014-03-21 15:57:31 -07:00
Dmitry Kovalev
cac2cf886c Cleaning up vp9_mcomp.c.
Change-Id: I24a3f0f215d04fb8888c303642dd5663cc593317
2014-03-17 11:41:20 -07:00
Dmitry Kovalev
65dc919103 Merge "Cleaning up vp9_diamond_search_sad_c & vp9_diamond_search_sadx4." 2014-03-17 11:23:49 -07:00