Commit Graph

320 Commits

Author SHA1 Message Date
Dmitry Kovalev
c2ca97caaf Merge "Cleaning up motion compensation code." 2014-01-31 17:33:40 -08:00
hkuang
770454f3a8 Add vp9_tm_predictor_32x32 neon implementation
which is 7.8 times faster than C.

Change-Id: I858ef4ec09202a07d445da8db702783d6d9d7321
2014-01-27 16:01:07 -08:00
hkuang
92ab96a7ae Merge "Add vp9_tm_predictor_16x16 neon implementation which is 3.5 times faster than C." 2014-01-24 10:48:44 -08:00
hkuang
3633ffcbf7 Add vp9_tm_predictor_16x16 neon implementation
which is 3.5 times faster than C.

Change-Id: I24439ba7a2971829c11620f34848facf2c916678
2014-01-24 10:22:58 -08:00
Dmitry Kovalev
6c98df29e4 Cleaning up motion compensation code.
Change-Id: I74cf028e8c732cd0dbc070326152d3085b824a80
2014-01-23 17:15:30 -08:00
Dmitry Kovalev
5f75fda9e9 Merge "Cleaning up vp9_refining_search_sad() function." 2014-01-22 17:15:22 -08:00
hkuang
97826df96b Add tm_predictor_8x8 neon implementation.
Change-Id: I76c2720546b737cb63018a8ab6a3ff62a291786d
2014-01-22 13:43:20 -08:00
Dmitry Kovalev
d8bfe9e24c Cleaning up vp9_refining_search_sad() function.
Change-Id: I660b53da8ebf3049832ce8a10721051c4e0ebb00
2014-01-17 15:20:28 -08:00
Dmitry Kovalev
ac40c87f68 Removing unused vp9_yv12_copy_partial_frame() function.
Change-Id: I3149e562fe9500914f67b6f908283edcdc381ac6
2014-01-16 18:16:34 -08:00
hkuang
2a2d8c140f Merge "Add vp9_tm_predictor_4x4 neon implementation" 2014-01-16 10:18:12 -08:00
hkuang
f2ef389256 Add vp9_tm_predictor_4x4 neon implementation
Change-Id: I10c423bde7ea5a3bac9f14f35c73b6bc31c8f3e3
2014-01-15 11:51:36 -08:00
hkuang
5be0ed30dc Merge "Add initial intra frame neon optimization. 1~2% gain." 2014-01-08 14:41:43 -08:00
hkuang
691111aacf Add initial intra frame neon optimization. 1~2% gain.
More intra optimizations will be added.

Change-Id: I33ae8d93f6002bf7b64cc2669602d9e6bfa5a6e8
2014-01-08 11:58:42 -08:00
levytamar82
357b65369f AVX2 Variance Optimization
Optimizing the variance functions: vp9_variance16x16, vp9_variance32x32,
vp9_variance64x64, vp9_variance32x16, vp9_variance64x32,
vp9_mse16x16 by migrating to AVX2
some of the functions were optimized by processing 32 elements instead of 16.
some of the functions were optimized by processing 2 loop strides of 16
elements in a single 256 bit register
This optimization gives between 2.4% - 2.7% user level performance gain
and 42% function level gain.

Change-Id: I265ae08a2b0196057a224a86450153ef3aebd85d
2014-01-08 12:05:53 -07:00
Jim Bankoski
b720ba165f rename loop filter functions
This renames all the loop filter functions so that they no
longer refer to mb

Change-Id: I8a58a8c7fd253d835cb619bde13913e896ece90b
2013-12-17 17:34:34 -08:00
Dmitry Kovalev
25da21b14e Using MV struct instead of int_mv union in encoder.
Change-Id: I8b81a3e4b4fa530a654c28d9c136afa0c1d379fd
2013-12-13 15:24:48 -08:00
Jingning Han
b295092b8f Full range motion search for regular block sizes
Add a full range motion search for regular block sizes. This runs
exhaustive search within the given reference area. This commit further
optimizes the search process by combining 4 points test into one
pipeline, which gives 30% speed-up as compared to run each individual
point at a time.

This full range search serves as a best possible motion search reference.
When replacing the diamond search with full range search, the speed 0
runtime of bus CIF at 2000 kbps goes from 153872ms to 623051ms. The
compression performance compared to speed 0 setting gains 0.585% for
derf set.

