]> git.sesse.net Git - ffmpeg/blobdiff - doc/filter_design.txt
Merge commit 'b8deb7c34f755d5e3eee0b5930c3a6ad2dda96bc'
[ffmpeg] / doc / filter_design.txt
index d784d8471e40faee2cee5e0fcde61e34b5da9876..e8a7c53ee91d1298c556b271aa367d7c8cd8d390 100644 (file)
@@ -232,7 +232,8 @@ Frame scheduling
     one of its inputs, repeatedly until at least one frame has been pushed.
 
     Return values:
-    if request_frame could produce a frame, it should return 0;
+    if request_frame could produce a frame, or at least make progress
+    towards producing a frame, it should return 0;
     if it could not for temporary reasons, it should return AVERROR(EAGAIN);
     if it could not because there are no more frames, it should return
     AVERROR_EOF.
@@ -244,20 +245,18 @@ Frame scheduling
             push_one_frame();
             return 0;
         }
-        while (!frame_pushed) {
-            input = input_where_a_frame_is_most_needed();
-            ret = ff_request_frame(input);
-            if (ret == AVERROR_EOF) {
-                process_eof_on_input();
-            } else if (ret < 0) {
-                return ret;
-            }
+        input = input_where_a_frame_is_most_needed();
+        ret = ff_request_frame(input);
+        if (ret == AVERROR_EOF) {
+            process_eof_on_input();
+        } else if (ret < 0) {
+            return ret;
         }
         return 0;
 
     Note that, except for filters that can have queued frames, request_frame
     does not push frames: it requests them to its input, and as a reaction,
-    the filter_frame method will be called and do the work.
+    the filter_frame method possibly will be called and do the work.
 
 Legacy API
 ==========