#include #include #include void stc_sint16_to_float(float* dest, const short* src, size_t count, int input_stride, int output_stride) { for (size_t i=0; i= +1.0) dest[i*output_stride] = 32767; else if (src[i*input_stride] <= -1.0) dest[i*output_stride] = -32767; else dest[i*output_stride] = (short) (src[i*input_stride] * 32767.0F); } } void stc_float_to_sint32(int* dest, const float* src, size_t count, int input_stride, int output_stride) { /* Überlauf-Schutz: Übersteuerte Werte größer +/-1.0 werden auf +/-2147483647 abgebildet. Dies mag zwar langsam sein, ist aber sicherer! */ for (size_t i=0; i= +1.0) dest[i*output_stride] = 2147483647; else if (src[i*input_stride] <= -1.0) dest[i*output_stride] = -2147483647; else dest[i*output_stride] = (int) (src[i*input_stride] * 2147483647.0F); } } void stc_float_to_double(double* dest, const float* src, size_t count, int input_stride, int output_stride) { for (size_t i=0; i