Change-Id: Ieef1225216b0b86b4ac4872fa7fb9e18bf2eabb3
2013-12-06 12:24:53 -08:00
Yaowu Xu
e9c19617bf Merge "vp9_short_fdct32x32_rd vp9_short_fdct32x32 optimized for AVX2" 2013-11-27 10:27:32 -08:00
Yunqing Wang
ed36720b66 Do vertical loopfiltering in parallel
This patch followed "Add filter_selectively_vert_row2 to enable
parallel loopfiltering" commit, and added x86 SSE2 optimization
to do 16-pixel filtering in parallel. For other optimizations
(neon and dspr2), current 16-pixel functions were done by calling
8-pixel functions twice, and real 16-pixel functions could be added
later.

Decoder speedup:
tulip clip:     2% speed gain;
old_town_cross: 1.2% speed gain;
bus:            2% speed gain.

Change-Id: I4818a0c72f84b34f5fe678e496cf4a10238574b7
2013-11-22 10:04:51 -08:00
levytamar82
8def766de2 vp9_short_fdct32x32_rd vp9_short_fdct32x32 optimized for AVX2
Change-Id: I6366e84490883b72362f762369d7e5bccb64f02f
2013-11-21 14:19:49 -08:00
Yunqing Wang
e3168b0c54 Merge "Do horizontal loopfiltering in parallel" 2013-11-18 10:03:41 -08:00
Yunqing Wang
64f728caef Do horizontal loopfiltering in parallel
This patch followed "Rewrite filter_selectively_horiz for parallel
loopfiltering" commit, and added x86 SSE2 optimization to do
16-pixel filtering in parallel. Also, corrected the declaration
of aligned arrays. For 8-pixel-in-parallel case, improved the
calculation of the masks and filters. Updated the threshold loading
since the thresholds were already duplicated. Updated neon C functions
to call neon loopfilters twice.

Using tulip clip, tests showed it gave a ~1.5% decoder speed gain.

Change-Id: Id02638626ac27a4b0e0b09d71792a24c0499bd35
2013-11-15 16:18:43 -08:00
hkuang
7424492a0b Let the idct vp9_idct32x32_34_add = vp9_idct32x32_1024_add
on arm until we implenment real vp9_idct32x32_34_add_neon.

This issue is due to commit 47665452f0
Merge "Add 32x32 idct function for eob<=34 case".

Change-Id: I56b5f0abc20e7dd1bba521f78a995e85d65ea296
2013-11-15 14:59:16 -08:00
Johann
4da2a8b718 Merge "mips dsp-ase r2 vp9 decoder intra module optimizations (rebase)" 2013-11-13 09:00:09 -08:00
Parag Salasakar
1530a6b77f mips dsp-ase r2 vp9 decoder intra module optimizations (rebase)
Change-Id: Ib27fc4f3dbe01fe8adfa04a61aaba21b3480e75c
2013-11-13 11:17:14 +05:30
Parag Salasakar
248cf6f69f mips dsp-ase r2 vp9 decoder loopfilter module optimizations (rebase)
Change-Id: Ia7f640ca395e8deaac5986f19d11ab18d85eec2d
2013-11-13 10:53:16 +05:30
Johann
8dd3905163 Merge "Added optimized vp9_idct32x32_34_add_dspr2" 2013-11-12 15:30:00 -08:00
hkuang
a6462990e6 Merge "Add back vp9_short_idct32x32_1_add_neon which is deleted in cleanup I63df79a13cf62aa2c9360a7a26933c100f9ebda3." 2013-11-07 14:42:29 -08:00
Paul Wilkins
0c39318a8b Missing _ means no sse3 for vp9_h_predictor_32x32.
Error in script means vp9_h_predictor_32x32 sse3 version
is not enabled.

Change-Id: Ia43672740da1ecdfb7fcd420490ef424b04accc4
2013-11-06 13:57:55 +00:00
hkuang
6b16f63332 Add back vp9_short_idct32x32_1_add_neon which is deleted in
cleanup I63df79a13cf62aa2c9360a7a26933c100f9ebda3.

Change-Id: I034848cf05031618818f7df2e7f9c35102686948
2013-11-05 14:57:32 -08:00
Tamar Levy
54f9205653 mb_lpf_horizontal_edge AVX2 optimization
This CL contains two AVX2 optimized loop filter functions,
mb_lpf_horizontal_edge_w_avx2_8 and mb_lpf_horizontal_edge_w_avx2_16.

