libavfilter/x86/yadif_template.c File Reference

Go to the source code of this file.

Defines

#define MM   "%%mm"
#define MOV   "movd"
#define MOVQ   "movq"
#define MOVQU   "movq"
#define STEP   4
#define LOAD(mem, dst)
#define PSRL1(reg)   "psrlq $8, "reg" \n\t"
#define PSRL2(reg)   "psrlq $16, "reg" \n\t"
#define PSHUF(src, dst)   "pshufw $9, "dst", "src" \n\t"
#define PABS(tmp, dst)
#define CHECK(pj, mj)
#define CHECK1
#define CHECK2
#define FILTER
#define prev2   "prev"
#define next2   "cur"
#define prev2   "cur"
#define next2   "next"

Functions

void ff_yadif_filter_line_TMPL (uint8_t *dst, uint8_t *prev, uint8_t *cur, uint8_t *next, int w, int prefs, int mrefs, int parity, int mode)


Define Documentation

#define CHECK ( pj,
mj   ) 

Value:

MOVQU" "#pj"(%[cur],%[mrefs]), "MM"2 \n\t" /* cur[x-refs-1+j] */\
            MOVQU" "#mj"(%[cur],%[prefs]), "MM"3 \n\t" /* cur[x+refs-1-j] */\
            MOVQ"      "MM"2, "MM"4 \n\t"\
            MOVQ"      "MM"2, "MM"5 \n\t"\
            "pxor      "MM"3, "MM"4 \n\t"\
            "pavgb     "MM"3, "MM"5 \n\t"\
            "pand     "MANGLE(pb_1)", "MM"4 \n\t"\
            "psubusb   "MM"4, "MM"5 \n\t"\
            PSRL1(MM"5")                 \
            "punpcklbw "MM"7, "MM"5 \n\t" /* (cur[x-refs+j] + cur[x+refs-j])>>1 */\
            MOVQ"      "MM"2, "MM"4 \n\t"\
            "psubusb   "MM"3, "MM"2 \n\t"\
            "psubusb   "MM"4, "MM"3 \n\t"\
            "pmaxub    "MM"3, "MM"2 \n\t"\
            MOVQ"      "MM"2, "MM"3 \n\t"\
            MOVQ"      "MM"2, "MM"4 \n\t" /* ABS(cur[x-refs-1+j] - cur[x+refs-1-j]) */\
            PSRL1(MM"3")                  /* ABS(cur[x-refs  +j] - cur[x+refs  -j]) */\
            PSRL2(MM"4")                  /* ABS(cur[x-refs+1+j] - cur[x+refs+1-j]) */\
            "punpcklbw "MM"7, "MM"2 \n\t"\
            "punpcklbw "MM"7, "MM"3 \n\t"\
            "punpcklbw "MM"7, "MM"4 \n\t"\
            "paddw     "MM"3, "MM"2 \n\t"\
            "paddw     "MM"4, "MM"2 \n\t"

Definition at line 58 of file yadif_template.c.

#define CHECK1

Value:

MOVQ"      "MM"0, "MM"3 \n\t"\
            "pcmpgtw   "MM"2, "MM"3 \n\t" /* if(score < spatial_score) */\
            "pminsw    "MM"2, "MM"0 \n\t" /* spatial_score= score; */\
            MOVQ"      "MM"3, "MM"6 \n\t"\
            "pand      "MM"3, "MM"5 \n\t"\
            "pandn     "MM"1, "MM"3 \n\t"\
            "por       "MM"5, "MM"3 \n\t"\
            MOVQ"      "MM"3, "MM"1 \n\t"

Definition at line 83 of file yadif_template.c.

#define CHECK2

Value:

/* pretend not to have checked dir=2 if dir=1 was bad.\
                  hurts both quality and speed, but matches the C version. */\
            "paddw    "MANGLE(pw_1)", "MM"6 \n\t"\
            "psllw     $14,   "MM"6 \n\t"\
            "paddsw    "MM"6, "MM"2 \n\t"\
            MOVQ"      "MM"0, "MM"3 \n\t"\
            "pcmpgtw   "MM"2, "MM"3 \n\t"\
            "pminsw    "MM"2, "MM"0 \n\t"\
            "pand      "MM"3, "MM"5 \n\t"\
            "pandn     "MM"1, "MM"3 \n\t"\
            "por       "MM"5, "MM"3 \n\t"\
            MOVQ"      "MM"3, "MM"1 \n\t"

Definition at line 93 of file yadif_template.c.

#define FILTER

#define LOAD ( mem,
dst   ) 

Value:

MOV"       "mem", "dst" \n\t"\
            "punpcklbw "MM"7, "dst" \n\t"

Definition at line 40 of file yadif_template.c.

#define MM   "%%mm"

Definition at line 35 of file yadif_template.c.

#define MOV   "movd"

Definition at line 36 of file yadif_template.c.

Referenced by av_register_all().

#define MOVQ   "movq"

Definition at line 37 of file yadif_template.c.

#define MOVQU   "movq"

Definition at line 38 of file yadif_template.c.

#define next2   "next"

#define next2   "cur"

#define PABS ( tmp,
dst   ) 

Value:

"pxor     "tmp", "tmp" \n\t"\
            "psubw    "dst", "tmp" \n\t"\
            "pmaxsw   "tmp", "dst" \n\t"

Definition at line 52 of file yadif_template.c.

#define prev2   "cur"

#define prev2   "prev"

#define PSHUF ( src,
dst   )     "pshufw $9, "dst", "src" \n\t"

Definition at line 45 of file yadif_template.c.

#define PSRL1 ( reg   )     "psrlq $8, "reg" \n\t"

Definition at line 43 of file yadif_template.c.

#define PSRL2 ( reg   )     "psrlq $16, "reg" \n\t"

Definition at line 44 of file yadif_template.c.

#define STEP   4

Definition at line 39 of file yadif_template.c.


Function Documentation

void ff_yadif_filter_line_TMPL ( uint8_t *  dst,
uint8_t *  prev,
uint8_t *  cur,
uint8_t *  next,
int  w,
int  prefs,
int  mrefs,
int  parity,
int  mode 
)

Definition at line 105 of file yadif_template.c.


Generated on Fri Oct 26 02:46:12 2012 for FFmpeg by  doxygen 1.5.8