hvirtual/quicktime/ffmpeg/libavcodec/i386/dsputil_mmx.c File Reference

#include "../dsputil.h"
#include "../simple_idct.h"
#include "../mpegvideo.h"
#include "mmx.h"
#include "dsputil_mmx_rnd.h"
#include "dsputil_mmx_avg.h"
#include "h264dsp_mmx.c"

Include dependency graph for dsputil_mmx.c:

Go to the source code of this file.

Defines

#define JUMPALIGN()   __asm __volatile (".balign 8"::)
#define MOVQ_ZERO(regd)   __asm __volatile ("pxor %%" #regd ", %%" #regd ::)
#define MOVQ_WONE(regd)
#define MOVQ_BFE(regd)
#define MOVQ_BONE(regd)   __asm __volatile ("movq %0, %%" #regd " \n\t" ::"m"(mm_bone))
#define MOVQ_WTWO(regd)   __asm __volatile ("movq %0, %%" #regd " \n\t" ::"m"(mm_wtwo))
#define PAVGB_MMX_NO_RND(rega, regb, regr, regfe)
#define PAVGB_MMX(rega, regb, regr, regfe)
#define PAVGBP_MMX_NO_RND(rega, regb, regr,regc, regd, regp)
#define PAVGBP_MMX(rega, regb, regr, regc, regd, regp)
#define DEF(x, y)   x ## _no_rnd_ ## y ##_mmx
#define SET_RND   MOVQ_WONE
#define PAVGBP(a, b, c, d, e, f)   PAVGBP_MMX_NO_RND(a, b, c, d, e, f)
#define PAVGB(a, b, c, e)   PAVGB_MMX_NO_RND(a, b, c, e)
#define DEF(x, y)   x ## _ ## y ##_mmx
#define SET_RND   MOVQ_WTWO
#define PAVGBP(a, b, c, d, e, f)   PAVGBP_MMX(a, b, c, d, e, f)
#define PAVGB(a, b, c, e)   PAVGB_MMX(a, b, c, e)
#define DEF(x)   x ## _3dnow
#define PAVGB   "pavgusb"
#define DEF(x)   x ## _mmx2
#define PAVGB   "pavgb"
#define H263_LOOP_FILTER
#define put_no_rnd_pixels8_mmx(a, b, c, d)   put_pixels8_mmx(a,b,c,d)
#define put_no_rnd_pixels16_mmx(a, b, c, d)   put_pixels16_mmx(a,b,c,d)
#define QPEL_V_LOW(m3, m4, m5, m6, pw_20, pw_3, rnd, in0, in1, in2, in7, out, OP)
#define QPEL_BASE(OPNAME, ROUNDER, RND, OP_MMX2, OP_3DNOW)
#define QPEL_OP(OPNAME, ROUNDER, RND, OP, MMX)
#define PUT_OP(a, b, temp, size)   "mov" #size " " #a ", " #b " \n\t"
#define AVG_3DNOW_OP(a, b, temp, size)
#define AVG_MMX2_OP(a, b, temp, size)
#define SET_QPEL_FUNC(postfix1, postfix2)
#define dspfunc(PFX, IDX, NUM)
#define dspfunc(PFX, IDX, NUM)

Functions