Change-Id: I604e4fe6e99752b7800c2ea98721d97f7e0b931b
2013-10-31 10:26:15 -06:00
Parag Salasakar
d5a52edc11 Added optimized vp9_idct32x32_34_add_dspr2
Change-Id: I2ba9467525b87a8e4a58f0c546e63031b4e38a4e
2013-10-31 12:12:34 +05:30
Dmitry Kovalev
1bea58e4a8 Merge "Adding const to vp9_quantize_b_{32x32,} parameters." 2013-10-29 16:57:52 -07:00
Dmitry Kovalev
065972f959 Adding const to vp9_quantize_b_{32x32,} parameters.
Change-Id: I56f8c50ac382202f66040cd9cfaa05d889572fc7
2013-10-29 15:25:19 -07:00
Erik Niemeyer
e6863ef318 CL for adding AVX-AVX2 support in libvpx.
Change-Id: Idc03f3fca4bf2d0afd33631ea1d3caf8fc34ec29
2013-10-29 15:11:16 -07:00
Dmitry Kovalev
ddfc87c6f3 Merge "Making input pointer constant for all fdct/fht functions." 2013-10-25 15:14:49 -07:00
Yunqing Wang
47665452f0 Merge "Add 32x32 idct function for eob<=34 case" 2013-10-25 09:34:46 -07:00
Yunqing Wang
f88315cb29 Add 32x32 idct function for eob<=34 case
When only upper-left 8x8 area has non-zero dct coefficients, we
could skip 1D IDCT for 9th to 32th rows to save operations. This
function is called when eob <= 34.

Change-Id: I9684b75947bdde346cfe3720f08a953aa7a13fb5
2013-10-24 16:13:21 -07:00
Johann
35c4437bf5 Merge "mips dsp-ase r2 vp9 decoder idct module optimizations (rebase)" 2013-10-24 15:49:31 -07:00
Dmitry Kovalev
600a3860a4 Making input pointer constant for all fdct/fht functions.
Change-Id: I78f7012f967a777ddd39bae6671eb501df6bbfe8
2013-10-24 11:48:25 -07:00
Parag Salasakar
1699eb0bf6 mips dsp-ase r2 vp9 decoder idct module optimizations (rebase)
Change-Id: Iedcdb8867084f328f4fce2fadb968e0984217308
2013-10-24 11:29:04 +05:30
Dmitry Kovalev
fd724f13b0 Renaming vp9_short_fdct4x4 and vp9_short_walsh4x4.
For consistency with idct function names. Renames:
  vp9_short_fdct4x4  -> vp9_fdct4x4
  vp9_short_walsh4x4 -> vp9_fwht4x4

Change-Id: Id15497cc1270acca626447d846f0ce9199770f58
2013-10-23 14:28:39 -07:00
Dmitry Kovalev
a018988ce8 Renaming vp9_short_fdct32x32 to vp9_fdct32x32.
For consistency with idct function names.

Change-Id: Ie77b7178e0894c57cd5cb9243c949eb9224ece18
2013-10-23 13:41:40 -07:00
Dmitry Kovalev
5bdd4d9ccf Merge "Renaming vp9_short_fdct16x16 to vp9_fdct16x16." 2013-10-23 13:37:09 -07:00
Dmitry Kovalev
02feb63684 Renaming vp9_short_fdct16x16 to vp9_fdct16x16.
For consistency with idct function names.

Change-Id: I5ca355ba99fdba04f09254be95cf79808b534f71
2013-10-23 10:57:12 -07:00
Dmitry Kovalev
fa143dbc8e Renaming vp9_short_fdct8x8 to vp9_fdct8x8.
For consistency with idct function names.

Change-Id: I7b6af2f92c66eff56f84ed29edc3a66af8dc421f
2013-10-23 10:52:33 -07:00
Dmitry Kovalev
9f09618bd4 Merge "Using stride (# of elements) instead of pitch (bytes) in fdct4x4." 2013-10-22 13:05:24 -07:00
Dmitry Kovalev
a767d10fa5 Merge "Using stride (# of elements) instead of pitch (bytes) in fdct8x8." 2013-10-22 11:34:17 -07:00
Dmitry Kovalev
190c2b4591 Using stride (# of elements) instead of pitch (bytes) in fdct4x4.
Just making fdct consistent with iht/idct/fht functions which all use
stride (# of elements) as input argument.

Change-Id: I0ba3c52513a5fdd194f1e7e2901092671398985b
2013-10-21 15:27:35 -07:00
Yunqing Wang
dd51042802 Fix d207 intra prediction SSSE3 functions
This patch fixed a bug that caused 32bit PIC build mismatch. The
stack pointer was modified after "GET_GOT". Loading left pointer
from a hard-coded position gave wrong result.

Change-Id: Iea0aec6f917b12a6b3393ffc986bad74510248cc
2013-10-18 17:00:18 -07:00