Subversion Repositories Kolibri OS

Rev

Blame | Last modification | View Log | RSS feed

  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/opt.h"
  31. #include "avfilter.h"
  32.  
  33. enum TInterlaceMode {
  34.     MODE_MERGE = 0,
  35.     MODE_DROP_EVEN,
  36.     MODE_DROP_ODD,
  37.     MODE_PAD,
  38.     MODE_INTERLEAVE_TOP,
  39.     MODE_INTERLEAVE_BOTTOM,
  40.     MODE_INTERLACEX2,
  41.     MODE_NB,
  42. };
  43.  
  44. typedef struct {
  45.     const AVClass *class;
  46.     int mode;                   ///< TInterlaceMode, interlace mode selected
  47.     AVRational preout_time_base;
  48.     int flags;                  ///< flags affecting interlacing algorithm
  49.     int frame;                  ///< number of the output frame
  50.     int vsub;                   ///< chroma vertical subsampling
  51.     AVFrame *cur;
  52.     AVFrame *next;
  53.     uint8_t *black_data[4];     ///< buffer used to fill padded lines
  54.     int black_linesize[4];
  55.     void (*lowpass_line)(uint8_t *dstp, ptrdiff_t width, const uint8_t *srcp,
  56.                          const uint8_t *srcp_above, const uint8_t *srcp_below);
  57. } TInterlaceContext;
  58.  
  59. void ff_tinterlace_init_x86(TInterlaceContext *interlace);
  60.  
  61. #endif /* AVFILTER_TINTERLACE_H */
  62.