static const uint64_t mm_bone
attribute_used 
__attribute__ ((aligned(8)))
void put_signed_pixels_clamped_mmx (const DCTELEM *block, uint8_t *pixels, int line_size)
void add_pixels_clamped_mmx (const DCTELEM *block, uint8_t *pixels, int line_size)
static void put_pixels4_mmx (uint8_t *block, const uint8_t *pixels, int line_size, int h)
static void put_pixels8_mmx (uint8_t *block, const uint8_t *pixels, int line_size, int h)
static void put_pixels16_mmx (uint8_t *block, const uint8_t *pixels, int line_size, int h)
static void clear_blocks_mmx (DCTELEM *blocks)
static void add_bytes_mmx (uint8_t *dst, uint8_t *src, int w)
static void h263_v_loop_filter_mmx (uint8_t *src, int stride, int qscale)
static void transpose4x4 (uint8_t *dst, uint8_t *src, int dst_stride, int src_stride)
static void h263_h_loop_filter_mmx (uint8_t *src, int stride, int qscale)
static int try_8x8basis_mmx (int16_t rem[64], int16_t weight[64], int16_t basis[64], int scale)
static void add_8x8basis_mmx (int16_t rem[64], int16_t basis[64], int scale)
void ff_mmx_idct (DCTELEM *block)
void ff_mmxext_idct (DCTELEM *block)
void ff_vp3_idct_sse2 (int16_t *input_data)
void ff_vp3_idct_mmx (int16_t *data)
void ff_vp3_dsp_init_mmx (void)
static void ff_libmpeg2mmx_idct_put (uint8_t *dest, int line_size, DCTELEM *block)
static void ff_libmpeg2mmx_idct_add (uint8_t *dest, int line_size, DCTELEM *block)
static void ff_libmpeg2mmx2_idct_put (uint8_t *dest, int line_size, DCTELEM *block)
static void ff_libmpeg2mmx2_idct_add (uint8_t *dest, int line_size, DCTELEM *block)
static void ff_vp3_idct_put_sse2 (uint8_t *dest, int line_size, DCTELEM *block)
static void ff_vp3_idct_add_sse2 (uint8_t *dest, int line_size, DCTELEM *block)
static void ff_vp3_idct_put_mmx (uint8_t *dest, int line_size, DCTELEM *block)
static void ff_vp3_idct_add_mmx (uint8_t *dest, int line_size, DCTELEM *block)
void dsputil_init_mmx (DSPContext *c, AVCodecContext *avctx)

Variables

const uint8_t ff_h263_loop_filter_strength [32]
int mm_flags
static const unsigned char __align8 vector128 [8]


Define Documentation

#define AVG_3DNOW_OP ( a,
b,
temp,
size   ) 

Value:

"mov" #size " " #b ", " #temp " \n\t"\
"pavgusb " #temp ", " #a "      \n\t"\
"mov" #size " " #a ", " #b "    \n\t"

Definition at line 2292 of file dsputil_mmx.c.

#define AVG_MMX2_OP ( a,
b,
temp,
size   ) 

Value:

"mov" #size " " #b ", " #temp " \n\t"\
"pavgb " #temp ", " #a "        \n\t"\
"mov" #size " " #a ", " #b "    \n\t"

Definition at line 2296 of file dsputil_mmx.c.

#define DEF (  )     x ## _mmx2

#define DEF (  )     x ## _3dnow

#define DEF ( x,
 )     x ## _ ## y ##_mmx

#define DEF ( x,
 )     x ## _no_rnd_ ## y ##_mmx

#define dspfunc ( PFX,
IDX,
NUM   ) 

Value:

c->PFX ## _pixels_tab[IDX][ 0] = PFX ## NUM ## _mc00_3dnow; \
    c->PFX ## _pixels_tab[IDX][ 1] = PFX ## NUM ## _mc10_3dnow; \
    c->PFX ## _pixels_tab[IDX][ 2] = PFX ## NUM ## _mc20_3dnow; \
    c->PFX ## _pixels_tab[IDX][ 3] = PFX ## NUM ## _mc30_3dnow; \
    c->PFX ## _pixels_tab[IDX][ 4] = PFX ## NUM ## _mc01_3dnow; \
    c->PFX ## _pixels_tab[IDX][ 5] = PFX ## NUM ## _mc11_3dnow; \
    c->PFX ## _pixels_tab[IDX][ 6] = PFX ## NUM ## _mc21_3dnow; \
    c->PFX ## _pixels_tab[IDX][ 7] = PFX ## NUM ## _mc31_3dnow; \
    c->PFX ## _pixels_tab[IDX][ 8] = PFX ## NUM ## _mc02_3dnow; \
    c->PFX ## _pixels_tab[IDX][ 9] = PFX ## NUM ## _mc12_3dnow; \
    c->PFX ## _pixels_tab[IDX][10] = PFX ## NUM ## _mc22_3dnow; \
    c->PFX ## _pixels_tab[IDX][11] = PFX ## NUM ## _mc32_3dnow; \
    c->PFX ## _pixels_tab[IDX][12] = PFX ## NUM ## _mc03_3dnow; \
    c->PFX ## _pixels_tab[IDX][13] = PFX ## NUM ## _mc13_3dnow; \
    c->PFX ## _pixels_tab[IDX][14] = PFX ## NUM ## _mc23_3dnow; \
    c->PFX ## _pixels_tab[IDX][15] = PFX ## NUM ## _mc33_3dnow

