[FFmpeg-devel] [FFmpeg-cvslog] checkasm: test for abs_pow34

Michael Niedermayer michael at niedermayer.cc
Tue Jan 23 21:07:04 EET 2024


On Mon, Dec 11, 2023 at 04:42:26PM +0000, sunyuechi wrote:
> ffmpeg | branch: master | sunyuechi <sunyuechi at iscas.ac.cn> | Tue Nov 28 14:08:12 2023 +0800| [1c3620b2bbe73db9239fcf605e8f535b58f03b86] | committer: Rémi Denis-Courmont
>
> checkasm: test for abs_pow34
>
> Signed-off-by: Rémi Denis-Courmont <remi at remlab.net>
>
> > http://git.videolan.org/gitweb.cgi/ffmpeg.git/?a=commit;h=1c3620b2bbe73db9239fcf605e8f535b58f03b86
> ---
>
>  tests/checkasm/Makefile    |  1 +
>  tests/checkasm/aacencdsp.c | 70 ++++++++++++++++++++++++++++++++++++++++++++++
>  tests/checkasm/checkasm.c  |  3 ++
>  tests/checkasm/checkasm.h  |  1 +
>  tests/fate/checkasm.mak    |  3 +-
>  5 files changed, 77 insertions(+), 1 deletion(-)
[...]
> +static void test_abs_pow34(AACEncContext *s) {
> +#define BUF_SIZE 1024
> +    LOCAL_ALIGNED_32(float, in, [BUF_SIZE]);
> +
> +    declare_func(void, float *, const float *, int);
> +
> +    randomize_float(in, BUF_SIZE);
> +
> +    if (check_func(s->abs_pow34, "abs_pow34")) {
> +        LOCAL_ALIGNED_32(float, out, [BUF_SIZE]);
> +        LOCAL_ALIGNED_32(float, out2, [BUF_SIZE]);
> +
> +        call_ref(out, in, BUF_SIZE);
> +        call_new(out2, in, BUF_SIZE);
> +
> +        if (memcmp(out, out2, BUF_SIZE * sizeof(float)) != 0)
> +            fail();

This is wrong if one of the functions is implemented in C
C does not specify float to give bitexact results. Any equality check with
float thats expected to end in a reproduceable outcome is generally wrong

it also fails in practice

TEST    checkasm-aacencdsp
Test checkasm-aacencdsp failed. Look at tests/data/fate/checkasm-aacencdsp.err for details.
src/tests/Makefile:308: recipe for target 'fate-checkasm-aacencdsp' failed
make: *** [fate-checkasm-aacencdsp] Error 1

checkasm: using random seed 2523748868
SSE:
   abs_pow34_sse (aacencdsp.c:55)
 - aacencdsp.abs_pow34 [FAILED]
checkasm: 1 of 1 tests have failed
threads=1

thats on plain simple x86-32


thx

[...]
-- 
Michael     GnuPG fingerprint: 9FF2128B147EF6730BADF133611EC787040B0FAB

Breaking DRM is a little like attempting to break through a door even
though the window is wide open and the only thing in the house is a bunch
of things you dont want and which you would get tomorrow for free anyway
-------------- next part --------------
A non-text attachment was scrubbed...
Name: signature.asc
Type: application/pgp-signature
Size: 195 bytes
Desc: not available
URL: <https://ffmpeg.org/pipermail/ffmpeg-devel/attachments/20240123/442af7ab/attachment.sig>


More information about the ffmpeg-devel mailing list