Git Inbox Mirror of the ffmpeg-devel mailing list - see https://ffmpeg.org/mailman/listinfo/ffmpeg-devel
 help / color / mirror / Atom feed
* [FFmpeg-devel] [PATCH] checkasm: add aacencdsp.quant_bands test
@ 2024-05-31 18:18 Rémi Denis-Courmont
  2024-05-31 18:25 ` Lynne via ffmpeg-devel
                   ` (2 more replies)
  0 siblings, 3 replies; 5+ messages in thread
From: Rémi Denis-Courmont @ 2024-05-31 18:18 UTC (permalink / raw)
  To: ffmpeg-devel

---
 tests/checkasm/aacencdsp.c | 37 +++++++++++++++++++++++++++++++++++++
 1 file changed, 37 insertions(+)

diff --git a/tests/checkasm/aacencdsp.c b/tests/checkasm/aacencdsp.c
index 1756c4ecd5..756f92fd8f 100644
--- a/tests/checkasm/aacencdsp.c
+++ b/tests/checkasm/aacencdsp.c
@@ -22,7 +22,9 @@
 
 #include "libavutil/mem_internal.h"
 
+#include "libavcodec/aacenc_utils.h"
 #include "libavcodec/aacencdsp.h"
+#include "libavcodec/aactab.h"
 
 #include "checkasm.h"
 
@@ -35,6 +37,8 @@
         }                                                       \
     } while (0)
 
+#define randomize_elem(tab) (tab[rnd() % FF_ARRAY_ELEMS(tab)])
+
 static void test_abs_pow34(AACEncDSPContext *s)
 {
 #define BUF_SIZE 1024
@@ -60,6 +64,38 @@ static void test_abs_pow34(AACEncDSPContext *s)
     report("abs_pow34");
 }
 
+static void test_quant_bands(AACEncDSPContext *s)
+{
+    int maxval = randomize_elem(aac_cb_maxval);
+    float q34 = randomize_elem(ff_aac_pow34sf_tab);
+    float rounding = (rnd() & 1) ? ROUND_TO_ZERO : ROUND_STANDARD;
+    LOCAL_ALIGNED_32(float, in, [BUF_SIZE]);
+    LOCAL_ALIGNED_32(float, scaled, [BUF_SIZE]);
+
+    declare_func(void, int *, const float *, const float *, int, int, int,
+                 const float, const float);
+
+    randomize_float(in, BUF_SIZE);
+    randomize_float(scaled, BUF_SIZE);
+
+    for (int sign = 0; sign <= 1; sign++) {
+        if (check_func(s->quant_bands, "quant_bands_%s",
+                       sign ? "signed" : "unsigned")) {
+            LOCAL_ALIGNED_32(int, out, [BUF_SIZE]);
+            LOCAL_ALIGNED_32(int, out2, [BUF_SIZE]);
+
+            call_ref(out, in, scaled, BUF_SIZE, sign, maxval, q34, rounding);
+            call_new(out2, in, scaled, BUF_SIZE, sign, maxval, q34, rounding);
+
+            if (memcmp(out, out2, BUF_SIZE * sizeof (int)))
+                fail();
+
+            bench_new(out, in, scaled, BUF_SIZE, sign, maxval, q34, rounding);
+        }
+    }
+
+    report("abs_pow34");
+}
 
 void checkasm_check_aacencdsp(void)
 {
@@ -67,4 +103,5 @@ void checkasm_check_aacencdsp(void)
     ff_aacenc_dsp_init(&s);
 
     test_abs_pow34(&s);
+    test_quant_bands(&s);
 }
-- 
2.45.1

_______________________________________________
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".

^ permalink raw reply	[flat|nested] 5+ messages in thread

* Re: [FFmpeg-devel] [PATCH] checkasm: add aacencdsp.quant_bands test
  2024-05-31 18:18 [FFmpeg-devel] [PATCH] checkasm: add aacencdsp.quant_bands test Rémi Denis-Courmont
