30 static const uint32_t
pixel_mask[3] = { 0xffffffff, 0x03ff03ff, 0x0fff0fff };
31 static const uint32_t
sao_size[5] = {8, 16, 32, 48, 64};
33 #define SIZEOF_PIXEL ((bit_depth + 7) / 8)
34 #define PIXEL_STRIDE (2*MAX_PB_SIZE + AV_INPUT_BUFFER_PADDING_SIZE) //same with sao_edge src_stride
35 #define BUF_SIZE (PIXEL_STRIDE * (64+2) * 2) //+2 for top and bottom row, *2 for high bit depth
36 #define OFFSET_THRESH (1 << (bit_depth - 5))
37 #define OFFSET_LENGTH 5
39 #define randomize_buffers(buf0, buf1, size) \
41 uint32_t mask = pixel_mask[(bit_depth - 8) >> 1]; \
43 for (k = 0; k < size; k += 4) { \
44 uint32_t r = rnd() & mask; \
45 AV_WN32A(buf0 + k, r); \
46 AV_WN32A(buf1 + k, r); \
50 #define randomize_buffers2(buf, size) \
52 uint32_t max_offset = OFFSET_THRESH; \
54 if (bit_depth == 8) { \
55 for (k = 0; k < size; k++) { \
56 uint8_t r = rnd() % max_offset; \
60 for (k = 0; k < size; k++) { \
61 uint16_t r = rnd() % max_offset; \
75 int left_class =
rnd()%32;
77 for (
i = 0;
i <= 4;
i++) {
81 declare_func(
void, uint8_t *dst, uint8_t *
src, ptrdiff_t dst_stride, ptrdiff_t src_stride,
82 int16_t *sao_offset_val,
int sao_left_class,
int width,
int height);
86 for (
int w = prev_size + 4;
w <= block_size;
w += 4) {
94 for (
int j = 0; j < block_size; j++) {
114 for (
i = 0;
i <= 4;
i++) {
120 int16_t *sao_offset_val,
int eo,
int width,
int height);
122 for (
int w = prev_size + 4;
w <= block_size;
w += 4) {
131 for (
int j = 0; j < block_size; j++) {