[FFmpeg-cvslog] r25165 - in trunk: Changelog configure doc/filters.texi libavfilter/Makefile libavfilter/allfilters.c libavfilter/avfilter.h libavfilter/vf_frei0r.c

Stefano Sabatini stefano.sabatini-lala
Fri Sep 24 10:57:31 CEST 2010


On date Friday 2010-09-24 08:13:51 +0100, M?ns Rullg?rd wrote:
> stefano <subversion at mplayerhq.hu> writes:
> 
> > Author: stefano
> > Date: Fri Sep 24 02:32:22 2010
> > New Revision: 25165
> >
> > Log:
> > Add frei0r filter.
> >
> > See thread:
> > Subject: [FFmpeg-devel] [POC] frei0r wrapper
> > Date: Tue, 24 Aug 2010 21:37:32 +0200
> >
> > Added:
> >    trunk/libavfilter/vf_frei0r.c
> > Modified:
> >    trunk/Changelog
> >    trunk/configure
> >    trunk/doc/filters.texi
> >    trunk/libavfilter/Makefile
> >    trunk/libavfilter/allfilters.c
> >    trunk/libavfilter/avfilter.h
> >
> > Modified: trunk/Changelog
> > ==============================================================================
> > --- trunk/Changelog	Thu Sep 23 23:33:29 2010	(r25164)
> > +++ trunk/Changelog	Fri Sep 24 02:32:22 2010	(r25165)
> > @@ -36,6 +36,7 @@ version <next>:
> >  - G.722 ADPCM audio encoder/decoder
> >  - R10k video decoder
> >  - ocv_smooth filter
> > +- frei0r wrapper filter
> >
> >  version 0.6:
> >
> > Modified: trunk/configure
> > ==============================================================================
> > --- trunk/configure	Thu Sep 23 23:33:29 2010	(r25164)
> > +++ trunk/configure	Fri Sep 24 02:32:22 2010	(r25165)
> > @@ -162,6 +162,7 @@ Configuration options:
> >  External library support:
> >    --enable-avisynth        enable reading of AVISynth script files [no]
> >    --enable-bzlib           enable bzlib [autodetect]
> > +  --enable-frei0r          enable frei0r video filtering
> >    --enable-libopencore-amrnb enable AMR-NB de/encoding via libopencore-amrnb [no]
> >    --enable-libopencore-amrwb enable AMR-WB decoding via libopencore-amrwb [no]
> >    --enable-libopencv       enable video filtering via libopencv [no]
> > @@ -873,6 +874,7 @@ CONFIG_LIST="
> >      ffprobe
> >      ffserver
> >      fft
> > +    frei0r
> >      golomb
> >      gpl
> >      gray
> > @@ -1050,6 +1052,7 @@ HAVE_LIST="
> >      poll_h
> >      setrlimit
> >      strerror_r
> > +    strtok_r
> >      struct_addrinfo
> >      struct_ipv6_mreq
> >      struct_sockaddr_in6
> 
> I told you not to check for strtok_r.  It exists on all POSIX systems,
> and frei0r doesn't work anywhere else (dlopen).  Please remove this
> pointless check, and also please respect the review comments in future.

POSIX => dlopen
but not:
dlopen => POSIX

so if dlopen is present you can't infer that strtok_r exists.

And note that we already have a check for strerror_r, which is
supported by POSIX but is not supported in MinGW, following the same
logic it makes sense to keep the check for strtok_r.
 
> > +static void *load_path(AVFilterContext *ctx, const char *prefix, const char *name)
> > +{
> > +    char path[1024];
> > +
> > +    snprintf(path, sizeof(path), "%s%s.so", prefix, name);
> > +    av_log(ctx, AV_LOG_DEBUG, "Looking for frei0r effect in '%s'\n", path);
> > +    return dlopen(path, RTLD_NOW|RTLD_LOCAL);
> > +}
> > +
> > +static av_cold int init(AVFilterContext *ctx, const char *args, void *opaque)
> > +{
> > +    Frei0rContext *frei0r = ctx->priv;
> > +    f0r_init_f            f0r_init;
> > +    f0r_get_plugin_info_f f0r_get_plugin_info;
> > +    f0r_plugin_info_t *pi;
> > +    char dl_name[1024], *path;
> > +
> > +    *frei0r->params = 0;
> > +
> > +    if (args)
> > +        sscanf(args, "%1023[^:]:%255c", dl_name, frei0r->params);
> > +
> > +    /* see: http://piksel.org/frei0r/1.2/spec/1.2/spec/group__pluglocations.html */
> > +    if ((path = av_strdup(getenv("FREI0R_PATH")))) {
> > +        char *p, *ptr = NULL;
> > +        for (p = path; p = strtok_r(p, ":", &ptr); p = NULL)
> > +            if (frei0r->dl_handle = load_path(ctx, p, dl_name))
> > +                break;
> > +        av_free(path);
> > +    }
> > +    if (!frei0r->dl_handle && (path = av_strdup(getenv("HOME")))) {
> 
> Why strdup?

Good point, it can be removed.
 
> > +        char prefix[1024];
> > +        snprintf(prefix, sizeof(prefix), "%s/.frei0r-1/lib/", path);
> > +        frei0r->dl_handle = load_path(ctx, prefix, dl_name);
> > +        av_free(path);
> > +    }
> > +    if (!frei0r->dl_handle)
> > +        frei0r->dl_handle = load_path(ctx, "/usr/local/lib/frei0r-1/", dl_name);
> > +    if (!frei0r->dl_handle)
> > +        frei0r->dl_handle = load_path(ctx, "/usr/lib/frei0r-1/", dl_name);
> 
> You have changed this substantially from what was reviewed, and not in
> the way I requested.  What is the point of reviews if you are going to
> ignore them?

Basically I rewrote it to be more strict with the frei0r specs.

Regards.
-- 
FFmpeg = Fierce & Faithless Mythic Prodigious Emblematic Gospel



More information about the ffmpeg-cvslog mailing list