[FFmpeg-devel] [PATCH 4/4] lavfi: make filter_frame non-recursive.

Michael Niedermayer michael at niedermayer.cc
Sun Oct 23 17:10:24 EEST 2016


On Sun, Oct 23, 2016 at 12:27:42PM +0200, Nicolas George wrote:
> A lot of changes happen at the same time:
> 
> - Add private_fields.h to devine private fields in AVFilterLink.
>   It allows to have the private fields directly in structured types
>   without needing an indirection for an opaque structure nor the
>   structure definition in public headers.
> 
> - Add a framequeue fifo to AVFilterLink.
> 
> - split AVFilterLink.status into status_in and status_out: requires
>   changes to the few filters and programs that use it directly
>   (f_interleave, split, filtfmts).
> 
> - Add a field ready to AVFilterContext, marking when the filter is ready
>   and its activation priority.
> 
> - Add flags to mark blocked links.
> 
> - Change ff_filter_frame() to enqueue the frame.
> 
> - Change all filtering functions to update the ready field and the
>   blocked flags.
> 
> - Update ff_filter_graph_run_once() to use the ready field.
> 
> - buffersrc: always push the frame immediately.
> 
> - TODO update buffersink to query the queue.
> 
> Signed-off-by: Nicolas George <george at nsup.org>
> ---
>  libavfilter/avfilter.c         | 454 ++++++++++++++++++++++++++++++++++-------
>  libavfilter/avfilter.h         |  31 ++-
>  libavfilter/avfiltergraph.c    |  49 ++---
>  libavfilter/buffersink.c       |   7 +-
>  libavfilter/buffersrc.c        |   6 +-
>  libavfilter/f_interleave.c     |   5 +-
>  libavfilter/internal.h         |   6 +
>  libavfilter/private_fields.h   |  43 ++++
>  libavfilter/split.c            |   3 +-
>  libavfilter/tests/filtfmts.c   |   1 +
>  libavfilter/vf_extractplanes.c |   3 +-
>  tests/ref/fate/source          |   1 +
>  12 files changed, 468 insertions(+), 141 deletions(-)
>  create mode 100644 libavfilter/private_fields.h
> 
> 
> I have been on this for so long that I am starting having trouble seeing
> this straight.
> 
> This is not perfect yet, but I think it is good enough for a proper review
> and apply. Future enhancements can be done incrementally and will be much
> easier now that the framework is solid.
> 
> FATE passes, and the few extra tests that were suggested in the first round
> of review were mostly addressed.

breaks (no video window opens)
./ffplay bgc.sub.dub.ogm
google points to: http://samples.mplayerhq.hu/ogg/bgc.sub.dub.ogm

i also have a file that with
-af apad -shortest out.nut results in
[output stream 0:1 @ 0x2b374c0] 100 buffers queued in output stream 0:1, something may be wrong.
[output stream 0:1 @ 0x2b374c0] 1000 buffers queued in output stream 0:1, something may be wrong.
[output stream 0:1 @ 0x2b374c0] 10000 buffers queued in output stream 0:1, something may be wrong.
[output stream 0:1 @ 0x2b374c0] 100000 buffers queued in output stream 0:1, something may be wrong.
[output stream 0:1 @ 0x2b374c0] 1000000 buffers queued in output stream 0:1, something may be wrong.
Killed

while working before,  i cant share that file though

also several files seem to improve in accuracy in their stream
durations with vframes
for example
./ffmpeg -i bbb-360p24.i420.lossless.drc.ogg.fixed.ogg+bbb-24fps.flac.via-ffmpeg.ogg -vframes 7 -f framecrc -
has a audio frame after the patch but is missing that before
(google has hits for the filename, i can upload it though if needed)

maybe something should be added to the fate tests as this seems not to
be covered, the file is too big though

the output for bgc.sub.dub.ogm with  -vframes 3 -f framecrc -
is also significnatly different

thx

[...]
-- 
Michael     GnuPG fingerprint: 9FF2128B147EF6730BADF133611EC787040B0FAB

Observe your enemies, for they first find out your faults. -- Antisthenes
-------------- next part --------------
A non-text attachment was scrubbed...
Name: signature.asc
Type: application/pgp-signature
Size: 181 bytes
Desc: Digital signature
URL: <http://ffmpeg.org/pipermail/ffmpeg-devel/attachments/20161023/651c382f/attachment.sig>


More information about the ffmpeg-devel mailing list