diff -r 69cc269eec53 src/audio/SDL_audiotypecvt.c --- a/src/audio/SDL_audiotypecvt.c Mon Aug 19 21:23:47 2019 +0200 +++ b/src/audio/SDL_audiotypecvt.c Mon Aug 19 21:49:56 2019 +0200 @@ -337,6 +337,7 @@ src = (const Sint8 *) mmsrc; } + else { SDL_Log("Not aligned %s", __func__); } src += 15; dst += 15; /* adjust for any scalar finishing. */ @@ -398,6 +399,7 @@ src = (const Uint8 *) mmsrc; } + else { SDL_Log("Not aligned %s", __func__); } src += 15; dst += 15; /* adjust for any scalar finishing. */ @@ -446,6 +448,7 @@ i -= 8; src -= 8; dst -= 8; } } + else { SDL_Log("Not aligned %s", __func__); } src += 7; dst += 7; /* adjust for any scalar finishing. */ @@ -495,6 +498,7 @@ i -= 8; src -= 8; dst -= 8; } } + else { SDL_Log("Not aligned %s", __func__); } src += 7; dst += 7; /* adjust for any scalar finishing. */ @@ -538,6 +542,7 @@ } src = (const Sint32 *) mmsrc; } + else { SDL_Log("Not aligned %s", __func__); } /* Finish off any leftovers with scalar operations. */ while (i) { @@ -590,6 +595,7 @@ } dst = (Sint8 *) mmdst; } + else { SDL_Log("Not aligned %s", __func__); } /* Finish off any leftovers with scalar operations. */ while (i) { @@ -650,6 +656,7 @@ } dst = (Uint8 *) mmdst; } + else { SDL_Log("Not aligned %s", __func__); } /* Finish off any leftovers with scalar operations. */ while (i) { @@ -708,6 +715,7 @@ } dst = (Sint16 *) mmdst; } + else { SDL_Log("Not aligned %s", __func__); } /* Finish off any leftovers with scalar operations. */ while (i) { @@ -774,6 +782,7 @@ } dst = (Uint16 *) mmdst; } + else { SDL_Log("Not aligned %s", __func__); } /* Finish off any leftovers with scalar operations. */ while (i) { @@ -888,6 +897,7 @@ src = (const Sint8 *) mmsrc; } + else { SDL_Log("Not aligned %s", __func__); } src += 15; dst += 15; /* adjust for any scalar finishing. */ @@ -940,6 +950,7 @@ src = (const Uint8 *) mmsrc; } + else { SDL_Log("Not aligned %s", __func__); } src += 15; dst += 15; /* adjust for any scalar finishing. */ @@ -984,6 +995,7 @@ i -= 8; src -= 8; dst -= 8; } } + else { SDL_Log("Not aligned %s", __func__); } src += 7; dst += 7; /* adjust for any scalar finishing. */ @@ -1029,6 +1041,7 @@ i -= 8; src -= 8; dst -= 8; } } + else { SDL_Log("Not aligned %s", __func__); } src += 7; dst += 7; /* adjust for any scalar finishing. */ @@ -1072,6 +1085,7 @@ } src = (const Sint32 *) mmsrc; } + else { SDL_Log("Not aligned %s", __func__); } /* Finish off any leftovers with scalar operations. */ while (i) { @@ -1126,6 +1140,7 @@ } dst = (Sint8 *) mmdst; } + else { SDL_Log("Not aligned %s", __func__); } /* Finish off any leftovers with scalar operations. */ while (i) { @@ -1189,6 +1204,7 @@ dst = (Uint8 *) mmdst; } + else { SDL_Log("Not aligned %s", __func__); } /* Finish off any leftovers with scalar operations. */ while (i) { @@ -1247,6 +1263,7 @@ } dst = (Sint16 *) mmdst; } + else { SDL_Log("Not aligned %s", __func__); } /* Finish off any leftovers with scalar operations. */ while (i) { @@ -1305,6 +1322,7 @@ } dst = (Uint16 *) mmdst; } + else { SDL_Log("Not aligned %s", __func__); } /* Finish off any leftovers with scalar operations. */ while (i) { @@ -1383,10 +1401,80 @@ +void prepare(SDL_AudioCVT *cvt, void *buf) +{ + int i; + memset(cvt, 0, sizeof(SDL_AudioCVT)); + cvt->buf = buf; + + + for (i = 0; i < 2048; i++) { + cvt->buf[i] = i; + } + + cvt->len_cvt = 512; + +} + +void dump(SDL_AudioCVT *cvt, char *str) +{ + int i; + for (i = 0; i < 2048; i++) { + SDL_Log("%s buf[%d] = %d", str, i, cvt->buf[i]); + } +} + void SDL_ChooseAudioConverters(void) { static SDL_bool converters_chosen = SDL_FALSE; + +#if 1 + + if (converters_chosen) + { + static int valid = 1; + if (valid) { + valid = 0; + + + const int alignment = 128; + + SDL_AudioCVT cvt; + SDL_AudioFormat format = 0; + Uint8 buffer[2048 + alignment]; + Uint8 *buf = (void *)(((size_t)buffer + alignment) & ~alignment); + +#define valid(fntype) \ + { \ + prepare(&cvt, buf); \ + SDL_Convert_##fntype(&cvt, format); \ + dump(&cvt, #fntype); \ + } \ + + + valid(S8_to_F32); + valid(U8_to_F32); + valid(S16_to_F32); + valid(U16_to_F32); + valid(S32_to_F32); + + valid(F32_to_S8); + valid(F32_to_U8); + valid(F32_to_S16); + valid(F32_to_U16); + valid(F32_to_S32); + + + } + + } + + +#endif + + + if (converters_chosen) { return; }