a28b2c6ff0
These were lost in the great sub pixel variance move of
6a82f0d7fb
Not having these functions caused a ~10% performance regression in
some realtime vp8 encodes.
Change-Id: I50658483d9198391806b27899f2c0d309233c4b5
75 lines
3.2 KiB
C
75 lines
3.2 KiB
C
/*
|
|
* Copyright (c) 2010 The WebM project authors. All Rights Reserved.
|
|
*
|
|
* Use of this source code is governed by a BSD-style license
|
|
* that can be found in the LICENSE file in the root of the source
|
|
* tree. An additional intellectual property rights grant can be found
|
|
* in the file PATENTS. All contributing project authors may
|
|
* be found in the AUTHORS file in the root of the source tree.
|
|
*/
|
|
|
|
#include "./vpx_config.h"
|
|
#include "./vpx_dsp_rtcd.h"
|
|
#include "vpx/vpx_integer.h"
|
|
|
|
void vpx_half_horiz_vert_variance16x_h_sse2(const unsigned char *ref,
|
|
int ref_stride,
|
|
const unsigned char *src,
|
|
int src_stride,
|
|
unsigned int height,
|
|
int *sum,
|
|
unsigned int *sumsquared);
|
|
void vpx_half_horiz_variance16x_h_sse2(const unsigned char *ref, int ref_stride,
|
|
const unsigned char *src, int src_stride,
|
|
unsigned int height, int *sum,
|
|
unsigned int *sumsquared);
|
|
void vpx_half_vert_variance16x_h_sse2(const unsigned char *ref, int ref_stride,
|
|
const unsigned char *src, int src_stride,
|
|
unsigned int height, int *sum,
|
|
unsigned int *sumsquared);
|
|
|
|
uint32_t vpx_variance_halfpixvar16x16_h_sse2(const unsigned char *src,
|
|
int src_stride,
|
|
const unsigned char *dst,
|
|
int dst_stride,
|
|
uint32_t *sse) {
|
|
int xsum0;
|
|
unsigned int xxsum0;
|
|
|
|
vpx_half_horiz_variance16x_h_sse2(src, src_stride, dst, dst_stride, 16,
|
|
&xsum0, &xxsum0);
|
|
|
|
*sse = xxsum0;
|
|
return (xxsum0 - (((uint32_t)xsum0 * xsum0) >> 8));
|
|
}
|
|
|
|
uint32_t vpx_variance_halfpixvar16x16_v_sse2(const unsigned char *src,
|
|
int src_stride,
|
|
const unsigned char *dst,
|
|
int dst_stride,
|
|
uint32_t *sse) {
|
|
int xsum0;
|
|
unsigned int xxsum0;
|
|
vpx_half_vert_variance16x_h_sse2(src, src_stride, dst, dst_stride, 16,
|
|
&xsum0, &xxsum0);
|
|
|
|
*sse = xxsum0;
|
|
return (xxsum0 - (((uint32_t)xsum0 * xsum0) >> 8));
|
|
}
|
|
|
|
|
|
uint32_t vpx_variance_halfpixvar16x16_hv_sse2(const unsigned char *src,
|
|
int src_stride,
|
|
const unsigned char *dst,
|
|
int dst_stride,
|
|
uint32_t *sse) {
|
|
int xsum0;
|
|
unsigned int xxsum0;
|
|
|
|
vpx_half_horiz_vert_variance16x_h_sse2(src, src_stride, dst, dst_stride, 16,
|
|
&xsum0, &xxsum0);
|
|
|
|
*sse = xxsum0;
|
|
return (xxsum0 - (((uint32_t)xsum0 * xsum0) >> 8));
|
|
}
|