/* * 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_PULLUP_H #define AVFILTER_PULLUP_H #include "avfilter.h" typedef struct PullupBuffer { int lock[2]; uint8_t *planes[4]; } PullupBuffer; typedef struct PullupField { int parity; PullupBuffer *buffer; unsigned flags; int breaks; int affinity; int *diffs; int *combs; int *vars; struct PullupField *prev, *next; } PullupField; typedef struct PullupFrame { int lock; int length; int parity; PullupBuffer *ifields[4], *ofields[2]; PullupBuffer *buffer; } PullupFrame; typedef struct PullupContext { const AVClass *class; int junk_left, junk_right, junk_top, junk_bottom; int metric_plane; int strict_breaks; int strict_pairs; int metric_w, metric_h, metric_length; int metric_offset; int nb_planes; int planewidth[4]; int planeheight[4]; PullupField *first, *last, *head; PullupBuffer buffers[10]; PullupFrame frame; int (*diff)(const uint8_t *a, const uint8_t *b, ptrdiff_t s); int (*comb)(const uint8_t *a, const uint8_t *b, ptrdiff_t s); int (*var )(const uint8_t *a, const uint8_t *b, ptrdiff_t s); } PullupContext; void ff_pullup_init_x86(PullupContext *s); #endif /* AVFILTER_PULLUP_H */