ret = ff_request_frame(ctx->inputs[0]);
+next:
if (ret == AVERROR_EOF && !ctx->is_disabled && s->nb_frames > 0) {
AVFrame *out = s->frames[s->nb_frames - 1];
+ if (!out) {
+ s->nb_frames--;
+ goto next;
+ }
out->pts = s->pts[s->flush_idx++];
ret = ff_filter_frame(outlink, out);
s->frames[s->nb_frames - 1] = NULL;
return ret;
}
+static av_cold void uninit(AVFilterContext *ctx)
+{
+ RandomContext *s = ctx->priv;
+
+ for (int i = 0; i < s->nb_frames; i++)
+ av_frame_free(&s->frames[i]);
+}
+
static const AVFilterPad random_inputs[] = {
{
.name = "default",
.priv_size = sizeof(RandomContext),
.priv_class = &random_class,
.init = init,
+ .uninit = uninit,
.inputs = random_inputs,
.outputs = random_outputs,
};