X-Git-Url: https://git.sesse.net/?a=blobdiff_plain;f=libavfilter%2Fvf_mpdecimate.c;h=b030f06b19e18dc7c88f8a33ab14f6867399a80f;hb=02e3e3ea51ffba4067cbd8595396ec677af1f694;hp=099622a029542347538317d4831f96321b52efb5;hpb=57fa9e97424de601a5f10ad7bfc6ce48597c783f;p=ffmpeg diff --git a/libavfilter/vf_mpdecimate.c b/libavfilter/vf_mpdecimate.c index 099622a0295..b030f06b19e 100644 --- a/libavfilter/vf_mpdecimate.c +++ b/libavfilter/vf_mpdecimate.c @@ -27,7 +27,8 @@ #include "libavutil/opt.h" #include "libavutil/pixdesc.h" #include "libavutil/timestamp.h" -#include "libavcodec/dsputil.h" +#include "libavcodec/me_cmp.h" +#include "libavcodec/pixblockdsp.h" #include "avfilter.h" #include "internal.h" #include "formats.h" @@ -48,7 +49,8 @@ typedef struct { int hsub, vsub; ///< chroma subsampling values AVFrame *ref; ///< reference picture - DSPContext dspctx; ///< context providing optimized diff routines + MECmpContext mecc; ///< context providing optimized diff routines + PixblockDSPContext pdsp; AVCodecContext *avctx; ///< codec context required for the DSPContext } DecimateContext; @@ -74,7 +76,8 @@ static int diff_planes(AVFilterContext *ctx, int w, int h) { DecimateContext *decimate = ctx->priv; - DSPContext *dspctx = &decimate->dspctx; + MECmpContext *mecc = &decimate->mecc; + PixblockDSPContext *pdsp = &decimate->pdsp; int x, y; int d, c = 0; @@ -84,10 +87,10 @@ static int diff_planes(AVFilterContext *ctx, /* compute difference for blocks of 8x8 bytes */ for (y = 0; y < h-7; y += 4) { for (x = 8; x < w-7; x += 4) { - dspctx->diff_pixels(block, + pdsp->diff_pixels(block, cur+x+y*linesize, ref+x+y*linesize, linesize); - d = dspctx->sum_abs_dctelem(block); + d = mecc->sum_abs_dctelem(block); if (d > decimate->hi) return 1; if (d > decimate->lo) { @@ -140,7 +143,8 @@ static av_cold int init(AVFilterContext *ctx) decimate->avctx = avcodec_alloc_context3(NULL); if (!decimate->avctx) return AVERROR(ENOMEM); - avpriv_dsputil_init(&decimate->dspctx, decimate->avctx); + ff_me_cmp_init(&decimate->mecc, decimate->avctx); + ff_pixblockdsp_init(&decimate->pdsp, decimate->avctx); return 0; }