diff options
Diffstat (limited to 'vp8/encoder/sad_c.c')
-rw-r--r-- | vp8/encoder/sad_c.c | 155 |
1 files changed, 123 insertions, 32 deletions
diff --git a/vp8/encoder/sad_c.c b/vp8/encoder/sad_c.c index 74c6bd76a..5eaca5935 100644 --- a/vp8/encoder/sad_c.c +++ b/vp8/encoder/sad_c.c @@ -1,19 +1,20 @@ /* - * Copyright (c) 2010 The VP8 project authors. All Rights Reserved. + * Copyright (c) 2010 The WebM project authors. All Rights Reserved. * - * Use of this source code is governed by a BSD-style license and patent - * grant that can be found in the LICENSE file in the root of the source - * tree. All contributing project authors may be found in the AUTHORS - * file in the root of the source tree. + * 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 <stdlib.h> unsigned int vp8_sad16x16_c( - unsigned char *src_ptr, + const unsigned char *src_ptr, int src_stride, - unsigned char *ref_ptr, + const unsigned char *ref_ptr, int ref_stride, int max_sad) { @@ -38,9 +39,9 @@ unsigned int vp8_sad16x16_c( static __inline unsigned int sad_mx_n_c( - unsigned char *src_ptr, + const unsigned char *src_ptr, int src_stride, - unsigned char *ref_ptr, + const unsigned char *ref_ptr, int ref_stride, int m, int n) @@ -65,9 +66,9 @@ unsigned int sad_mx_n_c( unsigned int vp8_sad8x8_c( - unsigned char *src_ptr, + const unsigned char *src_ptr, int src_stride, - unsigned char *ref_ptr, + const unsigned char *ref_ptr, int ref_stride, int max_sad) { @@ -77,9 +78,9 @@ unsigned int vp8_sad8x8_c( unsigned int vp8_sad16x8_c( - unsigned char *src_ptr, + const unsigned char *src_ptr, int src_stride, - unsigned char *ref_ptr, + const unsigned char *ref_ptr, int ref_stride, int max_sad) { @@ -90,9 +91,9 @@ unsigned int vp8_sad16x8_c( unsigned int vp8_sad8x16_c( - unsigned char *src_ptr, + const unsigned char *src_ptr, int src_stride, - unsigned char *ref_ptr, + const unsigned char *ref_ptr, int ref_stride, int max_sad) { @@ -102,9 +103,9 @@ unsigned int vp8_sad8x16_c( unsigned int vp8_sad4x4_c( - unsigned char *src_ptr, + const unsigned char *src_ptr, int src_stride, - unsigned char *ref_ptr, + const unsigned char *ref_ptr, int ref_stride, int max_sad) { @@ -113,9 +114,9 @@ unsigned int vp8_sad4x4_c( } void vp8_sad16x16x3_c( - unsigned char *src_ptr, + const unsigned char *src_ptr, int src_stride, - unsigned char *ref_ptr, + const unsigned char *ref_ptr, int ref_stride, unsigned int *sad_array ) @@ -125,10 +126,28 @@ void vp8_sad16x16x3_c( sad_array[2] = vp8_sad16x16_c(src_ptr, src_stride, ref_ptr + 2, ref_stride, 0x7fffffff); } +void vp8_sad16x16x8_c( + const unsigned char *src_ptr, + int src_stride, + const unsigned char *ref_ptr, + int ref_stride, + unsigned short *sad_array +) +{ + sad_array[0] = (unsigned short)vp8_sad16x16_c(src_ptr, src_stride, ref_ptr , ref_stride, 0x7fffffff); + sad_array[1] = (unsigned short)vp8_sad16x16_c(src_ptr, src_stride, ref_ptr + 1, ref_stride, 0x7fffffff); + sad_array[2] = (unsigned short)vp8_sad16x16_c(src_ptr, src_stride, ref_ptr + 2, ref_stride, 0x7fffffff); + sad_array[3] = (unsigned short)vp8_sad16x16_c(src_ptr, src_stride, ref_ptr + 3 , ref_stride, 0x7fffffff); + sad_array[4] = (unsigned short)vp8_sad16x16_c(src_ptr, src_stride, ref_ptr + 4, ref_stride, 0x7fffffff); + sad_array[5] = (unsigned short)vp8_sad16x16_c(src_ptr, src_stride, ref_ptr + 5, ref_stride, 0x7fffffff); + sad_array[6] = (unsigned short)vp8_sad16x16_c(src_ptr, src_stride, ref_ptr + 6 , ref_stride, 0x7fffffff); + sad_array[7] = (unsigned short)vp8_sad16x16_c(src_ptr, src_stride, ref_ptr + 7, ref_stride, 0x7fffffff); +} + void vp8_sad16x8x3_c( - unsigned char *src_ptr, + const unsigned char *src_ptr, int src_stride, - unsigned char *ref_ptr, + const unsigned char *ref_ptr, int ref_stride, unsigned int *sad_array ) @@ -138,10 +157,28 @@ void vp8_sad16x8x3_c( sad_array[2] = vp8_sad16x8_c(src_ptr, src_stride, ref_ptr + 2, ref_stride, 0x7fffffff); } +void vp8_sad16x8x8_c( + const unsigned char *src_ptr, + int src_stride, + const unsigned char *ref_ptr, + int ref_stride, + unsigned short *sad_array +) +{ + sad_array[0] = (unsigned short)vp8_sad16x8_c(src_ptr, src_stride, ref_ptr , ref_stride, 0x7fffffff); + sad_array[1] = (unsigned short)vp8_sad16x8_c(src_ptr, src_stride, ref_ptr + 1, ref_stride, 0x7fffffff); + sad_array[2] = (unsigned short)vp8_sad16x8_c(src_ptr, src_stride, ref_ptr + 2, ref_stride, 0x7fffffff); + sad_array[3] = (unsigned short)vp8_sad16x8_c(src_ptr, src_stride, ref_ptr + 3 , ref_stride, 0x7fffffff); + sad_array[4] = (unsigned short)vp8_sad16x8_c(src_ptr, src_stride, ref_ptr + 4, ref_stride, 0x7fffffff); + sad_array[5] = (unsigned short)vp8_sad16x8_c(src_ptr, src_stride, ref_ptr + 5, ref_stride, 0x7fffffff); + sad_array[6] = (unsigned short)vp8_sad16x8_c(src_ptr, src_stride, ref_ptr + 6 , ref_stride, 0x7fffffff); + sad_array[7] = (unsigned short)vp8_sad16x8_c(src_ptr, src_stride, ref_ptr + 7, ref_stride, 0x7fffffff); +} + void vp8_sad8x8x3_c( - unsigned char *src_ptr, + const unsigned char *src_ptr, int src_stride, - unsigned char *ref_ptr, + const unsigned char *ref_ptr, int ref_stride, unsigned int *sad_array ) @@ -151,10 +188,28 @@ void vp8_sad8x8x3_c( sad_array[2] = vp8_sad8x8_c(src_ptr, src_stride, ref_ptr + 2, ref_stride, 0x7fffffff); } +void vp8_sad8x8x8_c( + const unsigned char *src_ptr, + int src_stride, + const unsigned char *ref_ptr, + int ref_stride, + unsigned short *sad_array +) +{ + sad_array[0] = (unsigned short)vp8_sad8x8_c(src_ptr, src_stride, ref_ptr , ref_stride, 0x7fffffff); + sad_array[1] = (unsigned short)vp8_sad8x8_c(src_ptr, src_stride, ref_ptr + 1, ref_stride, 0x7fffffff); + sad_array[2] = (unsigned short)vp8_sad8x8_c(src_ptr, src_stride, ref_ptr + 2, ref_stride, 0x7fffffff); + sad_array[3] = (unsigned short)vp8_sad8x8_c(src_ptr, src_stride, ref_ptr + 3 , ref_stride, 0x7fffffff); + sad_array[4] = (unsigned short)vp8_sad8x8_c(src_ptr, src_stride, ref_ptr + 4, ref_stride, 0x7fffffff); + sad_array[5] = (unsigned short)vp8_sad8x8_c(src_ptr, src_stride, ref_ptr + 5, ref_stride, 0x7fffffff); + sad_array[6] = (unsigned short)vp8_sad8x8_c(src_ptr, src_stride, ref_ptr + 6 , ref_stride, 0x7fffffff); + sad_array[7] = (unsigned short)vp8_sad8x8_c(src_ptr, src_stride, ref_ptr + 7, ref_stride, 0x7fffffff); +} + void vp8_sad8x16x3_c( - unsigned char *src_ptr, + const unsigned char *src_ptr, int src_stride, - unsigned char *ref_ptr, + const unsigned char *ref_ptr, int ref_stride, unsigned int *sad_array ) @@ -164,10 +219,28 @@ void vp8_sad8x16x3_c( sad_array[2] = vp8_sad8x16_c(src_ptr, src_stride, ref_ptr + 2, ref_stride, 0x7fffffff); } +void vp8_sad8x16x8_c( + const unsigned char *src_ptr, + int src_stride, + const unsigned char *ref_ptr, + int ref_stride, + unsigned short *sad_array +) +{ + sad_array[0] = (unsigned short)vp8_sad8x16_c(src_ptr, src_stride, ref_ptr , ref_stride, 0x7fffffff); + sad_array[1] = (unsigned short)vp8_sad8x16_c(src_ptr, src_stride, ref_ptr + 1, ref_stride, 0x7fffffff); + sad_array[2] = (unsigned short)vp8_sad8x16_c(src_ptr, src_stride, ref_ptr + 2, ref_stride, 0x7fffffff); + sad_array[3] = (unsigned short)vp8_sad8x16_c(src_ptr, src_stride, ref_ptr + 3 , ref_stride, 0x7fffffff); + sad_array[4] = (unsigned short)vp8_sad8x16_c(src_ptr, src_stride, ref_ptr + 4, ref_stride, 0x7fffffff); + sad_array[5] = (unsigned short)vp8_sad8x16_c(src_ptr, src_stride, ref_ptr + 5, ref_stride, 0x7fffffff); + sad_array[6] = (unsigned short)vp8_sad8x16_c(src_ptr, src_stride, ref_ptr + 6 , ref_stride, 0x7fffffff); + sad_array[7] = (unsigned short)vp8_sad8x16_c(src_ptr, src_stride, ref_ptr + 7, ref_stride, 0x7fffffff); +} + void vp8_sad4x4x3_c( - unsigned char *src_ptr, + const unsigned char *src_ptr, int src_stride, - unsigned char *ref_ptr, + const unsigned char *ref_ptr, int ref_stride, unsigned int *sad_array ) @@ -177,8 +250,26 @@ void vp8_sad4x4x3_c( sad_array[2] = vp8_sad4x4_c(src_ptr, src_stride, ref_ptr + 2, ref_stride, 0x7fffffff); } +void vp8_sad4x4x8_c( + const unsigned char *src_ptr, + int src_stride, + const unsigned char *ref_ptr, + int ref_stride, + unsigned short *sad_array +) +{ + sad_array[0] = (unsigned short)vp8_sad4x4_c(src_ptr, src_stride, ref_ptr , ref_stride, 0x7fffffff); + sad_array[1] = (unsigned short)vp8_sad4x4_c(src_ptr, src_stride, ref_ptr + 1, ref_stride, 0x7fffffff); + sad_array[2] = (unsigned short)vp8_sad4x4_c(src_ptr, src_stride, ref_ptr + 2, ref_stride, 0x7fffffff); + sad_array[3] = (unsigned short)vp8_sad4x4_c(src_ptr, src_stride, ref_ptr + 3 , ref_stride, 0x7fffffff); + sad_array[4] = (unsigned short)vp8_sad4x4_c(src_ptr, src_stride, ref_ptr + 4, ref_stride, 0x7fffffff); + sad_array[5] = (unsigned short)vp8_sad4x4_c(src_ptr, src_stride, ref_ptr + 5, ref_stride, 0x7fffffff); + sad_array[6] = (unsigned short)vp8_sad4x4_c(src_ptr, src_stride, ref_ptr + 6 , ref_stride, 0x7fffffff); + sad_array[7] = (unsigned short)vp8_sad4x4_c(src_ptr, src_stride, ref_ptr + 7, ref_stride, 0x7fffffff); +} + void vp8_sad16x16x4d_c( - unsigned char *src_ptr, + const unsigned char *src_ptr, int src_stride, unsigned char *ref_ptr[], int ref_stride, @@ -192,7 +283,7 @@ void vp8_sad16x16x4d_c( } void vp8_sad16x8x4d_c( - unsigned char *src_ptr, + const unsigned char *src_ptr, int src_stride, unsigned char *ref_ptr[], int ref_stride, @@ -206,7 +297,7 @@ void vp8_sad16x8x4d_c( } void vp8_sad8x8x4d_c( - unsigned char *src_ptr, + const unsigned char *src_ptr, int src_stride, unsigned char *ref_ptr[], int ref_stride, @@ -220,7 +311,7 @@ void vp8_sad8x8x4d_c( } void vp8_sad8x16x4d_c( - unsigned char *src_ptr, + const unsigned char *src_ptr, int src_stride, unsigned char *ref_ptr[], int ref_stride, @@ -234,7 +325,7 @@ void vp8_sad8x16x4d_c( } void vp8_sad4x4x4d_c( - unsigned char *src_ptr, + const unsigned char *src_ptr, int src_stride, unsigned char *ref_ptr[], int ref_stride, |