| @@ -143,6 +143,10 @@ static int output_single_frame(AVFilterContext *ctx, AVFrame *in, double *var_va | |||||
| int px[4], py[4]; | int px[4], py[4]; | ||||
| AVFrame *out; | AVFrame *out; | ||||
| var_values[VAR_PX] = s->x; | |||||
| var_values[VAR_PY] = s->y; | |||||
| var_values[VAR_PZOOM] = s->prev_zoom; | |||||
| var_values[VAR_PDURATION] = s->prev_nb_frames; | |||||
| var_values[VAR_TIME] = pts * av_q2d(outlink->time_base); | var_values[VAR_TIME] = pts * av_q2d(outlink->time_base); | ||||
| var_values[VAR_FRAME] = i; | var_values[VAR_FRAME] = i; | ||||
| var_values[VAR_ON] = outlink->frame_count + 1; | var_values[VAR_ON] = outlink->frame_count + 1; | ||||
| @@ -265,7 +269,7 @@ static int request_frame(AVFilterLink *outlink) | |||||
| AVFilterContext *ctx = outlink->src; | AVFilterContext *ctx = outlink->src; | ||||
| ZPContext *s = ctx->priv; | ZPContext *s = ctx->priv; | ||||
| AVFrame *in = s->in; | AVFrame *in = s->in; | ||||
| double zoom=1, dx=0, dy=0; | |||||
| double zoom=-1, dx=-1, dy=-1; | |||||
| int ret = -1; | int ret = -1; | ||||
| if (in) { | if (in) { | ||||
| @@ -276,9 +280,12 @@ static int request_frame(AVFilterLink *outlink) | |||||
| } | } | ||||
| if (s->current_frame >= s->nb_frames) { | if (s->current_frame >= s->nb_frames) { | ||||
| s->x = dx; | |||||
| s->y = dy; | |||||
| s->prev_zoom = zoom; | |||||
| if (dx != -1) | |||||
| s->x = dx; | |||||
| if (dy != -1) | |||||
| s->y = dy; | |||||
| if (zoom != -1) | |||||
| s->prev_zoom = zoom; | |||||
| s->prev_nb_frames = s->nb_frames; | s->prev_nb_frames = s->nb_frames; | ||||
| s->nb_frames = 0; | s->nb_frames = 0; | ||||
| s->current_frame = 0; | s->current_frame = 0; | ||||