libavcodec/x86/simple_idct_mmx.c File Reference

#include "libavcodec/dsputil.h"
#include "libavcodec/simple_idct.h"
#include "dsputil_mmx.h"

Go to the source code of this file.

Defines

#define C0   23170
#define C1   22725
#define C2   21407
#define C3   19266
#define C4   16383
#define C5   12873
#define C6   8867
#define C7   4520
#define ROW_SHIFT   11
#define COL_SHIFT   20
#define DC_COND_IDCT(src0, src4, src1, src5, dst, rounder, shift)
#define Z_COND_IDCT(src0, src4, src1, src5, dst, rounder, shift, bt)
#define ROW_IDCT(src0, src4, src1, src5, dst, rounder, shift)
#define IDCT(src0, src4, src1, src5, dst, shift)
#define IDCT(src0, src4, src1, src5, dst, shift)
#define IDCT(src0, src4, src1, src5, dst, shift)
#define IDCT(src0, src4, src1, src5, dst, shift)
#define IDCT(src0, src4, src1, src5, dst, shift)
#define IDCT(src0, src4, src1, src5, dst, shift)
#define IDCT(src0, src4, src1, src5, dst, shift)
#define IDCT(src0, src4, src1, src5, dst, shift)

Functions

 DECLARE_ASM_CONST (DECLARE_ASM_CONST(8, DECLARE_ASM_CONST(uint64_t, wm1010)
static void idct (int16_t *block)
void ff_simple_idct_mmx (int16_t *block)
void ff_simple_idct_put_mmx (uint8_t *dest, int line_size, DCTELEM *block)
void ff_simple_idct_add_mmx (uint8_t *dest, int line_size, DCTELEM *block)


Define Documentation

#define C0   23170

Definition at line 36 of file simple_idct_mmx.c.

#define C1   22725

Definition at line 37 of file simple_idct_mmx.c.

#define C2   21407

Definition at line 38 of file simple_idct_mmx.c.

#define C3   19266

Definition at line 39 of file simple_idct_mmx.c.

#define C4   16383

Definition at line 43 of file simple_idct_mmx.c.

#define C5   12873

Definition at line 45 of file simple_idct_mmx.c.

#define C6   8867

Definition at line 46 of file simple_idct_mmx.c.

#define C7   4520

Definition at line 47 of file simple_idct_mmx.c.

#define COL_SHIFT   20

Definition at line 50 of file simple_idct_mmx.c.

#define DC_COND_IDCT ( src0,
src4,
src1,
src5,
dst,
rounder,
shift   ) 

Referenced by idct().

#define IDCT ( src0,
src4,
src1,
src5,
dst,
shift   ) 

Value:

"movq " #src0 ", %%mm0          \n\t" /* R4     R0      r4      r0 */\
        "movq 16(%2), %%mm4             \n\t" /* C4     C4      C4      C4 */\
        "pmaddwd %%mm0, %%mm4           \n\t" /* C4R4+C4R0      C4r4+C4r0 */\
        "movq 24(%2), %%mm5             \n\t" /* -C4    C4      -C4     C4 */\
        "pmaddwd %%mm5, %%mm0           \n\t" /* -C4R4+C4R0     -C4r4+C4r0 */\
        "psrad $" #shift ", %%mm4       \n\t"\
        "psrad $" #shift ", %%mm0       \n\t"\
        "movq 8+" #src0 ", %%mm2        \n\t" /* R4     R0      r4      r0 */\
        "movq 16(%2), %%mm1             \n\t" /* C4     C4      C4      C4 */\
        "pmaddwd %%mm2, %%mm1           \n\t" /* C4R4+C4R0      C4r4+C4r0 */\
        "movq 24(%2), %%mm7             \n\t" /* -C4    C4      -C4     C4 */\
        "pmaddwd %%mm7, %%mm2           \n\t" /* -C4R4+C4R0     -C4r4+C4r0 */\
        "movq 32(%2), %%mm7             \n\t" /* C6     C2      C6      C2 */\
        "psrad $" #shift ", %%mm1       \n\t"\
        "packssdw %%mm1, %%mm4          \n\t" /* A0     a0 */\
        "movq %%mm4, " #dst "           \n\t"\
        "psrad $" #shift ", %%mm2       \n\t"\
        "packssdw %%mm2, %%mm0          \n\t" /* A1     a1 */\
        "movq %%mm0, 16+" #dst "        \n\t"\
        "movq %%mm0, 96+" #dst "        \n\t"\
        "movq %%mm4, 112+" #dst "       \n\t"\
        "movq %%mm0, 32+" #dst "        \n\t"\
        "movq %%mm4, 48+" #dst "        \n\t"\
        "movq %%mm4, 64+" #dst "        \n\t"\
        "movq %%mm0, 80+" #dst "        \n\t"

#define IDCT ( src0,
src4,
src1,
src5,
dst,
shift   ) 

#define IDCT ( src0,
src4,
src1,
src5,
dst,
shift   ) 

#define IDCT ( src0,
src4,
src1,
src5,
dst,
shift   ) 

#define IDCT ( src0,
src4,
src1,
src5,
dst,
shift   ) 

#define IDCT ( src0,
src4,
src1,
src5,
dst,
shift   ) 

#define IDCT ( src0,
src4,
src1,
src5,
dst,
shift   ) 

#define IDCT ( src0,
src4,
src1,
src5,
dst,
shift   ) 

#define ROW_IDCT ( src0,
src4,
src1,
src5,
dst,
rounder,
shift   ) 

Referenced by idct().

#define ROW_SHIFT   11

Definition at line 49 of file simple_idct_mmx.c.

#define Z_COND_IDCT ( src0,
src4,
src1,
src5,
dst,
rounder,
shift,
bt   ) 

Referenced by idct().


Function Documentation

DECLARE_ASM_CONST ( DECLARE_ASM_CONST(  8,
DECLARE_ASM_CONST(  uint64_t,
wm1010   
) [pure virtual]

Definition at line 52 of file simple_idct_mmx.c.

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

Definition at line 1292 of file simple_idct_mmx.c.

void ff_simple_idct_mmx ( int16_t *  block  ) 

Definition at line 1280 of file simple_idct_mmx.c.

Referenced by dsputil_init_mmx().

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

Definition at line 1287 of file simple_idct_mmx.c.

static void idct ( int16_t *  block  )  [inline, static]

Definition at line 212 of file simple_idct_mmx.c.


Generated on Fri Oct 26 02:39:47 2012 for FFmpeg by  doxygen 1.5.8