1
0
mirror of https://github.com/FFmpeg/FFmpeg.git synced 2024-12-23 12:43:46 +02:00

checkasm: pass context as pointer

Signed-off-by: xufuji456 <839789740@qq.com>
Signed-off-by: Martin Storsjö <martin@martin.st>
This commit is contained in:
xufuji456 2023-04-13 15:09:19 +08:00 committed by Martin Storsjö
parent 30def6365d
commit 1e91a39502
6 changed files with 39 additions and 39 deletions

View File

@ -66,7 +66,7 @@ static void compare_add_res(int size, ptrdiff_t stride, int overflow_test, int m
bench_new(dst1, res1, stride); bench_new(dst1, res1, stride);
} }
static void check_add_res(HEVCDSPContext h, int bit_depth) static void check_add_res(HEVCDSPContext *h, int bit_depth)
{ {
int i; int i;
int mask = bit_depth == 8 ? 0xFFFF : bit_depth == 10 ? 0x03FF : 0x07FF; int mask = bit_depth == 8 ? 0xFFFF : bit_depth == 10 ? 0x03FF : 0x07FF;
@ -76,7 +76,7 @@ static void check_add_res(HEVCDSPContext h, int bit_depth)
int size = block_size * block_size; int size = block_size * block_size;
ptrdiff_t stride = block_size << (bit_depth > 8); ptrdiff_t stride = block_size << (bit_depth > 8);
if (check_func(h.add_residual[i - 2], "hevc_add_res_%dx%d_%d", block_size, block_size, bit_depth)) { if (check_func(h->add_residual[i - 2], "hevc_add_res_%dx%d_%d", block_size, block_size, bit_depth)) {
compare_add_res(size, stride, 0, mask); compare_add_res(size, stride, 0, mask);
// overflow test for res = -32768 // overflow test for res = -32768
compare_add_res(size, stride, 1, mask); compare_add_res(size, stride, 1, mask);
@ -92,7 +92,7 @@ void checkasm_check_hevc_add_res(void)
HEVCDSPContext h; HEVCDSPContext h;
ff_hevc_dsp_init(&h, bit_depth); ff_hevc_dsp_init(&h, bit_depth);
check_add_res(h, bit_depth); check_add_res(&h, bit_depth);
} }
report("add_residual"); report("add_residual");
} }

View File

