[FFmpeg-devel] [PATCH] avformat: add vapoursynth wrapper

James Almer jamrial at gmail.com
Sat May 5 18:09:13 EEST 2018

On 5/5/2018 5:33 AM, wm4 wrote:
> On Fri, 4 May 2018 21:51:38 -0300
> James Almer <jamrial at gmail.com> wrote:
>> On 5/4/2018 9:19 PM, Michael Niedermayer wrote:
>>> On Fri, May 04, 2018 at 02:02:02PM -0300, James Almer wrote:  
>>>> On 5/4/2018 1:51 PM, wm4 wrote:  
>>>>> On Fri, 4 May 2018 13:30:38 -0300
>>>>> James Almer <jamrial at gmail.com> wrote:
>>>>>> On 5/4/2018 12:58 PM, wm4 wrote:  
>>>>>>> On Sat, 28 Apr 2018 19:05:29 +0200
>>>>>>> wm4 <nfxjfg at googlemail.com> wrote:
>>>>>>>> This can "demux" .vpy files.
>>>>>>>> Some minor code copied from other LGPL parts of FFmpeg.
>>>>>>>> I did not found a good way to test a few of the more obscure features,
>>>>>>>> like VFR nodes, compat pixel formats, or nodes with dynamic size/format
>>>>>>>> changes. These can be easily implemented on demand.
>>>>>>>> ---
>>>>>>>>  configure                 |   5 +
>>>>>>>>  libavformat/Makefile      |   1 +
>>>>>>>>  libavformat/allformats.c  |   1 +
>>>>>>>>  libavformat/vapoursynth.c | 421 ++++++++++++++++++++++++++++++++++++++++++++++
>>>>>>>>  4 files changed, 428 insertions(+)
>>>>>>>>  create mode 100644 libavformat/vapoursynth.c
>>>>>>> Pushed, with some minor changes, and zero-copy frame passing.    
>>>>>> The first step to fix something (in this case, usage sizeof(AVFrame)
>>>>>> outside libavutil) is not adding even more cases of the issue in question.
>>>>>> You still can replace this with rawvideo. Someone even already wrote it
>>>>>> for you.
>>>>>> Lets try to abide our own ABI rules...  
>>>>> That's requires a frame copy and is not what I went through all the
>>>>> effort for.
>>>>> Why didn't you say anything when the kmsgrab code did the same thing?
>>>>> Or when the unwrapped frame stuff was added in the first place?  
>>>> I did the other day on IRC when you asked me why i was against this, if
>>>> you recall, because it was then when i found out this has been the case
>>>> for a long while, and why I'm now saying adding even more cases is going
>>>> in the opposite direction of an actual solution.
>>>> In any case, i explicitly didn't block this, and no one else seems to
>>>> care, so whatever.  
>>> I just now realized this, no, use of sizeof(AVFrame) outside libavutil is not ok,
>>> thats a ABI/API breakage.
>>> This must be removed/reverted. In all cases that are relevant.  
>> Fixed/adapted, not reverted. For vapoursynth and kmsgrab it should be a
>> matter of making them output rawvideo packets.
> Why don't you get it? We don't want to copy and then end up with
> unaligned shit.

Has this been a problem with Avisynth? And you're telling that to me,
who spent the past couple months dicking around with buffer references
to remove as many allocations and copies i could find. I'm all about
zero copy, but not when it means an ABI violation.

Back to the subject in question, you suggested a function to return
sizeof(AVFrame) at runtime. It could even be avpriv to prevent its usage
outside of libav*, so i guess that's a good solution to avoid having to
rewrite a bunch of modules.

More information about the ffmpeg-devel mailing list