libavcodec/x86/mpegaudiodec_mmx.c File Reference

#include "libavutil/cpu.h"
#include "libavutil/x86_cpu.h"
#include "libavcodec/dsputil.h"
#include "libavcodec/mpegaudiodsp.h"

Go to the source code of this file.

Defines

#define MACS(rt, ra, rb)   rt+=(ra)*(rb)
#define MLSS(rt, ra, rb)   rt-=(ra)*(rb)
#define SUM8(op, sum, w, p)
#define MULT(a, b)
#define SUMS(suma, sumb, sumc, sumd, out1, out2)
#define DECL_IMDCT_BLOCKS(CPU1, CPU2)

Functions

void ff_imdct36_float_sse (float *out, float *buf, float *in, float *win)
void ff_imdct36_float_sse2 (float *out, float *buf, float *in, float *win)
void ff_imdct36_float_sse3 (float *out, float *buf, float *in, float *win)
void ff_imdct36_float_ssse3 (float *out, float *buf, float *in, float *win)
void ff_imdct36_float_avx (float *out, float *buf, float *in, float *win)
void ff_four_imdct36_float_sse (float *out, float *buf, float *in, float *win, float *tmpbuf)
void ff_four_imdct36_float_avx (float *out, float *buf, float *in, float *win, float *tmpbuf)
static void apply_window (const float *buf, const float *win1, const float *win2, float *sum1, float *sum2, int len)
static void apply_window_mp3 (float *in, float *win, int *unused, float *out, int incr)
void ff_mpadsp_init_mmx (MPADSPContext *s)

Variables

static float mdct_win_sse [2][4][4 *40]


Define Documentation

#define DECL_IMDCT_BLOCKS ( CPU1,
CPU2   ) 

Value:

static void imdct36_blocks_ ## CPU1(float *out, float *buf, float *in,      \
                               int count, int switch_point, int block_type) \
{                                                                           \
    int align_end = count - (count & 3);                                \
    int j;                                                              \
    for (j = 0; j < align_end; j+= 4) {                                 \
        LOCAL_ALIGNED_16(float, tmpbuf, [1024]);                        \
        float *win = mdct_win_sse[switch_point && j < 4][block_type];   \
        /* apply window & overlap with previous buffer */               \
                                                                        \
        /* select window */                                             \
        ff_four_imdct36_float_ ## CPU2(out, buf, in, win, tmpbuf);      \
        in      += 4*18;                                                \
        buf     += 4*18;                                                \
        out     += 4;                                                   \
    }                                                                   \
    for (; j < count; j++) {                                            \
        /* apply window & overlap with previous buffer */               \
                                                                        \
        /* select window */                                             \
        int win_idx = (switch_point && j < 2) ? 0 : block_type;         \
        float *win = ff_mdct_win_float[win_idx + (4 & -(j & 1))];       \
                                                                        \
        ff_imdct36_float_ ## CPU1(out, buf, in, win);                   \
                                                                        \
        in  += 18;                                                      \
        buf++;                                                          \
        out++;                                                          \
    }                                                                   \
}

Definition at line 182 of file mpegaudiodec_mmx.c.

#define MACS ( rt,
ra,
rb   )     rt+=(ra)*(rb)

Definition at line 39 of file mpegaudiodec_mmx.c.

#define MLSS ( rt,
ra,
rb   )     rt-=(ra)*(rb)

Definition at line 40 of file mpegaudiodec_mmx.c.

#define MULT ( a,
 ) 

Value:

"movaps " #a "(%1,%0), %%xmm1           \n\t"  \
    "movaps " #a "(%3,%0), %%xmm2           \n\t"  \
    "mulps         %%xmm2, %%xmm1           \n\t"  \
    "subps         %%xmm1, %%xmm0           \n\t"  \
    "mulps  " #b "(%2,%0), %%xmm2           \n\t"  \
    "subps         %%xmm2, %%xmm4           \n\t"  \

#define SUM8 ( op,
sum,
w,
 ) 

Value:

{                                         \
    op(sum, (w)[0 * 64], (p)[0 * 64]);    \
    op(sum, (w)[1 * 64], (p)[1 * 64]);    \
    op(sum, (w)[2 * 64], (p)[2 * 64]);    \
    op(sum, (w)[3 * 64], (p)[3 * 64]);    \
    op(sum, (w)[4 * 64], (p)[4 * 64]);    \
    op(sum, (w)[5 * 64], (p)[5 * 64]);    \
    op(sum, (w)[6 * 64], (p)[6 * 64]);    \
    op(sum, (w)[7 * 64], (p)[7 * 64]);    \
}

Definition at line 42 of file mpegaudiodec_mmx.c.

#define SUMS ( suma,
sumb,
sumc,
sumd,
out1,
out2   ) 

Value:

"movups " #sumd "(%4),       %%xmm0          \n\t" \
            "shufps         $0x1b,       %%xmm0, %%xmm0  \n\t" \
            "subps  " #suma "(%1),       %%xmm0          \n\t" \
            "movaps        %%xmm0," #out1 "(%0)          \n\t" \
\
            "movups " #sumc "(%3),       %%xmm0          \n\t" \
            "shufps         $0x1b,       %%xmm0, %%xmm0  \n\t" \
            "addps  " #sumb "(%2),       %%xmm0          \n\t" \
            "movaps        %%xmm0," #out2 "(%0)          \n\t"

Referenced by apply_window_mp3().


Function Documentation

static void apply_window ( const float *  buf,
const float *  win1,
const float *  win2,
float *  sum1,
float *  sum2,
int  len 
) [static]

Definition at line 54 of file mpegaudiodec_mmx.c.

static void apply_window_mp3 ( float *  in,
float *  win,
int *  unused,
float *  out,
int  incr 
) [static]

Definition at line 98 of file mpegaudiodec_mmx.c.

void ff_four_imdct36_float_avx ( float *  out,
float *  buf,
float *  in,
float *  win,
float *  tmpbuf 
)

void ff_four_imdct36_float_sse ( float *  out,
float *  buf,
float *  in,
float *  win,
float *  tmpbuf 
)

void ff_imdct36_float_avx ( float *  out,
float *  buf,
float *  in,
float *  win 
)

void ff_imdct36_float_sse ( float *  out,
float *  buf,
float *  in,
float *  win 
)

void ff_imdct36_float_sse2 ( float *  out,
float *  buf,
float *  in,
float *  win 
)

void ff_imdct36_float_sse3 ( float *  out,
float *  buf,
float *  in,
float *  win 
)

void ff_imdct36_float_ssse3 ( float *  out,
float *  buf,
float *  in,
float *  win 
)

void ff_mpadsp_init_mmx ( MPADSPContext s  ) 

Definition at line 226 of file mpegaudiodec_mmx.c.

Referenced by ff_mpadsp_init().


Variable Documentation

float mdct_win_sse[2][4][4 *40] [static]

Definition at line 37 of file mpegaudiodec_mmx.c.

Referenced by ff_mpadsp_init_mmx().


Generated on Fri Oct 26 02:48:00 2012 for FFmpeg by  doxygen 1.5.8