resample_mmx.h File Reference
Include dependency graph for resample_mmx.h:

Go to the source code of this file.

Macros

#define COMMON_CORE_INT16_MMX2
 
#define COMMON_CORE_INT16_SSSE3
 

Functions

int swri_resample_int16_mmx2 (struct ResampleContext *c, int16_t *dst, const int16_t *src, int *consumed, int src_size, int dst_size, int update_ctx)
 
int swri_resample_int16_ssse3 (struct ResampleContext *c, int16_t *dst, const int16_t *src, int *consumed, int src_size, int dst_size, int update_ctx)
 
 DECLARE_ALIGNED (16, const uint64_t, ff_resample_int16_rounder)[2]
 

Macro Definition Documentation

#define COMMON_CORE_INT16_MMX2
Value:
x86_reg len= -2*c->filter_length;\
__asm__ volatile(\
"movq "MANGLE(ff_resample_int16_rounder)", %%mm0 \n\t"\
"1: \n\t"\
"movq (%1, %0), %%mm1 \n\t"\
"pmaddwd (%2, %0), %%mm1 \n\t"\
"paddd %%mm1, %%mm0 \n\t"\
"add $8, %0 \n\t"\
" js 1b \n\t"\
"pshufw $0x0E, %%mm0, %%mm1 \n\t"\
"paddd %%mm1, %%mm0 \n\t"\
"psrad $15, %%mm0 \n\t"\
"packssdw %%mm0, %%mm0 \n\t"\
"movd %%mm0, (%3) \n\t"\
: "+r" (len)\
: "r" (((uint8_t*)(src+sample_index))-len),\
"r" (((uint8_t*)filter)-len),\
"r" (dst+dst_index)\
);
#define MANGLE(a)
uint8_t
the mask is usually to keep the same permissions Filters should remove permissions on reference they give to output whenever necessary It can be automatically done by setting the rej_perms field on the output pad Here are a few guidelines corresponding to common then the filter should push the output frames on the output link immediately As an exception to the previous rule if the input frame is enough to produce several output frames then the filter needs output only at least one per link The additional frames can be left buffered in the filter
AVS_Value src
Definition: avisynth_c.h:523
static double c[64]
int x86_reg
int len
else dst[i][x+y *dst_stride[i]]
Definition: vf_mcdeint.c:160

Definition at line 30 of file resample_mmx.h.

#define COMMON_CORE_INT16_SSSE3
Value:
x86_reg len= -2*c->filter_length;\
__asm__ volatile(\
"movdqa "MANGLE(ff_resample_int16_rounder)", %%xmm0 \n\t"\
"1: \n\t"\
"movdqu (%1, %0), %%xmm1 \n\t"\
"pmaddwd (%2, %0), %%xmm1 \n\t"\
"paddd %%xmm1, %%xmm0 \n\t"\
"add $16, %0 \n\t"\
" js 1b \n\t"\
"phaddd %%xmm0, %%xmm0 \n\t"\
"phaddd %%xmm0, %%xmm0 \n\t"\
"psrad $15, %%xmm0 \n\t"\
"packssdw %%xmm0, %%xmm0 \n\t"\
"movd %%xmm0, (%3) \n\t"\
: "+r" (len)\
: "r" (((uint8_t*)(src+sample_index))-len),\
"r" (((uint8_t*)filter)-len),\
"r" (dst+dst_index)\
);
#define MANGLE(a)
uint8_t
the mask is usually to keep the same permissions Filters should remove permissions on reference they give to output whenever necessary It can be automatically done by setting the rej_perms field on the output pad Here are a few guidelines corresponding to common then the filter should push the output frames on the output link immediately As an exception to the previous rule if the input frame is enough to produce several output frames then the filter needs output only at least one per link The additional frames can be left buffered in the filter
AVS_Value src
Definition: avisynth_c.h:523
static double c[64]
int x86_reg
int len
else dst[i][x+y *dst_stride[i]]
Definition: vf_mcdeint.c:160

Definition at line 51 of file resample_mmx.h.

Function Documentation

DECLARE_ALIGNED ( 16  ,
const uint64_t  ,
ff_resample_int16_rounder   
)
int swri_resample_int16_mmx2 ( struct ResampleContext c,
int16_t *  dst,
const int16_t *  src,
int *  consumed,
int  src_size,
int  dst_size,
int  update_ctx 
)

Referenced by multiple_resample().

int swri_resample_int16_ssse3 ( struct ResampleContext c,
int16_t *  dst,
const int16_t *  src,
int *  consumed,
int  src_size,
int  dst_size,
int  update_ctx 
)

Referenced by multiple_resample().