|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
#ifndef AVFILTER_TINTERLACE_H |
|
#define AVFILTER_TINTERLACE_H |
|
|
|
#include "libavutil/bswap.h" |
|
#include "libavutil/opt.h" |
|
#include "libavutil/pixdesc.h" |
|
#include "drawutils.h" |
|
#include "avfilter.h" |
|
#include "ccfifo.h" |
|
|
|
#define TINTERLACE_FLAG_VLPF 01 |
|
#define TINTERLACE_FLAG_CVLPF 2 |
|
#define TINTERLACE_FLAG_EXACT_TB 4 |
|
#define TINTERLACE_FLAG_BYPASS_IL 8 |
|
|
|
enum VLPFilter { |
|
VLPF_OFF = 0, |
|
VLPF_LIN = 1, |
|
VLPF_CMP = 2, |
|
}; |
|
|
|
enum TInterlaceMode { |
|
MODE_MERGE = 0, |
|
MODE_DROP_EVEN, |
|
MODE_DROP_ODD, |
|
MODE_PAD, |
|
MODE_INTERLEAVE_TOP, |
|
MODE_INTERLEAVE_BOTTOM, |
|
MODE_INTERLACEX2, |
|
MODE_MERGEX2, |
|
MODE_NB, |
|
}; |
|
|
|
enum InterlaceScanMode { |
|
MODE_TFF = 0, |
|
MODE_BFF, |
|
}; |
|
|
|
typedef struct TInterlaceContext { |
|
const AVClass *class; |
|
int mode; |
|
AVRational preout_time_base; |
|
int flags; |
|
int lowpass; |
|
int vsub; |
|
AVFrame *cur; |
|
AVFrame *next; |
|
uint8_t *black_data[2][4]; |
|
int black_linesize[4]; |
|
FFDrawContext draw; |
|
FFDrawColor color; |
|
const AVPixFmtDescriptor *csp; |
|
void (*lowpass_line)(uint8_t *dstp, ptrdiff_t width, const uint8_t *srcp, |
|
ptrdiff_t mref, ptrdiff_t pref, int clip_max); |
|
CCFifo cc_fifo; |
|
} TInterlaceContext; |
|
|
|
void ff_tinterlace_init_x86(TInterlaceContext *interlace); |
|
|
|
#endif |
|
|