From patchwork Sun Jul 2 12:32:41 2023 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: John Cox X-Patchwork-Id: 42380 Delivered-To: ffmpegpatchwork2@gmail.com Received: by 2002:a05:6a20:3b1e:b0:12b:9ae3:586d with SMTP id c30csp3715350pzh; Sun, 2 Jul 2023 05:35:15 -0700 (PDT) X-Google-Smtp-Source: APBJJlFQ0rg8r/R41QAEoFSmB1ofISkhw0AOe/zhmyQPzz84S7y24vZSL4FR8rHY3NWu8WP49Jsn X-Received: by 2002:a17:907:76ab:b0:992:d013:1132 with SMTP id jw11-20020a17090776ab00b00992d0131132mr4074354ejc.1.1688301315566; Sun, 02 Jul 2023 05:35:15 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1688301315; cv=none; d=google.com; s=arc-20160816; b=Zkh+XoiMxstPAEwv0H7v2Qi96WueNF9YoU4rF+CSNJQK3LXEHWywwkAkoZL1s6BH3U ae16tA79xT9+pOUICRzKTa3VzPZ+5Ea+B/yO0P8RwWcdPgyUcEP/+wkb6E1NUF4aOqNy saFuCBbpKqOSaHfTf4HAq/SzSkmDiF9+Jb+UJsXPr/F48ElxgTxMgjsExni/HtPOoBvV ssRBqbkYxLqWp+X8U9sJys1dZNUwn23cPIZQkNd24s9CwIUXevZ0IGy/x0LkORwMm8af crrSQaIk0zqyJMt7bMfscO6/T3Mhuj3PCInD/qyx/A+us6mVry0ZYqAhCLUtmRfhp/xH 9AKw== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=sender:errors-to:content-transfer-encoding:cc:reply-to :list-subscribe:list-help:list-post:list-archive:list-unsubscribe :list-id:precedence:subject:mime-version:references:in-reply-to :message-id:date:to:from:dkim-signature:delivered-to; bh=82tvRuAORi9CNhEfSBpQfkcqJ9IeKiGdmlns4tvV0uM=; fh=2QQVLAqz5Dgp0O7PTQ7hb1i3rOEvtuxkp5BnHStC38U=; b=0nd2XW1ipxXNJ1/Tn7oMpp5ZW9NC5OvhcF4KCBNFSaf/Sro4Kn8bVsivhtjD6kN87b jBWKrOGc/KLsKWrjOwfvE+zeLGTj52MHJ5XBEdmm5nlVQFoKm9xJEZycYinqu4Pc4b1M tf53Ufpkav6DDa9Rz052g51QFSJDGKXjYIC94zPfzDS7W8mIkEZnlcm+x4iwajak8Ry4 Lei+vXpva7u3B9wxddFKI11rEbo6W0erqZlPaiS4Y7ad4ITkIiCOUj+SmrYL/pLVIMvI UCeK6PiHKSvEmAvu9ngmyHjjlPBKk5UGACVpW8lOnnzskVqt9OH8NPT9Q8r1CKddGclC gOIg== ARC-Authentication-Results: i=1; mx.google.com; dkim=neutral (body hash did not verify) header.i=@kynesim-co-uk.20221208.gappssmtp.com header.s=20221208 header.b=A+SvVVL5; 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 Return-Path: Received: from ffbox0-bg.mplayerhq.hu (ffbox0-bg.ffmpeg.org. [79.124.17.100]) by mx.google.com with ESMTP id r17-20020a170906365100b00992ee6da8e7si2387457ejb.740.2023.07.02.05.35.15; Sun, 02 Jul 2023 05:35:15 -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=@kynesim-co-uk.20221208.gappssmtp.com header.s=20221208 header.b=A+SvVVL5; 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 Received: from [127.0.1.1] (localhost [127.0.0.1]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTP id 426AA68C3F2; Sun, 2 Jul 2023 15:33:27 +0300 (EEST) X-Original-To: ffmpeg-devel@ffmpeg.org Delivered-To: ffmpeg-devel@ffmpeg.org Received: from mail-wm1-f46.google.com (mail-wm1-f46.google.com [209.85.128.46]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTPS id 3CC1568C321 for ; Sun, 2 Jul 2023 15:33:21 +0300 (EEST) Received: by mail-wm1-f46.google.com with SMTP id 5b1f17b1804b1-3fbc244d307so38428745e9.1 for ; Sun, 02 Jul 2023 05:33:21 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=kynesim-co-uk.20221208.gappssmtp.com; s=20221208; t=1688301200; x=1690893200; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:from:to:cc:subject:date :message-id:reply-to; bh=giaKRfJwWAVN+3OiA0cl9ZI8DE7eqrlQpR3Ss98QnU8=; b=A+SvVVL5gZUXIvBaA2bdB85X8gGNzMDwKwggjqcor1ONMeqxnYQNOB1jydA/wLpghF QQ+aGCUGnkVdvCnyUdrvZTfW5xFN6sSzUzjuIyeEk6LGhU36syPIJ87org7T7Q5E/35d /3axGpmDMQY9F5KR842ZVtZQZgPXJg0I96us35LiFAdL8o3Pd1tn/dgw1R6GwUEm6WoB GnHxnKSeDGq7v8qcqm6yggvnb5er28kCj/eE7CCJsftRHlCSI9xcaivYBOlKE1W1FG7H 6bEbEq7RJHk67pq1kTGuxcsLjCGqhl3uIkwqhM0ota/JNtIzqyRT3+YZfIdRjjbev9u6 Q8EA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20221208; t=1688301200; x=1690893200; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:x-gm-message-state:from:to:cc :subject:date:message-id:reply-to; bh=giaKRfJwWAVN+3OiA0cl9ZI8DE7eqrlQpR3Ss98QnU8=; b=Hbucqo8qBsfOmpdslKK58LnrjMX758LJ+2mL3KIRU/rhsTGCv3TUA9zGStg+YjoWS1 OR+36Np1Z2QNYTcGlDS0CPMdt2gHMFZeL/3cmTAYNN2gVW1G7orh1kh1i6wGlIuPboBg u7UJD6KZ66zGFQ7HYbOSVX4d7ZB5ifx6hVzVR2sRfBW7QN/xLDRhhgK7xvrJkPM39yxM 72Zylkb9JVaqjxYMQI4qC/rbRXp7FE7iNrOle9+YXK736MWj0LCpGanEVaTkVxJBsRIB thsl51c+ibvrGoPqejc4wG3wiH++lSwzFMzz3i8ZFa/4u3FTj1AS1g5yCdZ7e86TRVHe zt9Q== X-Gm-Message-State: AC+VfDz7/IiQUM1VBpg87eSiS7+rePd8lVC49Xjz4OSr1S1VgPO3BaPS hCCWy1kn4lvaRmMznK3ow4OXpX0p6e5sE5G2JzI= X-Received: by 2002:a05:600c:2241:b0:3f6:9634:c8d6 with SMTP id a1-20020a05600c224100b003f69634c8d6mr7183821wmm.18.1688301200712; Sun, 02 Jul 2023 05:33:20 -0700 (PDT) Received: from sucnaath.outer.uphall.net (cpc1-cmbg20-2-0-cust759.5-4.cable.virginm.net. [86.21.218.248]) by smtp.gmail.com with ESMTPSA id f12-20020a7bc8cc000000b003fbbe41fd78sm8816167wml.10.2023.07.02.05.33.20 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Sun, 02 Jul 2023 05:33:20 -0700 (PDT) From: John Cox To: ffmpeg-devel@ffmpeg.org Date: Sun, 2 Jul 2023 12:32:41 +0000 Message-Id: <20230702123242.232484-15-jc@kynesim.co.uk> X-Mailer: git-send-email 2.39.2 In-Reply-To: <20230702123242.232484-1-jc@kynesim.co.uk> References: <20230702123242.232484-1-jc@kynesim.co.uk> MIME-Version: 1.0 Subject: [FFmpeg-devel] [PATCH v2 14/15] tests/checkasm: Add test for vf_bwdif filter_line3 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 Cc: thomas.mundt@hr.de, John Cox , martin@martin.st Errors-To: ffmpeg-devel-bounces@ffmpeg.org Sender: "ffmpeg-devel" X-TUID: MuN0E9S2GZ78 Signed-off-by: John Cox --- tests/checkasm/vf_bwdif.c | 81 +++++++++++++++++++++++++++++++++++++++ 1 file changed, 81 insertions(+) diff --git a/tests/checkasm/vf_bwdif.c b/tests/checkasm/vf_bwdif.c index 5fdba09fdc..3399cacdf7 100644 --- a/tests/checkasm/vf_bwdif.c +++ b/tests/checkasm/vf_bwdif.c @@ -28,6 +28,10 @@ for (size_t i = 0; i < count; i++) \ buf0[i] = buf1[i] = rnd() & mask +#define randomize_overflow_check(buf0, buf1, mask, count) \ + for (size_t i = 0; i < count; i++) \ + buf0[i] = buf1[i] = (rnd() & 1) != 0 ? mask : 0; + #define BODY(type, depth) \ do { \ type prev0[9*WIDTH], prev1[9*WIDTH]; \ @@ -83,6 +87,83 @@ void checkasm_check_vf_bwdif(void) report("bwdif10"); } + if (!ctx_8.filter_line3) + ctx_8.filter_line3 = ff_bwdif_filter_line3_c; + + { + LOCAL_ALIGNED_16(uint8_t, prev0, [11*WIDTH]); + LOCAL_ALIGNED_16(uint8_t, prev1, [11*WIDTH]); + LOCAL_ALIGNED_16(uint8_t, next0, [11*WIDTH]); + LOCAL_ALIGNED_16(uint8_t, next1, [11*WIDTH]); + LOCAL_ALIGNED_16(uint8_t, cur0, [11*WIDTH]); + LOCAL_ALIGNED_16(uint8_t, cur1, [11*WIDTH]); + LOCAL_ALIGNED_16(uint8_t, dst0, [WIDTH*3]); + LOCAL_ALIGNED_16(uint8_t, dst1, [WIDTH*3]); + const int stride = WIDTH; + const int mask = (1<<8)-1; + int parity; + + for (parity = 0; parity != 2; ++parity) { + if (check_func(ctx_8.filter_line3, "bwdif8.line3.rnd.p%d", parity)) { + + declare_func(void, void * dst1, int d_stride, + const void * prev1, const void * cur1, const void * next1, int prefs, + int w, int parity, int clip_max); + + randomize_buffers(prev0, prev1, mask, 11*WIDTH); + randomize_buffers(next0, next1, mask, 11*WIDTH); + randomize_buffers( cur0, cur1, mask, 11*WIDTH); + + call_ref(dst0, stride, + prev0 + stride * 4, cur0 + stride * 4, next0 + stride * 4, stride, + WIDTH, parity, mask); + call_new(dst1, stride, + prev1 + stride * 4, cur1 + stride * 4, next1 + stride * 4, stride, + WIDTH, parity, mask); + + if (memcmp(dst0, dst1, WIDTH*3) + || memcmp(prev0, prev1, WIDTH*11) + || memcmp(next0, next1, WIDTH*11) + || memcmp( cur0, cur1, WIDTH*11)) + fail(); + + bench_new(dst1, stride, + prev1 + stride * 4, cur1 + stride * 4, next1 + stride * 4, stride, + WIDTH, parity, mask); + } + } + + // Use just 0s and ~0s to try to provoke bad cropping or overflow + // Parity makes no difference to this test so just test 0 + if (check_func(ctx_8.filter_line3, "bwdif8.line3.overflow")) { + + declare_func(void, void * dst1, int d_stride, + const void * prev1, const void * cur1, const void * next1, int prefs, + int w, int parity, int clip_max); + + randomize_overflow_check(prev0, prev1, mask, 11*WIDTH); + randomize_overflow_check(next0, next1, mask, 11*WIDTH); + randomize_overflow_check( cur0, cur1, mask, 11*WIDTH); + + call_ref(dst0, stride, + prev0 + stride * 4, cur0 + stride * 4, next0 + stride * 4, stride, + WIDTH, 0, mask); + call_new(dst1, stride, + prev1 + stride * 4, cur1 + stride * 4, next1 + stride * 4, stride, + WIDTH, 0, mask); + + if (memcmp(dst0, dst1, WIDTH*3) + || memcmp(prev0, prev1, WIDTH*11) + || memcmp(next0, next1, WIDTH*11) + || memcmp( cur0, cur1, WIDTH*11)) + fail(); + + // No point to benching + } + + report("bwdif8.line3"); + } + { LOCAL_ALIGNED_16(uint8_t, prev0, [11*WIDTH]); LOCAL_ALIGNED_16(uint8_t, prev1, [11*WIDTH]);