Subversion Repositories Kolibri OS

Rev

Blame | Last modification | View Log | RSS feed

  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_IDET_H
  20. #define AVFILTER_IDET_H
  21.  
  22. #include "libavutil/pixdesc.h"
  23. #include "avfilter.h"
  24.  
  25. #define HIST_SIZE 4
  26.  
  27. typedef int (*ff_idet_filter_func)(const uint8_t *a, const uint8_t *b, const uint8_t *c, int w);
  28.  
  29. typedef enum {
  30.     TFF,
  31.     BFF,
  32.     PROGRESSIVE,
  33.     UNDETERMINED,
  34. } Type;
  35.  
  36. typedef enum {
  37.     REPEAT_NONE,
  38.     REPEAT_TOP,
  39.     REPEAT_BOTTOM,
  40. } RepeatedField;
  41.  
  42. typedef struct {
  43.     const AVClass *class;
  44.     float interlace_threshold;
  45.     float progressive_threshold;
  46.     float repeat_threshold;
  47.     float half_life;
  48.     uint64_t decay_coefficient;
  49.  
  50.     Type last_type;
  51.  
  52.     uint64_t repeats[3];
  53.     uint64_t prestat[4];
  54.     uint64_t poststat[4];
  55.     uint64_t total_repeats[3];
  56.     uint64_t total_prestat[4];
  57.     uint64_t total_poststat[4];
  58.  
  59.     uint8_t history[HIST_SIZE];
  60.  
  61.     AVFrame *cur;
  62.     AVFrame *next;
  63.     AVFrame *prev;
  64.     ff_idet_filter_func filter_line;
  65.  
  66.     int interlaced_flag_accuracy;
  67.     int analyze_interlaced_flag;
  68.     int analyze_interlaced_flag_done;
  69.  
  70.     const AVPixFmtDescriptor *csp;
  71.     int eof;
  72. } IDETContext;
  73.  
  74. void ff_idet_init_x86(IDETContext *idet, int for_16b);
  75.  
  76. /* main fall-back for left-over */
  77. int ff_idet_filter_line_c(const uint8_t *a, const uint8_t *b, const uint8_t *c, int w);
  78. int ff_idet_filter_line_c_16bit(const uint16_t *a, const uint16_t *b, const uint16_t *c, int w);
  79.  
  80. #endif
  81.