@ -45,7 +45,7 @@ static const uint32_t pixel_mask[3] = { 0xffffffff, 0x03ff03ff, 0x0fff0fff };
} \ } \
} while (0) } while (0)
static void check_deblock_chroma(HEVCDSPContext h, int bit_depth) static void check_deblock_chroma(HEVCDSPContext *h, int bit_depth)
{ {
int32_t tc[2] = { 0, 0 }; int32_t tc[2] = { 0, 0 };
// no_p, no_q can only be { 0,0 } for the simpler assembly (non *_c // no_p, no_q can only be { 0,0 } for the simpler assembly (non *_c
@ -57,7 +57,7 @@ static void check_deblock_chroma(HEVCDSPContext h, int bit_depth)
declare_func_emms(AV_CPU_FLAG_MMX, void, uint8_t *pix, ptrdiff_t stride, int32_t *tc, uint8_t *no_p, uint8_t *no_q); declare_func_emms(AV_CPU_FLAG_MMX, void, uint8_t *pix, ptrdiff_t stride, int32_t *tc, uint8_t *no_p, uint8_t *no_q);
if (check_func(h.hevc_h_loop_filter_chroma, "hevc_h_loop_filter_chroma%d", bit_depth)) { if (check_func(h->hevc_h_loop_filter_chroma, "hevc_h_loop_filter_chroma%d", bit_depth)) {
for (int i = 0; i < 4; i++) { for (int i = 0; i < 4; i++) {
randomize_buffers(buf0, buf1, BUF_SIZE); randomize_buffers(buf0, buf1, BUF_SIZE);
// see betatable[] in hevc_filter.c // see betatable[] in hevc_filter.c
@ -72,7 +72,7 @@ static void check_deblock_chroma(HEVCDSPContext h, int bit_depth)
bench_new(buf1 + BUF_OFFSET, BUF_STRIDE, tc, no_p, no_q); bench_new(buf1 + BUF_OFFSET, BUF_STRIDE, tc, no_p, no_q);
} }
if (check_func(h.hevc_v_loop_filter_chroma, "hevc_v_loop_filter_chroma%d", bit_depth)) { if (check_func(h->hevc_v_loop_filter_chroma, "hevc_v_loop_filter_chroma%d", bit_depth)) {
for (int i = 0; i < 4; i++) { for (int i = 0; i < 4; i++) {
randomize_buffers(buf0, buf1, BUF_SIZE); randomize_buffers(buf0, buf1, BUF_SIZE);
// see betatable[] in hevc_filter.c // see betatable[] in hevc_filter.c
@ -95,7 +95,7 @@ void checkasm_check_hevc_deblock(void)
for (bit_depth = 8; bit_depth <= 12; bit_depth += 2) { for (bit_depth = 8; bit_depth <= 12; bit_depth += 2) {
HEVCDSPContext h; HEVCDSPContext h;
ff_hevc_dsp_init(&h, bit_depth); ff_hevc_dsp_init(&h, bit_depth);
check_deblock_chroma(h, bit_depth); check_deblock_chroma(&h, bit_depth);
} }
report("chroma"); report("chroma");
} }

View File

@ -36,7 +36,7 @@
} \ } \
} while (0) } while (0)
static void check_idct(HEVCDSPContext h, int bit_depth) static void check_idct(HEVCDSPContext *h, int bit_depth)
{ {
int i; int i;
LOCAL_ALIGNED(32, int16_t, coeffs0, [32 * 32]); LOCAL_ALIGNED(32, int16_t, coeffs0, [32 * 32]);
@ -50,7 +50,7 @@ static void check_idct(HEVCDSPContext h, int bit_depth)
randomize_buffers(coeffs0, size); randomize_buffers(coeffs0, size);
memcpy(coeffs1, coeffs0, sizeof(*coeffs0) * size); memcpy(coeffs1, coeffs0, sizeof(*coeffs0) * size);
if (check_func(h.idct[i - 2], "hevc_idct_%dx%d_%d", block_size, block_size, bit_depth)) { if (check_func(h->idct[i - 2], "hevc_idct_%dx%d_%d", block_size, block_size, bit_depth)) {
call_ref(coeffs0, col_limit); call_ref(coeffs0, col_limit);
call_new(coeffs1, col_limit); call_new(coeffs1, col_limit);
if (memcmp(coeffs0, coeffs1, sizeof(*coeffs0) * size)) if (memcmp(coeffs0, coeffs1, sizeof(*coeffs0) * size))
@ -60,7 +60,7 @@ static void check_idct(HEVCDSPContext h, int bit_depth)
} }
} }
static void check_idct_dc(HEVCDSPContext h, int bit_depth) static void check_idct_dc(HEVCDSPContext *h, int bit_depth)
{ {
int i; int i;
LOCAL_ALIGNED(32, int16_t, coeffs0, [32 * 32]); LOCAL_ALIGNED(32, int16_t, coeffs0, [32 * 32]);
@ -74,7 +74,7 @@ static void check_idct_dc(HEVCDSPContext h, int bit_depth)
randomize_buffers(coeffs0, size); randomize_buffers(coeffs0, size);
memcpy(coeffs1, coeffs0, sizeof(*coeffs0) * size); memcpy(coeffs1, coeffs0, sizeof(*coeffs0) * size);
if (check_func(h.idct_dc[i - 2], "hevc_idct_%dx%d_dc_%d", block_size, block_size, bit_depth)) { if (check_func(h->idct_dc[i - 2], "hevc_idct_%dx%d_dc_%d", block_size, block_size, bit_depth)) {
call_ref(coeffs0); call_ref(coeffs0);
call_new(coeffs1); call_new(coeffs1);
if (memcmp(coeffs0, coeffs1, sizeof(*coeffs0) * size)) if (memcmp(coeffs0, coeffs1, sizeof(*coeffs0) * size))
@ -113,7 +113,7 @@ void checkasm_check_hevc_idct(void)
HEVCDSPContext h; HEVCDSPContext h;
ff_hevc_dsp_init(&h, bit_depth); ff_hevc_dsp_init(&h, bit_depth);
check_idct_dc(h, bit_depth); check_idct_dc(&h, bit_depth);
} }
report("idct_dc"); report("idct_dc");
@ -121,7 +121,7 @@ void checkasm_check_hevc_idct(void)
HEVCDSPContext h; HEVCDSPContext h;
ff_hevc_dsp_init(&h, bit_depth); ff_hevc_dsp_init(&h, bit_depth);
check_idct(h, bit_depth); check_idct(&h, bit_depth);
} }
report("idct"); report("idct");

View File

@ -66,7 +66,7 @@ static const uint32_t sao_size[5] = {8, 16, 32, 48, 64};
} \ } \
} while (0) } while (0)
static void check_sao_band(HEVCDSPContext h, int bit_depth) static void check_sao_band(HEVCDSPContext *h, int bit_depth)
{ {
int i; int i;
LOCAL_ALIGNED_32(uint8_t, dst0, [BUF_SIZE]); LOCAL_ALIGNED_32(uint8_t, dst0, [BUF_SIZE]);
@ -83,7 +83,7 @@ static void check_sao_band(HEVCDSPContext h, int bit_depth)
declare_func_emms(AV_CPU_FLAG_MMX, void, uint8_t *dst, uint8_t *src, ptrdiff_t dst_stride, ptrdiff_t src_stride, declare_func_emms(AV_CPU_FLAG_MMX, void, uint8_t *dst, uint8_t *src, ptrdiff_t dst_stride, ptrdiff_t src_stride,
int16_t *sao_offset_val, int sao_left_class, int width, int height); int16_t *sao_offset_val, int sao_left_class, int width, int height);
if (check_func(h.sao_band_filter[i], "hevc_sao_band_%d_%d", block_size, bit_depth)) { if (check_func(h->sao_band_filter[i], "hevc_sao_band_%d_%d", block_size, bit_depth)) {
for (int w = prev_size + 4; w <= block_size; w += 4) { for (int w = prev_size + 4; w <= block_size; w += 4) {
randomize_buffers(src0, src1, BUF_SIZE); randomize_buffers(src0, src1, BUF_SIZE);
@ -103,7 +103,7 @@ static void check_sao_band(HEVCDSPContext h, int bit_depth)
} }
} }
static void check_sao_edge(HEVCDSPContext h, int bit_depth) static void check_sao_edge(HEVCDSPContext *h, int bit_depth)
{ {
int i; int i;
LOCAL_ALIGNED_32(uint8_t, dst0, [BUF_SIZE]); LOCAL_ALIGNED_32(uint8_t, dst0, [BUF_SIZE]);
@ -127,7 +127,7 @@ static void check_sao_edge(HEVCDSPContext h, int bit_depth)
memset(dst0, 0, BUF_SIZE); memset(dst0, 0, BUF_SIZE);
memset(dst1, 0, BUF_SIZE); memset(dst1, 0, BUF_SIZE);
if (check_func(h.sao_edge_filter[i], "hevc_sao_edge_%d_%d", block_size, bit_depth)) { if (check_func(h->sao_edge_filter[i], "hevc_sao_edge_%d_%d", block_size, bit_depth)) {
call_ref(dst0, src0 + offset, stride, offset_val, eo, w, block_size); call_ref(dst0, src0 + offset, stride, offset_val, eo, w, block_size);
call_new(dst1, src1 + offset, stride, offset_val, eo, w, block_size); call_new(dst1, src1 + offset, stride, offset_val, eo, w, block_size);
for (int j = 0; j < block_size; j++) { for (int j = 0; j < block_size; j++) {
@ -148,7 +148,7 @@ void checkasm_check_hevc_sao(void)
HEVCDSPContext h; HEVCDSPContext h;
ff_hevc_dsp_init(&h, bit_depth); ff_hevc_dsp_init(&h, bit_depth);
check_sao_band(h, bit_depth); check_sao_band(&h, bit_depth);
} }
report("sao_band"); report("sao_band");
@ -156,7 +156,7 @@ void checkasm_check_hevc_sao(void)
HEVCDSPContext h; HEVCDSPContext h;
ff_hevc_dsp_init(&h, bit_depth); ff_hevc_dsp_init(&h, bit_depth);
check_sao_edge(h, bit_depth); check_sao_edge(&h, bit_depth);
} }
report("sao_edge"); report("sao_edge");
} }

View File

@ -35,7 +35,7 @@
buf[j] = rnd() & 0xFFFF; \ buf[j] = rnd() & 0xFFFF; \
} while (0) } while (0)
static void check_add_int16(HuffYUVDSPContext c, unsigned mask, int width, const char * name) static void check_add_int16(HuffYUVDSPContext *c, unsigned mask, int width, const char * name)
{ {
uint16_t *src0 = av_mallocz(width * sizeof(uint16_t)); uint16_t *src0 = av_mallocz(width * sizeof(uint16_t));
uint16_t *src1 = av_mallocz(width * sizeof(uint16_t)); uint16_t *src1 = av_mallocz(width * sizeof(uint16_t));
@ -50,7 +50,7 @@ static void check_add_int16(HuffYUVDSPContext c, unsigned mask, int width, const
randomize_buffers(src0, width); randomize_buffers(src0, width);
memcpy(src1, src0, width * sizeof(uint16_t)); memcpy(src1, src0, width * sizeof(uint16_t));
if (check_func(c.add_int16, "%s", name)) { if (check_func(c->add_int16, "%s", name)) {
call_ref(dst0, src0, mask, width); call_ref(dst0, src0, mask, width);
call_new(dst1, src1, mask, width); call_new(dst1, src1, mask, width);
if (memcmp(dst0, dst1, width * sizeof(uint16_t))) if (memcmp(dst0, dst1, width * sizeof(uint16_t)))
@ -72,10 +72,10 @@ void checkasm_check_huffyuvdsp(void)
ff_huffyuvdsp_init(&c, AV_PIX_FMT_YUV422P); ff_huffyuvdsp_init(&c, AV_PIX_FMT_YUV422P);
/*! test width not multiple of mmsize */ /*! test width not multiple of mmsize */
check_add_int16(c, 65535, width, "add_int16_rnd_width"); check_add_int16(&c, 65535, width, "add_int16_rnd_width");
report("add_int16_rnd_width"); report("add_int16_rnd_width");
/*! test always with the same size (for perf test) */ /*! test always with the same size (for perf test) */
check_add_int16(c, 65535, 16*128, "add_int16_128"); check_add_int16(&c, 65535, 16*128, "add_int16_128");
report("add_int16_128"); report("add_int16_128");
} }

View File

@ -42,7 +42,7 @@
randomize_buffers(a0, width * sizeof(type));\ randomize_buffers(a0, width * sizeof(type));\
memcpy(a1, a0, width*sizeof(type));\ memcpy(a1, a0, width*sizeof(type));\
static void check_add_bytes(LLVidDSPContext c, int width) static void check_add_bytes(LLVidDSPContext *c, int width)
{ {
uint8_t *dst0 = av_mallocz(width); uint8_t *dst0 = av_mallocz(width);
uint8_t *dst1 = av_mallocz(width); uint8_t *dst1 = av_mallocz(width);
@ -56,7 +56,7 @@ static void check_add_bytes(LLVidDSPContext c, int width)
fail(); fail();
if (check_func(c.add_bytes, "add_bytes")) { if (check_func(c->add_bytes, "add_bytes")) {
call_ref(dst0, src0, width); call_ref(dst0, src0, width);
call_new(dst1, src1, width); call_new(dst1, src1, width);
if (memcmp(dst0, dst1, width)) if (memcmp(dst0, dst1, width))
@ -70,7 +70,7 @@ static void check_add_bytes(LLVidDSPContext c, int width)
av_free(dst1); av_free(dst1);
} }
static void check_add_median_pred(LLVidDSPContext c, int width) { static void check_add_median_pred(LLVidDSPContext *c, int width) {
int A0, A1, B0, B1; int A0, A1, B0, B1;
uint8_t *dst0 = av_mallocz(width); uint8_t *dst0 = av_mallocz(width);
uint8_t *dst1 = av_mallocz(width); uint8_t *dst1 = av_mallocz(width);
@ -91,7 +91,7 @@ static void check_add_median_pred(LLVidDSPContext c, int width) {
B1 = B0; B1 = B0;
if (check_func(c.add_median_pred, "add_median_pred")) { if (check_func(c->add_median_pred, "add_median_pred")) {
call_ref(dst0, src0, diff0, width, &A0, &B0); call_ref(dst0, src0, diff0, width, &A0, &B0);
call_new(dst1, src1, diff1, width, &A1, &B1); call_new(dst1, src1, diff1, width, &A1, &B1);
if (memcmp(dst0, dst1, width) || (A0 != A1) || (B0 != B1)) if (memcmp(dst0, dst1, width) || (A0 != A1) || (B0 != B1))
@ -107,7 +107,7 @@ static void check_add_median_pred(LLVidDSPContext c, int width) {
av_free(dst1); av_free(dst1);
} }
static void check_add_left_pred(LLVidDSPContext c, int width, int acc, const char * report) static void check_add_left_pred(LLVidDSPContext *c, int width, int acc, const char * report)
{ {
int res0, res1; int res0, res1;
uint8_t *dst0 = av_mallocz(width); uint8_t *dst0 = av_mallocz(width);
@ -121,7 +121,7 @@ static void check_add_left_pred(LLVidDSPContext c, int width, int acc, const cha
if (!dst0 || !dst1) if (!dst0 || !dst1)
fail(); fail();
if (check_func(c.add_left_pred, "%s", report)) { if (check_func(c->add_left_pred, "%s", report)) {
res0 = call_ref(dst0, src0, width, acc); res0 = call_ref(dst0, src0, width, acc);
res1 = call_new(dst1, src1, width, acc); res1 = call_new(dst1, src1, width, acc);
if ((res0 & 0xFF) != (res1 & 0xFF)||\ if ((res0 & 0xFF) != (res1 & 0xFF)||\
@ -136,7 +136,7 @@ static void check_add_left_pred(LLVidDSPContext c, int width, int acc, const cha
av_free(dst1); av_free(dst1);
} }
static void check_add_left_pred_16(LLVidDSPContext c, unsigned mask, int width, unsigned acc, const char * report) static void check_add_left_pred_16(LLVidDSPContext *c, unsigned mask, int width, unsigned acc, const char * report)
{ {
int res0, res1; int res0, res1;
uint16_t *dst0 = av_calloc(width, sizeof(*dst0)); uint16_t *dst0 = av_calloc(width, sizeof(*dst0));
@ -150,7 +150,7 @@ static void check_add_left_pred_16(LLVidDSPContext c, unsigned mask, int width,
if (!dst0 || !dst1) if (!dst0 || !dst1)
fail(); fail();
if (check_func(c.add_left_pred_int16, "%s", report)) { if (check_func(c->add_left_pred_int16, "%s", report)) {
res0 = call_ref(dst0, src0, mask, width, acc); res0 = call_ref(dst0, src0, mask, width, acc);
res1 = call_new(dst1, src1, mask, width, acc); res1 = call_new(dst1, src1, mask, width, acc);
if ((res0 &0xFFFF) != (res1 &0xFFFF)||\ if ((res0 &0xFFFF) != (res1 &0xFFFF)||\
@ -165,7 +165,7 @@ static void check_add_left_pred_16(LLVidDSPContext c, unsigned mask, int width,
av_free(dst1); av_free(dst1);
} }
static void check_add_gradient_pred(LLVidDSPContext c, int w) { static void check_add_gradient_pred(LLVidDSPContext *c, int w) {
int src_size, stride; int src_size, stride;
uint8_t *src0, *src1; uint8_t *src0, *src1;
declare_func(void, uint8_t *src, const ptrdiff_t stride, declare_func(void, uint8_t *src, const ptrdiff_t stride,
@ -178,7 +178,7 @@ static void check_add_gradient_pred(LLVidDSPContext c, int w) {
init_buffer(src0, src1, uint8_t, src_size); init_buffer(src0, src1, uint8_t, src_size);
if (check_func(c.add_gradient_pred, "add_gradient_pred")) { if (check_func(c->add_gradient_pred, "add_gradient_pred")) {
call_ref(src0 + stride + 32, stride, w); call_ref(src0 + stride + 32, stride, w);
call_new(src1 + stride + 32, stride, w); call_new(src1 + stride + 32, stride, w);
if (memcmp(src0, src1, stride)||/* previous line doesn't change */ if (memcmp(src0, src1, stride)||/* previous line doesn't change */
@ -200,21 +200,21 @@ void checkasm_check_llviddsp(void)
ff_llviddsp_init(&c); ff_llviddsp_init(&c);
check_add_bytes(c, width); check_add_bytes(&c, width);
report("add_bytes"); report("add_bytes");
check_add_median_pred(c, width); check_add_median_pred(&c, width);
report("add_median_pred"); report("add_median_pred");
check_add_left_pred(c, width, 0, "add_left_pred_zero"); check_add_left_pred(&c, width, 0, "add_left_pred_zero");
report("add_left_pred_zero"); report("add_left_pred_zero");
check_add_left_pred(c, width, accRnd, "add_left_pred_rnd_acc"); check_add_left_pred(&c, width, accRnd, "add_left_pred_rnd_acc");
report("add_left_pred_rnd_acc"); report("add_left_pred_rnd_acc");
check_add_left_pred_16(c, 255, width, accRnd, "add_left_pred_int16"); check_add_left_pred_16(&c, 255, width, accRnd, "add_left_pred_int16");
report("add_left_pred_int16"); report("add_left_pred_int16");
check_add_gradient_pred(c, width); check_add_gradient_pred(&c, width);
report("add_gradient_pred"); report("add_gradient_pred");
} }