@ 2024-05-31 18:25 ` Lynne via ffmpeg-devel
  2024-05-31 19:02 ` Rémi Denis-Courmont
  2024-06-01  1:03 ` James Almer
  2 siblings, 0 replies; 5+ messages in thread
From: Lynne via ffmpeg-devel @ 2024-05-31 18:25 UTC (permalink / raw)
  To: ffmpeg-devel; +Cc: Lynne


[-- Attachment #1.1.1.1: Type: text/plain, Size: 2467 bytes --]

On 31/05/2024 20:18, Rémi Denis-Courmont wrote:
> ---
>   tests/checkasm/aacencdsp.c | 37 +++++++++++++++++++++++++++++++++++++
>   1 file changed, 37 insertions(+)
> 
> diff --git a/tests/checkasm/aacencdsp.c b/tests/checkasm/aacencdsp.c
> index 1756c4ecd5..756f92fd8f 100644
> --- a/tests/checkasm/aacencdsp.c
> +++ b/tests/checkasm/aacencdsp.c
> @@ -22,7 +22,9 @@
>   
>   #include "libavutil/mem_internal.h"
>   
> +#include "libavcodec/aacenc_utils.h"
>   #include "libavcodec/aacencdsp.h"
> +#include "libavcodec/aactab.h"
>   
>   #include "checkasm.h"
>   
> @@ -35,6 +37,8 @@
>           }                                                       \
>       } while (0)
>   
> +#define randomize_elem(tab) (tab[rnd() % FF_ARRAY_ELEMS(tab)])
> +
>   static void test_abs_pow34(AACEncDSPContext *s)
>   {
>   #define BUF_SIZE 1024
> @@ -60,6 +64,38 @@ static void test_abs_pow34(AACEncDSPContext *s)
>       report("abs_pow34");
>   }
>   
> +static void test_quant_bands(AACEncDSPContext *s)
> +{
> +    int maxval = randomize_elem(aac_cb_maxval);
> +    float q34 = randomize_elem(ff_aac_pow34sf_tab);
> +    float rounding = (rnd() & 1) ? ROUND_TO_ZERO : ROUND_STANDARD;
> +    LOCAL_ALIGNED_32(float, in, [BUF_SIZE]);
> +    LOCAL_ALIGNED_32(float, scaled, [BUF_SIZE]);
> +
> +    declare_func(void, int *, const float *, const float *, int, int, int,
> +                 const float, const float);
> +
> +    randomize_float(in, BUF_SIZE);
> +    randomize_float(scaled, BUF_SIZE);
> +
> +    for (int sign = 0; sign <= 1; sign++) {
> +        if (check_func(s->quant_bands, "quant_bands_%s",
> +                       sign ? "signed" : "unsigned")) {
> +            LOCAL_ALIGNED_32(int, out, [BUF_SIZE]);
> +            LOCAL_ALIGNED_32(int, out2, [BUF_SIZE]);
> +
> +            call_ref(out, in, scaled, BUF_SIZE, sign, maxval, q34, rounding);
> +            call_new(out2, in, scaled, BUF_SIZE, sign, maxval, q34, rounding);
> +
> +            if (memcmp(out, out2, BUF_SIZE * sizeof (int)))
> +                fail();
> +
> +            bench_new(out, in, scaled, BUF_SIZE, sign, maxval, q34, rounding);
> +        }
> +    }
> +
> +    report("abs_pow34");
> +}
>   
>   void checkasm_check_aacencdsp(void)
>   {
> @@ -67,4 +103,5 @@ void checkasm_check_aacencdsp(void)
>       ff_aacenc_dsp_init(&s);
>   
>       test_abs_pow34(&s);
> +    test_quant_bands(&s);
>   }

LGTM

[-- Attachment #1.1.1.2: OpenPGP public key --]
[-- Type: application/pgp-keys, Size: 637 bytes --]

[-- Attachment #1.2: OpenPGP digital signature --]
[-- Type: application/pgp-signature, Size: 236 bytes --]

[-- Attachment #2: Type: text/plain, Size: 251 bytes --]

_______________________________________________
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".

^ permalink raw reply	[flat|nested] 5+ messages in thread

* Re: [FFmpeg-devel] [PATCH] checkasm: add aacencdsp.quant_bands test
  2024-05-31 18:18 [FFmpeg-devel] [PATCH] checkasm: add aacencdsp.quant_bands test Rémi Denis-Courmont
  2024-05-31 18:25 ` Lynne via ffmpeg-devel
