80 #define OFFSET(x) offsetof(MCDeintContext, x) 
   81 #define FLAGS AV_OPT_FLAG_VIDEO_PARAM|AV_OPT_FLAG_FILTERING_PARAM 
   82 #define CONST(name, help, val, unit) { name, help, 0, AV_OPT_TYPE_CONST, {.i64=val}, INT_MIN, INT_MAX, FLAGS, unit } 
  119     enc_ctx->
width  = inlink->
w;
 
  133     switch (mcdeint->
mode) {
 
  180     int x, y, i, ret, got_frame = 0;
 
  198     for (i = 0; i < 3; i++) {
 
  206         for (y = 0; y < 
h; y++) {
 
  207             if ((y ^ mcdeint->
parity) & 1) {
 
  208                 for (x = 0; x < w; x++) {
 
  213                     if (y > 0 && y < h-1){
 
  214                         int is_edge = x < 3 || x > w-4;
 
  215                         int diff0 = filp[-fils] - srcp[-srcs];
 
  216                         int diff1 = filp[+fils] - srcp[+srcs];
 
  219 #define DELTA(j) av_clip(j, -x, w-1-x) 
  221 #define GET_SCORE_EDGE(j)\ 
  222    FFABS(srcp[-srcs+DELTA(-1+(j))] - srcp[+srcs+DELTA(-1-(j))])+\ 
  223    FFABS(srcp[-srcs+DELTA(j)     ] - srcp[+srcs+DELTA(  -(j))])+\ 
  224    FFABS(srcp[-srcs+DELTA(1+(j)) ] - srcp[+srcs+DELTA( 1-(j))]) 
  226 #define GET_SCORE(j)\ 
  227    FFABS(srcp[-srcs-1+(j)] - srcp[+srcs-1-(j)])+\ 
  228    FFABS(srcp[-srcs  +(j)] - srcp[+srcs  -(j)])+\ 
  229    FFABS(srcp[-srcs+1+(j)] - srcp[+srcs+1-(j)]) 
  231 #define CHECK_EDGE(j)\ 
  232     {   int score = GET_SCORE_EDGE(j);\ 
  233         if (score < spatial_score){\ 
  234             spatial_score = score;\ 
  235             diff0 = filp[-fils+DELTA(j)]    - srcp[-srcs+DELTA(j)];\ 
  236             diff1 = filp[+fils+DELTA(-(j))] - srcp[+srcs+DELTA(-(j))];\ 
  239     {   int score = GET_SCORE(j);\ 
  240         if (score < spatial_score){\ 
  241             spatial_score= score;\ 
  242             diff0 = filp[-fils+(j)] - srcp[-srcs+(j)];\ 
  243             diff1 = filp[+fils-(j)] - srcp[+srcs-(j)];\ 
  256                         if (diff0 + diff1 > 0)
 
  268         for (y = 0; y < 
h; y++) {
 
  269             if (!((y ^ mcdeint->parity) & 1)) {
 
  270                 for (x = 0; x < w; x++) {
 
  271                     frame_dec->data[i][x + y*fils] =
 
  272                     outpic   ->data[i][x + y*dsts] = 
inpic->data[i][x + y*srcs];
 
  277     mcdeint->parity ^= 1;
 
  315     .priv_class    = &mcdeint_class,
 
#define FF_COMPLIANCE_EXPERIMENTAL
Allow nonstandardized experimental things. 
 
static const AVFilterPad mcdeint_inputs[]
 
This structure describes decoded (raw) audio or video data. 
 
AVCodec * avcodec_find_encoder(enum AVCodecID id)
Find a registered encoder with a matching codec ID. 
 
Main libavfilter public API header. 
 
int max_b_frames
maximum number of B-frames between non-B-frames Note: The output will be delayed by max_b_frames+1 re...
 
int h
agreed upon image height 
 
enum AVPixelFormat pix_fmt
Pixel format, see AV_PIX_FMT_xxx. 
 
AVFrame * ff_get_video_buffer(AVFilterLink *link, int w, int h)
Request a picture buffer with a specific set of permissions. 
 
attribute_deprecated int me_method
This option does nothing. 
 
AVRational time_base
This is the fundamental unit of time (in seconds) in terms of which frame timestamps are represented...
 
BYTE int const BYTE * srcp
 
const char * name
Pad name. 
 
#define GET_SCORE_EDGE(j)
 
static av_cold int end(AVCodecContext *avctx)
 
int me_cmp
motion estimation comparison function 
 
static const AVFilterPad mcdeint_outputs[]
 
AVFILTER_DEFINE_CLASS(mcdeint)
 
#define CONST(name, help, val, unit)
 
A filter pad used for either input or output. 
 
A link between two filters. 
 
int avcodec_close(AVCodecContext *avctx)
Close a given AVCodecContext and free all the data associated with it (but not the AVCodecContext its...
 
#define AV_LOG_ERROR
Something went wrong and cannot losslessly be recovered. 
 
#define AV_CODEC_FLAG_4MV
4 MV per MB allowed / advanced prediction for H.263. 
 
return ff_filter_frame(outlink, outpic)
 
static int config_props(AVFilterLink *inlink)
 
int me_sub_cmp
subpixel motion estimation comparison function 
 
void av_frame_free(AVFrame **frame)
Free the frame and any dynamically allocated objects in it, e.g. 
 
#define NULL_IF_CONFIG_SMALL(x)
Return NULL if CONFIG_SMALL is true, otherwise the argument without modification. ...
 
void * priv
private data for use by the filter 
 
void av_dict_free(AVDictionary **pm)
Free all the memory allocated for an AVDictionary struct and all keys and values. ...
 
int flags
AV_CODEC_FLAG_*. 
 
#define CODEC_FLAG_LOW_DELAY
 
int w
agreed upon image width 
 
static av_cold void uninit(AVFilterContext *ctx)
 
int refs
number of reference frames 
 
#define AV_CODEC_FLAG_QSCALE
Use fixed qscale. 
 
AVCodecContext * avcodec_alloc_context3(const AVCodec *codec)
Allocate an AVCodecContext and set its fields to default values. 
 
int width
picture width / height. 
 
static const AVOption mcdeint_options[]
 
#define FFABS(a)
Absolute value, Note, INT_MIN / INT64_MIN result in undefined behavior as they are not representable ...
 
int quality
quality (between 1 (good) and FF_LAMBDA_MAX (bad)) 
 
static const AVFilterPad outputs[]
 
static const AVFilterPad inputs[]
 
Libavcodec external API header. 
 
int linesize[AV_NUM_DATA_POINTERS]
For video, size in bytes of each picture line. 
 
main external API structure. 
 
void av_packet_unref(AVPacket *pkt)
Wipe the packet. 
 
static int query_formats(AVFilterContext *ctx)
 
int av_dict_set(AVDictionary **pm, const char *key, const char *value, int flags)
Set the given entry in *pm, overwriting an existing entry. 
 
Describe the class of an AVClass context structure. 
 
rational number numerator/denominator 
 
attribute_deprecated int avcodec_encode_video2(AVCodecContext *avctx, AVPacket *avpkt, const AVFrame *frame, int *got_packet_ptr)
Encode a frame of video. 
 
const char * name
Filter name. 
 
int avcodec_open2(AVCodecContext *avctx, const AVCodec *codec, AVDictionary **options)
Initialize the AVCodecContext to use the given AVCodec. 
 
AVFilterLink ** outputs
array of pointers to output links 
 
static enum AVPixelFormat pix_fmts[]
 
int global_quality
Global quality for codecs which cannot change it per frame. 
 
#define AV_CODEC_FLAG_QPEL
Use qpel MC. 
 
uint8_t * data[AV_NUM_DATA_POINTERS]
pointer to the picture/channel planes. 
 
int gop_size
the number of pictures in a group of pictures, or 0 for intra_only 
 
int mb_cmp
macroblock comparison function (not supported yet) 
 
planar YUV 4:2:0, 12bpp, (1 Cr & Cb sample per 2x2 Y samples) 
 
attribute_deprecated AVFrame * coded_frame
the picture in the bitstream 
 
void av_init_packet(AVPacket *pkt)
Initialize optional fields of a packet with default values. 
 
int dia_size
ME diamond size & shape. 
 
AVFilterContext * dst
dest filter 
 
#define FF_QP2LAMBDA
factor to convert from H.263 QP to lambda 
 
static int filter_frame(AVFilterLink *inlink, AVFrame *inpic)
 
AVPixelFormat
Pixel format. 
 
This structure stores compressed data. 
 
int strict_std_compliance
strictly follow the standard (MPEG-4, ...). 
 
int av_frame_copy_props(AVFrame *dst, const AVFrame *src)
Copy only "metadata" fields from src to dst. 
 
#define AV_CEIL_RSHIFT(a, b)