Home | History | Annotate | Download | only in encoder
      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