libavcodec/ps2/idct_mmi.c File Reference

#include "libavutil/common.h"
#include "libavcodec/dsputil.h"
#include "mmi.h"

Go to the source code of this file.

Defines

#define BITS_INV_ACC   5
#define SHIFT_INV_ROW   (16 - BITS_INV_ACC)
#define SHIFT_INV_COL   (1 + BITS_INV_ACC)
#define TG1   6518
#define TG2   13573
#define TG3   21895
#define CS4   23170
#define ROUNDER_0   0
#define ROUNDER_1   16
#define TAB_i_04   (32+0)
#define TAB_i_17   (32+64)
#define TAB_i_26   (32+128)
#define TAB_i_35   (32+192)
#define TG_1_16   (32+256+0)
#define TG_2_16   (32+256+16)
#define TG_3_16   (32+256+32)
#define COS_4_16   (32+256+48)
#define CLIPMAX   (32+256+64+0)
#define DCT_8_INV_ROW1(blk, rowoff, taboff, rnd, outreg)
#define DCT_8_INV_COL8()
#define DCT_8_INV_COL8_STORE(blk)
#define DCT_8_INV_COL8_PMS()
#define PUT(rs)
#define DCT_8_INV_COL8_PUT()
#define ADD(rs)
#define DCT_8_INV_COL8_ADD()

Functions

void ff_mmi_idct (int16_t *block)
void ff_mmi_idct_put (uint8_t *dest, int line_size, DCTELEM *block)
void ff_mmi_idct_add (uint8_t *dest, int line_size, DCTELEM *block)

Variables

static short consttable[] align16


Define Documentation

#define ADD ( rs   ) 

Value:

ld3(4, 0, 2);        \
        pextlb($0, $2, $2);  \
        paddh($2, rs, $2);   \
        pminh($2, $11, $2);  \
        pmaxh($2, $0, $2);   \
        ppacb($0, $2, $2);   \
        sd3(2, 0, 4); \
        __asm__ volatile ("add $4, $5, $4");

Definition at line 272 of file idct_mmi.c.

#define BITS_INV_ACC   5

Definition at line 32 of file idct_mmi.c.

#define CLIPMAX   (32+256+64+0)

Definition at line 54 of file idct_mmi.c.

Referenced by ff_mmi_idct_add(), and ff_mmi_idct_put().

#define COS_4_16   (32+256+48)

Definition at line 52 of file idct_mmi.c.

#define CS4   23170

Definition at line 39 of file idct_mmi.c.

 
#define DCT_8_INV_COL8 (  ) 

Definition at line 121 of file idct_mmi.c.

Referenced by ff_mmi_idct(), ff_mmi_idct_add(), and ff_mmi_idct_put().

 
#define DCT_8_INV_COL8_ADD (  ) 

Value:

ADD($16);        \
        ADD($17);        \
        ADD($18);        \
        ADD($19);        \
        ADD($23);        \
        ADD($22);        \
        ADD($21);        \
        ADD($20);

Definition at line 283 of file idct_mmi.c.

Referenced by ff_mmi_idct_add().

 
#define DCT_8_INV_COL8_PMS (  ) 

Value:

paddh($16, $20, $2);    /* y0  a0+b0 */ \
        psubh($16, $20, $20);   /* y7  a0-b0 */ \
        psrah($2, SHIFT_INV_COL, $16);          \
        psrah($20, SHIFT_INV_COL, $20);         \
\
        paddh($17, $21, $3);    /* y1  a1+b1 */ \
        psubh($17, $21, $21);   /* y6  a1-b1 */ \
        psrah($3, SHIFT_INV_COL, $17);          \
        psrah($21, SHIFT_INV_COL, $21);         \
\
        paddh($18, $22, $2);    /* y2  a2+b2 */ \
        psubh($18, $22, $22);   /* y5  a2-b2 */ \
        psrah($2, SHIFT_INV_COL, $18);          \
        psrah($22, SHIFT_INV_COL, $22);         \
\
        paddh($19, $23, $3);    /* y3  a3+b3 */ \
        psubh($19, $23, $23);   /* y4  a3-b3 */ \
        psrah($3, SHIFT_INV_COL, $19);          \
        psrah($23, SHIFT_INV_COL, $23);

Definition at line 234 of file idct_mmi.c.

Referenced by ff_mmi_idct_add(), and ff_mmi_idct_put().

 
#define DCT_8_INV_COL8_PUT (  ) 

Value:

PUT($16);        \
        PUT($17);        \
        PUT($18);        \
        PUT($19);        \
        PUT($23);        \
        PUT($22);        \
        PUT($21);        \
        PUT($20);

Definition at line 262 of file idct_mmi.c.

Referenced by ff_mmi_idct_put().

#define DCT_8_INV_COL8_STORE ( blk   ) 

Value:

\
        paddh($16, $20, $2);    /* y0  a0+b0 */ \
        psubh($16, $20, $16);   /* y7  a0-b0 */ \
        psrah($2, SHIFT_INV_COL, $2);           \
        psrah($16, SHIFT_INV_COL, $16);         \
        sq($2, 0, blk);                         \
        sq($16, 112, blk);                      \
\
        paddh($17, $21, $3);    /* y1  a1+b1 */ \
        psubh($17, $21, $17);   /* y6  a1-b1 */ \
        psrah($3, SHIFT_INV_COL, $3);           \
        psrah($17, SHIFT_INV_COL, $17);         \
        sq($3, 16, blk);                        \
        sq($17, 96, blk);                       \
\
        paddh($18, $22, $2);    /* y2  a2+b2 */ \
        psubh($18, $22, $18);   /* y5  a2-b2 */ \
        psrah($2, SHIFT_INV_COL, $2);           \
        psrah($18, SHIFT_INV_COL, $18);         \
        sq($2, 32, blk);                        \
        sq($18, 80, blk);                       \
