+static int activate(AVFilterContext *ctx)
+{
+ AVFilterLink *outlink = ctx->outputs[0];
+ FramepackContext *s = ctx->priv;
+ int ret;
+
+ FF_FILTER_FORWARD_STATUS_BACK_ALL(outlink, ctx);
+
+ if (!s->input_views[0]) {
+ ret = ff_inlink_consume_frame(ctx->inputs[0], &s->input_views[0]);
+ if (ret < 0)
+ return ret;
+ }
+
+ if (!s->input_views[1]) {
+ ret = ff_inlink_consume_frame(ctx->inputs[1], &s->input_views[1]);
+ if (ret < 0)
+ return ret;
+ }
+
+ if (s->input_views[0] && s->input_views[1])
+ return try_push_frame(ctx);
+
+ FF_FILTER_FORWARD_STATUS(ctx->inputs[0], outlink);
+ FF_FILTER_FORWARD_STATUS(ctx->inputs[1], outlink);
+
+ if (ff_outlink_frame_wanted(ctx->outputs[0]) &&
+ !ff_outlink_get_status(ctx->inputs[0]) &&
+ !s->input_views[0]) {
+ ff_inlink_request_frame(ctx->inputs[0]);
+ return 0;
+ }
+
+ if (ff_outlink_frame_wanted(ctx->outputs[0]) &&
+ !ff_outlink_get_status(ctx->inputs[1]) &&
+ !s->input_views[1]) {
+ ff_inlink_request_frame(ctx->inputs[1]);
+ return 0;
+ }
+
+ return FFERROR_NOT_READY;
+}
+