- if ((!s->pad || (s->pad && frame->nb_samples == s->nb_out_samples)))
- return ff_filter_frame(outlink, frame);
+ if (!s->pad || frame->nb_samples == s->nb_out_samples) {
+ ret = ff_filter_frame(outlink, frame);
+ if (ff_inlink_queued_samples(inlink) >= s->nb_out_samples)
+ ff_filter_set_ready(ctx, 100);
+ return ret;
+ }