\
        paddh($19, $23, $3);    /* y3  a3+b3 */ \
        psubh($19, $23, $19);   /* y4  a3-b3 */ \
        psrah($3, SHIFT_INV_COL, $3);           \
        psrah($19, SHIFT_INV_COL, $19);         \
        sq($3, 48, blk);                        \
        sq($19, 64, blk);

Definition at line 202 of file idct_mmi.c.

Referenced by ff_mmi_idct().

#define DCT_8_INV_ROW1 ( blk,
rowoff,
taboff,
rnd,
outreg   ) 

Value:

{ \
        lq(blk, rowoff, $16);   /* r16 = x7  x5  x3  x1  x6  x4  x2  x0 */ \
        /*slot*/ \
        lq($24, 0+taboff, $17); /* r17 = w */ \
        /*delay slot $16*/ \
        lq($24, 16+taboff, $18);/* r18 = w */ \
        prevh($16, $2);         /* r2  = x1  x3  x5  x7  x0  x2  x4  x6 */ \
        lq($24, 32+taboff, $19);/* r19 = w */ \
        phmadh($17, $16, $17);  /* r17 = b1"b0'a1"a0' */ \
        lq($24, 48+taboff, $20);/* r20 = w */ \
        phmadh($18, $2, $18);   /* r18 = b1'b0"a1'a0" */ \
        phmadh($19, $16, $19);  /* r19 = b3"b2'a3"a2' */ \
        phmadh($20, $2, $20);   /* r20 = b3'b2"a3'a2" */ \
        paddw($17, $18, $17);   /* r17 = (b1)(b0)(a1)(a0) */ \
        paddw($19, $20, $19);   /* r19 = (b3)(b2)(a3)(a2) */ \
        pcpyld($19, $17, $18);  /* r18 = (a3)(a2)(a1)(a0) */ \
        pcpyud($17, $19, $20);  /* r20 = (b3)(b2)(b1)(b0) */ \
        paddw($18, rnd, $18);   /* r18 = (a3)(a2)(a1)(a0) */\
        paddw($18, $20, $17);   /* r17 = ()()()(a0+b0) */ \
        psubw($18, $20, $20);   /* r20 = ()()()(a0-b0) */ \
        psraw($17, SHIFT_INV_ROW, $17); /* r17 = (y3 y2 y1 y0) */ \
        psraw($20, SHIFT_INV_ROW, $20); /* r20 = (y4 y5 y6 y7) */ \
        ppach($20, $17, outreg);/* out = y4 y5 y6 y7 y3 y2 y1 y0  Note order */ \
\
        prevh(outreg, $2);        \
        pcpyud($2, $2, $2);        \
        pcpyld($2, outreg, outreg);        \
}

Definition at line 91 of file idct_mmi.c.

Referenced by ff_mmi_idct(), ff_mmi_idct_add(), and ff_mmi_idct_put().

#define PUT ( rs   ) 

Value:

pminh(rs, $11, $2);     \
        pmaxh($2, $0, $2);      \
        ppacb($0, $2, $2);      \
        sd3(2, 0, 4);           \
        __asm__ volatile ("add $4, $5, $4");

Definition at line 255 of file idct_mmi.c.

#define ROUNDER_0   0

Definition at line 41 of file idct_mmi.c.

Referenced by ff_mmi_idct(), ff_mmi_idct_add(), and ff_mmi_idct_put().

#define ROUNDER_1   16

Definition at line 42 of file idct_mmi.c.

Referenced by ff_mmi_idct(), ff_mmi_idct_add(), and ff_mmi_idct_put().

#define SHIFT_INV_COL   (1 + BITS_INV_ACC)

Definition at line 34 of file idct_mmi.c.

#define SHIFT_INV_ROW   (16 - BITS_INV_ACC)

Definition at line 33 of file idct_mmi.c.

#define TAB_i_04   (32+0)

Definition at line 44 of file idct_mmi.c.

Referenced by ff_mmi_idct(), ff_mmi_idct_add(), and ff_mmi_idct_put().

#define TAB_i_17   (32+64)

Definition at line 45 of file idct_mmi.c.

Referenced by ff_mmi_idct(), ff_mmi_idct_add(), and ff_mmi_idct_put().

#define TAB_i_26   (32+128)

Definition at line 46 of file idct_mmi.c.

Referenced by ff_mmi_idct(), ff_mmi_idct_add(), and ff_mmi_idct_put().

#define TAB_i_35   (32+192)

Definition at line 47 of file idct_mmi.c.

Referenced by ff_mmi_idct(), ff_mmi_idct_add(), and ff_mmi_idct_put().

#define TG1   6518

Definition at line 36 of file idct_mmi.c.

#define TG2   13573

Definition at line 37 of file idct_mmi.c.

Referenced by av_register_all().

#define TG3   21895

Definition at line 38 of file idct_mmi.c.

#define TG_1_16   (32+256+0)

Definition at line 49 of file idct_mmi.c.

#define TG_2_16   (32+256+16)

Definition at line 50 of file idct_mmi.c.

#define TG_3_16   (32+256+32)

Definition at line 51 of file idct_mmi.c.


Function Documentation

void ff_mmi_idct ( int16_t *  block  ) 

Definition at line 294 of file idct_mmi.c.

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

Definition at line 340 of file idct_mmi.c.

Referenced by dsputil_init_mmi().

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

Definition at line 316 of file idct_mmi.c.

Referenced by dsputil_init_mmi().


Variable Documentation

short consttable [] align16 [static]

Definition at line 56 of file idct_mmi.c.


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