Script 'mail_helper' called by obssrc Hello community, here is the log from the commit of package FAudio for openSUSE:Factory checked in at 2022-08-10 17:14:11 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ Comparing /work/SRC/openSUSE:Factory/FAudio (Old) and /work/SRC/openSUSE:Factory/.FAudio.new.1521 (New) ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Package is "FAudio" Wed Aug 10 17:14:11 2022 rev:22 rq:994145 version:22.08 Changes: -------- --- /work/SRC/openSUSE:Factory/FAudio/FAudio.changes 2022-05-09 18:45:37.656314734 +0200 +++ /work/SRC/openSUSE:Factory/.FAudio.new.1521/FAudio.changes 2022-08-10 17:15:31.810057253 +0200 @@ -1,0 +2,11 @@ +Tue Aug 9 13:18:48 UTC 2022 - Aaron Stern <ukbeas...@protonmail.com> + +- Update to 22.08: + * FACT: Add support for WAVEBANKPREPARED notifications + * Included the matrix coefficient test program in matrix_defaults.inl, + for developers that need to replicate it + * FXReverb: Fix a spec violation in Process() that could corrupt reverb output + when enabled/disabled with precise timing + * FACT: Fill all fields for WAVESTOP notifications, avoiding uninitialized memory issues + +------------------------------------------------------------------- Old: ---- FAudio-22.05.tar.gz New: ---- FAudio-22.08.tar.gz ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ Other differences: ------------------ ++++++ FAudio.spec ++++++ --- /var/tmp/diff_new_pack.X5NphP/_old 2022-08-10 17:15:32.634059404 +0200 +++ /var/tmp/diff_new_pack.X5NphP/_new 2022-08-10 17:15:32.642059426 +0200 @@ -17,7 +17,7 @@ Name: FAudio -Version: 22.05 +Version: 22.08 Release: 0 Summary: A reimplementation of the XNA Game Studio libraries License: Zlib ++++++ FAudio-22.05.tar.gz -> FAudio-22.08.tar.gz ++++++ diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/FAudio-22.05/CMakeLists.txt new/FAudio-22.08/CMakeLists.txt --- old/FAudio-22.05/CMakeLists.txt 2022-05-01 17:42:13.000000000 +0200 +++ new/FAudio-22.08/CMakeLists.txt 2022-08-01 17:35:26.000000000 +0200 @@ -29,7 +29,7 @@ # Version SET(LIB_MAJOR_VERSION "0") SET(LIB_MINOR_VERSION "22") -SET(LIB_REVISION "05") +SET(LIB_REVISION "08") SET(LIB_VERSION "${LIB_MAJOR_VERSION}.${LIB_MINOR_VERSION}.${LIB_REVISION}") # Build Type diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/FAudio-22.05/csharp/FAudio.cs new/FAudio-22.08/csharp/FAudio.cs --- old/FAudio-22.05/csharp/FAudio.cs 2022-05-01 17:42:13.000000000 +0200 +++ new/FAudio-22.08/csharp/FAudio.cs 2022-08-01 17:35:26.000000000 +0200 @@ -79,7 +79,7 @@ public const uint FAUDIO_ABI_VERSION = 0; public const uint FAUDIO_MAJOR_VERSION = 22; - public const uint FAUDIO_MINOR_VERSION = 5; + public const uint FAUDIO_MINOR_VERSION = 8; public const uint FAUDIO_PATCH_VERSION = 0; public const uint FAUDIO_COMPILED_VERSION = ( diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/FAudio-22.05/include/FAudio.h new/FAudio-22.08/include/FAudio.h --- old/FAudio-22.05/include/FAudio.h 2022-05-01 17:42:13.000000000 +0200 +++ new/FAudio-22.08/include/FAudio.h 2022-08-01 17:35:26.000000000 +0200 @@ -485,7 +485,7 @@ #define FAUDIO_ABI_VERSION 0 #define FAUDIO_MAJOR_VERSION 22 -#define FAUDIO_MINOR_VERSION 5 +#define FAUDIO_MINOR_VERSION 8 #define FAUDIO_PATCH_VERSION 0 #define FAUDIO_COMPILED_VERSION ( \ diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/FAudio-22.05/src/FACT.c new/FAudio-22.08/src/FACT.c --- old/FAudio-22.05/src/FACT.c 2022-05-01 17:42:13.000000000 +0200 +++ new/FAudio-22.08/src/FACT.c 2022-08-01 17:35:26.000000000 +0200 @@ -433,9 +433,17 @@ uint8_t i; FACTCue *cue; LinkedList *list; + FACTNotification *note; FAudio_PlatformLockMutex(pEngine->apiLock); + while (pEngine->wb_notifications_list) + { + note = (FACTNotification*) pEngine->wb_notifications_list->entry; + pEngine->notificationCallback(note); + LinkedList_RemoveEntry(&pEngine->wb_notifications_list, note, pEngine->apiLock, pEngine->pFree); + } + list = pEngine->sbList; while (list != NULL) { @@ -495,6 +503,7 @@ uint32_t dwAllocAttributes, FACTWaveBank **ppWaveBank ) { + FACTNotification *note; uint32_t retval; FAudio_PlatformLockMutex(pEngine->apiLock); retval = FACT_INTERNAL_ParseWaveBank( @@ -507,6 +516,14 @@ 0, ppWaveBank ); + if (pEngine->notifications & NOTIFY_WAVEBANKPREPARED) + { + note = (FACTNotification*) pEngine->pMalloc(sizeof(FACTNotification)); + note->type = FACTNOTIFICATIONTYPE_WAVEBANKPREPARED; + note->waveBank.pWaveBank = *ppWaveBank; + note->pvContext = pEngine->wb_context; + LinkedList_AddEntry(&pEngine->wb_notifications_list, note, pEngine->apiLock, pEngine->pMalloc); + } FAudio_PlatformUnlockMutex(pEngine->apiLock); return retval; } @@ -516,6 +533,7 @@ const FACTStreamingParameters *pParms, FACTWaveBank **ppWaveBank ) { + FACTNotification *note; uint32_t retval, packetSize; FAudio_PlatformLockMutex(pEngine->apiLock); if ( pEngine->pReadFile == FACT_INTERNAL_DefaultReadFile && @@ -538,6 +556,14 @@ 1, ppWaveBank ); + if (pEngine->notifications & NOTIFY_WAVEBANKPREPARED) + { + note = (FACTNotification*) pEngine->pMalloc(sizeof(FACTNotification)); + note->type = FACTNOTIFICATIONTYPE_WAVEBANKPREPARED; + note->waveBank.pWaveBank = *ppWaveBank; + note->pvContext = pEngine->wb_context; + LinkedList_AddEntry(&pEngine->wb_notifications_list, note, pEngine->apiLock, pEngine->pMalloc); + } FAudio_PlatformUnlockMutex(pEngine->apiLock); return retval; } @@ -2175,11 +2201,13 @@ { FACTNotification note; note.type = FACTNOTIFICATIONTYPE_WAVESTOP; + note.wave.cueIndex = pWave->parentCue->index; + note.wave.pCue = pWave->parentCue; + note.wave.pSoundBank = pWave->parentCue->parentBank; note.wave.pWave = pWave; - if (pWave->parentBank->parentEngine->notifications & NOTIFY_WAVESTOP) - { - note.pvContext = pWave->parentBank->parentEngine->wave_context; - } + note.wave.pWaveBank = pWave->parentBank; + note.pvContext = pWave->parentBank->parentEngine->wave_context; + pWave->parentBank->parentEngine->notificationCallback(¬e); } @@ -2735,6 +2763,8 @@ } } + FACT_INTERNAL_SendCueNotification(pCue, NOTIFY_CUESTOP, FACTNOTIFICATIONTYPE_CUESTOP); + FAudio_PlatformUnlockMutex(pCue->parentBank->parentEngine->apiLock); return 0; } diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/FAudio-22.05/src/FACT_internal.h new/FAudio-22.08/src/FACT_internal.h --- old/FAudio-22.05/src/FACT_internal.h 2022-05-01 17:42:13.000000000 +0200 +++ new/FAudio-22.08/src/FACT_internal.h 2022-08-01 17:35:26.000000000 +0200 @@ -440,6 +440,7 @@ void *sb_context; void *wb_context; void *wave_context; + LinkedList *wb_notifications_list; /* Settings handle */ void *settings; diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/FAudio-22.05/src/FAudioFX_reverb.c new/FAudio-22.08/src/FAudioFX_reverb.c --- old/FAudio-22.05/src/FAudioFX_reverb.c 2022-05-01 17:42:13.000000000 +0200 +++ new/FAudio-22.08/src/FAudioFX_reverb.c 2022-08-01 17:35:26.000000000 +0200 @@ -1015,35 +1015,35 @@ size_t sample_count ) { const float *in_end = samples_in + sample_count; - float in, in_ratio, early, late[2]; + float in, early, late[2]; float squared_sum = 0; while (samples_in < in_end) { /* Input - Combine 2 channels into 1 */ in = (samples_in[0] + samples_in[1]) / 2.0f; - in_ratio = in * reverb->dry_ratio; - samples_in += 2; /* Early Reflections */ early = DspReverb_INTERNAL_ProcessEarly(reverb, in); /* Reverberation with Wet/Dry Mix */ - late[0] = DspReverb_INTERNAL_ProcessChannel( + late[0] = (DspReverb_INTERNAL_ProcessChannel( reverb, &reverb->channel[0], early - ); + ) * reverb->wet_ratio) + samples_in[0] * reverb->dry_ratio; late[1] = (DspReverb_INTERNAL_ProcessChannel( reverb, &reverb->channel[1], early - ) * reverb->wet_ratio) + in_ratio; + ) * reverb->wet_ratio) + samples_in[1] * reverb->dry_ratio; squared_sum += (late[0] * late[0]) + (late[1] * late[1]); /* Output */ *samples_out++ = late[0]; *samples_out++ = late[1]; + + samples_in += 2; } return squared_sum; @@ -1407,6 +1407,22 @@ fapo->base.pMalloc ); + /* Initialize the effect to a default setting */ + if (fapo->apiVersion == 9) + { + DspReverb_SetParameters9( + &fapo->reverb, + (FAudioFXReverbParameters9*) fapo->base.m_pParameterBlocks + ); + } + else + { + DspReverb_SetParameters( + &fapo->reverb, + (FAudioFXReverbParameters*) fapo->base.m_pParameterBlocks + ); + } + /* Call parent to do basic validation */ return FAPOBase_LockForProcess( &fapo->base, @@ -1487,6 +1503,24 @@ FAudioFXReverbParameters *params; uint8_t update_params = FAPOBase_ParametersChanged(&fapo->base); float total; + + params = (FAudioFXReverbParameters*) FAPOBase_BeginProcess(&fapo->base); + + /* Update parameters before doing anything else */ + if (update_params) + { + if (fapo->apiVersion == 9) + { + DspReverb_SetParameters9( + &fapo->reverb, + (FAudioFXReverbParameters9*) params + ); + } + else + { + DspReverb_SetParameters(&fapo->reverb, params); + } + } /* Handle disabled filter */ if (IsEnabled == 0) @@ -1503,6 +1537,7 @@ ); } + FAPOBase_EndProcess(&fapo->base); return; } @@ -1516,24 +1551,6 @@ ); } - params = (FAudioFXReverbParameters*) FAPOBase_BeginProcess(&fapo->base); - - /* Update parameters */ - if (update_params) - { - if (fapo->apiVersion == 9) - { - DspReverb_SetParameters9( - &fapo->reverb, - (FAudioFXReverbParameters9*) params - ); - } - else - { - DspReverb_SetParameters(&fapo->reverb, params); - } - } - /* Run reverb effect */ #define PROCESS(pin, pout) \ DspReverb_INTERNAL_Process_##pin##_to_##pout( \ @@ -1666,16 +1683,6 @@ sizeof(FAudioFXReverbParameters) * 3 ); result->apiVersion = 7; - #define INITPARAMS(offset) \ - FAudio_memcpy( \ - params + sizeof(FAudioFXReverbParameters) * offset, \ - &fxdefault, \ - sizeof(FAudioFXReverbParameters) \ - ); - INITPARAMS(0) - INITPARAMS(1) - INITPARAMS(2) - #undef INITPARAMS /* Initialize... */ FAudio_memcpy( @@ -1711,6 +1718,13 @@ result->base.Destructor = FAudioFXReverb_Free; #undef ASSIGN_VT + /* Prepare the default parameters */ + result->base.base.Initialize( + result, + &fxdefault, + sizeof(FAudioFXReverbParameters) + ); + /* Finally. */ *ppApo = &result->base.base; return 0; @@ -1839,16 +1853,6 @@ sizeof(FAudioFXReverbParameters9) * 3 ); result->apiVersion = 9; - #define INITPARAMS(offset) \ - FAudio_memcpy( \ - params + sizeof(FAudioFXReverbParameters9) * offset, \ - &fxdefault, \ - sizeof(FAudioFXReverbParameters9) \ - ); - INITPARAMS(0) - INITPARAMS(1) - INITPARAMS(2) - #undef INITPARAMS /* Initialize... */ FAudio_memcpy( @@ -1884,6 +1888,13 @@ result->base.Destructor = FAudioFXReverb_Free; #undef ASSIGN_VT + /* Prepare the default parameters */ + result->base.base.Initialize( + result, + &fxdefault, + sizeof(FAudioFXReverbParameters9) + ); + /* Finally. */ *ppApo = &result->base.base; return 0; diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/FAudio-22.05/src/FAudio_internal.c new/FAudio-22.08/src/FAudio_internal.c --- old/FAudio-22.05/src/FAudio_internal.c 2022-05-01 17:42:13.000000000 +0200 +++ new/FAudio-22.08/src/FAudio_internal.c 2022-08-01 17:35:26.000000000 +0200 @@ -1862,7 +1862,7 @@ int32_t midOffset; /* PCM block cache */ - int16_t blockCache[1012]; /* Max block size */ + int16_t *blockCache; /* Block size */ uint32_t bsize = ((FAudioADPCMWaveFormat*) voice->src.format)->wSamplesPerBlock; @@ -1879,6 +1879,7 @@ midOffset = (voice->src.curBufferOffset % bsize); /* Read in each block directly to the decode cache */ + blockCache = (int16_t*) FAudio_alloca(bsize * sizeof(int16_t)); while (done < samples) { copy = FAudio_min(samples - done, bsize - midOffset); @@ -1896,6 +1897,7 @@ done += copy; midOffset = 0; } + FAudio_dealloca(blockCache); LOG_FUNC_EXIT(voice->audio) } @@ -1913,7 +1915,7 @@ int32_t midOffset; /* PCM block cache */ - int16_t blockCache[2024]; /* Max block size */ + int16_t *blockCache; /* Align, block size */ uint32_t bsize = ((FAudioADPCMWaveFormat*) voice->src.format)->wSamplesPerBlock; @@ -1930,6 +1932,7 @@ midOffset = (voice->src.curBufferOffset % bsize); /* Read in each block directly to the decode cache */ + blockCache = (int16_t*) FAudio_alloca(bsize * 2 * sizeof(int16_t)); while (done < samples) { copy = FAudio_min(samples - done, bsize - midOffset); @@ -1947,6 +1950,7 @@ done += copy; midOffset = 0; } + FAudio_dealloca(blockCache); LOG_FUNC_EXIT(voice->audio) } diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/FAudio-22.05/src/FAudio_internal_simd.c new/FAudio-22.08/src/FAudio_internal_simd.c --- old/FAudio-22.05/src/FAudio_internal_simd.c 2022-05-01 17:42:13.000000000 +0200 +++ new/FAudio-22.08/src/FAudio_internal_simd.c 2022-08-01 17:35:26.000000000 +0200 @@ -285,10 +285,10 @@ const uint16x8_t uint16hi = vmovl_u8(vget_high_u8(bytes)); /* convert top 8 bytes to 8 uint16 */ const uint16x8_t uint16lo = vmovl_u8(vget_low_u8(bytes)); /* convert bottom 8 bytes to 8 uint16 */ /* split uint16 to two uint32, then convert to float, then multiply to normalize, subtract to adjust for sign, store. */ - vst1q_f32(dst, vmlaq_f32(negone, vcvtq_f32_u32(vmovl_u16(vget_low_u16(uint16hi))), divby128)); - vst1q_f32(dst+4, vmlaq_f32(negone, vcvtq_f32_u32(vmovl_u16(vget_high_u16(uint16hi))), divby128)); - vst1q_f32(dst+8, vmlaq_f32(negone, vcvtq_f32_u32(vmovl_u16(vget_low_u16(uint16lo))), divby128)); - vst1q_f32(dst+12, vmlaq_f32(negone, vcvtq_f32_u32(vmovl_u16(vget_high_u16(uint16lo))), divby128)); + vst1q_f32(dst, vmlaq_f32(negone, vcvtq_f32_u32(vmovl_u16(vget_low_u16(uint16lo))), divby128)); + vst1q_f32(dst+4, vmlaq_f32(negone, vcvtq_f32_u32(vmovl_u16(vget_high_u16(uint16lo))), divby128)); + vst1q_f32(dst+8, vmlaq_f32(negone, vcvtq_f32_u32(vmovl_u16(vget_low_u16(uint16hi))), divby128)); + vst1q_f32(dst+12, vmlaq_f32(negone, vcvtq_f32_u32(vmovl_u16(vget_high_u16(uint16hi))), divby128)); i -= 16; mmsrc -= 16; dst -= 16; } diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/FAudio-22.05/src/FAudio_platform_sdl2.c new/FAudio-22.08/src/FAudio_platform_sdl2.c --- old/FAudio-22.05/src/FAudio_platform_sdl2.c 2022-05-01 17:42:13.000000000 +0200 +++ new/FAudio-22.08/src/FAudio_platform_sdl2.c 2022-08-01 17:35:26.000000000 +0200 @@ -82,6 +82,7 @@ SDL_AudioDeviceID device; SDL_AudioSpec want, have; const char *driver; + SDL_version version; int changes = 0; FAudio_assert(mixFormat != NULL); @@ -119,7 +120,8 @@ * -flibit */ driver = SDL_GetCurrentAudioDriver(); - if (SDL_strcmp(driver, "pulseaudio") == 0) + SDL_GetVersion(&version); + if (version.minor < 23 && SDL_strcmp(driver, "pulseaudio") == 0) { want.samples *= 2; changes = SDL_AUDIO_ALLOW_SAMPLES_CHANGE; @@ -375,6 +377,26 @@ channels = 2; } + /* FIXME: SDL bug! + * SDL_audio.c enforces specific channel counts for all platforms, + * even if they support channel counts that could make sense (for + * example, 2.1 is not supported), so we have to adjust it here. + * + * Note that we don't check > 8 since we do that in the spec check, + * meaning only the environment variable can give us this and that + * needs to break for validation purposes. + * + * -flibit + */ + if (channels == 3) + { + channels = 2; + } + if (channels == 5) + { + channels = 4; + } + /* Write the format, finally. */ WriteWaveFormatExtensible( &details->OutputFormat, diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/FAudio-22.05/src/FAudio_platform_win32.c new/FAudio-22.08/src/FAudio_platform_win32.c --- old/FAudio-22.05/src/FAudio_platform_win32.c 2022-05-01 17:42:13.000000000 +0200 +++ new/FAudio-22.08/src/FAudio_platform_win32.c 2022-08-01 17:35:26.000000000 +0200 @@ -501,6 +501,10 @@ sizeof(GUID) ); } + else + { + details->OutputFormat.dwChannelMask = GetMask(format->nChannels); + } CoTaskMemFree(format); @@ -578,7 +582,7 @@ void FAudio_PlatformWaitThread(FAudioThread thread, int32_t *retval) { WaitForSingleObject(thread, INFINITE); - GetExitCodeThread(thread, (DWORD *)retval); + if (retval != NULL) GetExitCodeThread(thread, (DWORD *)retval); } void FAudio_PlatformThreadPriority(FAudioThreadPriority priority) diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/FAudio-22.05/src/matrix_defaults.inl new/FAudio-22.08/src/matrix_defaults.inl --- old/FAudio-22.05/src/matrix_defaults.inl 2022-05-01 17:42:13.000000000 +0200 +++ new/FAudio-22.08/src/matrix_defaults.inl 2022-08-01 17:35:26.000000000 +0200 @@ -1,6 +1,68 @@ /* This was generated by making 8 sources and 8 submixes, then assigning each * submix to each voice and dumping the output matrix. Terrible, but it worked! */ +/* +int main(int argc, char **argv) +{ + CoInitialize(NULL); + + IXAudio2 *engine; + XAudio2Create(&engine); + + IXAudio2MasteringVoice *master; + engine->CreateMasteringVoice(&master); + + FILE *fileOut = fopen("matrix_defaults.inl", "w"); + for (int srcChans = 1; srcChans < 9; srcChans += 1) + { + fprintf(fileOut, "{\n"); + for (int dstChans = 1; dstChans < 9; dstChans += 1) + { + IXAudio2SubmixVoice *submix; + engine->CreateSubmixVoice(&submix, dstChans, 48000); + + XAUDIO2_SEND_DESCRIPTOR sendDesc; + sendDesc.Flags = 0; + sendDesc.pOutputVoice = submix; + + XAUDIO2_VOICE_SENDS sends; + sends.SendCount = 1; + sends.pSends = &sendDesc; + + WAVEFORMATEX fmt; + fmt.wFormatTag = 1; + fmt.nChannels = srcChans; + fmt.nSamplesPerSec = 48000; + fmt.wBitsPerSample = 16; + fmt.nBlockAlign = srcChans * (fmt.wBitsPerSample / 8); + fmt.nAvgBytesPerSec = fmt.nBlockAlign * fmt.nSamplesPerSec; + fmt.cbSize = 0; + + IXAudio2SourceVoice *source; + engine->CreateSourceVoice(&source, &fmt, 0, 2.0f, NULL, &sends); + + float matrix[8 * 8]; + source->GetOutputMatrix(submix, srcChans, dstChans, matrix); + fprintf(fileOut, "\t{ "); + for (int i = 0; i < srcChans * dstChans; i += 1) + { + fprintf(fileOut, "%.9f%s ", matrix[i], (i == ((srcChans * dstChans) - 1)) ? "" : ","); + } + fprintf(fileOut, "}%s\n", (dstChans == 8) ? "" : ","); + + source->DestroyVoice(); + submix->DestroyVoice(); + } + fprintf(fileOut, "}%s\n", (srcChans == 8) ? "" : ","); + } + fclose(fileOut); + + master->DestroyVoice(); + engine->Release(); + CoUninitialize(); + return 0; +} +*/ { /* 1 x 1 */ { 1.000000000f }, ++++++ faudio-older-sdl2.patch ++++++ --- /var/tmp/diff_new_pack.X5NphP/_old 2022-08-10 17:15:32.854059978 +0200 +++ /var/tmp/diff_new_pack.X5NphP/_new 2022-08-10 17:15:32.858059989 +0200 @@ -20,11 +20,12 @@ --- a/src/FAudio_internal.h +++ b/src/FAudio_internal.h -@@ -134,7 +134,6 @@ +@@ -141,7 +141,7 @@ #define FAudio_floor(x) SDL_floor(x) #define FAudio_abs(x) SDL_abs(x) #define FAudio_ldexp(v, e) SDL_scalbn(v, e) -#define FAudio_exp(x) SDL_exp(x) ++#define FAudio_exp(x) SDL_log(x) #define FAudio_cosf(x) SDL_cosf(x) #define FAudio_sinf(x) SDL_sinf(x)