libavcodec/x86/vp3dsp_mmx.c File Reference

MMX-optimized functions cribbed from the original VP3 source code. More...

#include "libavutil/x86_cpu.h"
#include "libavcodec/dsputil.h"
#include "dsputil_mmx.h"

Go to the source code of this file.

Defines

#define VP3_LOOP_FILTER(flim)
#define STORE_4_WORDS(dst0, dst1, dst2, dst3, mm)
#define BeginIDCT()
#define RowIDCT()
#define ColumnIDCT()
#define Transpose()
#define C(x)   AV_STRINGIFY(16*(x-1))"(%1)"
#define OC_8   "%2"
#define I(x)   AV_STRINGIFY(16* x )"(%0)"
#define J(x)   AV_STRINGIFY(16*(x-4) + 8)"(%0)"
#define I(x)   AV_STRINGIFY(16* x + 64)"(%0)"
#define J(x)   AV_STRINGIFY(16*(x-4) + 72)"(%0)"
#define I(x)   AV_STRINGIFY(16*x)"(%0)"
#define J(x)   AV_STRINGIFY(16*x)"(%0)"
#define I(x)   AV_STRINGIFY(16*x + 8)"(%0)"
#define J(x)   AV_STRINGIFY(16*x + 8)"(%0)"

Functions

void ff_vp3_v_loop_filter_mmx2 (uint8_t *src, int stride, int *bounding_values)
void ff_vp3_h_loop_filter_mmx2 (uint8_t *src, int stride, int *bounding_values)
void ff_vp3_idct_mmx (int16_t *output_data)
void ff_vp3_idct_put_mmx (uint8_t *dest, int line_size, DCTELEM *block)
void ff_vp3_idct_add_mmx (uint8_t *dest, int line_size, DCTELEM *block)

Variables

const uint16_t ff_vp3_idct_data []


Detailed Description

MMX-optimized functions cribbed from the original VP3 source code.

Definition in file vp3dsp_mmx.c.


Define Documentation

 
#define BeginIDCT (  ) 

Definition at line 133 of file vp3dsp_mmx.c.

#define C (  )     AV_STRINGIFY(16*(x-1))"(%1)"

 
#define ColumnIDCT (  ) 

Definition at line 230 of file vp3dsp_mmx.c.

Referenced by ff_vp3_idct_mmx().

#define I (  )     AV_STRINGIFY(16*x + 8)"(%0)"

#define I (  )     AV_STRINGIFY(16*x)"(%0)"

#define I (  )     AV_STRINGIFY(16* x + 64)"(%0)"

#define I (  )     AV_STRINGIFY(16* x )"(%0)"

#define J (  )     AV_STRINGIFY(16*x + 8)"(%0)"

#define J (  )     AV_STRINGIFY(16*x)"(%0)"

#define J (  )     AV_STRINGIFY(16*(x-4) + 72)"(%0)"

#define J (  )     AV_STRINGIFY(16*(x-4) + 8)"(%0)"

#define OC_8   "%2"

 
#define RowIDCT (  ) 

Value:

BeginIDCT() \
    "movq   "I(2)", %%mm3 \n\t"    /* r3 = D. */ \
    "psubsw  %%mm7, %%mm4 \n\t"    /* r4 = E. = E - G */ \
    "paddsw  %%mm1, %%mm1 \n\t"    /* r1 = H. + H. */ \
    "paddsw  %%mm7, %%mm7 \n\t"    /* r7 = G + G */ \
    "paddsw  %%mm2, %%mm1 \n\t"    /* r1 = R1 = A.. + H. */ \
    "paddsw  %%mm4, %%mm7 \n\t"    /* r1 = R1 = A.. + H. */ \
    "psubsw  %%mm3, %%mm4 \n\t"    /* r4 = R4 = E. - D. */ \
    "paddsw  %%mm3, %%mm3 \n\t" \
    "psubsw  %%mm5, %%mm6 \n\t"    /* r6 = R6 = F. - B.. */ \
    "paddsw  %%mm5, %%mm5 \n\t" \
    "paddsw  %%mm4, %%mm3 \n\t"    /* r3 = R3 = E. + D. */ \
    "paddsw  %%mm6, %%mm5 \n\t"    /* r5 = R5 = F. + B.. */ \
    "psubsw  %%mm0, %%mm7 \n\t"    /* r7 = R7 = G. - C. */ \
    "paddsw  %%mm0, %%mm0 \n\t" \
    "movq    %%mm1, "I(1)"\n\t"    /* save R1 */ \
    "paddsw  %%mm7, %%mm0 \n\t"

Definition at line 210 of file vp3dsp_mmx.c.

Referenced by ff_vp3_idct_mmx().

#define STORE_4_WORDS ( dst0,
dst1,
dst2,
dst3,
mm   ) 

Value:

"movd "#mm", %0        \n\t" \
    "movw   %w0, -1"#dst0" \n\t" \
    "psrlq  $32, "#mm"     \n\t" \
    "shr    $16, %0        \n\t" \
    "movw   %w0, -1"#dst1" \n\t" \
    "movd "#mm", %0        \n\t" \
    "movw   %w0, -1"#dst2" \n\t" \
    "shr    $16, %0        \n\t" \
    "movw   %w0, -1"#dst3" \n\t"

Definition at line 76 of file vp3dsp_mmx.c.

Referenced by ff_vp3_h_loop_filter_mmx2().

 
#define Transpose (  ) 

Definition at line 298 of file vp3dsp_mmx.c.

Referenced by ff_vp3_idct_mmx().

#define VP3_LOOP_FILTER ( flim   ) 

Definition at line 35 of file vp3dsp_mmx.c.

Referenced by ff_vp3_h_loop_filter_mmx2(), and ff_vp3_v_loop_filter_mmx2().


Function Documentation

void ff_vp3_h_loop_filter_mmx2 ( uint8_t *  src,
int  stride,
int *  bounding_values 
)

Definition at line 108 of file vp3dsp_mmx.c.

Referenced by dsputil_init_mmx().

void ff_vp3_idct_add_mmx ( uint8_t *  dest,
int  line_size,
DCTELEM block 
)

Definition at line 392 of file vp3dsp_mmx.c.

Referenced by dsputil_init_mmx().

void ff_vp3_idct_mmx ( int16_t *  output_data  ) 

Definition at line 335 of file vp3dsp_mmx.c.

Referenced by dsputil_init_mmx(), ff_vp3_idct_add_mmx(), and ff_vp3_idct_put_mmx().

void ff_vp3_idct_put_mmx ( uint8_t *  dest,
int  line_size,
DCTELEM block 
)

Definition at line 386 of file vp3dsp_mmx.c.

Referenced by dsputil_init_mmx().

void ff_vp3_v_loop_filter_mmx2 ( uint8_t *  src,
int  stride,
int *  bounding_values 
)

Definition at line 87 of file vp3dsp_mmx.c.

Referenced by dsputil_init_mmx().


Variable Documentation

const uint16_t ff_vp3_idct_data[]


Generated on Fri Oct 26 02:35:45 2012 for FFmpeg by  doxygen 1.5.8