You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

59 lines
1.5KB

  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. #ifndef AVFILTER_IDET_H
  19. #define AVFILTER_IDET_H
  20. #include "libavutil/pixdesc.h"
  21. #include "avfilter.h"
  22. #define HIST_SIZE 4
  23. typedef enum {
  24. TFF,
  25. BFF,
  26. PROGRSSIVE,
  27. UNDETERMINED,
  28. } Type;
  29. typedef struct {
  30. const AVClass *class;
  31. float interlace_threshold;
  32. float progressive_threshold;
  33. Type last_type;
  34. int prestat[4];
  35. int poststat[4];
  36. uint8_t history[HIST_SIZE];
  37. AVFrame *cur;
  38. AVFrame *next;
  39. AVFrame *prev;
  40. int (*filter_line)(const uint8_t *prev, const uint8_t *cur, const uint8_t *next, int w);
  41. const AVPixFmtDescriptor *csp;
  42. } IDETContext;
  43. void ff_idet_init_x86(IDETContext *idet);
  44. /* main fall-back for left-over */
  45. int ff_idet_filter_line_c(const uint8_t *a, const uint8_t *b, const uint8_t *c, int w);
  46. #endif