[FFmpeg-devel] [PATCH] Port FFT domain filter.

arwa arif arwaarif1994 at gmail.com
Tue Mar 3 18:20:09 CET 2015


On Tue, Mar 3, 2015 at 6:11 PM, Michael Niedermayer <michaelni at gmx.at>
wrote:

> On Tue, Mar 03, 2015 at 12:06:09PM +0530, arwa arif wrote:
> > I tried to change the name to fft, but it is conflicting with
> > libavcodec/fft. So, I am unable to change that. I have updated the patch,
> > adding support to coloured images.
>
> yes, the names could conflict in configure indeed
>
>
> [...]
> > +
> > +#include "libavfilter/internal.h"
> > +#include "libavutil/common.h"
> > +#include "libavutil/imgutils.h"
> > +#include "libavutil/opt.h"
> > +#include "libavutil/pixdesc.h"
> > +#include "libavcodec/avfft.h"
> > +#include "libavutil/eval.h"
> > +
> > +typedef struct {
> > +    const AVClass *class;
> > +
> > +    RDFTContext *rdft;
> > +    int rdft_hbits[3];
> > +    int rdft_vbits[3];
> > +    size_t rdft_hlen[3];
> > +    size_t rdft_vlen[3];
> > +    FFTSample *rdft_hdata[3];
> > +    FFTSample *rdft_vdata[3];
> > +
> > +    int dc;
> > +    char *lum_str;
> > +    AVExpr *lum_expr;
> > +    double *lum_data;
> > +
> > +} FFTFILTContext;
> > +
> > +static const char *const var_names[] = {   "X",   "Y",   "W",   "H",
>  NULL    };
> > +enum                                   { VAR_X, VAR_Y, VAR_W, VAR_H,
> VAR_VARS_NB };
> > +
> > +#define OFFSET(x) offsetof(FFTFILTContext, x)
> > +#define FLAGS AV_OPT_FLAG_VIDEO_PARAM|AV_OPT_FLAG_FILTERING_PARAM
> > +
>
> > +static const AVOption fftfilt_options[] = {
> > +    { "dc",  "adjust gain",              OFFSET(dc),
> AV_OPT_TYPE_INT,    {.i64 = 0},      0,     1000,     FLAGS },
> > +    { "lum", "set luminance expression", OFFSET(lum_str),
> AV_OPT_TYPE_STRING, {.str = "1"}, CHAR_MIN, CHAR_MAX, FLAGS },
> > +    {NULL},
>
> The user should be able to set seperate dc / "lum" for teh 3 planes
> that is if only the first dc and first exression is set then they
> should be used for all 3 planes
> otherwise, if teh user set 3 dc values and 3 expressions then each
> plane should use the specific expression
>
>
>
> [...]
> > +
> > +        memset(fftfilt->rdft_hdata[plane] + i *
> fftfilt->rdft_hlen[plane], 0,
> > +               fftfilt->rdft_hlen[plane] *
> sizeof(*fftfilt->rdft_hdata[plane]));
>
> the memseting should ideally be replaced by mirroring, this leads
> to better quality
>
> for example
> matrixbench_mpeg2.mpg -vf fftfilt=dc=128:lum="'(1 / (1 +
> exp(-(Y+X)/10.0+H/100.0)))'"
> results in a pink border due to this
>
> that is instead of for each line
> 1 2 3 3 7 9 10 11 23
> it should not be changed to:
> 1 2 3 3 7 9 10 11 23  0  0  0  0  0  0  0
> but
> 1 2 3 3 7 9 10 11 23 23 11 10  x  3  2  1
>
>
But, we want to clear the block of memory. Why do we want to mirror it?


> [...]
>
> --
> Michael     GnuPG fingerprint: 9FF2128B147EF6730BADF133611EC787040B0FAB
>
> No human being will ever know the Truth, for even if they happen to say it
> by chance, they would not even known they had done so. -- Xenophanes
>
> _______________________________________________
> ffmpeg-devel mailing list
> ffmpeg-devel at ffmpeg.org
> http://ffmpeg.org/mailman/listinfo/ffmpeg-devel
>
>


More information about the ffmpeg-devel mailing list