@ 2024-05-31 19:02 ` Rémi Denis-Courmont
  2024-06-01  1:03 ` James Almer
  2 siblings, 0 replies; 5+ messages in thread
From: Rémi Denis-Courmont @ 2024-05-31 19:02 UTC (permalink / raw)
  To: ffmpeg-devel

Le perjantaina 31. toukokuuta 2024, 21.18.12 EEST Rémi Denis-Courmont a écrit 
:
> ---
>  tests/checkasm/aacencdsp.c | 37 +++++++++++++++++++++++++++++++++++++
>  1 file changed, 37 insertions(+)
> 
> diff --git a/tests/checkasm/aacencdsp.c b/tests/checkasm/aacencdsp.c
> index 1756c4ecd5..756f92fd8f 100644
> --- a/tests/checkasm/aacencdsp.c
> +++ b/tests/checkasm/aacencdsp.c
> @@ -22,7 +22,9 @@
> 
>  #include "libavutil/mem_internal.h"
> 
> +#include "libavcodec/aacenc_utils.h"
>  #include "libavcodec/aacencdsp.h"
> +#include "libavcodec/aactab.h"
> 
>  #include "checkasm.h"
> 
> @@ -35,6 +37,8 @@
>          }                                                       \
>      } while (0)
> 
> +#define randomize_elem(tab) (tab[rnd() % FF_ARRAY_ELEMS(tab)])
> +
>  static void test_abs_pow34(AACEncDSPContext *s)
>  {
>  #define BUF_SIZE 1024
> @@ -60,6 +64,38 @@ static void test_abs_pow34(AACEncDSPContext *s)
>      report("abs_pow34");
>  }
> 
> +static void test_quant_bands(AACEncDSPContext *s)
> +{
> +    int maxval = randomize_elem(aac_cb_maxval);
> +    float q34 = randomize_elem(ff_aac_pow34sf_tab);
> +    float rounding = (rnd() & 1) ? ROUND_TO_ZERO : ROUND_STANDARD;
> +    LOCAL_ALIGNED_32(float, in, [BUF_SIZE]);
> +    LOCAL_ALIGNED_32(float, scaled, [BUF_SIZE]);
> +
> +    declare_func(void, int *, const float *, const float *, int, int, int,
> +                 const float, const float);
> +
> +    randomize_float(in, BUF_SIZE);
> +    randomize_float(scaled, BUF_SIZE);
> +
> +    for (int sign = 0; sign <= 1; sign++) {
> +        if (check_func(s->quant_bands, "quant_bands_%s",
> +                       sign ? "signed" : "unsigned")) {
> +            LOCAL_ALIGNED_32(int, out, [BUF_SIZE]);
> +            LOCAL_ALIGNED_32(int, out2, [BUF_SIZE]);
> +
> +            call_ref(out, in, scaled, BUF_SIZE, sign, maxval, q34,
> rounding); +            call_new(out2, in, scaled, BUF_SIZE, sign, maxval,
> q34, rounding); +
> +            if (memcmp(out, out2, BUF_SIZE * sizeof (int)))
> +                fail();
> +
> +            bench_new(out, in, scaled, BUF_SIZE, sign, maxval, q34,
> rounding); +        }
> +    }
> +
> +    report("abs_pow34");

Fixed locally

> +}
> 
>  void checkasm_check_aacencdsp(void)
>  {
> @@ -67,4 +103,5 @@ void checkasm_check_aacencdsp(void)
>      ff_aacenc_dsp_init(&s);
> 
>      test_abs_pow34(&s);
> +    test_quant_bands(&s);
>  }


-- 
レミ・デニ-クールモン
http://www.remlab.net/



_______________________________________________
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".

^ permalink raw reply	[flat|nested] 5+ messages in thread

* Re: [FFmpeg-devel] [PATCH] checkasm: add aacencdsp.quant_bands test
  2024-05-31 18:18 [FFmpeg-devel] [PATCH] checkasm: add aacencdsp.quant_bands test Rémi Denis-Courmont
  2024-05-31 18:25 ` Lynne via ffmpeg-devel
  2024-05-31 19:02 ` Rémi Denis-Courmont
@ 2024-06-01  1:03 ` James Almer
  2024-06-01  6:51   ` Rémi Denis-Courmont
  2 siblings, 1 reply; 5+ messages in thread
