This is an automated email from the git hooks/post-receive script. Git pushed a commit to branch master in repository ffmpeg.
commit 56b8769a1c26dac8fe51319f0c2b94de67a64217 Author: Andreas Rheinhardt <[email protected]> AuthorDate: Wed Dec 10 15:28:06 2025 +0100 Commit: Andreas Rheinhardt <[email protected]> CommitDate: Sun Dec 14 10:16:32 2025 +0100 tests/checkasm/llviddspenc: Add test for sub_median_pred Reviewed-by: Lynne <[email protected]> Signed-off-by: Andreas Rheinhardt <[email protected]> --- tests/checkasm/llviddspenc.c | 47 +++++++++++++++++++++++++++++++++++++++----- 1 file changed, 42 insertions(+), 5 deletions(-) diff --git a/tests/checkasm/llviddspenc.c b/tests/checkasm/llviddspenc.c index c2eb63519f..8757b22618 100644 --- a/tests/checkasm/llviddspenc.c +++ b/tests/checkasm/llviddspenc.c @@ -28,11 +28,12 @@ #include "checkasm.h" -#define randomize_buffers(buf, size) \ - do { \ - int j; \ - for (j = 0; j < size; j+=4) \ - AV_WN32(buf + j, rnd()); \ +#define randomize_buffers(buf, size) \ + do { \ + for (size_t j = 0; j < size & ~3; j += 4) \ + AV_WN32(buf + j, rnd()); \ + for (size_t j = 0; j < size; ++j) \ + buf[j] = rnd(); \ } while (0) static const struct {uint8_t w, h, s;} planes[] = { @@ -73,6 +74,39 @@ static void check_diff_bytes(LLVidEncDSPContext *c) } } +static void check_sub_median_pred(LLVidEncDSPContext *c) +{ + enum { + BUF_SIZE = MAX_STRIDE + 15 /* to test misalignment */ + }; + uint8_t dst_ref[BUF_SIZE], dst_new[BUF_SIZE]; + uint8_t src1[BUF_SIZE], src2[BUF_SIZE]; + + declare_func_emms(AV_CPU_FLAG_MMXEXT, void, uint8_t *dst, const uint8_t *src1, + const uint8_t *src2, intptr_t w, + int *left, int *left_top); + + if (check_func(c->sub_median_pred, "sub_median_pred")) { + size_t width = 1 + rnd() % MAX_STRIDE; + size_t offset = rnd() & 0xF; + int left_ref = rnd() & 0xFF, top_ref = rnd() & 0xFF; + int left_new = left_ref, top_new = top_ref; + + memset(dst_ref, 0, sizeof(dst_ref)); + memset(dst_new, 0, sizeof(dst_new)); + + randomize_buffers(src1, sizeof(src1)); + randomize_buffers(src2, sizeof(src2)); + + call_ref(dst_ref + offset, src1 + offset, src2 + offset, width, &left_ref, &top_ref); + call_new(dst_new + offset, src1 + offset, src2 + offset, width, &left_new, &top_new); + if (left_new != left_ref || top_ref != top_new || + memcmp(dst_ref, dst_new, width + offset)) + fail(); + bench_new(dst_new, src1, src2, MAX_STRIDE, &left_new, &top_new); + } +} + static void check_sub_left_pred(LLVidEncDSPContext *c) { int i; @@ -109,6 +143,9 @@ void checkasm_check_llviddspenc(void) check_diff_bytes(&c); report("diff_bytes"); + check_sub_median_pred(&c); + report("sub_median_pred"); + check_sub_left_pred(&c); report("sub_left_predict"); } _______________________________________________ ffmpeg-cvslog mailing list -- [email protected] To unsubscribe send an email to [email protected]