#define dspfunc ( PFX,
IDX,
NUM   ) 

Value:

c->PFX ## _pixels_tab[IDX][ 0] = PFX ## NUM ## _mc00_mmx2; \
    c->PFX ## _pixels_tab[IDX][ 1] = PFX ## NUM ## _mc10_mmx2; \
    c->PFX ## _pixels_tab[IDX][ 2] = PFX ## NUM ## _mc20_mmx2; \
    c->PFX ## _pixels_tab[IDX][ 3] = PFX ## NUM ## _mc30_mmx2; \
    c->PFX ## _pixels_tab[IDX][ 4] = PFX ## NUM ## _mc01_mmx2; \
    c->PFX ## _pixels_tab[IDX][ 5] = PFX ## NUM ## _mc11_mmx2; \
    c->PFX ## _pixels_tab[IDX][ 6] = PFX ## NUM ## _mc21_mmx2; \
    c->PFX ## _pixels_tab[IDX][ 7] = PFX ## NUM ## _mc31_mmx2; \
    c->PFX ## _pixels_tab[IDX][ 8] = PFX ## NUM ## _mc02_mmx2; \
    c->PFX ## _pixels_tab[IDX][ 9] = PFX ## NUM ## _mc12_mmx2; \
    c->PFX ## _pixels_tab[IDX][10] = PFX ## NUM ## _mc22_mmx2; \
    c->PFX ## _pixels_tab[IDX][11] = PFX ## NUM ## _mc32_mmx2; \
    c->PFX ## _pixels_tab[IDX][12] = PFX ## NUM ## _mc03_mmx2; \
    c->PFX ## _pixels_tab[IDX][13] = PFX ## NUM ## _mc13_mmx2; \
    c->PFX ## _pixels_tab[IDX][14] = PFX ## NUM ## _mc23_mmx2; \
    c->PFX ## _pixels_tab[IDX][15] = PFX ## NUM ## _mc33_mmx2

#define H263_LOOP_FILTER

Definition at line 527 of file dsputil_mmx.c.

Referenced by h263_h_loop_filter_mmx(), and h263_v_loop_filter_mmx().

 
#define JUMPALIGN (  )     __asm __volatile (".balign 8"::)

#define MOVQ_BFE ( regd   ) 

Value:

__asm __volatile ( \
    "pcmpeqd %%" #regd ", %%" #regd " \n\t"\
    "paddb %%" #regd ", %%" #regd " \n\t" ::)

#define MOVQ_BONE ( regd   )     __asm __volatile ("movq %0, %%" #regd " \n\t" ::"m"(mm_bone))

#define MOVQ_WONE ( regd   ) 

Value:

__asm __volatile ( \
    "pcmpeqd %%" #regd ", %%" #regd " \n\t" \
    "psrlw $15, %%" #regd ::)

#define MOVQ_WTWO ( regd   )     __asm __volatile ("movq %0, %%" #regd " \n\t" ::"m"(mm_wtwo))

#define MOVQ_ZERO ( regd   )     __asm __volatile ("pxor %%" #regd ", %%" #regd ::)

Referenced by add_pixels_clamped_mmx().

#define PAVGB   "pavgb"

#define PAVGB   "pavgusb"

#define PAVGB ( a,
b,
c,
 )     PAVGB_MMX(a, b, c, e)

#define PAVGB ( a,
b,
c,
 )     PAVGB_MMX_NO_RND(a, b, c, e)

#define PAVGB_MMX ( rega,
regb,
regr,
regfe   ) 

Value:

"movq " #rega ", " #regr "      \n\t"\
    "por  " #regb ", " #regr "  \n\t"\
    "pxor " #rega ", " #regb "  \n\t"\
    "pand " #regfe "," #regb "  \n\t"\
    "psrlq $1, " #regb "        \n\t"\
    "psubb " #regb ", " #regr " \n\t"

#define PAVGB_MMX_NO_RND ( rega,
regb,
regr,
regfe   ) 

Value:

"movq " #rega ", " #regr "      \n\t"\
    "pand " #regb ", " #regr "  \n\t"\
    "pxor " #rega ", " #regb "  \n\t"\
    "pand " #regfe "," #regb "  \n\t"\
    "psrlq $1, " #regb "        \n\t"\
    "paddb " #regb ", " #regr " \n\t"

#define PAVGBP ( a,
b,
c,
d,
e,
 )     PAVGBP_MMX(a, b, c, d, e, f)

#define PAVGBP ( a,
b,
c,
d,
e,
 )     PAVGBP_MMX_NO_RND(a, b, c, d, e, f)

#define PAVGBP_MMX ( rega,
regb,
regr,
regc,
regd,
regp   ) 

Value:

"movq " #rega ", " #regr "      \n\t"\
    "movq " #regc ", " #regp "  \n\t"\
    "por  " #regb ", " #regr "  \n\t"\
    "por  " #regd ", " #regp "  \n\t"\
    "pxor " #rega ", " #regb "  \n\t"\
    "pxor " #regc ", " #regd "  \n\t"\
    "pand %%mm6, " #regb "      \n\t"\
    "pand %%mm6, " #regd "      \n\t"\
    "psrlq $1, " #regd "        \n\t"\
    "psrlq $1, " #regb "        \n\t"\
    "psubb " #regb ", " #regr " \n\t"\
    "psubb " #regd ", " #regp " \n\t"

#define PAVGBP_MMX_NO_RND ( rega,
regb,
regr,
regc,
regd,
regp   ) 

Value:

"movq " #rega ", " #regr "      \n\t"\
    "movq " #regc ", " #regp "  \n\t"\
    "pand " #regb ", " #regr "  \n\t"\
    "pand " #regd ", " #regp "  \n\t"\
    "pxor " #rega ", " #regb "  \n\t"\
    "pxor " #regc ", " #regd "  \n\t"\
    "pand %%mm6, " #regb "      \n\t"\
    "pand %%mm6, " #regd "      \n\t"\
    "psrlq $1, " #regb "        \n\t"\
    "psrlq $1, " #regd "        \n\t"\
    "paddb " #regb ", " #regr " \n\t"\
    "paddb " #regd ", " #regp " \n\t"

#define put_no_rnd_pixels16_mmx ( a,
b,
c,
 )     put_pixels16_mmx(a,b,c,d)

Definition at line 1640 of file dsputil_mmx.c.

#define put_no_rnd_pixels8_mmx ( a,
b,
c,
 )     put_pixels8_mmx(a,b,c,d)

Definition at line 1639 of file dsputil_mmx.c.

#define PUT_OP ( a,
b,
temp,
size   )     "mov" #size " " #a ", " #b " \n\t"

Definition at line 2291 of file dsputil_mmx.c.

#define QPEL_BASE ( OPNAME,
ROUNDER,
RND,
OP_MMX2,
OP_3DNOW   ) 

Definition at line 1663 of file dsputil_mmx.c.

#define QPEL_OP ( OPNAME,
ROUNDER,
RND,
OP,
MMX   ) 

Definition at line 1928 of file dsputil_mmx.c.

#define QPEL_V_LOW ( m3,
m4,
m5,
m6,
pw_20,
pw_3,
rnd,
in0,
in1,
in2,
in7,
out,
OP   ) 

Value:

