A lot of changes happen at the same time: - 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.
Showing the changes to libavfilter/split.c (1 of 10 files). Show all
Unified · Split
| @@ -30,6 +30,9 @@ · 29 unmodified lines | |||
| 30 | #include "libavutil/mem.h" | 30 | #include "libavutil/mem.h" |
| 31 | #include "libavutil/opt.h" | 31 | #include "libavutil/opt.h" |
| 32 | 32 | ||
| 33 | #define FF_INTERNAL_FIELDS 1 | ||
| 34 | #include "framequeue.h" | ||
| 35 | |||
| 33 | #include "avfilter.h" | 36 | #include "avfilter.h" |
| 34 | #include "audio.h" | 37 | #include "audio.h" |
| 35 | #include "formats.h" | 38 | #include "formats.h" |
| @@ -78,7 +81,7 @@ static int filter_frame(AVFilterLink *inlink, AVFrame *frame) · 42 unmodified lines | |||
| 78 | for (i = 0; i < ctx->nb_outputs; i++) { | 81 | for (i = 0; i < ctx->nb_outputs; i++) { |
| 79 | AVFrame *buf_out; | 82 | AVFrame *buf_out; |
| 80 | 83 | ||
| 81 | if (ctx->outputs[i]->status) | 84 | if (ctx->outputs[i]->status_in) |
| 82 | continue; | 85 | continue; |
| 83 | buf_out = av_frame_clone(frame); | 86 | buf_out = av_frame_clone(frame); |
| 84 | if (!buf_out) { | 87 | if (!buf_out) { |