From patchwork Mon Aug 21 20:45:26 2023 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Marvin Scholz X-Patchwork-Id: 43282 Delivered-To: ffmpegpatchwork2@gmail.com Received: by 2002:a05:6a20:47ca:b0:130:ccc6:6c4b with SMTP id ey10csp1675700pzb; Mon, 21 Aug 2023 13:46:20 -0700 (PDT) X-Google-Smtp-Source: AGHT+IHfqkpRvUbmIJvvggcuQYh4a3toD1Wx+tFh5NnwF/1ml5dbb0ncpgh/sw7MALaKEezKWA85 X-Received: by 2002:a05:6512:2806:b0:4fe:3e89:fcac with SMTP id cf6-20020a056512280600b004fe3e89fcacmr6386321lfb.34.1692650780694; Mon, 21 Aug 2023 13:46:20 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1692650780; cv=none; d=google.com; s=arc-20160816; b=kii3cu8ZOGJZXm5GJlbO4WYqE7WbnT2TJhR3+LaeuzU3pUqKA7ZoRPrih2QsHRQTFB Z7vWNAoxDOeRNlmRN/+Jr0NP9pVuLd/3bOcDVu3ydwRA223IpLTcTyQLZ4jNaXqf1r5M ej7daPklVM1PQpIW3BJeCTMOOYylPygWHh40TVaWHEGxURCiVk1FsQSvU4KAW1b8HTl1 +RBC7BMteHJ9SSBTnsj1xPNjjPkf0HIT7O7Tazom/qTmR3EpqOKjnUngkKLmqzx5iD9N K7f9JBqwl85LpFeD3Axpxf2xiKg9nKkVJq+S2OOv2M9sn4ayy8yjuLJbcqnJAEmX20gQ VR4Q== 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=AGplnGmQBAKKeHHt+K4vzaacHhRfoM1pKkHDqSoaWMw=; fh=nwMvC2rEvrxw3oi8lhns+cXSV39bEdECtcaEBNnUVDY=; b=RgAjvdfSviOhkLXI1Gi7MXpHSc98cCdfIVT9V/LChjPnJV1PqfeGt2QTHi/ZkC38Fr q5KeUwH0DUr8cH5zi6K87iTDwEPlc+u+tj1KwhX5XzHtXmPxGhzvQf/sVSVlkjr1oroV /amUxxXQo/3bbLkzmH+VKWeTehhVieMuXkAHK5fU2x2Pb6kqHUcWCSMKRVFPh/acKIlC RSqFMvOiC2sOeWnKkMHAkDxNBMDdgvztuSbZDb64DLEFEIUfuERPVo/pIT6CqbRdVZC8 2CPckkGFmqbu1NI9RjaSdfQmUnK5kxzNJAWXMFhg2+8nn9ftCjYvpe5naVvtPB37SgHG XARQ== ARC-Authentication-Results: i=1; mx.google.com; dkim=neutral (body hash did not verify) header.i=@gmail.com header.s=20221208 header.b=ONrRy466; 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 k23-20020a170906159700b0099bb83fdfc6si5654977ejd.408.2023.08.21.13.46.20; Mon, 21 Aug 2023 13:46:20 -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=20221208 header.b=ONrRy466; 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 D00A268C462; Mon, 21 Aug 2023 23:45:54 +0300 (EEST) X-Original-To: ffmpeg-devel@ffmpeg.org Delivered-To: ffmpeg-devel@ffmpeg.org Received: from mail-lj1-f172.google.com (mail-lj1-f172.google.com [209.85.208.172]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTPS id 5BC8868BB00 for ; Mon, 21 Aug 2023 23:45:47 +0300 (EEST) Received: by mail-lj1-f172.google.com with SMTP id 38308e7fff4ca-2b9bb097c1bso59090051fa.0 for ; Mon, 21 Aug 2023 13:45:47 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20221208; t=1692650746; x=1693255546; 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=Oo04IL5oTFx9UxKmP0W+YRabPKie5hhhK3xNJ3qx2DY=; b=ONrRy466fXg64juH/ciOA7WtMWCTMEgkvAioZ31zctBUKTNQVwsTXkztZp4RQkfthS bT20U4PPJ5Nlqodbv8z6ioSBYsVkQw4iWCqeimsXCx4F76t9wtUq5A+YpKcdiCYTTDgv w/QE6F9aAP2gUCVgJgY0GrAWAL9VoGVgSBDOaxgIw89zBsqkRGA2QH4DENleevHJD5EV VvXyea9FpIDrUwzwg5HanYgIcwqiz3teSdREPvhaJlP6rGA8wwUsBZWmTdr/nEapr0HA ksXieg7EcXUEM/2/CKofPIfW19Xh5Era5DrdPUiO2mIzIi45Y5351SftPTuQNfp6z3eY tNCA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20221208; t=1692650746; x=1693255546; 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=Oo04IL5oTFx9UxKmP0W+YRabPKie5hhhK3xNJ3qx2DY=; b=EhrlUhLwb4n+qD0mph7dQ46LtFZHDsc7Oza7jtTdVXC0ZNB0trGaSh0jh9Etb9LJ8W v89sJmb75of2pB3jhCN8KEJUbzTJcqZX/G+wj8aH/cvavxRb3aLJv0QsO+rb7jjPT6Nz dPSyaxSi09siWrVUb2gYqZoNdx15IlmdBVUpALpBHkmNZooAYPphYW6rNRCwsj1DxaaO VbkB5k8ajS1V7/gD4qnxsTSH28/NpIQ7VBDXUf2k1fGM5AE+8iIsAosdtPV6Mv77jEDt Tql8ihE8qmxy5uoepT2utWzirO35fwR5Z0eqprngCUqpngT3CS8tFFjH0Zi50K1jamF8 53zA== X-Gm-Message-State: AOJu0YzMxFYgD59Yie2xwnIYZyiPD4QN68zgSHpkhL/fVI114MNTtsMX sjlbjdYWTnysdt/L41SxXicvzswgJjtyoqaH X-Received: by 2002:a2e:6e0e:0:b0:2bb:8eea:7558 with SMTP id j14-20020a2e6e0e000000b002bb8eea7558mr4972269ljc.13.1692650746379; Mon, 21 Aug 2023 13:45:46 -0700 (PDT) Received: from MBP-von-Marvin.citadel.scalie.me (84-112-104-25.cable.dynamic.surfer.at. [84.112.104.25]) by smtp.gmail.com with ESMTPSA id z14-20020a1709064e0e00b0099293cdbc98sm7102176eju.145.2023.08.21.13.45.45 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Mon, 21 Aug 2023 13:45:45 -0700 (PDT) From: Marvin Scholz To: ffmpeg-devel@ffmpeg.org Date: Mon, 21 Aug 2023 22:45:26 +0200 Message-Id: <20230821204527.4494-4-epirat07@gmail.com> X-Mailer: git-send-email 2.37.0 (Apple Git-136) In-Reply-To: <20230821204527.4494-1-epirat07@gmail.com> References: <20230724214727.40253-1-epirat07@gmail.com> <20230821204527.4494-1-epirat07@gmail.com> MIME-Version: 1.0 Subject: [FFmpeg-devel] [PATCH v3 4/5] lavfi/vf_xfade_vulkan: add pixelize 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: Marvin Scholz Errors-To: ffmpeg-devel-bounces@ffmpeg.org Sender: "ffmpeg-devel" X-TUID: 6rg5CKvpEjIO --- libavfilter/vf_xfade_vulkan.c | 18 ++++++++++++++++++ 1 file changed, 18 insertions(+) diff --git a/libavfilter/vf_xfade_vulkan.c b/libavfilter/vf_xfade_vulkan.c index 61111f932d..283a8e0710 100644 --- a/libavfilter/vf_xfade_vulkan.c +++ b/libavfilter/vf_xfade_vulkan.c @@ -80,6 +80,7 @@ enum XFadeTransitions { CIRCLEOPEN, CIRCLECLOSE, DISSOLVE, + PIXELIZE, NB_TRANSITIONS, }; @@ -230,6 +231,21 @@ static const char transition_dissolve[] = { C(0, } ) }; +static const char transition_pixelize[] = { + C(0, void transition(int idx, ivec2 pos, float progress) ) + C(0, { ) + C(1, ivec2 size = imageSize(output_images[idx]); ) + C(1, float d = min(progress, 1.0 - progress); ) + C(1, float dist = ceil(d * 50.0) / 50.0; ) + C(1, float sq = 2.0 * dist * min(size.x, size.y) / 20.0; ) + C(1, float sx = dist > 0.0 ? min((floor(pos.x / sq) + 0.5) * sq, size.x - 1) : pos.x; ) + C(1, float sy = dist > 0.0 ? min((floor(pos.y / sq) + 0.5) * sq, size.y - 1) : pos.y; ) + C(1, vec4 a = texture(a_images[idx], vec2(sx, sy)); ) + C(1, vec4 b = texture(b_images[idx], vec2(sx, sy)); ) + C(1, imageStore(output_images[idx], pos, mix(a, b, progress)); ) + C(0, } ) +}; + static const char* transitions_map[NB_TRANSITIONS] = { [FADE] = transition_fade, [WIPELEFT] = transition_wipeleft, @@ -243,6 +259,7 @@ static const char* transitions_map[NB_TRANSITIONS] = { [CIRCLEOPEN] = transition_circleopen, [CIRCLECLOSE] = transition_circleclose, [DISSOLVE] = transition_dissolve, + [PIXELIZE] = transition_pixelize, }; static av_cold int init_vulkan(AVFilterContext *avctx) @@ -596,6 +613,7 @@ static const AVOption xfade_vulkan_options[] = { { "circleopen", "circleopen transition", 0, AV_OPT_TYPE_CONST, {.i64=CIRCLEOPEN}, 0, 0, FLAGS, "transition" }, { "circleclose", "circleclose transition", 0, AV_OPT_TYPE_CONST, {.i64=CIRCLECLOSE}, 0, 0, FLAGS, "transition" }, { "dissolve", "dissolve transition", 0, AV_OPT_TYPE_CONST, {.i64=DISSOLVE}, 0, 0, FLAGS, "transition" }, + { "pixelize", "pixelize transition", 0, AV_OPT_TYPE_CONST, {.i64=PIXELIZE}, 0, 0, FLAGS, "transition" }, { "duration", "set cross fade duration", OFFSET(duration), AV_OPT_TYPE_DURATION, {.i64=1000000}, 0, 60000000, FLAGS }, { "offset", "set cross fade start relative to first input stream", OFFSET(offset), AV_OPT_TYPE_DURATION, {.i64=0}, INT64_MIN, INT64_MAX, FLAGS }, { NULL }