#include <stdio.h>#include <stdlib.h>#include <string.h>#include <sys/time.h>#include "config.h"#include "mp_msg.h"#include "cpudetect.h"#include "img_format.h"#include "mp_image.h"#include "vd.h"#include "vf.h"#include "cmmx.h"#include "libvo/fastmemcpy.h"Go to the source code of this file.
Data Structures | |
| struct | metrics |
| struct | frame_stats |
| struct | vf_priv_s |
Defines | |
| #define | NUM_STORED 4 |
| #define | PPZ { 2000, 2000, 0, 2000 } |
| #define | PPR { 2000, 2000, 0, 2000 } |
| #define | MIN(a, b) (((a)<(b))?(a):(b)) |
| #define | MAX(a, b) (((a)>(b))?(a):(b)) |
| #define | PDIFFUB(X, Y, T) |
| #define | PDIFFUBT(X, Y, T) |
| #define | PSUMBW(X, T, Z) |
| #define | PSADBW(X, Y, T, Z) PDIFFUBT(X,Y,T) PSUMBW(Y,T,Z) |
| #define | PMAXUB(X, Y) "psubusb " #X "," #Y "\n\tpaddusb " #X "," #Y "\n\t" |
| #define | PMAXUW(X, Y) "psubusw " #X "," #Y "\n\tpaddusw " #X "," #Y "\n\t" |
| #define | PMINUBT(X, Y, T) |
| #define | PAVGB(X, Y) "pavgusb " #X "," #Y "\n\t" |
| #define | MEQ(X, Y) ((X).even == (Y).even && (X).odd == (Y).odd && (X).temp == (Y).temp && (X).noise == (Y).noise) |
| #define | BLOCK_METRICS_TEMPLATE() |
| #define | PSUMBW(X, T, Z) "psadbw " #Z "," #X "\n\t" |
| #define | PSADBW(X, Y, T, Z) "psadbw " #X "," #Y "\n\t" |
| #define | PMAXUB(X, Y) "pmaxub " #X "," #Y "\n\t" |
| #define | PMINUBT(X, Y, T) "pminub " #X "," #Y "\n\t" |
| #define | PAVGB(X, Y) "pavgb " #X "," #Y "\n\t" |
| #define | METRICS(X) (X).even, (X).odd, (X).noise, (X).temp |
| #define | ITOC(X) (!(X) ? ' ' : (X) + ((X)>9 ? 'a'-10 : '0')) |
Enumerations | |
| enum | pu_field_type_t { PU_1ST_OF_3, PU_2ND_OF_3, PU_3RD_OF_3, PU_1ST_OF_2, PU_2ND_OF_2, PU_INTERLACED } |
Functions | |
| static void | get_metrics_c (unsigned char *a, unsigned char *b, int as, int bs, int lines, struct metrics *m) |
| static void | get_metrics_fast_c (unsigned char *a, unsigned char *b, int as, int bs, int lines, struct metrics *m) |
| static void | get_metrics_faster_c (unsigned char *a, unsigned char *b, int as, int bs, int lines, struct metrics *m) |
| static void | get_block_stats (struct metrics *m, struct vf_priv_s *p, struct frame_stats *s) |
| static struct metrics | block_metrics_c (unsigned char *a, unsigned char *b, int as, int bs, int lines, struct vf_priv_s *p, struct frame_stats *s) |
| static struct metrics | block_metrics_fast_c (unsigned char *a, unsigned char *b, int as, int bs, int lines, struct vf_priv_s *p, struct frame_stats *s) |
| static struct metrics | block_metrics_faster_c (unsigned char *a, unsigned char *b, int as, int bs, int lines, struct vf_priv_s *p, struct frame_stats *s) |
| static struct metrics | block_metrics_3dnow (unsigned char *a, unsigned char *b, int as, int bs, int lines, struct vf_priv_s *p, struct frame_stats *s) |
| static struct metrics | block_metrics_mmx2 (unsigned char *a, unsigned char *b, int as, int bs, int lines, struct vf_priv_s *p, struct frame_stats *s) |
| static int | dint_copy_line_mmx2 (unsigned char *dst, unsigned char *a, long bos, long cos, int ds, int ss, int w, int t) |
| static int | dint_copy_line (unsigned char *dst, unsigned char *a, long bos, long cos, int ds, int ss, int w, int t) |
| static int | dint_copy_plane (unsigned char *d, unsigned char *a, unsigned char *b, unsigned char *c, unsigned long w, unsigned long h, unsigned long ds, unsigned long ss, unsigned long threshold, long field, long mmx2) |
| static void | copy_merge_fields (struct vf_priv_s *p, mp_image_t *dmpi, unsigned char **old, unsigned char **new, unsigned long show) |
| static void | diff_planes (struct vf_priv_s *p, struct frame_stats *s, unsigned char *of, unsigned char *nf, int w, int h, int os, int ns, int swapped) |
| static void | diff_fields (struct vf_priv_s *p, struct frame_stats *s, unsigned char **old, unsigned char **new) |
| static const char * | parse_args (struct vf_priv_s *p, const char *args) |
| static unsigned long | gcd (unsigned long x, unsigned long y) |
| static void | init (struct vf_priv_s *p, mp_image_t *mpi) |
| static double | get_time (void) |
| static void | get_image (struct vf_instance *vf, mp_image_t *mpi) |
| static long | cmpe (unsigned long x, unsigned long y, unsigned long err, unsigned long e) |
| static unsigned long | find_breaks (struct vf_priv_s *p, struct frame_stats *s) |
| static int | put_image (struct vf_instance *vf, mp_image_t *mpi, double pts) |
| static int | query_format (struct vf_instance *vf, unsigned int fmt) |
| static int | config (struct vf_instance *vf, int width, int height, int d_width, int d_height, unsigned int flags, unsigned int outfmt) |
| static void | uninit (struct vf_instance *vf) |
| static int | vf_open (vf_instance_t *vf, char *args) |
Variables | |
| static struct frame_stats | ppzs = {PPZ,PPZ,PPZ,PPZ,PPZ,PPZ,PPZ,0,0,9999} |
| static struct frame_stats | pprs = {PPR,PPR,PPR,PPR,PPR,PPR,PPR,0,0,9999} |
| const vf_info_t | vf_info_filmdint |
| #define BLOCK_METRICS_TEMPLATE | ( | ) |
Definition at line 386 of file vf_filmdint.c.
Referenced by block_metrics_3dnow(), and block_metrics_mmx2().
| #define ITOC | ( | X | ) | (!(X) ? ' ' : (X) + ((X)>9 ? 'a'-10 : '0')) |
| #define MAX | ( | a, | |||
| b | ) | (((a)>(b))?(a):(b)) |
Definition at line 105 of file vf_filmdint.c.
Referenced by find_breaks(), get_block_stats(), and put_image().
| #define METRICS | ( | X | ) | (X).even, (X).odd, (X).noise, (X).temp |
| #define MIN | ( | a, | |||
| b | ) | (((a)<(b))?(a):(b)) |
| #define NUM_STORED 4 |
| #define PAVGB | ( | X, | |||
| Y | ) | "pavgb " #X "," #Y "\n\t" |
Definition at line 474 of file vf_filmdint.c.
| #define PAVGB | ( | X, | |||
| Y | ) | "pavgusb " #X "," #Y "\n\t" |
Definition at line 474 of file vf_filmdint.c.
Referenced by avg_pixels16_l2_TMPL(), avg_pixels4_l2_TMPL(), avg_pixels4_TMPL(), avg_pixels8_l2_TMPL(), avg_pixels8_TMPL(), avg_pixels8_x2_TMPL(), avg_pixels8_xy2_TMPL(), avg_pixels8_y2_TMPL(), deInterlaceBlendLinear_TMPL(), deInterlaceInterpolateLinear_TMPL(), dering_TMPL(), doVertDefFilter_TMPL(), doVertLowPass_TMPL(), extract_even2avg_TMPL(), extract_odd2avg_TMPL(), pixels8_l2(), put_no_rnd_pixels16_l2_TMPL(), put_no_rnd_pixels8_l2_TMPL(), put_no_rnd_pixels8_x2_exact_TMPL(), put_no_rnd_pixels8_x2_TMPL(), put_no_rnd_pixels8_y2_exact_TMPL(), put_no_rnd_pixels8_y2_TMPL(), put_pixels16_l2_TMPL(), put_pixels16_x2_TMPL(), put_pixels4_l2_TMPL(), put_pixels8_l2_TMPL(), put_pixels8_x2_TMPL(), put_pixels8_y2_TMPL(), rgb24toyv12_TMPL(), tempNoiseReducer_TMPL(), and vertX1Filter_TMPL().
| #define PDIFFUB | ( | X, | |||
| Y, | |||||
| T | ) |
| #define PDIFFUBT | ( | X, | |||
| Y, | |||||
| T | ) |
Value:
"movq " #X "," #T "\n\t" \ "psubusb " #Y "," #T "\n\t" \ "psubusb " #X "," #Y "\n\t" \ "paddusb " #T "," #Y "\n\t"
Definition at line 113 of file vf_filmdint.c.
Referenced by dint_copy_line_mmx2().
| #define PMAXUB | ( | X, | |||
| Y | ) | "pmaxub " #X "," #Y "\n\t" |
Definition at line 472 of file vf_filmdint.c.
| #define PMAXUB | ( | X, | |||
| Y | ) | "psubusb " #X "," #Y "\n\tpaddusb " #X "," #Y "\n\t" |
| #define PMAXUW | ( | X, | |||
| Y | ) | "psubusw " #X "," #Y "\n\tpaddusw " #X "," #Y "\n\t" |
Definition at line 473 of file vf_filmdint.c.
| #define PMINUBT | ( | X, | |||
| Y, | |||||
| T | ) |
| #define PPR { 2000, 2000, 0, 2000 } |
Definition at line 97 of file vf_filmdint.c.
| #define PPZ { 2000, 2000, 0, 2000 } |
Definition at line 96 of file vf_filmdint.c.
Definition at line 471 of file vf_filmdint.c.
Definition at line 471 of file vf_filmdint.c.
Definition at line 470 of file vf_filmdint.c.
| #define PSUMBW | ( | X, | |||
| T, | |||||
| Z | ) |
Value:
"movq " #X "," #T "\n\t" \ "punpcklbw " #Z "," #X "\n\t" \ "punpckhbw " #Z "," #T "\n\t" \ "paddw " #T "," #X "\n\t" \ "movq " #X "," #T "\n\t" \ "psllq $32, " #T "\n\t" \ "paddw " #T "," #X "\n\t" \ "movq " #X "," #T "\n\t" \ "psllq $16, " #T "\n\t" \ "paddw " #T "," #X "\n\t" \ "psrlq $48, " #X "\n\t"
Definition at line 470 of file vf_filmdint.c.
| enum pu_field_type_t |
Definition at line 38 of file vf_filmdint.c.
| static struct metrics block_metrics_c | ( | unsigned char * | a, | |
| unsigned char * | b, | |||
| int | as, | |||
| int | bs, | |||
| int | lines, | |||
| struct vf_priv_s * | p, | |||
| struct frame_stats * | s | |||
| ) | [static, read] |
Definition at line 346 of file vf_filmdint.c.
Referenced by block_metrics_mmx2(), and diff_planes().
| static long cmpe | ( | unsigned long | x, | |
| unsigned long | y, | |||
| unsigned long | err, | |||
| unsigned long | e | |||
| ) | [inline, static] |
| static int config | ( | struct vf_instance * | vf, | |
| int | width, | |||
| int | height, | |||
| int | d_width, | |||
| int | d_height, | |||
| unsigned int | flags, | |||
| unsigned int | outfmt | |||
| ) | [static] |
Definition at line 1352 of file vf_filmdint.c.
| static void copy_merge_fields | ( | struct vf_priv_s * | p, | |
| mp_image_t * | dmpi, | |||
| unsigned char ** | old, | |||
| unsigned char ** | new, | |||
| unsigned long | show | |||
| ) | [static] |
| static void diff_fields | ( | struct vf_priv_s * | p, | |
| struct frame_stats * | s, | |||
| unsigned char ** | old, | |||
| unsigned char ** | new | |||
| ) | [static] |
Definition at line 819 of file vf_filmdint.c.
| static void diff_planes | ( | struct vf_priv_s * | p, | |
| struct frame_stats * | s, | |||
| unsigned char * | of, | |||
| unsigned char * | nf, | |||
| int | w, | |||
| int | h, | |||
| int | os, | |||
| int | ns, | |||
| int | swapped | |||
| ) | [static] |
Definition at line 776 of file vf_filmdint.c.
| static int dint_copy_plane | ( | unsigned char * | d, | |
| unsigned char * | a, | |||
| unsigned char * | b, | |||
| unsigned char * | c, | |||
| unsigned long | w, | |||
| unsigned long | h, | |||
| unsigned long | ds, | |||
| unsigned long | ss, | |||
| unsigned long | threshold, | |||
| long | field, | |||
| long | mmx2 | |||
| ) | [static] |
| static unsigned long find_breaks | ( | struct vf_priv_s * | p, | |
| struct frame_stats * | s | |||
| ) | [static] |
| static unsigned long gcd | ( | unsigned long | x, | |
| unsigned long | y | |||
| ) | [static] |
Definition at line 858 of file vf_filmdint.c.
Referenced by av_parse_ratio(), av_reduce(), ff_h263_decode_picture_header(), ff_parse_specific_params(), init(), and xvid_correct_framerate().
| static void get_block_stats | ( | struct metrics * | m, | |
| struct vf_priv_s * | p, | |||
| struct frame_stats * | s | |||
| ) | [inline, static] |
Definition at line 268 of file vf_filmdint.c.
Referenced by block_metrics_3dnow(), block_metrics_c(), block_metrics_fast_c(), and block_metrics_faster_c().
| static void get_image | ( | struct vf_instance * | vf, | |
| mp_image_t * | mpi | |||
| ) | [static] |
| static double get_time | ( | void | ) | [inline, static] |
| static void init | ( | struct vf_priv_s * | p, | |
| mp_image_t * | mpi | |||
| ) | [static] |
Definition at line 872 of file vf_filmdint.c.
| static const char* parse_args | ( | struct vf_priv_s * | p, | |
| const char * | args | |||
| ) | [static] |
Definition at line 839 of file vf_filmdint.c.
| static int put_image | ( | struct vf_instance * | vf, | |
| mp_image_t * | mpi, | |||
| double | pts | |||
| ) | [static] |
Definition at line 1139 of file vf_filmdint.c.
| static int query_format | ( | struct vf_instance * | vf, | |
| unsigned int | fmt | |||
| ) | [static] |
Definition at line 1337 of file vf_filmdint.c.
| static void uninit | ( | struct vf_instance * | vf | ) | [static] |
Definition at line 1397 of file vf_filmdint.c.
| static int vf_open | ( | vf_instance_t * | vf, | |
| char * | args | |||
| ) | [static] |
Definition at line 1407 of file vf_filmdint.c.
struct frame_stats pprs = {PPR,PPR,PPR,PPR,PPR,PPR,PPR,0,0,9999} [static] |
Definition at line 99 of file vf_filmdint.c.
struct frame_stats ppzs = {PPZ,PPZ,PPZ,PPZ,PPZ,PPZ,PPZ,0,0,9999} [static] |
Definition at line 98 of file vf_filmdint.c.
| const vf_info_t vf_info_filmdint |
Initial value:
Definition at line 1454 of file vf_filmdint.c.
1.5.8