From mboxrd@z Thu Jan  1 00:00:00 1970
Return-Path: <ffmpeg-devel-bounces@ffmpeg.org>
Received: from ffbox0-bg.mplayerhq.hu (ffbox0-bg.ffmpeg.org [79.124.17.100])
	by master.gitmailbox.com (Postfix) with ESMTPS id DCD244888D
	for <ffmpegdev@gitmailbox.com>; Sat, 29 Mar 2025 14:53:07 +0000 (UTC)
Received: from [127.0.1.1] (localhost [127.0.0.1])
	by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTP id 71B5F687C2E;
	Sat, 29 Mar 2025 16:53:02 +0200 (EET)
Received: from mail-wm1-f45.google.com (mail-wm1-f45.google.com
 [209.85.128.45])
 by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTPS id 4F198687A76
 for <ffmpeg-devel@ffmpeg.org>; Sat, 29 Mar 2025 16:52:55 +0200 (EET)
Received: by mail-wm1-f45.google.com with SMTP id
 5b1f17b1804b1-43cfa7e7f54so19508715e9.1
 for <ffmpeg-devel@ffmpeg.org>; Sat, 29 Mar 2025 07:52:55 -0700 (PDT)
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
 d=gmail.com; s=20230601; t=1743259974; x=1743864774; darn=ffmpeg.org;
 h=content-transfer-encoding:in-reply-to:from:content-language
 :references:to:subject:user-agent:mime-version:date:message-id:from
 :to:cc:subject:date:message-id:reply-to;
 bh=t678VqizFQXPLKTVOd6fVhaRUeUTeu1MKqkYNHrX3LQ=;
 b=eVL/pK89ykPaMIJHISExFnQoLlVEGn8sRQVn3abkqRRStqkNssTZB1wOWZUU3i6NCH
 j7jzk0ozN5NeyMbseu6XQ45tDgpe/GKi7+KSC90Lji1NWHdmFRO2LquAyBT2+G3r/nHv
 aYYyG7tOCZl9mcrLAgYBFDF92RBuaeCbjVHS7UemYHGgd8z8TAegqGSy4dhxLaFkBEiA
 8TddXQxwODFN79j35mFL8Sl34vQ6Ngyak37+2EqOUAcKsojvoJqS1hbnxFXc9aqNRddo
 NjFMC23sjRaDqyQpEH2Sp1QLweTMoDH9UcBsur+heBcEFa/WUMe6EAY1kQQGLpDMy0hK
 fefQ==
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
 d=1e100.net; s=20230601; t=1743259974; x=1743864774;
 h=content-transfer-encoding:in-reply-to:from:content-language
 :references:to:subject:user-agent:mime-version:date:message-id
 :x-gm-message-state:from:to:cc:subject:date:message-id:reply-to;
 bh=t678VqizFQXPLKTVOd6fVhaRUeUTeu1MKqkYNHrX3LQ=;
 b=Omyr7SsfGy6xP6zAdB0z6FE9qjRHCid/6zEmphWbENc8mvSeODFK6Qjn+83bVHCLKf
 kCbRgNKi0GfMDF8R9HnaSQFovisHtDLjiPjUZ+UjZxn7AU/uF6ddFbmhKAHi9Qj/fumj
 xtsar6nPB3WMeaXeERaa/rmJc98d3DNxEGqeQxpqgmB2hKc0L232SZtU0eW9yajVL2Nm
 lrRvO7gwAC7OsYynIMijxkkC/OJsKTGB6BcivSi639RjpEbkw2XkKTeKv2quYDmbCQ6d
 2EV18vdTUQFBxDieLUzaotmmzM2QCsrkdOUwUHzVTPbK55a/H4vYSJbojDr3EFl0tl5K
 7iKw==
X-Gm-Message-State: AOJu0Yw84lS4jcNT5J7/Qd/EpS7boHbPyp9+0j+aW5ZoUsBFE7AbsuUq
 Sr3XHyVh22OtyJzAVvljgh9s1AQGVHJ6saZoC9njZEsERpGcWoWN99R8Hw==
X-Gm-Gg: ASbGncuCfntfoMv4qFyKOAp4IbFb3gps5x7JJfMtdUE+k5Imi9QazvBi2cV60F4jwmQ
 rmLwPLqR8K1b0JBTr1qEhuPc1prA+BmodKqe8dK4BJpDOtWXk1ekvmT5wuaWm26uAdKjT7zUU61
 KkqiMsWnemO62cOe/11Zdr/UIphwKNsMfAbcZ0Qvo77yW+uXUXj9E3vfHxupGfc5wP19+20iqOM
 meW4aPuHc6af/rg8XSEtbZt0ofEdBGIhlUDBokbFERkpBNHXA398CVsSiWG7aDcukNAcxZtOE9i
 a8k1fTE9LZISshjoIwuB48UzdX1a1geDkFFkohVulgEo67Rqve9LXhmmh/HpHKC8hYJRh6u82sa
 3sBLQfnMgely16p4J+Vei+QM=
X-Google-Smtp-Source: AGHT+IFcuOKS8dhxc8R7YKfwcYVhXNSi76JQgD16OwnbaB9l0jl5K2ZJzEbn/7T1CWFBAvkt9M3c/w==
X-Received: by 2002:a05:600c:1c1c:b0:43b:ca8c:fca3 with SMTP id
 5b1f17b1804b1-43db62b6af6mr19127485e9.11.1743259974199; 
 Sat, 29 Mar 2025 07:52:54 -0700 (PDT)
