1.1 --- /dev/null Thu Jan 01 00:00:00 1970 +0000 1.2 +++ b/media/libvpx/vp9/encoder/vp9_sad_c.c Wed Dec 31 06:09:35 2014 +0100 1.3 @@ -0,0 +1,615 @@ 1.4 +/* 1.5 + * Copyright (c) 2010 The WebM project authors. All Rights Reserved. 1.6 + * 1.7 + * Use of this source code is governed by a BSD-style license 1.8 + * that can be found in the LICENSE file in the root of the source 1.9 + * tree. An additional intellectual property rights grant can be found 1.10 + * in the file PATENTS. All contributing project authors may 1.11 + * be found in the AUTHORS file in the root of the source tree. 1.12 + */ 1.13 + 1.14 + 1.15 +#include <stdlib.h> 1.16 +#include "vp9/common/vp9_sadmxn.h" 1.17 +#include "vp9/encoder/vp9_variance.h" 1.18 +#include "./vpx_config.h" 1.19 +#include "vpx/vpx_integer.h" 1.20 +#include "./vp9_rtcd.h" 1.21 + 1.22 +#define sad_mxn_func(m, n) \ 1.23 +unsigned int vp9_sad##m##x##n##_c(const uint8_t *src_ptr, \ 1.24 + int src_stride, \ 1.25 + const uint8_t *ref_ptr, \ 1.26 + int ref_stride, \ 1.27 + unsigned int max_sad) { \ 1.28 + return sad_mx_n_c(src_ptr, src_stride, ref_ptr, ref_stride, m, n); \ 1.29 +} \ 1.30 +unsigned int vp9_sad##m##x##n##_avg_c(const uint8_t *src_ptr, \ 1.31 + int src_stride, \ 1.32 + const uint8_t *ref_ptr, \ 1.33 + int ref_stride, \ 1.34 + const uint8_t *second_pred, \ 1.35 + unsigned int max_sad) { \ 1.36 + uint8_t comp_pred[m * n]; \ 1.37 + comp_avg_pred(comp_pred, second_pred, m, n, ref_ptr, ref_stride); \ 1.38 + return sad_mx_n_c(src_ptr, src_stride, comp_pred, m, m, n); \ 1.39 +} 1.40 + 1.41 +sad_mxn_func(64, 64) 1.42 +sad_mxn_func(64, 32) 1.43 +sad_mxn_func(32, 64) 1.44 +sad_mxn_func(32, 32) 1.45 +sad_mxn_func(32, 16) 1.46 +sad_mxn_func(16, 32) 1.47 +sad_mxn_func(16, 16) 1.48 +sad_mxn_func(16, 8) 1.49 +sad_mxn_func(8, 16) 1.50 +sad_mxn_func(8, 8) 1.51 +sad_mxn_func(8, 4) 1.52 +sad_mxn_func(4, 8) 1.53 +sad_mxn_func(4, 4) 1.54 + 1.55 +void vp9_sad64x32x4d_c(const uint8_t *src_ptr, 1.56 + int src_stride, 1.57 + const uint8_t* const ref_ptr[], 1.58 + int ref_stride, 1.59 + unsigned int *sad_array) { 1.60 + sad_array[0] = vp9_sad64x32(src_ptr, src_stride, 1.61 + ref_ptr[0], ref_stride, 0x7fffffff); 1.62 + sad_array[1] = vp9_sad64x32(src_ptr, src_stride, 1.63 + ref_ptr[1], ref_stride, 0x7fffffff); 1.64 + sad_array[2] = vp9_sad64x32(src_ptr, src_stride, 1.65 + ref_ptr[2], ref_stride, 0x7fffffff); 1.66 + sad_array[3] = vp9_sad64x32(src_ptr, src_stride, 1.67 + ref_ptr[3], ref_stride, 0x7fffffff); 1.68 +} 1.69 + 1.70 +void vp9_sad32x64x4d_c(const uint8_t *src_ptr, 1.71 + int src_stride, 1.72 + const uint8_t* const ref_ptr[], 1.73 + int ref_stride, 1.74 + unsigned int *sad_array) { 1.75 + sad_array[0] = vp9_sad32x64(src_ptr, src_stride, 1.76 + ref_ptr[0], ref_stride, 0x7fffffff); 1.77 + sad_array[1] = vp9_sad32x64(src_ptr, src_stride, 1.78 + ref_ptr[1], ref_stride, 0x7fffffff); 1.79 + sad_array[2] = vp9_sad32x64(src_ptr, src_stride, 1.80 + ref_ptr[2], ref_stride, 0x7fffffff); 1.81 + sad_array[3] = vp9_sad32x64(src_ptr, src_stride, 1.82 + ref_ptr[3], ref_stride, 0x7fffffff); 1.83 +} 1.84 + 1.85 +void vp9_sad32x16x4d_c(const uint8_t *src_ptr, 1.86 + int src_stride, 1.87 + const uint8_t* const ref_ptr[], 1.88 + int ref_stride, 1.89 + unsigned int *sad_array) { 1.90 + sad_array[0] = vp9_sad32x16(src_ptr, src_stride, 1.91 + ref_ptr[0], ref_stride, 0x7fffffff); 1.92 + sad_array[1] = vp9_sad32x16(src_ptr, src_stride, 1.93 + ref_ptr[1], ref_stride, 0x7fffffff); 1.94 + sad_array[2] = vp9_sad32x16(src_ptr, src_stride, 1.95 + ref_ptr[2], ref_stride, 0x7fffffff); 1.96 + sad_array[3] = vp9_sad32x16(src_ptr, src_stride, 1.97 + ref_ptr[3], ref_stride, 0x7fffffff); 1.98 +} 1.99 + 1.100 +void vp9_sad16x32x4d_c(const uint8_t *src_ptr, 1.101 + int src_stride, 1.102 + const uint8_t* const ref_ptr[], 1.103 + int ref_stride, 1.104 + unsigned int *sad_array) { 1.105 + sad_array[0] = vp9_sad16x32(src_ptr, src_stride, 1.106 + ref_ptr[0], ref_stride, 0x7fffffff); 1.107 + sad_array[1] = vp9_sad16x32(src_ptr, src_stride, 1.108 + ref_ptr[1], ref_stride, 0x7fffffff); 1.109 + sad_array[2] = vp9_sad16x32(src_ptr, src_stride, 1.110 + ref_ptr[2], ref_stride, 0x7fffffff); 1.111 + sad_array[3] = vp9_sad16x32(src_ptr, src_stride, 1.112 + ref_ptr[3], ref_stride, 0x7fffffff); 1.113 +} 1.114 + 1.115 +void vp9_sad64x64x3_c(const uint8_t *src_ptr, 1.116 + int src_stride, 1.117 + const uint8_t *ref_ptr, 1.118 + int ref_stride, 1.119 + unsigned int *sad_array) { 1.120 + sad_array[0] = vp9_sad64x64(src_ptr, src_stride, ref_ptr, ref_stride, 1.121 + 0x7fffffff); 1.122 + sad_array[1] = vp9_sad64x64(src_ptr, src_stride, ref_ptr + 1, ref_stride, 1.123 + 0x7fffffff); 1.124 + sad_array[2] = vp9_sad64x64(src_ptr, src_stride, ref_ptr + 2, ref_stride, 1.125 + 0x7fffffff); 1.126 +} 1.127 + 1.128 +void vp9_sad32x32x3_c(const uint8_t *src_ptr, 1.129 + int src_stride, 1.130 + const uint8_t *ref_ptr, 1.131 + int ref_stride, 1.132 + unsigned int *sad_array) { 1.133 + sad_array[0] = vp9_sad32x32(src_ptr, src_stride, 1.134 + ref_ptr, ref_stride, 0x7fffffff); 1.135 + sad_array[1] = vp9_sad32x32(src_ptr, src_stride, 1.136 + ref_ptr + 1, ref_stride, 0x7fffffff); 1.137 + sad_array[2] = vp9_sad32x32(src_ptr, src_stride, 1.138 + ref_ptr + 2, ref_stride, 0x7fffffff); 1.139 +} 1.140 + 1.141 +void vp9_sad64x64x8_c(const uint8_t *src_ptr, 1.142 + int src_stride, 1.143 + const uint8_t *ref_ptr, 1.144 + int ref_stride, 1.145 + unsigned int *sad_array) { 1.146 + sad_array[0] = vp9_sad64x64(src_ptr, src_stride, 1.147 + ref_ptr, ref_stride, 1.148 + 0x7fffffff); 1.149 + sad_array[1] = vp9_sad64x64(src_ptr, src_stride, 1.150 + ref_ptr + 1, ref_stride, 1.151 + 0x7fffffff); 1.152 + sad_array[2] = vp9_sad64x64(src_ptr, src_stride, 1.153 + ref_ptr + 2, ref_stride, 1.154 + 0x7fffffff); 1.155 + sad_array[3] = vp9_sad64x64(src_ptr, src_stride, 1.156 + ref_ptr + 3, ref_stride, 1.157 + 0x7fffffff); 1.158 + sad_array[4] = vp9_sad64x64(src_ptr, src_stride, 1.159 + ref_ptr + 4, ref_stride, 1.160 + 0x7fffffff); 1.161 + sad_array[5] = vp9_sad64x64(src_ptr, src_stride, 1.162 + ref_ptr + 5, ref_stride, 1.163 + 0x7fffffff); 1.164 + sad_array[6] = vp9_sad64x64(src_ptr, src_stride, 1.165 + ref_ptr + 6, ref_stride, 1.166 + 0x7fffffff); 1.167 + sad_array[7] = vp9_sad64x64(src_ptr, src_stride, 1.168 + ref_ptr + 7, ref_stride, 1.169 + 0x7fffffff); 1.170 +} 1.171 + 1.172 +void vp9_sad32x32x8_c(const uint8_t *src_ptr, 1.173 + int src_stride, 1.174 + const uint8_t *ref_ptr, 1.175 + int ref_stride, 1.176 + unsigned int *sad_array) { 1.177 + sad_array[0] = vp9_sad32x32(src_ptr, src_stride, 1.178 + ref_ptr, ref_stride, 1.179 + 0x7fffffff); 1.180 + sad_array[1] = vp9_sad32x32(src_ptr, src_stride, 1.181 + ref_ptr + 1, ref_stride, 1.182 + 0x7fffffff); 1.183 + sad_array[2] = vp9_sad32x32(src_ptr, src_stride, 1.184 + ref_ptr + 2, ref_stride, 1.185 + 0x7fffffff); 1.186 + sad_array[3] = vp9_sad32x32(src_ptr, src_stride, 1.187 + ref_ptr + 3, ref_stride, 1.188 + 0x7fffffff); 1.189 + sad_array[4] = vp9_sad32x32(src_ptr, src_stride, 1.190 + ref_ptr + 4, ref_stride, 1.191 + 0x7fffffff); 1.192 + sad_array[5] = vp9_sad32x32(src_ptr, src_stride, 1.193 + ref_ptr + 5, ref_stride, 1.194 + 0x7fffffff); 1.195 + sad_array[6] = vp9_sad32x32(src_ptr, src_stride, 1.196 + ref_ptr + 6, ref_stride, 1.197 + 0x7fffffff); 1.198 + sad_array[7] = vp9_sad32x32(src_ptr, src_stride, 1.199 + ref_ptr + 7, ref_stride, 1.200 + 0x7fffffff); 1.201 +} 1.202 + 1.203 +void vp9_sad16x16x3_c(const uint8_t *src_ptr, 1.204 + int src_stride, 1.205 + const uint8_t *ref_ptr, 1.206 + int ref_stride, 1.207 + unsigned int *sad_array) { 1.208 + sad_array[0] = vp9_sad16x16(src_ptr, src_stride, 1.209 + ref_ptr, ref_stride, 0x7fffffff); 1.210 + sad_array[1] = vp9_sad16x16(src_ptr, src_stride, 1.211 + ref_ptr + 1, ref_stride, 0x7fffffff); 1.212 + sad_array[2] = vp9_sad16x16(src_ptr, src_stride, 1.213 + ref_ptr + 2, ref_stride, 0x7fffffff); 1.214 +} 1.215 + 1.216 +void vp9_sad16x16x8_c(const uint8_t *src_ptr, 1.217 + int src_stride, 1.218 + const uint8_t *ref_ptr, 1.219 + int ref_stride, 1.220 + uint32_t *sad_array) { 1.221 + sad_array[0] = vp9_sad16x16(src_ptr, src_stride, 1.222 + ref_ptr, ref_stride, 1.223 + 0x7fffffff); 1.224 + sad_array[1] = vp9_sad16x16(src_ptr, src_stride, 1.225 + ref_ptr + 1, ref_stride, 1.226 + 0x7fffffff); 1.227 + sad_array[2] = vp9_sad16x16(src_ptr, src_stride, 1.228 + ref_ptr + 2, ref_stride, 1.229 + 0x7fffffff); 1.230 + sad_array[3] = vp9_sad16x16(src_ptr, src_stride, 1.231 + ref_ptr + 3, ref_stride, 1.232 + 0x7fffffff); 1.233 + sad_array[4] = vp9_sad16x16(src_ptr, src_stride, 1.234 + ref_ptr + 4, ref_stride, 1.235 + 0x7fffffff); 1.236 + sad_array[5] = vp9_sad16x16(src_ptr, src_stride, 1.237 + ref_ptr + 5, ref_stride, 1.238 + 0x7fffffff); 1.239 + sad_array[6] = vp9_sad16x16(src_ptr, src_stride, 1.240 + ref_ptr + 6, ref_stride, 1.241 + 0x7fffffff); 1.242 + sad_array[7] = vp9_sad16x16(src_ptr, src_stride, 1.243 + ref_ptr + 7, ref_stride, 1.244 + 0x7fffffff); 1.245 +} 1.246 + 1.247 +void vp9_sad16x8x3_c(const uint8_t *src_ptr, 1.248 + int src_stride, 1.249 + const uint8_t *ref_ptr, 1.250 + int ref_stride, 1.251 + unsigned int *sad_array) { 1.252 + sad_array[0] = vp9_sad16x8(src_ptr, src_stride, 1.253 + ref_ptr, ref_stride, 0x7fffffff); 1.254 + sad_array[1] = vp9_sad16x8(src_ptr, src_stride, 1.255 + ref_ptr + 1, ref_stride, 0x7fffffff); 1.256 + sad_array[2] = vp9_sad16x8(src_ptr, src_stride, 1.257 + ref_ptr + 2, ref_stride, 0x7fffffff); 1.258 +} 1.259 + 1.260 +void vp9_sad16x8x8_c(const uint8_t *src_ptr, 1.261 + int src_stride, 1.262 + const uint8_t *ref_ptr, 1.263 + int ref_stride, 1.264 + uint32_t *sad_array) { 1.265 + sad_array[0] = vp9_sad16x8(src_ptr, src_stride, 1.266 + ref_ptr, ref_stride, 1.267 + 0x7fffffff); 1.268 + sad_array[1] = vp9_sad16x8(src_ptr, src_stride, 1.269 + ref_ptr + 1, ref_stride, 1.270 + 0x7fffffff); 1.271 + sad_array[2] = vp9_sad16x8(src_ptr, src_stride, 1.272 + ref_ptr + 2, ref_stride, 1.273 + 0x7fffffff); 1.274 + sad_array[3] = vp9_sad16x8(src_ptr, src_stride, 1.275 + ref_ptr + 3, ref_stride, 1.276 + 0x7fffffff); 1.277 + sad_array[4] = vp9_sad16x8(src_ptr, src_stride, 1.278 + ref_ptr + 4, ref_stride, 1.279 + 0x7fffffff); 1.280 + sad_array[5] = vp9_sad16x8(src_ptr, src_stride, 1.281 + ref_ptr + 5, ref_stride, 1.282 + 0x7fffffff); 1.283 + sad_array[6] = vp9_sad16x8(src_ptr, src_stride, 1.284 + ref_ptr + 6, ref_stride, 1.285 + 0x7fffffff); 1.286 + sad_array[7] = vp9_sad16x8(src_ptr, src_stride, 1.287 + ref_ptr + 7, ref_stride, 1.288 + 0x7fffffff); 1.289 +} 1.290 + 1.291 +void vp9_sad8x8x3_c(const uint8_t *src_ptr, 1.292 + int src_stride, 1.293 + const uint8_t *ref_ptr, 1.294 + int ref_stride, 1.295 + unsigned int *sad_array) { 1.296 + sad_array[0] = vp9_sad8x8(src_ptr, src_stride, 1.297 + ref_ptr, ref_stride, 0x7fffffff); 1.298 + sad_array[1] = vp9_sad8x8(src_ptr, src_stride, 1.299 + ref_ptr + 1, ref_stride, 0x7fffffff); 1.300 + sad_array[2] = vp9_sad8x8(src_ptr, src_stride, 1.301 + ref_ptr + 2, ref_stride, 0x7fffffff); 1.302 +} 1.303 + 1.304 +void vp9_sad8x8x8_c(const uint8_t *src_ptr, 1.305 + int src_stride, 1.306 + const uint8_t *ref_ptr, 1.307 + int ref_stride, 1.308 + uint32_t *sad_array) { 1.309 + sad_array[0] = vp9_sad8x8(src_ptr, src_stride, 1.310 + ref_ptr, ref_stride, 1.311 + 0x7fffffff); 1.312 + sad_array[1] = vp9_sad8x8(src_ptr, src_stride, 1.313 + ref_ptr + 1, ref_stride, 1.314 + 0x7fffffff); 1.315 + sad_array[2] = vp9_sad8x8(src_ptr, src_stride, 1.316 + ref_ptr + 2, ref_stride, 1.317 + 0x7fffffff); 1.318 + sad_array[3] = vp9_sad8x8(src_ptr, src_stride, 1.319 + ref_ptr + 3, ref_stride, 1.320 + 0x7fffffff); 1.321 + sad_array[4] = vp9_sad8x8(src_ptr, src_stride, 1.322 + ref_ptr + 4, ref_stride, 1.323 + 0x7fffffff); 1.324 + sad_array[5] = vp9_sad8x8(src_ptr, src_stride, 1.325 + ref_ptr + 5, ref_stride, 1.326 + 0x7fffffff); 1.327 + sad_array[6] = vp9_sad8x8(src_ptr, src_stride, 1.328 + ref_ptr + 6, ref_stride, 1.329 + 0x7fffffff); 1.330 + sad_array[7] = vp9_sad8x8(src_ptr, src_stride, 1.331 + ref_ptr + 7, ref_stride, 1.332 + 0x7fffffff); 1.333 +} 1.334 + 1.335 +void vp9_sad8x16x3_c(const uint8_t *src_ptr, 1.336 + int src_stride, 1.337 + const uint8_t *ref_ptr, 1.338 + int ref_stride, 1.339 + unsigned int *sad_array) { 1.340 + sad_array[0] = vp9_sad8x16(src_ptr, src_stride, 1.341 + ref_ptr, ref_stride, 0x7fffffff); 1.342 + sad_array[1] = vp9_sad8x16(src_ptr, src_stride, 1.343 + ref_ptr + 1, ref_stride, 0x7fffffff); 1.344 + sad_array[2] = vp9_sad8x16(src_ptr, src_stride, 1.345 + ref_ptr + 2, ref_stride, 0x7fffffff); 1.346 +} 1.347 + 1.348 +void vp9_sad8x16x8_c(const uint8_t *src_ptr, 1.349 + int src_stride, 1.350 + const uint8_t *ref_ptr, 1.351 + int ref_stride, 1.352 + uint32_t *sad_array) { 1.353 + sad_array[0] = vp9_sad8x16(src_ptr, src_stride, 1.354 + ref_ptr, ref_stride, 1.355 + 0x7fffffff); 1.356 + sad_array[1] = vp9_sad8x16(src_ptr, src_stride, 1.357 + ref_ptr + 1, ref_stride, 1.358 + 0x7fffffff); 1.359 + sad_array[2] = vp9_sad8x16(src_ptr, src_stride, 1.360 + ref_ptr + 2, ref_stride, 1.361 + 0x7fffffff); 1.362 + sad_array[3] = vp9_sad8x16(src_ptr, src_stride, 1.363 + ref_ptr + 3, ref_stride, 1.364 + 0x7fffffff); 1.365 + sad_array[4] = vp9_sad8x16(src_ptr, src_stride, 1.366 + ref_ptr + 4, ref_stride, 1.367 + 0x7fffffff); 1.368 + sad_array[5] = vp9_sad8x16(src_ptr, src_stride, 1.369 + ref_ptr + 5, ref_stride, 1.370 + 0x7fffffff); 1.371 + sad_array[6] = vp9_sad8x16(src_ptr, src_stride, 1.372 + ref_ptr + 6, ref_stride, 1.373 + 0x7fffffff); 1.374 + sad_array[7] = vp9_sad8x16(src_ptr, src_stride, 1.375 + ref_ptr + 7, ref_stride, 1.376 + 0x7fffffff); 1.377 +} 1.378 + 1.379 +void vp9_sad4x4x3_c(const uint8_t *src_ptr, 1.380 + int src_stride, 1.381 + const uint8_t *ref_ptr, 1.382 + int ref_stride, 1.383 + unsigned int *sad_array) { 1.384 + sad_array[0] = vp9_sad4x4(src_ptr, src_stride, 1.385 + ref_ptr, ref_stride, 0x7fffffff); 1.386 + sad_array[1] = vp9_sad4x4(src_ptr, src_stride, 1.387 + ref_ptr + 1, ref_stride, 0x7fffffff); 1.388 + sad_array[2] = vp9_sad4x4(src_ptr, src_stride, 1.389 + ref_ptr + 2, ref_stride, 0x7fffffff); 1.390 +} 1.391 + 1.392 +void vp9_sad4x4x8_c(const uint8_t *src_ptr, 1.393 + int src_stride, 1.394 + const uint8_t *ref_ptr, 1.395 + int ref_stride, 1.396 + uint32_t *sad_array) { 1.397 + sad_array[0] = vp9_sad4x4(src_ptr, src_stride, 1.398 + ref_ptr, ref_stride, 1.399 + 0x7fffffff); 1.400 + sad_array[1] = vp9_sad4x4(src_ptr, src_stride, 1.401 + ref_ptr + 1, ref_stride, 1.402 + 0x7fffffff); 1.403 + sad_array[2] = vp9_sad4x4(src_ptr, src_stride, 1.404 + ref_ptr + 2, ref_stride, 1.405 + 0x7fffffff); 1.406 + sad_array[3] = vp9_sad4x4(src_ptr, src_stride, 1.407 + ref_ptr + 3, ref_stride, 1.408 + 0x7fffffff); 1.409 + sad_array[4] = vp9_sad4x4(src_ptr, src_stride, 1.410 + ref_ptr + 4, ref_stride, 1.411 + 0x7fffffff); 1.412 + sad_array[5] = vp9_sad4x4(src_ptr, src_stride, 1.413 + ref_ptr + 5, ref_stride, 1.414 + 0x7fffffff); 1.415 + sad_array[6] = vp9_sad4x4(src_ptr, src_stride, 1.416 + ref_ptr + 6, ref_stride, 1.417 + 0x7fffffff); 1.418 + sad_array[7] = vp9_sad4x4(src_ptr, src_stride, 1.419 + ref_ptr + 7, ref_stride, 1.420 + 0x7fffffff); 1.421 +} 1.422 + 1.423 +void vp9_sad64x64x4d_c(const uint8_t *src_ptr, 1.424 + int src_stride, 1.425 + const uint8_t* const ref_ptr[], 1.426 + int ref_stride, 1.427 + unsigned int *sad_array) { 1.428 + sad_array[0] = vp9_sad64x64(src_ptr, src_stride, 1.429 + ref_ptr[0], ref_stride, 0x7fffffff); 1.430 + sad_array[1] = vp9_sad64x64(src_ptr, src_stride, 1.431 + ref_ptr[1], ref_stride, 0x7fffffff); 1.432 + sad_array[2] = vp9_sad64x64(src_ptr, src_stride, 1.433 + ref_ptr[2], ref_stride, 0x7fffffff); 1.434 + sad_array[3] = vp9_sad64x64(src_ptr, src_stride, 1.435 + ref_ptr[3], ref_stride, 0x7fffffff); 1.436 +} 1.437 + 1.438 +void vp9_sad32x32x4d_c(const uint8_t *src_ptr, 1.439 + int src_stride, 1.440 + const uint8_t* const ref_ptr[], 1.441 + int ref_stride, 1.442 + unsigned int *sad_array) { 1.443 + sad_array[0] = vp9_sad32x32(src_ptr, src_stride, 1.444 + ref_ptr[0], ref_stride, 0x7fffffff); 1.445 + sad_array[1] = vp9_sad32x32(src_ptr, src_stride, 1.446 + ref_ptr[1], ref_stride, 0x7fffffff); 1.447 + sad_array[2] = vp9_sad32x32(src_ptr, src_stride, 1.448 + ref_ptr[2], ref_stride, 0x7fffffff); 1.449 + sad_array[3] = vp9_sad32x32(src_ptr, src_stride, 1.450 + ref_ptr[3], ref_stride, 0x7fffffff); 1.451 +} 1.452 + 1.453 +void vp9_sad16x16x4d_c(const uint8_t *src_ptr, 1.454 + int src_stride, 1.455 + const uint8_t* const ref_ptr[], 1.456 + int ref_stride, 1.457 + unsigned int *sad_array) { 1.458 + sad_array[0] = vp9_sad16x16(src_ptr, src_stride, 1.459 + ref_ptr[0], ref_stride, 0x7fffffff); 1.460 + sad_array[1] = vp9_sad16x16(src_ptr, src_stride, 1.461 + ref_ptr[1], ref_stride, 0x7fffffff); 1.462 + sad_array[2] = vp9_sad16x16(src_ptr, src_stride, 1.463 + ref_ptr[2], ref_stride, 0x7fffffff); 1.464 + sad_array[3] = vp9_sad16x16(src_ptr, src_stride, 1.465 + ref_ptr[3], ref_stride, 0x7fffffff); 1.466 +} 1.467 + 1.468 +void vp9_sad16x8x4d_c(const uint8_t *src_ptr, 1.469 + int src_stride, 1.470 + const uint8_t* const ref_ptr[], 1.471 + int ref_stride, 1.472 + unsigned int *sad_array) { 1.473 + sad_array[0] = vp9_sad16x8(src_ptr, src_stride, 1.474 + ref_ptr[0], ref_stride, 0x7fffffff); 1.475 + sad_array[1] = vp9_sad16x8(src_ptr, src_stride, 1.476 + ref_ptr[1], ref_stride, 0x7fffffff); 1.477 + sad_array[2] = vp9_sad16x8(src_ptr, src_stride, 1.478 + ref_ptr[2], ref_stride, 0x7fffffff); 1.479 + sad_array[3] = vp9_sad16x8(src_ptr, src_stride, 1.480 + ref_ptr[3], ref_stride, 0x7fffffff); 1.481 +} 1.482 + 1.483 +void vp9_sad8x8x4d_c(const uint8_t *src_ptr, 1.484 + int src_stride, 1.485 + const uint8_t* const ref_ptr[], 1.486 + int ref_stride, 1.487 + unsigned int *sad_array) { 1.488 + sad_array[0] = vp9_sad8x8(src_ptr, src_stride, 1.489 + ref_ptr[0], ref_stride, 0x7fffffff); 1.490 + sad_array[1] = vp9_sad8x8(src_ptr, src_stride, 1.491 + ref_ptr[1], ref_stride, 0x7fffffff); 1.492 + sad_array[2] = vp9_sad8x8(src_ptr, src_stride, 1.493 + ref_ptr[2], ref_stride, 0x7fffffff); 1.494 + sad_array[3] = vp9_sad8x8(src_ptr, src_stride, 1.495 + ref_ptr[3], ref_stride, 0x7fffffff); 1.496 +} 1.497 + 1.498 +void vp9_sad8x16x4d_c(const uint8_t *src_ptr, 1.499 + int src_stride, 1.500 + const uint8_t* const ref_ptr[], 1.501 + int ref_stride, 1.502 + unsigned int *sad_array) { 1.503 + sad_array[0] = vp9_sad8x16(src_ptr, src_stride, 1.504 + ref_ptr[0], ref_stride, 0x7fffffff); 1.505 + sad_array[1] = vp9_sad8x16(src_ptr, src_stride, 1.506 + ref_ptr[1], ref_stride, 0x7fffffff); 1.507 + sad_array[2] = vp9_sad8x16(src_ptr, src_stride, 1.508 + ref_ptr[2], ref_stride, 0x7fffffff); 1.509 + sad_array[3] = vp9_sad8x16(src_ptr, src_stride, 1.510 + ref_ptr[3], ref_stride, 0x7fffffff); 1.511 +} 1.512 + 1.513 +void vp9_sad8x4x4d_c(const uint8_t *src_ptr, 1.514 + int src_stride, 1.515 + const uint8_t* const ref_ptr[], 1.516 + int ref_stride, 1.517 + unsigned int *sad_array) { 1.518 + sad_array[0] = vp9_sad8x4(src_ptr, src_stride, 1.519 + ref_ptr[0], ref_stride, 0x7fffffff); 1.520 + sad_array[1] = vp9_sad8x4(src_ptr, src_stride, 1.521 + ref_ptr[1], ref_stride, 0x7fffffff); 1.522 + sad_array[2] = vp9_sad8x4(src_ptr, src_stride, 1.523 + ref_ptr[2], ref_stride, 0x7fffffff); 1.524 + sad_array[3] = vp9_sad8x4(src_ptr, src_stride, 1.525 + ref_ptr[3], ref_stride, 0x7fffffff); 1.526 +} 1.527 + 1.528 +void vp9_sad8x4x8_c(const uint8_t *src_ptr, 1.529 + int src_stride, 1.530 + const uint8_t *ref_ptr, 1.531 + int ref_stride, 1.532 + uint32_t *sad_array) { 1.533 + sad_array[0] = vp9_sad8x4(src_ptr, src_stride, 1.534 + ref_ptr, ref_stride, 1.535 + 0x7fffffff); 1.536 + sad_array[1] = vp9_sad8x4(src_ptr, src_stride, 1.537 + ref_ptr + 1, ref_stride, 1.538 + 0x7fffffff); 1.539 + sad_array[2] = vp9_sad8x4(src_ptr, src_stride, 1.540 + ref_ptr + 2, ref_stride, 1.541 + 0x7fffffff); 1.542 + sad_array[3] = vp9_sad8x4(src_ptr, src_stride, 1.543 + ref_ptr + 3, ref_stride, 1.544 + 0x7fffffff); 1.545 + sad_array[4] = vp9_sad8x4(src_ptr, src_stride, 1.546 + ref_ptr + 4, ref_stride, 1.547 + 0x7fffffff); 1.548 + sad_array[5] = vp9_sad8x4(src_ptr, src_stride, 1.549 + ref_ptr + 5, ref_stride, 1.550 + 0x7fffffff); 1.551 + sad_array[6] = vp9_sad8x4(src_ptr, src_stride, 1.552 + ref_ptr + 6, ref_stride, 1.553 + 0x7fffffff); 1.554 + sad_array[7] = vp9_sad8x4(src_ptr, src_stride, 1.555 + ref_ptr + 7, ref_stride, 1.556 + 0x7fffffff); 1.557 +} 1.558 + 1.559 +void vp9_sad4x8x4d_c(const uint8_t *src_ptr, 1.560 + int src_stride, 1.561 + const uint8_t* const ref_ptr[], 1.562 + int ref_stride, 1.563 + unsigned int *sad_array) { 1.564 + sad_array[0] = vp9_sad4x8(src_ptr, src_stride, 1.565 + ref_ptr[0], ref_stride, 0x7fffffff); 1.566 + sad_array[1] = vp9_sad4x8(src_ptr, src_stride, 1.567 + ref_ptr[1], ref_stride, 0x7fffffff); 1.568 + sad_array[2] = vp9_sad4x8(src_ptr, src_stride, 1.569 + ref_ptr[2], ref_stride, 0x7fffffff); 1.570 + sad_array[3] = vp9_sad4x8(src_ptr, src_stride, 1.571 + ref_ptr[3], ref_stride, 0x7fffffff); 1.572 +} 1.573 + 1.574 +void vp9_sad4x8x8_c(const uint8_t *src_ptr, 1.575 + int src_stride, 1.576 + const uint8_t *ref_ptr, 1.577 + int ref_stride, 1.578 + uint32_t *sad_array) { 1.579 + sad_array[0] = vp9_sad4x8(src_ptr, src_stride, 1.580 + ref_ptr, ref_stride, 1.581 + 0x7fffffff); 1.582 + sad_array[1] = vp9_sad4x8(src_ptr, src_stride, 1.583 + ref_ptr + 1, ref_stride, 1.584 + 0x7fffffff); 1.585 + sad_array[2] = vp9_sad4x8(src_ptr, src_stride, 1.586 + ref_ptr + 2, ref_stride, 1.587 + 0x7fffffff); 1.588 + sad_array[3] = vp9_sad4x8(src_ptr, src_stride, 1.589 + ref_ptr + 3, ref_stride, 1.590 + 0x7fffffff); 1.591 + sad_array[4] = vp9_sad4x8(src_ptr, src_stride, 1.592 + ref_ptr + 4, ref_stride, 1.593 + 0x7fffffff); 1.594 + sad_array[5] = vp9_sad4x8(src_ptr, src_stride, 1.595 + ref_ptr + 5, ref_stride, 1.596 + 0x7fffffff); 1.597 + sad_array[6] = vp9_sad4x8(src_ptr, src_stride, 1.598 + ref_ptr + 6, ref_stride, 1.599 + 0x7fffffff); 1.600 + sad_array[7] = vp9_sad4x8(src_ptr, src_stride, 1.601 + ref_ptr + 7, ref_stride, 1.602 + 0x7fffffff); 1.603 +} 1.604 + 1.605 +void vp9_sad4x4x4d_c(const uint8_t *src_ptr, 1.606 + int src_stride, 1.607 + const uint8_t* const ref_ptr[], 1.608 + int ref_stride, 1.609 + unsigned int *sad_array) { 1.610 + sad_array[0] = vp9_sad4x4(src_ptr, src_stride, 1.611 + ref_ptr[0], ref_stride, 0x7fffffff); 1.612 + sad_array[1] = vp9_sad4x4(src_ptr, src_stride, 1.613 + ref_ptr[1], ref_stride, 0x7fffffff); 1.614 + sad_array[2] = vp9_sad4x4(src_ptr, src_stride, 1.615 + ref_ptr[2], ref_stride, 0x7fffffff); 1.616 + sad_array[3] = vp9_sad4x4(src_ptr, src_stride, 1.617 + ref_ptr[3], ref_stride, 0x7fffffff); 1.618 +}