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]

Reply via email to