[FFmpeg-devel] [PATCH] libavfilter: constify filter list

Michael Niedermayer michael at niedermayer.cc
Wed Jan 31 13:11:25 EET 2018


On Wed, Jan 31, 2018 at 10:03:58AM +0100, wm4 wrote:
> On Wed, 31 Jan 2018 09:08:23 +0100
> Tobias Rapp <t.rapp at noa-archive.com> wrote:
> 
> > On 30.01.2018 20:37, Michael Niedermayer wrote:
> > > On Tue, Jan 30, 2018 at 08:27:27PM +0700, Muhammad Faiz wrote:  
> > >> On Tue, Jan 30, 2018 at 7:50 PM, Michael Niedermayer
> > >> <michael at niedermayer.cc> wrote:  
> > >>> Its also a step away from supporting plugins.
> > >>> Why plugins matter ? Because having plugin
> > >>> support is a big advantage, it allows a much wider
> > >>> community to work on, write and maintain filters.
> > >>>
> > >>> With plugins, people can write filters that are
> > >>> written in languages other than C. Or filters which
> > >>> some developer in FFmpeg doesnt want. Or they can be
> > >>> maintained externally by people who just do not like us.
> > >>> Or by people who perfer a FOSS license different from
> > >>> LGPL/GPL/BSD. Iam sure others can come up with more
> > >>> reasons ...
> > >>>
> > >>> Of course avfilter_register() isnt enough for plugins
> > >>> but it or something equivalent is needed for plugins.
> > >>>
> > >>> So i would prefer if avfilter_register() stays supported
> > >>> indefinitly or in case a different system is written for
> > >>> plugins then until that system is in place.  
> > >>
> > >> It just returns error and logs error message that currently external
> > >> filter is unsupported. If someone wants to implement support for
> > >> external filter, it can be easily added later using separate
> > >> list/table.  
> > > 
> > > Iam not sure "easily" is true
> > > 
> > > We started out with a fully public API that allowed external filters.
> > > and little by little its removed or made private.
> > > each individual change may be easy to undo but as a whole moving
> > > libavfilter back to having a public API is not that easy anymore
> > > 
> > > IIRC the arguments to make things private where that people wanted to
> > > improve the API. But from the idea and impression of a plan like:
> > > 1. make it private
> > > 2. design and implement better API
> > > 3. make it public again
> > > 
> > > Somehow now people lost sight and interrest in 3. and even 2. is becoming
> > > less interresting. But the problem is really without 2 + 3 actually happening
> > > doing 1 seems like not a good idea at all.
> > > 
> > > To me it seems even mentioning external filters and public API makes some
> > > people angry.
> > > But really that has to be the goal at some point. To again have a public API  
> > 
> > I agree that having (again) a public filter API would be good. This 
> > would give users the freedom to implement their own special-purpose 
> > filters (see the "dumpwave" discussion).
> 
> Someone needs to design and write it.
> 
> Whether we have external filters is completely orthogonal to this
> change. 

> They were not possible before, because not enough API for
> implementing them is public. 

This is correct if by "before" you mean today before this is applied.
But longer ago, as in years, it was possible


> They can be possible in the future, but
> then registering them would need a different API anyway (one that
> doesn't use global mutable state, but uses some sort of context
> instead).

i understand that you arent a native english speaker nor am i but
what you write here is not true.

Several people desire to eliminate all "global mutable state"
and thats fine, iam happy if that is achieved. But its not
that its neccessary for a fully functional API register or otherwise.
The registering code with "global mutable state" and some form
of thread synchronization would work perfectly fine.

What exactly is in relation to registering the problem with 
"global mutable state" ?

One application registering a filter with a common name and another 
application unintentionally using that ?

This is not even possible because each application is in its own process and
will have its own independant copy of libavfilter in its address space only
with "read only" pages shared or with pages with "copy on write".

The "one registers the other uses it by mistake" issue is as far as i
understand only possible if an application uses libavfilter and that
application uses also a lib that itself uses libavfilter too or
similar cases. 
And then both mess with registering custom filters and using custom
filters.
That looks like a very rare situation. If thats the only issue, i would
really not say theres a "need" to avoid "global mutable state"



[...]

-- 
Michael     GnuPG fingerprint: 9FF2128B147EF6730BADF133611EC787040B0FAB

Never trust a computer, one day, it may think you are the virus. -- Compn
-------------- next part --------------
A non-text attachment was scrubbed...
Name: signature.asc
Type: application/pgp-signature
Size: 181 bytes
Desc: not available
URL: <http://ffmpeg.org/pipermail/ffmpeg-devel/attachments/20180131/1630bb53/attachment.sig>


More information about the ffmpeg-devel mailing list