33static const uint32_t
pixel_mask[] = { 0xffffffff, 0x03ff03ff, 0x0fff0fff, 0x3fff3fff, 0xffffffff };
34static const int sizes[] = { 2, 4, 8, 16, 32, 64, 128 };
36#define SIZEOF_PIXEL ((bit_depth + 7) / 8)
37#define PIXEL_STRIDE (MAX_CTU_SIZE * 2)
40#define SRC_EXTRA (EXTRA_BEFORE + EXTRA_AFTER) * 2
41#define SRC_BUF_SIZE (PIXEL_STRIDE + SRC_EXTRA) * (PIXEL_STRIDE + SRC_EXTRA)
42#define DST_BUF_SIZE (MAX_CTU_SIZE * MAX_CTU_SIZE * 2)
43#define SRC_OFFSET ((PIXEL_STRIDE + EXTRA_BEFORE * 2) * EXTRA_BEFORE)
45#define randomize_buffers(buf0, buf1, size, mask) \
48 for (k = 0; k < size; k += 4 / sizeof(*buf0)) { \
49 uint32_t r = rnd() & mask; \
50 AV_WN32A(buf0 + k, r); \
51 AV_WN32A(buf1 + k, r); \
55#define randomize_pixels(buf0, buf1, size) \
57 uint32_t mask = pixel_mask[(bit_depth - 8) >> 1]; \
58 randomize_buffers(buf0, buf1, size, mask); \
61#define randomize_avg_src(buf0, buf1, size) \
63 uint32_t mask = 0x3fff3fff; \
64 randomize_buffers(buf0, buf1, size, mask); \
67#define randomize_prof_src(buf0, buf1, size) \
69 const int shift = 14 - bit_depth; \
70 const int mask16 = 0x3fff >> shift << shift; \
71 uint32_t mask = (mask16 << 16) | mask16; \
72 randomize_buffers(buf0, buf1, size, mask); \
89 for (
int i = 0;
i < 2;
i++) {
90 for (
int j = 0; j < 2; j++) {
94 const int mx =
rnd() % 16;
95 const int my =
rnd() % 16;
99 switch ((j << 1) |
i) {
100 case 0:
type =
"put_luma_pixels";
break;
101 case 1:
type =
"put_luma_h";
break;
102 case 2:
type =
"put_luma_v";
break;
103 case 3:
type =
"put_luma_hv";
break;
133 const int8_t *
hf,
const int8_t *
vf,
int width);
138 for (
int i = 0;
i < 2;
i++) {
139 for (
int j = 0; j < 2; j++) {
149 switch ((j << 1) |
i) {
150 case 0:
type =
"put_uni_pixels";
break;
151 case 1:
type =
"put_uni_h";
break;
152 case 2:
type =
"put_uni_v";
break;
153 case 3:
type =
"put_uni_hv";
break;
183 const int height,
const int8_t *
hf,
const int8_t *
vf,
const int width);
188 for (
int i = 0;
i < 2;
i++) {
189 for (
int j = 0; j < 2; j++) {
198 switch ((j << 1) |
i) {
199 case 0:
type =
"put_chroma_pixels";
break;
200 case 1:
type =
"put_chroma_h";
break;
201 case 2:
type =
"put_chroma_v";
break;
202 case 3:
type =
"put_chroma_hv";
break;
232 const int8_t *
hf,
const int8_t *
vf,
int width);
237 for (
int i = 0;
i < 2;
i++) {
238 for (
int j = 0; j < 2; j++) {
248 switch ((j << 1) |
i) {
249 case 0:
type =
"put_uni_pixels";
break;
250 case 1:
type =
"put_uni_h";
break;
251 case 2:
type =
"put_uni_v";
break;
252 case 3:
type =
"put_uni_hv";
break;
273#define AVG_SRC_BUF_SIZE (MAX_CTU_SIZE * MAX_CTU_SIZE)
274#define AVG_DST_BUF_SIZE (MAX_PB_SIZE * MAX_PB_SIZE * 2)
309 int denom,
int w0,
int w1,
int o);
311 const int denom =
rnd() % 8;
312 const int w0 =
rnd() % 256 - 128;
313 const int w1 =
rnd() % 256 - 128;
314 const int o0 =
rnd() % 256 - 128;
315 const int o1 =
rnd() % 256 - 128;
342 const int dst_stride =
MAX_PB_SIZE *
sizeof(int16_t);
351 for (
int i = 0;
i < 2;
i++) {
352 for (
int j = 0; j < 2; j++) {
353 for (
int h = 8;
h <= 16;
h *= 2) {
354 for (
int w = 8;
w <= 16;
w *= 2) {
364 switch ((j << 1) |
i) {
365 case 0:
type =
"dmvr";
break;
366 case 1:
type =
"dmvr_h";
break;
367 case 2:
type =
"dmvr_v";
break;
368 case 3:
type =
"dmvr_hv";
break;
376 for (
int k = 0; k <
pred_h; k++) {
377 if (memcmp(dst0 + k * dst_stride, dst1 + k * dst_stride, pred_w *
sizeof(int16_t))) {
393#define BDOF_BLOCK_SIZE 16
394#define BDOF_SRC_SIZE (MAX_PB_SIZE* (BDOF_BLOCK_SIZE + 2))
395#define BDOF_SRC_OFFSET (MAX_PB_SIZE + 1)
396#define BDOF_DST_SIZE (BDOF_BLOCK_SIZE * BDOF_BLOCK_SIZE * 2)
407 declare_func(
void, uint8_t *
dst, ptrdiff_t dst_stride,
const int16_t *
src0,
const int16_t *
src1,
int block_w,
int block_h);
415 for (
int h = 8;
h <= 16;
h *= 2) {
416 for (
int w = 8;
w <= 16;
w *= 2) {
440 declare_func(
int,
const int16_t *
src0,
const int16_t *
src1,
int dx,
int dy,
int block_w,
int block_h);
444 for (
int h = 8;
h <= 16;
h *= 2) {
445 for (
int w = 8;
w <= 16;
w *= 2) {
446 for(
int offy = 0; offy <= 4; offy++) {
447 for(
int offx = 0; offx <= 4; offx++) {
458 if (result1 != result0)
460 if(offx == 0 && offy == 0)
uint8_t ptrdiff_t const uint8_t ptrdiff_t int intptr_t intptr_t int int16_t const uint8_t ptrdiff_t srcstride
uint8_t ptrdiff_t const uint8_t ptrdiff_t int intptr_t intptr_t my
uint8_t ptrdiff_t const uint8_t ptrdiff_t int const int8_t const int8_t * vf
uint8_t ptrdiff_t const uint8_t ptrdiff_t int intptr_t mx
uint8_t ptrdiff_t const uint8_t ptrdiff_t int const int8_t * hf
uint8_t ptrdiff_t const uint8_t ptrdiff_t int intptr_t intptr_t int int16_t * dst
static void bit_depth(AudioStatsContext *s, const uint64_t *const mask, uint8_t *depth)
#define i(width, name, range_min, range_max)
common internal and external API header
static const int sizes[][2]
static void FUNC pred_h(uint8_t *_src, const uint8_t *_left, const int w, const int h, const ptrdiff_t stride)
#define LOCAL_ALIGNED_32(t, v,...)
static const uint32_t pixel_mask[5]
const int8_t ff_vvc_inter_luma_filters[VVC_INTER_LUMA_FILTER_TYPES][VVC_INTER_LUMA_FACTS][VVC_INTER_LUMA_TAPS]
const int8_t ff_vvc_inter_chroma_filters[VVC_INTER_CHROMA_FILTER_TYPES][VVC_INTER_CHROMA_FACTS][VVC_INTER_CHROMA_TAPS]
#define VVC_INTER_LUMA_FILTER_TYPES
#define VVC_INTER_LUMA_FACTS
#define VVC_INTER_LUMA_DMVR_FACTS
#define VVC_INTER_CHROMA_FILTER_TYPES
#define VVC_INTER_CHROMA_FACTS
void ff_vvc_dsp_init(VVCDSPContext *vvcdsp, int bit_depth)
static av_noinline void check_bdof(void)
static av_noinline void check_avg(void)
#define randomize_avg_src(buf0, buf1, size)
static av_noinline void check_put_vvc_luma(void)
#define randomize_pixels(buf0, buf1, size)
#define randomize_prof_src(buf0, buf1, size)
static av_noinline void check_put_vvc_luma_uni(void)
static av_noinline void check_put_vvc_chroma(void)
void checkasm_check_vvc_mc(void)
static av_noinline void check_put_vvc_chroma_uni(void)
static av_noinline void check_dmvr(void)
static av_noinline void check_vvc_sad(void)