* [FFmpeg-devel] [PATCH 2/3] checkasm/svqenc: add ssd_int8_vs_int16 test @ 2023-12-29 11:57 flow gg 2023-12-29 12:16 ` Martin Storsjö 2023-12-30 11:17 ` Rémi Denis-Courmont 0 siblings, 2 replies; 8+ messages in thread From: flow gg @ 2023-12-29 11:57 UTC (permalink / raw) To: FFmpeg development discussions and patches [-- Attachment #1: Type: text/plain, Size: 63 bytes --] Tests on x86 might fail, possibly due to a 16-bit sub overflow [-- Attachment #2: 0002-checkasm-svqenc-add-ssd_int8_vs_int16-test.patch --] [-- Type: text/x-patch, Size: 5010 bytes --] From 8bde7750ec7adc2437843e14d4be85fb900d1b16 Mon Sep 17 00:00:00 2001 From: sunyuechi <sunyuechi@iscas.ac.cn> Date: Fri, 29 Dec 2023 13:09:21 +0800 Subject: [PATCH 2/3] checkasm/svqenc: add ssd_int8_vs_int16 test --- tests/checkasm/Makefile | 1 + tests/checkasm/checkasm.c | 3 ++ tests/checkasm/checkasm.h | 1 + tests/checkasm/svq1enc.c | 68 +++++++++++++++++++++++++++++++++++++++ tests/fate/checkasm.mak | 1 + 5 files changed, 74 insertions(+) create mode 100644 tests/checkasm/svq1enc.c diff --git a/tests/checkasm/Makefile b/tests/checkasm/Makefile index 47328b59b9..f507e99993 100644 --- a/tests/checkasm/Makefile +++ b/tests/checkasm/Makefile @@ -34,6 +34,7 @@ AVCODECOBJS-$(CONFIG_JPEG2000_DECODER) += jpeg2000dsp.o AVCODECOBJS-$(CONFIG_OPUS_DECODER) += opusdsp.o AVCODECOBJS-$(CONFIG_PIXBLOCKDSP) += pixblockdsp.o AVCODECOBJS-$(CONFIG_HEVC_DECODER) += hevc_add_res.o hevc_deblock.o hevc_idct.o hevc_sao.o hevc_pel.o +AVCODECOBJS-$(CONFIG_SVQ1_ENCODER) += svq1enc.o AVCODECOBJS-$(CONFIG_TAK_DECODER) += takdsp.o AVCODECOBJS-$(CONFIG_UTVIDEO_DECODER) += utvideodsp.o AVCODECOBJS-$(CONFIG_V210_DECODER) += v210dec.o diff --git a/tests/checkasm/checkasm.c b/tests/checkasm/checkasm.c index 57613af5f7..ff07d8b18d 100644 --- a/tests/checkasm/checkasm.c +++ b/tests/checkasm/checkasm.c @@ -162,6 +162,9 @@ static const struct { #if CONFIG_PIXBLOCKDSP { "pixblockdsp", checkasm_check_pixblockdsp }, #endif + #if CONFIG_SVQ1_ENCODER + { "svq1enc", checkasm_check_svq1enc }, + #endif #if CONFIG_TAK_DECODER { "takdsp", checkasm_check_takdsp }, #endif diff --git a/tests/checkasm/checkasm.h b/tests/checkasm/checkasm.h index d7974772d3..c1f11cfa36 100644 --- a/tests/checkasm/checkasm.h +++ b/tests/checkasm/checkasm.h @@ -82,6 +82,7 @@ void checkasm_check_nlmeans(void); void checkasm_check_opusdsp(void); void checkasm_check_pixblockdsp(void); void checkasm_check_sbrdsp(void); +void checkasm_check_svq1enc(void); void checkasm_check_synth_filter(void); void checkasm_check_sw_gbrp(void); void checkasm_check_sw_rgb(void); diff --git a/tests/checkasm/svq1enc.c b/tests/checkasm/svq1enc.c new file mode 100644 index 0000000000..5d21abc8ad --- /dev/null +++ b/tests/checkasm/svq1enc.c @@ -0,0 +1,68 @@ +/* + * Copyright (c) 2023 Institue of Software Chinese Academy of Sciences (ISCAS). + * + * This file is part of FFmpeg. + * + * FFmpeg is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 2 of the License, or + * (at your option) any later version. + * + * FFmpeg is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License along + * with FFmpeg; if not, write to the Free Software Foundation, Inc., + * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. + */ + +#include "libavutil/mem.h" +#include "libavutil/mem_internal.h" + +#include "libavcodec/svq1encdsp.h" + +#include "checkasm.h" + +#define BUF_SIZE 1024 + +#define randomize(buf, len) \ + do { \ + for (int i = 0; i < len; i++) \ + buf[i] = rnd(); \ + } while (0) + +static void test_ssd_int8_vs_int16(SVQ1EncDSPContext *s) { + declare_func(int, const int8_t *pix1, const int16_t *pix2, intptr_t size); + + int r1, r2; + + if (check_func(s->ssd_int8_vs_int16, "ssd_int8_vs_int16")) { + LOCAL_ALIGNED_32(int8_t, p1, [BUF_SIZE]); + LOCAL_ALIGNED_32(int16_t, p2, [BUF_SIZE]); + + randomize(p1, BUF_SIZE); + randomize(p2, BUF_SIZE); + + r1 = call_ref(p1, p2, BUF_SIZE); + r2 = call_new(p1, p2, BUF_SIZE); + + if (r1 != r2) { + fail(); + } + + bench_new(p1, p2, BUF_SIZE); + } + + report("ssd_int8_vs_int16"); + +} + +void checkasm_check_svq1enc(void) +{ + SVQ1EncDSPContext s = { 0 }; + ff_svq1enc_init(&s); + + test_ssd_int8_vs_int16(&s); +} diff --git a/tests/fate/checkasm.mak b/tests/fate/checkasm.mak index 9e04b1b3cb..3d775549ee 100644 --- a/tests/fate/checkasm.mak +++ b/tests/fate/checkasm.mak @@ -34,6 +34,7 @@ FATE_CHECKASM = fate-checkasm-aacencdsp \ fate-checkasm-opusdsp \ fate-checkasm-pixblockdsp \ fate-checkasm-sbrdsp \ + fate-checkasm-svq1enc \ fate-checkasm-synth_filter \ fate-checkasm-sw_gbrp \ fate-checkasm-sw_rgb \ -- 2.43.0 [-- Attachment #3: 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] 8+ messages in thread
* Re: [FFmpeg-devel] [PATCH 2/3] checkasm/svqenc: add ssd_int8_vs_int16 test 2023-12-29 11:57 [FFmpeg-devel] [PATCH 2/3] checkasm/svqenc: add ssd_int8_vs_int16 test flow gg @ 2023-12-29 12:16 ` Martin Storsjö 2023-12-29 13:17 ` James Almer 2023-12-30 11:17 ` Rémi Denis-Courmont 1 sibling, 1 reply; 8+ messages in thread From: Martin Storsjö @ 2023-12-29 12:16 UTC (permalink / raw) To: FFmpeg development discussions and patches On Fri, 29 Dec 2023, flow gg wrote: > Tests on x86 might fail, possibly due to a 16-bit sub overflow If this only happens in checkasm but not in real life use, it means that the checkasm test input is out of range, and we should try to mimic the real input data. If the issue is off-by-one due to rounding, we could allow it by making a comparison per element, and tolerate a certain diff (maybe only on x86). But if it is an actual overflow on valid input data, the x86 asm definitely needs to be fixed, by someone... Worst case, we might want to disable that checkasm test on x86 temporarily. // Martin _______________________________________________ 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] 8+ messages in thread
* Re: [FFmpeg-devel] [PATCH 2/3] checkasm/svqenc: add ssd_int8_vs_int16 test 2023-12-29 12:16 ` Martin Storsjö @ 2023-12-29 13:17 ` James Almer 2023-12-29 14:34 ` Martin Storsjö 0 siblings, 1 reply; 8+ messages in thread From: James Almer @ 2023-12-29 13:17 UTC (permalink / raw) To: ffmpeg-devel On 12/29/2023 9:16 AM, Martin Storsjö wrote: > On Fri, 29 Dec 2023, flow gg wrote: > >> Tests on x86 might fail, possibly due to a 16-bit sub overflow > > If this only happens in checkasm but not in real life use, it means that > the checkasm test input is out of range, and we should try to mimic the > real input data. > > If the issue is off-by-one due to rounding, we could allow it by making > a comparison per element, and tolerate a certain diff (maybe only on x86). > > But if it is an actual overflow on valid input data, the x86 asm > definitely needs to be fixed, by someone... Worst case, we might want to > disable that checkasm test on x86 temporarily. The function subtracts an int16 from an int8, whose result may not fit on an int16. The x86 asm expects it to do, hence the failures. I don't know if such cases exist in real world files, so like you said, if they don't then the test should generate in-range input. But if they do, i'll fix the x86 asm (sadly, this means sse4 will be required instead of sse2). _______________________________________________ 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] 8+ messages in thread
* Re: [FFmpeg-devel] [PATCH 2/3] checkasm/svqenc: add ssd_int8_vs_int16 test 2023-12-29 13:17 ` James Almer @ 2023-12-29 14:34 ` Martin Storsjö 2023-12-30 13:59 ` flow gg 0 siblings, 1 reply; 8+ messages in thread From: Martin Storsjö @ 2023-12-29 14:34 UTC (permalink / raw) To: FFmpeg development discussions and patches On Fri, 29 Dec 2023, James Almer wrote: > On 12/29/2023 9:16 AM, Martin Storsjö wrote: >> On Fri, 29 Dec 2023, flow gg wrote: >> >>> Tests on x86 might fail, possibly due to a 16-bit sub overflow >> >> If this only happens in checkasm but not in real life use, it means > that >> the checkasm test input is out of range, and we should try to mimic the >> real input data. >> >> If the issue is off-by-one due to rounding, we could allow it by making >> a comparison per element, and tolerate a certain diff (maybe only on > x86). >> >> But if it is an actual overflow on valid input data, the x86 asm >> definitely needs to be fixed, by someone... Worst case, we might want > to >> disable that checkasm test on x86 temporarily. > > The function subtracts an int16 from an int8, whose result may not fit > on an int16. The x86 asm expects it to do, hence the failures. > > I don't know if such cases exist in real world files, so like you said, > if they don't then the test should generate in-range input. But if they > do, i'll fix the x86 asm (sadly, this means sse4 will be required > instead of sse2). I think it's probably best to limit the checkasm inputs that don't overflow, for now. // Martin _______________________________________________ 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] 8+ messages in thread
* Re: [FFmpeg-devel] [PATCH 2/3] checkasm/svqenc: add ssd_int8_vs_int16 test 2023-12-29 14:34 ` Martin Storsjö @ 2023-12-30 13:59 ` flow gg 2023-12-30 14:47 ` James Almer 0 siblings, 1 reply; 8+ messages in thread From: flow gg @ 2023-12-30 13:59 UTC (permalink / raw) To: FFmpeg development discussions and patches [-- Attachment #1: Type: text/plain, Size: 1702 bytes --] Okay, it has been modified in this reply. Martin Storsjö <martin@martin.st> 于2023年12月29日周五 22:35写道: > On Fri, 29 Dec 2023, James Almer wrote: > > > On 12/29/2023 9:16 AM, Martin Storsjö wrote: > >> On Fri, 29 Dec 2023, flow gg wrote: > >> > >>> Tests on x86 might fail, possibly due to a 16-bit sub overflow > >> > >> If this only happens in checkasm but not in real life use, it means > > that > >> the checkasm test input is out of range, and we should try to mimic the > >> real input data. > >> > >> If the issue is off-by-one due to rounding, we could allow it by making > >> a comparison per element, and tolerate a certain diff (maybe only on > > x86). > >> > >> But if it is an actual overflow on valid input data, the x86 asm > >> definitely needs to be fixed, by someone... Worst case, we might want > > to > >> disable that checkasm test on x86 temporarily. > > > > The function subtracts an int16 from an int8, whose result may not fit > > on an int16. The x86 asm expects it to do, hence the failures. > > > > I don't know if such cases exist in real world files, so like you said, > > if they don't then the test should generate in-range input. But if they > > do, i'll fix the x86 asm (sadly, this means sse4 will be required > > instead of sse2). > > I think it's probably best to limit the checkasm inputs that don't > overflow, for now. > > // Martin > _______________________________________________ > 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". > [-- Attachment #2: 0002-checkasm-svqenc-add-ssd_int8_vs_int16-test.patch --] [-- Type: text/x-patch, Size: 5030 bytes --] From d62f363e3aad534c7ead5f3015029b3e7cbbff46 Mon Sep 17 00:00:00 2001 From: sunyuechi <sunyuechi@iscas.ac.cn> Date: Fri, 29 Dec 2023 13:09:21 +0800 Subject: [PATCH 2/3] checkasm/svqenc: add ssd_int8_vs_int16 test --- tests/checkasm/Makefile | 1 + tests/checkasm/checkasm.c | 3 ++ tests/checkasm/checkasm.h | 1 + tests/checkasm/svq1enc.c | 68 +++++++++++++++++++++++++++++++++++++++ tests/fate/checkasm.mak | 1 + 5 files changed, 74 insertions(+) create mode 100644 tests/checkasm/svq1enc.c diff --git a/tests/checkasm/Makefile b/tests/checkasm/Makefile index 47328b59b9..f507e99993 100644 --- a/tests/checkasm/Makefile +++ b/tests/checkasm/Makefile @@ -34,6 +34,7 @@ AVCODECOBJS-$(CONFIG_JPEG2000_DECODER) += jpeg2000dsp.o AVCODECOBJS-$(CONFIG_OPUS_DECODER) += opusdsp.o AVCODECOBJS-$(CONFIG_PIXBLOCKDSP) += pixblockdsp.o AVCODECOBJS-$(CONFIG_HEVC_DECODER) += hevc_add_res.o hevc_deblock.o hevc_idct.o hevc_sao.o hevc_pel.o +AVCODECOBJS-$(CONFIG_SVQ1_ENCODER) += svq1enc.o AVCODECOBJS-$(CONFIG_TAK_DECODER) += takdsp.o AVCODECOBJS-$(CONFIG_UTVIDEO_DECODER) += utvideodsp.o AVCODECOBJS-$(CONFIG_V210_DECODER) += v210dec.o diff --git a/tests/checkasm/checkasm.c b/tests/checkasm/checkasm.c index 57613af5f7..ff07d8b18d 100644 --- a/tests/checkasm/checkasm.c +++ b/tests/checkasm/checkasm.c @@ -162,6 +162,9 @@ static const struct { #if CONFIG_PIXBLOCKDSP { "pixblockdsp", checkasm_check_pixblockdsp }, #endif + #if CONFIG_SVQ1_ENCODER + { "svq1enc", checkasm_check_svq1enc }, + #endif #if CONFIG_TAK_DECODER { "takdsp", checkasm_check_takdsp }, #endif diff --git a/tests/checkasm/checkasm.h b/tests/checkasm/checkasm.h index d7974772d3..c1f11cfa36 100644 --- a/tests/checkasm/checkasm.h +++ b/tests/checkasm/checkasm.h @@ -82,6 +82,7 @@ void checkasm_check_nlmeans(void); void checkasm_check_opusdsp(void); void checkasm_check_pixblockdsp(void); void checkasm_check_sbrdsp(void); +void checkasm_check_svq1enc(void); void checkasm_check_synth_filter(void); void checkasm_check_sw_gbrp(void); void checkasm_check_sw_rgb(void); diff --git a/tests/checkasm/svq1enc.c b/tests/checkasm/svq1enc.c new file mode 100644 index 0000000000..065dd798ca --- /dev/null +++ b/tests/checkasm/svq1enc.c @@ -0,0 +1,68 @@ +/* + * Copyright (c) 2023 Institue of Software Chinese Academy of Sciences (ISCAS). + * + * This file is part of FFmpeg. + * + * FFmpeg is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 2 of the License, or + * (at your option) any later version. + * + * FFmpeg is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License along + * with FFmpeg; if not, write to the Free Software Foundation, Inc., + * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. + */ + +#include "libavutil/mem.h" +#include "libavutil/mem_internal.h" + +#include "libavcodec/svq1encdsp.h" + +#include "checkasm.h" + +#define BUF_SIZE 1024 + +#define randomize(buf, len) \ + do { \ + for (int i = 0; i < len; i++) \ + buf[i] = ((rnd() % 65281) - 32641); \ + } while (0) + +static void test_ssd_int8_vs_int16(SVQ1EncDSPContext *s) { + declare_func(int, const int8_t *pix1, const int16_t *pix2, intptr_t size); + + int r1, r2; + + if (check_func(s->ssd_int8_vs_int16, "ssd_int8_vs_int16")) { + LOCAL_ALIGNED_32(int8_t, p1, [BUF_SIZE]); + LOCAL_ALIGNED_32(int16_t, p2, [BUF_SIZE]); + + randomize(p1, BUF_SIZE); + randomize(p2, BUF_SIZE); + + r1 = call_ref(p1, p2, BUF_SIZE); + r2 = call_new(p1, p2, BUF_SIZE); + + if (r1 != r2) { + fail(); + } + + bench_new(p1, p2, BUF_SIZE); + } + + report("ssd_int8_vs_int16"); + +} + +void checkasm_check_svq1enc(void) +{ + SVQ1EncDSPContext s = { 0 }; + ff_svq1enc_init(&s); + + test_ssd_int8_vs_int16(&s); +} diff --git a/tests/fate/checkasm.mak b/tests/fate/checkasm.mak index 9e04b1b3cb..3d775549ee 100644 --- a/tests/fate/checkasm.mak +++ b/tests/fate/checkasm.mak @@ -34,6 +34,7 @@ FATE_CHECKASM = fate-checkasm-aacencdsp \ fate-checkasm-opusdsp \ fate-checkasm-pixblockdsp \ fate-checkasm-sbrdsp \ + fate-checkasm-svq1enc \ fate-checkasm-synth_filter \ fate-checkasm-sw_gbrp \ fate-checkasm-sw_rgb \ -- 2.43.0 [-- Attachment #3: 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] 8+ messages in thread
* Re: [FFmpeg-devel] [PATCH 2/3] checkasm/svqenc: add ssd_int8_vs_int16 test 2023-12-30 13:59 ` flow gg @ 2023-12-30 14:47 ` James Almer 2023-12-30 14:59 ` flow gg 0 siblings, 1 reply; 8+ messages in thread From: James Almer @ 2023-12-30 14:47 UTC (permalink / raw) To: ffmpeg-devel On 12/30/2023 10:59 AM, flow gg wrote: > Okay, it has been modified in this reply. > From d62f363e3aad534c7ead5f3015029b3e7cbbff46 Mon Sep 17 00:00:00 2001 > From: sunyuechi <sunyuechi@iscas.ac.cn> > Date: Fri, 29 Dec 2023 13:09:21 +0800 > Subject: [PATCH 2/3] checkasm/svqenc: add ssd_int8_vs_int16 test > > --- > tests/checkasm/Makefile | 1 + > tests/checkasm/checkasm.c | 3 ++ > tests/checkasm/checkasm.h | 1 + > tests/checkasm/svq1enc.c | 68 +++++++++++++++++++++++++++++++++++++++ > tests/fate/checkasm.mak | 1 + > 5 files changed, 74 insertions(+) > create mode 100644 tests/checkasm/svq1enc.c > > diff --git a/tests/checkasm/Makefile b/tests/checkasm/Makefile > index 47328b59b9..f507e99993 100644 > --- a/tests/checkasm/Makefile > +++ b/tests/checkasm/Makefile > @@ -34,6 +34,7 @@ AVCODECOBJS-$(CONFIG_JPEG2000_DECODER) += jpeg2000dsp.o > AVCODECOBJS-$(CONFIG_OPUS_DECODER) += opusdsp.o > AVCODECOBJS-$(CONFIG_PIXBLOCKDSP) += pixblockdsp.o > AVCODECOBJS-$(CONFIG_HEVC_DECODER) += hevc_add_res.o hevc_deblock.o hevc_idct.o hevc_sao.o hevc_pel.o > +AVCODECOBJS-$(CONFIG_SVQ1_ENCODER) += svq1enc.o > AVCODECOBJS-$(CONFIG_TAK_DECODER) += takdsp.o > AVCODECOBJS-$(CONFIG_UTVIDEO_DECODER) += utvideodsp.o > AVCODECOBJS-$(CONFIG_V210_DECODER) += v210dec.o > diff --git a/tests/checkasm/checkasm.c b/tests/checkasm/checkasm.c > index 57613af5f7..ff07d8b18d 100644 > --- a/tests/checkasm/checkasm.c > +++ b/tests/checkasm/checkasm.c > @@ -162,6 +162,9 @@ static const struct { > #if CONFIG_PIXBLOCKDSP > { "pixblockdsp", checkasm_check_pixblockdsp }, > #endif > + #if CONFIG_SVQ1_ENCODER > + { "svq1enc", checkasm_check_svq1enc }, > + #endif > #if CONFIG_TAK_DECODER > { "takdsp", checkasm_check_takdsp }, > #endif > diff --git a/tests/checkasm/checkasm.h b/tests/checkasm/checkasm.h > index d7974772d3..c1f11cfa36 100644 > --- a/tests/checkasm/checkasm.h > +++ b/tests/checkasm/checkasm.h > @@ -82,6 +82,7 @@ void checkasm_check_nlmeans(void); > void checkasm_check_opusdsp(void); > void checkasm_check_pixblockdsp(void); > void checkasm_check_sbrdsp(void); > +void checkasm_check_svq1enc(void); > void checkasm_check_synth_filter(void); > void checkasm_check_sw_gbrp(void); > void checkasm_check_sw_rgb(void); > diff --git a/tests/checkasm/svq1enc.c b/tests/checkasm/svq1enc.c > new file mode 100644 > index 0000000000..065dd798ca > --- /dev/null > +++ b/tests/checkasm/svq1enc.c > @@ -0,0 +1,68 @@ > +/* > + * Copyright (c) 2023 Institue of Software Chinese Academy of Sciences (ISCAS). > + * > + * This file is part of FFmpeg. > + * > + * FFmpeg is free software; you can redistribute it and/or modify > + * it under the terms of the GNU General Public License as published by > + * the Free Software Foundation; either version 2 of the License, or > + * (at your option) any later version. > + * > + * FFmpeg is distributed in the hope that it will be useful, > + * but WITHOUT ANY WARRANTY; without even the implied warranty of > + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the > + * GNU General Public License for more details. > + * > + * You should have received a copy of the GNU General Public License along > + * with FFmpeg; if not, write to the Free Software Foundation, Inc., > + * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. > + */ > + > +#include "libavutil/mem.h" > +#include "libavutil/mem_internal.h" > + > +#include "libavcodec/svq1encdsp.h" > + > +#include "checkasm.h" > + > +#define BUF_SIZE 1024 > + > +#define randomize(buf, len) \ > + do { \ > + for (int i = 0; i < len; i++) \ > + buf[i] = ((rnd() % 65281) - 32641); \ > + } while (0) > + > +static void test_ssd_int8_vs_int16(SVQ1EncDSPContext *s) { > + declare_func(int, const int8_t *pix1, const int16_t *pix2, intptr_t size); > + > + int r1, r2; > + > + if (check_func(s->ssd_int8_vs_int16, "ssd_int8_vs_int16")) { > + LOCAL_ALIGNED_32(int8_t, p1, [BUF_SIZE]); This one should be LOCAL_ALIGNED_4(). See libavcodec/svq1_cb.h > + LOCAL_ALIGNED_32(int16_t, p2, [BUF_SIZE]); And this one LOCAL_ALIGNED_16(). See encoded_block_levels[] in libavcodec/svq1enc.c > + > + randomize(p1, BUF_SIZE); > + randomize(p2, BUF_SIZE); > + > + r1 = call_ref(p1, p2, BUF_SIZE); > + r2 = call_new(p1, p2, BUF_SIZE); > + > + if (r1 != r2) { > + fail(); > + } > + > + bench_new(p1, p2, BUF_SIZE); > + } > + > + report("ssd_int8_vs_int16"); > + > +} > + > +void checkasm_check_svq1enc(void) > +{ > + SVQ1EncDSPContext s = { 0 }; > + ff_svq1enc_init(&s); > + > + test_ssd_int8_vs_int16(&s); > +} > diff --git a/tests/fate/checkasm.mak b/tests/fate/checkasm.mak > index 9e04b1b3cb..3d775549ee 100644 > --- a/tests/fate/checkasm.mak > +++ b/tests/fate/checkasm.mak > @@ -34,6 +34,7 @@ FATE_CHECKASM = fate-checkasm-aacencdsp \ > fate-checkasm-opusdsp \ > fate-checkasm-pixblockdsp \ > fate-checkasm-sbrdsp \ > + fate-checkasm-svq1enc \ > fate-checkasm-synth_filter \ > fate-checkasm-sw_gbrp \ > fate-checkasm-sw_rgb \ > -- > 2.43.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". ^ permalink raw reply [flat|nested] 8+ messages in thread
* Re: [FFmpeg-devel] [PATCH 2/3] checkasm/svqenc: add ssd_int8_vs_int16 test 2023-12-30 14:47 ` James Almer @ 2023-12-30 14:59 ` flow gg 0 siblings, 0 replies; 8+ messages in thread From: flow gg @ 2023-12-30 14:59 UTC (permalink / raw) To: FFmpeg development discussions and patches [-- Attachment #1: Type: text/plain, Size: 6198 bytes --] Thank you, I learned this and updated it in this reply. James Almer <jamrial@gmail.com> 于2023年12月30日周六 22:46写道: > On 12/30/2023 10:59 AM, flow gg wrote: > > Okay, it has been modified in this reply. > > > From d62f363e3aad534c7ead5f3015029b3e7cbbff46 Mon Sep 17 00:00:00 2001 > > From: sunyuechi <sunyuechi@iscas.ac.cn> > > Date: Fri, 29 Dec 2023 13:09:21 +0800 > > Subject: [PATCH 2/3] checkasm/svqenc: add ssd_int8_vs_int16 test > > > > --- > > tests/checkasm/Makefile | 1 + > > tests/checkasm/checkasm.c | 3 ++ > > tests/checkasm/checkasm.h | 1 + > > tests/checkasm/svq1enc.c | 68 +++++++++++++++++++++++++++++++++++++++ > > tests/fate/checkasm.mak | 1 + > > 5 files changed, 74 insertions(+) > > create mode 100644 tests/checkasm/svq1enc.c > > > > diff --git a/tests/checkasm/Makefile b/tests/checkasm/Makefile > > index 47328b59b9..f507e99993 100644 > > --- a/tests/checkasm/Makefile > > +++ b/tests/checkasm/Makefile > > @@ -34,6 +34,7 @@ AVCODECOBJS-$(CONFIG_JPEG2000_DECODER) += > jpeg2000dsp.o > > AVCODECOBJS-$(CONFIG_OPUS_DECODER) += opusdsp.o > > AVCODECOBJS-$(CONFIG_PIXBLOCKDSP) += pixblockdsp.o > > AVCODECOBJS-$(CONFIG_HEVC_DECODER) += hevc_add_res.o > hevc_deblock.o hevc_idct.o hevc_sao.o hevc_pel.o > > +AVCODECOBJS-$(CONFIG_SVQ1_ENCODER) += svq1enc.o > > AVCODECOBJS-$(CONFIG_TAK_DECODER) += takdsp.o > > AVCODECOBJS-$(CONFIG_UTVIDEO_DECODER) += utvideodsp.o > > AVCODECOBJS-$(CONFIG_V210_DECODER) += v210dec.o > > diff --git a/tests/checkasm/checkasm.c b/tests/checkasm/checkasm.c > > index 57613af5f7..ff07d8b18d 100644 > > --- a/tests/checkasm/checkasm.c > > +++ b/tests/checkasm/checkasm.c > > @@ -162,6 +162,9 @@ static const struct { > > #if CONFIG_PIXBLOCKDSP > > { "pixblockdsp", checkasm_check_pixblockdsp }, > > #endif > > + #if CONFIG_SVQ1_ENCODER > > + { "svq1enc", checkasm_check_svq1enc }, > > + #endif > > #if CONFIG_TAK_DECODER > > { "takdsp", checkasm_check_takdsp }, > > #endif > > diff --git a/tests/checkasm/checkasm.h b/tests/checkasm/checkasm.h > > index d7974772d3..c1f11cfa36 100644 > > --- a/tests/checkasm/checkasm.h > > +++ b/tests/checkasm/checkasm.h > > @@ -82,6 +82,7 @@ void checkasm_check_nlmeans(void); > > void checkasm_check_opusdsp(void); > > void checkasm_check_pixblockdsp(void); > > void checkasm_check_sbrdsp(void); > > +void checkasm_check_svq1enc(void); > > void checkasm_check_synth_filter(void); > > void checkasm_check_sw_gbrp(void); > > void checkasm_check_sw_rgb(void); > > diff --git a/tests/checkasm/svq1enc.c b/tests/checkasm/svq1enc.c > > new file mode 100644 > > index 0000000000..065dd798ca > > --- /dev/null > > +++ b/tests/checkasm/svq1enc.c > > @@ -0,0 +1,68 @@ > > +/* > > + * Copyright (c) 2023 Institue of Software Chinese Academy of Sciences > (ISCAS). > > + * > > + * This file is part of FFmpeg. > > + * > > + * FFmpeg is free software; you can redistribute it and/or modify > > + * it under the terms of the GNU General Public License as published by > > + * the Free Software Foundation; either version 2 of the License, or > > + * (at your option) any later version. > > + * > > + * FFmpeg is distributed in the hope that it will be useful, > > + * but WITHOUT ANY WARRANTY; without even the implied warranty of > > + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the > > + * GNU General Public License for more details. > > + * > > + * You should have received a copy of the GNU General Public License > along > > + * with FFmpeg; if not, write to the Free Software Foundation, Inc., > > + * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. > > + */ > > + > > +#include "libavutil/mem.h" > > +#include "libavutil/mem_internal.h" > > + > > +#include "libavcodec/svq1encdsp.h" > > + > > +#include "checkasm.h" > > + > > +#define BUF_SIZE 1024 > > + > > +#define randomize(buf, len) \ > > + do { \ > > + for (int i = 0; i < len; i++) \ > > + buf[i] = ((rnd() % 65281) - 32641); \ > > + } while (0) > > + > > +static void test_ssd_int8_vs_int16(SVQ1EncDSPContext *s) { > > + declare_func(int, const int8_t *pix1, const int16_t *pix2, intptr_t > size); > > + > > + int r1, r2; > > + > > + if (check_func(s->ssd_int8_vs_int16, "ssd_int8_vs_int16")) { > > + LOCAL_ALIGNED_32(int8_t, p1, [BUF_SIZE]); > > This one should be LOCAL_ALIGNED_4(). See libavcodec/svq1_cb.h > > > + LOCAL_ALIGNED_32(int16_t, p2, [BUF_SIZE]); > > And this one LOCAL_ALIGNED_16(). See encoded_block_levels[] in > libavcodec/svq1enc.c > > > + > > + randomize(p1, BUF_SIZE); > > + randomize(p2, BUF_SIZE); > > + > > + r1 = call_ref(p1, p2, BUF_SIZE); > > + r2 = call_new(p1, p2, BUF_SIZE); > > + > > + if (r1 != r2) { > > + fail(); > > + } > > + > > + bench_new(p1, p2, BUF_SIZE); > > + } > > + > > + report("ssd_int8_vs_int16"); > > + > > +} > > + > > +void checkasm_check_svq1enc(void) > > +{ > > + SVQ1EncDSPContext s = { 0 }; > > + ff_svq1enc_init(&s); > > + > > + test_ssd_int8_vs_int16(&s); > > +} > > diff --git a/tests/fate/checkasm.mak b/tests/fate/checkasm.mak > > index 9e04b1b3cb..3d775549ee 100644 > > --- a/tests/fate/checkasm.mak > > +++ b/tests/fate/checkasm.mak > > @@ -34,6 +34,7 @@ FATE_CHECKASM = fate-checkasm-aacencdsp > \ > > fate-checkasm-opusdsp > \ > > fate-checkasm-pixblockdsp > \ > > fate-checkasm-sbrdsp > \ > > + fate-checkasm-svq1enc > \ > > fate-checkasm-synth_filter > \ > > fate-checkasm-sw_gbrp > \ > > fate-checkasm-sw_rgb > \ > > -- > > 2.43.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". > [-- Attachment #2: 0002-checkasm-svqenc-add-ssd_int8_vs_int16-test.patch --] [-- Type: text/x-patch, Size: 5029 bytes --] From 66994814a702f9e40d4e149fd05f38ba38d58037 Mon Sep 17 00:00:00 2001 From: sunyuechi <sunyuechi@iscas.ac.cn> Date: Fri, 29 Dec 2023 13:09:21 +0800 Subject: [PATCH 2/3] checkasm/svqenc: add ssd_int8_vs_int16 test --- tests/checkasm/Makefile | 1 + tests/checkasm/checkasm.c | 3 ++ tests/checkasm/checkasm.h | 1 + tests/checkasm/svq1enc.c | 68 +++++++++++++++++++++++++++++++++++++++ tests/fate/checkasm.mak | 1 + 5 files changed, 74 insertions(+) create mode 100644 tests/checkasm/svq1enc.c diff --git a/tests/checkasm/Makefile b/tests/checkasm/Makefile index 47328b59b9..f507e99993 100644 --- a/tests/checkasm/Makefile +++ b/tests/checkasm/Makefile @@ -34,6 +34,7 @@ AVCODECOBJS-$(CONFIG_JPEG2000_DECODER) += jpeg2000dsp.o AVCODECOBJS-$(CONFIG_OPUS_DECODER) += opusdsp.o AVCODECOBJS-$(CONFIG_PIXBLOCKDSP) += pixblockdsp.o AVCODECOBJS-$(CONFIG_HEVC_DECODER) += hevc_add_res.o hevc_deblock.o hevc_idct.o hevc_sao.o hevc_pel.o +AVCODECOBJS-$(CONFIG_SVQ1_ENCODER) += svq1enc.o AVCODECOBJS-$(CONFIG_TAK_DECODER) += takdsp.o AVCODECOBJS-$(CONFIG_UTVIDEO_DECODER) += utvideodsp.o AVCODECOBJS-$(CONFIG_V210_DECODER) += v210dec.o diff --git a/tests/checkasm/checkasm.c b/tests/checkasm/checkasm.c index 57613af5f7..ff07d8b18d 100644 --- a/tests/checkasm/checkasm.c +++ b/tests/checkasm/checkasm.c @@ -162,6 +162,9 @@ static const struct { #if CONFIG_PIXBLOCKDSP { "pixblockdsp", checkasm_check_pixblockdsp }, #endif + #if CONFIG_SVQ1_ENCODER + { "svq1enc", checkasm_check_svq1enc }, + #endif #if CONFIG_TAK_DECODER { "takdsp", checkasm_check_takdsp }, #endif diff --git a/tests/checkasm/checkasm.h b/tests/checkasm/checkasm.h index d7974772d3..c1f11cfa36 100644 --- a/tests/checkasm/checkasm.h +++ b/tests/checkasm/checkasm.h @@ -82,6 +82,7 @@ void checkasm_check_nlmeans(void); void checkasm_check_opusdsp(void); void checkasm_check_pixblockdsp(void); void checkasm_check_sbrdsp(void); +void checkasm_check_svq1enc(void); void checkasm_check_synth_filter(void); void checkasm_check_sw_gbrp(void); void checkasm_check_sw_rgb(void); diff --git a/tests/checkasm/svq1enc.c b/tests/checkasm/svq1enc.c new file mode 100644 index 0000000000..1a6f531141 --- /dev/null +++ b/tests/checkasm/svq1enc.c @@ -0,0 +1,68 @@ +/* + * Copyright (c) 2023 Institue of Software Chinese Academy of Sciences (ISCAS). + * + * This file is part of FFmpeg. + * + * FFmpeg is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 2 of the License, or + * (at your option) any later version. + * + * FFmpeg is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License along + * with FFmpeg; if not, write to the Free Software Foundation, Inc., + * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. + */ + +#include "libavutil/mem.h" +#include "libavutil/mem_internal.h" + +#include "libavcodec/svq1encdsp.h" + +#include "checkasm.h" + +#define BUF_SIZE 1024 + +#define randomize(buf, len) \ + do { \ + for (int i = 0; i < len; i++) \ + buf[i] = ((rnd() % 65281) - 32641); \ + } while (0) + +static void test_ssd_int8_vs_int16(SVQ1EncDSPContext *s) { + declare_func(int, const int8_t *pix1, const int16_t *pix2, intptr_t size); + + int r1, r2; + + if (check_func(s->ssd_int8_vs_int16, "ssd_int8_vs_int16")) { + LOCAL_ALIGNED_4(int8_t, p1, [BUF_SIZE]); + LOCAL_ALIGNED_16(int16_t, p2, [BUF_SIZE]); + + randomize(p1, BUF_SIZE); + randomize(p2, BUF_SIZE); + + r1 = call_ref(p1, p2, BUF_SIZE); + r2 = call_new(p1, p2, BUF_SIZE); + + if (r1 != r2) { + fail(); + } + + bench_new(p1, p2, BUF_SIZE); + } + + report("ssd_int8_vs_int16"); + +} + +void checkasm_check_svq1enc(void) +{ + SVQ1EncDSPContext s = { 0 }; + ff_svq1enc_init(&s); + + test_ssd_int8_vs_int16(&s); +} diff --git a/tests/fate/checkasm.mak b/tests/fate/checkasm.mak index 9e04b1b3cb..3d775549ee 100644 --- a/tests/fate/checkasm.mak +++ b/tests/fate/checkasm.mak @@ -34,6 +34,7 @@ FATE_CHECKASM = fate-checkasm-aacencdsp \ fate-checkasm-opusdsp \ fate-checkasm-pixblockdsp \ fate-checkasm-sbrdsp \ + fate-checkasm-svq1enc \ fate-checkasm-synth_filter \ fate-checkasm-sw_gbrp \ fate-checkasm-sw_rgb \ -- 2.43.0 [-- Attachment #3: 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] 8+ messages in thread
* Re: [FFmpeg-devel] [PATCH 2/3] checkasm/svqenc: add ssd_int8_vs_int16 test 2023-12-29 11:57 [FFmpeg-devel] [PATCH 2/3] checkasm/svqenc: add ssd_int8_vs_int16 test flow gg 2023-12-29 12:16 ` Martin Storsjö @ 2023-12-30 11:17 ` Rémi Denis-Courmont 1 sibling, 0 replies; 8+ messages in thread From: Rémi Denis-Courmont @ 2023-12-30 11:17 UTC (permalink / raw) To: FFmpeg development discussions and patches Le 29 décembre 2023 12:57:01 GMT+01:00, flow gg <hlefthleft@gmail.com> a écrit : >Tests on x86 might fail, possibly due to a 16-bit sub overflow I don't know anything about the SVQ encoder. Still, especially for an encoder, overflows are probably not expected. So then it is as Martin wrote. _______________________________________________ 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] 8+ messages in thread
end of thread, other threads:[~2023-12-30 14:59 UTC | newest] Thread overview: 8+ messages (download: mbox.gz / follow: Atom feed) -- links below jump to the message on this page -- 2023-12-29 11:57 [FFmpeg-devel] [PATCH 2/3] checkasm/svqenc: add ssd_int8_vs_int16 test flow gg 2023-12-29 12:16 ` Martin Storsjö 2023-12-29 13:17 ` James Almer 2023-12-29 14:34 ` Martin Storsjö 2023-12-30 13:59 ` flow gg 2023-12-30 14:47 ` James Almer 2023-12-30 14:59 ` flow gg 2023-12-30 11:17 ` 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