libavcodec/i386/vp3dsp_mmx.c File Reference

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

#include "dsputil.h"
#include "mmx.h"

Go to the source code of this file.

Defines

#define IdctAdjustBeforeShift   8
#define r0   mm0
#define r1   mm1
#define r2   mm2
#define r3   mm3
#define r4   mm4
#define r5   mm5
#define r6   mm6
#define r7   mm7
#define BeginIDCT()
#define RowIDCT()
#define ColumnIDCT()
#define Transpose()
#define C(x)   (idct_constants + 16 + (x - 1) * 4)
#define Eight   (idct_constants + 44)
#define I(K)   (output_data + K * 8)
#define J(K)   (output_data + ((K - 4) * 8) + 4)
#define I(K)   (output_data + (K * 8) + 32)
#define J(K)   (output_data + ((K - 4) * 8) + 36)
#define I(K)   (output_data + K * 8)
#define J(K)   (output_data + K * 8)
#define I(K)   (output_data + (K * 8) + 4)
#define J(K)   (output_data + (K * 8) + 4)

Functions

void ff_vp3_dsp_init_mmx (void)
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

static uint16_t idct_constants [(4+7+1)*4]
static const uint16_t idct_cosine_table [7]


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 51 of file vp3dsp_mmx.c.

#define C (  )     (idct_constants + 16 + (x - 1) * 4)

 
#define ColumnIDCT (  ) 

Definition at line 152 of file vp3dsp_mmx.c.

Referenced by ff_vp3_idct_mmx().

#define Eight   (idct_constants + 44)

Referenced by ff_vp3_idct_sse2().

#define I (  )     (output_data + (K * 8) + 4)

#define I (  )     (output_data + K * 8)

#define I (  )     (output_data + (K * 8) + 32)

#define I (  )     (output_data + K * 8)

#define IdctAdjustBeforeShift   8

Definition at line 29 of file vp3dsp_mmx.c.

Referenced by ff_vp3_dsp_init_mmx().

#define J (  )     (output_data + (K * 8) + 4)

#define J (  )     (output_data + K * 8)

#define J (  )     (output_data + ((K - 4) * 8) + 36)

#define J (  )     (output_data + ((K - 4) * 8) + 4)

#define r0   mm0

Definition at line 41 of file vp3dsp_mmx.c.

#define r1   mm1

#define r2   mm2

#define r3   mm3

Definition at line 44 of file vp3dsp_mmx.c.

Referenced by ff_simple_idct_add_vis(), and ff_simple_idct_put_vis().

#define r4   mm4

Definition at line 45 of file vp3dsp_mmx.c.

Referenced by ff_simple_idct_add_vis(), ff_simple_idct_put_vis(), and gmc_mmx().

#define r5   mm5

Definition at line 46 of file vp3dsp_mmx.c.

Referenced by ff_simple_idct_add_vis(), and ff_simple_idct_put_vis().

#define r6   mm6

Definition at line 47 of file vp3dsp_mmx.c.

Referenced by ff_simple_idct_add_vis(), and ff_simple_idct_put_vis().

#define r7   mm7

Definition at line 48 of file vp3dsp_mmx.c.

Referenced by ff_simple_idct_add_vis(), and ff_simple_idct_put_vis().

 
#define RowIDCT (  ) 

Value:

{ \
    \
    BeginIDCT(); \
    \
    movq_m2r(*I(2), r3);   /* r3 = D. */ \
    psubsw_r2r(r7, r4);    /* r4 = E. = E - G */ \
    paddsw_r2r(r1, r1);    /* r1 = H. + H. */ \
    paddsw_r2r(r7, r7);    /* r7 = G + G */ \
    paddsw_r2r(r2, r1);    /* r1 = R1 = A.. + H. */ \
    paddsw_r2r(r4, r7);    /* r7 = G. = E + G */ \
    psubsw_r2r(r3, r4);    /* r4 = R4 = E. - D. */ \
    paddsw_r2r(r3, r3); \
    psubsw_r2r(r5, r6);    /* r6 = R6 = F. - B.. */ \
    paddsw_r2r(r5, r5); \
    paddsw_r2r(r4, r3);    /* r3 = R3 = E. + D. */ \
    paddsw_r2r(r6, r5);    /* r5 = R5 = F. + B.. */ \
    psubsw_r2r(r0, r7);    /* r7 = R7 = G. - C. */ \
    paddsw_r2r(r0, r0); \
    movq_r2m(r1, *I(1));   /* save R1 */ \
    paddsw_r2r(r7, r0);    /* r0 = R0 = G. + C. */ \
}

Definition at line 129 of file vp3dsp_mmx.c.

Referenced by ff_vp3_idct_mmx().

 
#define Transpose (  ) 

Definition at line 224 of file vp3dsp_mmx.c.

Referenced by ff_vp3_idct_mmx().


Function Documentation

void ff_vp3_dsp_init_mmx ( void   ) 

Definition at line 262 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 332 of file vp3dsp_mmx.c.

Referenced by dsputil_init_mmx().

void ff_vp3_idct_mmx ( int16_t *  output_data  ) 

Definition at line 277 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 326 of file vp3dsp_mmx.c.

Referenced by dsputil_init_mmx().


Variable Documentation

uint16_t idct_constants[(4+7+1)*4] [static]

Definition at line 36 of file vp3dsp_mmx.c.

Referenced by ff_vp3_dsp_init_mmx().

const uint16_t idct_cosine_table[7] [static]

Initial value:

 {
    64277, 60547, 54491, 46341, 36410, 25080, 12785
}

Definition at line 37 of file vp3dsp_mmx.c.

Referenced by ff_vp3_dsp_init_mmx().


Generated on Thu Apr 2 07:16:12 2009 for ffmpeg by  doxygen 1.5.6