#include <stdlib.h>
#include "config/aom_config.h"
#include "config/aom_dsp_rtcd.h"
#include "aom/aom_integer.h"
#include "aom_ports/mem.h"
#include "aom_dsp/blend.h"
static inline unsigned int sad(const uint8_t *a, int a_stride, const uint8_t *b,
int b_stride, int width, int height) { … }
#define SADMXN(m, n) …
#define SAD_MXNX4D(m, n) …
#define SAD_MXNX3D(m, n) …
SADMXN(…)
SAD_MXNX4D(…)
SAD_MXNX3D(…)
SADMXN(…)
SAD_MXNX4D(…)
SAD_MXNX3D(…)
SADMXN(…)
SAD_MXNX4D(…)
SAD_MXNX3D(…)
SADMXN(…)
SAD_MXNX4D(…)
SAD_MXNX3D(…)
SADMXN(…)
SAD_MXNX4D(…)
SAD_MXNX3D(…)
SADMXN(…)
SAD_MXNX4D(…)
SAD_MXNX3D(…)
SADMXN(…)
SAD_MXNX4D(…)
SAD_MXNX3D(…)
SADMXN(…)
SAD_MXNX4D(…)
SAD_MXNX3D(…)
SADMXN(…)
SAD_MXNX4D(…)
SAD_MXNX3D(…)
SADMXN(…)
SAD_MXNX4D(…)
SAD_MXNX3D(…)
SADMXN(…)
SAD_MXNX4D(…)
SAD_MXNX3D(…)
SADMXN(…)
SAD_MXNX4D(…)
SAD_MXNX3D(…)
SADMXN(…)
SAD_MXNX4D(…)
SAD_MXNX3D(…)
SADMXN(…)
SAD_MXNX4D(…)
SAD_MXNX3D(…)
SADMXN(…)
SAD_MXNX4D(…)
SAD_MXNX3D(…)
SADMXN(…)
SAD_MXNX4D(…)
SAD_MXNX3D(…)
#if !CONFIG_REALTIME_ONLY
SADMXN(4, 16)
SAD_MXNX4D(4, 16)
SADMXN(16, 4)
SAD_MXNX4D(16, 4)
SADMXN(8, 32)
SAD_MXNX4D(8, 32)
SADMXN(32, 8)
SAD_MXNX4D(32, 8)
SADMXN(16, 64)
SAD_MXNX4D(16, 64)
SADMXN(64, 16)
SAD_MXNX4D(64, 16)
SAD_MXNX3D(4, 16)
SAD_MXNX3D(16, 4)
SAD_MXNX3D(8, 32)
SAD_MXNX3D(32, 8)
SAD_MXNX3D(16, 64)
SAD_MXNX3D(64, 16)
#endif
#if CONFIG_AV1_HIGHBITDEPTH
static inline unsigned int highbd_sad(const uint8_t *a8, int a_stride,
const uint8_t *b8, int b_stride,
int width, int height) {
int y, x;
unsigned int sad = 0;
const uint16_t *a = CONVERT_TO_SHORTPTR(a8);
const uint16_t *b = CONVERT_TO_SHORTPTR(b8);
for (y = 0; y < height; y++) {
for (x = 0; x < width; x++) {
sad += abs(a[x] - b[x]);
}
a += a_stride;
b += b_stride;
}
return sad;
}
static inline unsigned int highbd_sadb(const uint8_t *a8, int a_stride,
const uint8_t *b8, int b_stride,
int width, int height) {
int y, x;
unsigned int sad = 0;
const uint16_t *a = CONVERT_TO_SHORTPTR(a8);
const uint16_t *b = CONVERT_TO_SHORTPTR(b8);
for (y = 0; y < height; y++) {
for (x = 0; x < width; x++) {
sad += abs(a[x] - b[x]);
}
a += a_stride;
b += b_stride;
}
return sad;
}
#define HIGHBD_SADMXN …
#define HIGHBD_SAD_MXNX4D …
#define HIGHBD_SAD_MXNX3D …
HIGHBD_SADMXN(128, 128)
HIGHBD_SAD_MXNX4D(128, 128)
HIGHBD_SAD_MXNX3D(128, 128)
HIGHBD_SADMXN(128, 64)
HIGHBD_SAD_MXNX4D(128, 64)
HIGHBD_SAD_MXNX3D(128, 64)
HIGHBD_SADMXN(64, 128)
HIGHBD_SAD_MXNX4D(64, 128)
HIGHBD_SAD_MXNX3D(64, 128)
HIGHBD_SADMXN(64, 64)
HIGHBD_SAD_MXNX4D(64, 64)
HIGHBD_SAD_MXNX3D(64, 64)
HIGHBD_SADMXN(64, 32)
HIGHBD_SAD_MXNX4D(64, 32)
HIGHBD_SAD_MXNX3D(64, 32)
HIGHBD_SADMXN(32, 64)
HIGHBD_SAD_MXNX4D(32, 64)
HIGHBD_SAD_MXNX3D(32, 64)
HIGHBD_SADMXN(32, 32)
HIGHBD_SAD_MXNX4D(32, 32)
HIGHBD_SAD_MXNX3D(32, 32)
HIGHBD_SADMXN(32, 16)
HIGHBD_SAD_MXNX4D(32, 16)
HIGHBD_SAD_MXNX3D(32, 16)
HIGHBD_SADMXN(16, 32)
HIGHBD_SAD_MXNX4D(16, 32)
HIGHBD_SAD_MXNX3D(16, 32)
HIGHBD_SADMXN(16, 16)
HIGHBD_SAD_MXNX4D(16, 16)
HIGHBD_SAD_MXNX3D(16, 16)
HIGHBD_SADMXN(16, 8)
HIGHBD_SAD_MXNX4D(16, 8)
HIGHBD_SAD_MXNX3D(16, 8)
HIGHBD_SADMXN(8, 16)
HIGHBD_SAD_MXNX4D(8, 16)
HIGHBD_SAD_MXNX3D(8, 16)
HIGHBD_SADMXN(8, 8)
HIGHBD_SAD_MXNX4D(8, 8)
HIGHBD_SAD_MXNX3D(8, 8)
HIGHBD_SADMXN(8, 4)
HIGHBD_SAD_MXNX4D(8, 4)
HIGHBD_SAD_MXNX3D(8, 4)
HIGHBD_SADMXN(4, 8)
HIGHBD_SAD_MXNX4D(4, 8)
HIGHBD_SAD_MXNX3D(4, 8)
HIGHBD_SADMXN(4, 4)
HIGHBD_SAD_MXNX4D(4, 4)
HIGHBD_SAD_MXNX3D(4, 4)
#if !CONFIG_REALTIME_ONLY
HIGHBD_SADMXN(4, 16)
HIGHBD_SAD_MXNX4D(4, 16)
HIGHBD_SADMXN(16, 4)
HIGHBD_SAD_MXNX4D(16, 4)
HIGHBD_SADMXN(8, 32)
HIGHBD_SAD_MXNX4D(8, 32)
HIGHBD_SADMXN(32, 8)
HIGHBD_SAD_MXNX4D(32, 8)
HIGHBD_SADMXN(16, 64)
HIGHBD_SAD_MXNX4D(16, 64)
HIGHBD_SADMXN(64, 16)
HIGHBD_SAD_MXNX4D(64, 16)
HIGHBD_SAD_MXNX3D(4, 16)
HIGHBD_SAD_MXNX3D(16, 4)
HIGHBD_SAD_MXNX3D(8, 32)
HIGHBD_SAD_MXNX3D(32, 8)
HIGHBD_SAD_MXNX3D(16, 64)
HIGHBD_SAD_MXNX3D(64, 16)
#endif
#endif