On Sat, Nov 22, 2014 at 11:44:29PM +0100, Stefano Sabatini wrote: > TODO: bump minor > --- > Changelog | 1 + > doc/filters.texi | 4 ++ > libavfilter/Makefile | 1 + > libavfilter/allfilters.c | 1 + > libavfilter/vf_tdiff.c | 131 > +++++++++++++++++++++++++++++++++++++++++++++++ > 5 files changed, 138 insertions(+) > create mode 100644 libavfilter/vf_tdiff.c > > diff --git a/Changelog b/Changelog > index 5f38aea..41fdf18 100644 > --- a/Changelog > +++ b/Changelog > @@ -15,6 +15,7 @@ version <next>: > - ffserver supports codec private options > - creating DASH compatible fragmented MP4, MPEG-DASH segmenting muxer > - WebP muxer with animated WebP support > +- tdiff filter > > > version 2.4: > diff --git a/doc/filters.texi b/doc/filters.texi > index 8c16c7a..9882da7 100644 > --- a/doc/filters.texi > +++ b/doc/filters.texi > @@ -8394,6 +8394,10 @@ Useful for enlarging pixel art images without reducing > sharpness. > @section swapuv > Swap U & V plane. > > +@section tdiff > + > +Show difference between consecutive frames. > + > @section telecine > > Apply telecine process to the video. > diff --git a/libavfilter/Makefile b/libavfilter/Makefile > index 2c56e38..3217c99 100644 > --- a/libavfilter/Makefile > +++ b/libavfilter/Makefile > @@ -97,6 +97,7 @@ OBJS-$(CONFIG_BLACKDETECT_FILTER) += > vf_blackdetect.o > OBJS-$(CONFIG_BLACKFRAME_FILTER) += vf_blackframe.o > OBJS-$(CONFIG_BLEND_FILTER) += vf_blend.o dualinput.o > framesync.o > OBJS-$(CONFIG_BOXBLUR_FILTER) += vf_boxblur.o
> +OBJS-$(CONFIG_CDIFF_FILTER) += vf_cdiff.o
[...]
> --- /dev/null
> +++ b/libavfilter/vf_tdiff.c
the name doesnt match
[...]
> +
> +static int filter_frame(AVFilterLink *inlink, AVFrame *frame)
> +{
> + TDiffContext *tdiff = inlink->dst->priv;
> + AVFilterLink *outlink = inlink->dst->outputs[0];
> +
> + if (tdiff->prev_frame) {
> + int i, j;
> +
> + AVFrame *diff = ff_get_video_buffer(outlink, outlink->w, outlink->h);
> + av_frame_copy_props(frame, diff);
> + if (!diff) {
> + av_frame_free(&frame);
> + return AVERROR(ENOMEM);
> + }
> +
> + /* compute difference with previous frame */
> + for (i = 0; i < frame->height; i++) {
> + uint8_t *pdiff = diff ->data[0] + i * diff
> ->linesize[0];
> + uint8_t *pprev = tdiff->prev_frame->data[0] + i *
> tdiff->prev_frame->linesize[0];
> + uint8_t *pthis = frame ->data[0] + i * frame
> ->linesize[0];
> + for (j = 0; j < frame->width; j++) {
> + *pdiff++ = abs(*pthis++ - *pprev++);
a difference that leaves the sign intact might be interresting too
like 128 + *pthis++ - *pprev++ or something like that
[...]
--
Michael GnuPG fingerprint: 9FF2128B147EF6730BADF133611EC787040B0FAB
Those who are too smart to engage in politics are punished by being
governed by those who are dumber. -- Plato
signature.asc
Description: Digital signature
_______________________________________________ ffmpeg-devel mailing list [email protected] http://ffmpeg.org/mailman/listinfo/ffmpeg-devel
