diff --git a/libaf/af_format.c b/libaf/af_format.c index 2777fdbc42..2969455ac1 100644 --- a/libaf/af_format.c +++ b/libaf/af_format.c @@ -3,6 +3,9 @@ AFMT_U16_LE, AFMT_U16_BE, AFMT_S32_LE and AFMT_S32_BE. */ +// Must be defined before any libc headers are included! +#define _ISOC9X_SOURCE + #include #include #include @@ -14,6 +17,14 @@ #include "../bswap.h" #include "../libvo/fastmemcpy.h" +// Integer to float conversion through lrintf() +#ifdef HAVE_LRINTF +#include +long int lrintf(float); +#else +#define lrintf(x) ((int)(x)) +#endif + /* Functions used by play to convert the input audio to the correct format */ @@ -31,9 +42,9 @@ static void us2si(void* in, void* out, int len, int bps); // Change the number of bits per sample static void change_bps(void* in, void* out, int len, int inbps, int outbps); // From float to int signed -static void float2int(void* in, void* out, int len, int bps); +static void float2int(float* in, void* out, int len, int bps); // From signed int to float -static void int2float(void* in, void* out, int len, int bps); +static void int2float(void* in, float* out, int len, int bps); static af_data_t* play(struct af_instance_s* af, af_data_t* data); static af_data_t* play_swapendian(struct af_instance_s* af, af_data_t* data); @@ -488,48 +499,48 @@ static void change_bps(void* in, void* out, int len, int inbps, int outbps) } } -static void float2int(void* in, void* out, int len, int bps) +static void float2int(float* in, void* out, int len, int bps) { register int i; switch(bps){ case(1): for(i=0;i