1
0
mirror of https://github.com/FFmpeg/FFmpeg.git synced 2025-11-23 21:54:53 +02:00

tests/checkasm/mpegvideoencdsp: Test denoise_dct

Reviewed-by: Lynne <dev@lynne.ee>
Signed-off-by: Andreas Rheinhardt <andreas.rheinhardt@outlook.com>
This commit is contained in:
Andreas Rheinhardt
2025-11-15 19:06:14 +01:00
parent 1c00e09427
commit 0d3a88e55f

View File

@@ -37,6 +37,37 @@
buf[j] = rnd() % (max - min + 1) + min; \ buf[j] = rnd() % (max - min + 1) + min; \
} while (0) } while (0)
static void check_denoise_dct(MpegvideoEncDSPContext *c)
{
declare_func(void, int16_t block[64], int dct_error_sum[64],
const uint16_t dct_offset[64]);
if (check_func(c->denoise_dct, "denoise_dct")) {
DECLARE_ALIGNED(16, int16_t, block_ref)[64];
DECLARE_ALIGNED(16, int16_t, block_new)[64];
DECLARE_ALIGNED(16, int, dct_error_sum_ref)[64];
DECLARE_ALIGNED(16, int, dct_error_sum_new)[64];
DECLARE_ALIGNED(16, uint16_t, dct_offset)[64];
for (size_t i = 0; i < FF_ARRAY_ELEMS(block_ref); ++i) {
unsigned random = rnd();
block_ref[i] = random & (1 << 16) ? random : 0;
}
randomize_buffers(dct_offset, sizeof(dct_offset));
randomize_buffer_clipped(dct_error_sum_ref, 0, (1 << 24) - 1);
memcpy(block_new, block_ref, sizeof(block_new));
memcpy(dct_error_sum_new, dct_error_sum_ref, sizeof(dct_error_sum_ref));
call_ref(block_ref, dct_error_sum_ref, dct_offset);
call_new(block_new, dct_error_sum_new, dct_offset);
if (memcmp(block_ref, block_new, sizeof(block_ref)) ||
memcmp(dct_error_sum_new, dct_error_sum_ref, sizeof(dct_error_sum_new)))
fail();
bench_new(block_new, dct_error_sum_new, dct_offset);
}
}
static void check_add_8x8basis(MpegvideoEncDSPContext *c) static void check_add_8x8basis(MpegvideoEncDSPContext *c)
{ {
declare_func(void, int16_t rem[64], const int16_t basis[64], int scale); declare_func(void, int16_t rem[64], const int16_t basis[64], int scale);
@@ -166,6 +197,8 @@ void checkasm_check_mpegvideoencdsp(void)
ff_mpegvideoencdsp_init(&c, &avctx); ff_mpegvideoencdsp_init(&c, &avctx);
check_denoise_dct(&c);
report("denoise_dct");
check_pix_sum(&c); check_pix_sum(&c);
report("pix_sum"); report("pix_sum");
check_pix_norm1(&c); check_pix_norm1(&c);