33 void ff_int32_to_float_fmul_scalar_sse (
float *dst,
const int32_t *
src,
float mul,
int len);
34 void ff_int32_to_float_fmul_scalar_sse2(
float *dst,
const int32_t *
src,
float mul,
int len);
36 void ff_float_to_int16_3dnow(int16_t *dst,
const float *
src,
long len);
37 void ff_float_to_int16_sse (int16_t *dst,
const float *
src,
long len);
38 void ff_float_to_int16_sse2 (int16_t *dst,
const float *
src,
long len);
40 void ff_float_to_int16_step_3dnow(int16_t *dst,
const float *
src,
long len,
long step);
41 void ff_float_to_int16_step_sse (int16_t *dst,
const float *
src,
long len,
long step);
42 void ff_float_to_int16_step_sse2 (int16_t *dst,
const float *
src,
long len,
long step);
44 void ff_float_to_int16_interleave2_3dnow(int16_t *dst,
const float **
src,
long len);
45 void ff_float_to_int16_interleave2_sse (int16_t *dst,
const float **
src,
long len);
46 void ff_float_to_int16_interleave2_sse2 (int16_t *dst,
const float **
src,
long len);
48 void ff_float_to_int16_interleave6_sse(int16_t *dst,
const float **
src,
int len);
49 void ff_float_to_int16_interleave6_3dnow(int16_t *dst,
const float **
src,
int len);
50 void ff_float_to_int16_interleave6_3dnowext(int16_t *dst,
const float **
src,
int len);
52 #define ff_float_to_int16_interleave6_sse2 ff_float_to_int16_interleave6_sse
54 #define FLOAT_TO_INT16_INTERLEAVE(cpu) \
56 static av_noinline void float_to_int16_interleave_misc_##cpu(int16_t *dst, const float **src, long len, int channels){\
58 for(c=0; c<channels; c++){\
59 ff_float_to_int16_step_##cpu(dst+c, src[c], len, channels);\
63 static void float_to_int16_interleave_##cpu(int16_t *dst, const float **src, long len, int channels){\
65 ff_float_to_int16_##cpu(dst, src[0], len);\
66 else if(channels==2){\
67 ff_float_to_int16_interleave2_##cpu(dst, src, len);\
68 }else if(channels==6){\
69 ff_float_to_int16_interleave6_##cpu(dst, src, len);\
71 float_to_int16_interleave_misc_##cpu(dst, src, len, channels);\
74 FLOAT_TO_INT16_INTERLEAVE(3dnow)
75 FLOAT_TO_INT16_INTERLEAVE(
sse)
76 FLOAT_TO_INT16_INTERLEAVE(sse2)
78 static
void float_to_int16_interleave_3dnowext(int16_t *dst, const
float **
src,
79 long len,
int channels)
82 ff_float_to_int16_interleave6_3dnowext(dst, src, len);
84 float_to_int16_interleave_3dnow(dst, src, len, channels);
87 void ff_float_interleave2_mmx(
float *dst,
const float **src,
unsigned int len);
88 void ff_float_interleave2_sse(
float *dst,
const float **src,
unsigned int len);
90 void ff_float_interleave6_mmx(
float *dst,
const float **src,
unsigned int len);
91 void ff_float_interleave6_sse(
float *dst,
const float **src,
unsigned int len);
93 static void float_interleave_mmx(
float *dst,
const float **src,
94 unsigned int len,
int channels)
97 ff_float_interleave2_mmx(dst, src, len);
98 }
else if (channels == 6)
99 ff_float_interleave6_mmx(dst, src, len);
104 static void float_interleave_sse(
float *dst,
const float **src,
105 unsigned int len,
int channels)
108 ff_float_interleave2_sse(dst, src, len);
109 }
else if (channels == 6)
110 ff_float_interleave6_sse(dst, src, len);