[FFmpeg-devel] [PATCH] avfilter/setpts: add command support
Oleg Afanasyev
oafanasiev at gmail.com
Wed May 10 02:12:52 EEST 2023
On Sun, 7 May 2023 at 23:47, Stefano Sabatini <stefasab at gmail.com> wrote:
>
> On date Monday 2023-05-01 22:01:05 +0100, Oleg Afanasyev wrote:
> > I'm using setpts to generate timelapses with slowdowns in the middle.
> > Using setpts filter requires complicated expr to handle intervals. This
> > patch allows commands to change expr and also adds a constant that
> > provides time of last command applications to allow specifying gradual
> > changes using difference between time and cmd time.
> >
> > ----------------------
> > with best regards
> > Oleg Afanasyev
>
> > From a714a0957a57c1d392feca0ba675ba5ac7c875ee Mon Sep 17 00:00:00 2001
> > From: Oleg <oafanasiev at gmail.com>
> > Date: Sat, 29 Apr 2023 19:56:46 +0100
> > Subject: [PATCH] avfilter/setpts: add command support
> >
> > Add support for changing expr on the fly.
> >
> > Signed-off-by: Oleg <oafanasiev at gmail.com>
> > ---
> > doc/filters.texi | 7 +++++
> > libavfilter/setpts.c | 68 +++++++++++++++++++++++++++++++++-----------
> > 2 files changed, 58 insertions(+), 17 deletions(-)
> >
> > diff --git a/doc/filters.texi b/doc/filters.texi
> > index 50e1682144..fbdb1f8ecf 100644
> > diff --git a/libavfilter/setpts.c b/libavfilter/setpts.c
> > index 5bcc0c2dcf..7b09ce7707 100644
> > --- a/libavfilter/setpts.c
> > +++ b/libavfilter/setpts.c
> [...]
> > +static int process_command(AVFilterContext *ctx, const char *cmd, const char *arg,
> > + char *res, int res_len, int flags)
> > +{
> > + SetPTSContext *setpts = ctx->priv;
> > + int ret;
> > +
> > + ret = ff_filter_process_command(ctx, cmd, arg, res, res_len, flags);
> > +
> > + if (ret < 0)
> > + return ret;
> > +
>
> > + if (!strcmp(cmd, "expr")) {
> > + av_expr_free(setpts->expr);
> > + ret = av_expr_parse(&setpts->expr, arg, var_names, NULL, NULL, NULL, NULL, 0, ctx);
> > + if (ret < 0) {
> > + av_log(ctx, AV_LOG_ERROR, "Error while parsing expression '%s'\n", arg);
> > + }
>
> what happens in case setpts->expr is freed and this fails?
>
> probably it should keep a reference to expr and remove it only in case
> the new expression was successfully parsed
Fixed! Didn't realize that encoding continues even if command fails,
so it was crashing with the previous expression still in place.
>
> [...]
>
> Looks good to me otherwise.
>
> _______________________________________________
> ffmpeg-devel mailing list
> ffmpeg-devel at ffmpeg.org
> https://ffmpeg.org/mailman/listinfo/ffmpeg-devel
>
> To unsubscribe, visit link above, or email
> ffmpeg-devel-request at ffmpeg.org with subject "unsubscribe".
-------------- next part --------------
A non-text attachment was scrubbed...
Name: 0001-avfilter-setpts-add-command-support.patch
Type: text/x-patch
Size: 6278 bytes
Desc: not available
URL: <https://ffmpeg.org/pipermail/ffmpeg-devel/attachments/20230510/619b5df5/attachment.bin>
More information about the ffmpeg-devel
mailing list