Re: [FFmpeg-devel] [PATCH] lavfi: remove the duplicate expression evaluation.
On Mon, 9 Jan 2017 11:46:01 +0100 Nicolas Georgewrote: > Le decadi 20 nivôse, an CCXXV, Jun Zhao a écrit : > > I didn't find any case about x depends on y or y depends y. > > Some users have occasionally asked for it, IIRC. > > > If have this dependency relationship , why the code don't handle > > out_w/out_h in > > crop? > > Ideally, all variables should be able to be expressed based on any > other, and the system should find an order of evaluation that works. > Alas, this is rather complex to implement. A start would be not having to do this in every filter ever. Other filter systems (such as vapoursynth) do not even make the mistake of conflating user language and underlying mechanisms. ___ ffmpeg-devel mailing list ffmpeg-devel@ffmpeg.org http://ffmpeg.org/mailman/listinfo/ffmpeg-devel
Re: [FFmpeg-devel] [PATCH] lavfi: remove the duplicate expression evaluation.
Le decadi 20 nivôse, an CCXXV, Jun Zhao a écrit : > I didn't find any case about x depends on y or y depends y. Some users have occasionally asked for it, IIRC. > If have this dependency relationship , why the code don't handle out_w/out_h > in > crop? Ideally, all variables should be able to be expressed based on any other, and the system should find an order of evaluation that works. Alas, this is rather complex to implement. Regards, -- Nicolas George ___ ffmpeg-devel mailing list ffmpeg-devel@ffmpeg.org http://ffmpeg.org/mailman/listinfo/ffmpeg-devel
Re: [FFmpeg-devel] [PATCH] lavfi: remove the duplicate expression evaluation.
On 2017/1/9 8:21, Mark Thompson wrote: > On 09/01/17 00:12, Jun Zhao wrote: >> From 80ea322e8bd634dbf93291f7a4d78bc87834c0a8 Mon Sep 17 00:00:00 2001 >> From: Jun Zhao>> Date: Sun, 8 Jan 2017 14:26:39 +0800 >> Subject: [PATCH] lavfi: remove the duplicate expression evaluation. >> >> remove the duplicate expression evaluation in crop/drawtext/overlay. >> >> Signed-off-by: Jun Zhao >> --- >> libavfilter/vf_crop.c | 1 - >> libavfilter/vf_drawtext.c | 1 - >> libavfilter/vf_overlay.c | 1 - >> 3 files changed, 3 deletions(-) >> >> diff --git a/libavfilter/vf_crop.c b/libavfilter/vf_crop.c >> index 85ea892..4a032d1 100644 >> --- a/libavfilter/vf_crop.c >> +++ b/libavfilter/vf_crop.c >> @@ -262,7 +262,6 @@ static int filter_frame(AVFilterLink *link, AVFrame >> *frame) >> NAN : av_frame_get_pkt_pos(frame); >> s->var_values[VAR_X] = av_expr_eval(s->x_pexpr, s->var_values, NULL); >> s->var_values[VAR_Y] = av_expr_eval(s->y_pexpr, s->var_values, NULL); >> -s->var_values[VAR_X] = av_expr_eval(s->x_pexpr, s->var_values, NULL); >> >> normalize_double(>x, s->var_values[VAR_X]); >> normalize_double(>y, s->var_values[VAR_Y]); >> diff --git a/libavfilter/vf_drawtext.c b/libavfilter/vf_drawtext.c >> index 649240b..a485362 100644 >> --- a/libavfilter/vf_drawtext.c >> +++ b/libavfilter/vf_drawtext.c >> @@ -1288,7 +1288,6 @@ static int draw_text(AVFilterContext *ctx, AVFrame >> *frame, >> >> s->x = s->var_values[VAR_X] = av_expr_eval(s->x_pexpr, s->var_values, >> >prng); >> s->y = s->var_values[VAR_Y] = av_expr_eval(s->y_pexpr, s->var_values, >> >prng); >> -s->x = s->var_values[VAR_X] = av_expr_eval(s->x_pexpr, s->var_values, >> >prng); >> >> update_alpha(s); >> update_color_with_alpha(s, , s->fontcolor ); >> diff --git a/libavfilter/vf_overlay.c b/libavfilter/vf_overlay.c >> index 108a6fc..ea5889e 100644 >> --- a/libavfilter/vf_overlay.c >> +++ b/libavfilter/vf_overlay.c >> @@ -159,7 +159,6 @@ static void eval_expr(AVFilterContext *ctx) >> >> s->var_values[VAR_X] = av_expr_eval(s->x_pexpr, s->var_values, NULL); >> s->var_values[VAR_Y] = av_expr_eval(s->y_pexpr, s->var_values, NULL); >> -s->var_values[VAR_X] = av_expr_eval(s->x_pexpr, s->var_values, NULL); >> s->x = normalize_xy(s->var_values[VAR_X], s->hsub); >> s->y = normalize_xy(s->var_values[VAR_Y], s->vsub); >> } >> -- >> 2.1.4 > > Isn't the point of this that you can have an expression for x which depends > on y, or an expression for y which depends on x, working either way around? > > - Mark I didn't find any case about x depends on y or y depends y. If have this dependency relationship , why the code don't handle out_w/out_h in crop? > ___ > ffmpeg-devel mailing list > ffmpeg-devel@ffmpeg.org > http://ffmpeg.org/mailman/listinfo/ffmpeg-devel > ___ ffmpeg-devel mailing list ffmpeg-devel@ffmpeg.org http://ffmpeg.org/mailman/listinfo/ffmpeg-devel
Re: [FFmpeg-devel] [PATCH] lavfi: remove the duplicate expression evaluation.
On 09/01/17 00:12, Jun Zhao wrote: > From 80ea322e8bd634dbf93291f7a4d78bc87834c0a8 Mon Sep 17 00:00:00 2001 > From: Jun Zhao> Date: Sun, 8 Jan 2017 14:26:39 +0800 > Subject: [PATCH] lavfi: remove the duplicate expression evaluation. > > remove the duplicate expression evaluation in crop/drawtext/overlay. > > Signed-off-by: Jun Zhao > --- > libavfilter/vf_crop.c | 1 - > libavfilter/vf_drawtext.c | 1 - > libavfilter/vf_overlay.c | 1 - > 3 files changed, 3 deletions(-) > > diff --git a/libavfilter/vf_crop.c b/libavfilter/vf_crop.c > index 85ea892..4a032d1 100644 > --- a/libavfilter/vf_crop.c > +++ b/libavfilter/vf_crop.c > @@ -262,7 +262,6 @@ static int filter_frame(AVFilterLink *link, AVFrame > *frame) > NAN : av_frame_get_pkt_pos(frame); > s->var_values[VAR_X] = av_expr_eval(s->x_pexpr, s->var_values, NULL); > s->var_values[VAR_Y] = av_expr_eval(s->y_pexpr, s->var_values, NULL); > -s->var_values[VAR_X] = av_expr_eval(s->x_pexpr, s->var_values, NULL); > > normalize_double(>x, s->var_values[VAR_X]); > normalize_double(>y, s->var_values[VAR_Y]); > diff --git a/libavfilter/vf_drawtext.c b/libavfilter/vf_drawtext.c > index 649240b..a485362 100644 > --- a/libavfilter/vf_drawtext.c > +++ b/libavfilter/vf_drawtext.c > @@ -1288,7 +1288,6 @@ static int draw_text(AVFilterContext *ctx, AVFrame > *frame, > > s->x = s->var_values[VAR_X] = av_expr_eval(s->x_pexpr, s->var_values, > >prng); > s->y = s->var_values[VAR_Y] = av_expr_eval(s->y_pexpr, s->var_values, > >prng); > -s->x = s->var_values[VAR_X] = av_expr_eval(s->x_pexpr, s->var_values, > >prng); > > update_alpha(s); > update_color_with_alpha(s, , s->fontcolor ); > diff --git a/libavfilter/vf_overlay.c b/libavfilter/vf_overlay.c > index 108a6fc..ea5889e 100644 > --- a/libavfilter/vf_overlay.c > +++ b/libavfilter/vf_overlay.c > @@ -159,7 +159,6 @@ static void eval_expr(AVFilterContext *ctx) > > s->var_values[VAR_X] = av_expr_eval(s->x_pexpr, s->var_values, NULL); > s->var_values[VAR_Y] = av_expr_eval(s->y_pexpr, s->var_values, NULL); > -s->var_values[VAR_X] = av_expr_eval(s->x_pexpr, s->var_values, NULL); > s->x = normalize_xy(s->var_values[VAR_X], s->hsub); > s->y = normalize_xy(s->var_values[VAR_Y], s->vsub); > } > -- > 2.1.4 Isn't the point of this that you can have an expression for x which depends on y, or an expression for y which depends on x, working either way around? - Mark ___ ffmpeg-devel mailing list ffmpeg-devel@ffmpeg.org http://ffmpeg.org/mailman/listinfo/ffmpeg-devel