]> git.sesse.net Git - ffmpeg/blob - libavfilter/bwdif.h
Merge commit '6a9c00c09d2bc50c0ea64ba092b2f4afc46aa978'
[ffmpeg] / libavfilter / bwdif.h
1 /*
2  * This file is part of FFmpeg.
3  *
4  * FFmpeg is free software; you can redistribute it and/or
5  * modify it under the terms of the GNU Lesser General Public
6  * License as published by the Free Software Foundation; either
7  * version 2.1 of the License, or (at your option) any later version.
8  *
9  * FFmpeg is distributed in the hope that it will be useful,
10  * but WITHOUT ANY WARRANTY; without even the implied warranty of
11  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
12  * Lesser General Public License for more details.
13  *
14  * You should have received a copy of the GNU Lesser General Public
15  * License along with FFmpeg; if not, write to the Free Software
16  * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
17  */
18
19 #ifndef AVFILTER_BWDIF_H
20 #define AVFILTER_BWDIF_H
21
22 #include "libavutil/pixdesc.h"
23 #include "avfilter.h"
24
25 enum BWDIFMode {
26     BWDIF_MODE_SEND_FRAME = 0, ///< send 1 frame for each frame
27     BWDIF_MODE_SEND_FIELD = 1, ///< send 1 frame for each field
28 };
29
30 enum BWDIFParity {
31     BWDIF_PARITY_TFF  =  0, ///< top field first
32     BWDIF_PARITY_BFF  =  1, ///< bottom field first
33     BWDIF_PARITY_AUTO = -1, ///< auto detection
34 };
35
36 enum BWDIFDeint {
37     BWDIF_DEINT_ALL        = 0, ///< deinterlace all frames
38     BWDIF_DEINT_INTERLACED = 1, ///< only deinterlace frames marked as interlaced
39 };
40
41 typedef struct BWDIFContext {
42     const AVClass *class;
43
44     int mode;           ///< BWDIFMode
45     int parity;         ///< BWDIFParity
46     int deint;          ///< BWDIFDeint
47
48     int frame_pending;
49
50     AVFrame *cur;
51     AVFrame *next;
52     AVFrame *prev;
53     AVFrame *out;
54
55     void (*filter_intra)(void *dst1, void *cur1, int w, int prefs, int mrefs,
56                          int prefs3, int mrefs3, int parity, int clip_max);
57     void (*filter_line)(void *dst, void *prev, void *cur, void *next,
58                         int w, int prefs, int mrefs, int prefs2, int mrefs2,
59                         int prefs3, int mrefs3, int prefs4, int mrefs4,
60                         int parity, int clip_max);
61     void (*filter_edge)(void *dst, void *prev, void *cur, void *next,
62                         int w, int prefs, int mrefs, int prefs2, int mrefs2,
63                         int parity, int clip_max, int spat);
64
65     const AVPixFmtDescriptor *csp;
66     int inter_field;
67     int eof;
68 } BWDIFContext;
69
70 void ff_bwdif_init_x86(BWDIFContext *bwdif);
71
72 #endif /* AVFILTER_BWDIF_H */