Received: from ?IPV6:2001:9e8:1dbd:cb00:665d:2955:e517:5cbe?
 ([2001:9e8:1dbd:cb00:665d:2955:e517:5cbe])
 by smtp.gmail.com with ESMTPSA id
 5b1f17b1804b1-43d8fbc1716sm62296225e9.15.2025.03.29.07.52.53
 for <ffmpeg-devel@ffmpeg.org>
 (version=TLS1_3 cipher=TLS_AES_128_GCM_SHA256 bits=128/128);
 Sat, 29 Mar 2025 07:52:53 -0700 (PDT)
Message-ID: <8ab047e5-97cb-4d5d-806c-f71ee1223ad9@gmail.com>
Date: Sat, 29 Mar 2025 15:52:52 +0100
MIME-Version: 1.0
User-Agent: Mozilla Thunderbird
To: FFmpeg development discussions and patches <ffmpeg-devel@ffmpeg.org>
References: <6bef7ee3-6e0b-496a-9018-ce02d5e8cd63@gmail.com>
 <2477728b-6217-446a-9a15-830f028baea0@gmail.com>
 <8bdfe841-080b-49f6-913b-7577d03a1214@gmail.com> <20250328213828.GI4991@pb2>
Content-Language: en-US
From: Leandro Santiago <leandrosansilva@gmail.com>
In-Reply-To: <20250328213828.GI4991@pb2>
Subject: Re: [FFmpeg-devel] [PATCH] avfilter: Proof of Concept: enable
 out-of-tree filters
X-BeenThere: ffmpeg-devel@ffmpeg.org
X-Mailman-Version: 2.1.29
Precedence: list
List-Id: FFmpeg development discussions and patches <ffmpeg-devel.ffmpeg.org>
List-Unsubscribe: <https://ffmpeg.org/mailman/options/ffmpeg-devel>,
 <mailto:ffmpeg-devel-request@ffmpeg.org?subject=unsubscribe>
List-Archive: <https://ffmpeg.org/pipermail/ffmpeg-devel>
List-Post: <mailto:ffmpeg-devel@ffmpeg.org>
List-Help: <mailto:ffmpeg-devel-request@ffmpeg.org?subject=help>
List-Subscribe: <https://ffmpeg.org/mailman/listinfo/ffmpeg-devel>,
 <mailto:ffmpeg-devel-request@ffmpeg.org?subject=subscribe>
Reply-To: FFmpeg development discussions and patches <ffmpeg-devel@ffmpeg.org>
Content-Type: text/plain; charset="us-ascii"
Content-Transfer-Encoding: 7bit
Errors-To: ffmpeg-devel-bounces@ffmpeg.org
Sender: "ffmpeg-devel" <ffmpeg-devel-bounces@ffmpeg.org>
Archived-At: <https://master.gitmailbox.com/ffmpegdev/8ab047e5-97cb-4d5d-806c-f71ee1223ad9@gmail.com/>
List-Archive: <https://master.gitmailbox.com/ffmpegdev/>
List-Post: <mailto:ffmpegdev@gitmailbox.com>

On 3/28/25 22:38, Michael Niedermayer wrote:
> Hi Leandro
>
> On Mon, Mar 24, 2025 at 05:20:02PM +0100, Leandro Santiago wrote:
>> In this iteration I've made the following changes, based on the received feedback:
>>
>> - No external tools are needed by the build system.
>>
>> - The external filters should be put in ext/libavfilter. Anything there will be included.
>>
>> - The build system will execute a file called `configure.sh` in the directory of the external filter. This script has access to the functions and variables defined on `./configure`, as it's included via `.` on sh.
>>
>> - I will document the "API" for the external filters as soon the approach is approved, but an example of filter can be found at https://gitlab.com/leandrosansilva/ffmpeg-extra-filter-example . If you are unhappy with the example code hosted on gitlab.com, I can move it elsewhere where it gets easier for you to have access to the code.
>>
>> - Essentially, an external filter is composed by at least a `configure.sh` and a `Makefile`.
>>
>> I really hope this can be the last iteration, as I ran out of ideas on how to simplify the process, so please let me know your thoughts :-)
> How does this compare to simply using
> git merge

The main difference is being 100% resistant to merge/rebase/cherry-pick conflicts :-)

There is of course the possibility that the filter won't compile at all (or compile and be buggy) due to the changes in libavfilter or build system.

The good side of it is that it's up to the developer of the external filter to worry about keeping track with changes in the ffmpeg core, not the other way round.

>
> That is each filter developer simply maintaining a fork of ffmpeg and their
> filter, in that fork. Adding lines to configure, Makefile, ...
>
> If we take the last filter as a random example, what it chanegd looks like this:
>
>     avfilter/interlace_vulkan: add interlace_vulkan filter
>
>     This is a Vulkan-accelerated version of the existing interlace filter.
>
>  configure                         |   1 +
>  doc/filters.texi                  |   2 +-
>  libavfilter/Makefile              |   1 +
>  libavfilter/allfilters.c          |   1 +
>  libavfilter/vf_interlace_vulkan.c | 313 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
>  5 files changed, 317 insertions(+), 1 deletion(-)
Interesting, the case of documentation integration is still an open issue on my proposal. I'll have a look at it.
>
> The advantage of "git merge" wether by hand or by a automated tool
> is that its not limited to what it can do. Its much more powerfull

How would that work when the user is building ffmpeg+external-filters via release tarballs?

>
> and the changes outside adding the filter itself are very basic.
> Conflicts are something that we can workaround in many ways if they
> become a problem
>
> Also it much easier alows transitioning between actually including a filter
> in git master, if the community desires that for a filter later.

For those cases, git has good support for merging unrelated repositories with unrelated histories those days. I have experienced using it on less complex codebases and it worked really well.

Do you think it would be problematic? [1]

[1] https://git-scm.com/docs/git-merge#Documentation/git-merge.txt---allow-unrelated-histories

>
>
> thx
>
> [...]
>
> _______________________________________________
> 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".
_______________________________________________
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".