diff --git a/audio/utils.h b/audio/utils.h index bed6110fae..3c17c00540 100644 --- a/audio/utils.h +++ b/audio/utils.h @@ -3,7 +3,8 @@ #include -#ifdef __SSE2__ +#if __SSE2__ +#include #include #define audio_convert_s16_to_float audio_convert_s16_to_float_SSE2 #define audio_convert_float_to_s16 audio_convert_float_to_s16_SSE2 @@ -29,7 +30,7 @@ static inline void audio_convert_float_to_s16_C(int16_t *out, } } -#ifdef __SSE2__ +#if __SSE2__ static inline void audio_convert_s16_to_float_SSE2(float *out, const int16_t *in, unsigned samples) { @@ -47,7 +48,7 @@ static inline void audio_convert_s16_to_float_SSE2(float *out, __m64 input = *(const __m64*)in; __m128 reg = _mm_cvtpi16_ps(input); __m128 res = _mm_mul_ps(reg, factor); - *(__m128*)out = res; + _mm_store_ps(out, res); } audio_convert_s16_to_float_C(out, in, samples - i); @@ -67,7 +68,7 @@ static inline void audio_convert_float_to_s16_SSE2(int16_t *out, unsigned i; for (i = 0; i + 4 <= samples; i += 4, in += 4, out += 4) { - __m128 input = *(const __m128*)in; + __m128 input = _mm_load_ps(in); __m128 res = _mm_mul_ps(input, factor); __m64 output = _mm_cvtps_pi16(res); *(__m64*)out = output;