1 /* 2 * Copyright (c) 2010 The WebM project authors. All Rights Reserved. 3 * 4 * Use of this source code is governed by a BSD-style license 5 * that can be found in the LICENSE file in the root of the source 6 * tree. An additional intellectual property rights grant can be found 7 * in the file PATENTS. All contributing project authors may 8 * be found in the AUTHORS file in the root of the source tree. 9 */ 10 11 12 #include <stdlib.h> 13 #include "vp9/common/vp9_sadmxn.h" 14 #include "vp9/encoder/vp9_variance.h" 15 #include "./vpx_config.h" 16 #include "vpx/vpx_integer.h" 17 #include "./vp9_rtcd.h" 18 19 #define sad_mxn_func(m, n) \ 20 unsigned int vp9_sad##m##x##n##_c(const uint8_t *src_ptr, \ 21 int src_stride, \ 22 const uint8_t *ref_ptr, \ 23 int ref_stride, \ 24 unsigned int max_sad) { \ 25 return sad_mx_n_c(src_ptr, src_stride, ref_ptr, ref_stride, m, n); \ 26 } \ 27 unsigned int vp9_sad##m##x##n##_avg_c(const uint8_t *src_ptr, \ 28 int src_stride, \ 29 const uint8_t *ref_ptr, \ 30 int ref_stride, \ 31 const uint8_t *second_pred, \ 32 unsigned int max_sad) { \ 33 uint8_t comp_pred[m * n]; \ 34 comp_avg_pred(comp_pred, second_pred, m, n, ref_ptr, ref_stride); \ 35 return sad_mx_n_c(src_ptr, src_stride, comp_pred, m, m, n); \ 36 } 37 38 sad_mxn_func(64, 64) 39 sad_mxn_func(64, 32) 40 sad_mxn_func(32, 64) 41 sad_mxn_func(32, 32) 42 sad_mxn_func(32, 16) 43 sad_mxn_func(16, 32) 44 sad_mxn_func(16, 16) 45 sad_mxn_func(16, 8) 46 sad_mxn_func(8, 16) 47 sad_mxn_func(8, 8) 48 sad_mxn_func(8, 4) 49 sad_mxn_func(4, 8) 50 sad_mxn_func(4, 4) 51 52 void vp9_sad64x32x4d_c(const uint8_t *src_ptr, 53 int src_stride, 54 const uint8_t* const ref_ptr[], 55 int ref_stride, 56 unsigned int *sad_array) { 57 sad_array[0] = vp9_sad64x32(src_ptr, src_stride, 58 ref_ptr[0], ref_stride, 0x7fffffff); 59 sad_array[1] = vp9_sad64x32(src_ptr, src_stride, 60 ref_ptr[1], ref_stride, 0x7fffffff); 61 sad_array[2] = vp9_sad64x32(src_ptr, src_stride, 62 ref_ptr[2], ref_stride, 0x7fffffff); 63 sad_array[3] = vp9_sad64x32(src_ptr, src_stride, 64 ref_ptr[3], ref_stride, 0x7fffffff); 65 } 66 67 void vp9_sad32x64x4d_c(const uint8_t *src_ptr, 68 int src_stride, 69 const uint8_t* const ref_ptr[], 70 int ref_stride, 71 unsigned int *sad_array) { 72 sad_array[0] = vp9_sad32x64(src_ptr, src_stride, 73 ref_ptr[0], ref_stride, 0x7fffffff); 74 sad_array[1] = vp9_sad32x64(src_ptr, src_stride, 75 ref_ptr[1], ref_stride, 0x7fffffff); 76 sad_array[2] = vp9_sad32x64(src_ptr, src_stride, 77 ref_ptr[2], ref_stride, 0x7fffffff); 78 sad_array[3] = vp9_sad32x64(src_ptr, src_stride, 79 ref_ptr[3], ref_stride, 0x7fffffff); 80 } 81 82 void vp9_sad32x16x4d_c(const uint8_t *src_ptr, 83 int src_stride, 84 const uint8_t* const ref_ptr[], 85 int ref_stride, 86 unsigned int *sad_array) { 87 sad_array[0] = vp9_sad32x16(src_ptr, src_stride, 88 ref_ptr[0], ref_stride, 0x7fffffff); 89 sad_array[1] = vp9_sad32x16(src_ptr, src_stride, 90 ref_ptr[1], ref_stride, 0x7fffffff); 91 sad_array[2] = vp9_sad32x16(src_ptr, src_stride, 92 ref_ptr[2], ref_stride, 0x7fffffff); 93 sad_array[3] = vp9_sad32x16(src_ptr, src_stride, 94 ref_ptr[3], ref_stride, 0x7fffffff); 95 } 96 97 void vp9_sad16x32x4d_c(const uint8_t *src_ptr, 98 int src_stride, 99 const uint8_t* const ref_ptr[], 100 int ref_stride, 101 unsigned int *sad_array) { 102 sad_array[0] = vp9_sad16x32(src_ptr, src_stride, 103 ref_ptr[0], ref_stride, 0x7fffffff); 104 sad_array[1] = vp9_sad16x32(src_ptr, src_stride, 105 ref_ptr[1], ref_stride, 0x7fffffff); 106 sad_array[2] = vp9_sad16x32(src_ptr, src_stride, 107 ref_ptr[2], ref_stride, 0x7fffffff); 108 sad_array[3] = vp9_sad16x32(src_ptr, src_stride, 109 ref_ptr[3], ref_stride, 0x7fffffff); 110 } 111 112 void vp9_sad64x64x3_c(const uint8_t *src_ptr, 113 int src_stride, 114 const uint8_t *ref_ptr, 115 int ref_stride, 116 unsigned int *sad_array) { 117 sad_array[0] = vp9_sad64x64(src_ptr, src_stride, ref_ptr, ref_stride, 118 0x7fffffff); 119 sad_array[1] = vp9_sad64x64(src_ptr, src_stride, ref_ptr + 1, ref_stride, 120 0x7fffffff); 121 sad_array[2] = vp9_sad64x64(src_ptr, src_stride, ref_ptr + 2, ref_stride, 122 0x7fffffff); 123 } 124 125 void vp9_sad32x32x3_c(const uint8_t *src_ptr, 126 int src_stride, 127 const uint8_t *ref_ptr, 128 int ref_stride, 129 unsigned int *sad_array) { 130 sad_array[0] = vp9_sad32x32(src_ptr, src_stride, 131 ref_ptr, ref_stride, 0x7fffffff); 132 sad_array[1] = vp9_sad32x32(src_ptr, src_stride, 133 ref_ptr + 1, ref_stride, 0x7fffffff); 134 sad_array[2] = vp9_sad32x32(src_ptr, src_stride, 135 ref_ptr + 2, ref_stride, 0x7fffffff); 136 } 137 138 void vp9_sad64x64x8_c(const uint8_t *src_ptr, 139 int src_stride, 140 const uint8_t *ref_ptr, 141 int ref_stride, 142 unsigned int *sad_array) { 143 sad_array[0] = vp9_sad64x64(src_ptr, src_stride, 144 ref_ptr, ref_stride, 145 0x7fffffff); 146 sad_array[1] = vp9_sad64x64(src_ptr, src_stride, 147 ref_ptr + 1, ref_stride, 148 0x7fffffff); 149 sad_array[2] = vp9_sad64x64(src_ptr, src_stride, 150 ref_ptr + 2, ref_stride, 151 0x7fffffff); 152 sad_array[3] = vp9_sad64x64(src_ptr, src_stride, 153 ref_ptr + 3, ref_stride, 154 0x7fffffff); 155 sad_array[4] = vp9_sad64x64(src_ptr, src_stride, 156 ref_ptr + 4, ref_stride, 157 0x7fffffff); 158 sad_array[5] = vp9_sad64x64(src_ptr, src_stride, 159 ref_ptr + 5, ref_stride, 160 0x7fffffff); 161 sad_array[6] = vp9_sad64x64(src_ptr, src_stride, 162 ref_ptr + 6, ref_stride, 163 0x7fffffff); 164 sad_array[7] = vp9_sad64x64(src_ptr, src_stride, 165 ref_ptr + 7, ref_stride, 166 0x7fffffff); 167 } 168 169 void vp9_sad32x32x8_c(const uint8_t *src_ptr, 170 int src_stride, 171 const uint8_t *ref_ptr, 172 int ref_stride, 173 unsigned int *sad_array) { 174 sad_array[0] = vp9_sad32x32(src_ptr, src_stride, 175 ref_ptr, ref_stride, 176 0x7fffffff); 177 sad_array[1] = vp9_sad32x32(src_ptr, src_stride, 178 ref_ptr + 1, ref_stride, 179 0x7fffffff); 180 sad_array[2] = vp9_sad32x32(src_ptr, src_stride, 181 ref_ptr + 2, ref_stride, 182 0x7fffffff); 183 sad_array[3] = vp9_sad32x32(src_ptr, src_stride, 184 ref_ptr + 3, ref_stride, 185 0x7fffffff); 186 sad_array[4] = vp9_sad32x32(src_ptr, src_stride, 187 ref_ptr + 4, ref_stride, 188 0x7fffffff); 189 sad_array[5] = vp9_sad32x32(src_ptr, src_stride, 190 ref_ptr + 5, ref_stride, 191 0x7fffffff); 192 sad_array[6] = vp9_sad32x32(src_ptr, src_stride, 193 ref_ptr + 6, ref_stride, 194 0x7fffffff); 195 sad_array[7] = vp9_sad32x32(src_ptr, src_stride, 196 ref_ptr + 7, ref_stride, 197 0x7fffffff); 198 } 199 200 void vp9_sad16x16x3_c(const uint8_t *src_ptr, 201 int src_stride, 202 const uint8_t *ref_ptr, 203 int ref_stride, 204 unsigned int *sad_array) { 205 sad_array[0] = vp9_sad16x16(src_ptr, src_stride, 206 ref_ptr, ref_stride, 0x7fffffff); 207 sad_array[1] = vp9_sad16x16(src_ptr, src_stride, 208 ref_ptr + 1, ref_stride, 0x7fffffff); 209 sad_array[2] = vp9_sad16x16(src_ptr, src_stride, 210 ref_ptr + 2, ref_stride, 0x7fffffff); 211 } 212 213 void vp9_sad16x16x8_c(const uint8_t *src_ptr, 214 int src_stride, 215 const uint8_t *ref_ptr, 216 int ref_stride, 217 uint32_t *sad_array) { 218 sad_array[0] = vp9_sad16x16(src_ptr, src_stride, 219 ref_ptr, ref_stride, 220 0x7fffffff); 221 sad_array[1] = vp9_sad16x16(src_ptr, src_stride, 222 ref_ptr + 1, ref_stride, 223 0x7fffffff); 224 sad_array[2] = vp9_sad16x16(src_ptr, src_stride, 225 ref_ptr + 2, ref_stride, 226 0x7fffffff); 227 sad_array[3] = vp9_sad16x16(src_ptr, src_stride, 228 ref_ptr + 3, ref_stride, 229 0x7fffffff); 230 sad_array[4] = vp9_sad16x16(src_ptr, src_stride, 231 ref_ptr + 4, ref_stride, 232 0x7fffffff); 233 sad_array[5] = vp9_sad16x16(src_ptr, src_stride, 234 ref_ptr + 5, ref_stride, 235 0x7fffffff); 236 sad_array[6] = vp9_sad16x16(src_ptr, src_stride, 237 ref_ptr + 6, ref_stride, 238 0x7fffffff); 239 sad_array[7] = vp9_sad16x16(src_ptr, src_stride, 240 ref_ptr + 7, ref_stride, 241 0x7fffffff); 242 } 243 244 void vp9_sad16x8x3_c(const uint8_t *src_ptr, 245 int src_stride, 246 const uint8_t *ref_ptr, 247 int ref_stride, 248 unsigned int *sad_array) { 249 sad_array[0] = vp9_sad16x8(src_ptr, src_stride, 250 ref_ptr, ref_stride, 0x7fffffff); 251 sad_array[1] = vp9_sad16x8(src_ptr, src_stride, 252 ref_ptr + 1, ref_stride, 0x7fffffff); 253 sad_array[2] = vp9_sad16x8(src_ptr, src_stride, 254 ref_ptr + 2, ref_stride, 0x7fffffff); 255 } 256 257 void vp9_sad16x8x8_c(const uint8_t *src_ptr, 258 int src_stride, 259 const uint8_t *ref_ptr, 260 int ref_stride, 261 uint32_t *sad_array) { 262 sad_array[0] = vp9_sad16x8(src_ptr, src_stride, 263 ref_ptr, ref_stride, 264 0x7fffffff); 265 sad_array[1] = vp9_sad16x8(src_ptr, src_stride, 266 ref_ptr + 1, ref_stride, 267 0x7fffffff); 268 sad_array[2] = vp9_sad16x8(src_ptr, src_stride, 269 ref_ptr + 2, ref_stride, 270 0x7fffffff); 271 sad_array[3] = vp9_sad16x8(src_ptr, src_stride, 272 ref_ptr + 3, ref_stride, 273 0x7fffffff); 274 sad_array[4] = vp9_sad16x8(src_ptr, src_stride, 275 ref_ptr + 4, ref_stride, 276 0x7fffffff); 277 sad_array[5] = vp9_sad16x8(src_ptr, src_stride, 278 ref_ptr + 5, ref_stride, 279 0x7fffffff); 280 sad_array[6] = vp9_sad16x8(src_ptr, src_stride, 281 ref_ptr + 6, ref_stride, 282 0x7fffffff); 283 sad_array[7] = vp9_sad16x8(src_ptr, src_stride, 284 ref_ptr + 7, ref_stride, 285 0x7fffffff); 286 } 287 288 void vp9_sad8x8x3_c(const uint8_t *src_ptr, 289 int src_stride, 290 const uint8_t *ref_ptr, 291 int ref_stride, 292 unsigned int *sad_array) { 293 sad_array[0] = vp9_sad8x8(src_ptr, src_stride, 294 ref_ptr, ref_stride, 0x7fffffff); 295 sad_array[1] = vp9_sad8x8(src_ptr, src_stride, 296 ref_ptr + 1, ref_stride, 0x7fffffff); 297 sad_array[2] = vp9_sad8x8(src_ptr, src_stride, 298 ref_ptr + 2, ref_stride, 0x7fffffff); 299 } 300 301 void vp9_sad8x8x8_c(const uint8_t *src_ptr, 302 int src_stride, 303 const uint8_t *ref_ptr, 304 int ref_stride, 305 uint32_t *sad_array) { 306 sad_array[0] = vp9_sad8x8(src_ptr, src_stride, 307 ref_ptr, ref_stride, 308 0x7fffffff); 309 sad_array[1] = vp9_sad8x8(src_ptr, src_stride, 310 ref_ptr + 1, ref_stride, 311 0x7fffffff); 312 sad_array[2] = vp9_sad8x8(src_ptr, src_stride, 313 ref_ptr + 2, ref_stride, 314 0x7fffffff); 315 sad_array[3] = vp9_sad8x8(src_ptr, src_stride, 316 ref_ptr + 3, ref_stride, 317 0x7fffffff); 318 sad_array[4] = vp9_sad8x8(src_ptr, src_stride, 319 ref_ptr + 4, ref_stride, 320 0x7fffffff); 321 sad_array[5] = vp9_sad8x8(src_ptr, src_stride, 322 ref_ptr + 5, ref_stride, 323 0x7fffffff); 324 sad_array[6] = vp9_sad8x8(src_ptr, src_stride, 325 ref_ptr + 6, ref_stride, 326 0x7fffffff); 327 sad_array[7] = vp9_sad8x8(src_ptr, src_stride, 328 ref_ptr + 7, ref_stride, 329 0x7fffffff); 330 } 331 332 void vp9_sad8x16x3_c(const uint8_t *src_ptr, 333 int src_stride, 334 const uint8_t *ref_ptr, 335 int ref_stride, 336 unsigned int *sad_array) { 337 sad_array[0] = vp9_sad8x16(src_ptr, src_stride, 338 ref_ptr, ref_stride, 0x7fffffff); 339 sad_array[1] = vp9_sad8x16(src_ptr, src_stride, 340 ref_ptr + 1, ref_stride, 0x7fffffff); 341 sad_array[2] = vp9_sad8x16(src_ptr, src_stride, 342 ref_ptr + 2, ref_stride, 0x7fffffff); 343 } 344 345 void vp9_sad8x16x8_c(const uint8_t *src_ptr, 346 int src_stride, 347 const uint8_t *ref_ptr, 348 int ref_stride, 349 uint32_t *sad_array) { 350 sad_array[0] = vp9_sad8x16(src_ptr, src_stride, 351 ref_ptr, ref_stride, 352 0x7fffffff); 353 sad_array[1] = vp9_sad8x16(src_ptr, src_stride, 354 ref_ptr + 1, ref_stride, 355 0x7fffffff); 356 sad_array[2] = vp9_sad8x16(src_ptr, src_stride, 357 ref_ptr + 2, ref_stride, 358 0x7fffffff); 359 sad_array[3] = vp9_sad8x16(src_ptr, src_stride, 360 ref_ptr + 3, ref_stride, 361 0x7fffffff); 362 sad_array[4] = vp9_sad8x16(src_ptr, src_stride, 363 ref_ptr + 4, ref_stride, 364 0x7fffffff); 365 sad_array[5] = vp9_sad8x16(src_ptr, src_stride, 366 ref_ptr + 5, ref_stride, 367 0x7fffffff); 368 sad_array[6] = vp9_sad8x16(src_ptr, src_stride, 369 ref_ptr + 6, ref_stride, 370 0x7fffffff); 371 sad_array[7] = vp9_sad8x16(src_ptr, src_stride, 372 ref_ptr + 7, ref_stride, 373 0x7fffffff); 374 } 375 376 void vp9_sad4x4x3_c(const uint8_t *src_ptr, 377 int src_stride, 378 const uint8_t *ref_ptr, 379 int ref_stride, 380 unsigned int *sad_array) { 381 sad_array[0] = vp9_sad4x4(src_ptr, src_stride, 382 ref_ptr, ref_stride, 0x7fffffff); 383 sad_array[1] = vp9_sad4x4(src_ptr, src_stride, 384 ref_ptr + 1, ref_stride, 0x7fffffff); 385 sad_array[2] = vp9_sad4x4(src_ptr, src_stride, 386 ref_ptr + 2, ref_stride, 0x7fffffff); 387 } 388 389 void vp9_sad4x4x8_c(const uint8_t *src_ptr, 390 int src_stride, 391 const uint8_t *ref_ptr, 392 int ref_stride, 393 uint32_t *sad_array) { 394 sad_array[0] = vp9_sad4x4(src_ptr, src_stride, 395 ref_ptr, ref_stride, 396 0x7fffffff); 397 sad_array[1] = vp9_sad4x4(src_ptr, src_stride, 398 ref_ptr + 1, ref_stride, 399 0x7fffffff); 400 sad_array[2] = vp9_sad4x4(src_ptr, src_stride, 401 ref_ptr + 2, ref_stride, 402 0x7fffffff); 403 sad_array[3] = vp9_sad4x4(src_ptr, src_stride, 404 ref_ptr + 3, ref_stride, 405 0x7fffffff); 406 sad_array[4] = vp9_sad4x4(src_ptr, src_stride, 407 ref_ptr + 4, ref_stride, 408 0x7fffffff); 409 sad_array[5] = vp9_sad4x4(src_ptr, src_stride, 410 ref_ptr + 5, ref_stride, 411 0x7fffffff); 412 sad_array[6] = vp9_sad4x4(src_ptr, src_stride, 413 ref_ptr + 6, ref_stride, 414 0x7fffffff); 415 sad_array[7] = vp9_sad4x4(src_ptr, src_stride, 416 ref_ptr + 7, ref_stride, 417 0x7fffffff); 418 } 419 420 void vp9_sad64x64x4d_c(const uint8_t *src_ptr, 421 int src_stride, 422 const uint8_t* const ref_ptr[], 423 int ref_stride, 424 unsigned int *sad_array) { 425 sad_array[0] = vp9_sad64x64(src_ptr, src_stride, 426 ref_ptr[0], ref_stride, 0x7fffffff); 427 sad_array[1] = vp9_sad64x64(src_ptr, src_stride, 428 ref_ptr[1], ref_stride, 0x7fffffff); 429 sad_array[2] = vp9_sad64x64(src_ptr, src_stride, 430 ref_ptr[2], ref_stride, 0x7fffffff); 431 sad_array[3] = vp9_sad64x64(src_ptr, src_stride, 432 ref_ptr[3], ref_stride, 0x7fffffff); 433 } 434 435 void vp9_sad32x32x4d_c(const uint8_t *src_ptr, 436 int src_stride, 437 const uint8_t* const ref_ptr[], 438 int ref_stride, 439 unsigned int *sad_array) { 440 sad_array[0] = vp9_sad32x32(src_ptr, src_stride, 441 ref_ptr[0], ref_stride, 0x7fffffff); 442 sad_array[1] = vp9_sad32x32(src_ptr, src_stride, 443 ref_ptr[1], ref_stride, 0x7fffffff); 444 sad_array[2] = vp9_sad32x32(src_ptr, src_stride, 445 ref_ptr[2], ref_stride, 0x7fffffff); 446 sad_array[3] = vp9_sad32x32(src_ptr, src_stride, 447 ref_ptr[3], ref_stride, 0x7fffffff); 448 } 449 450 void vp9_sad16x16x4d_c(const uint8_t *src_ptr, 451 int src_stride, 452 const uint8_t* const ref_ptr[], 453 int ref_stride, 454 unsigned int *sad_array) { 455 sad_array[0] = vp9_sad16x16(src_ptr, src_stride, 456 ref_ptr[0], ref_stride, 0x7fffffff); 457 sad_array[1] = vp9_sad16x16(src_ptr, src_stride, 458 ref_ptr[1], ref_stride, 0x7fffffff); 459 sad_array[2] = vp9_sad16x16(src_ptr, src_stride, 460 ref_ptr[2], ref_stride, 0x7fffffff); 461 sad_array[3] = vp9_sad16x16(src_ptr, src_stride, 462 ref_ptr[3], ref_stride, 0x7fffffff); 463 } 464 465 void vp9_sad16x8x4d_c(const uint8_t *src_ptr, 466 int src_stride, 467 const uint8_t* const ref_ptr[], 468 int ref_stride, 469 unsigned int *sad_array) { 470 sad_array[0] = vp9_sad16x8(src_ptr, src_stride, 471 ref_ptr[0], ref_stride, 0x7fffffff); 472 sad_array[1] = vp9_sad16x8(src_ptr, src_stride, 473 ref_ptr[1], ref_stride, 0x7fffffff); 474 sad_array[2] = vp9_sad16x8(src_ptr, src_stride, 475 ref_ptr[2], ref_stride, 0x7fffffff); 476 sad_array[3] = vp9_sad16x8(src_ptr, src_stride, 477 ref_ptr[3], ref_stride, 0x7fffffff); 478 } 479 480 void vp9_sad8x8x4d_c(const uint8_t *src_ptr, 481 int src_stride, 482 const uint8_t* const ref_ptr[], 483 int ref_stride, 484 unsigned int *sad_array) { 485 sad_array[0] = vp9_sad8x8(src_ptr, src_stride, 486 ref_ptr[0], ref_stride, 0x7fffffff); 487 sad_array[1] = vp9_sad8x8(src_ptr, src_stride, 488 ref_ptr[1], ref_stride, 0x7fffffff); 489 sad_array[2] = vp9_sad8x8(src_ptr, src_stride, 490 ref_ptr[2], ref_stride, 0x7fffffff); 491 sad_array[3] = vp9_sad8x8(src_ptr, src_stride, 492 ref_ptr[3], ref_stride, 0x7fffffff); 493 } 494 495 void vp9_sad8x16x4d_c(const uint8_t *src_ptr, 496 int src_stride, 497 const uint8_t* const ref_ptr[], 498 int ref_stride, 499 unsigned int *sad_array) { 500 sad_array[0] = vp9_sad8x16(src_ptr, src_stride, 501 ref_ptr[0], ref_stride, 0x7fffffff); 502 sad_array[1] = vp9_sad8x16(src_ptr, src_stride, 503 ref_ptr[1], ref_stride, 0x7fffffff); 504 sad_array[2] = vp9_sad8x16(src_ptr, src_stride, 505 ref_ptr[2], ref_stride, 0x7fffffff); 506 sad_array[3] = vp9_sad8x16(src_ptr, src_stride, 507 ref_ptr[3], ref_stride, 0x7fffffff); 508 } 509 510 void vp9_sad8x4x4d_c(const uint8_t *src_ptr, 511 int src_stride, 512 const uint8_t* const ref_ptr[], 513 int ref_stride, 514 unsigned int *sad_array) { 515 sad_array[0] = vp9_sad8x4(src_ptr, src_stride, 516 ref_ptr[0], ref_stride, 0x7fffffff); 517 sad_array[1] = vp9_sad8x4(src_ptr, src_stride, 518 ref_ptr[1], ref_stride, 0x7fffffff); 519 sad_array[2] = vp9_sad8x4(src_ptr, src_stride, 520 ref_ptr[2], ref_stride, 0x7fffffff); 521 sad_array[3] = vp9_sad8x4(src_ptr, src_stride, 522 ref_ptr[3], ref_stride, 0x7fffffff); 523 } 524 525 void vp9_sad8x4x8_c(const uint8_t *src_ptr, 526 int src_stride, 527 const uint8_t *ref_ptr, 528 int ref_stride, 529 uint32_t *sad_array) { 530 sad_array[0] = vp9_sad8x4(src_ptr, src_stride, 531 ref_ptr, ref_stride, 532 0x7fffffff); 533 sad_array[1] = vp9_sad8x4(src_ptr, src_stride, 534 ref_ptr + 1, ref_stride, 535 0x7fffffff); 536 sad_array[2] = vp9_sad8x4(src_ptr, src_stride, 537 ref_ptr + 2, ref_stride, 538 0x7fffffff); 539 sad_array[3] = vp9_sad8x4(src_ptr, src_stride, 540 ref_ptr + 3, ref_stride, 541 0x7fffffff); 542 sad_array[4] = vp9_sad8x4(src_ptr, src_stride, 543 ref_ptr + 4, ref_stride, 544 0x7fffffff); 545 sad_array[5] = vp9_sad8x4(src_ptr, src_stride, 546 ref_ptr + 5, ref_stride, 547 0x7fffffff); 548 sad_array[6] = vp9_sad8x4(src_ptr, src_stride, 549 ref_ptr + 6, ref_stride, 550 0x7fffffff); 551 sad_array[7] = vp9_sad8x4(src_ptr, src_stride, 552 ref_ptr + 7, ref_stride, 553 0x7fffffff); 554 } 555 556 void vp9_sad4x8x4d_c(const uint8_t *src_ptr, 557 int src_stride, 558 const uint8_t* const ref_ptr[], 559 int ref_stride, 560 unsigned int *sad_array) { 561 sad_array[0] = vp9_sad4x8(src_ptr, src_stride, 562 ref_ptr[0], ref_stride, 0x7fffffff); 563 sad_array[1] = vp9_sad4x8(src_ptr, src_stride, 564 ref_ptr[1], ref_stride, 0x7fffffff); 565 sad_array[2] = vp9_sad4x8(src_ptr, src_stride, 566 ref_ptr[2], ref_stride, 0x7fffffff); 567 sad_array[3] = vp9_sad4x8(src_ptr, src_stride, 568 ref_ptr[3], ref_stride, 0x7fffffff); 569 } 570 571 void vp9_sad4x8x8_c(const uint8_t *src_ptr, 572 int src_stride, 573 const uint8_t *ref_ptr, 574 int ref_stride, 575 uint32_t *sad_array) { 576 sad_array[0] = vp9_sad4x8(src_ptr, src_stride, 577 ref_ptr, ref_stride, 578 0x7fffffff); 579 sad_array[1] = vp9_sad4x8(src_ptr, src_stride, 580 ref_ptr + 1, ref_stride, 581 0x7fffffff); 582 sad_array[2] = vp9_sad4x8(src_ptr, src_stride, 583 ref_ptr + 2, ref_stride, 584 0x7fffffff); 585 sad_array[3] = vp9_sad4x8(src_ptr, src_stride, 586 ref_ptr + 3, ref_stride, 587 0x7fffffff); 588 sad_array[4] = vp9_sad4x8(src_ptr, src_stride, 589 ref_ptr + 4, ref_stride, 590 0x7fffffff); 591 sad_array[5] = vp9_sad4x8(src_ptr, src_stride, 592 ref_ptr + 5, ref_stride, 593 0x7fffffff); 594 sad_array[6] = vp9_sad4x8(src_ptr, src_stride, 595 ref_ptr + 6, ref_stride, 596 0x7fffffff); 597 sad_array[7] = vp9_sad4x8(src_ptr, src_stride, 598 ref_ptr + 7, ref_stride, 599 0x7fffffff); 600 } 601 602 void vp9_sad4x4x4d_c(const uint8_t *src_ptr, 603 int src_stride, 604 const uint8_t* const ref_ptr[], 605 int ref_stride, 606 unsigned int *sad_array) { 607 sad_array[0] = vp9_sad4x4(src_ptr, src_stride, 608 ref_ptr[0], ref_stride, 0x7fffffff); 609 sad_array[1] = vp9_sad4x4(src_ptr, src_stride, 610 ref_ptr[1], ref_stride, 0x7fffffff); 611 sad_array[2] = vp9_sad4x4(src_ptr, src_stride, 612 ref_ptr[2], ref_stride, 0x7fffffff); 613 sad_array[3] = vp9_sad4x4(src_ptr, src_stride, 614 ref_ptr[3], ref_stride, 0x7fffffff); 615 } 616