From patchwork Mon Sep 19 17:04:41 2022 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: James Almer X-Patchwork-Id: 38056 Delivered-To: ffmpegpatchwork2@gmail.com Received: by 2002:a05:6a20:3b1c:b0:96:9ee8:5cfd with SMTP id c28csp1368708pzh; Mon, 19 Sep 2022 10:05:03 -0700 (PDT) X-Google-Smtp-Source: AMsMyM48dWZ6554n7lv9unzZXSFLTTeO5tBJagH2nNJDVH5K7rr1y3d8SF/mZUyVkkc/opU0gTTv X-Received: by 2002:a17:907:6d1c:b0:77c:c016:19ef with SMTP id sa28-20020a1709076d1c00b0077cc01619efmr13112249ejc.689.1663607102869; Mon, 19 Sep 2022 10:05:02 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1663607102; cv=none; d=google.com; s=arc-20160816; b=Dz70tIljsIblN/xtU+E4ptnx9zoPo5oJD5rISs3elvujfFSZ96DYue0WWhpUsFYfN0 QQ+9CVrhQgGz9lzGge8+FUg0ZXt+1DiE79G/yqNkLDc0pqdEhjnqg7iK6HL89V4OfmgR qxyR8FrSE8fDeEZ/suOWlNQTp6V69zIua3wK8CuTgzvCFsCT+vDEP1O5OFECkRWFD1o1 JdH//LpQkdnPP1VCoqTdOflSAySsOGZlZkUTtMjFOoDvP/55l3YUIz3LqWbMLB0DyhPn ovVZkHkirlmxmJ/aW7r/Yh+0SBfkpBgVnJSJuy9uIUfZWvotu5/Fwydq+6qbT8fM2hjd FgZw== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=sender:errors-to:content-transfer-encoding:reply-to:list-subscribe :list-help:list-post:list-archive:list-unsubscribe:list-id :precedence:subject:mime-version:message-id:date:to:from :dkim-signature:delivered-to; bh=fTOf7w7FeoHy85B5zSXrwkEwD+HwHEo4OBhUtMmOkGk=; b=CNH5+5PTHS22dJFGW4+puS7MF/0WxqBCRK1sboDQizXElG+ZAevnHYSX9xVmUjUBlK 7y/9yy94/5iH+4P2XiB7SGx0kocBQWbT1MSC1eq6kTw8brdfR4LrzmpBvWsWtTGc56r7 Y1tffo+AtU/CzTUgQUy8XNhfCYecpSY9kL1UuV9ou8YgntNcaLEeBjtfWGIXVocoqnLR 4r46Ell2Lwakw8Ds9v528nDdagUz7Gw2F2lbZlIF/yYbr3AaFBpbVhGVYYdUsoi5xQFn PgXU09j1Gcqj6dd7bdLl+Og9BdhYjYx0+rvpw7oCsKpbx4OjBhr9qRj6zBuE04zOod6+ 1gmQ== ARC-Authentication-Results: i=1; mx.google.com; dkim=neutral (body hash did not verify) header.i=@gmail.com header.s=20210112 header.b=hC+LkQ6X; spf=pass (google.com: domain of ffmpeg-devel-bounces@ffmpeg.org designates 79.124.17.100 as permitted sender) smtp.mailfrom=ffmpeg-devel-bounces@ffmpeg.org; dmarc=fail (p=NONE sp=QUARANTINE dis=NONE) header.from=gmail.com Return-Path: Received: from ffbox0-bg.mplayerhq.hu (ffbox0-bg.ffmpeg.org. [79.124.17.100]) by mx.google.com with ESMTP id qa33-20020a17090786a100b007707c682264si15241849ejc.298.2022.09.19.10.05.02; Mon, 19 Sep 2022 10:05:02 -0700 (PDT) Received-SPF: pass (google.com: domain of ffmpeg-devel-bounces@ffmpeg.org designates 79.124.17.100 as permitted sender) client-ip=79.124.17.100; Authentication-Results: mx.google.com; dkim=neutral (body hash did not verify) header.i=@gmail.com header.s=20210112 header.b=hC+LkQ6X; spf=pass (google.com: domain of ffmpeg-devel-bounces@ffmpeg.org designates 79.124.17.100 as permitted sender) smtp.mailfrom=ffmpeg-devel-bounces@ffmpeg.org; dmarc=fail (p=NONE sp=QUARANTINE dis=NONE) header.from=gmail.com Received: from [127.0.1.1] (localhost [127.0.0.1]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTP id 42E6C68BA91; Mon, 19 Sep 2022 20:04:59 +0300 (EEST) X-Original-To: ffmpeg-devel@ffmpeg.org Delivered-To: ffmpeg-devel@ffmpeg.org Received: from mail-oi1-f176.google.com (mail-oi1-f176.google.com [209.85.167.176]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTPS id 6477468B612 for ; Mon, 19 Sep 2022 20:04:53 +0300 (EEST) Received: by mail-oi1-f176.google.com with SMTP id n83so231959oif.11 for ; Mon, 19 Sep 2022 10:04:53 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20210112; h=content-transfer-encoding:mime-version:message-id:date:subject:to :from:from:to:cc:subject:date; bh=3qARMSmuByq3PQdxB7BSC0stsTo50F8Q30ZhEdp+FF0=; b=hC+LkQ6XUtzjSFU/bG60IDbjbYNDIsNcqDJmV2v7iqni30KibRcvuf/xpb+mcdxzUH qVEEYFfQsvTdb77lmTULHQXoF/feYiM/S3hDyD75wduwwccmgd59iNS/sL+sioXkkaVt mZzFd5lL9J1g+uc99vsGL7ztUQekJFVun1rosdg5QCFqZKowSIe9XK/6oKkY7mnhPJhl D87DvxEg5Raza86CTNMcrYzOZf3r0VI6Uw51kBL2i/BE7I2NI6cJmaZskuV5Z9qAtQh/ eMe2qJtxdLcOtuNVjFZpLurnysMi9HQI5VH8VBdWz4olgZIgrVarB5bIR3qTMTpFcEt4 Z55g== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20210112; h=content-transfer-encoding:mime-version:message-id:date:subject:to :from:x-gm-message-state:from:to:cc:subject:date; bh=3qARMSmuByq3PQdxB7BSC0stsTo50F8Q30ZhEdp+FF0=; b=L6tSy0gpVhtpkznocwtk8P9BEfYqNrRTVCillEz2TmumBoWc7WntpoSaV4IyBZzpRZ WSvKObFG6j1EsRr60im5Xc3uFUQUx4CeN6+95wQKVy/XjjBslPFnJz7QIZTyRkFY1lO/ VeErYd49HtmUzKenf8xmk2tqzbfrLF0dWETcRHl3O4y3DyG8kmbWygnyM+Qfvx1ouizU 5wmlGWObqrxfCaKbFYUmpMNMMrjIWrkV6LFkQPFwINhrzuWoiYgI7YWRQF4jTmB5+bKw N63C8JKwfjR+jy4GJ85BaMV1AoNPZCuN3zZlxAcST3gLXEWMH39RPMHKQfrDJO2R3Qr5 CItw== X-Gm-Message-State: ACrzQf36p2l/CyKKrZ1O3ImJoDq3IC/n8Bwddpju+2E71TdsKmBOC3WW KhzZ3iGgM1xCzyGmaP77umuZ3/PhS84= X-Received: by 2002:a05:6808:3094:b0:34f:bb5e:7fef with SMTP id bl20-20020a056808309400b0034fbb5e7fefmr8725758oib.102.1663607090822; Mon, 19 Sep 2022 10:04:50 -0700 (PDT) Received: from localhost.localdomain ([191.97.187.183]) by smtp.gmail.com with ESMTPSA id k10-20020a9d7dca000000b00639443424f8sm14468623otn.8.2022.09.19.10.04.49 for (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Mon, 19 Sep 2022 10:04:50 -0700 (PDT) From: James Almer To: ffmpeg-devel@ffmpeg.org Date: Mon, 19 Sep 2022 14:04:41 -0300 Message-Id: <20220919170441.7120-1-jamrial@gmail.com> X-Mailer: git-send-email 2.37.3 MIME-Version: 1.0 Subject: [FFmpeg-devel] [PATCH] tests/checkasm: add a test for VorbisDSPContext X-BeenThere: ffmpeg-devel@ffmpeg.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: FFmpeg development discussions and patches List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Reply-To: FFmpeg development discussions and patches Errors-To: ffmpeg-devel-bounces@ffmpeg.org Sender: "ffmpeg-devel" X-TUID: IFyFymCR4YI8 Signed-off-by: James Almer --- tests/checkasm/Makefile | 1 + tests/checkasm/checkasm.c | 3 ++ tests/checkasm/checkasm.h | 1 + tests/checkasm/vorbisdsp.c | 88 ++++++++++++++++++++++++++++++++++++++ tests/fate/checkasm.mak | 1 + 5 files changed, 94 insertions(+) create mode 100644 tests/checkasm/vorbisdsp.c diff --git a/tests/checkasm/Makefile b/tests/checkasm/Makefile index 1ac170491b..ac02670e64 100644 --- a/tests/checkasm/Makefile +++ b/tests/checkasm/Makefile @@ -31,6 +31,7 @@ AVCODECOBJS-$(CONFIG_HEVC_DECODER) += hevc_add_res.o hevc_idct.o hevc_sao.o AVCODECOBJS-$(CONFIG_UTVIDEO_DECODER) += utvideodsp.o AVCODECOBJS-$(CONFIG_V210_DECODER) += v210dec.o AVCODECOBJS-$(CONFIG_V210_ENCODER) += v210enc.o +AVCODECOBJS-$(CONFIG_VORBIS_DECODER) += vorbisdsp.o AVCODECOBJS-$(CONFIG_VP9_DECODER) += vp9dsp.o CHECKASMOBJS-$(CONFIG_AVCODEC) += $(AVCODECOBJS-yes) diff --git a/tests/checkasm/checkasm.c b/tests/checkasm/checkasm.c index e56fd3850e..f1080f2a06 100644 --- a/tests/checkasm/checkasm.c +++ b/tests/checkasm/checkasm.c @@ -165,6 +165,9 @@ static const struct { #if CONFIG_VIDEODSP { "videodsp", checkasm_check_videodsp }, #endif + #if CONFIG_VIDEODSP + { "vorbisdsp", checkasm_check_vorbisdsp }, + #endif #endif #if CONFIG_AVFILTER #if CONFIG_AFIR_FILTER diff --git a/tests/checkasm/checkasm.h b/tests/checkasm/checkasm.h index d7645d3730..171dd06b47 100644 --- a/tests/checkasm/checkasm.h +++ b/tests/checkasm/checkasm.h @@ -88,6 +88,7 @@ void checkasm_check_vf_threshold(void); void checkasm_check_vp8dsp(void); void checkasm_check_vp9dsp(void); void checkasm_check_videodsp(void); +void checkasm_check_vorbisdsp(void); struct CheckasmPerf; diff --git a/tests/checkasm/vorbisdsp.c b/tests/checkasm/vorbisdsp.c new file mode 100644 index 0000000000..d28f08eace --- /dev/null +++ b/tests/checkasm/vorbisdsp.c @@ -0,0 +1,88 @@ +/* + * 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 "config.h" + +#include + +#include "libavutil/mem_internal.h" + +#include "libavcodec/vorbisdsp.h" + +#include "checkasm.h" + +#define LEN 512 + +#define randomize_buffer(buf) \ +do { \ + int i; \ + double bmg[2], stddev = 10.0, mean = 0.0; \ + \ + for (i = 0; i < LEN; i += 2) { \ + av_bmg_get(&checkasm_lfg, bmg); \ + buf[i] = bmg[0] * stddev + mean; \ + buf[i + 1] = bmg[1] * stddev + mean; \ + } \ +} while(0); + +static void test_inverse_coupling(void) +{ + LOCAL_ALIGNED_16(float, src0, [LEN]); + LOCAL_ALIGNED_16(float, src1, [LEN]); + LOCAL_ALIGNED_16(float, cdst, [LEN]); + LOCAL_ALIGNED_16(float, odst, [LEN]); + LOCAL_ALIGNED_16(float, cdst1, [LEN]); + LOCAL_ALIGNED_16(float, odst1, [LEN]); + + declare_func(void, float *av_restrict mag, float *av_restrict ang, + ptrdiff_t blocksize); + + randomize_buffer(src0); + randomize_buffer(src1); + + memcpy(cdst, src0, LEN * sizeof(*src0)); + memcpy(cdst1, src1, LEN * sizeof(*src1)); + memcpy(odst, src0, LEN * sizeof(*src0)); + memcpy(odst1, src1, LEN * sizeof(*src1)); + + call_ref(cdst, cdst1, LEN); + call_new(odst, odst1, LEN); + for (int i = 0; i < LEN; i++) { + if (!float_near_abs_eps(cdst[i], odst[i], FLT_EPSILON) || + !float_near_abs_eps(cdst1[i], odst1[i], FLT_EPSILON)) { + fprintf(stderr, "%d: %- .12f - %- .12f = % .12g\n", + i, cdst[i], odst[i], cdst[i] - odst[i]); + fprintf(stderr, "%d: %- .12f - %- .12f = % .12g\n", + i, cdst1[i], odst1[i], cdst1[i] - odst1[i]); + fail(); + break; + } + } + bench_new(src0, src1, LEN); +} + +void checkasm_check_vorbisdsp(void) +{ + VorbisDSPContext dsp; + + ff_vorbisdsp_init(&dsp); + + if (check_func(dsp.vorbis_inverse_coupling, "vorbis_inverse_coupling")) + test_inverse_coupling(); + report("vorbis_inverse_coupling"); +} diff --git a/tests/fate/checkasm.mak b/tests/fate/checkasm.mak index 4d2f321e84..fbba0b5b8f 100644 --- a/tests/fate/checkasm.mak +++ b/tests/fate/checkasm.mak @@ -43,6 +43,7 @@ FATE_CHECKASM = fate-checkasm-aacpsdsp \ fate-checkasm-vf_nlmeans \ fate-checkasm-vf_threshold \ fate-checkasm-videodsp \ + fate-checkasm-vorbisdsp \ fate-checkasm-vp8dsp \ fate-checkasm-vp9dsp \