diff mbox series

[FFmpeg-devel,v1,2/2,GSoC,2024] tests/checkasm/vvc_mc: for SAD, only test valid subblock sizes

Message ID 20240528190903.40811-5-chen.stonechen@gmail.com
State Accepted
Commit d82c5035558730f0d1f2e5aec66df6d0db7f4e6f
Headers show
Series [FFmpeg-devel,v1,1/2,GSoC,2024] libavcode/x86/vvc: change label to vvc_sad_16 to reflect block sizes | expand

Checks

Context Check Description
yinshiyou/make_loongarch64 success Make finished
yinshiyou/make_fate_loongarch64 success Make fate finished
andriy/make_x86 success Make finished
andriy/make_fate_x86 success Make fate finished

Commit Message

Stone Chen May 28, 2024, 7:09 p.m. UTC
According to the VVC specification (section 8.5.1), the maximum width/height of a subblock passed for DMVR SAD is 16. This along with previous constraint requiring width * height >= 128 means that  8x16, 16x8, and 16x16 are the only allowed sizes.

This changes check_vvc_sad() to only test and benchmark those sizes.
---
 tests/checkasm/vvc_mc.c | 12 +++++++-----
 1 file changed, 7 insertions(+), 5 deletions(-)

Comments

Nuo Mi May 29, 2024, 1:45 p.m. UTC | #1
On Wed, May 29, 2024 at 3:10 AM Stone Chen <chen.stonechen@gmail.com> wrote:

> According to the VVC specification (section 8.5.1), the maximum
> width/height of a subblock passed for DMVR SAD is 16. This along with
> previous constraint requiring width * height >= 128 means that  8x16, 16x8,
> and 16x16 are the only allowed sizes

Applied.
Thank you, Stone.

>
>
This changes check_vvc_sad() to only test and benchmark those sizes.
> ---
>  tests/checkasm/vvc_mc.c | 12 +++++++-----
>  1 file changed, 7 insertions(+), 5 deletions(-)
>
> diff --git a/tests/checkasm/vvc_mc.c b/tests/checkasm/vvc_mc.c
> index 1e889e2cff..09cac82edb 100644
> --- a/tests/checkasm/vvc_mc.c
> +++ b/tests/checkasm/vvc_mc.c
> @@ -337,11 +337,12 @@ static void check_vvc_sad(void)
>      memset(src1, 0, MAX_CTU_SIZE * MAX_CTU_SIZE * 4 * sizeof(uint16_t));
>
>      randomize_pixels(src0, src1, MAX_CTU_SIZE * MAX_CTU_SIZE * 4);
> -     for (int h = 8; h <= MAX_CTU_SIZE; h *= 2) {
> -        for (int w = 8; w <= MAX_CTU_SIZE; w *= 2) {
> +    for (int h = 8; h <= 16; h *= 2) {
> +        for (int w = 8; w <= 16; w *= 2) {
>
             for(int offy = 0; offy <= 4; offy++) {
>                  for(int offx = 0; offx <= 4; offx++) {
> -                    if(check_func(c.inter.sad, "sad_%dx%d", w, h)) {
> +                    if(w * h >= 128) {
> +                        if(check_func(c.inter.sad, "sad_%dx%d", w, h)) {
>                          int result0;
>                          int result1;
>
> @@ -350,13 +351,14 @@ static void check_vvc_sad(void)
>
>                          if (result1 != result0)
>                              fail();
> -                        if(w == h && offx == 0 && offy == 0)
> +                        if(offx == 0 && offy == 0)
>                              bench_new(src0 + PIXEL_STRIDE * 2 + 2, src1 +
> PIXEL_STRIDE * 2 + 2, offx, offy, w, h);
> +                        }
>                      }
>                  }
>              }
>          }
> -     }
> +    }
>
>      report("sad");
>  }
> --
> 2.45.0
>
> _______________________________________________
> ffmpeg-devel mailing list
> ffmpeg-devel@ffmpeg.org
> https://ffmpeg.org/mailman/listinfo/ffmpeg-devel
>
> To unsubscribe, visit link above, or email
> ffmpeg-devel-request@ffmpeg.org with subject "unsubscribe".
>
diff mbox series

Patch

diff --git a/tests/checkasm/vvc_mc.c b/tests/checkasm/vvc_mc.c
index 1e889e2cff..09cac82edb 100644
--- a/tests/checkasm/vvc_mc.c
+++ b/tests/checkasm/vvc_mc.c
@@ -337,11 +337,12 @@  static void check_vvc_sad(void)
     memset(src1, 0, MAX_CTU_SIZE * MAX_CTU_SIZE * 4 * sizeof(uint16_t));
 
     randomize_pixels(src0, src1, MAX_CTU_SIZE * MAX_CTU_SIZE * 4);
-     for (int h = 8; h <= MAX_CTU_SIZE; h *= 2) {
-        for (int w = 8; w <= MAX_CTU_SIZE; w *= 2) {
+    for (int h = 8; h <= 16; h *= 2) {
+        for (int w = 8; w <= 16; w *= 2) {
             for(int offy = 0; offy <= 4; offy++) {
                 for(int offx = 0; offx <= 4; offx++) {
-                    if(check_func(c.inter.sad, "sad_%dx%d", w, h)) {
+                    if(w * h >= 128) {
+                        if(check_func(c.inter.sad, "sad_%dx%d", w, h)) {
                         int result0;
                         int result1;
 
@@ -350,13 +351,14 @@  static void check_vvc_sad(void)
 
                         if (result1 != result0)
                             fail();
-                        if(w == h && offx == 0 && offy == 0)
+                        if(offx == 0 && offy == 0)
                             bench_new(src0 + PIXEL_STRIDE * 2 + 2, src1 + PIXEL_STRIDE * 2 + 2, offx, offy, w, h);
+                        }
                     }
                 }
             }
         }
-     }
+    }
 
     report("sad");
 }