[FFmpeg-devel] [PATCH 3/5] ffmpeg: flush and drain video filters.

Nicolas George nicolas.george at normalesup.org
Mon Mar 12 22:00:49 CET 2012


Le tridi 23 ventôse, an CCXX, Michael Niedermayer a écrit :
> this can easily be solved by requireing sinks to pull. Implementation
> wise it could be that every time theres some activity on a filter graph
> like a frame added, we would do
> for all sinks
>     while poll_frame()
>         request_frame()

That does not work: either poll_frame recurses, and that loop drains the
first output while the other accumulate frames; or poll_frame does not
recurse and it will never see beyond fifos.

What needs to be done is:

for all outputs
    if !frame_immediately_available()
	request_frame()
for all outputs
    while frame_immediately_available()
	read_it()

> fifos are necessary in some cases.

Yes, but they need to be controlled.

> that would mean such filters would need internal fifos.

Yes. But fifos they can regulate.

And I think the following statement should be true for any filter:

Pushing a balanced flux unrequested frames on its inputs (what balanced
means being filter-dependant) should not cause frames to accumulate anywhere
before or inside the filter.

But all that is rather irrelevant for my point, which is: poll_frame, with
its current semantic, is redundant to request_frame+EAGAIN.

Regards,

-- 
  Nicolas George
-------------- next part --------------
A non-text attachment was scrubbed...
Name: not available
Type: application/pgp-signature
Size: 198 bytes
Desc: Digital signature
URL: <http://ffmpeg.org/pipermail/ffmpeg-devel/attachments/20120312/25ec82de/attachment.asc>


More information about the ffmpeg-devel mailing list