From: James Almer @ 2024-06-01  1:03 UTC (permalink / raw)
  To: ffmpeg-devel

On 5/31/2024 3:18 PM, Rémi Denis-Courmont wrote:
> ---
>   tests/checkasm/aacencdsp.c | 37 +++++++++++++++++++++++++++++++++++++
>   1 file changed, 37 insertions(+)
> 
> diff --git a/tests/checkasm/aacencdsp.c b/tests/checkasm/aacencdsp.c
> index 1756c4ecd5..756f92fd8f 100644
> --- a/tests/checkasm/aacencdsp.c
> +++ b/tests/checkasm/aacencdsp.c
> @@ -22,7 +22,9 @@
>   
>   #include "libavutil/mem_internal.h"
>   
> +#include "libavcodec/aacenc_utils.h"
>   #include "libavcodec/aacencdsp.h"
> +#include "libavcodec/aactab.h"
>   
>   #include "checkasm.h"
>   
> @@ -35,6 +37,8 @@
>           }                                                       \
>       } while (0)
>   
> +#define randomize_elem(tab) (tab[rnd() % FF_ARRAY_ELEMS(tab)])
> +
>   static void test_abs_pow34(AACEncDSPContext *s)
>   {
>   #define BUF_SIZE 1024
> @@ -60,6 +64,38 @@ static void test_abs_pow34(AACEncDSPContext *s)
>       report("abs_pow34");
>   }
>   
> +static void test_quant_bands(AACEncDSPContext *s)
> +{
> +    int maxval = randomize_elem(aac_cb_maxval);
> +    float q34 = randomize_elem(ff_aac_pow34sf_tab);
> +    float rounding = (rnd() & 1) ? ROUND_TO_ZERO : ROUND_STANDARD;
> +    LOCAL_ALIGNED_32(float, in, [BUF_SIZE]);
> +    LOCAL_ALIGNED_32(float, scaled, [BUF_SIZE]);
> +
> +    declare_func(void, int *, const float *, const float *, int, int, int,
> +                 const float, const float);
> +
> +    randomize_float(in, BUF_SIZE);
> +    randomize_float(scaled, BUF_SIZE);
> +
> +    for (int sign = 0; sign <= 1; sign++) {
> +        if (check_func(s->quant_bands, "quant_bands_%s",
> +                       sign ? "signed" : "unsigned")) {
> +            LOCAL_ALIGNED_32(int, out, [BUF_SIZE]);
> +            LOCAL_ALIGNED_32(int, out2, [BUF_SIZE]);

Does your RVV implementation expect out to be 32 byte aligned? Because 
looking at aaccoder.c, quant_bands() is called with AACEncContext.qcoefs 
as argument for out, which is 16 byte aligned.

Even if your implementation can work with 16 byte alignment, IMO the 
alignment of qcoefs should be bumped. That way we can add an AVX version 
too.

> +
> +            call_ref(out, in, scaled, BUF_SIZE, sign, maxval, q34, rounding);
> +            call_new(out2, in, scaled, BUF_SIZE, sign, maxval, q34, rounding);
> +
> +            if (memcmp(out, out2, BUF_SIZE * sizeof (int)))
> +                fail();
> +
> +            bench_new(out, in, scaled, BUF_SIZE, sign, maxval, q34, rounding);
> +        }
> +    }
> +
> +    report("abs_pow34");
> +}
>   
>   void checkasm_check_aacencdsp(void)
>   {
> @@ -67,4 +103,5 @@ void checkasm_check_aacencdsp(void)
>       ff_aacenc_dsp_init(&s);
>   
>       test_abs_pow34(&s);
> +    test_quant_bands(&s);
>   }
_______________________________________________
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".

^ permalink raw reply	[flat|nested] 5+ messages in thread

* Re: [FFmpeg-devel] [PATCH] checkasm: add aacencdsp.quant_bands test
  2024-06-01  1:03 ` James Almer
@ 2024-06-01  6:51   ` Rémi Denis-Courmont
  0 siblings, 0 replies; 5+ messages in thread
From: Rémi Denis-Courmont @ 2024-06-01  6:51 UTC (permalink / raw)
  To: FFmpeg development discussions and patches



