diff options
author | Yunqing Wang <yunqingwang@google.com> | 2011-03-09 12:26:37 -0800 |
---|---|---|
committer | Code Review <code-review@webmproject.org> | 2011-03-09 12:26:37 -0800 |
commit | a0306ea660b2a35d09645e6d3e98d786614a874d (patch) | |
tree | a9c5ff8b411dce18d3ea53bdb1a38914476b2a93 /vp8/encoder/x86/variance_ssse3.c | |
parent | c5a049babdf40530903797233cb7eeb8a25b6147 (diff) | |
parent | 7b8e7f0f3ae13ebf29200324b0c4d7fe64780a58 (diff) | |
download | libvpx-a0306ea660b2a35d09645e6d3e98d786614a874d.tar libvpx-a0306ea660b2a35d09645e6d3e98d786614a874d.tar.gz libvpx-a0306ea660b2a35d09645e6d3e98d786614a874d.tar.bz2 libvpx-a0306ea660b2a35d09645e6d3e98d786614a874d.zip |
Merge "Add vp8_sub_pixel_variance16x8_ssse3 function"
Diffstat (limited to 'vp8/encoder/x86/variance_ssse3.c')
-rw-r--r-- | vp8/encoder/x86/variance_ssse3.c | 53 |
1 files changed, 51 insertions, 2 deletions
diff --git a/vp8/encoder/x86/variance_ssse3.c b/vp8/encoder/x86/variance_ssse3.c index d50ae3ade..eb5d486bf 100644 --- a/vp8/encoder/x86/variance_ssse3.c +++ b/vp8/encoder/x86/variance_ssse3.c @@ -76,8 +76,8 @@ unsigned int vp8_sub_pixel_variance16x16_ssse3 unsigned int *sse ) { - int xsum0, xsum1; - unsigned int xxsum0, xxsum1; + int xsum0; + unsigned int xxsum0; // note we could avoid these if statements if the calling function // just called the appropriate functions inside. @@ -114,3 +114,52 @@ unsigned int vp8_sub_pixel_variance16x16_ssse3 *sse = xxsum0; return (xxsum0 - ((xsum0 * xsum0) >> 8)); } + +unsigned int vp8_sub_pixel_variance16x8_ssse3 +( + const unsigned char *src_ptr, + int src_pixels_per_line, + int xoffset, + int yoffset, + const unsigned char *dst_ptr, + int dst_pixels_per_line, + unsigned int *sse + +) +{ + int xsum0; + unsigned int xxsum0; + + if (xoffset == 4 && yoffset == 0) + { + vp8_half_horiz_variance16x_h_sse2( + src_ptr, src_pixels_per_line, + dst_ptr, dst_pixels_per_line, 8, + &xsum0, &xxsum0); + } + else if (xoffset == 0 && yoffset == 4) + { + vp8_half_vert_variance16x_h_sse2( + src_ptr, src_pixels_per_line, + dst_ptr, dst_pixels_per_line, 8, + &xsum0, &xxsum0); + } + else if (xoffset == 4 && yoffset == 4) + { + vp8_half_horiz_vert_variance16x_h_sse2( + src_ptr, src_pixels_per_line, + dst_ptr, dst_pixels_per_line, 8, + &xsum0, &xxsum0); + } + else + { + vp8_filter_block2d_bil_var_ssse3( + src_ptr, src_pixels_per_line, + dst_ptr, dst_pixels_per_line, 8, + xoffset, yoffset, + &xsum0, &xxsum0); + } + + *sse = xxsum0; + return (xxsum0 - ((xsum0 * xsum0) >> 7)); +} |