+ if (s->eof && (s->loop == 0 || s->nb_frames < s->size)) {
+ ff_outlink_set_status(outlink, AVERROR_EOF, s->duration);
+ return 0;
+ }
+
+ if (!s->eof && (!s->size ||
+ (s->nb_frames < s->size) ||
+ (s->nb_frames >= s->size && s->loop == 0))) {
+ FF_FILTER_FORWARD_WANTED(outlink, inlink);
+ } else if (s->loop && s->nb_frames == s->size) {
+ return push_frame(ctx);
+ }
+
+ return FFERROR_NOT_READY;