+ int ret;
+
+ s->var_values[VAR_N] = inlink->frame_count_out;
+ s->var_values[VAR_T] = TS2T(in->pts, inlink->time_base);
+ s->x = av_expr_eval(s->x_pexpr, s->var_values, s);
+ s->y = av_expr_eval(s->y_pexpr, s->var_values, s);
+ s->w = av_expr_eval(s->w_pexpr, s->var_values, s);
+ s->h = av_expr_eval(s->h_pexpr, s->var_values, s);
+
+ if (s->x + (s->band - 1) <= 0 || s->x + s->w - (s->band*2 - 2) > inlink->w ||
+ s->y + (s->band - 1) <= 0 || s->y + s->h - (s->band*2 - 2) > inlink->h) {
+ av_log(s, AV_LOG_WARNING, "Logo area is outside of the frame,"
+ " auto set the area inside of the frame\n");
+ }
+
+ if (s->x + (s->band - 1) <= 0)
+ s->x = 1 + s->band;
+ if (s->y + (s->band - 1) <= 0)
+ s->y = 1 + s->band;
+ if (s->x + s->w - (s->band*2 - 2) > inlink->w)
+ s->w = inlink->w - s->x - (s->band*2 - 2);
+ if (s->y + s->h - (s->band*2 - 2) > inlink->h)
+ s->h = inlink->h - s->y - (s->band*2 - 2);
+
+ ret = config_input(inlink);
+ if (ret < 0) {
+ av_frame_free(&in);
+ return ret;
+ }
+
+ s->w += s->band*2;
+ s->h += s->band*2;
+ s->x -= s->band;
+ s->y -= s->band;