Le 1 juin 2024 04:03:37 GMT+03:00, James Almer <jamrial@gmail.com> a écrit :
>On 5/31/2024 3:18 PM, Rémi Denis-Courmont wrote:
>> ---
>>   tests/checkasm/aacencdsp.c | 37 +++++++++++++++++++++++++++++++++++++
>>   1 file changed, 37 insertions(+)
>> 
>> diff --git a/tests/checkasm/aacencdsp.c b/tests/checkasm/aacencdsp.c
>> index 1756c4ecd5..756f92fd8f 100644
>> --- a/tests/checkasm/aacencdsp.c
>> +++ b/tests/checkasm/aacencdsp.c
>> @@ -22,7 +22,9 @@
>>     #include "libavutil/mem_internal.h"
>>   +#include "libavcodec/aacenc_utils.h"
>>   #include "libavcodec/aacencdsp.h"
>> +#include "libavcodec/aactab.h"
>>     #include "checkasm.h"
>>   @@ -35,6 +37,8 @@
>>           }                                                       \
>>       } while (0)
>>   +#define randomize_elem(tab) (tab[rnd() % FF_ARRAY_ELEMS(tab)])
>> +
>>   static void test_abs_pow34(AACEncDSPContext *s)
>>   {
>>   #define BUF_SIZE 1024
>> @@ -60,6 +64,38 @@ static void test_abs_pow34(AACEncDSPContext *s)
>>       report("abs_pow34");
>>   }
>>   +static void test_quant_bands(AACEncDSPContext *s)
>> +{
>> +    int maxval = randomize_elem(aac_cb_maxval);
>> +    float q34 = randomize_elem(ff_aac_pow34sf_tab);
>> +    float rounding = (rnd() & 1) ? ROUND_TO_ZERO : ROUND_STANDARD;
>> +    LOCAL_ALIGNED_32(float, in, [BUF_SIZE]);
>> +    LOCAL_ALIGNED_32(float, scaled, [BUF_SIZE]);
>> +
>> +    declare_func(void, int *, const float *, const float *, int, int, int,
>> +                 const float, const float);
>> +
>> +    randomize_float(in, BUF_SIZE);
>> +    randomize_float(scaled, BUF_SIZE);
>> +
>> +    for (int sign = 0; sign <= 1; sign++) {
>> +        if (check_func(s->quant_bands, "quant_bands_%s",
>> +                       sign ? "signed" : "unsigned")) {
>> +            LOCAL_ALIGNED_32(int, out, [BUF_SIZE]);
>> +            LOCAL_ALIGNED_32(int, out2, [BUF_SIZE]);
>
>Does your RVV implementation expect out to be 32 byte aligned? Because looking at aaccoder.c, quant_bands() is called with AACEncContext.qcoefs as argument for out, which is 16 byte aligned.

The RVV code requires 32-*bit* alignment for all pointers, i.e. natural alignment for int and float. I will fix the test case.

(IMO 32 byte alignment is counter-productive on non-x86, but that's a more general problem.)
_______________________________________________
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".

^ permalink raw reply	[flat|nested] 5+ messages in thread

end of thread, other threads:[~2024-06-01  6:51 UTC | newest]

Thread overview: 5+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2024-05-31 18:18 [FFmpeg-devel] [PATCH] checkasm: add aacencdsp.quant_bands test Rémi Denis-Courmont
2024-05-31 18:25 ` Lynne via ffmpeg-devel
2024-05-31 19:02 ` Rémi Denis-Courmont
2024-06-01  1:03 ` James Almer
2024-06-01  6:51   ` Rémi Denis-Courmont

Git Inbox Mirror of the ffmpeg-devel mailing list - see https://ffmpeg.org/mailman/listinfo/ffmpeg-devel

This inbox may be cloned and mirrored by anyone:

	git clone --mirror https://master.gitmailbox.com/ffmpegdev/0 ffmpegdev/git/0.git

	# If you have public-inbox 1.1+ installed, you may
	# initialize and index your mirror using the following commands:
	public-inbox-init -V2 ffmpegdev ffmpegdev/ https://master.gitmailbox.com/ffmpegdev \
		ffmpegdev@gitmailbox.com
	public-inbox-index ffmpegdev

Example config snippet for mirrors.


AGPL code for this site: git clone https://public-inbox.org/public-inbox.git