FFmpeg
tinterlace.h
Go to the documentation of this file.
1 /*
2  * Copyright (c) 2011 Stefano Sabatini
3  * Copyright (c) 2010 Baptiste Coudurier
4  * Copyright (c) 2003 Michael Zucchi <notzed@ximian.com>
5  *
6  * This file is part of FFmpeg.
7  *
8  * FFmpeg is free software; you can redistribute it and/or modify
9  * it under the terms of the GNU General Public License as published by
10  * the Free Software Foundation; either version 2 of the License, or
11  * (at your option) any later version.
12  *
13  * FFmpeg is distributed in the hope that it will be useful,
14  * but WITHOUT ANY WARRANTY; without even the implied warranty of
15  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
16  * GNU General Public License for more details.
17  *
18  * You should have received a copy of the GNU General Public License along
19  * with FFmpeg; if not, write to the Free Software Foundation, Inc.,
20  * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
21  */
22 
23 /**
24  * @file
25  * temporal field interlace filter, ported from MPlayer/libmpcodecs
26  */
27 #ifndef AVFILTER_TINTERLACE_H
28 #define AVFILTER_TINTERLACE_H
29 
30 #include "libavutil/bswap.h"
31 #include "libavutil/opt.h"
32 #include "libavutil/pixdesc.h"
33 #include "drawutils.h"
34 #include "avfilter.h"
35 
36 #define TINTERLACE_FLAG_VLPF 01
37 #define TINTERLACE_FLAG_CVLPF 2
38 #define TINTERLACE_FLAG_EXACT_TB 4
39 #define TINTERLACE_FLAG_BYPASS_IL 8
40 
41 enum VLPFilter {
42  VLPF_OFF = 0,
43  VLPF_LIN = 1,
44  VLPF_CMP = 2,
45 };
46 
57 };
58 
60  MODE_TFF = 0,
62 };
63 
64 typedef struct TInterlaceContext {
65  const AVClass *class;
66  int mode; ///< TInterlaceMode, interlace mode selected
68  int flags; ///< flags affecting interlacing algorithm
69  int lowpass; ///< legacy interlace filter lowpass mode
70  int vsub; ///< chroma vertical subsampling
73  uint8_t *black_data[2][4]; ///< buffer used to fill padded lines (limited/full)
78  void (*lowpass_line)(uint8_t *dstp, ptrdiff_t width, const uint8_t *srcp,
79  ptrdiff_t mref, ptrdiff_t pref, int clip_max);
81 
83 
84 #endif /* AVFILTER_TINTERLACE_H */
MODE_MERGE
@ MODE_MERGE
Definition: tinterlace.h:48
FFDrawColor
Definition: drawutils.h:50
opt.h
TInterlaceContext::lowpass_line
void(* lowpass_line)(uint8_t *dstp, ptrdiff_t width, const uint8_t *srcp, ptrdiff_t mref, ptrdiff_t pref, int clip_max)
Definition: tinterlace.h:78
AVFrame
This structure describes decoded (raw) audio or video data.
Definition: frame.h:330
pixdesc.h
TInterlaceContext
Definition: tinterlace.h:64
TInterlaceContext::color
FFDrawColor color
Definition: tinterlace.h:76
TInterlaceContext::black_linesize
int black_linesize[4]
Definition: tinterlace.h:74
VLPF_LIN
@ VLPF_LIN
Definition: tinterlace.h:43
MODE_INTERLEAVE_TOP
@ MODE_INTERLEAVE_TOP
Definition: tinterlace.h:52
TInterlaceContext::vsub
int vsub
chroma vertical subsampling
Definition: tinterlace.h:70
TInterlaceContext::preout_time_base
AVRational preout_time_base
Definition: tinterlace.h:67
InterlaceScanMode
InterlaceScanMode
Definition: tinterlace.h:59
MODE_MERGEX2
@ MODE_MERGEX2
Definition: tinterlace.h:55
MODE_NB
@ MODE_NB
Definition: tinterlace.h:56
TInterlaceContext::flags
int flags
flags affecting interlacing algorithm
Definition: tinterlace.h:68
TInterlaceContext::csp
const AVPixFmtDescriptor * csp
Definition: tinterlace.h:77
width
#define width
TInterlaceContext::cur
AVFrame * cur
Definition: tinterlace.h:71
VLPF_CMP
@ VLPF_CMP
Definition: tinterlace.h:44
TInterlaceContext::next
AVFrame * next
Definition: tinterlace.h:72
TInterlaceContext::black_data
uint8_t * black_data[2][4]
buffer used to fill padded lines (limited/full)
Definition: tinterlace.h:73
ff_tinterlace_init_x86
void ff_tinterlace_init_x86(TInterlaceContext *interlace)
Definition: vf_tinterlace_init.c:57
AVClass
Describe the class of an AVClass context structure.
Definition: log.h:66
AVRational
Rational number (pair of numerator and denominator).
Definition: rational.h:58
TInterlaceContext::mode
int mode
TInterlaceMode, interlace mode selected.
Definition: tinterlace.h:66
MODE_DROP_EVEN
@ MODE_DROP_EVEN
Definition: tinterlace.h:49
TInterlaceMode
TInterlaceMode
Definition: tinterlace.h:47
MODE_INTERLEAVE_BOTTOM
@ MODE_INTERLEAVE_BOTTOM
Definition: tinterlace.h:53
VLPFilter
VLPFilter
Definition: tinterlace.h:41
MODE_BFF
@ MODE_BFF
Definition: tinterlace.h:61
FFDrawContext
Definition: drawutils.h:35
TInterlaceContext::lowpass
int lowpass
legacy interlace filter lowpass mode
Definition: tinterlace.h:69
bswap.h
MODE_PAD
@ MODE_PAD
Definition: tinterlace.h:51
avfilter.h
TInterlaceContext::draw
FFDrawContext draw
Definition: tinterlace.h:75
MODE_INTERLACEX2
@ MODE_INTERLACEX2
Definition: tinterlace.h:54
VLPF_OFF
@ VLPF_OFF
Definition: tinterlace.h:42
AVPixFmtDescriptor
Descriptor that unambiguously describes how the bits of a pixel are stored in the up to 4 data planes...
Definition: pixdesc.h:69
MODE_TFF
@ MODE_TFF
Definition: tinterlace.h:60
drawutils.h
MODE_DROP_ODD
@ MODE_DROP_ODD
Definition: tinterlace.h:50