libavcodec/x86/fmtconvert_mmx.c File Reference

#include "libavutil/cpu.h"
#include "libavutil/x86_cpu.h"
#include "libavcodec/fmtconvert.h"

Go to the source code of this file.

Defines

#define ff_float_to_int16_interleave6_sse2   ff_float_to_int16_interleave6_sse
#define FLOAT_TO_INT16_INTERLEAVE(cpu)

Functions

void ff_int32_to_float_fmul_scalar_sse (float *dst, const int *src, float mul, int len)
void ff_int32_to_float_fmul_scalar_sse2 (float *dst, const int *src, float mul, int len)
void ff_float_to_int16_3dnow (int16_t *dst, const float *src, long len)
void ff_float_to_int16_sse (int16_t *dst, const float *src, long len)
void ff_float_to_int16_sse2 (int16_t *dst, const float *src, long len)
void ff_float_to_int16_interleave2_3dnow (int16_t *dst, const float **src, long len)
void ff_float_to_int16_interleave2_sse (int16_t *dst, const float **src, long len)
void ff_float_to_int16_interleave2_sse2 (int16_t *dst, const float **src, long len)
void ff_float_to_int16_interleave6_sse (int16_t *dst, const float **src, int len)
void ff_float_to_int16_interleave6_3dnow (int16_t *dst, const float **src, int len)
void ff_float_to_int16_interleave6_3dn2 (int16_t *dst, const float **src, int len)
static void float_to_int16_interleave_3dn2 (int16_t *dst, const float **src, long len, int channels)
void ff_float_interleave2_mmx (float *dst, const float **src, unsigned int len)
void ff_float_interleave2_sse (float *dst, const float **src, unsigned int len)
void ff_float_interleave6_mmx (float *dst, const float **src, unsigned int len)
void ff_float_interleave6_sse (float *dst, const float **src, unsigned int len)
static void float_interleave_mmx (float *dst, const float **src, unsigned int len, int channels)
static void float_interleave_sse (float *dst, const float **src, unsigned int len, int channels)
void ff_fmt_convert_init_x86 (FmtConvertContext *c, AVCodecContext *avctx)

Define Documentation

#define ff_float_to_int16_interleave6_sse2   ff_float_to_int16_interleave6_sse

Definition at line 46 of file fmtconvert_mmx.c.

#define FLOAT_TO_INT16_INTERLEAVE (   cpu  ) 
Value:
/* gcc pessimizes register allocation if this is in the same function as float_to_int16_interleave_sse2*/\
static av_noinline void float_to_int16_interleave_misc_##cpu(int16_t *dst, const float **src, long len, int channels){\
    DECLARE_ALIGNED(16, int16_t, tmp)[len];\
    int i,j,c;\
    for(c=0; c<channels; c++){\
        ff_float_to_int16_##cpu(tmp, src[c], len);\
        for(i=0, j=c; i<len; i++, j+=channels)\
            dst[j] = tmp[i];\
    }\
}\
\
static void float_to_int16_interleave_##cpu(int16_t *dst, const float **src, long len, int channels){\
    if(channels==1)\
        ff_float_to_int16_##cpu(dst, src[0], len);\
    else if(channels==2){\
        ff_float_to_int16_interleave2_##cpu(dst, src, len);\
    }else if(channels==6){\
        ff_float_to_int16_interleave6_##cpu(dst, src, len);\
    }else\
        float_to_int16_interleave_misc_##cpu(dst, src, len, channels);\
}

Definition at line 48 of file fmtconvert_mmx.c.


Function Documentation

void ff_float_interleave2_mmx ( float *  dst,
const float **  src,
unsigned int  len 
)

Referenced by float_interleave_mmx().

void ff_float_interleave2_sse ( float *  dst,
const float **  src,
unsigned int  len 
)

Referenced by float_interleave_sse().

void ff_float_interleave6_mmx ( float *  dst,
const float **  src,
unsigned int  len 
)

Referenced by float_interleave_mmx().

void ff_float_interleave6_sse ( float *  dst,
const float **  src,
unsigned int  len 
)

Referenced by float_interleave_sse().

void ff_float_to_int16_3dnow ( int16_t *  dst,
const float *  src,
long  len 
)
void ff_float_to_int16_interleave2_3dnow ( int16_t *  dst,
const float **  src,
long  len 
)
void ff_float_to_int16_interleave2_sse ( int16_t *  dst,
const float **  src,
long  len 
)
void ff_float_to_int16_interleave2_sse2 ( int16_t *  dst,
const float **  src,
long  len 
)
void ff_float_to_int16_interleave6_3dn2 ( int16_t *  dst,
const float **  src,
int  len 
)
void ff_float_to_int16_interleave6_3dnow ( int16_t *  dst,
const float **  src,
int  len 
)
void ff_float_to_int16_interleave6_sse ( int16_t *  dst,
const float **  src,
int  len 
)
void ff_float_to_int16_sse ( int16_t *  dst,
const float *  src,
long  len 
)
void ff_float_to_int16_sse2 ( int16_t *  dst,
const float *  src,
long  len 
)
void ff_fmt_convert_init_x86 ( FmtConvertContext c,
AVCodecContext avctx 
)

Definition at line 111 of file fmtconvert_mmx.c.

Referenced by ff_fmt_convert_init().

void ff_int32_to_float_fmul_scalar_sse ( float *  dst,
const int *  src,
float  mul,
int  len 
)
void ff_int32_to_float_fmul_scalar_sse2 ( float *  dst,
const int *  src,
float  mul,
int  len 
)
static void float_interleave_mmx ( float *  dst,
const float **  src,
unsigned int  len,
int  channels 
) [static]

Definition at line 88 of file fmtconvert_mmx.c.

static void float_interleave_sse ( float *  dst,
const float **  src,
unsigned int  len,
int  channels 
) [static]

Definition at line 99 of file fmtconvert_mmx.c.

static void float_to_int16_interleave_3dn2 ( int16_t *  dst,
const float **  src,
long  len,
int  channels 
) [static]

Definition at line 75 of file fmtconvert_mmx.c.