"paddw " #m4 ", " #m3 "         \n\t" /* x1 */\
        "movq "MANGLE(ff_pw_20)", %%mm4         \n\t" /* 20 */\
        "pmullw " #m3 ", %%mm4          \n\t" /* 20x1 */\
        "movq "#in7", " #m3 "           \n\t" /* d */\
        "movq "#in0", %%mm5             \n\t" /* D */\
        "paddw " #m3 ", %%mm5           \n\t" /* x4 */\
        "psubw %%mm5, %%mm4             \n\t" /* 20x1 - x4 */\
        "movq "#in1", %%mm5             \n\t" /* C */\
        "movq "#in2", %%mm6             \n\t" /* B */\
        "paddw " #m6 ", %%mm5           \n\t" /* x3 */\
        "paddw " #m5 ", %%mm6           \n\t" /* x2 */\
        "paddw %%mm6, %%mm6             \n\t" /* 2x2 */\
        "psubw %%mm6, %%mm5             \n\t" /* -2x2 + x3 */\
        "pmullw "MANGLE(ff_pw_3)", %%mm5        \n\t" /* -6x2 + 3x3 */\
        "paddw " #rnd ", %%mm4          \n\t" /* x2 */\
        "paddw %%mm4, %%mm5             \n\t" /* 20x1 - 6x2 + 3x3 - x4 */\
        "psraw $5, %%mm5                \n\t"\
        "packuswb %%mm5, %%mm5          \n\t"\
        OP(%%mm5, out, %%mm7, d)

Definition at line 1642 of file dsputil_mmx.c.

#define SET_QPEL_FUNC ( postfix1,
postfix2   ) 

Value:

c->put_ ## postfix1 = put_ ## postfix2;\
    c->put_no_rnd_ ## postfix1 = put_no_rnd_ ## postfix2;\
    c->avg_ ## postfix1 = avg_ ## postfix2;

Definition at line 2315 of file dsputil_mmx.c.

#define SET_RND   MOVQ_WTWO

#define SET_RND   MOVQ_WONE


Function Documentation

static const uint64_t mm_bone attribute_used __attribute__ ( (aligned(8))   )  [static, pure virtual]

Definition at line 36 of file dsputil_mmx.c.

References REG_a.

static void add_8x8basis_mmx ( int16_t  rem[64],
int16_t  basis[64],
int  scale 
) [static]

Definition at line 2368 of file dsputil_mmx.c.

References ABS, BASIS_SHIFT, and RECON_SHIFT.

Referenced by dsputil_init_mmx().

static void add_bytes_mmx ( uint8_t *  dst,
uint8_t *  src,
int  w 
) [static]

Definition at line 505 of file dsputil_mmx.c.

Referenced by dsputil_init_mmx().

void add_pixels_clamped_mmx ( const DCTELEM block,
uint8_t *  pixels,
int  line_size 
)

static void clear_blocks_mmx ( DCTELEM blocks  )  [static]

Definition at line 448 of file dsputil_mmx.c.

References REG_a.

Referenced by dsputil_init_mmx().

void dsputil_init_mmx ( DSPContext c,
AVCodecContext avctx 
)

Definition at line 2459 of file dsputil_mmx.c.

