On 2/26/15, Clement Boesch <u...@pkh.me> wrote: > On Wed, Feb 25, 2015 at 02:55:58PM +0000, Paul B Mahol wrote: >> Signed-off-by: Paul B Mahol <one...@gmail.com> >> --- >> doc/filters.texi | 34 ++++++ >> libavfilter/Makefile | 2 + >> libavfilter/allfilters.c | 2 + >> libavfilter/vf_neighbor.c | 289 >> ++++++++++++++++++++++++++++++++++++++++++++++ >> 4 files changed, 327 insertions(+) >> create mode 100644 libavfilter/vf_neighbor.c >> >> diff --git a/doc/filters.texi b/doc/filters.texi >> index baef346..13ba797 100644 >> --- a/doc/filters.texi >> +++ b/doc/filters.texi >> @@ -3728,6 +3728,23 @@ FFmpeg was configured with @code{--enable-opencl}. >> Default value is 0. >> >> @end table >> >> +@section dilation >> + >> +Apply dilation effect to the video. >> + >> +This filter replaces the pixel by the local(3x3) maximum. >> + >> +It accepts the following parameters: >> + >> +@table @option >> +@item threshold >> +Allows to limit the maximum change, default is 65535. >> + >> +@item coordinates >> +Flag which specifies the pixel to refer to. Default is 255 ie. all eight >> +pixels are used. >> +@end table >> + >> @section drawbox >> >> Draw a colored box on the input image. >> @@ -4437,6 +4454,23 @@ value. >> >> @end table >> >> +@section erosion >> + >> +Apply erosion effect to the video. >> + >> +This filter replaces the pixel by the local(3x3) minimum. >> + >> +It accepts the following parameters: >> + >> +@table @option >> +@item threshold >> +Allows to limit the maximum change, default is 65535. >> + >> +@item coordinates >> +Flag which specifies the pixel to refer to. Default is 255 ie. all eight >> +pixels are used. >> +@end table >> + > [...] >> +static int config_input(AVFilterLink *inlink) >> +{ >> + EDContext *s = inlink->dst->priv; >> + const AVPixFmtDescriptor *desc = >> av_pix_fmt_desc_get(inlink->format); >> + int ret; >> + >> + if ((ret = av_image_fill_linesizes(s->linesize, inlink->format, >> inlink->w)) < 0) >> + return ret; >> + >> + s->planeheight[1] = s->planeheight[2] = FF_CEIL_RSHIFT(inlink->h, >> desc->log2_chroma_h); >> + s->planeheight[0] = s->planeheight[3] = inlink->h; >> + >> + s->nb_planes = av_pix_fmt_count_planes(inlink->format); > >> + s->buffer = av_malloc(3 * (s->linesize[0] + 32)); > > av_malloc_array() relevant? > >> + if (!s->buffer) >> + return AVERROR(ENOMEM); >> + >> + return 0; >> +} >> + >> +static inline void line_copy8(uint8_t *line, const uint8_t *srcp, int >> width, int mergin) >> +{ >> + memcpy(line, srcp, width); >> + > >> + for (int i = mergin; i > 0; i--) { > > int should be declared out of the scope > >> + line[-i] = line[i]; >> + line[width - 1 + i] = line[width - 1 - i]; >> + } >> +} >> + > [...] > > No other comment from me. May I ask if there was a special use case of > this or that's just because the effect were neat and simple to implement?
Is was neat and simple to implement and I may add other effects too. > > -- > Clement B. > _______________________________________________ ffmpeg-devel mailing list ffmpeg-devel@ffmpeg.org http://ffmpeg.org/mailman/listinfo/ffmpeg-devel