From 406a9ccffea8fc36c1e56c07ca32c559ccce52af Mon Sep 17 00:00:00 2001 From: skal Date: Wed, 3 Sep 2014 11:02:32 +0200 Subject: avfilter/vf_idet: MMX/MMXEXT/SSE2 implementation of idet's filter_line() MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit integration by Neil Birkbeck, with help from Vitor Sessak. core SSE2 loop by Skal (pascal.massimino@gmail.com) Reviewed-by: Clément Bœsch Signed-off-by: Michael Niedermayer --- libavfilter/vf_idet.h | 58 +++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 58 insertions(+) create mode 100644 libavfilter/vf_idet.h (limited to 'libavfilter/vf_idet.h') diff --git a/libavfilter/vf_idet.h b/libavfilter/vf_idet.h new file mode 100644 index 0000000000..3820e94e18 --- /dev/null +++ b/libavfilter/vf_idet.h @@ -0,0 +1,58 @@ +/* + * This file is part of FFmpeg. + * + * FFmpeg is free software; you can redistribute it and/or + * modify it under the terms of the GNU General Public + * License as published by the Free Software Foundation; either + * version 2 of the License, or (at your option) any later version. + * + * FFmpeg is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License along + * with FFmpeg; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA + */ + +#ifndef AVFILTER_IDET_H +#define AVFILTER_IDET_H + +#include "libavutil/pixdesc.h" +#include "avfilter.h" + +#define HIST_SIZE 4 + +typedef enum { + TFF, + BFF, + PROGRSSIVE, + UNDETERMINED, +} Type; + +typedef struct { + const AVClass *class; + float interlace_threshold; + float progressive_threshold; + + Type last_type; + int prestat[4]; + int poststat[4]; + + uint8_t history[HIST_SIZE]; + + AVFrame *cur; + AVFrame *next; + AVFrame *prev; + int (*filter_line)(const uint8_t *prev, const uint8_t *cur, const uint8_t *next, int w); + + const AVPixFmtDescriptor *csp; +} IDETContext; + +void ff_idet_init_x86(IDETContext *idet); + +/* main fall-back for left-over */ +int ff_idet_filter_line_c(const uint8_t *a, const uint8_t *b, const uint8_t *c, int w); + +#endif -- cgit v1.2.3