References DSPContext::add_8x8basis, add_8x8basis_mmx(), DSPContext::add_bytes, add_bytes_mmx(), DSPContext::add_pixels_clamped, add_pixels_clamped_mmx(), av_log(), AV_LOG_INFO, DSPContext::avg_h264_chroma_pixels_tab, DSPContext::avg_no_rnd_pixels_tab, DSPContext::avg_pixels_tab, DSPContext::clear_blocks, clear_blocks_mmx(), CODEC_FLAG_BITEXACT, AVCodecContext::dct_algo, dct_algo, DSPContext::diff_bytes, DSPContext::diff_pixels, AVCodecContext::dsp_mask, dspfunc, dsputil_init_pix_mmx(), DSPContext::fdct, FF_DCT_AUTO, FF_DCT_MMX, ff_fdct_mmx(), ff_fdct_mmx2(), ff_fdct_sse2(), ff_h264_idct_add_mmx2(), FF_IDCT_AUTO, FF_IDCT_LIBMPEG2MMX, FF_IDCT_SIMPLEMMX, FF_IDCT_VP3, FF_LIBMPEG2_IDCT_PERM, ff_libmpeg2mmx2_idct_add(), ff_libmpeg2mmx2_idct_put(), ff_libmpeg2mmx_idct_add(), ff_libmpeg2mmx_idct_put(), FF_MM_FORCE, ff_mmx_idct(), ff_mmxext_idct(), FF_PARTTRANS_IDCT_PERM, ff_simple_idct_add_mmx(), ff_simple_idct_mmx(), FF_SIMPLE_IDCT_PERM, ff_simple_idct_put_mmx(), FF_TRANSPOSE_IDCT_PERM, ff_vp3_dsp_init_mmx(), ff_vp3_idct_add_mmx(), ff_vp3_idct_add_sse2(), ff_vp3_idct_mmx(), ff_vp3_idct_put_mmx(), ff_vp3_idct_put_sse2(), ff_vp3_idct_sse2(), AVCodecContext::flags, DSPContext::get_pixels, DSPContext::h263_h_loop_filter, h263_h_loop_filter_mmx(), DSPContext::h263_v_loop_filter, h263_v_loop_filter_mmx(), DSPContext::h264_h_loop_filter_chroma, DSPContext::h264_h_loop_filter_chroma_intra, h264_h_loop_filter_chroma_intra_mmx2(), h264_h_loop_filter_chroma_mmx2(), DSPContext::h264_h_loop_filter_luma, h264_h_loop_filter_luma_mmx2(), DSPContext::h264_idct_add, DSPContext::h264_v_loop_filter_chroma, DSPContext::h264_v_loop_filter_chroma_intra, h264_v_loop_filter_chroma_intra_mmx2(), h264_v_loop_filter_chroma_mmx2(), DSPContext::h264_v_loop_filter_luma, h264_v_loop_filter_luma_mmx2(), DSPContext::hadamard8_diff, DSPContext::idct, DSPContext::idct_add, AVCodecContext::idct_algo, idct_algo, DSPContext::idct_permutation_type, DSPContext::idct_put, AVCodecContext::lowres, mm_flags, mm_support(), DSPContext::nsse, DSPContext::pix_norm1, DSPContext::pix_sum, DSPContext::put_h264_chroma_pixels_tab, DSPContext::put_no_rnd_pixels_tab, put_pixels16_mmx(), put_pixels8_mmx(), DSPContext::put_pixels_clamped, DSPContext::put_pixels_tab, DSPContext::put_signed_pixels_clamped, put_signed_pixels_clamped_mmx(), SET_QPEL_FUNC, DSPContext::sse, DSPContext::sub_hfyu_median_prediction, DSPContext::try_8x8basis, try_8x8basis_mmx(), and DSPContext::vsad.

Referenced by dsputil_init().

Here is the call graph for this function:

static void ff_libmpeg2mmx2_idct_add ( uint8_t *  dest,
int  line_size,
DCTELEM block 
) [static]

Definition at line 2433 of file dsputil_mmx.c.

References add_pixels_clamped_mmx(), and ff_mmxext_idct().

Referenced by dsputil_init_mmx().

Here is the call graph for this function:

static void ff_libmpeg2mmx2_idct_put ( uint8_t *  dest,
int  line_size,
DCTELEM block 
) [static]

Definition at line 2428 of file dsputil_mmx.c.

References ff_mmxext_idct().

Referenced by dsputil_init_mmx().

Here is the call graph for this function:

static void ff_libmpeg2mmx_idct_add ( uint8_t *  dest,
int  line_size,
DCTELEM block 
) [static]

Definition at line 2423 of file dsputil_mmx.c.

References add_pixels_clamped_mmx(), and ff_mmx_idct().

Referenced by dsputil_init_mmx().

Here is the call graph for this function:

static void ff_libmpeg2mmx_idct_put ( uint8_t *  dest,
int  line_size,
DCTELEM block 
) [static]

Definition at line 2418 of file dsputil_mmx.c.

References ff_mmx_idct().

Referenced by dsputil_init_mmx().

Here is the call graph for this function:

void ff_mmx_idct ( DCTELEM block  ) 

void ff_mmxext_idct ( DCTELEM block  ) 

void ff_vp3_dsp_init_mmx ( void   ) 

Definition at line 260 of file vp3dsp_mmx.c.

