I do not feel like going to look at all of this, so I'm for applying this filter.
On 11/2/19, Michael Niedermayer <mich...@niedermayer.cc> wrote: > On Fri, Nov 01, 2019 at 09:38:39PM +0100, Paul B Mahol wrote: >> On 11/1/19, Michael Niedermayer <mich...@niedermayer.cc> wrote: >> > On Fri, Nov 01, 2019 at 04:50:38PM +0100, Paul B Mahol wrote: >> >> On 11/1/19, Michael Niedermayer <mich...@niedermayer.cc> wrote: >> >> > On Fri, Nov 01, 2019 at 01:09:24PM +0100, Paul B Mahol wrote: >> >> >> Signed-off-by: Paul B Mahol <one...@gmail.com> >> >> >> --- >> >> >> doc/filters.texi | 78 +++++ >> >> >> libavfilter/Makefile | 1 + >> >> >> libavfilter/allfilters.c | 1 + >> >> >> libavfilter/vf_eval.c | 687 >> >> >> +++++++++++++++++++++++++++++++++++++++ >> >> >> 4 files changed, 767 insertions(+) >> >> >> create mode 100644 libavfilter/vf_eval.c >> >> > >> >> > This looks like it duplicates code from vf_geq.c >> >> > also this should be integrated with or in vf_geq.c >> >> > >> >> > IIUC this was written because geq is GPL, but i had already agreed >> >> > to >> >> > relicense the code in it i wrote to LGPL, so iam not sure why you >> >> > wrote >> >> > this. >> >> > >> >> > Who disagreed to relicnce their contribution to geq to avoid this >> >> > extra >> >> > work you did ? >> >> > Or did noone disagree ? then i do not understand why you wrote a >> >> > seperate >> >> > filter >> >> >> >> Do I need to contact all on blame list of vf_geq? or also mplayer devs >> >> that touched geq in mplayer? >> > >> > all who touched it MINUS anyone who made a change that is totally not >> > in the current version (there are several developers in mplayer who >> > made auch changes) >> > also in case of mplayer you may need to look at the commit messages >> > some developers did apply patches from others. >> > >> > I took a quick look and these are the people i saw >> > carl, ubitux, ivan, ods15, Alexis Ballier, derek, Marc-Antoine Arnaud, >> > Nicolas George, Stefano and Paul >> > reimar, zuxy and diego >> >> I do not think I can contact ods15. > > His change was this below (the others seems obviously not in the ffmpeg geq > code) > i didnt check the one below before because its big. > But if we cannot contact him, then this should be checked > > Does any of this prevail in the ffmpeg geq code ? > (if so tell me what and ill rewrite that) > > Thanks > > commit dd09bf52982fef6b29acfbcd5fa5c7cb46994c3b > Author: ods15 <ods15@b3059339-0415-0410-9bf9-f77b7e298cf2> > Date: Fri Oct 27 19:40:48 2006 +0000 > > update vf_geq to new ff_eval API > > > git-svn-id: svn://git.mplayerhq.hu/mplayer/trunk@20471 > b3059339-0415-0410-9bf9-f77b7e298cf2 > > diff --git a/libmpcodecs/vf_geq.c b/libmpcodecs/vf_geq.c > index da33eac71..e8b8c0918 100644 > --- a/libmpcodecs/vf_geq.c > +++ b/libmpcodecs/vf_geq.c > @@ -27,18 +27,12 @@ > #include "mp_msg.h" > #include "cpudetect.h" > > -#if 1 > -double ff_eval(char *s, double *const_value, const char **const_name, > - double (**func1)(void *, double), const char **func1_name, > - double (**func2)(void *, double, double), char > **func2_name, > - void *opaque); > -#endif > - > // Needed to bring in lrintf. > #define HAVE_AV_CONFIG_H > > #include "libavcodec/avcodec.h" > #include "libavcodec/dsputil.h" > +#include "libavcodec/eval.h" > #include "libavutil/common.h" > > /* FIXME: common.h defines printf away when HAVE_AV_CONFIG > @@ -57,7 +51,7 @@ double ff_eval(char *s, double *const_value, const char > **const_name, > > > struct vf_priv_s { > - char eq[3][2000]; > + AVEvalExpr * e[3]; > int framenum; > mp_image_t *mpi; > }; > @@ -120,25 +114,6 @@ static double cr(struct vf_instance_s* vf, double x, > double y){ > static int put_image(struct vf_instance_s* vf, mp_image_t *mpi, double > pts){ > mp_image_t *dmpi; > int x,y, plane; > - static const char *const_names[]={ > - "PI", > - "E", > - "X", > - "Y", > - "W", > - "H", > - "N", > - "SW", > - "SH", > - NULL > - }; > - static const char *func2_names[]={ > - "lum", > - "cb", > - "cr", > - "p", > - NULL > - }; > > if(!(mpi->flags&MP_IMGFLAG_DIRECT)){ > // no DR, so get a new image! hope we'll get DR buffer: > @@ -157,13 +132,6 @@ static int put_image(struct vf_instance_s* vf, > mp_image_t *mpi, double pts){ > int h= mpi->h >> (plane ? mpi->chroma_y_shift : 0); > uint8_t *dst = dmpi->planes[plane]; > int dst_stride= dmpi->stride[plane]; > - double (*func2[])(void *, double, double)={ > - lum, > - cb, > - cr, > - plane==0 ? lum : (plane==1 ? cb : cr), > - NULL > - }; > double const_values[]={ > M_PI, > M_E, > @@ -176,11 +144,12 @@ static int put_image(struct vf_instance_s* vf, > mp_image_t *mpi, double pts){ > h/(double)mpi->h, > 0 > }; > + if (!vf->priv->e[plane]) continue; > for(y=0; y<h; y++){ > const_values[3]=y; > for(x=0; x<w; x++){ > const_values[2]=x; > - dst[x+y* dst_stride]= ff_eval(vf->priv->eq[plane], > const_values, const_names, NULL, NULL, func2, func2_names, vf); > + dst[x+y* dst_stride]= ff_parse_eval(vf->priv->e[plane], > const_values, vf); > } > } > } > @@ -199,6 +168,9 @@ static void uninit(struct vf_instance_s* vf){ > > //===========================================================================// > static int open(vf_instance_t *vf, char* args){ > + char eq[3][2000] = { { 0 }, { 0 }, { 0 } }; > + int plane; > + > vf->config=config; > vf->put_image=put_image; > // vf->get_image=get_image; > @@ -206,10 +178,45 @@ static int open(vf_instance_t *vf, char* args){ > vf->priv=av_malloc(sizeof(struct vf_priv_s)); > memset(vf->priv, 0, sizeof(struct vf_priv_s)); > > - if (args) sscanf(args, "%1999s:%1999s:%1999s", vf->priv->eq[0], > vf->priv->eq[1], vf->priv->eq[2]); > + if (args) sscanf(args, "%1999s:%1999s:%1999s", eq[0], eq[1], eq[2]); > + > + if (!eq[1][0]) strncpy(eq[1], eq[0], sizeof(eq[0])-1); > + if (!eq[2][0]) strncpy(eq[2], eq[1], sizeof(eq[0])-1); > > - if(!vf->priv->eq[1][0]) strncpy(vf->priv->eq[1], vf->priv->eq[0], > sizeof(vf->priv->eq[0])-1); > - if(!vf->priv->eq[2][0]) strncpy(vf->priv->eq[2], vf->priv->eq[1], > sizeof(vf->priv->eq[0])-1); > + for(plane=0; plane<3; plane++){ > + static const char *const_names[]={ > + "PI", > + "E", > + "X", > + "Y", > + "W", > + "H", > + "N", > + "SW", > + "SH", > + NULL > + }; > + static const char *func2_names[]={ > + "lum", > + "cb", > + "cr", > + "p", > + NULL > + }; > + double (*func2[])(void *, double, double)={ > + lum, > + cb, > + cr, > + plane==0 ? lum : (plane==1 ? cb : cr), > + NULL > + }; > + char * a; > + vf->priv->e[plane] = ff_parse(eq[plane], const_names, NULL, NULL, > func2, func2_names, &a); > + > + if (!vf->priv->e[plane]) { > + mp_msg(MSGT_VFILTER, MSGL_ERR, "geq: error loading equation > `%s': %s\n", eq[plane], a); > + } > + } > > return 1; > } > > > > -- > Michael GnuPG fingerprint: 9FF2128B147EF6730BADF133611EC787040B0FAB > > In fact, the RIAA has been known to suggest that students drop out > of college or go to community college in order to be able to afford > settlements. -- The RIAA > _______________________________________________ ffmpeg-devel mailing list ffmpeg-devel@ffmpeg.org https://ffmpeg.org/mailman/listinfo/ffmpeg-devel To unsubscribe, visit link above, or email ffmpeg-devel-requ...@ffmpeg.org with subject "unsubscribe".