Closed CrendKing closed 3 years ago
The upcoming VapourSynth API v4 should have support for clip properties. Someone can then send a patch to make these filters use the clip properties instead of requesting a frame from the source filter.
I searched around and don't find much information about API v4. Do you mean in v4 you can put arbitrary key-value pairs in VSMap and associate to a Node instead of only VSFrameRef? If so, that might solve the "need-to-get-frame-0-for-prop" problem :)
I think that's how it's supposed to work. It should appear in the doodle1 branch when it's finished: https://github.com/vapoursynth/vapoursynth/tree/doodle1
Today VapourSynth released RC3 of the new API version. I still don't see any function close to a support for clip properties. The only VSMap we can get is from VSFrame *. Is the proposal rejected? If so, any hope this issue gets fixed ever in the future?
It turned out to be too complicated. Sorry. ¯_(ツ)_/¯
It's unfortunate. Will you be able to change this filter in some way to avoid the issue, with the new v4 API? If nothing can be done, I'll tell my users to stay on the AviSynth version. Thanks.
Some filters such as Analyse or FlowFPS request the first frame during the "create" function. This is assuming the source filter is available to provide the source frame at any time. However, I don't think it's true because some source filters might need the metadata (e.g. video info) of the output clip to be available. In that case, there is a dead lock: mvtools blocks the return of the clip, and the unavailability of the clip blocks source filter to provide frame to mvtools.
The AviSynth version of mvtools does not have this problem, e.g. MAnalyse.
Disclaimer: I'm the author of DirectShow VapourSynth Filter. In order to provide source frame, our filter needs to know the video info to correctly connect to the DirectShow graph.