References idct_constants, idct_cosine_table, and IdctAdjustBeforeShift.

Referenced by dsputil_init_mmx().

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

Definition at line 2453 of file dsputil_mmx.c.

References add_pixels_clamped_mmx(), and ff_vp3_idct_mmx().

Referenced by dsputil_init_mmx().

Here is the call graph for this function:

static void ff_vp3_idct_add_sse2 ( uint8_t *  dest,
int  line_size,
DCTELEM block 
) [static]

Definition at line 2443 of file dsputil_mmx.c.

References add_pixels_clamped_mmx(), and ff_vp3_idct_sse2().

Referenced by dsputil_init_mmx().

Here is the call graph for this function:

void ff_vp3_idct_mmx ( int16_t *  data  ) 

Definition at line 275 of file vp3dsp_mmx.c.

References ColumnIDCT, RowIDCT, and Transpose.

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

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

Definition at line 2448 of file dsputil_mmx.c.

References ff_vp3_idct_mmx(), and put_signed_pixels_clamped_mmx().

Referenced by dsputil_init_mmx().

Here is the call graph for this function:

static void ff_vp3_idct_put_sse2 ( uint8_t *  dest,
int  line_size,
DCTELEM block 
) [static]

Definition at line 2438 of file dsputil_mmx.c.

References ff_vp3_idct_sse2(), and put_signed_pixels_clamped_mmx().

Referenced by dsputil_init_mmx().

Here is the call graph for this function:

void ff_vp3_idct_sse2 ( int16_t *  input_data  ) 

static void h263_h_loop_filter_mmx ( uint8_t *  src,
int  stride,
int  qscale 
) [static]

Definition at line 646 of file dsputil_mmx.c.

References __attribute__(), ff_h263_loop_filter_strength, H263_LOOP_FILTER, and transpose4x4().

Referenced by dsputil_init_mmx().

Here is the call graph for this function:

static void h263_v_loop_filter_mmx ( uint8_t *  src,
int  stride,
int  qscale 
) [static]

Definition at line 598 of file dsputil_mmx.c.

References ff_h263_loop_filter_strength, and H263_LOOP_FILTER.

Referenced by dsputil_init_mmx().

static void put_pixels16_mmx ( uint8_t *  block,
const uint8_t *  pixels,
int  line_size,
int  h 
) [static]

Definition at line 414 of file dsputil_mmx.c.

References REG_a.

Referenced by dsputil_init_mmx().

static void put_pixels4_mmx ( uint8_t *  block,
const uint8_t *  pixels,
int  line_size,
int  h 
) [static]

Definition at line 362 of file dsputil_mmx.c.

References REG_a.

static void put_pixels8_mmx ( uint8_t *  block,
const uint8_t *  pixels,
int  line_size,
int  h 
) [static]

Definition at line 388 of file dsputil_mmx.c.

References REG_a.

Referenced by dsputil_init_mmx().

void put_signed_pixels_clamped_mmx ( const DCTELEM block,
uint8_t *  pixels,
int  line_size 
)

Definition at line 306 of file dsputil_mmx.c.

References movq_m2r, movq_r2m, packsswb_m2r, and paddb_r2r.

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

static void transpose4x4 ( uint8_t *  dst,
uint8_t *  src,
int  dst_stride,
int  src_stride 
) [inline, static]

static int try_8x8basis_mmx ( int16_t  rem[64],
int16_t  weight[64],
int16_t  basis[64],
int  scale 
) [static]

Definition at line 2320 of file dsputil_mmx.c.

References ABS, BASIS_SHIFT, and RECON_SHIFT.

Referenced by dsputil_init_mmx().


Variable Documentation

const uint8_t ff_h263_loop_filter_strength[32]

Definition at line 281 of file h263data.h.

int mm_flags

Definition at line 33 of file dsputil_mmx.c.

const unsigned char __align8 vector128[8] [static]

Initial value:

  { 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80 }

Definition at line 303 of file dsputil_mmx.c.


Generated on Mon Apr 28 14:04:33 2008 for Cinelerra by  doxygen 1.5.5