and request_frame() to acknowledge status changes), to run once more
and check if enough input was present for several frames.
- Exemples of scenarios to consider:
+ Examples of scenarios to consider:
- buffersrc: activate if frame_wanted_out to notify the application;
activate when the application adds a frame to push it immediately.
- If an input has frames in fifo and frame_wanted_out == 0, dequeue a
frame and call filter_frame().
- Ratinale: filter frames as soon as possible instead of leaving them
+ Rationale: filter frames as soon as possible instead of leaving them
queued; frame_wanted_out < 0 is not possible since the old API does not
set it nor provides any similar feedback; frame_wanted_out > 0 happens
when min_samples > 0 and there are not enough samples queued.
return 1;
}
+size_t ff_inlink_queued_frames(AVFilterLink *link)
+{
+ return ff_framequeue_queued_frames(&link->fifo);
+}
+
int ff_inlink_check_available_frame(AVFilterLink *link)
{
return ff_framequeue_queued_frames(&link->fifo) > 0;
}
+int ff_inlink_queued_samples(AVFilterLink *link)
+{
+ return ff_framequeue_queued_samples(&link->fifo);
+}
+
int ff_inlink_check_available_samples(AVFilterLink *link, unsigned min)
{
uint64_t samples = ff_framequeue_queued_samples(&link->fifo);
return 1;
}
+AVFrame *ff_inlink_peek_frame(AVFilterLink *link, size_t idx)
+{
+ return ff_framequeue_peek(&link->fifo, idx);
+}
+
int ff_inlink_make_frame_writable(AVFilterLink *link, AVFrame **rframe)
{
AVFrame *frame = *rframe;