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 | 30 | #include "libavutil/mem.h" |
| 31 | 31 | #include "libavutil/opt.h" |
| 32 | 32 | |
| 33 | +#define FF_INTERNAL_FIELDS 1 | |
| 34 | +#include "framequeue.h" | |
| 35 | + | |
| 33 | 36 | #include "avfilter.h" |
| 34 | 37 | #include "audio.h" |
| 35 | 38 | #include "formats.h" |
| @@ -78,7 +81,7 @@ static int filter_frame(AVFilterLink *inlink, AVFrame *frame) · 42 unmodified lines | ||
| 78 | 81 | for (i = 0; i < ctx->nb_outputs; i++) { |
| 79 | 82 | AVFrame *buf_out; |
| 80 | 83 | |
| 81 | − if (ctx->outputs[i]->status) | |
| 84 | + if (ctx->outputs[i]->status_in) | |
| 82 | 85 | continue; |
| 83 | 86 | buf_out = av_frame_clone(frame); |
| 84 | 87 | if (!buf_out) { |