[FFmpeg-devel] lavfi state of affairs 3

Baptiste Coudurier baptiste.coudurier
Wed Jul 1 21:06:48 CEST 2009

Hi Stefano,

Stefano Sabatini wrote:
> On date Wednesday 2009-07-01 10:22:36 -0700, Baptiste Coudurier encoded:
>> Hi Michael,
>> Michael Niedermayer wrote:
> [...]
>>> note, before you waste more of our both time, acceptable patches are either
>>> 1. mechanical updates that is application of changes from ffmpeg svn that
>>>    are not in soc yet.
>>> 2. clean patches passing the full set of rules about clean patches 
>>> In that sense i like to again mention, that lavfi should be moved into ffmpeg
>>> svn quickly because it does become more painfull with time (now a merge
>>> _requires_ support for changing width/height as well, a short while ago it
>>> didnt but now it would be a feature regression)
>> Can you or someone else please state what needs to be done to finallly
>> move lavfi into ffmpeg svn ? Maybe it would be possible to help.
> Well, I tried to address some of the points listed here:
> http://thread.gmane.org/gmane.comp.video.ffmpeg.devel/85905
> I'll try to resume here the main current issues.
> |* Expand filter missing.
> |
> |  There is the need for an expand filter with "direct rendering", that
> |  is which doens't require memcpy of any sort, this maybe requires API
> |  extension:
> |  http://thread.gmane.org/gmane.comp.video.ffmpeg.devel/85015

Is this mandatory ? Direct rendering is not mandatory IMHO.

> |  MPlayer already has such a thing, so it may be worthwhile check that
> |  code, in general is a good idea to check out all the filters in
> |  MPlayer/libmpcodecs in order to avoid to waste time reinventing the
> |  wheel.

What about the license ? Is it GPL ? If so I would prefer a LGPL

> |  Same considerations apply for the syntax, when possible is a good
> |  idea to keep the same syntax (when sane) of the corresponding
> |  MPlayer filters.
> |
> |  An implementation of an expand/pad filters has been already posted
> |  on the soc ML:
> |  http://thread.gmane.org/gmane.comp.video.ffmpeg.soc/2779/
> I worked out a framework for argument passing to filters, and I
> currently have a working implementation for such a pad filter:
> http://thread.gmane.org/gmane.comp.video.ffmpeg.devel/89945
> The patch proposes a change in how the buffers are requested, they are
> requested to the terminating filter, and allows direct rendering but
> still doesn't implement it. Ideally the decoder should request a
> buffer from the chain and write to it, rather than memcpy the buffered
> frame to the buffer provided by the filterchain.
> So the thread revealed this other two missing points:
> * missing direct rendering

IMHO not mandatory if it can work without.

> * need for a regression test covering some of the most common use case
>   (cropping + padding + scaling). I posted an embryonal regression
>   test for lavfi here:
>   http://thread.gmane.org/gmane.comp.video.ffmpeg.devel/92792 

Well, good and wanted but strictly not mandatory to get it into svn.

>   which is more a proof of concept, than I made some changes to the
>   main repo regression tests and wanted to update the lavfi repo, and
>   got stucked there.
> |* vf_scale filter missing
> |  This has to have the same features as the MPlayer's one, this should
> |  be trivial.
> |  See again:
> |  http://thread.gmane.org/gmane.comp.video.ffmpeg.devel/85015
> I posted a patch for this, trying to implement all the libmpcodecs scale
> filter features as requested by Michael, then we got stucked and I
> focused on other problems:
> http://thread.gmane.org/gmane.comp.video.ffmpeg.devel/89378
> |* A more powerful system for dealing with image formats is needed to
> |  avoid bad code duplication. I mean some system to tell if a format
> |  is for example packed, planar, the number of channels/planes and so
> |  on, as discussed here:
> |  http://thread.gmane.org/gmane.comp.video.ffmpeg.devel/83733
> |
> |  and creates corresponding AVFilterFormats lists.
> |
> |  pixdesc.[ch] already committed in SVN may provide the foundations
> |  for such a system (I intend to work on this).
> The foundations of such a system (pixdesc.{h,c}) is already committed
> in the main repo, altough disabled, some nice features of it (for
> example av_get_bits_per_pixel()) should simplify writing filters.

Is it needed to have equal functionality as what is in svn right now ?

> |* Maybe a one-pixel colorspace transform, as discussed here:
> |  http://thread.gmane.org/gmane.comp.video.ffmpeg.soc/5727/focus=5739
> |
> |  may avoid code duplication for all that filters that need to execute
> |  YUV <-> RGB or some other transformation just for one color.
> |
> |  I'm not sure what's the better place for it, but lsws seems the
> |  obvious choice.
> There is some code for that already committed in
> libavfilter/parseutils.c, but I don't believe this feature is anyway
> blocking, after all whenever I needed to implement such a one pixel
> transform I used the macros in libavcodec/colorspace.h, also the
> libswscale soc taks may help here.

How is that mandatory ?

> |* More documentation for the various filters, so that people don't
> |  need for example to read the code in order to understand how to use
> |  the various filters. Ideally the filters should be auto-documented,
> |  (for example they should support an help options), but for starting
> |  a simple texinfo page for them may be sufficient.
> I think this is addressed, now that we have doc/vfilters.texi.
> Another important point is:
> * missing variable frame size/pixel format support, that should be
>   managed by lavfi, currently this feature is implemented in ffmpeg.c,
>   I posted a very rudimental patch for that much time ago:
>   http://thread.gmane.org/gmane.comp.video.ffmpeg.devel/78477
> Any help is very appreciated, libavfi looks like an impressive
> addition to FFmpeg, also it should allow to significantly reduce the
> clutter in the apps.

Definitely, but we need to focus on what's mandatory for svn inclusion,
not what we would like to have.

It's been 4 months vhook has been removed now, and we do not have a
replacement yet, and people starts to work on gsoc code because they
have to.

What we need IMHO is:
1) sane API to permit work on other filters.

How is the API ? What is missing ? AFAIK I saw some people working ith
it so it must be working in some ways.

2) crop replacement

Do we have a working filter for it ?

3) scale replacement with support for changing resolution.

Do we have a working filter for it ?

Baptiste COUDURIER                              GnuPG Key Id: 0x5C1ABAAA
Key fingerprint                 8D77134D20CC9220201FC5DB0AC9325C5C1ABAAA
FFmpeg maintainer                                  http://www.ffmpeg.org

More information about the ffmpeg-devel mailing list