From a720026ba1c4325ac5c37a00f558875f8b0adac3 Mon Sep 17 00:00:00 2001 From: Tatjam Date: Sun, 1 Mar 2020 23:43:03 +0100 Subject: [PATCH] First concept --- 7DRL.vcxproj | 103 +- 7DRL.vcxproj.filters | 260 + SDL2.dll | Bin 0 -> 1334272 bytes click.wav | Bin 0 -> 68712 bytes libtcod.dll | Bin 0 -> 2351616 bytes ping.wav | Bin 0 -> 555652 bytes rc11.png | Bin 0 -> 4783 bytes src/Drawing.h | 114 + src/Help.h | 27 + src/Main.cpp | 49 + src/Status.cpp | 27 + src/Status.h | 17 + src/defines.h | 7 + src/flight/FlightMap.cpp | 100 + src/flight/FlightMap.h | 22 + src/flight/FlightScene.cpp | 115 + src/flight/FlightScene.h | 52 + src/flight/Sonar.cpp | 127 + src/flight/Sonar.h | 28 + src/soloud/include/soloud.h | 546 ++ src/soloud/include/soloud_audiosource.h | 315 + src/soloud/include/soloud_bassboostfilter.h | 63 + .../include/soloud_biquadresonantfilter.h | 91 + src/soloud/include/soloud_bus.h | 91 + src/soloud/include/soloud_c.h | 625 ++ src/soloud/include/soloud_dcremovalfilter.h | 58 + src/soloud/include/soloud_echofilter.h | 59 + src/soloud/include/soloud_error.h | 41 + src/soloud/include/soloud_fader.h | 63 + src/soloud/include/soloud_fft.h | 51 + src/soloud/include/soloud_fftfilter.h | 57 + src/soloud/include/soloud_file.h | 90 + src/soloud/include/soloud_file_hack_off.h | 35 + src/soloud/include/soloud_file_hack_on.h | 58 + src/soloud/include/soloud_filter.h | 64 + src/soloud/include/soloud_flangerfilter.h | 65 + src/soloud/include/soloud_internal.h | 121 + src/soloud/include/soloud_lofifilter.h | 75 + src/soloud/include/soloud_monotone.h | 116 + src/soloud/include/soloud_openmpt.h | 62 + src/soloud/include/soloud_queue.h | 72 + src/soloud/include/soloud_robotizefilter.h | 60 + src/soloud/include/soloud_sfxr.h | 169 + src/soloud/include/soloud_speech.h | 79 + src/soloud/include/soloud_tedsid.h | 74 + src/soloud/include/soloud_thread.h | 83 + src/soloud/include/soloud_vic.h | 108 + src/soloud/include/soloud_vizsn.h | 82 + src/soloud/include/soloud_wav.h | 74 + src/soloud/include/soloud_waveshaperfilter.h | 54 + src/soloud/include/soloud_wavstream.h | 106 + .../audiosource/monotone/soloud_monotone.cpp | 476 + .../audiosource/openmpt/soloud_openmpt.cpp | 151 + .../audiosource/openmpt/soloud_openmpt_dll.c | 132 + .../src/audiosource/sfxr/soloud_sfxr.cpp | 633 ++ .../src/audiosource/speech/Elements.def | 1659 ++++ src/soloud/src/audiosource/speech/darray.cpp | 70 + src/soloud/src/audiosource/speech/darray.h | 22 + src/soloud/src/audiosource/speech/klatt.cpp | 1073 +++ src/soloud/src/audiosource/speech/klatt.h | 153 + .../src/audiosource/speech/legal_readme.txt | 38 + .../src/audiosource/speech/resonator.cpp | 74 + src/soloud/src/audiosource/speech/resonator.h | 44 + .../src/audiosource/speech/soloud_speech.cpp | 148 + src/soloud/src/audiosource/speech/tts.cpp | 1421 +++ src/soloud/src/audiosource/speech/tts.h | 5 + src/soloud/src/audiosource/tedsid/sid.cpp | 623 ++ src/soloud/src/audiosource/tedsid/sid.h | 180 + .../src/audiosource/tedsid/soloud_tedsid.cpp | 256 + src/soloud/src/audiosource/tedsid/ted.cpp | 236 + src/soloud/src/audiosource/tedsid/ted.h | 44 + src/soloud/src/audiosource/vic/soloud_vic.cpp | 168 + .../src/audiosource/vizsn/soloud_vizsn.cpp | 533 ++ src/soloud/src/audiosource/wav/dr_flac.h | 8154 +++++++++++++++++ src/soloud/src/audiosource/wav/dr_impl.cpp | 13 + src/soloud/src/audiosource/wav/dr_mp3.h | 3200 +++++++ src/soloud/src/audiosource/wav/dr_wav.h | 4254 +++++++++ src/soloud/src/audiosource/wav/soloud_wav.cpp | 396 + .../src/audiosource/wav/soloud_wavstream.cpp | 658 ++ src/soloud/src/audiosource/wav/stb_vorbis.c | 5465 +++++++++++ src/soloud/src/audiosource/wav/stb_vorbis.h | 2 + src/soloud/src/backend/alsa/soloud_alsa.cpp | 168 + .../backend/coreaudio/soloud_coreaudio.cpp | 127 + src/soloud/src/backend/null/soloud_null.cpp | 57 + .../src/backend/opensles/soloud_opensles.cpp | 301 + src/soloud/src/backend/oss/soloud_oss.cpp | 179 + src/soloud/src/backend/sdl/soloud_sdl1.cpp | 102 + src/soloud/src/backend/sdl/soloud_sdl1_dll.c | 128 + src/soloud/src/backend/sdl/soloud_sdl2.cpp | 133 + src/soloud/src/backend/sdl/soloud_sdl2_dll.c | 160 + .../sdl2_static/soloud_sdl2_static.cpp | 111 + .../backend/sdl_static/soloud_sdl_static.cpp | 89 + .../src/backend/wasapi/soloud_wasapi.cpp | 203 + src/soloud/src/backend/winmm/soloud_winmm.cpp | 174 + .../src/backend/xaudio2/soloud_xaudio2.cpp | 247 + src/soloud/src/c_api/soloud.def | 395 + src/soloud/src/c_api/soloud_c.cpp | 2383 +++++ src/soloud/src/core/soloud.cpp | 2005 ++++ src/soloud/src/core/soloud_audiosource.cpp | 330 + src/soloud/src/core/soloud_bus.cpp | 318 + src/soloud/src/core/soloud_core_3d.cpp | 631 ++ src/soloud/src/core/soloud_core_basicops.cpp | 206 + src/soloud/src/core/soloud_core_faderops.cpp | 156 + src/soloud/src/core/soloud_core_filterops.cpp | 156 + src/soloud/src/core/soloud_core_getters.cpp | 378 + src/soloud/src/core/soloud_core_setters.cpp | 223 + .../src/core/soloud_core_voicegroup.cpp | 255 + src/soloud/src/core/soloud_core_voiceops.cpp | 153 + src/soloud/src/core/soloud_fader.cpp | 94 + src/soloud/src/core/soloud_fft.cpp | 2474 +++++ src/soloud/src/core/soloud_fft_lut.cpp | 339 + src/soloud/src/core/soloud_file.cpp | 305 + src/soloud/src/core/soloud_filter.cpp | 142 + src/soloud/src/core/soloud_queue.cpp | 176 + src/soloud/src/core/soloud_thread.cpp | 310 + .../src/filter/soloud_bassboostfilter.cpp | 65 + .../filter/soloud_biquadresonantfilter.cpp | 182 + .../src/filter/soloud_dcremovalfilter.cpp | 110 + src/soloud/src/filter/soloud_echofilter.cpp | 106 + src/soloud/src/filter/soloud_fftfilter.cpp | 143 + .../src/filter/soloud_flangerfilter.cpp | 109 + src/soloud/src/filter/soloud_lofifilter.cpp | 95 + .../src/filter/soloud_robotizefilter.cpp | 56 + .../src/filter/soloud_waveshaperfilter.cpp | 87 + terminal.png | Bin 0 -> 3429 bytes underwater.wav | Bin 0 -> 1384684 bytes 126 files changed, 49596 insertions(+), 1 deletion(-) create mode 100644 SDL2.dll create mode 100644 click.wav create mode 100644 libtcod.dll create mode 100644 ping.wav create mode 100644 rc11.png create mode 100644 src/Drawing.h create mode 100644 src/Help.h create mode 100644 src/Main.cpp create mode 100644 src/Status.cpp create mode 100644 src/Status.h create mode 100644 src/defines.h create mode 100644 src/flight/FlightMap.cpp create mode 100644 src/flight/FlightMap.h create mode 100644 src/flight/FlightScene.cpp create mode 100644 src/flight/FlightScene.h create mode 100644 src/flight/Sonar.cpp create mode 100644 src/flight/Sonar.h create mode 100644 src/soloud/include/soloud.h create mode 100644 src/soloud/include/soloud_audiosource.h create mode 100644 src/soloud/include/soloud_bassboostfilter.h create mode 100644 src/soloud/include/soloud_biquadresonantfilter.h create mode 100644 src/soloud/include/soloud_bus.h create mode 100644 src/soloud/include/soloud_c.h create mode 100644 src/soloud/include/soloud_dcremovalfilter.h create mode 100644 src/soloud/include/soloud_echofilter.h create mode 100644 src/soloud/include/soloud_error.h create mode 100644 src/soloud/include/soloud_fader.h create mode 100644 src/soloud/include/soloud_fft.h create mode 100644 src/soloud/include/soloud_fftfilter.h create mode 100644 src/soloud/include/soloud_file.h create mode 100644 src/soloud/include/soloud_file_hack_off.h create mode 100644 src/soloud/include/soloud_file_hack_on.h create mode 100644 src/soloud/include/soloud_filter.h create mode 100644 src/soloud/include/soloud_flangerfilter.h create mode 100644 src/soloud/include/soloud_internal.h create mode 100644 src/soloud/include/soloud_lofifilter.h create mode 100644 src/soloud/include/soloud_monotone.h create mode 100644 src/soloud/include/soloud_openmpt.h create mode 100644 src/soloud/include/soloud_queue.h create mode 100644 src/soloud/include/soloud_robotizefilter.h create mode 100644 src/soloud/include/soloud_sfxr.h create mode 100644 src/soloud/include/soloud_speech.h create mode 100644 src/soloud/include/soloud_tedsid.h create mode 100644 src/soloud/include/soloud_thread.h create mode 100644 src/soloud/include/soloud_vic.h create mode 100644 src/soloud/include/soloud_vizsn.h create mode 100644 src/soloud/include/soloud_wav.h create mode 100644 src/soloud/include/soloud_waveshaperfilter.h create mode 100644 src/soloud/include/soloud_wavstream.h create mode 100644 src/soloud/src/audiosource/monotone/soloud_monotone.cpp create mode 100644 src/soloud/src/audiosource/openmpt/soloud_openmpt.cpp create mode 100644 src/soloud/src/audiosource/openmpt/soloud_openmpt_dll.c create mode 100644 src/soloud/src/audiosource/sfxr/soloud_sfxr.cpp create mode 100644 src/soloud/src/audiosource/speech/Elements.def create mode 100644 src/soloud/src/audiosource/speech/darray.cpp create mode 100644 src/soloud/src/audiosource/speech/darray.h create mode 100644 src/soloud/src/audiosource/speech/klatt.cpp create mode 100644 src/soloud/src/audiosource/speech/klatt.h create mode 100644 src/soloud/src/audiosource/speech/legal_readme.txt create mode 100644 src/soloud/src/audiosource/speech/resonator.cpp create mode 100644 src/soloud/src/audiosource/speech/resonator.h create mode 100644 src/soloud/src/audiosource/speech/soloud_speech.cpp create mode 100644 src/soloud/src/audiosource/speech/tts.cpp create mode 100644 src/soloud/src/audiosource/speech/tts.h create mode 100644 src/soloud/src/audiosource/tedsid/sid.cpp create mode 100644 src/soloud/src/audiosource/tedsid/sid.h create mode 100644 src/soloud/src/audiosource/tedsid/soloud_tedsid.cpp create mode 100644 src/soloud/src/audiosource/tedsid/ted.cpp create mode 100644 src/soloud/src/audiosource/tedsid/ted.h create mode 100644 src/soloud/src/audiosource/vic/soloud_vic.cpp create mode 100644 src/soloud/src/audiosource/vizsn/soloud_vizsn.cpp create mode 100644 src/soloud/src/audiosource/wav/dr_flac.h create mode 100644 src/soloud/src/audiosource/wav/dr_impl.cpp create mode 100644 src/soloud/src/audiosource/wav/dr_mp3.h create mode 100644 src/soloud/src/audiosource/wav/dr_wav.h create mode 100644 src/soloud/src/audiosource/wav/soloud_wav.cpp create mode 100644 src/soloud/src/audiosource/wav/soloud_wavstream.cpp create mode 100644 src/soloud/src/audiosource/wav/stb_vorbis.c create mode 100644 src/soloud/src/audiosource/wav/stb_vorbis.h create mode 100644 src/soloud/src/backend/alsa/soloud_alsa.cpp create mode 100644 src/soloud/src/backend/coreaudio/soloud_coreaudio.cpp create mode 100644 src/soloud/src/backend/null/soloud_null.cpp create mode 100644 src/soloud/src/backend/opensles/soloud_opensles.cpp create mode 100644 src/soloud/src/backend/oss/soloud_oss.cpp create mode 100644 src/soloud/src/backend/sdl/soloud_sdl1.cpp create mode 100644 src/soloud/src/backend/sdl/soloud_sdl1_dll.c create mode 100644 src/soloud/src/backend/sdl/soloud_sdl2.cpp create mode 100644 src/soloud/src/backend/sdl/soloud_sdl2_dll.c create mode 100644 src/soloud/src/backend/sdl2_static/soloud_sdl2_static.cpp create mode 100644 src/soloud/src/backend/sdl_static/soloud_sdl_static.cpp create mode 100644 src/soloud/src/backend/wasapi/soloud_wasapi.cpp create mode 100644 src/soloud/src/backend/winmm/soloud_winmm.cpp create mode 100644 src/soloud/src/backend/xaudio2/soloud_xaudio2.cpp create mode 100644 src/soloud/src/c_api/soloud.def create mode 100644 src/soloud/src/c_api/soloud_c.cpp create mode 100644 src/soloud/src/core/soloud.cpp create mode 100644 src/soloud/src/core/soloud_audiosource.cpp create mode 100644 src/soloud/src/core/soloud_bus.cpp create mode 100644 src/soloud/src/core/soloud_core_3d.cpp create mode 100644 src/soloud/src/core/soloud_core_basicops.cpp create mode 100644 src/soloud/src/core/soloud_core_faderops.cpp create mode 100644 src/soloud/src/core/soloud_core_filterops.cpp create mode 100644 src/soloud/src/core/soloud_core_getters.cpp create mode 100644 src/soloud/src/core/soloud_core_setters.cpp create mode 100644 src/soloud/src/core/soloud_core_voicegroup.cpp create mode 100644 src/soloud/src/core/soloud_core_voiceops.cpp create mode 100644 src/soloud/src/core/soloud_fader.cpp create mode 100644 src/soloud/src/core/soloud_fft.cpp create mode 100644 src/soloud/src/core/soloud_fft_lut.cpp create mode 100644 src/soloud/src/core/soloud_file.cpp create mode 100644 src/soloud/src/core/soloud_filter.cpp create mode 100644 src/soloud/src/core/soloud_queue.cpp create mode 100644 src/soloud/src/core/soloud_thread.cpp create mode 100644 src/soloud/src/filter/soloud_bassboostfilter.cpp create mode 100644 src/soloud/src/filter/soloud_biquadresonantfilter.cpp create mode 100644 src/soloud/src/filter/soloud_dcremovalfilter.cpp create mode 100644 src/soloud/src/filter/soloud_echofilter.cpp create mode 100644 src/soloud/src/filter/soloud_fftfilter.cpp create mode 100644 src/soloud/src/filter/soloud_flangerfilter.cpp create mode 100644 src/soloud/src/filter/soloud_lofifilter.cpp create mode 100644 src/soloud/src/filter/soloud_robotizefilter.cpp create mode 100644 src/soloud/src/filter/soloud_waveshaperfilter.cpp create mode 100644 terminal.png create mode 100644 underwater.wav diff --git a/7DRL.vcxproj b/7DRL.vcxproj index 667cf56..72d71c6 100644 --- a/7DRL.vcxproj +++ b/7DRL.vcxproj @@ -69,7 +69,9 @@ - + + $(IncludePath) + Level3 @@ -84,7 +86,13 @@ Disabled true true + C:\Users\Usuario\Source\Repos\7DRL\src\soloud\include;D:\Programming\SDL2\include;D:\Programming\libtcod-1.15.1-x86_64-msvc\include + WITH_SDL2;_CRT_SECURE_NO_WARNINGS;_MBCS;%(PreprocessorDefinitions) + + SDL2.lib;libtcod.lib;kernel32.lib;user32.lib;gdi32.lib;winspool.lib;comdlg32.lib;advapi32.lib;shell32.lib;ole32.lib;oleaut32.lib;uuid.lib;odbc32.lib;odbccp32.lib;%(AdditionalDependencies) + D:\Programming\SDL2\lib\x64;D:\Programming\libtcod-1.15.1-x86_64-msvc + @@ -108,13 +116,106 @@ true true true + D:\Programming\libtcod-1.15.1-x86_64-msvc\include; true true + D:\Programming\SDL2\lib\x64;D:\Programming\libtcod-1.15.1-x86_64-msvc;%(AdditionalLibraryDirectories) + SDL2.lib;libtcod.lib;kernel32.lib;user32.lib;gdi32.lib;winspool.lib;comdlg32.lib;advapi32.lib;shell32.lib;ole32.lib;oleaut32.lib;uuid.lib;odbc32.lib;odbccp32.lib;%(AdditionalDependencies) + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/7DRL.vcxproj.filters b/7DRL.vcxproj.filters index 4863ddb..78dd21e 100644 --- a/7DRL.vcxproj.filters +++ b/7DRL.vcxproj.filters @@ -14,4 +14,264 @@ rc;ico;cur;bmp;dlg;rc2;rct;bin;rgs;gif;jpg;jpeg;jpe;resx;tiff;tif;png;wav;mfcribbon-ms + + + Source Files + + + Source Files + + + Source Files + + + Source Files + + + Source Files + + + Source Files + + + Source Files + + + Source Files + + + Source Files + + + Source Files + + + Source Files + + + Source Files + + + Source Files + + + Source Files + + + Source Files + + + Source Files + + + Source Files + + + Source Files + + + Source Files + + + Source Files + + + Source Files + + + Source Files + + + Source Files + + + Source Files + + + Source Files + + + Source Files + + + Source Files + + + Source Files + + + Source Files + + + Source Files + + + Source Files + + + Source Files + + + Source Files + + + Source Files + + + Source Files + + + Source Files + + + Source Files + + + Source Files + + + Source Files + + + Source Files + + + Source Files + + + Source Files + + + Source Files + + + Source Files + + + Source Files + + + Source Files + + + Source Files + + + Source Files + + + Source Files + + + Source Files + + + Source Files + + + Source Files + + + Source Files + + + Source Files + + + Source Files + + + Source Files + + + Source Files + + + Source Files + + + Source Files + + + Source Files + + + Source Files + + + Source Files + + + Source Files + + + Source Files + + + Source Files + + + + + + + Source Files + + + Source Files + + + + + Header Files + + + Header Files + + + Header Files + + + Header Files + + + Header Files + + + Header Files + + + Header Files + + + Header Files + + + Header Files + + + Header Files + + + Header Files + + + Header Files + + + Header Files + + + Header Files + + + Header Files + + + Header Files + + + Header Files + + \ No newline at end of file diff --git a/SDL2.dll b/SDL2.dll new file mode 100644 index 0000000000000000000000000000000000000000..6cf858caae8ce577727f7be7d57f408dcc723e5a GIT binary patch literal 1334272 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

+7U*Lhxvk}hyBHs~VvVWTeb05<6|52CCq zJcP}<%EQ>A!{O$StvccfsOSW@V!KZAbnMV6o{gP4&26aa40m9c&Tl}AukIwT- zgyrVXy{OSe?nAvU@c^22nFkT+3J+nNuJSO(>u`kmW1^0D0unmGt(c^fJROsDif3br zPIDWQI>Q~9sb(M!PPlqGT zAMHBg3CQRKw_?6d@^mcFDV~jmI?Zj!>I`>akQ|(>MVC*oz8JL z*6Td4M87U@FG{+|eb}H&Jb;b5%!AmZD?Eg+n8v#ugp%1Z>p_Zbd~Wc{;Z1 z6wk&Eo#r;|)EVwTRcE;iyL67bv0LYPCHCk7_aaoO0bSyy-nk*@ME z#_4dB{etm2!xv+c&hxF9qKo`zOx0CxdA~iZqu7|KQ@jv!be30Pt}gHS20hAPgqaP*F`@0lg?SE`R$)_zB<7TbDgh__zA4g6|OtYImXBN zY^>E;-h_3!%uS!RpW`t+xy?D~Bu{NO|10+oDelL3UE&HR>ewqj=ep|xcbwsVrL+8l z&%3_yah~!8*HI_=Rm|7ntdZf0bFHJ!bM-uP)3L{8y&rXg-|}VGB5pnkn{yaQWxm7o8LxyH>?7x|n{@qO5>%RK*l=a@HV{xTw+pSi(I?dN# z?J-w5&f`{C2c6)LV5&~@C77o3{2*rNG9SIl9?&Un!#thg)jzNwbdm2uR+sqe*LyGP z94{z1FP-J@{LuV$fvZ@pV_$KD`RhEdK~Wd^>ecpkJf7E}6d&jH*q}?Cy2%>p*ms~D zALl<{i>~mKsOT!!{K)mz5l_Vqo#GR)Q>XcKRCR`L!Y*Cpc{jT!#K(E;8qf6|&%@85 zSyy@UkFBq+@cVDEmvoAk-{$pno?kDzH|lV^dk*I7EPoeSUEp71kuLM!&>4^a>B#VI zEY?Xr;7)6+6MPu*@o_#GJvzvvlpo#SgT?z^6!zi^NDn$Gf3zjSZXDgGL!>KtE!89L9) zO0H|%+=sck#5>Wht9;PC)=ek59Se1aufQUm=Xk>bMwYtg&{MzSqf@h&$r}=Db&{;kon{jhEF4*Gkgao>k=RMTlX%V;ICqu&hf1S zBST6T`NH41#_@4(-egU6#H%o07x*7osKW!k_97b}=cNzYpE}QvKICIv;r+|@q)u=V zD|GC{!yX?W=Wk(+&hs-U>MEb~i1)cp^QRv5-q#ua_s6WQ&T{hi)>Fqm;Bo7z6a3LF z_KHsPnb@N+Ep9?L8KU_Et#>z}Y!b;PyX-1Fn+z9+4ZF7e<~_MxuuDSxpJI?bD~ zRG0Z#A=b}rz3wv~U z$$Ru~=Knoo_>f)RUpmQiF+Y1@~@H8WquY*b(QO0^S;#)AByEV$tNJM(|i_sbe8YI3SEki@3AKFao+!R zdq5}narEm7-~12nFJ0tI->~jF&r`yvuvsVhR8(}D&%$<{<%_W+9?!2}rw$`Vh0)lh zBmNk6>ok8A;TqS4SEF7Rc{3ti;hK@7!gw9=R3vnY^O&q-KaHfW^3kJ4g=z5^z5^*; z;?Xsu!Ym!}(MZQ*_$A|@F7r!RsKe+{;aM!wRX(|4R9LLje1GGpusj~m2Q-Ze zJvzbfZXOj@=_G$?%&4$NXL-ihQDMDK@eA0Xt6Xkz&N_B>KWiJ0=ZX9KmveQ3zk@xx zz~jbQw-t`_FVL(@{MiG1PG@)zChBnDD1SyjDol#U^BI^DkKx-fRhM}7+ssd=c>ptY zncF6e3UlJ|e9pvCVXn^dHSZb~+I4|%OISBun7}t)s$0@3n3^$t$K>H(lWUri}`lbb{wh9~HLfG(YuW`%PE*{U_UFI>j$z%C(+z z)~ImqY&ha16qbuAocT_0oEWf4AdFcfI5nJLhe8*>9YhB_i{1eLcE4?nC@j3fn zXZVOS?0KE!cb;jV>jb|CsrWeGj+wf|oo6{mo#O>(yIwlWA6eiU=`^>aQ)l?VFSm1*WDZ0e3AsLU)Igg91mCp0= zmslU2=1Jdnt#y)bT5f*2$k{w}?3b`qhpVjlcSeO}I>9%fCmzp#!3tgF4}90P)+xRO zYjmEU!P+JaQK4VQo{o(=#ot3&7x(^pw{o#AoUd;BWL`OX{N zGj)kSvBsL{3_r2fp4SyV{8s0ylYGZ*&Nm*<&)x2Pb(MFovj=pz)86=*>#H-o5^HsV z+wU6Xdodm7{q8Y;o#1N8eN4xm@+c?b zux{~~!BOF`tsbwF-1Nk#uvJIA8C6~35f$qeALnzPbbt7PIq>_RvOYS+AKh*pbej8~ zw&!(;7e4EJJ&g-f^7dQX)Mdzriy#8hTJU-4By=rgkJRdP^KkFoyUi0{P z44*TiCT!4I{_UumutS&muF*B2{(58hH+3~(qAv5h8frpPCwO{OjqiUoe@^UI6VmZ< z{`~B#! zM@?8CH-8fwbe<1+XH6*UB;SdOF7dPPt_eGJl`o%E6KV>^^I?b7gh(fO<7BU)%l!1= zHDQXb^4Uk!gqb?amm#h5{2xcwgn2s0cOO*~7U~k0Pjp^7_A{r|gdSbxAGg(nwYtck zKGU3ahMUeZpC3AR{>l8BFijVEZ0PJEm{+))$Sb&7w6tS<47zT~yy@qE_8nvmC7 ze*L@}zkgtVW^4TZlC{zaJ_G$a!{5h7UEsHVxh8Ci$8ayoy2vO0M@`tO)4X7jy`i&w z=J_>YkIwLsU$ureSVO+y0&A#?d_Sh>GC%M&`yg(9^y@WYmagz=i>;x~@Y9&Dt9g?4Mub9Ce9XZ*nd=$)j(r3EOqVr(uuI@FnZ4`Hh~F zll|tbV-Nk(Jav^@HkhZ5_=mr#2^n4FWgG2ho#&|oKGrFY9;gW`;_-aJgRZsC@r@5z zb6w=$Z>e#QckVpzshY4^XZV02`%@=){Y&Py+PQG^TSkY8I^qWo9v!CYG9Prv=rBho z`BR6E4)b+}r_3B37RSeVV%zA@qZ7P1J36e@IbOAVbl9K^ylU;}ur+Sp^T6n^ONR$N z_lu*gpLOPcyfiv2(BW^RL(ShkmyY(C>+r_t z@V468ut6vI*~Z$iH6G6gkEsp2bdtZ=QXA@jVmY@GaP+i~KOQ=n6MXuJwK1#&ZEXbnH(a=G=9LKiTTs zZ`OSLd(Bm+`I4ipgU<7WV`{@(o#0K!)rMud%!`k&4J&kxe|3WS$H!xzSR49vk++{* z>wCnl10Ois`s)NQ`&ezL>OBAYlv>|A?y-E~r)xvA&hcSq*M=E7$?K8PB|dXOZCI!? ze9RZkL#Md4!}G@D`Q3}0bKHCq*6TEvmsmF)`~8<%E1lx^UTHq@c)oB=ZK(ONIq(jQ z*H!+!vv;sbtK8|LT)Z(LU!=Ib)wb*Fji5?}W-^V9|2 za93^UiO2936m*4mV70FDgg$Gk6MW+@tgSBcE^O4Hzc!qBw`-%*djuqPhR*P_1HJbB)|_J+>z2~XCB$vVwndb&2Gbe2E5!?^f3 zUxuvC^VL|S3*3)RUE=$Y(`9}MOLcgzHk^y)I?K;sg|5cOhpb6_oQF}2$N!}^9EEW*q30l&ht;PMVI(KRCJklV!N*L%kjrL?5qtFQPl}P1iN*T=U|Uc^J%F0i8bMG zqF(3uYDBug{TQc9d>SC$wy{k3-*?d zz2HUHOK17Mm+ag4I3KdhoOF`+`@6^J1RsL!@p1mmtM+F+p2rQ_lkpfn7Q1zd&%_>` z;oA__nggd^a}GN8H5ji8{0t`QD);ZP&bq{ZMlwFmi(j|SI>(P7r7L{oKdh%t@>xjh zEZ>NBUF6?mK|G!(zhT|t@%#v~@o|13)P+u6Ya+uM7P;$xmRDuJBJ9>%x|JJU@#a zy2>+~>cTFa=G(A49>a$<*M&Vg$-hPYEv^e+`PRBHUg!CzNa_-wHmNR5(;5B-GCIfC zVSz627G!mWA3nsI#Lbtyr!Fklc|PONy3nIDTyAx~I(F}Soue-DcMh)$C0*c_BkRIu z9q}R9u9JKMcIY&phMhXYH>0YHd}z`+#^d?pM>)q^jpupquL}vC;X|j^g~>X}BR}YT zb;J*0rY`fn)9OMxZvOd)oUbnNRnwiLF7TH>>{{y_e|d)M8#hll#yRQ)zlOCs99tJ^ z(61vNhf+L-KY$H7#V25+PV=f;Tx(t6YX@D&xOw~&&gC|b<*h@mk*@IBJIz^V`K1@k zS%<2}As6?Hb>Vs}*9Bhql6@GD=XdMYjkvzHKFrV&f33bg%+Wc1t)V`&>(E#q zE*n!HvO3RiZ>jh5Ld=cdyI+0C>m=W@f4!d_;yHQar20_QW&YC%KGqeUJG0);5pmu5 zl~d}&b{$Tw4+qRMXPw~hf6<(8wI(n%eDl<0e&mAsFh4%dPkpUE zEYejz^BeVHsm}02x%$u(kLStXs}HMnl7IW-`p_RA=TF^RA2!G1dFqDxuv4e_-|w&Y zXOGs6e>6}ZB3QK6L5| zKlgNfSQd}r5AUcCD|CuiyhVOq{gP)1w z`FZjC8bbXYt|Nc@{S6_Z^L+J54Sqg~@qEzd8p14{oK=B6Wl`^61mvrh0uOB=#=o#!=|nzt_Uv@06?Y!#2? z?N^$EuJX$7n1e3xvsar#e4O8TjXCH9U$mkjtk!wHd1XUbuZvuNV}oAls z4Ix)*2zzwwTkmZM<9=p7{FYyPj85$ zA8QEx@p1mx@2#g!^X-p&U0vcWf3Tjq!tu6xdT#mD)i zA?Kyj{K{Xvt`0jJ!m)q#x;n+r|K02ADi7@T{Ohd=uYApU=>jL-Xb34C`>44OC>m>g&Y79GciFfVa=pRxrpK*=hhyxnKc%9@a zZ$;ev@Y@>0OkLq=2RDXxo#H>gyD{|WDld6YV_2(myza2ZutAsjcdd)6KY|>>O{&Zv5uEXh#;ih@U{lfF}ai47rQ+0|LozWQP=o}Z%Yz*_`F}(Kk)-G=T z#QesP*BRcpuraLBWxn9t#!%5YZuxR!*sUX;yQncl{l@bh=QoDQy2RTrXbdS`z|7xx^U;0P;@RuIT zAODkUtkXRBWTT&rdr-pTy0#KkFQIiN{x+qfYQ|UbGK&na|wi+;oO} zUa{|Wfj92azpn80txaLRF7SjSn!;k8;J3Z6 zDfGn6?>wd{tc{ybJE22sj@OEte~(?d!pEM{432 z$S0?7|rS+!;+_rq1w)Gn+zte4N*1%vqPXimZ;k^b1X)Q|I|vmpx$ zoxP(TzbnM?_ldf>r&s-0k<00(ORo>9=ymXn@{L1|AGk@;*byFCxvs}O= z9sBi-_LvU8Z3>qmrSrT6Gj)Xz9q_);N&eRFyqDrJ{3zPvG5oPjO(CPxd@UB}0`J5^ zUFEku;5zCA-+@kD;=>-a4m!yzuuK>D7s$tBc+NwvuTJwpk2r^TJRkpPQz*vA`P*Bp zmCkb+yL9ZoVUG@fXbSIr!e0N4$MS0!ufw03!o`)QkkEPl*t7PnPIEhE=?t&N99`sX z&oza4y23Z^biVO%p7?_E(h2@Cmc_?;)JyiNj`;I`^ISU1nO)|uV}I{u^VbFb5z4yA z1K6y~yc=6|_`CZDDmvojuh`o<&)4pD?z+Hbg!?^~Kk%x@=oJ45kuLI=hOL9n@|Rw- zH{#~TJ=Q@-eC6v+VVchKVgIlWI>}4kupe}e8$xr)#N+u|EYJlWJ)+tFLpaX&jcN{^ zy3DUMG>7Hd5045{QP3&=Yg2PrqpKW^X%6dj?4>B_Jl}zhy2R1g=CCOq!=J=vo#7(3 z=-8iVX%3b6I6sCRy22Mk&3^Wt`SUYxX%2gImG?ieIW%u{9rk((!46CLq3EYuZ#?j6lxk*@NbcQ%K`I?W$_ zS98e4&1lPp97ty1`LCxU|tkN022L)Z?j~v__R>$M{R;<-UKK-7xVXMyY{n(+)+&aUpcIyiN@rY*k z7|oND&HhfJ=j7YpXFYX^b4N9Yl#V_1=;km>r}*n1vbOPY-h+(x!^Hf(|K>1X$371W zb(Xu4)p@=Ki*$ke(Wy&(KNjmU4*BM^( z1#{9x{xcTnD!=VS^3}?12vV1fAuVur)sZrRMM!?9>U~fT}L@ zw1xJQPVsCs|IRva8zP4=r*1 zbeTVRk#p85UUIQD(K+t9$C~H@-;61nJeKc5QkQrers@j+{UPh6{YGv0(8K1bQ+(lW z^U*op^$*uN9`lAd)QkzMb(!ZhjS2la&70mbCTxz6^C!oT@#_QU$WOg4+aVY)qIRkKxOwj0uZ%o8+L$m&mw4G{#)KI<&+nQ)Cd}0dzU^GE zrHedevGdYNUi+;vVcbKG^S19AuPfa01LJkXN31bkC;8N$8ecYNKB3?ExcP+N7#}xJ zEgP>>JZaGQhdq|hc+z;C;VX6+uk$?VMdRZ!yx~>jAF&R6RTvxQ>H>ehZfxk$Sw4L1 z*sxhA`T22U!?;IX3tsVd<8^^&9c;W#^X|#U>u}iEu;xhPH#=Yc#&qL#j!!w!c%9~V zead*9;1@E+Kj!)QlrI^t(|pVM#_J+C*@sB$f-c~YRSNPix8n5$w6*lVvU-r=0uq8gubIN1G4xQ$&V7Jck#RyxB;j2)i z3;dyn$A)^H;u8_+G~bVLy3C^<858phIu;Tt&fcj8C~H&Bde?2`unkAkxuft=+s$metc|Lsw2J~J-WnC zpr9-Ko-MAiPV#gVb&5~MI-TY=tk)SX4UP@{I`&p<(iPr=%{u&XY&a5Ib&_w`IyP+A zMPB)*v0(BRNoG$aHpR%?(!?$c78z$)@A0Ar5RGsAGFjuGe z)DbOVo=)?bH7#L*&hX#Ssl(`&u(+-zpSfR4hz8A#j~mw#Ch8P- z9MBRb>nz`VU`v>$i+uL@mM}9u&J7ctua3Cmpq7w{kMr9Oc8)s1$4+Vq%XNwe4rvKJ zy38lOrzNb?X@2_9mQd7HKJT!W(66)XhjoUHI(FiymatjJ{swmHTzu@qEn%0g@W>g? z<&WmWM;_A>#_J?kQqD!k{_#hhi!SoFKh_e`I?uhQw1oNbael|C=C2ccEtcv6en^Z9@o}EkX-#yB z??+mfdBxXSLc1>TTf3}@PVh&N)oK1R7U>*cicX#9-V42lb&+4gG98w*goDwele`?O z;_*Bp*AiCih)=)B{?QqJ?qX}Gt9;)j)=igr7`t@1)b+w1o#yDWmQeF2&%-_4En%E4 z@WyXj2VLf8m%A_MDxY|{^VMk{f2H%)2|g+ByyD~h)vL^3=lEmaG3WR=cVMl~@?|LM zJl}+My2#tGURQV+B^|!&cuz~%5Fh6ySGR;MI>)zRyDswG*LW}M5>Hv-ytY|4UWG^( z_~~oyd0pkNuQX2Qc*%9HYuw!Q1N&S@{DJH3bDiQxkkJ)R6rpZrs66_4TX-eDf`7_M7qeRRZMS#M2rjvvMfUEx3VIrq4E+Ar)Ao#M&;&Rr+@ zLiFn#UxJM~&sSrUF7Qn#>muKHxBF+@{GNMS!d9K+5B<`f(J8(PyL5rq-0OW2kLTb0 z%KAKM|8v&{Yoc@f#{KRCI&5t5eT&Xrm-tV=^^zZXM$0hcQuC_(@FCRelkZb=cz9839skg1I`p+!AJEo=)?J z_IOX}6#v`nzINy=5BS~7WxC7{V}-8p%UGquh$tjb(6PtXL}9g#_~_A5DC!hXs*OUw zPVxbDQ7Fgb`5X07*s62or8Y#zGA zBgaHxs*d;*n4vS=HX#Z#nkJf0uJ_INxGV}}lhN8xnr)EQ13VQqEn^$1U!8$X6-UE!Az>2Rd$g>gE; zr(?X%@cBsS9AAw|y1;j0vM%vsn4&BEGLkwZJtwB>1mA^e@p%62`=T&Qm-*s_`(lFVNu-t3oO+o-j3zE%5y*H+UX2$KtY%J8`E4bo#Soj z*A<@nA>(w4XJeC2a~sM!!yVYHv)qL(I>+7Es`LCjD!R&Rrn@e>$cN2vEp(EEYNwr z9a&xCgO2xJ&`EAbPG@*|Ogx@HdV+g`PIJdh=ccpVg>^c|zrlK4=GRfu;Y9ZeY}66| z7@KsFU&ZEl%t_u)*cu<_SFt@lesUDPjGa2i2h6gDI>C=3JnP!=e|*$_);WF^Kl@qhrZfE6c54+k z?{|jv(Ftxo)B5O$@6JS_W{20}7ZB+xf9CVnM`!pfOww6?>ldt#PVk42)G0m_)8g^` z70l2%-hh-Y^SNi)hdRqeq;>4Spj}t_!uifk=lD)!b&1FQo3+vjz6VR=HJ#+2{J=TJ$N9+X?T7d{ zcVd^$@m&S)mm%lEGj6c%I>omkp^Nmon)6R)8w zJogsYNN4yrnam?y8pI9=jbZ?osMe_SLyiAlQ3yKZ-njgSA-F-+4*KJE_l)+xRS zb9A0pBCQMjIOggKpSR9F*Z;Tw8!>uh7=6@;uxb3FDd|232UoX5VO-*;Z|Yku;duNn7O{y*sW zy!O3j`@Tl}+A(iFpErN}=C%3XeZ245?b~}_FZP?)VBgREpZ315v3HN{b^KiMJ~{qh z?32A?{2kT(N9-ToJmNp+_^W^J-Txf(mj6B`UaOz(bA99U+WVMzUO)ZkHH?pc;h)d- z=6>`0W8d@N_uTefv-rL7)SK=Rd*9D{&ug#uecZmi@9V_9cl=)OJNC`jeBa0Jech2G zLwtrKMvMp}lJUCxyY-zTLeqlqU+<;(aeF_%_c`i)pS>|P2m4%n%%6`Qw5BG!eTAR* zvTS5%@f?jlUwgwp*YC}bALZu`?7erLd|)_v{g`m<8h;+W!ry0G))?O1>F=>GsCSLu z@!zjsyf?o2<|}Uw#~v7tUEdgvUenwkZq|I^p~|J(Ra zy*+%&-=&(pqcMDBi@#UDu|6ER-uE=E@qM8yMu&GS^S$SOR>*z}{5ymr#{aMP*1h-D zy-xVOuw|pegihZty}-}Q_|?By-+0~s)$w@0@4W}^eZIZkyD#_p|Ly)C@1fe!|LYvz z{BivLv8U<}-skICjqm6F=U2P`+=u(_t9|=l?dvArYaH+M{r>rW-#h11-WE>rcYkN@ z@I4k=>cdeR>%x@vwc$N$M*De%HDSUsKZB#w9$#ROk2vtZ_OYMY&@keIA^wUy;y>>_ zZ~yOmEi{eOPK^HaNAJC7I3E%SPlZ(V$(yp6nmxt=fIw28ER%`uF{ z{_;$En{RYy^QM%mDGigVCPvDWCxjVMb0v4gdL4e|o>)mP_16tLO7A-^91e5&JS{@iyOfn{<9^$ux{HhwI6kT#s7pD)<%V@YerDV6s5^6fldEVnI#?Y8r` z`L_F5;@I(Rx1H8@mx^QaZTGRHwc{L%yHx(A(%SJ$xsN4nsW>+Oh2(Fiweu|HK9=~U z;+SX6$Eo*>{l(UU%wtVFdwM?knz_tQ6U4K_|JvO~enX93jQ_7){^RmJKN~)-ujBeU zZUe_{;J6L^Vz_|VA@qWM9y2vSdll+W+ z3~$xhY8Btjx#iG_YT?02>Xip3s%!S~ZRvi#H@)mT|f7(T>aR)a;7Z|z2h8p$Kk70)1f)))`M56@PR7sjb6#U(b?P^ zy@GqAmve9QGVYCD%6-rH*!*mnq+RygwLnfgT-*Xv_Oad>HtB3?>_d3Q?Qfq_d{e%k zn)r4(CQhk)&*x7;KaHP|3^WDb(=o`q(z; zkAF13-&T&4m)*8@`L_FL<@v+yv_WOtJh2P=KCH+i@Y_|Xei$_7O8Y-(kBmm1gX zI*2@ezvLG*MoHNzU)gqAsn^riy)eIDbSeEo0Bl>Lc-8YvqH|jav z4mY~B@22_f#k7H++V!yWwB5#*{Z!(lw2XGX#&(2f(iq-firV!sWtg%>7fn|C7{1U) z^}Um)wO;+>q}1_AUB~AeX6r`eYqHjw=2>qkI!8YXZh%UCHlj;E75OE-=sBp**?N$C zB+fM7cs-M}?tMFcM^wtVfcGg`$DOljyqbZnp29kAOurMIJgRjfx}9n1*3CT5*_f{P8`)+Jh&lSMaUrIr}E@t_;7Sz`H`H^RCcT-W58jb-X&k zIafJn@%|C(muakDCbNDiXZ_;7A61I)-g!EKJ5T&h+H;h5G{3P`)4ybF+~`}6%J|ga z8&m9b#t!_{#PRcuU)t6lQw(49X2u~Y`%z!nrN&WygXUysYVn>x>LvCx$2X4HW!30* zom!6W$D@18{v>UKPHWpqP+Td?jw60kj-f$3JB^8Fs9pYDurq#WpN$HpkZoY?~JMbFPhs$GmTB+g4E9OWKsSZwXKN$_e60JM>w$CVAYi^N_Z- z*X;6c8}G-O*hTgB=W{9FDBE;_IPc5ky6Z_dn{*eF?p)HHLAvRrJDI($ zEoI=Dk?7tYOT`vQTV&TK$s8Rj%nknb3etJdxFU9Ax2>@wyDh}MU(Zpc+QUDV+3Ec@ zXSeM}TN}vYue;=9=0{sjsoxx{FZk>4_m{F+sn33&45i|__7w20z0_wTvX`e3Jo-xHU5Y<5Aij(TeR?dCJog905qq}lYsNG`wa1oH zZZpT4F-zi^HK_DI|GG%x%RWoSpC+^FK%Vdn_KDNjCr)Lb$am#7^Bu`eat=M2wJ*PI z;#@qotrwln_q_RyD&~`GnNKcfJ~^NH8- zPmiLf`-@kMMf%57{vNCwfL=~EIfNG8#foI^;s z=@W+9`nUC26CkTQR=sa*`?~!1l;FQ}EZ@|}lqY`UcF#ltzTxnE`F5UvEpAh9o1S(e z&rZgvsjLUboSjHNwbx0~{xv?kEybJZi|6XV_ni?VhiwD)I!(guFk>^qx8vDy{Av7Q z5^lcNBX0YfI>zm%VjFTMW~k(8#&N%njx|im7TERhk4>fetdZl|Y0L%F82_d+{#7vk zog6$DnD|0#DAVXMsO?Octv7!i{c=h^{&~Tl#?)7+owx0l`Uds;W0BjR&&+`FqntBH z>+5oky_T`vM~dhFo{n8FaldLhbM(oy3%>=jX)^61=Tj%rF6WIMhc2h>I5#c+#!|o@ zq12e}j(a8I2kEh-eyx6KuYLS_I8vBDuHWy<8t@&lQhbqhV?Y~}FQAP|>GD|RaMM4} z@nC;|9RBi-<`3G-_;p!ozgH7be(jk&U*b3951hc>WrDi0e>`VsWsH;KI716@hUPGy zKF@jv^@&pL5M(QVOY-}5FZG-mpl9I+>3_-DJmZ^q3~dlF2A0ZG_ypnUqOE_mde-qz*<(zQ_=Zt~piKX%tep3lKHU{uZwaN3T z%S+uRFSLKZ)bf{_m!D4?tT=~zQIn2w%@pu_?zlY_zJ(t&&OV>Ec&Y8_h4zQPma(bS zSmy3A18lg|e!mpoKCd(9dxpxHsJYi;pO2dTeb9NMTh8FvGd7b(%G;=){h4wkEXDIS zTNXE;_m0g+&OGgBa&o3~q`PPS^UqTHTzwk%Mwaj_crnj(Z|2^}P23x)=iW#ibI~Hc zC%%y9bqlz|QOljmhsT~7o3m`GgLw|)ch~58+q#rE<_z1eztPvi)6~Ml6V)pZmGj%h zC#cy6Ca78a#;ckAW$NtBeoW4F(yMPGdZbEc8+W!$4; zu0EZ)dMb1ENzB#xyU2EZ>^d7=$$3RX@u^_RyK{DW*ERyym=dQ!-ysvbaN`A>bxJ&A z*QLgMyF9y%j&z17VMZ@DZNRqeFu&W@lY~jXkmnrYw#ybFTwI z`8~%&Q}_+*$?DYyPEyzHJ5gQHKS^D%*?$MP(z^p}ubs&q2>o3tBdgu!w%gQOY(U&cg1>Ha^cZ5N5&7-9N|=;q#z22t`0MKr zx68EUw)wW(Z!>=VNFUx9Fh2O@5V?)+OqlT-YWSt7trxM&=X~>u$oiyjY_RL-|JJj~ z&y?@?`{j`EAfE6=FB`3K+OM}#V_hlzohtX1#|MwSlBOm==l(L?_m3~-{o_k`|78~U znl9#E(?vWpy^v?77x2vVe4d%kVG=*m*2-amHJPo{-;p?Y1Drz z_2;*mooh?f|AnT13H8@{j%q#3?|vRSS* z%bArM=hEVLaz#FKrew=%yG!ZR7*d=HlKHJ-hGS@2%pj_b;B;aC~$yv1&8zp06! z=LRxf_}`NfecR{nwycs*(D{JK)aR2ah$ng9Ul<{Z&Q47oM2|so*==Itma3O6v+WkW zG+BM#&Qr>K(s$ly^y!Y%r+eeHDO+fYF-`Jlu%1_)IG*3|4Hd>TV;?4+`2F@~he^0Q zzO)vPFF`tSZRfPHwqw`X)Iq59WeGFmt(0ZTmi!;})nCG7+?G0;@yxG7e_dR=4R~+R z$YIN7@;5TrVMcGZj3%CxY0q7TFLh|})j@1-j%9N}am0@L0{Vx)Zb8q8Z28=}2i)Ve z>tgGn&w7?@k1O(=z_!hxK5z1ox{Dp!erYqK6UoQqZQ|JSNFDcEeL}vI*nK_o)pfkn znk=?K*DiaDd2XEpeiQx7i9Clnjdx>DR=9zscWFJKU6M@)K%!ZrPWOoumC@o9NZ9mz|g0CU&_&_GO3LIl}(%Lc@d4+D&IyAJ#(y2*nsNFuc-u!MO zx2+>7-yV-m8WY#}{Z!hk$?6A^&y#vwx8(|IS3l2`WzyO5*>3;XB$ZWk z&76R?k+==MxPE=x`Vc+rx9)Y=?x!_h`s;q*dfA;<0@nLSx)*13Amy7eFKB%uGWF@Q zMJIh$+sIhIF<`8hcy@m^?P9mHv`wkG!j30$))3d`nfz?s8J@r03}5Ot=O}F)6i4Lr zmop8Uv3U~5f6vagJ)isp{nh@x@AA#B72$?gO?UUV>5x)_S=H0k;ri+7K;v}PdvZvP zoDx#mi$W@M1{Cz113fXMdcg=72BRPeG9U*cpa)c*6jD{7w+cTP21yVBqwphV!oM8; z6#SHv!`(ZXd_eNbkgBG4u6~w`xoJwA}tEfXSv;zMKbQDzMj(|##!QYFnG9ZV$ z3SJNHYTOlI1a}WK0Lu5kBW z3=ci1%aH*(ia#qnWX(Z`K^S*t3T2Dlh&Kwdv`YmtRGmh=Q%MWWK!-s^72(h%ZQKK@ z@JFOPFhYJg+9pSvDcl*!AM}b{gCuQ{6k7zNls7_I)wshTOJ2Q_-^(ZijKYhYjUT(I z24PS|Ue#b!M=5jd_jgZBOr|3^-37^>qWm|+`Z_$lKNLetDz&);p5KDCO>G8 z@ZnWm3E)+OQBVmY@P|PUh!8IVF9{TJ!_b_hllnj_z$j3}s{|E7C0x?czQgD$OuAu_ z4~$@UVd@=`y2FoP=heik#CC?~kk2*vuO=R-#J)yJlf*qrSOtCsM&MOJbI=OHG6JzD zphSIZt=q5|r>=nerJ#rOpki(q;Rmi2JEJ=fZn0QHv2YNv@s6_5C$RTGhvLw-Y20DuV zM`X+qeL-`eig=aiau{9p5>H7u`cESJ@F}DN)#$$x9gfh>Ins`RVc{XeDCLDgPSQ#~ z&??XalC)VCUFJY9s6-b%$P~U59(}V4jN(t?uL8Z)Z3JE~b&9~R1{tXzP`Go@jLc)W zhl!`~_oAC>WDX-w1oTQ6a#T}x1cWIw0+K)pCGIdblO-%U8F_%BZatER$WC1{=wCrA zkf{<>;O-^QEJ!jo^?;Epkq2Z!2K0hqP<=A_fGWzWral>DQs}r!`YK3@{Gb{{Kn19( zB%hf;bPOGV=Afejaf1rnO2UY*&Ii=H0$KsBgjRuSP>DY*erOW(fKf?989DePAPYu8 zHM}s$oJSalz{^Q|Pz|#1vZNg*POroRJs?TEFyWQBbAf(ZUfPz|a;SRj1zObR3|7=||rMnDCqmbM^n z_Am7X|NHzA8ZGYgD-(6!Owwu z?R0f2m<3(|mVg$}1?~aw2mRoa;OpQS@Hw4E!Y6w2JQzR1-rrL!8gDU!G8j^db&CpoC_`mH-LrUR?q?71|9|<178JC zgWrLZBh%GI;N@U3Xa?)SeINrq0lo^J0VhVeKMATq6ubpI2tEg%0#4I(^)fIYM8Vyl z4}2N?3`}T7Ctx0E26ur6!6(5t!871b;Ix+M>I$$B+zQ&jo4^BL8+Z(S1^fv78cdF1 zJ76BT1$2P7frr7P;7j1U;Add`n(1m9xDdP&G=MjNJHb8RBVYi00elDi9Q+TMycXSp zYr$gB4DJH=gIypC4uW5SiLK-hZUl?L>p?rX2fP=21Uv@53H}49_;fV`Tn=soVQ@RR z3-p4W;0xf};O8K8`*d|CxC+#OTfv=R6W9y}z$d|1!4JVNz@Na3JEp5DPy=oQU0@S< z2z(rT8T<=)7M##FU7ZcC1vi7&gA{l>cn~}a4uV5KwIdI>2GoK^uoi3p_kjWMDexWe z3-G^SatF2o=72@uHn0x73-p1hH{{bhasW-R` z+yLspZJ-0Z3A`IT1h#?4z!$+c!873ZU_uvT9k>wO2pYg0;BN39@F3U;J_DWrPl8_p zwT`-j8n7HRfiCb4@L{kEd>R}8KL9@mYCU5LxD?Cp&e?1?~WE1pfd&3~j z27Uy715UbYy1D>d2W|#Y@J8?e*a1g-+rU?pe%0G0+9x1-60DfrH>zVBDMOQ(z9L2dlxI;9l@B_yqVmcp4lA z6?ao-@CwifZU=7y?*m)GXTW#BFTuFCFcyH>U;$VKZU=7$9|FVR3*brcbMSjGsRz3S zSAti9I?xCr;7;%s&%iN=gJ3WC4EPH8F8B%fHE`aB?SZqv`QUPJ9e6dU2Myphuom12?gDQE_kj4 zs|(bH>LPWqnx!sLm#WLu{YMu2t8m>(yNKa&?1xg}PC_QoTyO zT2-rgsz%LMwQ7M{s1~U@Rj+PRH!I$(R!h|_Dy&|k8dRfNrk1M}YNcAGZdI>UuT!_F z*Q+6red<%{)9N$ov+8r|^XdyKtG=lAtAA8qQeRe2sDDxi)K}D3)z{S5)i=~P z)jz8d^)2bvTo`akM>>ig;k>WAtn^=~St{#`w-ex!b^exiP=o>7O? zf2g0SpQ~S}U#e%-uhgjePxYMowfZmh-|9E&x9YI^o%+4{AN2?Izv_?bPc*;dgq(3a z<{0lxa87W_or%sQ=S1fuXRCO!24ChSeEaz9U&Mi*Zd5zQHG&;+i z<<1IcrL)Sp)p@P+I_Ea$_0Aid)m-$9I!#Wq)8fROHO^Y6)rmW|J9jv3PP^0LB%Gvk zr;~CzowU>CtaH{o-OdK*F6WKTo18a0cRO!!dYrd98=bc~_c(8N?seYbY;xY|yvz9q z=iSbGoco;jI=#;Ooco>kI}bP?a6agK$l2^X=zQ4ui1U#1u=9xXQ77YUar&IC&NgSe zv%}fx^gFwp0cX$|a&|j=oW0Jl^D*a9=i|;}&L^D5oliRZoKHEQc0S{L*7=5d-}y)9OU{>_C!BwB4me+NzUq9<`MUEB=bO$yJ0s4woF|=cJKu5s#rap~yUs!9 z|2W@szVH0N`JwZa^KVYh`FH1O=SR+uou4>Ab)In!Isf7O%=x+V3+I>4v(B%aQRhFM z=bT?V|K4&SB?w&hMT7asJ@^uk%OePjr4K6bg+Cm4(KKCWKB1m4_yVCWTH6 zofMiJni4uWR1umQnie`GG(B``=(N!3p&6kwLT84~3Y{H#S?HY5xuMF?d7+u1^FtSe zE(~21x;Qi|bV=ya&}E^^Lsx`mhpr4&g{}(C30)n!CUkA+y3qBZxuKVbZV0_1bYtk1 zp;v`o9jXq^3)O_?hiXF$LJLESLUp0~&`qJ6LyJR8LQ6xpgu?Xs9XF9BK*0LTf^6L#?5B==RVZp|((as3VjJB|~?H zQlZXJW9{NOvs>EQ6pq#NT3QyYi*=+|M$^r$hEo^sNY9V9wKYYX?=ZY&@%C8C^R%@k zninQg?a_3>AC9)g(&<=%(Xi5UrxWe*W=gSq^XD}d`@(6Rvm1F)Oy_HS#ledcMkqJD zu_!ja;@Hbl8+-|tcObs5R#!_rQQr~Q<%#b#UAC_=or*=<=dFvz+oDZvx^@!H3z**) zi)zUW%!O@Tom!IxX1-1ZR=CS6wx%oI)-q4{^H(f$^@8e~yV|1Z*rI5Ad$b|ip49AQ zx+@i1lIZI6Byo#hkV+*y8Cm|K|7TN_&!Z`Ro++LOeZ z-_?nNYuaKRElUzDCa9yOCY6Y`G)Fr<>E|apS{mbPJEERBiFajGtI&AFbP~F@@Ycmr zX-fo;5sr7q+O*&vr?D%wCYl$?O{H0u?ails(y{r8wnS=vSE|!!LUTJjtJ9JE;Y+&G zv2ITdZv2KtHAQ9mmNx;U~4hW5n8gqfu?FZOmu{ zFKXi7DF$A!rrKC%I+fTUmZvjx{e`C15sD<%ykg~RrmZy1vh+|JOGleqElt(NQ?cgs z)wM6Dvh!M^$#g7LPb+(7RvYh>QKYds6^nH=M(GEhj9tmLcr#{fx50vrpr{Kvn%n4_ z;Y7Zd7rMWzxW+X3xVbKjx3x7OOOeOxU<4tT8(%YI$a4K&?7UY8Bd@DsZ`AYRz_ToD zAzrHwh}WJG#IGj=aoQCX|H^qQ+)NiOUR{Ho+d7A3`glhg12*xnftYmsBIbhbbgZK@ zp6F=oN+uJjbj&jX@{s08r&IAJ`n<^k9yLf|eZFi80ajCcnbfAD>)nQl-(}|$P93XJxi^`PH?zq-kP>4I=VGV(`BDEMH)?7Lh9igTx zolbNF%Xjp!qe*d7f^j^qmny{yLPkukrAv43Qh_UCDd`Qt0@9gLz!9sNk8-5StY8At z^KP*mr42`iQ1+tbf$dv}P#8UnGha%(2GmQ~WLq*-SG&$S$U1IG#)5RUJlSFfRk5tj zPS!7IwJzGxLJ#qTu=ouz8G7<;S=f1ttAfbHF0f_D?$Y9zfK=Q}4pO4GX0&6~M41Gl zX>XZHl=Z|)VpH)?s6DUw--1m)qSSrKoEC2IX?%mR+QYh!DoU2P@Rt%E72C{5=b z=|nQ1RL!bE87+BTYi4b@-c-GGO1trNtmW=(UYuoNI;INl80Ss4rhr9liKb|qyM!-H z)kIyCiZ(SBt@2>X!p9^OcTFO}nqHe|EKNhm5MoQFS&hw%oMz2VMzDRc+(uuRXf7BY zaa?ARSW9B-*@viZvrUCpgt_Z!1r$neJiX*5iko>6*sKbBuCOE{KVBYR+`sQJ>x3L}9P z!s3PnYDaUv$GF=Z1}OHs{?4w$WPx*D z-pztJ&5+`@irt|b?0}*sH42TcFWvznOCiV|4+@3IcE)Q0TXZk_vS@0p-l^xaD5%Vf zQ(R@k^Y#oywPdeanAb!g&rb_B74kHlK>7&AZN#+Mb`uzW5zpFs*=p14*LiKp)+qdZ z*4~bFjKXwuS6g;;cbnEQZ;45-*S-F1HG539n(xon+l`oMHJ0}LcD0tVsK}eQ)kE@f zNT>07hhY`1Bx31+(c4>W)+ACGL8skXIv^Ea+nVmkFOXwtk6#;2M@=D`@60-pKwXEJKo;aKDJg%;vK;Ow)SrV+$K^E-d0bzupKhShL1#Fg?Djtyf_Y&lndIhhH6Gcnz;-JE@TY;~4A08tdHRp1kpCMZB z@jQP6qf=Wff7)m>MLxIfZDu1YnX$~Gjjf5^F-AqQQ|wA7n%Pt85z&hae^E5<8Jgx$ z3=^|ek`z29!{r@GU;VsgaZ$w1t816)L#n!H=e!lGbgtr@lXthJ<11p##yfTiO47nv zgz=b$?Q}QPo!Fh}FT_}~Bwy0f1-C3USvS-!Yn*R9jg1Q|XI>iES6lpRuChIaSniQc zeu?BYf)|r@tk=6;Z@ziO(b(10=#KF^h^7$1^9%5NRfNManylWvsGY@|9nJI(j`C8p zCf0imS>I_LDR~D+-kd~0tMBlzzEh@+`VNla=ApxNUV+B$3mrYr@s{iEf@E=QUCc8S z6Y928VclTZ(v^JscN4@wz!64a=Wg@Op54b2RmP)jV~ZiL8lF?VznxL81yzlVs<>UV{&UM5pHR^-At9@<-oHL zz4;Dz3#8*}pJy3)o)OQJUY=+bjU1cX+orv37onuGFkgBk|Y9n!56V zg}o~w7^k=J_Ekj!!l`(IjJzp}xcS8f?j@}7qH8@vFL=Gi$IrpRPB*{Ok6-V)8+ptoGNtV5x zX*BN^?6DSxZ4cen^5$bkN}+d_G--IbCT0(p7eMeF(S9a*cxDn3(x@E5;Y|xxTXa71%?$M zuy;aJym|A^vhzpYT0fnP*5(x4I_+j`PxI*78WrUkC*yk1tSLd(yNc&Ozs5h3G!fb>xP{3ycK$jZA*r zA+eq=iq6mq>@gzf=tXB}65YM~;BO?)vb`fNy?7w5<`$oC<@x#Ztpdk)ij@yo*u_HD z-DsK`dRZ4ATjitYkFD~YI;@^PSe&}PS)VKAqq&>E!fAb;??2@#1jy3FI{qpIBwC_k zXvHPkXJ7fKMMqqDE<;BAuKdlaJloy17H66tzw?m_=U#bMr(S*5B@%a-}>NlO*}aZ5mwwm1|}ApY4=))Cx%zB zZ2#;FAUdfiwKzZ~vBE+*@3ZGMcb+R;(_+(;boT__Q%1McJg>gPGTN0<&e61bR5dZUPp0SgPlY#l2IZW*lC$X4b=<+*99cecdW z>Sl^}cJfTY%RHV=cn?k5+VZZ1w~ud2ti7trE!K5;QsLAN6TQ8ltoB%Yv%X;}PQ7iw zDccM;C)}NSP)h3KU8tAiojiW`x>+h#$g`8iX!3OJIlai_Vw7T9KHu=29ZBw^q;eS1ji4d!pT>;T;%)WjAaUxt;B4vgHc>d+c<$`h#dYgCid*0K5a;@Q9v!~y zJFHCYvQjaxT}jRVCjYdy3RvlcXNR8Ca(5NE^PaAxmy78HP_Oo6BnKI85$Ocy&)Ut# zSDONhhk`TjO0Stq*=?p(yR=`|dR>vy*L4LPSF4{+Uhw6bsyl!|S5Az<>2MWB+ z@cJL&Ju8dX5APs6^}#~Cufsb8ugc<8f13B@KFWJv$YcIi!5iJeyQmg#AH0gbLL3uU zXjb#Tsp(U`c+YA7A2hAl>g98ern5Dz)AS9R-mdB0nm(XupQd{>{k*16YWkF>&uUt> z%`0!3rsrrnThm%iS7_Ry>Ajk6)^wYuk7=6K^j|eSr0HQzjgBU4_sTz8(`z&hYZ}pX zou>C{`e98U*VN=UqWw8dpEcn-ymF>%dV!{MG+n6a3QapSy;su*G~J=;W12pp>Gw1p z)wFDroYj2Lcgw;rZY9YLDQQwU8CuJ zn)Ye>xTfFK^eIiB)%38YQ+9dfT%hTzG<~h6ZJKs#`fg48G<{st5lw%r=^r(nGT`N3 zsp&PE)@iy%(+*8HYI>ih4{17}>6bLkY5E&YPa5>fIa||9HN8>O#hNy0dY7iXnr1W| z(sZAuU(z&hhuZ&?roYhi51LLI((R^crKYnqoulcEn$~K%Sko1nzCqJ9nkF^9ThmRN z-mmFHn)Yk@sHUIQ^nj*MYWf3BO}&1q{lC}rq}^Jdn$FhL#IN!B8??Vg)0C$7X!=1- zP5J@t&uaRlrq7yqd%W_eXj-Z14Vs2EZPGNY=|)ZO*K|nJtfpVr^eIh$rm5QNm3Nw^ zvo)>JbeX0tns#gYK}~mPx<}LfnjX~j$C^H;>4aggyfZbuK+_vEt<&_iny%3_rRhDI zKBDR4ntoN&?`it1rs`u}c@>(@()0#R7i)UErt37lN7G(SAJKF`)6Z)9bxnVu>2sP+ zc+@L*hNjnP8rJkSO>fuqO`5)2(~PD=ntoQ(Cp8__^beYrf7~nYY)xlt`YKJAY8uhB zL(_XTeMHj%O+TyYh^9Z*wCpjjoavexyS_;KZ`5>!FT7Rz@6z;Lnr_x~K+}DieqGa? zrq60x#u`ihrfFKK>0C|gG<}1n>ok3rrkgb#)-_cS&2Ilj*E^n84s*z) z@pX=;hv|B~aD1KP>Erl1$J4{{b&jWpUDH?t$L)Lv$9vL6iuP!d zj}&V^agw~0!j)(fa>baC+WCAuRTujK1FUS75JHH|zYk{iH$JICWKZXtGna75s$1KwIlrcVx1|yQ+Nn1wx(aP$d{5H8>SzSovyqa%H+bk5HY^Cr&IqL9E&2t~%;eSB;r2;F}W5(vp=N^dhY0c9g6X5Gc`W1J5 zWz!h^VYNW+^qZTUhOI7i7IeqC7RjA|UP8a!@$P@K4;mDiz=E>uy#9DL(T_aH6 za5?(6x6b98V|n#0>RT4qNc-d%9ud{ggu9?)T|AZOXy;zcifAe>Py10?h!9bRJlE%9 zT7~!*^HCA+GL1T4{0P?77Bg*59WE$vz1AS3i~T&}tq`7h_$um9UBYQhx9CPx_qcxd za=v?e_3Z_}d(~YooAYj@dRKuj4_@bWiZtR<+a*Naq;lW>Q|gJ3_tcg9PCSMDmiEbA zT&2FPeM{U+Jzm~aS{>AU?}@rnzYEDzS?;={6n_K%zH}I`4m9$Lz9&ey)}nT`C#(8&k-SYCi?K9)tDa3j;(!4bJ*)bu7mnNSW*C1Ch7j!qrcnwKL z`+pfHx1^*Il=?Yt_Z}^`zw}pA_>Gc=bQ>QnFjs4rxtB{q!e#W8YnEngm?*r(Toma_ zn#go4-q=wU60#zmN_R!umUpa=^C=M(E@K!8wB!aiL_Wgf^`nURML>7N<}sa$`Z&@e z_Y2Q=%jl!RTi(&iP|4loe5J`t-r*T4Yi#3^t@?D?vRJA;-oaREI=lKp*|N4y&+yb2 z#f@otm*e(}k8C~Pfimuq1P&kHEGt>C`u8#}SCa>tYjHgMrjqR1?dhP4WQ!l(J|#5$7}YW%?R}y0&Z$@8~qE8_L#* z>eNkTYrUuEs=bWtxW3*j*9ug+Oh3z4Zz|Kz@70^dY?79Qa zGR%XK&Ta7&ey%FzM>VDHb!hygI}`BX75XnF^Nf1~pAg~0Fy7sVa}-x_*3N5|ZZFN& z$=4Ny!#k;QS)ZNn`dpKdVA^c9tiMvx=CoXQbJwVks>V9H!NNov*A(T|X<~)cyq4Sf ztd%#>%j!sEK3mP_=7PtQE``Ogs%702(=VH2`)SOv)6KV<)j*uNY+0hQ8HpK_<_RaM zZ>`@nO6SsBqASH!4!+!|HA;wCyDGlm=y5%Xq|o=V7Fc5o z$hQ~uJD8Fw-(W2MG|@*@ElrYG%Uw2;Z8(~Wwy)&dj8Z50)>~m^@I}$)dRf@5%oII*JzM7_%B7P%b53Vt!F#j%dHZtuINm`}=wocfM+tafB$;3if5j(2a~)vULKEqr}X z?IlzUKF&z|C~isP+N=74b2Hz&l6Fg}e{y66MO2KQms@!a(Kf>Pf#=_5~z@D zbqnTxVkjJoF?zWTMR-L>?w@-Tb%8rG#GcrFPs24@cU(BXm`B=+^Bk|MxSJLE&=)J2 zmFn_*XucucX6sbf5#p|Eu-2F3mVsQx%$4euA#coCmOx@L3bmL$8QTb}h}(thzWHE2Ns|BU6g}xK3H1b0?-aMEcJ)4S z`>f^uVjfy~pulk@_&~w$o)>H`_`M-XZ4Jp?T+>$vLY~pO0~#}8${jQ2slh=0O7&=H znan`$=TIICEn|*g*UOvQ-qp&_2&bb{-saOvRO-v2!hKe^eUbVJi#N74mHKXo6_#bk z&xAaAWxV&^pHVW#$!ujUnC9`t;jvuV63yew!$d5cyU>$ApwifP4VKrzIy%lRvk$r) z#%Jw+(Djp}JAgf;*0aE`?_fFXZPNKpug7s`D8AV1`G`-INH7)W8$-a9l; zdWzz^zFrLW5lKd-I+o+~xqi)MZi}V)?ynbzVUV@Wp!V?!c~P3(E}z|kCk|f-mQ?s{ zf%s-{f$MG#wN-rF;u}#vWq7WrpE15-QTg7m&e0Q=uMTU!UqHS_tV7%drTbj4moq($ zd9^F}dg0aHw^Rw74*#XXqS}HWvykIxs9&-qFZhkbKaM|N2RAQhSh`?wUY#n8KL1~! zy>nf2D(!yBSG7>4ADms~h3Y2!mc+bU%F(8XFlf2!*TjzYM>&`UVH4{XyhK3pVf41jN_dD zuQV{S$!+h5rb8Ed{;I4;|G%p1-)Uv;*1!MDk4W%4A@W?5pVQ#a<~#VS0{9cl6u&*1NGIo7QdW{OMkOC^PPb9ioCN$K+MTuMCWhMDYt)(8KxhQFG;J0EN+QZ9F_)?0|srWqY zc=F8Qyt0LGZ+d9pcVrx%L#L3bh2LgrCTClpjg%vrme#36UvXl_+*nJXE%>AGMWzk- zIr?(t5q%ct>DOv0oz{}x!Q!IiWol5c3ZBBDbETFMDq7%)Hq>s@iDknQ;qT`!TcI8p z$5~OPGLzeKXv^r9!~76Vd0$1}jK0dgS$$P~bNj0M>iWWctNJ2+t$oS9?!KPBO?|z6 zoBJ|-{e8oI`}(qd2l__(4)*2x4)u-p9p-0r%C}Z*ow2oY>#VI+Tjy@A-deXcymi&q z$kx`a$*tX6d$w-c+Pii0*38!at;1XQZOv{yuythX!L7NihqjJxJPBimcIC%1QR@7ca-d++wm+cVqy zw-0aMw>`W4!1j^t2e;?8AKE^;{V+cORKBBP$BZ47J7(>u+A()W^^Uq7;T@}XM0T|9 zNbcy~(X(UIj@})ccVu?-?-<^(Z%1~=fgK||4(`b9IJ9GQ$6Ya5v!#h{)jO=XPncUgEvuEd~oxM9Z@67D%-#NT<-_GpL13O1{9^9GRd1&Y8 z&cpopPXHZs5?s=)hrqHmQ8DVsOS_ z<>0Krs=>K~)q{0|;lWjdk-^r%c3175ySsXK-R|)2Rl6g*TX!dSckk}m zy=iyv?#;V1yZd(!@7}jNyZgZIk=+M(=XM|3J-YiaKloI>r((~HJ(YWA?Wx)`cTe@6 zx;^1NtM)|pwC+jn>E6?`XVaeEJ)8Gr_Vn)=-m`B{cF%!5BYO_+$?Z9`XLQeDelDtf zZ^hmjdn@ym#N;?A`-= zNA@1vo7;P6@95scd(}vVx_~~ZGUb_y%nW+wtV~sAZl*d@mkDQ9Wg?l@Ofu7*>B(%$ z^kz0^GMWC&aAsd7n>mmf$sEk&GKVswnZx{~Rr!{REi<-MZke^EYRlX$)m!Segtx5P z64}zaCAp=0OV5@~TY9%_-jdnUzh!vKzAf1;2eyoCIk+YFcQFq9t@rZsKf8~Y)4Tgi z^xVi_u#fut=L_j=Dp$dCME)47Wn7jqcoySpKV#@D#>sxh!dZ-W{fud|7`OTvn<^QP zdi2;cI#|y5GM90smGNXV-=_gwmQEB$#h{rCX=m%ck%q0V+>KAlB>T}40LME~4JzdS^LoIyXVqyKf&@A~O) z2bpinnP=xRzqT^3Ze~6`z&v`muY$R=nmIGcT$y2x9AR!$%!yUZg%Re!Ugo|mbKdB- za^|_Y%x|sCYnz$R4ls`$-d@4nRn450WUk6EM~yHyDdwaq=AsC5P%oMqJKtoBMsnqj zt^ zSaZEfPL=(W%9*u@JD0-9c(VC5nLNULsD`JqM^I{nR<2+r6K3_&OAC*%N~vIF5~g)~ zS%IkBRCWPW1#9VHWtCx7mBnImtfmwzsYuU&TtPQm+#> z=~?}Np3Up@tZQalH9D2`v(&|#m#VSu46{uovq}#$NN!7IpQ@V1Z%*=_HFJpyPjmNN zVb+eGbrk0Gv2)|*y(%(|oeKArSZgE)hUsS`%&DWyrxo;rQ5?QH$#uivbxQ&vQ?~VD_PN2vzm?kxw@tut7*vyZP`O>W@yhW zEt;cE6|2rl+O?XNjnK9|v~Gs>&C+{wtSl9)%1U~0HLJ-8E6E;uafTISmepg9m7`+S zSV`ZgX0;e$rP#wNF~bTm%jz)4%1|+5RI(zhW;GaLCD_9%FvAKk%jz%3%1<#bRMIo6 zS?xt=fgbE3!#t729&+?h#j387v7nk>8et{Z!zwOAPtCG=%dv7(tlBDBu~lO?5qfP8 ztF#OwYu4?*qpZs+Sd&#TzJ^(gC0U2{GR6+G{u*KJHOe?!!J4az^;Vd%Hpx1xmo?V# zvD-nk literal 0 HcmV?d00001 diff --git a/click.wav b/click.wav new file mode 100644 index 0000000000000000000000000000000000000000..833ee01ca521d3dad64d95e1f9e6fc12db3e02a1 GIT binary patch literal 68712 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 OpVb&AJk!gSEB^-;#w%?A literal 0 HcmV?d00001 diff --git a/libtcod.dll b/libtcod.dll new file mode 100644 index 0000000000000000000000000000000000000000..c52972e9bb755712ae5dbb12d4ba6300d6fb64c5 GIT binary patch literal 2351616 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%0D94<_izd66Qvo(uvwG2OFK=A6 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

lzoEv9ABxOqXnE76Bj@m6RarKwAwH!-pEFlfn- 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 VhOS@m>!Q)3aj^i5#fn{@QRr}DZ} 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%0A+kP+ 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

ym)hFUc&r~=#q=sVTw1)pP20> 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

F~*88B@l0&Iep_isA}jFrBuWyp`xz=hTDOh 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

S1+k4Bu3f~E75C^F0G+6(zHpZni#txkZ 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 en{_w+FfJ)#%&UbFYC@K;4| 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

#R}8Md5IgxSY#Zgd_2>GQRdc%$mL9#+VMR1M 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 z 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 z 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%0Db^|1pWi; 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

D+c7Ui7+4n_`29}f-tO*B>N zo}joXkaZ~E6Wi5&wBkY_*D@|u_ai_``+aqf)Ag9$fn1CD2GE(4QGZx{0kWRCS>0~} zX+8q79_KnQ{mlcChhGEP{@e)U`pd)W9o22%UGJO|uw*mQnC6Ll8pC#_OK%QlA_^#qUU^n6a9N-td{?dWG zqb_ZydcG_0@4Ai{zee=@S|H{1Fpz#f*5~>3e5umi3wnOohZ620AdM@BL#@B`gGRXi zvY++=4+U1eBXXGlB!Ang`*0xnJOxNSsD9Vi&>TZ5Z=syQ!d}H1g_g8^*4>jJ1otGYO)M#0Bsu{vQO?07# z3f(l1d?fi&r0Xe7K$Z{XC#xUo>uOZr!1PGo-=ukem*U`!5>L%d!uO3p%Jp#|W&Wu? z_tQLGX?=$Lyk&^=wyNKsYI?5&lK!(m(x;o|OqOh@`q6iE{fKUw@w$HW zO(4z5z*N+A@4u+#_iOw*Mw6~7WEH9g59KrRY=h~&b?BS0qbp42Qhgv_XJ74nC zwL#@*duaA}Ug+)%Wc=S%_Z>j;IMn)4OF;KSo$q|_aiRMOkaVk_5O)iZbp7(+|BpB3 zUO!q8#5EOZXnRTMejCVmj#KyVftLRv){lAunlCE<>mLxhMGp$yaX^~C04?1OSU*}3 z(0&y2d6!KQIyVBz??dXIH&y62f4 zT)mpFKUT6tbm~!*jR(;SrCdI-z0p*7R}ZGzrF`GtYQ54P7656UcOzV%>|+zXYU-s++r&<_~pDc{*_KOC;Q}K$?+Q z?;^d8fuwf;kVe)|a0cBHod2{r&mKsa%GKFt4=h6*^WdLh_W=FFe)?weJP_&Qb`!Vaw;&_RmJ+96i0eWeLvF8$BF%jg1&|=bFj6 zw%&R58_I|8uMTq^^Ecow!hF1L2))niC*S!HltY^*hg@mMN5h?YkSpwl@ay{54s+4^ zqWH*{2MK(C))jHCXTI|>qSig~@%nlFv;21I_rk!|@=E@9(8aavs4plhbtMq*m0W;yuIvzu=$q z6uWr-aYM8qGUk+qEtAU)C`Ba}j zav1LIg8MaKHSi-K{paZKOS_k6o^=J}_Xy~a#t$b*8+`$gZsMUk3jI@nG`|J1ec5)W zyzxpqi+C+xK$&lqvs>zB;Lfm4IZr#O`8Rcn#Qp9$5>F~UUfGOl6H6`=UeDC|+Mg?) zw5jlSDUjyNn+e|s0GYP4fHe8~6-`R}9?0Q5P46loO^QF)ZaIC8>I*2HOO&_kfPKox zGs?&JHW&WR1(LsefHe8|>sGoig1>!tmT>0)X&is~_PH-Z_(kx`_%4Nh(rk6C(Ag14 zvsT@S9A^;@fX0dNM;bSP#-W`O{#YQ*#2<(|Js%eRUEq4qao+_VH&J+T^F-fJ_rZ!s z0$G;%p7>jJU#oaKkY(v*b(c(%dDg9f^#3iz(}65w=K(MLs>uH)AjeUUs=Ihk%?BXs zkTpfUT zXk58ET;0bio(!apoCT!L{z9KK%qd3*UuOXs@0IF)5y*1!hPuaoN7B&*B&{tLi2mOS zr1_n?XC5i#<Otsz0f5 z;!tjXo+oyN#JdOda^r0>>E)ZhoT=f+7xS9v40)v8t*OzpxQDJX3{|tPoefF zR^U1P`}^NXf2ee%-uvyXw}#%XJRX9y(fo8i2N!Oo;^8e?XzpT4T^1`LzMZ`7y z42h=_$apqZ_lZEu|0X=kFZcfUmVoA+%KrfRe>5)uN%sSF-_xaZH(>s9K|p(V=+d`$ z6T068lJ05h9>2TL{i5bCdo=D^tw$y+-m3M+b6Rh7ZY_MA52U>A2hzBDD_?(Rg~l-z z>H7Yz5`G!b3!kq4v>r@siTh4*&RPw=7myq2dE0<|znTQSvk{nlB&JAt``J&0UdcH^ zKSNg{>d}&`MMt*O^lq=XR?}CGIXarFfRz73K*sl>KKJJv{kY_=6WlX42ltF&JdeA^ zl9m0K@AB&Pyz^?lzg%-LpVv>md64Wlgx_5A82RR4n0NW+Mr>T8ARF#UDm8V@dPnA1 zoHIRd%pfG?-6jp)%H^ND;rza=dw^rO`xN&_#*jz6U)bI^?7PD=xw6wf$UEIrbGCWb zm1X`1=kCqNxqEX`=k6t4d64-`?+zb3--P=-a7Rnc44jYB7Ek8AC%m-4l+H?*uL8Q~ z!R@et_or0goZHbj=N9*+KzCoFAM78V+;JYh~S2Hil;$mf?&;oDbPtIT%aI8Hb5U zMJ8TwyD3E3wr7~5V_qL|d}naayUtA}HsZZ)ccN~%-SFPFRJbsIH{u!Q!%Tfw zrKz8fb7%3LRQ+WUoq%gg^4XM>nN?mJt3>B zo80|&uU&_+!}Vq6�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 D42ed_ literal 0 HcmV?d00001 diff --git a/ping.wav b/ping.wav new file mode 100644 index 0000000000000000000000000000000000000000..a8fcbeced6c21e437224f3e32103e0fc693973e1 GIT binary patch literal 555652 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 J z0cTT_$Q`W=8Dvx=?>vnl7p*es?Eisu4tPn9;A^}qxEZ5_Za7my5)K6qqItn)$PBzw z3I#?fMSwo0`u=kFcnZ2TU~au#Yb%K=L^ZNS3`HHq-!N&pE8cPsKge4+tN8(IHZO0^ zT%Zmf7x;j5I6M8~527icQJm(@q_l%P`y?ZyyH#5y3qnTULUKYx z!0T3935u2S7Pt9g-jqewC3Xmpu!BNkRvvnlFsEkjT3w`dT{jx&lD_=21Ov&eP0I6jSG zR*T1}udqjdi$@#p@O95?Y(PKfCv?uA zh#cQ}CF<>`-1lTwCL5>S9D09uxtiHE=ta=Lj*_R8f-1tTf;QLQTVHJ z4YGDCvhwHzUy2&Z7<%nC#Us#i>?7~-9GVSg8I4I_eJD8s_vM{uB}w+KCs%#T$OQj1 zBK^OS#(^57Zy*h63VC)~U^@Q8UkN|(Jw`F_NR$FenCFe<$_PEDl0n<+E~Dk$^yHSD zjM~evD@9+Je!bzf#1NLu(>R;?HLE*cXO`eg;+XG?ePFTZeby~{kBP_&b}7Qx@yPf5 zOQaW^8;|fy(e%Jz8!KAG!=i=RPmZ=C@`ydgP0#$G2w15^MIqG3J%qj}6>vLz7+)Yo zNhWm(X$~CFv3eys+!#pPKti*}`wv~@-9|&+nFfHUOMUgLs?DI|_l^}O)h38NF z(4aUO=2G9Zi^?@Mx3Yo`b=#7g(uecQ6UsEv#|`nEvKxQSzcKK6vH4D3m^(diwpgp2 zcjjQHy4k@w5pVBwiT8C1#pgPilkBGRKymShdSC6RHPCYC>$Q`5vR2*5pf5Fw z>bH$T`Wr*l?-;kV<;EbbwxMd*^xF*3t&dy8W1+b~cKcY=Ruf+qjr}&lf0fpSpitfI2^T1@Yws`rzJPAf*8~4|In|9xlo~DJ`}A~$ zewmcf`;lFm#A&tpkZzQS=TXS;AwhH{0uX8rlhRObe5Y zdUo1WFHZ;RHE1urG7xABQm!d5BfLqHw5f32-FMW#{{vd(^V z--BnisoPN825wIcIhkD+N1XZsIWKrmdo+J-6#}i#8&=xd#|v(3p&vnH@o)+#p2 zI>X*rnD??Ru9lm@ck|Q1zD42U)8CCB z>CXnCj(&_x)w>di3nneJd3X&>tS`f}l|s@XMCK@o&`Hh+8kQW2>K29>LIs&dHW8b| zFkTn*k|vKi2Y6j)GQVPXkGlHthS8tfPF972@ZicbC?lDkj@6MbN1s z4>&vI2$sXG%a;Pr=sVb*7AvJdDN{~ai+)B$a8tY;Hz#=^`D!UCr8-2_8q*WnQplRV zOmFL9n$JLL8~AiIQfPhSH1!y>=uW*fEd%L%i?tr)llm2BQ9I+G=`GZrltTmXGG#E# zL53?`-3jh>IT{!ef5QD(0nC+?>>U5*bmpZ&b2!UB3G>;RY?0NQ)wbHfJ?PB1IgSM^ zAh=k`Y^+s_|7&gG9qeo(**VR918*K+Y58Ahk`Zii$p9#r?t!aBbNGs}xK-p#1al?#&E$2m={m@^kNaxbjByp8>azl7Q6EN7(riM4Ul^Rl43 z$%bAE2R(%O`Azq4a!u(@Pa?m%8*fn;k|J6kx>zf&CTlN&J~l?Hrz6M$|5Yyq3FnIb zMgK=bMm5dR_pA5ypt?|RK}+fr;C-+L=h1efG3r6(C_MpbM<=CD&WSug#mEn-vZWNq zDe9JX$^yx|qIhUEovN+;sS(^s$HZrtR7f&X=jc1Ggy(f+F!suf3G-eq8>Whr5`Vga;R?g_9{;T(+E%Z+0kX8pv zH9z_uG<9|8JK2cb6m{?^UJjiB1;RZCyUhM5s@V_t3hNHbVcm0%m@#{-nb&S_4z)U& zFU(2i0P~EQ)huAe;+w3`@gMCprVTvBW6otrlIv=X=IQMrB4YQJFP+}*7xs&S!7Eiz zHUVE*66pY7tkQ7C%rboXbbmdJ`KRLmIw5IdDW-LPhTo;@q2eSbOeS#1ytVEgd+;^bG#M% zi*0a*IhOsKJ;EMoVS9^t5Pt5lR-brZON;+*U5c%+jsUIiMy!^dCVt2s9dGIQP20I- z?uYl@-<82W)rU4Pd-yly9ZG^G#meln~)vEN0aGp8qn&gx%4w?dZUQ; z!5FM<^sLj0c@JyrynD2l-uasAZKtJp4Q-EiquSV8P(AEfN4cTU3`Qs7*Vp3L>U*?; z=0w#)gpPBJZjuUI{l#XR}=0)Rn&S=Db z5g|Z-Ea{k$kq!_Pfr#9MEsp)mM#P7KE;FmxVLcM2JzutGE!=xNozhO;Q{K9Bp|@Ba z+xROU0oB!W^*dS|COJ2zwUYmuI?=yPo#P*&_Vt%gv-@w+ z6}~Ps#rq%m&f9>b^=!hQbRbt~Kch0B)!aiKxcP7nccRi2u49iV2l~k6?04>SUbC52 zA6CfJ*vr^%=M0dKuS6O-BvQrc7yi*n2sd|LhbB4E&=IFp*w1!{2eLMix2$rsAFmU$ z`IPuF@y;wS``WLi#^$+aVa<<|@07;Mbd&_7t4HKGo&nSI0{SVk6%r!6-ifrj?>cSj zmo#r6k9sFiTrD3gt_}z$sJ(+1w?94hVP2vu=D zr#5wxQ>QwmLRXz#p~9?3cr|Mf$;W%c+3TNJ7m*oyC!0Y-*UXvbrr|#+F9kvS-7{zw z`W<&7c}Nb>Dm>6y(7whU`q5Kgt>jy+_VI_+Zh?$isbD4TVz8`MAR(XDI3ccYe@rI%%8)|dX?Uw~6|{63YN%FKCXzldpV}xdyN|^OkyU)h`@lK( zGTUKQWI4^V&gobeXL2-yGa>TD-Wk4Se;5AGJ{Sr?)_HNrJ|6D~$UL7E?!&4^6kasC zk=KoN6f>b87BiFOF#Cd=iT$Nq0jEI@~=>mPsAo5KR=xSIBz&17FU524&1ad#Y2*%IQSockG+7W%jk`BwLS;w|hla z*`CN<`&l@r^D#WzDH#c{^^yNk!&~uUv7o3Oe=i1^N9Ap6qg&URqWsH-pwV!~&Fhv1 zPK-v!LsgNT4p(=B;w_&(LmO*+)b@Gu>W95G^~Js_dL@5)eUJaT7V&q{g#WR6ALgNh z{bT7f-xiX=cOB=1UY_Flpq$q~xt+9+GD<&)?&K?ImjtV8o_6e>R!{Uwf{R z-nZU(>sw_^^8aRh_2)4%1P@n|$Z<&9F zGg*Ixhg_Yqy&t~ls^Xx4$2ixyn;`@~m@(il19KjZ_ z#&(f~w2j(J{jBBJx*AutQ(PEy2vBQ4@MH4NitxcnjW-0$fK#l;a1$;W-Ry>Z(c( zER<~YF!F1^;uJlR?D1?Qt$Zcvb^m6XA?Q;JBy?19;v#if;vv;cJgNGVcBtfRYnt=}AC`;2_;fJ7uhoE_^#Y|I z=#ST-Ebeu;yL7~HQH*C3gCWuFmgVEM&2{We>?gJ*O4-uLE$4XnsFOat%h?dR=nM~i zaz=;pv2&rJtWNj=bHa^yIC6^zV?9LYIF|pKn`Ljixtom%_XXb!iKUIuROJ)sw@2ap zRNyyie==UbMLeD?w3D|Lo#Pu#XZYs<{eLcf9vDlD23ycZ!7Q{y@HTlE=u27zD4FUX zk5~B+9^mbV3c>tfi~f_6QQPizr{EvKVw^ZlK>$cc3Gt!g+QO`B{5Mj_9>%0`#n^dGFFjK28hyed>RHqP7Tp zp?`r!V@qHN9UaI-vj_H)$^J^@q;EGq=gouHdnTb4#&acEE2Z>Mr-EYezRZt{%TdZy zaZ`qQQPG7jU>{j}AgOG$3P3;VqfCNVGUePy6? zGsIEsGu9|8znRh6AG>XKh;A~gM^>A4!w1cIp%gP1s%@Q1J!u_JZDhYsRh-tL^G-ap znf)7H$zMg5i@dQta!UNHo5^~m9I-i?z|w-VwlFR17E}q!qrJgg+e6PlHh3Q+laXSq z^R)CRzJ;EW{wnd)abutQ?Xl_I;jUdsq#tq5YS++YFdx;v3>`qFv*sBDLe! z!}a5d;W6=9q08}~LKV%5pwqy{798^=ZakJ=Ig$$m<(#6!&j6P++UEA~4?&fo4Xo zprfn7iTdt9s+KWOOKaetp#JRJMbmnZlfA|bTtq*EW~wKZ3uLP+&>ERr`BT)D^Z7`= zjO_+pB>@F{A2Yvg#b#UEqCRV8S40fIp)XI=Ozv{u)2iqTgjm@ z@Qjsnc0~;KIQoqhj6dhA%}1iN{T$AM&)kjtr7~Fli@;-xv*8uw6X`*>sNbpe;k^C8 zD5n+ouF-n?LfWtX?0Tg@IsI{YCVGov}VEPnlE@)ofW98K7eQIo9_m><8?vr zln>`OYM^ymN6-Kaa~s0!c^29y&H|x@5!b)SDbfN6{m-J+xEqW*tesV>_?IG zwg@NM1H<`kPq?L>8v5HNVZ~`19_73Zd!RPl#TG}qbJ#D1fSFu(n3qQFL+&g#Ujgo`x|FU_ORHJ*3+hPY2W_usu6EUXMceL6(R%wM+I#;qt#V+8)+Eqg zs~QNapZ)#Re*UZUgfA<7=50d$^Gw1!jFqUfehes4*W3a0t$cu)D1mZ{8E!rPSWIWt z_+4k6Q_d-D@3BvsHSFId?jwnY6$`#~?N?= z3Eqc#4IeU^_yb1a0M~B^F6lo9$LeE)hCV4cPpcn%qdpB(Q!57s&>sHvq=WA?F5!KI z?i*i~uDa!3SJSwKXbw3P*M$1;SMGP$fM4Y+sJ-htb)3`oZL6g{-IP|-_!X;uY=_l9 zy4^Y&xo*{pAb4Ljv)_f!*d$Wj=@@zHyo=0ce@7ehIkB8#b)3j&<_FlrAG*7p%SttV z6g?N~@f>#^bjy0s_qeP&0kQ!zXp6MzdRG0TF-OngeWjQ11&xgUg2okpdZTe5MPC?L zukQ&|(7~?zx6u?_81au205`!-XC6!m^4YblH&#XSu=Pv) zfVDPu)5;R_+54j1?5WZJ?6J|F&h}^mBe64VHp~$##e0b?W>fHbRds)~ODYqb{OA$O zfU63D56H))sIr0XKpoXQ;Lu!1r)uBSm{v}&qql=Rh8~{3^jhAfAZ{3@&-PW;L%#P~ zPX9nHum6i``D&|6e9Pco+$IgZnDqAKz@3e9sHk2KyiqOP8T40RDNht@&^n%7dB9f6 zGz@aRo$c(dUEgT|J7LJWYHqdm#>ZJVV}mR;HrW~)Jz{yH8m#@1_MM30$jBC_eY7k4 z5G~Eu#4-Zw&Ib%a-92FW6yhYH&MYH-z|)Z?GA*b8;px(s`wW{<-eVKYq|4*x8 zxcW>3d5##bJr^K*WrvZ=H^La<%VKQuZPM5K{CaO+2hHc3tq%6?q$fOk$RlGXexR>H zJG80bp%~z1q@CnpTwhc}_4yUIF>5CKI8XUvprid~m2k>i#NKVDn6*u0y76-H|Kh7+ z595Vm$ow4r(R>iyV@9K;t*Wt?(8F45w~tSBzBfm*EY?I`!d@;qILBe0_R=-MAKFe9 z!{^<)qzGz97vWaWS+A;uY2?B4ZWSU{hsma7h?+b8siAkyWr1iO|+M0Qic*!=D-id4dnvw?_OYOJb+6zgqfjLk8D25v5nR5sn4MI1^V3L(qd+&`Ojal}=zG*eEkHb4OS(!MqGpA? zeU#o&-v>m;2l`3lCZx#xqfhtr)^~XfeV=EJHVN`&%6l5B2aUNjlW~kR18?+iS`_tF z5o%5om4YPThEPtqN69J%xaD~XS)WB9-S7t6Yj1T_dxt&1I$*^iJ!XYj#_VS9j@O3k zX=nQ5mS&JY!Bhf7995xf7?;c~F?2o`!`z!{rPjV@@+&dx;Q#*+o zK#ycLdJa>M6HqIT0xDW5Er)hOOQ+Y+WBNjUukl20?g{BPJTX0+_r6}w`=?&lTLHd5 zpk4Lk)oOZvS63NZ=|%k>Xd=GgW2%j&0WrBIxMMz}fICk~FAKRv#0~K?AI?Xz5^TRC zz;E#08g73vT`R4*!s;1sXFZI4Z;grNwraw!6=N-7Z&_)rj+vGpu482!I}OYOPHyX0 z=CLbrzvCAQi1t`pt&P@W z8iDz2FQdA?+bE~sG=lnlsPD0b=xdyH8l%c;dpuLSiGmT zHoni=7yr(F9bau%H%mMF%@0mXYdg$ICh%8wcX7#SEibV8?j7Dxc`Ly2=+?uKMM^58 zGPFI;s`enZ+K2AfTB-f?l3H9()%qIC^m9fIBVx=lRL?CVYFNez!!f!UkBnrPLpRZj z8-Hs%^;@vIKG25RS29|Cjc3!V;D6qs{DEh>gHSKoOld4CxRrQ1@V={}zLUZR*p{=` zB2K_6W=}KwTRF`u=8Jeu^FSQvtnp>>`|&~XEar&#P;*J#GT+7*S#`~Z_G2@jGr>w^ z_3R{G*vTdGvhuPRxRq+d+r7734xQxP;72_|o}dGi;U%h{_Rx~lbUM|x>d&QXqF?Z@w7j(!(ERQ976?gHhj?Bg=1fzyeiq9V`C2eEA6 zZYkYkx;d=I_s>{@aG2u zf1)1G%F;uRRReXwM_FDzb33?~l>zXtEkFzLO5C4pBxUJe^dlXuE>>%388u5=tjz#T zg92-%tb}?LyxF0z~hq+7y;#QkhDZW z+(+@lyi-#aOXThrNIu{`Aob+nKe4)Op)=mW&SQJD{iB`DzH8mGhFfc_8rDoWH_oxX zxAs_#tS{DF&8??JRO3kgM(XMFowU)XK8jJ>dHeoC*!zDrYUy6X(l+V~ zwIX^3ZJst8{KUyLLH&^yqti(>auNTJIbIPJMkSTjN&)u|H>W%#^NVlLLn#JS?NNNN za~Iyq6&SS-IK!+T9d5p{x0!40{$@YBo!QOqX7+}AvebTJKC)|CRh^sGQD>;#2)u?2 zoL5Ic<1keyqO(jZYr47I0!noy9cm69u&($S?n4fdj`R;&L#?VNX`j@y+EA?ntp59Y zeZ8nL6W(K6_0h(5{df5OM_BV=xMvgfVVbGEQ0r^ot8>)f=t24?xk>ip2lxaK$8RcE zl&kJZ_aUfBABi2HuGr2oKMrb(f1O^A*Ewc4wR770tc_L$xFdH=#ae0JHHVuwV8?uB zZZeasujVgSbL+bG$ZBj4w^P7byxdV(Z}x^&;E#Ad@mQpluVv8v>S6_cLt*G6is5U} z6WmM=)8Am#qwfsCnCd#BX|*2+02ol~EEbDptlY&^ff z^N6#c!n+B|gJ*6j_lxqyHPKQfhU=maptU#$q?Os=rLUkJBv-YvKz3bA=jkpztJhK= z=tI@B`doFHK3lD$4^dxgwbk~TpeNLgR98#Ws&psm0kf5ncsy|M9-(zzp+2(TUSP4!a%Li}lqD~sS zy))h3?BsVeb{_bt^O#^Q!Qod?loHwH3z6t9m8#OpHI;PA7tn0n!}HKSQVY+ZpK)z< z8dS!9x=5Q!GwJW?IK7H`RUfQ|^v$ZRA5ov{r`0w3KWc4#rg~XxsFu`pb+Wpd9-@`$ zYjTE!aaAJGcFdJbn7hMK9J+M2CUz9XJ1E8LWdan|seP+CP9EVkV#NIJ_?#AewLnJ-^AaxyMh(rD@{~=A^97!%nKUX!8=)(-h^vOF?!MWMq7H`s7MDG2I#adkpB8WazYD` zZ|W+ThvdaN{TsPBGw8i$Dd!c}-Qe~C^~_tyG-xM(;XqnoeZ*A95XbDzJkjpV$5}bJ z*Ggdr&Hs_XFSFmwdu*!tf$cH<+ylCkq1H66fvRAOT}t$ImWYas$~=5D?6fH|1MoC6 zyPw>GN_V9=dZ&~HO;a(@H07ifu|=2S>uMN}(#nx+pp#vuuP2UvkyJA7la|I!_?#l& z8;i($;2VwCb3&K$F>bAm#>>^LFtOW<-jLcT1wT?ks5f}QnETG1=YEt0-H+n5ba@Y% z3GPP|c2X>MhKsmeOANBV6Pm4vqmVZ|%d+`sD?!Y$ii;ywSK+l+ioy0fNOLGF|8nNR z$skoG@fPkEe$u@qiYO;R2ej9vXq(altw%S}0-Og=B4coCdIlFzDS4=tB?GmNB%+NX zP4r1{EmO&H&|zH!UB(W*6d9u%B)@(UpU|e@5?X1zKz)QB((xz=b?^^loAMK`sx*fV zd0Wr{b#}wD7pNA8i(GO6KOv5?ZX)6YMNQ`-WXezDh3wY+q*V&;OGe(_O5&}oL_X5W z!w*{3c}BZ8Uudu5#hvH;v6D}%hi7Uie86x3X80cXC$xVz>hm$bITqc0$(^>d`W{uXBLA@WU&!@7P$ifLELHg!1(LIvHK z<{<0H4bTz|!~p%nxe)k@mHeo?yHlAYiz$1-ul16bar5&NasaC(A33*SzTQQ=v^k${ zujY;I`n;H}!!_Mwwe0O|n7y1`x979c&fn~WbCfk_pP0e(@-ut{|5Mxp0%>i~fSeRT zrKWtT+>!sF&XDmFg09LGN31SRmeTHFG*HU1GfSCtLjg5t2!85 z>oaJKE}>)SZ2FE2rZq`@ItNzvHFTb6s0aB$L8P}k1uvBbzAr|gjN*d=u5{%bJKz>( z8Qks8L|NJSAYR*@#1{JnA8YsG!|foSZ0}<`fZzVjt_`%1qEKDtXGK_1c8)a!zQYLS z69?G|q4JTStNqcv#)bQnxTKtf)SB9Gg1;)S;x=v<^3r__yn-e)Sy@L1qObHV$^iGJ zxVi_@GYHA1)+8}H4EFrRq&M9N{mD&aE?Gp1S*bv}ht>Y{BLr{-q6G7QS{40-%)oxnZ4_Hhk&^@5DRDcu7YPTnxPgU9< zG{rX{IjR_Ft0n>8Dp7XCEyG&5%fa}sJ4@s;ySA(f`YOZzN4&SX zi&U$$@YuR&Vt?YBfP0?Zxy!eMKC=OwEPXtuxD8jZODqt7$_HYCTTJ!^l}USGDpbeS z-0Wlv5I|IAKmAqdsh(F9EgPDm4MZ{R7^E z0j^=I-CmZnzn70K1iFzAkOy#G{ApbjyR8d?S+_(x`?GjsYjQj&(JHZi(!+NG6N||w zqOSX&+ywQy1g&sq4mNB37H};a> zjPsAb)60$yxAVq|!@Rr30{^Bw-KUf^1NvCc7tl_fnVanB?&yqa_afi!^?ljk!hfx-E39m=DNI~eHti@~9^rX8s zj--eE_-{QgO>cCd-Hd5;fw7vdGuF{Rjd`@aF@Oe*(sYUbg#`5Zq!ZL2Yhc}+r$zBo zvI4!p8tmJ>mCI18A99Pjf6GOnwd7(tA0lS4Pkfa#0%{||iM@;Uu)46PW^p#$Ok!0` zm1Qy0vtnjxm?Qqq_M0c5Hp#&+T7SZtPbZo<>qTW&O;+HqA(d^8+e4OA#=38nZQ$%Z zi*iHu&0)|IS0RiZ2J%NPdPy4soPcArgz=spGITYI$ESAiXzEbUOWMz~kCyZFrtggO zw4bq=JOp-J9(@OHrsctX)Txkx`9_3VD%kxTA4eXBy*?pIeyhij;A{5%pX`Mb11uQK48CC)p(M|3(3r1;x%@w}ioEGwksp*MF2!%%L^4FlObPO+ zi_kYUJKm>l!d><3P!ld8J&hJheCD=c(U3P0W)S1odvH#%oSC*F)>v=_)OZ?<+ zgOs*vvI}}Hd*caicj&;k1FrE8>I8(e?0AQE7FXBXlB2L+dq7A1vvC{pV~RtX&nPvW zu}8h2|EIRnKd9%mFKQ0$zS;^DPvhtqbv`JWm*N+6J{m^nD1?r7$Bo?;9Uq7U67o2m`mEShj{X`7Wk zdPDS5kD$uNMEtvvj!ZIUkl}_!DnORZH+>O2Pv_}l?K#b*J)zBk1T>5;rxQpkIu%PY z2~8)%lpy)d9f`Zi7pSYKg8J}<%2f8j-S3olkuy_v1-;axbZ}1=v+8gU zdRe!feem<=wR<`{?AA^@_{zq{I2^K6zjB2oi;hglM=VL{#0#SsuL0z!Mx=pkMg4AV z^`=`G7*HXtBXIb#;^M|ryvkTWJ{o0cqUT?l$sEgA`nPrb~uUp$>G3!6^ zkC_>m2iP}!$AIpy!H zlnZBBWi{^)?73+e%SGh0TtFwg6Vy6Nb4^7_`bD%;{~Z@Ga*|obA#&2FPX9Gd!PzK> z`lm5it#0g6&*(SRlKM;Vu-sL*sQc7oprboR3adNt89E!)0(JNiQprt6GROfq%=e(j z%vA0;#gxZ(PuBvzU@V@yx7Qe1_9Ep3zwad>mxz~#dwDZf-kA{3;j}e#InAvK&TsIHt#kfyzB1RTA^NiI@;ysb ze&b`1CSK#Uq6}>;|4?nYN896G*1IdGj2!4s&rMX`I|(21<^etHS(4A!fM)hxhFNoQ zb*Oiu`p$Dg&FgsuYd)mb(BJ=mPbfqe0=2BJ+6;fCmNJSibS+Xv_8~8UVY8A!f~+$U zRR$mY4_0pFN3)MRJbqeUkNIWGSUvDePi3UZ8WxR+qTU{jcu#3ohE4-HBOo|P8#hFF23jgou26%oRhP6=i+yNkDw=i zXmZDlBo|{c(Xz2l&~dREv1PGd!*itzFB$6@xMHXQgVBH%UEAm(|OT$^g-kVsSrs*?))5V zX8*jdd;Bb_hyGly*8WVU6uer7L~_d1(Hp_j=w#&l)PY-8f#A8HC5R;p2DMcSc$>`# zJ|dZ;GA$q%vd!`_Pp%SM8&xU0u&(A@*Tq7;Oek!VUE%elSWF2zC*~SG13mD?m>XPYzlJIXwa0^l4JM*IbCE_bCCwv-A<{|W7E%^ z?50=fkhvWyN8*OBk$mC$G)4GN`YBX{&4Euy%1{d2VTYh6_d8INA4slFA<~J0B0VoG z;;_6TATi>ZdCt%4m3+5q$bXaH*l)o?w#rY*&Ul;Y7dI2F?5;(&NeWUjy2Lz=#6=S4 z0=*vI`R5{Qz{4n|I!15Hci9W^u?N+e2f?s?a;qGt`(S4jrN^ow$sm zey?G#W9T5V2_nSD^6b15E6FR<;yf|Q&)?|;{HS`(mdNdFWYC%o^({8WTSd3Jx#-*I zeo`%(pInP9T_|ok*n$S#wkYJFJsB3-v1}wV4sxXHtf%kkR2sVA=(sz@Y-N)wqQ^GD*!Zjr^o4V;S&qj!AE{nfwawuEM~0@BF}`>%ouek}M@SJf;1 zapo=9Cbh8gP6lQ8FA|={a+Eb38A@q&TjwvGAvDok36&;Q!k@^d@GAN=T!noJe_+qU zqxhC^Skw-W61PGxQPUT&206W~<@Q`_JKVRoh;73=?DQE#e9M%raV6L_={z^yI6=FxCeh ziM*mGdBPi;5xlyN#mghHv^Z8{gJ3xA?7t$LF@`VhA=A-KZ$7|lcQtb1x>EINSck z>s#re;%OwP7$ZvZMWP2=0X5{WVgnf|4w%N`iq0VZL7uab@I;p-c=zBQJL30bnf&i` zr8k3xUHZN4U{Nn1A|F7&7Y>_$T5E+q8t#LmSmx&0k-jxp9TyK&537VG_D(&~PHSEwT`Z52nAC>{QEMkI zdJXevTxf32pRa4F>51 zu~b$QR|2@n25b2szbJp}on=G3axA5Hm_BfG&^_*avc;w3fZN%;2KOzSS5D9L4k(U0 z*COOJltH)ZD{ziu@*vKS5kXts2(@C#ATcQwd?M9?bF@2l_H{uc{!b8FRFwO~2KkGX zR$a7Ksl0YxJ;A=9kJ+8gb9kY?viFb&b}hOczFj?`;f!PF;>)dlJib*>^b_mESq@7a zUdt-MCR*L;25Sj8sprjl%SGjrM_03kC?ihFl_HDGDSi#M@bp1qe%K$xdiytNem@zF z?RO!}--4R{v(Dm|1lx3qS_;SE4}LXxBODFx2fqaEo?Ikp@U1|pEVi% zp`^T@pAPWf(zE_tmM$pE7Y8?a8rfOwmk&i_Rn4;XD(i@TYK<_l?EECX{gI@$mr`Mu zW4EjaY%<6HP~v zg`5-D3AMV?LY82)thubdm6TVs=0c0)0xxeW)`*R8lzc88^Eg&_o(;@~Tvlr^0xnS7 zDoXE(rEvKQka*$zD!P6$&v8ge_%4m(r|!YuD=8!JOhDH zf00?_K-pY6a<$wEZ`BS#LzO2ut-?WR9r$Op^lO=%p|dw{Vpo-ndq-n61l}!K0!?2w?$me ztnn=o0x+_MRS>ll{C@P_zKd9>S+{g~!C(AQ9chT2@O&0_$NMkUt za|N-H;@(~-39hPaK|a+e*e2%$Ipy2nL{LR`3eL-fOtJ#9#M(_)SdHPY5oJx`#2wd4 zDo(%&p`rL8o?>0J;IpiAaN5t!?pl-SP3tK+XO$#Nt+}ST^+U(9n(DRUipno4!)5ro z%*eaTX)J;KPVWcR=z8Q*%tHpkR5ov45W!GDlEUI{#lO?6M};a+!r z#(SjF`%TpXtoIbiG&zj=q#e9t)4-wOAJsD03FYua%&A7C9&XOPgKuH zi_wfeWp(^3Y_30wJSp*>iLUJGZH0-!R$jj^s7w z+BEbJlUoi>j*09)XfP`CT6{cP$B)s!`73Zz6TB z{leO$lnuy=opIq?5{1?824dAcnd|sTc z<3q_hDAN~mfm)@xt_2sM5B!ImpaVVO{~%-hNu-S*o7C}_n&clwnz3I0|cf??`@kP(WKTk@-1AeX3SvXm|)Kk4{#rLklULg9iJN3NyWWd&AK zzF-q&SAJT4=CKsI)asZxrQ%t+btP-5?rSA7qpcZuVw3jPBvKseg+L6Wo5TlN3#_y| z(6}~3w#jAihYGO0d_MiaKafPCEXgV6n_}Xn&L@iMRN_~p+eGn=b&<%%3-a+E!9zxZ zer&go+TNc}fAKTYJpM{#hU6fP{PkuMcBeZSQ{kYz-W=RldE{Vq8eEJ{>H(ZUR?928 zuN-UY%JQVF{6UJzt+cXi!kWtOY^0pcH_ABTshlcOs5hd!Ds1h;nn|SRSUvR$>kmEK zDr$OLOH6)CkT;?SnI!(gY${Bb@CER1drSMX638nX&hpXYY&Q89SuOE-b(4kf*ZFy7 zotLjw=};93d}EJTJGp};mc7~SAP?IRyrN@*MRZ6|g$_dHF*jI1_6Nm*|2zP@ZlqZ* zvl>fX(<9YnEmaXPN_>^roKl<2LRE(JQGby}suQiDe$c9FFl(m%V|`UizDynCmsD7U zbPad~4-!lDJbbJ3MM*PR%r@U#tLm({Dugp670WNb(R0Cd+9{Y%lLxKoGe0Tj*KM-HpGNk=2l=}H z+4!he$_C9*-KH=y_*3_hD|AG**OOI2omt1yr}Zn<)BK@glSAq#*{@pCeTuLPYB_tP z3UH$i@NAd`jr42*e^PN&r?kH7Dpo#I9~l4*tX(FL^~F#t57{I7lBQxa#`1!+foH}Q zR+eUk_x2b%mHt6C0+TvO`W6||$ALf;3yps}e&^9I@ITR$Mj zFot#h8nWCUM0We-$sObYB!R}RGjc=j1k-R6Yzv&Xs2Q&k!L8?<7#M%;dqm3=e$ST<9bb<%m*MwN=a$IYi4QlQoZ zJ880D7+v9)r)7Lfzj_zQQTXz$^?o5sJVEw&SIh%%fl2AN#(FPg{`DO*D0l@Q^b7iT zxl<2;?^#K`P>0PF{n*UaJIJqkG~J@B!}&Rk3g{vaoBpDRiEni_E0H-9-~Q7Kw&Rk6 zb}igTW|8mq74pV*=t;W_9b@;UsqNJ`PcG0j$jq4l9?5MmuHy6DtQIQ=|FcqTB^*>w znA~7qra&sCq-E7(I#KSYH-gEuP|%2O^wZPA{=ej|w~H+D`jFmUUed|?Vg`D<&1!F; zdF2&1)qL9=_5aij(M|jkjL}+*8RaIuLm9n7bCa#KHSnC-dH}tu>d;s!FKsI|ITSo3 zS%Yn4jX#;I*~l5FXL9Y zSZ&Zf^%`(7mV+U&S;wJ!^;ddcUt`bpQts)tBE5-aRe~!>Z+Z#x>xg|+27kRkI$*AW3W;)=myUHzPe!2-w zC-0;F>fO}y{e!w{uoh!k0Q`B1{tJ8WIXy`qH1qUY@|#{rx1rPjKWFqiI*$0F&jT0f zU}ZC(t?H(=-O22=r<~HAnpKrg`wrq>}H5;${`CNw!*;CN-^&O}I=f4FKrXW%3LIcz^vPpI$ z&x0DINRS2RgTmUqWe#8+bjF@k%By8Ednrv(PodtutJir)wemLUq5c9*gV}m3Jhq!5 z-zyu~7~jC5d!Tn>E}hV;$s;|H{?P4MD&(w{GE8(f=foV-%Q|9g^n7O6Nys<5GO6tJ zCnKEIWEQksbDRiibv}kejoyU(#m9( z*ey*RXNGz2oHE@*5pyP#hp13z^xoGJ7QRoehGNrUp~^IHy3sDq61vUaM;}->;JNgi zKI0$h3HF7qqVM4}`kaJ>qJeM!b>TSLKXlIWEr zn|?9^6w3m~ZRkQQ4lvZVU%{62LSrZmRo3l-(CM&B;v*$7sn;j5V z5BZQ8y*)IgJAr11R;Mi^@#&7Aw@Kcgv&fwvHORIfjBNUG%-s7i+GP7#(CqqYblu2d zWP8of@!k45kC#)!eMT<}-l%`kk*lgts-5O2vLTMC0qmkW!yhTj`lj;P33LUgxXvGH zsd;#=-WdK}=ZyKG$He3`+hYcpT`_yj*cd?yApdelco|6${)bc!<)R&({Ga-kd!0RIvmO!iRWFYzZ&t?4HvMCs znY1za(Ze1`X!s^67fMN+IGt%rdm}A@al}JEs{`3e|fhybA_FHqmDO8d}#|1n<^y zba}J`{T3-l2SrlQWRVZ#t#_D5`Wv~ai?Ba*Pvmp16nFK0>m_=*pY&Qsm>!|{CUH2AnIA4|K84$x z)G+j-YI(1-AfC(OX=z8Xxc5>ik6BNq6MQdw086%SrA=M zzDEa<(QYxEj}Ce5U4u{ba&t83WX|L6@mR%0RrpzFB7f=1^ddMihxJ%~2zR^vxTBuY zgY9ej7w3)koQR$oN@{30hp8K`X~u;+;+bl?hS!=@;S1(S=())gl4iP-oLsVVlMhxc zqJTnu=Yw&3oj@+q1!N;xL&loTq&?Jx)zm&x2APl*f&-+nzmtqbeSX$mO47JX$cpH2 zQY_k&L?R8y{YWu9=?DMFN?ncY?9syhL7ZwJ%VZ-9GYaolYSfEk*}w9x6y zK&V${lgwr<%?oa2X|tEtHXB4c11`I%X)iF$*=c@tE}8hDe@xd9A*(~F$-Yn-vLV!j z^bHLqDME9}I%g*dITyj{cu2-u-^o&F2v_1hIEQ7VBXAnFB!%E%T9{_k#gJ23}<0Ik|3Ich^Qc`qYq5O=zg<5I?H5tJDDqPWi!Z2 zXKJ9so;i4{(;}HFjXDcInWMU#*#}+RVcmru(gWEAq{dy>UBxq9&ibZf+hKFu&SGji zRm~-*vq>77Yia}kY#n-OYJ@@8#!p7C)EBxidZR-oL8PU;oaaZIfa%6 zKP@XcOyk01M5)`$V8E-u`-_Vb5j8w^W{4#+{G)=~8;ubiTb|QP}bn}pI*FJrs60>9~ zBWo^mvEPGi;5ejZzxfW!=6|F&y|Z+Ix0H7D+R_$YHrn2MLuPne$YrlR$>gUbzxp>! z`e2+n9uz=c%}bphIVnO{hj(qDPMFhbH5sX<;Vf*&GO98#{C31wc~-oWeXK8%*|r*O zXHx&zjZ_wAnrh(OP%WIKy0X((Cw4C5U1c{7?S$}NhwIhAS8M1=speNZ(`X|zC zAA@Q6%1mdU^iAd|i^o?bcy8HFcJv-UH>>9C|=?Vv|%M-VmM2qH43qqH0*F)m@zJHEsOfZlylkqg68JfXeQCP$`{U z`agSs-eI56HS8F3*J^EkvG$ww$d&od+mPIRJ88?JWD+e!w~`_BlG#PS>ifvk)U+PF z*Qd(7>}gPll?+NSbk13MKOKAF5w_0zhmP_N(gEIlI>~EIcX~x=)YGJ%e~bL#FC+DX z4&-}~i>#JEO>1@DWYP1Dt2@KfshHVH;+b*iVl-#hbw++zzvZj+DzQZWV$IQyt@*mO zyvJrDuFu2zC33my3!~19I69t{OgFKL>akXRz0ex1f3>#jLDmah9e(Y;Xk#{t zl_sC~Xb$jvBm*BwX0Vg+sOGc;=GS~OmOeDQX+HB09j6I!!St+@$_3U`F_r=EW)IeU z^&md;{I5V;|D=ok)pWW)m@f27(cS3Hz4A|z+`$MkHOPrf$X8~loMB?C%4P$yQfliR z+SlFmR+CeAAU{=ndPSY5n~+C2Q^oLcY6%~qGK(o{p7>3<;+U#py;c*g)OwTEM4z$N z>ff!m_;p1y(wb*VSzpZuQJG8=8%aVDA&YoDs@XEyoBc~K(oA5^w_>BnOm^4oU|ORwUS-3<2}%fz?R3zRjSVufdgxIX3)a$t=+BkKnb|Hlirn4)&#EVMmm1ENq65A_P3Lo!;R{t~ zu^AkJV@iUVkkg8-D_a$SA575sQO9sAF7Cq3OfRt$KKhi*z#r4{}~IvjJVmtO-} zGMvuzkCQ_{0)P7HNu}V1*^K=+j?8an%eOkdTBTR2cF;Vh*SGY0H57NM1n?I+MEa|` zw3&JXKIu?a4K5*d)KK0^z2QT_4O*raiSz0v%>9kXr;}I%bQ+L=AI9EH>T5 zKk&@RM>g_dq!2$#HZehyLl-)fPM{CT5t;`cXwytw_6&XAQo0gbkG^|Y;q;fKnJsgI zZx&+Zg6H(3zm*>L2hv%79y-c@PllmyJqP*e`}`33Y=H4o1j@nyW^7 zfl7@!<(;~s&!G3dScS=WXy3c3@?a0&q-|6~)=gb!Lsdb%pLzU{`innNF(RSPE~@DQ zVgi1i)*->o176WA;*(7Ue!)CtjPzy|$rm~p)%#X*pWGv5NR(_a$)T^!0jGds^rk97 zOR6IDu*^$~$Q1NyAb=gbBFTeOZVt#3K&B&eNjhMNApMpNU&NC3?VmCHcrvasvO&)jEaDGJ-zB?xR=9h2L}2D-nI3>XgKF@)^&q9`c*JWFOvOqb=6fT zL3aHM-C6%``ssOOxb99D=u&Je{HCwzbNsU&AX1|5Tg5E0MjHbhrxkFJrFLp^)~-vg z+vD+bCs|}aAWdyaJS!ueguEFen$k9+3;gznQXeU;dDu9dDMR2FIFRl_cl?2FNHzHH zMO8N1PbQ+LgYP6|@C@tW7)k7}CA+5Z86WRE9fMszyr;T3Q@*g~?>LnaQrqQAlq_)lW19XKPVlaWDla?dYH zD#Iu0FYl=tg|U?NW}1h^t*kX4zsV)h;;~_!kg)8v4Gy?gMsffg_5ZtElT6j+DLS0ZH|&5dMcTt zT0oPRoxBTNlLIWINw|-H_WB~Hx{^ugCC2yvNw0A)>ILpby$%_Ef4F^gGOvRk?KRN8 zS5GhS>*>EPQ{ zll*3nC2^fyq_^{&>~Uh#znzlMjI^b1FdB-R48&vzka^t16_3OhEbuf1}5~!=&~{nP0u8CX-jt`~@6j zscZBk_nn^UKG*x*7g~a=*~WXXpL;*_5a5S7f;8rRPzwEsCT6o53xsE_S!8aSg(Qk@ zb5=5kHN^fi4)=^*=#4xk@oXFTU}4(8X-6-ClbI#7kG2Zkq=Q0VXfI^6lnNzcpPck; zq?49?uv4&-b|Ti_a_JoL4mi(QXtGu#v#t+qPfF6-CIGVcI}&{R6GvtxaWRJU@Sm>d zmBPAstG`Fr=%LXjI#D!*{yXwWor>&H=OYtTG}29#jn+|zqm@)8x3u!yGU}vPLv8k3 zsAa)$sE<~t{pvD28SXMsP6cK~VkC`ws0%Mz@60&62ubdYCd-_&|0@ zJ$MyqrP{$CF%$gk-k3W6Hq!@t?Jl>9aoiMULNuzAp|^M!T7}J#?RrOKi#`i3cC6?g z-8p(de~jM3dwQcQcp($t&u5h16gikv3{(3|LjAAFZ4!{`Y&3r5Xj@ zNS4SS>ibXRP5r#B+@G&h;fSkdN0RBd(K32>w1e*BE=2zO30=zn23AuRuu6ehtGQ;i zK8w4`SM!ymBB@wql9!|RCMJ?x)@%}EZy;CgHDsW(j(m5Pkd~n-WNBysdUW;4&QMV@ zF%(1chu)YI&VG~KnQr>qP0dCtyE!Hdur&GG;^s4AvT`?Np#Eq6R(MV6@M3&o1WNP>ZITk)ZE`}G8?cpJ$N4NSW=xo{a4r(C-StvcN8Tw2XI~bom zjy$$1l1IWJfAE`TH=Ads1Cj0o$DGpUht2>bJPvB{kQ}X(2W@n5Fxf|Vh4f!;E?w8n zs6Rz>=v~qL$d3C3@1~``jEu$%?k?3;#UgW9Z*IS1zvc|Hu&`rc~&arjQU6v~J6xzJ!Y)9x0I~BUfeh+PC z(?T;?*-&$K)5*gsIUndsdndgI1(gzsfh}An@%TVuvn=E*xdYAe1an3gHv83ky-Tju z`+~0ehMx^yoJ5!KZm9Y0Ar;46rPfB5sMgV?s%UgGp0lb+^rc!FO{Rlr4L!=8t5bW} z2fW;7t3TSz4<4CWvJhFI=8}#2BROWOpj!POQuc-ZV5M0AmHb=q#V%P-*eu)O1)b#l ztdosr3uWblLuvViWO8>MSU$NKv(w z5Ur|uL33CH+K_C~7qS#IJA?528GR~ixIg4uHJ6AksiDisSkcq2J0hvirkV>;AU7j13Nog=uYP}z2aP=SDo8*vvZYp za*pHgcF;-oEc)5%4G-~ZbdX3!SMfJwKif+#(mv!WDMbE+*T_A+!MsrIfh;9A$>bv_ z36>+{x|4q8<=4$TOTTa*!S~~&s^P9th1~fnmpfI}#52X6qn@~{RWoqm-+1@cJU^o9 z2btmRUPoJM3^Fhe=(qX}s^6^UK51jF(%;NscF!#1VbTjdg}hcja1+;(-u5N((tZbQ z+M?r}By^*boo;h-(K*=1nm9SAu`|;7c0y=&IqhV9fQ#mR@|YhdimfJz*kqECb|qPm zah%r_CV6#IQd-$i%YHV!gSS|(cg;Hw-6HQVbKZSu8o94b9QPyeDMD^XSI<2X!@|o_kD!9n)%@cp3$?vZ-tGvr5o%i0Ha1)Rb zz;$Z6tw?ouGHKxMBvakn0$zH$$E!fg`5oyO2;h8ijMui(0@(ydH-x}f?r?)g91E0u`7RR!q>1vCr&f%tlw z&Zjr2I@q&D!YgMBFoGBQx}VHc^_$~tSOzQyiE7|Bg}lz>o4b|7cpph_FB2W^bwnR{ zA#Lbip)dUZ==2~ZaPHzP23?Y8stY@z`@x-H7@LL4sy`CP8?zQH2eR0Fo&ky#m$tVq zV+}9F+1`-;iFJ_Dxkjow6G&61D5-%AjkL}xbKkCydL)jCSl4uCYo8@&vE=P6(qhgAl1R@K$F)CBdfIw@iGEpzK`K`Z^p2M5}}s8OJrgSbac@Mf5P zzzhfCj=R`vg}c^zlGXo2mOurP9GM^ofuMRzTl>3hb~Sz-aQSDQcjcp{@r@RH0yx z+T~wY6?{*<_p<1nUOPS2TdpU1FQD7WWR7|LjprRS&3p&Fm1?9ea$4R%IW=FVrd3p9 z%Jn>YT^~VR{egBQ7At_+^@A2*hgbpDh37~5VoE5YD9d0yq0_AGm}kRi8q~m5p?7Iw zuOhY3f5>fn=8Lt}th4HxViq+Q#V%b;bk?hRYVES8sxp|DGwA?@s!qixc~n!R*{{-x z)EAXV)dAXnP*zZdWKVTG_)WD7o~pP(YW>XbqxXZ4wZ~5dujkR`Hq;Xa9NF^0IVNIA`FaRzrC-uq z=w>uUMjb=?R2ewG9hGHuJvm6f4OZ*lf@iuhd>*nwXAvs^ zLg;@mAz%twf+3_KFySSEByZ6Nt1So7W8l}~K0wc?pYZKX#=hzTYzZ)#Vx$&(LaN{v zRGuYb+1UmbpJnFnz+yj1Lr|-=6Lsh=5r;k&SHa7gMiN@BIk(X<-OKz)+L(dpn9JI-X*ui%GKAKq&h)O1}-9oLWHB{xy# zG9_eh^h9?+@%-If3yP9I(U1Q(I6)Fhm(-Vq=o;CHD!GvM1aAKX+|*9UR(*q{p3x>2 zDxuimuQHaGexm<#M6Ako(hF=1ErraI4e(`>{3E{O;d z(6*!J*h!ZWS@lQ$S)S(bkl9UMOOhDJ72F? zuXRCH-rSTMkTVfOipxQS$;aeHP@Vo6?4q}Vgy8!3MSu7*D=Cxm5wZop2}XM^bqGxG zTRg6Q#HYf`I=;EWXPF&5Et$aAk~%m&LVPzp!*a3CY$cM895{Tm=b7kk;834_G8=0Gql6%QcS&Dp? zM@<=3#jL=c+R?4`DE(6@^q?o2@+uB;?v{~5P;yO>yTHZH&#HnGUqvS8)#X^;Ro>^* zWhQY!wilL~4yD9aaY$_wDfA{WOHaYgt(6#V(ug1CHt$ac^7kYG?@CvIf1im}Vw=(T zNJpb=IVs0+-tuYS6EJg?kJtZjuAlPR>K;$0c7usOg?E$Xd3G6L{{>5cKo}=UQ50*)ns=wSH9C<(^3%c@zatCiBZ$n-54SLcj z@1(x+2kI`btG9vi(3{sX>G@UQN>xc`I1?&bh)$-f(NnWg*SBF7*~3PfkJuHm@IJZ% z{{Y6)0M&+5Jj-Q8=#tZN8GHizw23VbI#-|;$9@^uo(hVuC!D2YEoJuyH}xBPBxidrY>y(=i7JWA{#)`@QCTo$C}lgn)^7nKk(!_EcPlUYAP-~`I>K&7x@4= zhnJJ}c@{}{QidM3tMnrLNe=bJ zT#;Q!U-^n;LITVy%*+EpVKz5di?{rPjR|V=>A^g{J@}K~2{ex{Q;ViDkJyDLzDg~| z;?qRc4L(T!#(iBAicgQlA}iUiqzIfIZ_p*Q71qoNB6Ip7F}+B6uK6_!ZfXFO%{4NO_8N1wXGnl1h5w1e=1{zf}$(&*evSQQDjC zVC0_$f|d>^D;7fK#4H-+vXFI_FZfEM#_()kkOGdz5 z*CDCdGIN^cG|k}r@d8})mLdQKzec5oey_EaK+UioK+m^RuC?aLxz;$@&Kf1tS(D{C zv0Ani=di;>$w z;6l!6TGAz?UxCHC{@vNqQk|p#laBy<*S6+RtyyiTu--dVhYw%-!A)X)Wephgp z)sPE--B)4j)JNJ}&!Xu~M*7YiCc8;hG7??8lB}Bv*f+hM&(rlp79=Cxf;NAkx@YBq zC&z2q)7~o=*puaQyPKS2H<4ZKrZR`!LEgqY>11t{FU8-orbwgK@h;Gq9ajZVsrIC! z^m+nM3RBm_m?J>^vjI__LoUjIq>;_($lxS!>I7`K-?4h60m{fHA_qm z@IwYJmnNGPW6oJ8bRBybcur+>3MZtSJ8#rb=aL%h98>L_{i=X-LfyBos=oGX^^YaM zGbjRGSr>f@Yw8_)qXU}T#Q$GT8@Xgsm=q+f?t|+745=&=(;h(^x&}T-pS(BVp{8Ru z-G=ZL8Ok!d%bAJpWN!2%i|3wTHQgg@t-FaO_vWx|ULUAee_?Tvzwsb=Mi0nsbfxM{ zXX;#Zym?86kX57yZ9y7h9A!BYq{LkFLbNu&T4_vi`ZAQrnXrL#m7o@ z#H^N|fTL$6xBRBW_Gghs-eGdm{g+g7L-c(#Kiv(k;1YNVt&8@fSE7T!MITJZyIpBQ zuN^(=Ri>l;LbOE?hgOvzzym#rJove!t7!vlJO^1o|1;a!QL_{K)B#b;EVq)Fk@i2j zq_bQ9<4o4QLe2EuP*I&GoKTk!D^)T4Mr8;;QTIdlRNv4O_1bx?2Dp*mS*FL2w{Avz5U3JY+C4DrMMTf&NI(OJp1;YQS5XN&h z^i?$sMb%j+zE0+3)0OO+(2e&)mAXn-=6~o6EM(pxDSV$93Jh~6s^WJhw#-3Z!*A|y zZzc4_HwbYlEfLL0H$>{tY>^)H`Oi`G$j_*9#GKN%!yj~|a3V7^RLdN8Mwv_YX>;8AX;z8Sq#qpT z3bW(rYX@YvDG9&Qp|rT#MH9-$;Aw?e#LL3MUU^o|t;ZHbo3T)|1=|v-%eq9$v4)W> ztW`v?UnBSFo5(JVV<6>jC3?l>bgg%ptng=$ZP3?Tm2shcx@B^hUrkpaunTEc^9S>B zcH@uDhl5u5%yu zNyd4|*uA@}YSmhEese7NXlB5jau~g8wINBNGtdZGXd$|2ZlHNOHtwd%;cBuMXzS+T z5_}(S7GA}Zf|vN6{~!L{|Aa&D72fAv#cMt2#CntPJFht|<)_Dc{O71nFc&#tHS{q2 z0KJI?)>)C;dLXYG4jrg;2Af*o5ABD_>bcNy*-DnEJ+ztH!Lq42wvm50|H-KPLN0P& zNh=~{?MMpMGg4dij*L^aBUcrUq|po9p*oiPK(})$n8o&HbDX8HF3>5Edlp!`aSt>L z?xMi?z;(J0 z#VoNtOsD7z1TstURI>*vhh^43)+Cb(_0ua*XO#kXk~8r@A@Ksz{WA2BpPK&g-;#R4DsnlfK{|#1;WT_O@aqC}3%s!xp)$P)GyF&T ztohFrG}>ALZ#lx7Af}<{k!m{Tgek8E3MBj^m)!5Hv#d%GNL;{;Wp&&}T?S7<3AE7cw01&5>OC~wyur-GkU{zl_0%;sT+Ou|Rn=K1A38N< zB^S#D?s;**T`W$!W5qIekm%@+64Loc406thTec$*($a~_KHF9?=-E}Z@7JBDtDKx;Y3seyAyE6F01UITl)nw>b)qB>1AzzsZ3_; zg<5K@mkFU(AAvgXSHRRNgNFrE@Gk#4j_ort*~?9Gc$LVnnEK>NOfBNYlp*=NRAj#Q z1E=u!;R`~C361a`;ncCK0W;%)u>vD_!Me6HBjH}f4 z78S?opkBbU%y(mC=ExPfAhJu|j;xRY{Jf8BlzSsbWy{D@dB=^Y0&Y3g))}Kl+LzQI zmR5J9Lv(SNw-a2>oCG%eP?OLq0`DZ0a9;rS!E(L{%?b%#5VXc8{q-36UvY0QD+%ED z-x1T5OpNJIX2Q?0m_JDpuR2-eWg;d057-IT;nzV+{4S)x7+ZtV$#S5TzGY3knZ9<7Euxm8KnbMLtuWzEQ7xir#3o{rR%7bBJBipcNs z_ec-<&Ydgkxo6~Z2dQ&*74?)YQ1{^5Iz?*hCGfZDgOZw())1(DU%?((%i1lsLLW3S zn#+5jrQtbrCP;{*K{MRdpMigPNAV)>5$@)F!|lDFc%=6cU-0hWT>f5s$RCZ{1vPNa zP@!0$>(sm!jL+X$X(0ottd4JW1#a*(n3U~B`@mz_KtCbx)eSmX?PrD582g3H>#UL| zoX#?jTTPB|^UIZP9=XLWBFDS+WNmk-eD3U)?HnZ!f>(>PeZaNJ1@x1p;B(Aia^hvc zSk7f(Ydxd~6-JNMI&@8D!;i#t{E>5MP2Du5cmv zfR!1k8$)Gs2z1Tq^)56`?Z#B?Ab-onG?DDZwu(Y_D{;q8BRV)=`Bmp8&+J~{b=>Q` zz59tbbW_5)(hSbX^`edA$UAl)neBh~M%GhJpj0m*v-Kie3~HY1X0+Ac>I=7$R(dOV z$SOdG^#=44>XXs@8rc~ZqgFVdLV6SZ?x$k^`W0DczZt6!KkfaRY`&k7ee=K29>Fpi zE38b#F0jn0hUYoN}UOR&!`gp+ZgDvX-Rlc<5Hi2vYc@#wHHIUD>7`|2;U(*KQC_6JhO zUrfJwTdDGP(VYG=cqhZ?7r#240JTfOa2GLf|9#Cr!M$oYekC=EQN!W%_+{m?I)TRZ zv1tj<(t{k)U1$N_6wZ=db}seK-Y6$K6{PDv6usODVvAc*TykA;3f{>A_YSY-KH+!Z zeU*38hXoA>y)N{sHy)m4Jgp1o`gy2X+67r@;_x2%98Ms&cm{G` zY{MUAAsi28yhTkq)Xkb~%|+6j#vOn(`ala>3z$vk)myus+V4D&-C#ZANIE$v@>raT ztP{T?6U2|mFmWR?T1<+p6iFhN#1uDyyzaD<*f}R-+rKHy4ucN526Q)G>Yiwr$zY|o zp6SEZVxX>ckl*1hG#2OPHYozHxn1U{?eu3xfohT>hMXs9iptf*yT=W>Y%X>s+yqP}%ep4HAGk8T31ofe&+D(6W zjLq}PvkqQYR^J=Vdcet-eF0o8*2G)35qTKqo%6?G>m#akSlJ z0L|72D<^(xT9MLbB3-E$v-oK z-b);bOc$jh$Hh{YLQVF&)b=4s>^$l_-Joue!m!?t!#%eRRE$5(XT8WesPdpW@(LO* zn&aX8KRhSw2p-^Zi@uSaqGIHp_~<5*gWR_Ag>x9rob0NDy<81v89`IO5$17a zOb>j`)P?MUyl_8^XJ(;aDhYlem*dAGA$iCDCJuiA=L2LH1pR5eU?pAUAEV9uGqj|C z81~@Bw58vT{_AI_EVxdl2E9q1P~nf^-}nSqXtU^t*2{<1c2(6n0%VjMpqGDY4b#8S z2k1w2R6l_y@J6I~&*1jy_I#b0|r@iobZD)b~f>T)#Hb;!TwcU;=4h2Da4attbIvfw;=7n~&(NC|m}v=X`Lcs`z9 z3-8jLVO+K`D8@<$)tKLiBaeIQKlEDAe1 zv%~4mhH##9H5}n2=hd9H|d7R$M`k-7-_fmisF_R$2xAg$W52(VEO zA;?ju8PopCIkG2X6v1dUm_E#`~lhDu5C2y7(y6C}YG&$crg#)l_{<70BEvV?0&fDy@p4*)YxfCX$opK<9kSPtlHi z5{u7s+2_JT_R6q`Gd`T=%nz?RYs0V3oA85^gI{x|@JS95`J6FgyPa01wvWrMthZVL z6tHsy9B`2Q`V4ZMo@s%swAl` zpOVI+8y(Ky(=A~$76#kcAHjF_%uj8P@blW`{491Rc!uo$B{=7Yu%&(iMuWL@Mu6a4 zY)$-dGrkJuQ#H1=>l=LOKa5r*h&MvM_lr^3eJsIXl6>u!ek{{XMMb zYz(hEgTgXyyKs!#K3wOH3fH@P!*Q;|E4bbHBj*!u?hF@u?94J`x1c{iOBDhld2W*4 zqy-(Yg$`Sf%~*6;SHtraCZk|B*hf^Qz4%S2w<@qL!Fu?PKCqU4I{U3x*q-j?vzvR# z?7H4l*2$a4)_VCF^Y=p?nTO^HW|FVL8+<9ug^%%G;1gP9J%wo{1%F=w==Qg=CcvEh zlH85c%j@KC@r-)>78}d=*s1tH=VqAFT@tQwM~BiK6PAxG3hPBKg_R=7c)UnIzR&%} zOS*%_GAF5gVV{=~dxT2PD(hr4o-z1|c>}8KJ&+1F6FiEow1WKSO(dPHK@*BQG%2se za)+B(s~}_>{j7Fkzkvvbo-ND!ue{x<7!F2+m_0xQ-vf zlISz<0CUJ`CbQbFYwE{p1bC8nT9v`QJs0M*uXr-rkY`|*Lu_{mAKFR7DbCv#|A{oL=k^Uizya-RZU3deRikr?>k=*Gk8{37{pDZ5KJFj(P@MGl%oi_sd z*#*-8&(mqiAL8?d-fPM_!rmZb-2_m8ODp03_C}vhO;7L!ljY3;mAlqULmrXKX)sOmhOMz z81yTI-A!e(%j$eAIb^Q?FbT*l>l@mH&RBngcBBr>G2_r0;1(<>8?$`k2`kQP+ik*? z_VVDV4OTFFB>ZId-`XF&t@cB&wf)`mSPp*xo9I7-v!)o`9tZK zW=(_VI136f4*Duc{*k>wJ+X*P5T|Jf-&GHO*Jk_}?6;HM-eH+YweU=&Y*;wjFzgi_ z5l)R>3)Z=|B#fU0;7^h0Hyg*xCT%z<&4{%8O1yg4cYq zNw=XxRWepr9%7|LExR;7VmA-dIkSU5oUi^kr@cSRiRBM*E_-#HC$L{8iJq5btI3x2{hr?ERlF? zFXxw>dVHZ9kC%;n2(L#ThXtZv!$Hx6d}_2QA06Gpt4A}6Pm%2c-jh7xdNKsYN+M^F zPGDC8X<1V10(oQ2#CuRBG#V?Q6>Zf%C_(1ad@?_aCpNGc_^wRQ-p&{-vfKN6?JM3+ zSm*!PiM@9AkC-Gj_O`PkUOu+STTWB^zsPmJ0+|bQlu6+xG>zYY-mhm~$fPEfF0cPI z?O}cVD1$JBFr$JBD%m|V`&U!UyDzoy&XuVi+)n5pb=%nRDg z%S+Sxt%(JGcnh8-4ZmvD5U*g8Z}eTzP!%xMAkk}}ybYR?^dzBZN{8_A4D(s`Kd{al zhb`SKVe&}wa9t#Qm^NA~Y#E&%j*NZ?dqlhNLeZc6M&w_py&B8;ZVGkW`K+!3clrcd zZkB+~s1s=hUV?)7jwSIJa0nLDz368dhwT-M*hC(+2Zw*!1A?{o692q?&%15^<{h$+ z#mupL##FJ($9!UCV*0R-G4JWlmdO0?1)wXwB+sj) zkT%%Hlml(gd?8W5%acBQ094G&*~)O6-8Nk76oB(1V^}PbJ-iyJ9Tts_gYWBcI4xS9 z_lch5MWPMFiAann7TF*Nx?R*Nr=VVCV>5%@Gk?$xR%+0IUIk^v04qY$n3LqJ>OhA` zMT?1kED?Xnydaky4LZX4H^Ls|jj~_Fbg>7<6tauPd}V23CbA+iDOjJF3G`Xachb!( zPcr&bF!wK^?=WAmf#q0G^fP_rKA7TvR|!pd&>}97N0Ah9Vc)7rHUEpPfjX)QALiuc z_1!o;8cD?$MDlSv+KpF;?%*w=iA2TdI6+@KdxRO!s#=|C zEYN~o0bRvZaE+HCea&l9M310>#O$*8i|yw3*_JS!eJN;chkh@+k>3N>Nn^X4m)0)g zJz?p+0j#uVvq9c)`T}~9J^kV&RWJ&F4UVHbA-7)g+`t8GW3s5Zx{1E37MMiP>1r<% zgEFTQOoDsRU3@sJ!Ux+TZ0sBflew$Io$kM3!N`tqY~*RUCz6>TjEvy_M1JuaaDRW~ zCYI&g{c@_)TWz=V!FTmT@1#e~TrwV%JGEfXa`9J~;P2I4$WTxm)swSnZV`oZq#Mf_ z9$@u@|JW=)Vuzk(kMKUReBJ>@y`IpJPRw$6|I$8QD!8AFBxC%CxOk8WCkwkE##e$L z_NmDylbN=lJ6a4{(EH}0OoIwTXJU>R52S{F=~TXxW#h|iNP2cwhlSi3;c0hrSTeFP z92I#KZj9vQYa)~Rph#?yBQi&9a7(~^;jOIitcE#!4?T{RG=m_`<`41$lp(ti1upAN zQyQkdAIShUm$r~uSxvE#HR1_iN9k&B50==G;J7``KW1m}*V!+yyl5qVP5ff)b&%bzV+E3FHpk8yM@4_(R%; z--exWkG&S2qkEXqtru=|tA}wTouM|F9sU{lFKiX5#Ir@t@M~^eQOym+dS|VCVs}wK zE2v=%V_uOP<_KPAO+;N$J*yaw4NjjsYA#tQ3)6mL8*RihvPNNl)+N{uHQ`Mb1Lt>d z?<9-uO=0(As<5LmujrGQ?lh(Ml8lGGX;ObFzT$sFtAc!JQP|(w#J8B6;)iyC%UVZ| zR&&h*`Nk>*1d{`zFZoSupilU9HjBTqTk(5N6~4u-%-crV@E?&mylM0)Ulc7bc0~7! zWzmYVL-e_1(eY|Xq@=###%KgtD@mLo;QuR!eo}=lkbQVIZVj|Ri^c;w!4=J*n(WTn z$|J0_kgO)A^U#W^WYKi78lFZ!N9irJ%jMzsVWz2`=I1f!_TP zG%Gl0bqT4}mX|l3#S}eN-ckD?{rs1nDT`ZFjsU{zNg%O=ZjMstZt(Pd(4G^=bEJt7lC+p4)R=l$j$*IC?NrlgbG%436JMzVRCiC>~P@5d0wj}HhFU1aqt=N&EJA2@FVCnrTY^;}zCH8L6%Q1uL z=9ok!I>6$1WDewaW4yrkl8@SIDyZvpT3snPO^@bqRDy zJ!BKfjyx50qH*P|XbYJ!)^^!2RtnW1)@+qGR#N>i zx=Oc;mN3U6_e|*avEqTp%yo94*Q_DlN#Ekmq#rn+evlJZ2int|p(%ATc3akG%ftva zl+R@S!?|oiFp{0{o3j*tYPJ-fqo&u3ruPud0BgIR_X{uen&AxoL3GSdfF=g*fZ2M$ z^x`fs+1u!y@`(BZS(8cVeKeCE0`*fPgT{;s+Tyg^#$M=zXlHNEt(M>f=tkHcm@zHiV@qoOb$SoX^1*SOUZ03 zw&=m*b8^pT`adh57tHp_8rdd88N$Q-I$8BM9g+lEhae`8Pf$nj@gJ>dS8IU zmD;-CH#U2MiF#LfLfzzmlooYl3AGH!0|~_iGnU7P%BvYZ5Kbe*!Xvb1c%79BZ`l>Y z9ZtJ&0GxsGBk#k>k$U`I*#2M+d+hgOsr_nf4D{sUdn@U& zm|S#i%vQ2CCNTjW2QKPeK*vCv($;Tf6%SUJAotH(WHtA1nTi2; z*CCg-Bjl0H6*uK8nM>x?bHz*(S3CzwYFS*0kAcp_NqR1P2Y)Tk-W9%q-qj)auG+!5 z_c^kdSB}OJgQ63~$Y=`LEV>W&-9OYnk;EEBuIuvd6!84i0Y4A}U&BF^jdsCbu}#*a zHQ)fwN|ORP>6#*Jk!;Soh`FpeKg1e`m)OAIINR<}+#B zPo_MujBD8gfj?OkC#9e9BRn76v(QPgPQV1KBy=E`v-$EHJV#c$0k2}$3ai3By@RFa?2g&^5d1fGikvm)0BJ-bNFgI27abrwMpLT7(R1p4jmWkcDIkE=XI0TR$PBjb4FC*d+BF?&+!RoT8+ikk_QFgY@=r{|$TMErWMb zh9&o|)1NVQ>DQQJB!!ombn*t{2i|4W*H4Uc2CXd?t};RRLq|nvol`DQZIpo2m_Oxn z^Ic>>!$fZ}#~lD&p+aE|b9?l0~}ii=T^MdDT@jtnC+q>1EE*CJ=t zgvcQ6L~@(H?gz8O*=#+wJEP|;E97@Pz(>e9vKZ&0?a?us$EpSyL;KljmE2wnUGXVm zf;|WRTF^nZUj#$!62Wg!XMJF`{ShpVZ>aBer_{elegjR=Our>g5G(+;+jZb0+ExKx z#-tR(|Ht=MsZ|n{Uk{XZL6P1AC=#sV7h%I?8`b7t}T&O_eP z%^`NVi-hMUkxpc-M3GABvinI5b608NHa9(-6u>;ZZ@q=AT25k=gFW^V;*^F7+_**l)o>w%_l_n)=YG@P||GeIU}SN3!_; z!tDJ$y6a~{&4Z2>3749~A>_FL+jNlVs(Q)evaiY}M*<0WDo`z!KuXbCG=#6k75HM3 znGdCDcs-VbW4kH*)n@Xn&KEw_X)JCz_rx!!n+%*-z;8XQW;g?M9;cvLWe0}X`>l#> zDC$j%0H5_gJQdtpBT+6O#_R#QSbkO)sAFZ|yQ&})*;Pa?yEBJ0)iAdGAb7;e2a{oa zWM%FA_0S_p4)3BLq5c`r2r%5&uYexGR+pU&l+RS)#w3C(nr0kSBIj zPvlRG!$a$zFa@p|W+U;!5;P{r#=ZqfZ3ex?lHp8e1oW&wg|po@{IM&!6ZuC_=r6o> z1kY!3_1es(mhW_JrB_A7rK8|oKlrTlI1P7={Heiu@~--@Te`w0EyXiQKUSUg?L z_i&!R1pC!t!R0<#MuJ}pX!xJ`d()b0>q8g^PYaWhs$pW9CR8**c%P*XXW7-llFsDt zfb%ZQpyMk^T5I9zu?w zoOFeC5lGwhSs#6#wNYv8hA_QuDaP7;_zaj*471+`b?lmf4YPyQtf!xiR4@ z2JYl_{T_IszX;fr$E}6I3*h=A6PxGI-*_GMOiY4v@HAA5sYJvK<>{;-EQ7{{^>FU+ z5Ari;LoWn%*d^#@+zP(fk#N3KGfeMp2`9Ok_#Jl(mu@XV;9P&_?vv}>A*#AtO`mm= zfG_z!)73r*SxOTi^{^J+PF%7E?;^8NeQ+{AhHtAbtEu;}692n7%Di@YQPyq-=g71$ zm;Efz@NFGtSN)c(um2r1XI*G^{}JeC3XyKmCpqO`Lq&tc=xk8m`YW6Yp5?1LF0ipb ziPpgX-6mhE3v0TwDbd={DD(NWVj`hill=up#su{<915j?OTC#Cgt@ zQ(Gi=?~5dEclpDKuQoepR2^6+SL~Ai(>R+kY>#!E{)yg@G}z$dI3aFDl0%|+!AIIC7)uKWiC{)GgH#C+85nd1 zj^im*HcW{wh25-y{E#UO{Ghn9z5XeWsrM?AdIzMck3ix2WvvhaDk~J6?LQ%H?J1qX z55kRSs6CeFbQbWv&PATvjf$b5LD}qH7Dqu#v(CLIhq?V#4mXWH?wr#Fz?VGRhP)FN zTA1xYDWE>dMUs+y_#nxJYSV1iO-MPYz|!j#p!R&r%F3j62a(TS0n@P0VG_Gp_=-IW z7P8Sn8JHoSpy`7OG)=IClnO8z9F)iRgV~@tKX1JcV*?+wl4%JX`GWGIN~w~n*t(x| z%oFH9G!+DWz&rN3glkhqJ3CbK~Mhk*J;eNZ( zya_++{k)J~AVw>=tIOG{xcmpwdUl#@;;eOyKY)bA_dra2Pb~h3eh!baFdS#c=OvsP z{2ZJo<=iiPlG{!kcb|Z!vA5jgM%5s9mrC!p(HouQCbo0M{Ez)V9lWrc>1(u?48z-T zGO`rSg`|b}v=gM6RD@KPTuRZTGCg$1bF%b28!HzAl`FVSZ}{VBHPARc_70KRUJ26E z+X|YkqzLo)bbw63%wcYg_&i9OM(V2=A_Hm31bV*6WquP?Ey+8e zi@Y!1&B3?FyVFx}mVD-k?Ofu#JxnxmUWrRiW0}HzB&)gIRb$uICEZQhc7HeP9BdVE z_E-yn@Bf~~#%b9OT#?owjmUk{5;vsH(J5LF2xPTPTUJreU{%#dR!44T-NX_$m-l1$ z;J#Zh{6NsaLSlUv-WE6TFFO4oqXuo@ouR^Pwle*vij3;!ZTg zbI5428M4?r-f?m{8S~K1;Cyy z1w4!YAm?$G)gRW!ae5ntq&H4YVsJ4$l9YqpxQ11m)-$u{@A@)i>VBrfWI#8-U+Nye zLbLEybZpp|D$tV83;rQBgKQ)%cwUl#&M_v3t^udQPCI`?MvcXcI z{XbF?Q}g4X?!h3Ny1W0c3~= z+iA(5Elm(85)CGktU(;oCK!j01Rg2|EQ@R51#2`f0xaOgCXb9|asulmla|n590iJ+ z6si;20gkI~;2Ov(M^hmNvez)3d;;ImXK~VrCmXtz}AH0zC>4kfX7qhhQSu1t^NGNd>uj@JjeJuuDdpo_t7t8N(2;$aV9 zDO}Q%L_ytME`~c*a@9fqBfFWrau_5qjR&vr3|to+zWKx$nn|=_c|;MrmiSuQD zB9@y$c6VpX&9191xbwijlU~nW6RWmS6?cB(>;K@FWcP`;g}TH{8r` zk4HnDb;2)zasy|6QxIe7hOMA(JfolUBKo}8qt41w>a2PopXiZLqx>cjA~J&Ch&bei zFyyItNn^wgmRWWMUtZMNDQ7uR6#^r>g8LS{R9*B?_dngi{mT?_wRz}FvAP1k?Ww&4 z6|hs|L2N!=PBA$|I*~JYFYH-}?zi&MO+e~c3hL|ysy$sK8_=~PKfS0B#^G0f6t9P#;sVIiUgNj09{5*Go}j2%6RgtEKhht=g=!1WtQLrqa+K^KXQ-@l zK9D2!nTz6rwOhPJheQm%2z_`@e4|#t zpx?w#!ueK`8hnyXLJr!@**JNS6t9Dty}lnCW%I{a$^4Hdzu&_2_Rr|Ez@MubY*DX+ zd}>j+OLpTGWnJ-7RFZQb`?QW|qBDt(#u6i}kWWPxxX9Cr>EIykNoPQ3_NmaUj9hDP zkU5+TYL2r~J#cbs^m7v8_-Q;6J(#hr%xgE?Tb~4{Q|1F0)n`!v$EtscP=H5(GH>y?2O4N54Vy2 zVF~gfI0Rb%{J2`M8rDNBlrb1=RR|uL;XzIFIM@yht4#W5I8UwR$y8slRMwHjfv)mI z6xDM?MW}=;g8H^0$|UOJ)S?#2EsD{aA^{sH9FwN9yHnA&ep$91bqVrT}Hb)uEZYTst@Bf6k|9tWS`f#VcE%=6)87prdta*yg`<<*mfNz)r<~i@-o!sXs^er)4y@Yv) zg#Kb$&^A=IzKEV^E1Vs}#ahxyY^5#5YWAlXWlt8>orB`5qs1V%p?v1zvHIf9W=zNht7E?tfGE? z>p0|e^$ud2Lg8qgmlIx&k{D62!g+sS+qv#fQH3^@YSjV;7oU{5@v&BPJb zUo5m&h)T|5@yf|B8@ZF@MmLZT-9GAr`$JuKN5eT7-xPD#n_W&BE0J^Cst3Krf$S?9 zNB_d($UEE@Hv~%VR#MdBB%Ucuf2vmWo*V#K>;vf)-h;jftJ6eb3fe5VOD_47p;wag z|9eRyHJArP7OJUegxn z3Ppe|kxCAR#MCh)1+2nika^KkmbL$pz@L&!oZ>30yI4(dW9f75Nd4JG=8ZefoN{9U zD{~&qJJX>t&T@3m&WhvOi*a5ShZLa$NN#eO0GEpXg7nZkpz7YCSHT&$gN~K!=x{L= z6bOHSMl=om5L_kIL5qCQH@JmA9_DHa{qnlN&n+vZU&v|;{Lc%%(Dj0j`d9EkZ4c|H z$^4n@C%VaAGKuW3PK(icoR|%J)>5mC*oc0Ec>>V-NCz>RE)=!c9pT!U(SuyX~@#5($xa~vR6HQ4@Y-Df>fM)n3ZqK)xD=x0sB3CaKJ#QBhf zu@d+`OMs5FQ~e^xAer}_xKC1wE#wbAkemwhfS&phz8nn0U7%hs6|6$3LFbb(*a-V> z7HbU5r5*?AAfIv(Fa*H|!q)@au)4}3pTd_lUw&0p^NWxZch?lg8;{ZGil})OIUi zpI$|KV4Z&;|3KCL1*gEjkql@M$!4u3`OH~T6sR55)lJC%Jx`{KW#k(Fi=^iT$(-;F zP7_YS=OLeKX0Q(p0w3{+;H#lSIYhN2bt0-3O<}@7-YAT9F(0ebUf5}Jc1+dc|=nCqNan(KRnY@G!%L{m`+(fp@sdS%g!tQ|YL&+_6 zVO7xSua-gY?X#0wr*wzu-0oYQ!fgQO`bo3ODPk3M)>`}RBq*&t4s~Vk(Kgx;GF#VS zfx%{iE0EM^7|CUA1n0v=(n8+{ip4{+S6(Hd*hv~dg?*4WBjtHg@-V!P=Y>OYmoNiv z5uQRl!e(em_``YyS+sS)uYV5mfZK@jCL$l|({dPapfW=~=xre2&sIgPrYZx@AOgz#$3|WW|@C6`n{8TVORIhO>c?GWpYL(#wA>X?={v7^*&iTKna9ADT z@U8UZW_I{m>u@~OBsp{<@lYKXGt^(Qfhwgks5ly&rTVoz3p6O8 zNy_2qjjV))OhU2(L8z`8N~eSV`-WP?GU#~r0N_d9(wpppu(tm(Z)|1m+MTW4@ICdn zi$Kl(FWSjCD!^Lef9VG7lK@wPB=!kF7Cen+5N<6ed7wt=WL5zQ>R<9w4Ip_{Z88;j zW}di-{}NL$6?yRneiyo%olsHkKql=h;5X!fOxHuEBX43h@=x0Eslcbq4|xjrp?@_) zIjWl418l+O@EnPNoOIIcltX};mKE&>htLDr9VjUr=TpN;FW?&OS2ZEuW)b+TZqRGm zr$r29Fngp?$l&U4Eu#;t2DCW(MdqN9PD4 z=TrljtsN1mRcU!ko|Fq^E7etcs)Agu3ji54gY7KwSFyW zqLR=9@NSaob9AD{z^=&6+L==94*XQKva$n^FO&{uIa6T1_8P^a<$zN;4j6)$@p_md zB*R(BcvOXav+9zjRwHr}k~4~!B4n9PLNe-4cp11g3#mc)sw{|y%eTNhnui?7?|1=O zBzMJl>$b=O72pMv5ITnSWLz^x?gY+LdtFtf(7V-r*s)fr#d@Gh11U-izy+8dXef(; z1(^o5hb*XZ043T1G^CGe7cf;B8Lmr$-=hco22;pfvxsQ3l616Y03&cPDUPbc?jG{K z9xiK`9`dy5095Q=;9MRjQ$gzDMD$4hhmrv6@((o^Z&3HJt>ck)Ktj8$8^E*t2}zSJ zNPPI~jxY~Un#y#RkULC#RUXuDH+4tIeOU^Gw-;)y z%Bmr62eil+flis;43oo5Lr5UX1+IjYkTMZpKD83dA}G5Yi7Eqi7HEkWScEtRwEdOT zbV!?neyuu!TSGR~b$tXEFNhh{UDFp7@bPs5-9qn!lcR&epy6$5ZpdwBfuvR^`MXsE)<%B$!^#6`IeBCs zR7$Q!E#)0F6x^yS zbRV2wInh~b92#m}M1`#spy#cNSDJ~qwb=++T-We@{R}UGwb4m`z(w_Q99y5q-_&}1 z8(akERAqb=p6i%80@>i*&_k69dBFcktb15xbkyphkC>&pJ)~G9G%3wF-O7y6>r5H_ z!9;X1V2X}_Tpl31s5oe{YJ?`JS&*D_9W7EA-h2UkQ#Ha$^~QPi7~Dfo13&#tc!nv! z2N;cKn6BWrtb=n}xge>EqjT0ZlnBiPzFQ;UA|^o3&}AzQys@gl6zzy#g8Ta)V4u{0 zXCh`bFl`rscXJFbuRCB@7XfmsjrXauXr&qjzezFpd0~xLv#hzQn6*K@G-uRw^9|ll zYRJ`Wrq}8Pzzuz_^Xk0dX&Yf4sM}_@%5AMt6M%yM%vuCVGn>^+IOE@;x2h0M20YbT zdLM=y9B`(^1s-4)$W|##E&+coot1?Q1Af>o>ov{^_2F>fIbK19VA}ZxHNi8`G)R9r zgdbQ>@leahDJ?|yLkdW1a3m@H6>oxd(p>Mr3H1bg3;d`{fr-*vJ%jYAIjFn>&8RX~ z1-0911sM`U6?je58S_dFH<@%%;0$q~svpzo%sf39oQ6+KeO<~br&j}YLBreYfGX>K zsI88JM?wnYdi@W6q#xjTh7n-jlIh^Mxox_Wq*h-qMOLU15sQY2eKX4SOgcbKBF_{8fs{k0gb9R8mbGRl={21A6(QO)E`z- zNS?YU4?u2MC*YaJhid$St_qylva%TDH-1yi{ZaXYIq z-f7jx+Ny@Dq9S-K{I)01d-MtIfCR37s2I+NYT?&bD?A@4m6hS=m#K}Ho1(aZNsN*C zjP~pOz+V}Uis=f#8+OoLb;#PK2EiAR15yoNn=zoCo(2`|Jmr|Z>bkxOdEX2iZ`4Zj9%usJRej3^hFV6AP!(Mj{_D%oYT%Z<&>3-R(-gNe(*z)U@fDroYlp{9X44)X*I>%N@j z1HGa&xQ?glSKz9|sG!LWe$>*C+fy5rv>KrqRz2|8mO=SZ0W=&rkRJcu`ib^iS%4B+ z88@>2#L28a7&?OBnCyp}nNIL^)`qV%Gq}G4)KMQq1t95<>Vm+m_yC@?Io3Mhm#k7B zfH*r3a%oDN{pvq>2eW}YTUuwP30jFpM(~$VO7}=)dkUp^T z3c(7*x*=%$6{JdTL<=D`Z<6{5JiQ^-IF$-Ah_;xusut{3kU+UMADGOxX6zY~iuvf*%5!O$6&B7`jJVRUb8&EyE0nK9mTAPS# z*GqRazj6=0uYM!7?uhwAE}C9)$K;aB=5RP?#)qw@1_^XYLSN3RawKIx)1&=Qx`*$i z-|=a58^2z?=i8D2p~)Tif#;|r-rwgbW{1(C0WT%p1MRi8AUsWPuvlAKHgGhY)%v6+#<}&B($S{a|@NM%qD?Zm} zF|GZ-x+EEA+7HrqU1@!mWYF_&wYuhdC~*Z;VSh%NvG1q*`tp}gEiZ>%I0~nP>!EdM z%0z%o^n|aeD}J^*=%3TS`w#U-{u{UWdQ{jmxW8|kC@`5LbfmkUU_T|Fad%i}C2Y1e z$u0eqETMgz!(`>yX6mk)qUPfEs%lc{bGm`oH$s`)) zBNclccg5R&w@$*Z_q!XaKX&zWOLBvXIKc&q-oZNjRkI5*>&B}0{ER>x(b(p3P`1kae%y91N6ICt0MV0gu$ZM>pUSXfq z_WwvXzl!-DW93iZk~v6~<*kr~$;@e((C{F1XQs?yxe-dLhhesg$tOw01i8Z0OjRYV z=_W1AmonFEr4xE6scaEuGAd^fjsbOq+nWkH2}9<*n^xvN_k1RHc8 zb9FXTj=N;PN^070mR%uRu7@nsPs1mAED87-!t;8$Kdu_^HauXC>0+0aitmKH=B6=s zvXwlGv&!xGDs#eq0%;oylG`ElCxiVb_aZn$HcqZo{HGOBF})6j=$dGTo*(Vd zA4PXjE2TE6q9SISEoFMxY9_5^YM&`>Dw;f0EJ;l>eNkUhYjhW;)5cO)Pn5JIaO_ii z!bBz~)lx4~4?dy(_?5HwTYmS!zJ&BA@4L4@8%Fu{xV+|)H2p=m=f{Ru!^qHwU9ypV zl1dha_OdQ)B$f7gl^6!7Tui~MCq;E18LH>YK7Bw^7^U7Y#hLy2Ht+u=^{ZLOw1R)s z9+N=lnwvE!qdzn?bv@3kv<94<4BY{`lFqFQ<4#XYcIXXtLw1nVG)<+DE^0cfUnD%1 zjeavp#lyw98nV;d{(!zC|V3hXhe@<Xuy(>xX$RdKDeUJNlBHh9YJ)>V>nsW7ok;yq;>bdCdg9Pe0Y|^}kGV+(#|H zl62j1dYZgNI$}w^J$UtY*r(Ekuha%|?nd~+?1LMU&#wm|93_da1)su_!bkkGi=h!S znMe4wVW(dhGKG0eo&7HC4hup-SrjJ9Mp7gXgf{95SXMF;X$r|`-B9R1@Rl!>KISj^ z#iUl}nT42yXUIxc{0r>s=Pmi(wxT}Et+&*Cs=JtZ%!vApTYa}~!nePojxytLhrTQ8 zb#IxYuZK~(duU4q{Teru)(_kfI?(ByOYK0HbE@I-S*aC&Cz;~5V&i;rJMrJ3;#DDi zJUCR18;7BBUO4j=H{Hz!JkaI!*JOgvHbuaCzmcg->HLHapew1kb+@m^on}8Aqq>V{*K5;dN}soQDarKiV&+B9T9%^6EF{fR2e4s#?)8 zviu`G&KA(gZC$)M?^5yh*Gw4pOtgd%7hmRW)(HluDc^@rPk7OnDMlG<@Nn3orWM z_xPv&19p5idFr=GLLgN>WYQI=+};gMnM3if*%7*vH~z1!ERCXZvMAasH=@icPeNN& zCSe}x^-GH6A^k!^8+|*PtbdNy=~mGN{n$GFkR$MTA7$^Ew z@kyW5ZTIiGHU5}e@0qf5WpUh48pY3oPh7-r-zt2Qm=b<@ zkDr)0#?Mb|<@YD%X7)%D|8{)Y{T~12%DOXXtIxUycn>c6OnywL$z-@;@CO?`-D$|J zTZb)rO=!g(e!=u02Y$DlhJ~pTjZrhAv+7v%vQEleuxtsNbe@D~I(0%Z*#73sx%t3! zjy^FdqH$)X{RoXrH}f@kR#KDSbl3OvpXw)FO!d)UNKSn>99C_@K())~Rn`3;vXl3| zolA>?>JMh3^$3IF7ekZyvacL3^;O_ATf}ep5962onmDspE;&vX?f1JhXyLN?eZCBs zXj^|bjP{?AGhbBQ_q$Zt@Sgsd%I63;LSe~lKcRLyD^XOLxmD9q-#=A}@HBZ6zQu!c zURS~|Q8=NsNs;iWIUFr9pG7;&tI>Y5&mJ)??G|&yEHgFDII~K(F`0EfGe}+1=VYd? z$hs`%yv-PvQj@n ztEPM3|HwV^Jh#U;ewNS2Eavs>k!IA2_n4&krCLq5{4DI_%~jVRI)sV-`dg zOvUJgIcfKrhIWZLXeKbpr>*&x=Xe0VfJ;v=mG{Yh%cpw;W{dgHRAXOJ9p+qpmpzim zz42q5UOLA|L%Dcb$j2P3oan_~jnngd5B#L~f_pi7Uey%%*qWZ3%Lw)rk)1^0u zcA>3Iq(ayerg8@s*L7rz{)!IzFWG4dsn_iQH66$7Et^um#68g=nobRML{E&;n2}LM z^Ip`!lx1HyJISoHUz?_OGR(~=GuZS5C2e2^>m24T8S@>~B7K6js3+OZ#qS8bz5omwM}q(Ryab zTJtLJQ@MnXOsRy`CM#N!n~^h1qGYypl+`}7DeR{q*3w+}VNT=?zmyql=s8>#$EwEP)w3`^q=!pyi78t~wk#)td?G@_CF ziaC0dVVcMLJ8l-|?h3z^`}`#^lf|q_Ug^o%yMjq^Pe>oH#T3{tS^b-`Lsw)*;a8vq zSDB^$nm)#C=qF~Aj%*^+Z3>ykrV-Pu-ZKl#5dM9r$zl4LZ6GEcb!EET%pfWkbqckZ zOx^Z68|$zj?4&mAOC9w*HPm*w;@*?b$t9`kHV4a$>qBwAurfaHXW_W{F7D|Up%6QS zzBP_h`^ubAQ(O|`g9wn5R z8T1yB-pCZ2Kz_vQQ9<)o^r7h+?d6l&c8qG<3Q<3sGMZ|Cw?Eikb^(sg@9cNxLtDVK zw##)6TS%VKc4U;^ws_A}) zO2aAgMfen~?LWOp-sD++GJ91b2vjLJruMe68Nzuw&c0-a+s|xId%)JUNux}*2s^w& zG@4Iw^J26IZD<>P#9oIT>88rrhjNC#?|t)xbhp8ztR@L})EB;kD&|kiF4s`{xvimy ztAauu^orkqWqi`ji~I3ybGxnasrYIDS`$ypLw7 z3f#dgro>pL4h{rixebE!L1>~MGeK;KWB?WDVn(Xv24@AkHJiPnE85zo367iQXkhB| zJf&?zn-)#zMKjpWHK3%XlTBtSFi$Bx^Sbu&HjV_jE@;xxn}08@bV>O~ZD;l01RYQG zL%<9E3-$a+Sjx2Fci#7j;GEsupRNV!$-1tDYw4cG=pN$9Jk<_2J5J^2#O?eq@p^we z&K1(R@u7i>!+h5bsQ6#$<(sPOey8dfO6gl+mi|B(c_eMj1hvAX*ALCt^xJ81*o>g& zxMn^_9rmT2Y$u?B>2IBFV6#WrYynQ&0ufwDRMOnBCvb9i*Zr*3h2WbvgT%jM*2x9k zLi&)Zd{a#d-9VDB$z|V3zVo+22j3@@gri9dLip5GW)I(TcimEU#9)`hH+MB*1Bd(a zZXGvZa$L5|sDNGDN(GRH1i6-+cpEsqvy&1!Atcj|OvDdlGaYmq^Dek8bKdCf{-E-{ zVqP%HjyB2dNoJwtv)aCex@t1F#8NxUY=Su-3K5v-rH~BAoGe6M>H^VP=t9(y))W7CT z$n46{oe!o%+{%fZN}gv5OilNT40X?wl-^Z6#~KVK-TGhj)NM#^Jr$miMqAQcknX0l z`pVn`J%d99GdOEHnSaeOQY0$ceK-l0nyYq#$rrUXZKJ|wV02%9fv0v{)RUVfk8U0P zsb0qCb=?+58*@aeF>T?JDGsiCi9Ird)4gSQzy!yh>N3-J)_F3hJslQnGMGAi7*7N5 z0eg1B9rUw!j^?CGyyV7!GMwZ&USb--B+2IPN_E##4Rq_(diR1(16$I=U(jdZnCgOg z9tcNGZSIakQr9+t!#u8LFvEB?>eY?5hS_M>m}NGdoysonW>?v=_O6Z1bJ1GE1U*xQ zDRq^j6}m{&L??|dsN?oyHPxn7wc$8#!`n9!Q2nH2PWdrk2F7KRjP7(7i);bCM3NrK~c$`Co0M^4LA9u5GA0*j>!9uW3Hu8Q!sZZ5{hDZ`KhMNzX;h z*^K&_-q8zYH13sAQC~eI%0L&gTosM#Pyt+$@9jrY+h&*Z%@EHGiKsD+~O7RiDm(;?LrH-0U)vmeDILb30MUye$8? zv7qt)$s7I+CjG8cH+?EyhYsy0Chfc+59t0&!dt!xT0X`^C|m~VW#*>-)iejU`PF>S z?)b>Gvu({Re4B^uBYn@V(-Aj)lBlr0&m{0;5}eKkoT(u@78DNm9CJCUtS;d<8+H~P@jZ@>M7OXIQp2;Y8sf% zN~Tk7FtOgs9{I`aFtbf2JD94xwwYv8nI){&ANE5&1#x#BQs00scKd&XbeUXb>cup3 zExcwXh5fozcw1lc7u9#Z8ywjsDa1Sm?=FPn=v}tC8-9iB=YMjknA^D6?RQPxHJ21M z=&ra1D)upcK)l^|j5CGyq?q)H*M`q=60VQm1Et#`m0Wi9wHud{G^`~gvezOP2$QXpjBdgkn zrf02fETimYCV+kt91{wDFl&4T)7bCR&NU{Z{Q!7j6_wkqp}x&4d#GzSf`KfJ$8j?x z^*iI4?n+$DJ?Boxjorj}x@#U^cSYkWK4XmchRQK#JTkl@+5v+HFqb} z23H;Z)l$90r!d9f23Ch9raE};KFMy|GDq)%YHB;_miD5?g=R|G&16bs$Hmp%PNl+a zY%YM1*yuZ*F)GjJq*76Lru|yIvcKey@ zQbm?=r+)+gH=W*luB-3Yx*P6q_qj_(m0O#R{8N97&iuEyc=(BwpP%D9sCQel7F*?Y zxc^T;j!uJERPr4_SW&8kjAmhY2RwS7`9+SJ>eN^}z^LBP1?@In*p@X}?f1r;|ELY? z;QJqGJDN2%llhZ(>x}J1Es`E2?k6?LzM&e}Td<;IWT7b_mC-95;3R3NL7!l_@fQ1) z@}4h5qS(xk9abzoD3o&o*@B&+PuHS8Ovs@+77 zSDcj?VV{}5>~8MvDQLbMn2u2rGbmcCyW_BB3Y~sATBn?SORZo{+LC4R2u^dfQOvYl z89vwVQ?C~aW9g!wGG%rk_xWwk*4ne?!ennZ&uR4`AZ6P(N>>Z*BWtp3d; zG3(7IW)t1f67weOu*CK^QPh$f z*Zqs(F3+%>XBh3)g^n(g)*#uf+;r*gF3V(BPHkr`Qhz?qP?%Wty0)IOMOJ8ul2o6fivCe}>(mI)#>!*@+_JM}vTZ8)Z7SG@eW8r`B5c-enO9OW{K|T~%3PnHyX(m2p8N7^dIy5VprUM?|yf4Txa(ao#1ZnkO%Z0xk#9J%a4!0 z12MVIIaV?3il>A)z8Na9M&m$QuF~Px@hwO$pF_9#Q2iKQ)p=zgUC%0=30887N^YL2 zLZ*i0SisabJxo=D7LN)z15DE+dW^05WjmQqbC|V^`Vn2^Haf76=sR9D=i$-D zNN-KTsroyNR}(`TYW7KThq**6{Dja8POO}t=F_7~xa~H&)9y{T%O&9%HpBw zapX(IFZ-f#7hf`7=xfHe{ReTSumJS;9?w$4)#V17Cpkg$zVXfB3>K=D?7+%QxjHN# z>UY#~eN&y%y>+6#15?=vbX&X>--#2~IE#sta%O4YkboRo(q#d5xYhnb%Z(pNCy8M_3KE^NVXvZSo&= z)(Ustz3;3im(OQ(9k~yugE;)-Q@A{w#r;Xi*&GJCtW0n1EKl4n)+4R@-uEE;`DgVW zc*CJkNtcn~dLe6)N}bmOltxFA+mvDw=vcHcCv+i`nP+MQrZd1ChufG>McGY%Z;I&8 znc3V2Y`r$A=;_RLIiSCkk97rd@vnqG)HG(N)usp&;l@3Q&+I zPWhYeM|apAJiq1p=YU!Lmf9*4$n586kQ^Lx7qb*RYL&@pmz($L(&yXH%u()= zTecAs+4Gqv_5tkLdcD&QMX6sN2Ko`Rc9+8-c2<3#~aNU+Y;sQ$ty(GD!(_GOU&F zLpA9ij)t1yJ=9Tl{PlX3Hz1-dcZaUV0tjHMcx$}KX@bOte; zWdfyzf70p?j)9kh9dC!(mH+IzxZGP0F=hV+=m0Fnws1_sjiC)LFn}PDBDj_-4 zqwuZ#5(>!3ur$1Z{^*6Umwu_MzwA>nTXqv3|Dk-Uy8S+z`v=#}fBq@BLWt{y3~ody z?Y7{ojbt%s%M{(OS{!Z00la!1Ps36Olzo?1l($&91_maaDCIR*=%Eix^ zN>WZ8P*SgyzgQZ|U8eDsR+*XXFkEd_*OY;!te}5^H_pVn z|DHKaCv}@C(kV?zo7KE)^HL+`GvC>4;0!6Kc^{KOb_(tHD&5PYO$IH9=;nTg(@1ik51< z8Vl=v3~nzII;0k+jF|}TyouZJBEPq_Wo&xeg?jNL`@Ee3hWNF;N5;otoJ4a#sXs7< zV54rBJ9;@zVWPHfV z1fuq;wfx8&&a0{{Z^3faL1)!p>WP{fQeV=I@TAP+&bY@d@-l1jzI_ffOY~BEiM_E& z|6)JWb5SUMWOM6Aunj4hbG{udMsJf*Wib0?C2wtQ{kj}gcS1+Cgehk|Ik$?3BrwIZ z!cqTn_!)KEY(JQKx0E02@45->m6?93TkHF|Q@)E!721P5_H-k|82a>OE;A=~d%O}G zq?1pke)XN;(|%EXQ3oCmt#uU?kUz^+ogG!%WVBU}QRBS}KfYD(;OBK+a z3G=J`YgCyZO69O$z6zO{CfPwXlO^hBxvg?Aef2~2p8iM8(3SOebYWMx2Q{e?nZebw z!Hj2PFQ+z%<`L)8QJvW?<<=l9euLOCl6IWw1@j;A$Q1a-5-_FX4TE4 z)L)Txyxxokms_pRa2H;JjXgwfvXM7!x=F=pmc$e{H}p+?NY6t<))@X=R2BWb3W{kY z>WU0v7rv}slz-(<&fUSGiR2GSS%+7`;AB%iXfe}$T=l+0I?Sn)g3OE*w^^b(Z|tmHk@ z9^8kC(Z=8etYV6Qjn=fQIAu@qxy6nSCYk-uoS}-G1KRku`Q4<0rQM)A;ET%7dv#iW zjRxQ)RYGr*)2ag zagW?NcMp~}(N%$89_3&4hkX~6qx1bZD*aoW*iB_>*d|ZHi>j@Vv&P(rS5#L$TkRyB zIVTuNce6*YK*f3khiNAG*K%~U4QvtH0-U|EeaBX^U2T5b-g^2mBzn z)7Nvy$l$!lUC7-I%2gDEr~$b|L*03N28AW^!+0|f$YzwjuZA(|hj306kn-r0Ch8YZ z9n4kvO)hf&r|BO|Qu8+)ld{LjRe6yo7z|tRlg(|fz!%u)uE`bcHd&+Tq(HVa&rmTO zf$^DZ2kLiFXk@Va+2_4MyfdgvdJR={OL?LK|BFjQkT=5@k}f1e*Y-VLt%B&mcKedP zGhA{OJhO+KkOY@Ns$FLAcKk=KHM?ed9l_<$m7D1gl}2UN->9DGir4F3wK0|W*9KOkD0RmSyN>U@$5e_AnUA7_=11_| z{n2;kP}I#Fi(WSy!QH1t3&Bkq>D(x@PQ!f+w53!!F!yiZq;jG~{00OzgMKqiP*{3o zweJV}axWCe0~k23PPox{P4loXcDdi&2u`Wm?t;rh?Vj3|_SW_HS>10a$x?EUv<^32=zq^tuG*BbxmVHR6hsy^j?S9iAtF-2cYGC^73FbVQNn_rxmF5xmx!}c) z!9?%Cc^n4+S!!X7fZ#EVJHhyQqbIJIY{NM0*T#22m!a1H+!jJNCMM)oxO!O??>OgYrzb zqN}+?htn^7%*`9<2S3JZ6GN?|T^08i z>yw53@~$7iQ_q2$I)Q5{uiqcu_pi$ybovEDdNnx=Vi#Uiy``%D2lZN0^@LihDw^-n z^iRKm>i%m=7;Sr*bZ9Oz+rL)LI4P4z+tNxZ0(DvdS9L>Mz4cot9s13OHOwwU_Q8 zpG~6&*hwJKPxM{e#pI4QnQ~EPTb~uE8%?rhqBS;4wBO#ahwTzpsk2>%3ScZZOaog3 zj^Q*nXD8j6J3i=7)D)dkWz(~TByPz~T{1&Z-ATqU1Knz_Fw!rkqJ7=xVwWVk!Mt6C zxXrJ|kKM93fqnjx?;p1TcmK+dL7DMmoHLw>`-JD&Bk#Ms@`oEP#r!$c{Z;5gzGZ56 zqAJ3DzEtMv^6I+&T@^DmbSH4EiPR;_&5s5~!~Vg!wZ<&6^T190>lx|EYJ-EM*E;Ic46GFZ}WFHV)b1)QFjU zNAIaVp1En9yA?oupT)2EU*qfr8E!r$@5kk6II zH~5tt1)D3&)YCP7?*Ds=c7*ykex{@FJk33l&Scls%o5h4jQN-j{F&ifs-0Xx6#%2^-OVd<$Zgq#0TIDli+a5fic91BmBX{)qYLlRX#6zALMZgrcZvzsC)iTHp5l;R^qjW^m5W z`JZuJ7YrNS9KX=zCs}2co9W(wDf}9M*Bo!Ca@$^I-2aP1v1S3*rN z_x0%dz~<1yE%NuI0~Jy^zdfX)GkW4yvP(+%3*fwW;BI4=+~ov^tKnzHgGgCg>-)rx zKkKsJ=Y`F2j5gpcX-e+)Pq;+jfH<=*sr)z@R)ueLbxz6CQq6pT>L>|Lry2UODQt4t z#qfg#Z56PEYW9IG$t{x2j)@+b4bfI}CK_w5Mb-J-*ME|9w=k-uyG3_Zo@kQVVN0Nb zItnvCNIt-aeoG$+?NM|d1?#P(VmuuOz~1NJ=NjeHgr4whoqc|gp5I|{d!S}2>=sj# z90XfT2wUQ6Fr#C_G5D!OQVvRScMNx@<&-O_D)Gy#@K;pfP(d#Z(^2M}*Bj*(oN|54 zDMi8-9qTo1Y$wpfljc=h(Y|KCvZd^KYWU|-W7UdCD&Usvj_S2t)R1)KlqOrWS6`s^ z9RU#W>Uk~Rws0jhWaPjO6Bm9Dk(F;Of)mc`h=O`ydOxf`c}B;>V&?oe0a{4 z4qM~$+!>YO1>a(C_YC>t8Q~Rp^!i}bAI3T1pIdT|Op&hcko@g3!A~_(r~EWjMF+u7 zGU`vHhEA(S&>Q}!OY0M$CXaPp*pO|gW?r$cpfh>JFq6m>#_7?HdvG|s)Ys89{dKfU zf6D#QEgFdOy$NoFJbIaZq8iy9xTvP7{@|pZTXrb_?f-$x^;FyBvdop1GFFa+KGGnx zlheK_OlUnSuX?f;ZeS>mmdaowMchzH&v(w^R!K2;L>jqgG7*ROA@0FKeh^dGma1p| zv>F_&eu(;Gh_uimL-aT`Q>WD{as6)B8O)#hQ*#PD?u2envd1!1`LW%o3rCA}GnC<7 z;H0`nE%ZB4Xog>wHA&ZFN{e>(xzx1CyKimH;vfgbOZLi#)ElRlD0)s*3qjTK1@ zUBY2fJl2ISu((g*H7DbIEaQ5IhbWWR#l2B0_9w&V(=a~%JbV+c3_Id2;aPkx)ODU3 zJ}1tK3NnbED)vL=qwtL+m-X_c9Aj4d6IrZMtFpQ(e+?`vwNa;Q%3#wBD;{F;nIHU0sd`8)9-=^c-gkK-k> zJl-ys;|ub#ORmPbg6cLZ`A)vKy6C@D-QW(G5<+iyQ)N>TopokiMioTI)!F(FASEU%gZ13sqj7eZv90AVQy$ha zpBR%MpL083{1BXzk4tG@>Mv9ue!2Q%{P}Rz9-t($a;uCQU66iVUC?!Kp4L$l@%|n(jkz70t1{>>8j(rc)z(m*?CYu>&Z(+Q@XLZT z{R&v(eDhS^f|E*Nj>rnVo3nPMTv9*C$Lb47sYb{`VZEdiXH**;@r~vAP)~N?4I1ie z(Q{V?*QqII;r=$cH^^3LBP&S$*ycWfa~_TM>MOqg5**!|g}K%8YPgM;J}I8TTXr(OYd$ zKiHG%dwXAv#}WAsI;_IBs=fdQH-UVj7tP0dGnjpC{k_J!qMP72I0%l>P=3`r(APE& zYxN<&M!%2CS=<8sBPlHH92#ObNZ*J%=`C?R{c}uucbuNTi#i#fBG+RJ^HRT4bKS?( zRPCv$Dsk@>pgXhbBEE@!ys<|8A#?e)UeacCfTD_@qaK|h( zJyj9ju{ra42+Dc!1@6T*W9BaAcVw7IWCnT4T6O^n_=qSLu&s=vFb?zmIx zeZK=_ZzTx$Z1o!F?Vr+1eW04F=X3>B0EJb3u-U_?t6QTBJ7~{H$!NEH7HyJ)(GoEv zF6Bv>BE=HM@lFktWC{J`O!ThI;!`7PDi_hm^tH87*404~TuqMY8d8nVe3;=h@SMG+ zzMSElsvla&CJ=|}{vFwm1ECwden!_-4&hvz8TXPQ@dr3t1~Boiw+!Y!pTj>t77v!3 zxT^ZPzSOy0&;WE2&{fc+=CBg=I0b9LdX|$hsx0?kF_@_r=|=L&d_4SVnYlT{W|c!W zi)4ksoRr=&O9q#QWT&&7{qS^N-vsK|&oma%aH z>txiHI3-gqlac$FmYO6jdbo5<8BeFy`829{NDC64PUYv&Qq)i?5kOqGK2DL48UsS-Yvqi_H{;Pum?S6|0(Jka%$vaS!cZ6CSEdi=|J zT;R{gti%8QSv5D9o}<6)a|3X94g?qNDGz)v=@L4~RhX47(p+w{-XEw+@=TQm>n}z} zRfzW@pPV$=aMEWdIVznTwHYL7l#=%>Eji$6r7m-?DzZlTSerYxfUHAb*~Pw!GP{B- zLrY!BG?SgWtJKqd@jOqEn(Ax$Lsm!?*+S=WR2qew@;5q{Atc6R_b;o1=&L>_37{>y zq*CZ}i;xVEhlGPy+#jk5`)8=TfIjq=QuMKHyhG;`>HMI_v%sj+Qo&7-@^*{rXP2qDcAompPNp^=qc+?AYL)HEz1UK{Y3rbD ztf&r|!tjK-)$`P2%jp72>j$!4U6wNHtgPcqDFcJBo;$E|*aSAa5%>15AP;NMjBF$a z>KA&9ZMg8($-#J+{7%;K-uQrA;qPhDlQedRWu`kwZFL+j=Pm8Yn5l}pAJp0SC-q&tk$YmVY8f9=t#IPL9bZx-Im>>EAFGGV0I2Sg=!Gu1PVY17 zDLy^v0$FhUWYI54I^O1tnhHw)%cnaT5fAla>cpF*$6RDC?I|^#dgK&qk}_JYibM-k z>1aB7_AgY%Xo$MZowta)qZJuyPx;;x$@58Ta;Zt|uNao7w{mhw9!WL11zLSoo(mV` zOMh09FyK=YD1LKb94*zCkmUQOlAEv_mkd~vEhF0Tjw>p#ijip?vkhb@kWpb*-=x{043vv+P#7uO@3Ejl;)iUAF&kH4dg3TRh*QU zZt{wpWP)}BG8K0D($av>DOXDd(Z^Ntq&J9L28lF(jnR|Ik+c}*~v1%4wN+ZZJEQF z^@4d-7U=xwubz|XDm5p268T&rNi7B~LP~tsX+eAQNGp7e%2$z%t|?mMZamXSsX~TN zDbl1W^X@fq59A}4O09G#3edmS@vU%?bWmxj3x=aKh{GH>!XN0$SF1s4oqD9!t8Op{ z7x~mQ+dzN*PywZQP5ZkVXSZ@bt>-;kjjMa5y1?4(Ckbl>T)}WVLRGi@)H4wKMW!W* zQZ->9O4E}SP-*n@>U(;d!ph4gc`WrnN-l+q@(Hze9?su`eh>Y}e%Q91^y&M#6A!UI zCpnw`l`r52X1he{`UG`^d(V(DSP{;7H1+OrUzhu@4eRk9`=bwC+Hgh2xT>W-hwq-H zn6ZOzd^X=>hN=c;GZDqfA>1Jvugy!g2Y26Fss-n4D{_cx*&MugM2>O~?&X{#PY@(; zHu*81$P7()qnpYR_}Xr08e(})CQCATL7tJ=ahrs+D?!MgUFA=O_xzDi0#-!G6TIO5 z35VVFaL_#tf71g#!8MtiT%zXmTVJ8nBY9ZtWIZOwQA ze`FcyW3@;ux$c&Lfz0Q={$6syU*3zql{4`?rd0nxjk|_EcQf_XVgBz|Na#!iXUG5! zS`@CJ3i{)B)gm%vUY4)bN?D;Qs@-afI;)7wJv-$C1pPL*epz3W&vP>zoZ#ltDa=G0hzdIdjxkPl9 z8PFcT%6r&c>iWJi*UyynVLdqFC3ajg)fc4XzO>~27>rKwTh&RgQ%Cd}*yo1|wI!J7 z3%GJh=n=LW`nOv8q-~=AWeu*{M*0-k+*%wX<7`QCQFG{LCIgz@hpLRZruLJn*j%qw z=hSrdmKv$fQIE7^?N5aw^wpWb03VX#b3#(1%=(q}=;FSXg6!{Wxline+q60de+WhAEMNef_l$tv*zxpn!q=rRJRMn^}$v?x? z0y~L&WFB?EO4ZbCA|Gd;Dx;5ae_W)}x&v$Q2=Bhd_ZQSJK7}sp4cT-_bu;JG6KcT4 z@qKE<%c@piuF-TU68$76afJ@DcO?TD>U2{Kjba0of?ZT5JzkAgbEp_Msa~jnuA>R*N_qy$ zeLccwCD$#lKH&1{Q7*4;;hrb&G_}q_FaEr{3bwFQ)p1MJFgHeRp+8AYZP<&XiWA@@ z4Z|YYhjOzaRp?)mPTGPY-$Ak8?l_l6x9y3quwD|^h5Z?o(XN~yRMsduyhOLvA##jKt)z#lB&#A!$Onusf>9bG;v)k3I{_ z?Qfx^y&jgD+~}9u(5KIoJ5&x$Rd%&T+Nm7!9hq*Y)g$@{cyxWw4b;qq&_&!{{TFk_ zeu!h;FHUXVi<6kQ;^d}pd{=)HpVj-~)jF4(pg(Xe_1`4kHYFSNPm*@pgjQ&=(x^e8 zipkUv`BuF`n%8x*GZ%%5=KZi9hhb6c{nz$@zh#&BQqgC=M>NP!W!~7lsIy-j_4HGi z^U)`w0*w~?2lg2MS?^0&(#}k`P@4SRx%xJ0mXcr%gXl%J$xD(zFVzeO+a$bB$MB$~ z(2ZPmzJFiMR6PA${JY+jc#e5vk9F5XV_GC8F-;RA(;@MZ{xtEtUYGcXPGAm8>v*8v z6xYyrDD@(;AWOncZT3Ck*UG2|A(k&>hZI$l<#+WqIWVuvS@QPYGB?99+|d=7bw0~3 z3774hkUyFo8b@#d(Sk56S`m6izlS!_$?#%yKisqF#Ppa4d_vg##pXRD_@l>@Z{z&bP zyQ!mbBe0WK>EE-c_M`Zul!`kl0m;jUa^}=%lns{ z&VcK+keaV+@CJ8NYt(pEUM*HzWj9^cMRkxftT}lRw|qf8%9kO}u_{^9_4PFTj_q-` zzT)cYoUW=);z}}?At&cRQe7QCWG^tuW$qVs-%X&N??%FB6_t{#xWVC$Tmi#=TV~5a z5YxIaBx}I7ijZ_N5xvVTvS+LDER#r?I$+iZ=E9M*_-m+UH-~z5AD_dajJ*|d@O=N7 ztg^{eAZ@j|lrh7F8d|2%MZbdD>!?bpx>C(Ysu6C4_o*#DCH3w*JRNJuzxW+oYQO61 zkC0Wl4-EBy`qQmfE8KGRo%>SFa09@s8Foo zcrWrCKqJ;j0oa9SezZD_H)ttYT$B6)Tw;$%7_VVk_>WCe$ zni&e3hM|o~6NZ{oex{l4SD8=zI`fX-Y8sGdUYj$nrvKD5^Y5A-WKU1@#;o@H^+o@g z&K&B2=|}o=bc;tqZRSyV<^}O(tJ{rCt>!$;%gVK6D>fzsIuS%xA zP}Nm4H9=*iw?4x^{SoxP2dQ{fIHOad3%g3L)g~OfbJ19RO0I6daFQIjKXHlv!e=f? zHG@bPX+@T0KK&!k(cNJq*+pYi8nB1gV30b>PMN}UY?Zq5kb5RK9ep$PJ>6uVu#`0A zV=7O0ifSm6zT->ke|$B4-nY;f{M-7O@2b<{@hVBqZu`)h%-!nxAkMf{pfkVN4%~#W-9ym`$W}&kZ|R;dN$I zm_u6W$K<%SGM|J3W^^Dkg6I05eraWR8Ls6zx8iq7LQ9ohQp0xdlnyeIzPcKIniMc5 zCqp7t((~$5^c8(LwciedRf{l*6MT{C5Z0-WI2&eiGwj7T_=FVS(sCJ{;u*COop>@u zo|oFg`?OJc^%Gg+bJcWMu(NbZo001)d;V_J5zlrUr;uO+1co z(6zNtjm%r>IlS^`@T5)S|F^#W5*%?h9OqIn_jL+KvRVM!QlEY30`nzdTso6$lLrO% z4ZQuo_`gV^`AZF8_w^-xqpSZ_^#}c*$W64&Pf>r7aF!)}pqhm@)q>Cv-$z+hSBk+) zWaX4is@_!p$trbT(!(fprYgll0z17#nwxJ)^_wlbNKU>@!e3e(eA&2#3)#i;yj>$H z?M@uKM`Qz&UPge(R0OfShp%7;y7qFqn)*w%RQ**)97Z3&Ne$s_8V>p}0>8s2{Kg-W z`aFcJr=EQG_f=2QtDBKuTFaLuFCwRE3EJJ?-_Hnic&0f4&w))pLrrlfG!kEC z%WxskPR#YMV9R>|+|}3kjr#`oa9?11595Rzy|YYe?M9C3H&~@b3%aT&OXg$a>(1aPE}w=isH@T%2$hz%@+5ui&lU+i45Qel_u4ngw^J zIx0o4pwx5`(kN6&G&8C~pR>_)4ZA>FvfR)$EOqXJVrQ|x8@lWU;6K&Db+#8gTD{pM znAs$IkO1bb#aX@9oag~$(c8siuY$mPe+yZ?BBYqNg0%4dBU2$k{jgU|jCiHQ;(lIn zxF081AjLb0H6uMBwe1f`FqP01z9q^GT|!^*1#bpg_ER(pV{`!ejt{t{pNgC2mEumh zjX3JG<9>0vaGN0aB@J!HEww9g#UYR9t!3eT)-AlmT80wsU8ODA%h1o$j;*a(Yfn#nwXi6GD51I!~Zpl9bC-nmEqt}Z6;Auj{J1ro; zA<60ACN=!>;!uC4xZOV|zVx4p`PoacFXXwMVGBhbRTEpHe?d*ylzc-+K;@|lgK%9S zC5;D<+IE}@<~XH*kn<~N`<=Kf@Tmx-?Y?e3ZZl-2M5)UCN}u5K_BLGC?uz49X1v$B zjuu!W&}1tcT5X+Um#tnby)Cg(_94iFN%mJz$*<*{^fXA{dJIa+GoI+}0^Pz2=wlb5 zZSD-HIYx1--0u7qx2|v!l3|~?&xzvA7prttntMbjf%6u!g z7(d8K&o80hxm)&GE}K1-n{8F)(pow`Vs69}%(}RZ`5pBz=b{;AY4nfzfEBeSvE5cd zR?~j!>o%PC^f!MMD2gY$-@tEv9mr9Kz&E!I@<+CL+wehe4|mbq&cE}P2m!x8sp^*! zNBOVB)BaEi_?l8vR$1P}2Fh_ZL;fG+YOX}J<#))HO5yp^Xe>!*a33*&cas9#TcHtf z>-vL^eIodTX2E=6GRFZy+wr{=1Ta~V~cK9D9}%L10Pyja2U1s1fYYf zc*_50tt4+)Ot#uA_ z$LSdElUnWzk4!1u89lL{G#zxVyL%KO^seS6P5t1YE(pK)Diu z`%w~HAZ_puZaj)`J7M;4%fG`R$cp%%H;J3$*5*dy=?-w;yG7h3o&_4pJHRM84Kufc&S>

lq={~f>gFU{7JWskmTKk?yU@Y>&+r<{lCe5|2t{LeDWW2NJsR6yh6uG zdpwRj1&(WN?!0hfKdTQz(Y23X@@`0RPKEL;neX z$y>u$_geBdU61SU?&8w8Rk-KQe|U$}6R&U*Xs$CEt#^XxBuojvImK8pP$ErsyMuN& z?6(AM`+e}#w)Lw34eKXwJj~lO0C(X4N&yl&_MYI(ULUTW7v;u!ec@kv!Uz1yke@UQ zy0t4X?f43+XG9n?gnsA+4>$)jNHp#MPt_mXdM*y0)QT|o?8+YprWFF7 zM}3%`Eb))?PrTiHac==X!|efCV`ccxj?I0b2e=8e2bY)f@XYPQ=j`hEcl!}KZTCk{ zZHuL&3s_H@f!(2p{rcd>e(C)1#)AX3I4Imxz%h6N{Im0b)ZQD7cB|peZeFgf8|T`& zH~9hXY+<%rn;dc9lMn6$v49s72Y9Wd3*IUzqkl;n;op&-_~)eZY#HQ@)sirJDRx82 z;%T@)=`a;K;}XJN+zhzWy@07Z1pf*%w&9?~oz9JhY=WuK6)bd@afh9W+<&we_cN^u zd1)EAFV-_W+}efteYKXc33d}!fJ!VvulTo}CH`Na z6F=ishG}UI|1Q(u-NO4OQ2uy6wXX?T56&Lg+OTcust6F=YzVlJ)&X${K!N#Od}!BqzbNLHZ6eP?I6v;IzQ zj<<;G>UQO-IiQw_dvQgpE$(LeXs@vqg^dbmg?^XS(z~)G-Sj1Wj-Olq+3%#E z_pa()yaq;E&oZvLXUsY7MyrLp#xCmarfJ>Vj^_HV>Q)4A#2DB^okoLP10QgU@{so` z{N@cJhrA(TX1{|p&o3$y_Dmkl1}Z-LPXWG*nm{$wUbv$A2nW>~+!6lC>Pq3c^1IMU*)Lp^*9%1MFBFo>3MIwYd=4_1_xK=q zq~>#TFvGP`Z_Kevz~0OOHR52_9Mtp`XjZ?NJ4S^xQPA=b|HxiZqYena0iS^o?cF6uYC7&Ux-McDn#^&2xYF8-UtW&)*5| zV;8jeO@UOklH|fy#3%TbG>v;L7vWDUXZdkzVqY9DzW4_#E{C6r{Y~N z?J53E>!J6|EbIl$Wo|cvxUckC&I~<+ldPYnzv_MIAiV-TuBW2K42fPb6gu53LVH+k zXlr{X9YnD+-x=Us0ahpTCPJQCZf_R4=3RryCj;6`R>5Xv$Z=Fa9D)NR*}0s-c9Oft4tb890p3D+*b7y; zNtz_)l`e=A#gF105)*ylotQ&7DHh>Ji>0{iVqtuM6hQglZ=5USh7PHSmxKSG`y1EG znTEI0?Z~iiu#Wau|AUpvpK4Y1{$~wxvs%A9SuCHHvD(w2)=m4O)y%GFTh?FpZmTPu zX{B)nThE+H)^2yZHOKp4b@Qv)E!h#fEGkR$;D?lOQ=AuEO?Nk>fOZjHcoI3|uOQ1= zDscqrCpN(c#k|}-F~&U*kMe(uU4+@9LMn>O$W4+Y)+NKmeZqOs<8`qruSxy5ptKT4 z#UtoX@h%%8{_sPh=C33rJ&|;F`w1JIQ~VFg@xRe3+;w{}ZfCDYvVD`?wru~1Rm?wW z_4b}vN8D^SamU&{9n*e7XVFfyoa5NKv(LWcj<64U&F!6jb9*)G0DpR+y$oNm7s6>j ziJwWk3XE1Da~+dpbGM6E-4fCuZ=X~c4CZhA>QG;{k=vkT8RoL`Mf_3f$xW3s-WON$ z9mSu89b}FG>I}i)%My_vMuOZTBH`_XM=OZqk0*{-m%t%TGPwJMicSMz1pSx)+iuPm zv#)Xotx{Zb3+Qr|hfK38qUJf4*~-hhT8sUQ7V~P^lf92N_Eym??f|D6cswb1TK)td z%WCI0&}?)=lc2*}>P+E&cV_XQohd?ow+ET%Rux~mrr5|^EnW1o$#wn7@=gD`+=+da zzq7bJ6Wx(B;l=XrxR4AvgVGI7kbdRsikJBzq^K}YSPV4Yx58}j zL4P_)?~Ncy?yn@9la*AUw}mnGWZ@s{C!wZwkiT!1=4Y5kAWOI?*92<+US=3?GbbV6 zjIoJUSC-j+@87dK`&(%oxZyLvm0AGYZBK!lvD}@?y2DJds=F5Fb+>Uj-8Fn(ccxI& zZA-ejS;TejIq{j>P%7a4Ax-hH{N5`lC;R2)OMZ6w7xqIs%~nb^Q6A|eS}s<>U&tX` z2pH(e!a{Bkp8_858vJz7kI#Z#^mG>EXZcCOTraDz!ObijcQnX7{|q_wfALf7DZFk~ z;-^}lxRTZajzaGF7xOHRn~fk#_z@at4Ma~YU~t=unMAX)zvy{?xziKqL}|fMdlx94 z%e_7@j~)cmjxo5TH=N7s4dRPIigYE&dxc(rO!2mg$Gj?144$oueo&qPeb{rqlU$Cq zke9Gxa+H0P8luV4PUMONcNBla+sF=Z4}Qj!&kydl4#1?C2kyiDTv~J$avA>RQu%iw zU-TkZ$lb>^cV=@_Xe;iHor^1CKgYYRb-1ea3;tp1=#se_9W*PUE9P@%nB!RkD;u0` zSNz8I0N=Lr`={v>a7t|fa!wC#v{%I&3Rz_180SrgG?zJ$4m6*$+!?&;4G;==wMi3C z6{mU!#FJhv$?*9n#)<)|Ky%5i+qyZ01-w9sWG}Q&O`YiZ?p%&z!5Kr zH}b9U9`Lzs#`8fB0R$Ab0gw0R!z_3@9_IGN6P-qQ1I>^BwH=hz{s;1#S0LGHhjyBU zP;cnLel^dthURoO%xuSwn?UHZc(&Dg=GV5*`aIp~Kch>)Z3J#Hpr@XKP4#7eDb!++ z=Yvl85tvk(+z&s>tL!1DKKGF}td}^6iPGoQr2L6QrQh{EB$=687bn(M#_TdH{)AkDU?dD=4GW z(o!hdPKEYb-&tG_ zIqQ4|x&if{dMa}vMJgXE&l=-4Yyvlot>;&=(=h8gOCGVKqRSRanNU-?8u~7`MFW&^ z=!&uwQDq+rsOL~bxs8q}FHvI!^2FpQ$|#$tv81E!ViffQM`W__61LCxft~d?Og;~z zC2TdMyv#uby}pQd+k-;7Ci-F*Mx31im9iL{WqxLsai1+Q{$`DgL#&vwgH~(Ac-N>eb8f!bKOs;wNneTsKC17{j9j8XCKpA-ow&VW_ zP0&3!ZH|jW&}?ZWDk4vVpLH6_smwtGm8od9G9JxU`k_`zI}}p>hgQf15S27kNBYEi zi6x3P89U1mmI+ovj;@V)GPrHv2 zY5}xdox@V8ul+VkeSfz6yEjM50X@zZw;IXq8vJ=@BiG5Pj5C2o@(u0fpQ5h2lWuf& z(`NJpO=G{NzM0NR7#*CSjo+P4dKUNJ#7wtOLh*_u7I--mIsIyhlm6@kWCrLa+p4cX z{fsiWlX)Evv^sN}?XTQdI)Jb1zT^M!nh5#XK4A+og)CfAGM8^gY@r9KD|RIdq$Xsa zT!0)=QiKI6q_Jqf3iq`yeA&PtzDGdk`UiS&wF39?cdaZQsI5U4)dWjXS}_3;X z`a8sFUNgen6n=s`hEqUuvBw$18alccaK^cJspcG}hwZJjm$jSLFwfHx#y8qTFX+rp zjB}j$6K6@hq1!J0kJ~!l(wh>GcrW5h{QilmESDZ(L1Pn2XST+5EyAs|k8s3k1#^N3 zpVc2LoMEoe6?Y{Ze~D}nh*&_ZChm}$idbncR#kry+i2OudV!}T9GpdV2Qv~Sv__~E z5`-$DPP`U6$ZZOK!&0yyt{7;IYG|`rR`s-hU;gOzk@9#SNJqDxaM;OuDjp934)5J_PRqur#8}+!BR(d{Sf8sYgtAwsl*Og=s36EQe54q#wdI3vq z#Qc&iRgk7Cd8D_hFa8|(Lo5<(DaxV8RWG^lF|DtHFW20g;{ptn)fj`>UMv|ab7L-_CPa8O}#ALlNdo~#xK*Au>#JM=xQf9 zn$G2-o83sHh!>3B@CHV^`6wo{e`4F&<#-+RE%6G~GRENJro^?d7jc}U@i*L2{A&LZ zKM;IGH6XQw2+M`D=1XBa8|Z6X4c{Dmv-PDYO)`D3O--6l>0 zCy%qoPVE%5g3cKui!(v5>ajo3Gz5*&On7|4?#NQWM6OH^3OOhV) zFXT_9Hu`nL} zt<9BoUvihd{-BMH@p05in95xf1R*sUM3Tu>aTM{T*(9AZorr30a!0LB`f8T&Lfau^ z4O9|}1pel=KxO{4wuh^tsoY|iEuB?PK#icH9a062x1Z6})>Zn!xI;hapD9aZbQ&c(JAcNHIlbcf-7@h_ZuNLcZ)p6o z_bA@q?~};D3h7r_k}(nGH%s6a))&0TUd|;s)%iK@Q$Cg7N7%?d!RDtKOy&2Ga>8e_ zpQIHzDZ5x(&LVbK4AM=#Kq_m4$Y(7`dIlB?rvtq3B+#3`6*$4o3n*OfKpi|?n+a$1 zCH7FE@QhXWmr9eoYU01{Q=y>SfnN-pNX@B@meFH=MVin1Vy|=lw)4}C_IYcYJ;FR{ z*EinURrS2Id14A(7mrguKHS+J3%b2x2i)GVPTs;;M*mCfu|FujmgP!xMuPq`mW(I3 zj5&`RW0mAz**ExPr={@By(RSVOTc7!9GQ=gkj(rIvP8H~uy~sMDlI0nK2`C4u?KpV==si*u$N^1Y947pI!J-4@5-}Qvs z&K$l6Oz=~KhVM3g4&7h_NcXznET#?UR+wu&p{vb|PG4iB(_Vk)OiFZfFUD=SCkwr= zu^Rrh*gOAeY%|LqZ-^GhWn3|F7z=twPB45fm${f9V5JrA*i(gM=d}Q{elpkZNJ^v0 zt}`@;PCS(m^<=T9n>JS9i0zVK|=T=3x#K~=bh%(Ld%p`n*5GzSdh#V;9XtYR9|i|{G1${}fqHqf|Im2hkI{3odQgv5jqhc{ zVlj3*S_Tb_jzBe{Cs2cE1g(t1=04UM-;B+`hvK{O{lrzA)p&vDn?G;?*hAf?7T)5< zLI3g&w?h9xw(vV~qqxGysy^I?t9hvgFcu~pJg z_Ff*z(y3EeYHb1gu5DoR0(+SfJjZ?s-e7HlFIlPJH}*1sP^&-yZPjw1%W4sHQmKrV z%eA4m`4xR3t-yKJ9OE=GpUZUOTR#G+yGTlenV;1WOPAojv8pq&{RtIU3F@jCY?%C<^_On2|B1(0m~3R{AUUBgH--fu2WKDa1d7-8kO|fd zHgU;p5^clU*d17VYakm5bBa^OQkK=&&-Uy8u#WmS*k5RH#qs1{${BbwXD;@FMVGfiMEpZ1>hqnfjbzPj6l))v%%(%4VqAc<= z^jtoUCMb)LrF2B~)skqK>a*c0kfznOETME_qm=UOt}L?<%mQ;tfBD(Ob-pJ|^{?~2 z{TW;KdKcLwz|Luis&v z^e}3tH%80!W$2@R7Y#Jh;*2n7`fN_cPpzZ)tNjKiIRUP*TZCKgHGqjl2d*ZtUf1B^ zTnZ4CO9;IoSFQ;+Pb|Z&l>*!p`7Lg!?8iTp;kbud7N1sQ=()NNJykoSJ!)FiM7_pt zDWg~(r8H|PfAV`sJNy=6Uq3%7>3`)p$PRtvRfY75r{EnK4W5f^-WVVij`OC_Y2L5) zO0R_VhgZh@&ue9<{sz68AJixL8=)`jmQY#4M03_Bv4ibN*etVN7ahYjY*MQQT~QJLrC|aMghVzYO?scY%i)Bqo4kLIlQ)t#v!POTHdB1=4a?UXKAG^J~$!g~=Fx$9mje+iUeSw=v|HECK_~w>L6!5gf zP|u71;}uNg@`ooD_=$w+FVp+64#qpy*zAnjTF=p3y92&OpW)nY3vRY|i!(uI*&np- zPk}4bkZ&sN5|#)qxha&A4568vnlw>xDD>G2zRD0(2>Wb4H|tQ8p#bE;>cO|0oD_@KK8PMRb*jaNclR>FzW zTlRjs%on3>pK>k9jBgEPs=gb%sLabdqXw+nQ;#c@xdv%TbV2(^UCWR-AFd?xU+OtL6B zNkGj*9;lhfFfA&)(as9_0)2%NfiyzKzy|)jmXmLwE$7y$Ja<#+jQ^3(qu-@esIS-) z&f-)4Ha_I%O;;WsiiJ#mLi5>1fy{fmvcE0bfpjEO;J%R1 zMhjcCv_b)GH9uX=%pX;za<}9Z{D)KX2fKoP@e&Z&u@qwNTuot9F!YwdC32Y zJC~h5X)|YsouHen&Ge$#oeE|}+SkZSeLWvN0R7D(*y}CRSJI362b$HW>Z~>nIpxf} zu5BK7?^yM`EA~h4CSBlvcFID6*gJ3pF9N!68N3A)h!5}}pxqL9_s`_h5iE#eAK|fh zPFO0*B(GeCY?WJ*6uAw_rzDf2Nq3@y+ViE18CgJN5@)@UBY^4 zQ}d<$-Ave)nUm(X`oRwA0)1jtbvoL|VgJ&~JxFzTsB;ifRr-RHt~BW3JkXim0Da|h z>;bPchBNcefdPMkA0sRif}}lJO@g8#9u)hCC8a~+R_TLiN>nT=W2vtEUaTu06Z6W$ z#LrS#TqNxv8Kg{Pwm3t0O`h`kNq)Yy(2JYEZ@{a8RK5dKP)rvBZ(Oo}!(ZUN@__K^ zrFDU@>hyK))4ym#nvcG<_t~@TI(7q_w{zN0tW5T8E4%&9YG9|c=h)rs5B6<4nKq@* zXbK(Xtaow(>HisU_;!2g{IR~{w*r@YdC)_q!`E>PAK|WZOZc^XFQL6qh@>O0$RRQk z<{L!XFZPfW>6}zY`X=>~1i8ONrRLI2DVsD$x*_I~I*HrG2XO5bNh>k~P7p{q1-|iZ zAhf^2dGTxTrhWjm@q1vyfAuCn?!aa@wR_L0;G}ZK(4O?NeakLwC)Nr;!T1x}X1Tx@AE)0ZaStuh=_;sJ`C2PbQVjbx( z@qv_6sx5bsmdXpI^YRkusyszHA~%qR%C?wEULdZNV3jDgCpE;S!XR=LPLSu2#TNlq zR}75dXgEe6!sk}jo{o$RzXY=BqUo2-PTS?#Ua=6AEGxz7Ay^fs>> z9nIUuF!PhK&n#qytf}S+Z1P^Y``}*x%S_l>s7M6{ zQZ_yhmruwAYKiPZlE@R7%aAS760yEqUb-UxDHT)l%LA1W@?2%BJX85YZl|o51IiG2 zgZz`M%D+o(rR>sT*dOmBC&?eeH(@W&fHWQCN8teIl?8A}frj7z2Dv+Ly%)|K_c{Fl ziV5Uou=CQUR!94YdC1CXX0ZM?)|!Kj3g&NyWz;kt8J&%X#%jYbOrxwh#9VGF@XY;b z9k6EE-R&N<7;W!lcAC4I+sn)B4fl)qbKpr{hlT(>XBj@k9pm;xQsWxou`q<(CS}B9 z;xlog)LY6gKbFqOh2>mIdwGB|R9>!hlIJL8?U-ZHPD`8?zCnambpXkZoW-K zjQWZ7#?5#?V|Ki)(IGy}7#81Q?1*b-Qeu+1Ig!U|qd&9$XB@F>n>*=XYcI^J|8bKX z_$In}!3Ee1SWK(10@VA3oX-b^9Ap$JFWwi+Nl9`Jxs>u%E~>6kWG#<+R9mE04%|@} z2BPZ8090pzgX*wALp3RILm8#zRW7LQ<^PmX(mi<;oP8ZgH?g$95d%{04g%k@BRJ=h zz}s@c+X7it#oYSNZCZ#n{_{j7d5(Y8(HUCCy`29Sf9MuqQuD18y3(5s>sZ_$DL+4+A~%N7&Fc=XL(L zP=Rn_SFwsTPWnwAEH_h{C^=O@{ZC!1cGh_9lvYQJXl=C=t-f|mQ?vovHZ`WERcoqU zmC?#9I3JcvBcw561F+uUOZa7h|NGoo4E=vHs6Z;)6|K@% z8M7%|%^YK){#}nJM(C3hdGxZ0fSxg-=y?)#^bUzt`o%kQi1J<;DSPsE$&mgO?}%r~QgT?RDlF$; za>Kd7_*Wo$6hupX0!e&7yj$@7nM&U|zuGP>VHKvu&3^W8#(itOUf&Y*h`Bwn+w7Q_ zX*NsDHG3zvnuik~&1`xt>!kjtHOfe~TbRsl4O6P2_IhUzo$aPT!gg(MoWBVYHUw}P zx5J}=%sdR9x3+vaQc-9v64FIFLF&t`#0<(a@u*TmDyJ@xW~s-d1L`^W{4PyaM@a?L zqS6uNZ&6dKi}mEqq=ys}I*WOP-^g!#HpsI4%#Fp{z^Tvyd|(;ijD84jx=oNZG|c(z zbfWp34t6g(!n$GaH>=y6dD9wgjI+`jHLQDjUijGyT7SbeB=l)k9pka}r_tDMZa%g( zYbZE{8_sMM00D$S(PN@Ho1l3nVeyb*s^W{B71koc=Si=2?&2!d2bs4NcP zo0IKa58zgIUh%BdT6zc15SF{hpQUs11?jsy zL}IcceU_(+$K*Gpt(=#9mRbqFNkjR~;sov?nFI>PVMqjbgUWY+w7KSkuxR>+F zpGn_&f7w6WfE{v&Th$%MoKClz-|TK?SNk_pgeU1NyhS%zx8YO6I&WRK1bYNjHZ`I4 z`5CH*%x*C!8|3&^g8H=u_~j>qD`p3t%B}%%;62|3$Are*caoQXAlm$9>8Q|H?m*tk zCTXDb7gs9x#8XOo>7Y_wnxWK}N+^}!%vPnJ;g0o^+KV&92w6^=lZnC!p*_59@^h8> zPiQbWP*&p3kgt>%YTM6Fn4PCJ{XO<*Z-;fky=10$9b=Ny%CPAReIA{zm!{qHgxyiU zX|K@F+Mo0*_F&_)o!QJrznT5$JL?Wj*fpJkPb_1#bZmS>uP@pW| z66&Cg;wRX5&%^!YY}^24Ki3d;e^}eVFV;N%yVelq%hQFNfdj%<(8Vp*&I_ixSEvdz z&PGZ-p{gtknzWNYMj8O|^)7b>vf7K|dyrCE2V4WEQ7bn$`WyTcwQQN)HK+JfA=aR& zKHICFNayv4pK^D`+PnE;S>1cl*Ulf&znp)f+nw~WEzYXgL8n3dno}}iJGJ!U?gV3; z`^voIcCyQPKHco?gA}HrKvOM_vVn_oCp*d)1trcgq(~L;eECo4^-FTOwOw4PK!8sb z?9QJI9^s3Ie(=3RS%iL}QbO5KRpDZ=xR5oNS*RTN#243&^52y%{5&}c!lActtx0Ka zIe!3O!A0?BcqfPbG^i}hvU*Y5KWz2zgXU*%sovEqok+M^e3q-lin_I;Z=6GsZBE*R{PaPr5qxvdkE-M{sZZe6ppN3GA^MLHbPa?(Re#(r=L zB?Buz0YtauplL16#iYyJI^|bBjrI@UD^N_B6`U^&3H>V+3d>}3I0tzZE=-<;(~~vf zA3}!kexZG+rO-Y2m9G{U#y?YEaIKWO+;(XReoWq?6g~&Ca3|oBZ1oNAsb@O{y#O8P zmH_SNNTa0lJh6ukjaQ(hV^8c7(Uo@RNO$|cl;-vn_zX)KWA8{gWT%OU^m1enJsAB? z@5QD#1rs^k1NwcpwYkL0W4G`_PC+Jl77KvKEj?t#Wd1)*4s4kn@dkfY9xM!35$s_m zk>Tg0bG8YqnyQ>>NP918Neu zp)dQRz)_SFRK-vEdBPB(15}q;gSG8LpNSimHbY{~m&H-x-jTkYzsXpF* z6aU#>8GC2Vi=MFdMvhzI$Te$ciepVnX<)BSIbfS9CF!ilMcN@c!08;z>u!xlT}{6L z^NdY?TWdNiM>|6n?*DLRKP{IDI7AsCcQZ+726~JX;U8%%8K=A_skEBnsK6NUSa73w zDzsBv5S}k)PwFO4NJ=fPOFBx%CRHRklXeTU!isP-)R^BFoWu1F{DGrwpM@Q?fdLrrdH`MAo?_qXWEZv1ETryd3+UD1@dOAza>auuSi9-<+NN zQ?I9Rhh-oa@qTiMFD))0E5zTVPogWQm&U1}u+lP1I2aSX;5PA0sJ2)?e2J_Imm|Bv zi-gJHXMFl_7JfwNS8hXa9G)H63iIci?78Clzskk@b>cwpnsD5Wfs?{TM(5y=_8|!n`6gyv_F{-q>B@9BmY!9!>a`~DYMWqX)Zq?DZ7QurL{>+L_i^IU zD^A{MWp`2Jv|A<8&?^ml{|=FP{^LkFHZA&zjft&6o8k>I)?K{N*u>SbYVp}XhngN- zE}8tBLUB|aCPI@)GvPEz7GIHSa*W982lBgio8%3yB7H-@k&$6T_+Qc_;ol@l$dYOR zpFP!M?nP2ju1(TJyfAzX%@3tPwSsNfZEc62O|`sVkRciwi%vu<{N$Yg_D< z)jV3&E+08%cSvbKFZ^)n&>t6^PCr(=Ykti2(xi;{@23D`H8K~4W6SZR_$Dr|zKPe3 z)xrmB5{c24V#v!Nm1F0muDG#0i$4o>dO+DKRZ(UtRh7D0LFIAaja)S}L+%-dDN<5f zNlLXy9G21* za;pz_)oh9~nkD@CMjkgeoWd{l64qtCvvET|k-$ckcvB-1ePBF|3^4taQdawv)VA?M zrT2g2biV)i#jTez$$OCk>DLhrosG7@LVPthIB}oX3}3itrW04%>7;3nBaQU_mdCTc z%1Hb{8P3;K+mOL(32C_cQEsA6R7EwS%~Xm6b-7lku$&>>SUMkWAm&RdOH~F}k~VNk&KP_knZfJghR|N3h6f9^!UgzB;k#G}4@dJt8QGiQ8IKG0bYogh z=MVL({hM;rx++~abBS+^UP4Y|H8(}SfK>gx|7RkVw>(k9S(BJ%UroF=f6`kTYjh(~ z&Nv%J7=KW~IDiTdc&qnGxQzMY11K=t|+fr@qpHXWf ztQF)^X+&_;o8*K#L29H1m1D|Cl~ayuIpm9hLei#SNUR?EBk zK4ZMGFeNdNq%j7Icg*I}ZacHQ&N(e_@X9Is**xVaKCS%4|D_xto0Y}VZ%PB@ll(<( zD7O!+lhy?roM~nxuZ*mGC*x=A>8aRtJ?I_K!_Gf?LEFn8w;H zMeK(1bLX-A#;c-yhD~Z5&r(c&u=0fzQLags|-@2}!HM$sK{bzGtoU_Wrh@BM8K?_D&IfGKxyHX1E?*3@S zUi|>4c1nKkWXcSFPUNL9E1FBZ5^E|IPxO(m>K&A6W?8kX{Zei2^wc_g=QQB#X|u4d zt>G_gYse67y7XCXt&~@h)?S$xXe+-6R+Ru~OTLEp3G0(;@PSlUaJ5u*QHfON{I^Lp zyyi(4oyFk}bZ!XQErZw1sJ6psuO8C3%TE$_#1e_;!m;>Au2=jCY7&3p_kwEoa6E+; zN~EzLBwCw$^mFXf)_9jjZ;HMyfI`@(N{-%;m;K@(W7zPx35U zQ3B13oIdeZ8KVa^%|wAS*1f=dIv_a6eG=^ArwO%0=|YXUcfoSP_+WbRb>KfKePDu; zNpn?GX%^To4-Zz8`iA}@*}_?b9pO>j`|w2+3#Va!hP!*eg|9k$LM7>q;5qATpp!XP zD`sR-GwUWL5H?09ApjyK~k#0KE~u~qDT><=$*{F8Gmo{J7ljJMkA5o5S9TR&*l zO{BNW#~0G%SUz`O^tx9vI)QnS;@F6M;L1hk3cI6)#8$CgQq_1`rD>v#x?UfrDdvd4 zcB^u*8GRVck#@EXASM=_Xp<^F<3_`9?<22+6a|XA87|b=%0*Y#vr|xnK?1cGGc$*QY@R(AiC1M5efUV zBCz|9q{fFMi@2Ooi@z0ZPY%S^i&x_Jq_F-{o@m@wvRZ4^TXq#~yK_pL?gazGS&2Yb zTsV--J6dtFQIn;t+HrZ5+Em@CoYgMNEN~L8Wuy2m)Q^l0=M!FrpK~lc1HTWKMl-`N zeLb|w%N}au{v3qgSEzV5=hu)G3;ls~5}9 zkBt`-9wai8_J&1*)*s>%yNz_tc_f|ms>sLL82JodE+6OT$U8|_d9oCet0=pqhiV$B zZlIqyJ-C-F58V)Ygg^3L_!ZYa=_MYVbO|*}I?R5A*ZK{^GrduvX>PaR3@2w`3q7QQ z+C#|z|H24s7IDng{3>%ZD5-aV`(T^bz&!1YHt*Y4&D2(9tG996`kEMRFM~TZJeI?m z8qMI|1AT1sNIpMnq#DZ@X@S~B`rvz!@!Z_#WPU_!ys$Rjm3&E*7Y7&-QMDFHckPh8 z%NZ;~W~e-i-IPb;zvSNh8o3r}1oOLR(lNOOOkKB%E4BCJY(OBVgPDX;p-em7vVV%ji7r zS#%OVE7n065HCe0CO(oA`XccsGp)4Bnj#gU*QIBU2})L1N(PETI=oA|#Wj>h3jc`# zv8Fg%T25ZbcZKw-$!FKn@?0Pzw?FVRE*|^|4GgAYbAxI9_Q4FE94zFH3^a0%Ym?}8 z^``xYQp_GL@3XQ)2FuDmEQoijC(;d>B76o-AZalqTO2QSwgTE~;i_sh)L0 zI%H>+b2+W$!|n|E7k{e!mJOE2<1%tu{)Mz!=r5%fABf$hqT)`uCpo4p6%ML9`M%m= zjsy?ZySckp50AT zx4)*gZQHhO+qP5NO>L*Pjnt`??C#j}J>Tisll<2+XEQVJ`#$%5T_>F}@@dzVj(f)> zus29Iku%agl#}mZbL7)_F=ai$s=Y~4i=&F@i4>gO(l5;2bQ}8*{n`mKqr4!)A_~0& zJx-UxJJKhJ7gQejUMA7=$P-K=ai4vQpX8FU$$T;@2oI6bLZZJ<*x~IJ7P~Wr=}xRL z*{>`EFf_~bWxCKC*+tZG z4yLmF0iu(z3;!i7z#52y(a~Z9WT2SGFCo(2H6h~U6aLzr_=weuOJ~(*Ynd3c+SpC` zdLeS2z6md*lbEmdMI`N}=W8V)skFnMujjQ~{kE~xn5b7XyJ(cvLH%YeR9@Q2@(VZ* z`|ReHH7{0Xkm7PKbcS3Mqm;7v38gr(Qq4rJ(Nf4u`eBMNo6>!)B>JsggX!)rU?lGt zGZi_@#A2J6m3SW}KvK*=YB7D9mZ^_SZR!_0j=T>$g4uim9wQvah6=mT^}-rtr7*|u zB#ibHzK`3H@9S*l2G|GKxz;x3fH{!XjsK{I#%bc2ULNnMpG5QM&}`B+c$W5`n+dL^ zvtA97BnnLOZ|SmeT03RFQRA&xb+NrrS?1(W_Pert&r6XdKbw*RovzfwSamr5K%GzQ z)z*-w^ySohV>Cx;W<~Oqw zX05BaVf0{r4n+$q$l1aS;BAF%118w_S|qAjJo+H;@|)N|`;*X?Fn zGi#J48@IG0dI^0w%v4vaqm5fiJu^-zXdRXF+k@n?P7k=28S)tKt-Rjvp&f;b#puq$o9YGc_fbi?p5RNxP{oGjzjOacTvZ! zGUQ|P5KaKqqJ=RAxuhp~jrEeQrtP=yX<4oF+BxHi)?KId3XoAKtiIOUD1(gzIfq$T z{$_rc?pjY_R-s78o%-@|_nCYJ^8Jteq3Ua7qV@?rqQAsY^C~{viYKCWJ937rks1BD z(B=LI#G1r<$hzs#~}`UEYPF+tsEY*+G{s{F{DATO~B%bn~PxtdczF5(WAb9+DJoc;nO2hu@} zLtASZu;Dt3pD_O7jCGTkV$ULVr!+O!yFrDJO7u2#1DzXxLvJ8JF-_u3eL966&77lW zumk9x97gBhXHkdXj4344C#wnzh#JsUNF)5iPV)j*j4zH(<{Bb9*+Kp;W{EeGKJC`0 z{yHg;?O%*fw$ouBtW8LJE6z_g_qvPB3Qk>UDdaMjLdU1Ok;81PH#R$K^UQcP*^DSn ztSQP0nU151Grvfa*-h?atB?h_N5p)tDv`(?z;AF4 zww-H$b>bGF-&mM!vbMj0fov5$z`ILra!-)ooP|Uor#U_kII3ZA>GZOC`OxWszS2#n zi8;xRGh14;S#aO$5!+QB*`6}jDX7+Tr>SW?OHKAR zX^DOheFf6c7>G78%VPa458DhJ0I(Pnc|49B2`-(RNPtR@4W-)QXQ-vbZ|WF{L$(K} zkI^aAT;@DgfgMfVVAD}0xGiw%l#QIvO(CXmpYY0DKKu(i3Twe0K@UM6_BEXck*IxZcwM&*b__V3nW3?|7hJvN>_YBOE7eZ0u3Gb~y>Nb+V9d2H1B=7clC3sc zA^Wwu%ATl_PF*$Lsi0%vYVTmxa#0|Ip;ch$XyuN_x?qdeR!cHBnW^R>!!wg%u38jwn7g&DR%OkA%;Eq$S^aEF>ToBohP%_X zy)LTP^>*ow*WcLbH!!;)4J;OIV_!fgIUTSAu8V#47T~#&v_uE+F0O)<;T60Q`H_ex z|B%?v{uJCpp$mLk(}&xu@IFCxIb!5^?q@UiS3=*uElGX^-J z^lIcJ1;!FG&c8%-_Y&~a?m~=nd!r+r%E(tZ=kH@nu4TP(wpfqsPSztx_Wd&hRwk3P z1{ztd7kXW*yFT0E^-tDkt)~4Dp5DK;W=>Z9k24nLdQrW$Hy1b(HO$jKYmEkzRT1>N z{TG#i31qo7z#H@m_}zmD$SVUutSQ+B-$OPdzLBNK7)ZJ0rEXGjR6kmTv*y>Z6WBnm zW-5`#nHNMN)0&89ZsXmV{J^`JiOr+$qQ9wFv?|pS8BMMP%JggRD4x|jiw%G#@g?9v z{|6lY1$I32V^_Ottkq6A>!7Wgx2!9s2T8@6@Y!ozGjkh?c}*{AP1Bdc96*N8SbLa` zI*0V_4sJAp6*dB=)91Xi=4gMMRR(DSW|fl8UNk%WMQ8C4JhQ(ExbKC)qj#8y!LmRX zb3FM4zeb)RQpvG!O}StPaGpY`GW26|J-v?nNLM3S<|~no=?yvHZ}1dsh%cfKU98typjV}j_uIiS=+5>O-DR9D?!$kR;y$al)m))B7Ux&5}Iw{r! z$X>j+pdAnWU*MD3E6lleXY-?7*=*|6Ft0gX%$DwI^D8u+=6da{BK}+Jtv}XYf@E?k zqi>ww=vsFrHrOi)&aIpHe@Ja;QyX32oqQ>Hc_2`ZDCrW3W`J6}pUCg5;rY0{chzaI%Qkis4Tki3gi9VpLi~B9r4~PN$&Q~liiVm zRBm)S^#;8}&Bwk{dGKG<89a$9MeL`x6FnhKLQ>_(MPv^W{LEx$VhFhpZ%O{dvXOCE z644li4m{Xzw)YvK`8r z?-a8NI{mE=_7y7u5*5?zgZ4C#E07|p(Oh!ilqseeh zY>KxRTu$|fE&gkGj8m4crlOArmo9>i^8 zI#C$1zq9cr#5HU(VW6#v>|iVaBM49iXW*l}O!#VdA9ltm2-LR&Xg)})PqBckV7h*5 z6Ph)~M{lXo878Jr+!{uAx1RCS8EnKm`;1bKXu9?!^NO7TuH}>!Z%?*2g01U;8wdI$F_jh|Nsba}sE>Fl@+e+| z7=)L{vp{O+I51Od0mTydv0y1*>?R5{p6NHYegjXZEl?0|xu^B2ZdyIjS)w&@ zifTXXsJhI4r#7^IscG$8nqp1XzF4^a%i5#+)?lNM-P9atH?+>#o$UXdsm>DTge$oJ zyftoNq<}XF2*10re*PPrM@-@f!c$F9ivEix)8nyy429QWXX5u+8PCnNAi8rqiQ(LP zq9ccrS-G_2IaVZ#u_`f-xka3(=MXR9zIj1Dz%LV>!8QL57!A#^V(3{^@w1|5fK)pR zJP>Wbi&6=mQKc={t!WN(M;d>ev-%h(pH4X^w3GG#t-oDED`z**GTTG7pnYA-Vwcq` z*$?#L_G06d-3fS4?X5{pXIpWmI1}9jusFZ>wgd0F0hr2v`D?MY$Te_P{2{)eIyoED zs7&}1Iswj(3J|5(jl??E_&4~cYC zN5UY!;8*b$_;~CLSW9AnuHFqDLFn zKgu82VNJ7YDTS;O$}h8-a>-n)>@r1lk9kB*G{>=ggi&Y5cP<)*hM@inh!X{K)3PU zqFaHJUc?@Qyfm--3yq-PSMTa|&@Q-B)b#FEWsXxpaqJ`+cp`E(`>g!PlI7)AS7m^u zDIKi~Y8UH(Ho>|8XOtlAVP4Bq}75z4?FSAx?$XwFz(e_vB>y z1X&!i?$?R`ARl&uxQf;wN`f(JhnF9Zg>}jb`#TzERYtD@MRbP#9mpaT{9fuRZ?R&y zKjp4&ANj2lCwFpONwU++YwS*PEBh&2*LVf7o2iObU&HL-dJg-v(bi6HZGxn%V*lrM za?W^RHP3#4ei5=Sb1R{_C`SQreZIAiFgIy zD3Ziju?mq*>`JT>h7#}j!Gz4UCBCr5h(nBtx1f*XU&zjQTf)K4VT-U#XgX{#7>#eb zJa`kPLI*kQXEu8RdFQn^LTlnRSD&~Ym6q-T`MV=YlbvahW@#+Fvuj8@?NQP=`=!*& z?k#t=izvhG4C+$53{d$-=)CjP=;}1F?mF-6D(-amlA8D-}oj1$bsYzzh% zBk-Qi8CXIG#T@h#em&KLv&dUaO;Vu86Q#-ZczygB))YO1HUk4ibN7PZ-oEY)HgCGy z^mk5*s@T1hTs9?lx00f#%#V>AX7xRDsCW}J_1GCoN` zv%a$5e6BXP7V4SpK4#c%XTNv4y3gIwev&s2{0Cd0{j`(R;QeS}16T>q#(yHV31>-7 zoJyq$7Nxb|ReF7>661y9nYfsTj34^KYzieYMsPoqHrSboia+R$LI*mQKR|V4Ka&fg zg|!?~?#to*KMuZ|KK=*rH(mDY*&Dsq<~(vNa=3*yJ|;ip>JaBJ;sn9>GC9;<_* z57ZUXTNPDuXp7W|T74bSbDBGVmDAhE>{c@i`DLw&Xa&0g-qxu}j&+OCyFHV6=I`Ke z^gp2>Hb`uQPYZM*It9Csey}0cEtH*}8A_u2gvK*ONM-s2Td;Ej3)xZP7B;W2oIT8S zVR@EeYtbv29`FY3k2j!u!>YQSzm9C-ZY7%AtMCElIBd1v8vU;3MS3WPhszJ$uhHF( z6j^9ji;TA(h9{Y;!z+xP;cI$09HUQ&Ow;N`MXio>Rh=uZQ-47ZVZL@=t!z+Q7MNr3 z4ykkA2|XR~yE9`0%s8T-B~TOX-}EMDH+#n|2QbwgLP_L}*av+bScz>6p2l;8?i0O2 zPso0u%aD4Br}qXMGd~00nLlDz_Ox({ZO(sXPqGs0(y!S})J8TJQIXApon#0k$VA*G z^hbLL_1+vy{?UgKnYEU9f2An)OTy5V(Z~Ln$TlxNJi`5#THBeITGZ~Hn#G!tn$P@{ zTF;moo~n0_Bxz%!t+X4`Z?&;T^9_y=h)jpV|TKk2_D}k@R{Ym`2qkwiu9I zHA^y!EsWb@Z|4)8IPsI)BOv-CgXNJrp`Pfw&`hjw%tpL+%vM5-Sw-#)4X09q#b6Tt zg8m@3U}gzt8H-bydTbi#@C0D*|B0D}uV;n<>$bPQm2Tz!qgvX9sGep$a*5uKc&paK zn<^Eth?EJv7uEeIkyl>k$SHSCc&pPkyvlAJ-e4^YpD_cGKgP{SRpV?lLH{UK*2^k? zw6p3Jt*4%-6*gaL0Xwsf!QJP1xZxwa4HX+~{v>Ky7pcnjbf&74o@?VSRz|*?#iDslQkr7~WLIyftkzGfE%ds24&655^t)CW{kSty-{n2h zcOZ?8by%{okXUQ>r8-;1nM(F+HjmSV&*`2Ja(kb|QvTyWC1gpkJ}QP9U@by5@phr& zM3xW*>FQ@>N?;OYh#BaY!cuwyAE7n21XGV`4cyeu%yOa%vj*dsWym3VrdOSw?i{D4 zTOn$j(T;qkts+XQr}3k55;jQsjW&uJ$jAtd+zF@m2Zf7z)x%BQKH+grV)zUs#2u?F zB$Hc1>UxXZ&x}*knzx|~v&uLF-Q^?36z86?z(dR}NDK2gcGJ1210n;qQm*9$E{9)*UYX=CbO>0|!GKZM@nokE+5ox#fFK1jk$5t~u} z0d;8^htMCGax_Xer8AMO=m1`h=1`W_y|a|=bfj$SJ( zvfo-A;e@b*&)9v?20#T_Yaz;RLJDb60dq&0z>^J!R$!c&UBkJWw+K#+Pqm5uA~YyD!bYTy*2h$j5D+>(PT}}-u zlbcF!aTl{iJdL~JRS`P-%|zWV6j*~i4S=aGcnj?pY=w0QzQXumOMFJ)0)9ozL|hZP z6C3!gL`Cj0ahZ7wYqB>)JMtDW3*Sj>M*9N8FbCMnuHb*{Zg@5;8S4( P`sw3*rh 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

&3|Y#q2Ce64ighuFt1pAKvr*aVB>B zPyX(8ne=h8H0GtKOL|r0Hko{W!p?o~{Rc7nk=XuH_kO*xV&O)S#FWe2_E1# z7;O`Fa+Sz%7JNCCpLq?&c>xdbbXr3-Mj6t5xwT&GN^#1^U4NuQVa%8Hx=vt&r`v@k z(B*pfzFUXozijkH^uXyA5Yh}@YmWT!9Jq3Ue(UAfhE)*a20e@0Tzf?G$4#e+O&`fi zCyILhWl28e+P@v&Q5h^)w|Q8CqyUxRErFxVFTIWf$n*r$fz&5dJ==!O;+!I zy3>kw-YzbyuFB_HT`l>rq$#wR>Gl6XH^mqH_sOi}-kIe$E(=Jm-Xlk$M?p=^u)tF>@Rl?YTAn%L|oU~ zk20`ES!*e0E%+$kJ0Zs0&5vxQ$6sPk7SoC8(EfP%=S6b#G_UlyJW4lDp$iG_N(&#L z8xLDgPtThU@iS9-viGn-?|71LlY+NI7-QLh(R}I)_~ZfZ_A&nS0s3(_ES!lNZzYB0 zu))RnkUS9BSt~zCyM8wFW<9I-nHf{c@+z7)sJ z7iGR9+I$6f)$bgNyNVsZh32&+=e_*x7qKW)J*|()%0?FQXA=7l-H0&>xp5Tv#li*D zsTPyhEn;SB5i!_h;b}4Q`7$Jhf>Uhm3BPX#yS2_P%qK%*N!b88(upOm1%H*mYo_k~ zXDrA{QNlzF!qa~9{i5u;uF9_B{>mkCM>#}&0bVdW+2#5gn?Fx2=~$CF`a8d@y$*mH z_O1vSJj+7;l#Zs)vuVmVY}En2|2(n%)p`VOHACrsGr9VSh~6}Z=zTeX`65?Low<>7 zlZ~$Le5^ak^_e+k-#Ksmr(}^R_al+i7+m#m+)l=0w-kq0XHkopHI+mE>F@02M){|O z;)ik2-(Yv}5DU`|PgR$dsexV1;Mp>?wG_6uv>2eYSfC2emSN)W#ALPiaZlNWm&w`` zEaP&u;M=f}he=j0sG+E*bpuVjjV`ye>m6A5M`8Tl7@a|`XR$iZ^TY$a4k8VG=*44V z&4>J^4(el?@HKVFSvfIhaeJGC1f8IPJE7FI{@!fwgTdEa$GQPD?vy3>$0bnuii6FEk+ zQnRh`TRW1$Dd($lxRMmq^6Knx>j+6n#EJ$iXjZU@jauybk}UrJbFpZVW*q2G z?CCz=IWCGn&06JTr}Ohc#l&zG*^gWBHBDK>d$3qN-CKV-g<<^KXtkRYb>mOdjXzs0 z`yzdmD`DO*;oGlZsdcc`I@s!K{V!i&=2z*fT&Nmn4*d0=?9l&k5~JYd!Lkfb|7U~VIWCa39eI_bAZ>*f|TG9p6+|={Xrh+ zXZ~zg@T!?+Z&~dJ__}!z)lzq<4o;QDeA%LR`0;VP-Lw2-Z{Dz#pQ$e@W6{OM<@uT- zn7lKd?g4&zEex~>o|uSF7{M#|!7Oxx@mllPjbXmJX^5#yRZ&MiPLqZr+%~R`X;B(h zQf{)UpRL1_w4+sz(v2Zj|29j#K&-owW&fSOOZkFg@^Cl894%FYc88yas-t=#}DGiul@W=E1k`gPr|&s%C`@&D-U~4 z?Vz=~EMs-CX-O9SQga7$*^@Kkz~eB~e)0J}*zXrH?JjZs&#>=KcyPD4ajz`NL0!71 zWfZgIG%g9U{Ei~@tD0n`k}g>`AJK8@IIojk&xymBKqyDp6YoPp(7oAiX@JOhCYIMS37t22NUOxrAO&| zPCg_*j;Mr;*41H6tai0b#AU!-<2g{A-S`?s*L zpZa^#X#8lg(bJIZ{i41Wq^Ab_Tb7hvE+27z`eTyHXCF^Km!V%QL%-OnmWW7JCP&p8 zol$RjzFygaswB#g(wj(ZQ+EA92&O*-Hb(U21Ty}+4BOm_MD%kXZ;8ED>VDYDuO4SJ zB5_y#@G0mldXU67p)WPuO>uEWeor@6d3@A5_Nuzsss8S}S4R`Q_^)XhB9A-<-7_`4EGX-cOv^Pq;Z3{%A&i^S>Q zy60V_?=S00R1pO7@_E9-ve@U#be|@F`$dfFWiRH_qOn-MzB2SJy$(Og{J9GuHEe8q>PYKGmM zZC@6X+7C08{RAnf=p?Ik!t$vWLebU_xpgk|yhvC6h>~Lux zm!?rA@fL;gDY?Rjf@AQ@Hb1vg+%lf_4RH5O>~jSk;w*3R11b0r{(BCy&|ZeIs!0eJ ziOSV>(EDrL^JVE=TA}hbeMcq8cvVGH)quZe9~S!BXGu=$EF${7md&`;T3X_eda!J- zz{*pxk88>CZoWFV2&xpVH9sC694F#fK=QZH?%&z!DEyNJi0RAuVP&;yRl_3cSg#JN zg(bpDYQIW_#nen(u9Ex`mhOBWDP_<9wyS$tGF2ipDTNESK&jJ7@n99gZN!dMRR&xl z(mN&|{t1u2f*qTetiwxuY`(&D8t-(UWR&Y=^{_+nlf&%M^XU&b$}`Dm(m4tDGLtRI z)GuY`=4|uK{-mF0p@f`bzRSt_HGE!G^&7Y1knWQAYOXi3gZ_@rst6v|d(#cS)m=8b z3xC;#t!`nz8sqV6T0uq6AXCSdhjq?OGx-_D`AiM%47)!ZChI9mYV2uNloQIws-01J zzta<6mxO9M&L&f6{>wCfFk9A-=0Cxf^|w>~?Aq|;3ha1QOl(W`tQY$?Cf$=P#lGwk zU1o_y%d=&zSpR_#_S^9B7c!1}@uQ)Pd zx}UOfljyK1e{9_YV)gd^Z%YOq@mU4< z>$3W&8jR~h80ayH!?HYX}6-Z(uuWfnMzAVB^`blQ-xU#}URXeO6Ht)aXYojHVACE`v(%g&EQg7?1Ohq&Q)Mzbi)DW&u{=ZIfk#CKtyop3e(553 z9rhnca=K!++TmClc)e9cZe=yTH}H;5F!io_G^VZjDm_T+aQin!u6zXsV29ZGq#Z8^ zzh@@H-42C32#xe(qh4p3-oZv>5ZQ7p%NKH~U$Stk-RCkZT^L*sCzK0chjyL{%9~GC zHf+dpS1|b|FD!8sd$w7GJ7-)fDYdO{s)$%1 zo?q{;A4~I?8dxGMPv`Gaee)1}JS2D!Z`>Up*(+RwFa92G-mL@VAa3#qy#0?=9EE!R z5_9fh1-D`Jzk&ixA123XOMMZbz=}=9myft** z6)JpITr-MonBgfdQ6shiC$o#R9~0{Y>|S0xOL1PQl>cvF-D}u`n(p&9-u_m3#+tI8 zmBnBc&T*1Xhc_qSe7xj8@G z`Dc1B4*Z!gzv{_r#WT042y3qQ(vY02@c9s}8U$R%&Hhp+&v=L@Jq`E!si*!c zFM3p*lAC|YZwqJQbku)VV3nw;`C_V;yc&Zu>T78z9RV@E;z)J9fyuj z@%@=esk!h0@`$3PN6G0J`@Rw;+M@#CLiV`4zuj6?^%Ru*Ki*&&x!%Ha9uap%;V^S= zUVtfIRINKqrRs2&>N)x`giq^ z)_6p=AzLOq5MxJjDmls18FKWmC$QhOm50n^_CByXBgxhiY+wtrRSB}m>v#Nx@ma?U z%z$Htd#*j?z?!lFH(BM?>_9PELef`Kb6!+{X3|);CFTS`;#3$`a#t8i)$ZWdMr7Q<+>7g?wnwj z;3m7&LL}Zp?DvZGX6Da*L3V#(u}|S`3PAJ~tuv7J1e(Dkd+$nwb`gzc0cTpW(f?!;7ED z%THlpUy`?bTJ-;@9=-?pmix)py=>P*klVwe(ZOVHBpIB=#;r?kq+<1 z@X$y*HkE}~Ni(<0Qyex$_X7G`(jDGR{#)@G84U0oZ#WvpoS_HyW2oj!IBg?brY1Su z;o724_Xm5m!9K00U#r-QPk8=WDvzg#*GAFD!8GzQJZ%RU{SHi4b&`DzJ6;I?nx)?F zqd(RWz z+uDw1rh%MqcXwjq7PCPwkmxS{RuwXSvHMi>jjI?9+du7jKjgW$P(fYSRZ(ShNxtS% z*9B&J<#IOXdA@(1Sm(lYX_DWxf}-TCjF_e}@7fURY%UUb7|QEsPhR04Cz9=X@)4h^ z^x7=;--QJ>>nA*$)(-Q~k;0yPS@Vf1@hf%g!|iZ%OTND?yXIMk9oe%^V&{$`m<}Ya zEgqn`)!k12Yhe>BTUQwjU}3tS7tjA6pMMNW*(Jj$3Q0a=mzT1~AE*JD=)N=Sd?9^5 z87SA-z+E@nu>i)V~-0 zB8Pm?2|N0e)mm+avUY|=gWp0G_hN(X*0e$VGB>P+8*B*UG}7aD7wmtRy}T28X=umf zAlQ!~EPi8=9X^Tu;YqibD8r zT+FiYS+h1qn~gL{-hN(?6)iQNYjyA+u694&-$>VI(Di3UGL6H}a5NwDGjpxw9hu74 zF*DEc%{^sv?uO0kJMEx+FfA#nYCUIAickML-s3#<4Q7w6Fz;bj`ba#=Q%TEM%u?oYGh_YnoduHv-`piU(?4+-TTAjVHx|9<(`|n-wE#T z2N?L$C`%uB(eNp~chjOq;i{;ee!Pdn{n6v$Z+iHDb$zX`a#8fCnNSbvM{Hq!M|~Yu zW%Q61(n)a=U+@zEFzA7YGP$lc%u*nW{t`?~7p6nj=gs4ES==ooh z+$rZ>J-yCVJt=R_LRGR=4f|II&bd<_xg)KAj3s^vr#RJ~tc2`-5{I2u*;!caVO5p* zt>H&gF0CtXG}ksqu}xQuk_CN zr?hB)XkHz!Sw|u-aUTz-7622!>x40SZ*#iTd;8)I5 zRd6XAS`H_6t7q7npLi%(6ZQ`-jz$D+A~hhW^qmaADSlpm^5zL4~YsLFufG z!L>fmo%LyOG+JT~)>La98+44G39gKs35VNwovt-dZ*^4H&s1{UNRHg&)epEl$R3ne+zgJvgfi2u?7wp-uv&&iy4hkp0nzP3+C+iBg0In*x{QFm2U zU+i7*+oKr7*J%H2{^fht|ibl-g$eP#~NXThH6Ti3c^YxGU9B>FlS8+{pci#|5fZ-Mo{-CH@WX>Y{89be`^>P z-$7oYeX+|o@i#B{xz%dn3d&2}&j)|P!{mi2yNfqIC*Aq+lHEcvK6`YAovIn_ z4f@fQ8BwlqQ&b>49ARR!t}vV9sxWs}k?=ozbTGOw{5%T6x1ztD#=A4PhMn7khk6qe zP@fGyB)|MWd6F9V-u-foui#H_q_KNMx8sv1`S=cI@6<|vip!X9XNq7Praj10=lD;v zVfN_R|1EilyglpnT{G6!#fQuwPLf-2o6o@q-y~)6?M<<8WEOLMInH17B7412J?KA9 zpvt2ot-MYm`KhQ&&^>w~7!`@&qnW{mXi@Mz{n=?xzK*^R7DZd=%I2V}&u_7gQ)6yj z^Ar~)x0=<_D4y)|x6Qnoki4lQbagyKpY;OWdu#M2ZcV;UjwA)JAmTF!*_okszP~8l zgadN|m!?ms6Adx%ctfNer26s1`k9l zt$Ud+s_E(gC*nAU;-eph=~}Y*H?cC8)Bczx{WUEK^>2d5M&ef+B;CkOBYrY7XQ)s* zGLFm_I(%-1&4cl_=prvqaUvW}Og6;h3Ca`)l3X%`i-B{_!Clp3k`7p*q3F^8XWpufq3rPt8zo z{h^sJ)5XtIVVH^jjl@_Ew}##_wO!?Zo9q9)P2Rq=zK}w}JL39B#KLv(`^A#QX%bK7 z`(LHk1Jdminh-nEJeVOSC_NF*#BAKlGG8uI+W@H!Rdrt*Q*t`_P|eztDIs7MkTd%gVo~Wufr)_$B$ga50!GirNzq?;Fc=zWIZ^)DGSmW%6<~ge@To# zNnUmletaGNb+0OwY_%i#@e~zJA$>dUla7lYwjUkMxV+n(vDR>A8*?q&sT=R;1ltGH@pTu6_Jy?v^OvL4 z%)Tx6Hyv7}sj@NsZ-{JDBh2oThM~I_l@G?M-z6ehvgmQ=ih)Jrm%=hc$Kd(Y`gK1 z|ENUEgW)f!C+8M93uo={Z}r{x{cLJKd+{b;@xO4c4#VZa2Qti=YeMLpDn6(;Y|uXZ z0JkxT&cALA1L$2(dA8Qrstmh%9d4{Jsg2$3A8d`zUmeX`l6Q3$j)VK3!&&x*A0Kdv zdk3}pEzC}9l^%ihGxL;ByDmt&q$T+Hn`M$ad;fDXFpHAudJ{fPFNIs`k=Yl>?lP?F z34CcK@%O{L^W+TPfIAXTv~)O|j;!D(GN%b_*7cd0KfK+Xt}QUzW?k)>QwLUC<1#g{ zGvWRz>fT>uJNn53-Y45$k3Fu0E4#>VJ&SkGbbfz{ahygDUdImg61jI#BUxK^rMi!b zV^j*M6U)N=CwAu~?{gvcmFLx~-t+e`c5iwa2&d zk3GTy?zxh>;=5qO2ZG~l@5TH{Nw~3cG@l=I4nnliT-BfXk$o_vGb^IQrV1P~^U{Qp za2J`|D31Q(T&^Q0j&@5hOnmtScC8I>SzCtm8q$!5)&Cbmw@Zfk+q4!rxms;oq#EGl zx$Mdi&-@AT^5g767dgw$;v|3k;S7iQH;0^Vf>^UfWJSqaW6$hi z9LyN?J@a^k@BPgqWG+Wo4|mxHN7hkhq8sl22|2Sq?sXu(a=^K{{GoVlH-_*lnT{Fk z*AUsM`(!O|K38FKi@Zxkx#SWuaQWntGG|&GrzgMh4Vz>jzO;t9_{k6CE#9ObBXJso zF!)bfS1-=G2fWqe-2K8O5Wumol+>T zp6U3>5sX#MG(r?URIgiKr?Ne&W~Z}m;&y7o8>Qm?!q1lircc7oW`M2QwY_AB(vb zi&d7VW5oxVe6w?j@i0Hxr{DOP!zAn^y$dm77m6k?rS&?;>FB$pVl}xqgayuJ4OjAq zRp6;Q_M(v*tEP0i0ePxpU#|0cp$wJ@oL1z=k}PrsDW3^ zf|@oa@9^($n9D!dq>2IJv2G@WJd|ehi-*|X-L8G?@m{YdyoP+s<*uqpS2giHVX=O4 zOG9vdBk{Ns?afS@{|WA5Eyisp-@gYBb4mr%e>%7?;_C|X7bVHmH4s%foKboHq=Jkw zpB;|tT*;#}!V@x|$@aY1vfuNHS!^!)}nv$koL zn7D%ah5M2z>FZ=~qrJ_=%A1*judXVlXyPe$!!8bHLC5fQ@2iDbtfuEvayYcIy*otCKk z`7zn%iJX$Fz`Mxhexye3FP&}I;ujufg{HDbyJhW);I^8FbxaKD5H1ZL4fi@lAeXss z*G8klTg*sm1m8D}UW5IIhIONUW+inAi$~4EFsc~t!ig=FSAGc|XfKW_A>RIzU7V@v zqK6!h-eio}Cm55-&f|Crm)rqIej5x{I{i2)WF0xg|FJoOr%grqFKH(Rz9%_fj8jaW zwiMi48{gRm{&|uudxL+PhtJueX36=Q?DGlLYn9la2T0dD!F#gVpIXtceByEXf3XQD zCGmDu%&NQ9bhrBE@7A}rI;JJv9OlK5!#fahHhx0)n#lE4Ik?Bs3hnv&#E*>|x@ zm@;a7Zeq_{iH09%lQX>30^GrNPban4rTLepG^Kwq$-ix~zj;)L)CzNjPlQ*6?}l~5 zufw}dt?S{Q2ZUFOy~>#{R>huFHM6Rm&#%N`=C(I~n|b-IHNR&{N*~i+8o+HAuz%ax z$8oYu_gK@F?EkNJ=6%(@kH}tCv^!^$cDR&UxbEU?TRu4Rq$!ps%ud^%6p(w%Mg9e zmW_tA9uPI%AkN6bpKixDd|(#Z(4Zy7`$Kf=TOLboo)`8ANe)ZK2!3aOU89b3|! z@1B6IU*f)Y+O2=-(uLtEnXVjRSu450sw#(h!wTVfD#?yP`#)i$SMsuxur5zSbj>`G z>qIVRRCccCE2rQ|d%}^o*_C|cYae|7aZ+8)LNW8-vpnxZ$yLejc=w z&FDT7Z%xkNk}j}UC0Maq^yc2=cKpp_>gXm~!)kWmH1?>KRjRhkMd#8@weKZ=Ww1|QS!)#0^fK2~+r4_BB7Jr@i92AlA7SR-u8MwIrR)9STW ztJZwOo@N-nYvG$c{1=v6k9eqGVmsWvfDXUxxpqrmOzO$$mBB0J(#Lk(v;Q@@)SSJ7 z(k`G7obv&iw_wI16ztyUl^PgeKI7e|w*^ zr_<^3T6%rZvyR!aLeT?Zk!UcR^=4Qs`p`_#xnYiId3Y@R#C-InrVf8(y6_aMdWi=0 z!jQLOnX8!CS1BpPVc&^o-c|9)6<%Y*Ph?UoHt< zhs;HD9$K;~X_Z*2{4$wotvl>Y4h(Kp4Bum(!eme5Cz^PP%-fwJq@lEPslE_r zXqsh_q<7$u`l{)96SiNV-g1o!vCKreU*z%j$?NS9+i!9$QX4x3pY%+KYk{lF;%v|2 zJigH>HZ}-EWqU;ztL1v$hyI4+t{!Fs>hUVq;$cIP?>_&&G9&CmIOPrXuLIeoN0WJG zi7llmU(k=ANZ1h{UqTvhkWqF{9CSHFWUxfWb6Zj{IF;P48tqw?_Ve{t{i#;zvT(7< zE`Owb!`x!~8shoZ&VU(&qZ}g^HnT=vsbI8I-2A6=I8FtB;{bnheQYPju?P=~lTGC% zr|a}AEyo?a&yu~a=H_XYG50|)aE;ihmH4tW401O4l^t5=jux>4Q{^Eu{PNIq^8^OK zEl8CcDEhH}IKPdA*R|JZ6sAx8cKPJhlw`hqw5N z5`H=i_p#)2;D`a@%Z5C^nNWPC>3kydLD;3+@#C4=gG|Tm9!$j=^?b9FThy1`AjY}U zWgd?l|Lb1gam`CAv46Lwf8b;DiuNnn=Po4dMcni%+`;c@qOPZuztT{g-a{qGYie0$ z@fKg>miF=AXT`~R!=7-!lk8Z3>+8d}bff2;R9n^$)g3`EM=TeQ4VMvXDXuKSCjTLCzZ7o7W26eWAIh%*=Jo~ocO>FYjY;tbw@j*41YxvZ+NmpjBVgtw} zpO1FZ#u;joy7OmM@UCa^T5Dk5*GYXBxzrnBu-wVtrc(Z#d=alS*L`j>E}oFQ9FIMmdxwf;Cf8$l`^^Ybco=N(`q#wdGJ7Jo__UTSN{VzcppJK{S z@@W;Zj7~(fu0f)hH+g;)vQ}8Y^u4k?d^LJ;E6;he*XnTSRla_)`WT&t_?yY9u%5Ro z4~kmr${Jn{A^(F9TTA<=kgdnnfHuM*6{q*7k}aM&eKA+}O`dW9jNCP8&sVlIhqH<4 zj_r8M`;*2{OS@zQkNJU!X088^`o9RIdj5#3tZ9*v~;O890)S~ zJ+s~GW?a`%{Z|E?O{v=_tQ9T@8-$;Qtxa=n!&lyI@?Nv>1u;T*xUxZ5jCYA(f}P?)VT_l+oq3=~O)ZQ%T;mg=+Dt$#+Qs>&gioAC2E2 zYr~U2UB_H;JSxeTj3;X!n8CZk+O~?{P9^K?%bBE(J@3jwj^Qzv^E)791E{-wqODCU2}%t;rmv?2$RAk*8V^I zb07R!W1P-489XP({7!}CWPhVSAAJ{OdktAgpt7GZ_bYgPXNbU>YuMwtrf^QA9V6|} zi*{#(Ih?Qh+Pl!sJkjT7ap#}>Y5w#Fh%QMUw#(y0{@>d5Y@YZ=ex)0qIYkG_W;z?- zCn`dV?NyEs76ZKF-alcZHo^A4+K)ZqJ#1Wi@mC9Zmxi!Gm2jr_ykNau;e{&du+9%x zkh!VBU&i%&X-7F2gSu z_IU}sMMXBcp*rRVN%)Aktc4tGrRaAPI!zMf zQ$OH4AIEc42qTu{TPI6RR;Ad3Oy2?v<{=T8I^!iOcHa=oKc38>C4=C}7Ul+5HAA$R zZ2kpKdCkR=rEy8;Ta@?J2C(P7v}vFYhDoGu4b3?M`4<%r-Hy{WH4gjp14(l>H2ZuT z6x9odFT|ZanRul)Ofx2|?)f(gKZPdO(wTL1XB~UC)ZWZvr(g4)r|C>nS+O#F z=2^2X*3z8utaN91;97|0A3pA5EZ_@j+wK%AXJ)0;cFIUB5m1>3;3>zB&>tKGR!(Yq^;ZdxWjUe zg~ThR!-_C*OP2Ui5!g#%=WqfPIW4>o3TqvHU=7pA*O>6q@Hr^CTewZWV-B8hIKkCEvxDs=dgk_M(7u zlZqs>;_@c)*A$brPku2S`M-E#QqqpxAr5^?&Eia`a}P{VTm;?@_dY=;$;r6tN<{GAhezJxdznq)r~qJE0C zYbwgV#!sAJ2{OAoA~=QB{6Za8=1iXZ*tHvE8~!618))xT*@^zNIU{vd%o{1<*++Ef zWHQA54B{(?@TITmjG5%?^ZBJsY~TSpRY*3xGNkv2y&lc7e1*q2itR6LZ(8z~FR{!Y z)1AG+E#XD>ql&X0?sjjzY552iU_A8yJ}WjA8}KfxHY(ij9p6DRD@}Tzip?1;vc5;u zUs0TvV&1;P&rT#`5Ae<9G4cPhIIG}~SKUK9>nSUO&Sqh^vS|yg;4PAsiPZYDSv`H; z9W&DtzI+P08OjR3!`pt0{oJJjHIPxNr0VKEHf)@Hg>$Ra;;y4B2`Q_9cjzE;e1-ha zC1G2`7sG#OM4o6T9CpU}0)?ZS%n!fG6!FUDiztA8Y}#xw z&2y}F6R~Mw6%0Eu0`Fn2@5i2BkLCQGPnfH=x3@gf|B-Yba68rSAHdJK%_Ms@Y{{Nk z*%^@}Djc6m;D_fBNY$I1TnH|_DA9G$!Y#y>xQ-xJ~k$+!% zFcO*^hus)Qo<_RoKD4Gee|XPL+$IN>kiD!7ya zENeCqPKYhKt`6%TnBbZS>_6S3a-HPxtEjBKtD{Hhah7bbpP0`YZXl&*r$QH_MHZi6 z8ID`I9OCr`(C$F1`5v6PkJe^zZ>4zo$Kd(?y#GueFZFbvh!DQv^|$hl+ry12wcf%! zkHw~UmU(L6{_m9GxMAYge$_TBRNhTg+xILl(-2B4r_T6RoZpS8V0=t;tfw;C91Rnf zH6>H|G0Fc+`8+zHg5=YbLoC{PCq1QiB4+`oSJjt2?-8$5ZMq|6b$mAEC#P8^Gwr3E zjQgm}`*8D#-`A18QxDcf-Re2bQYsTd9qQXVtHJCSPPD?SS++x@>3T4PEq(^-ZxhxH zYr)d_`I^9Gjy1-timHG@*y#*T_BhQxZkO|!k5wMT4>XZG$q%1h#QuLpBIe*!pCxmR za71^~=Ga~wg@kv}`L%eL_vpPd(?n)foN@CA%+m`aJ57|f0`=pvFF1g*Rvdp-&m zH6m<;WzQ2lts1yZ_<39>oE{eopNZ3j)#D>-VK&JrO%8TM&zR_Zue@IN;05tzPn`E- zaw=`)Sz6=A+eO9XzcZNPd_5Wm70iM0H{xdwvIe1yY)KqOdlq>DOTN+0UW|)~Eb7Y~ zcBbPm$6v~ho@3AQ$thP4^RZ(xO==V-i|c2zYm3C3?_kL0ip^dTxnRa=PCY2ODg9_F z8fy;y*JZ0}sB*j;8-Q75{&S>lcQg@Sv53Td<~oeMNKu(oG&L*mHI{t8==y>zS~3e$lxMjggVjU* z*ra&2Tflt2$ZoJNtot4eptpjtNjQ)(Ezx^1lihPXh z(zx()JTlxI4-RL=J;EMwEBk>**YR{B3d2oijm(WUnqxV~*){!w2cw6B+EKBfY?LM_ zFP~S|D%VuQ&|KX7IQur*v%M*1+sdn4j_wkdW`l^cvEeyI{dushB~(6FfLi1`?8#;w zc6uk{{AP_c4)NCEg?K`k&N)r@U@hz6S~{w28y0+wbNRqCy)K_LJlsit_KVAoi^GmX zrN@KSe8*_WxGCT6glD*DK3$){GWL@9ZDCqT6@6pb&93{07cfIez4!}ycDrL$I;x{; z&4;&k-<{MT^@htvWAx^+UZ2~E!@Ol0eQu>_Qkyuv2r`#wJ2|nis;Z8bx`TV_;2v$( z!rSuU8%=3B8W+MR)sf$NjMVp$e;osPObV9-uZsUCKmnt|6#W%Bp#5ZYTwd%|U1W2g z&c2%bdlfraK{Y@@nZR7Kem6+0X?`l~`lw24Xypp3xce{aM7|mXUqwY&n@pyL|HV7( zS5IQbkUalOo^KjP?@gFygE-&-taTIaFKS1U|3-^{)~U`o11}U}5nGyKG?8`ul+QmW zw`h`rd8vDx!F@WO$b!D3MsX8Qut%=!xH|Gb!Uu!%IHnVFqBYOnScH8aj=hj*%o#X1q#xn%<$8%G>G60DMsDk)+CHj?!MqEK zxeJGx1#-^~&*Y=a#V`|9@pw&GxF=cfkkqfTAf_LHo#;!uyQX%yCeP%`%-3h)bJDV7De&+G zK1r`~uv10dCo1a}!d;_e5TCSC4_dVnm}@5r>Z`a%^pZs!c3tk|j5zFP$YW2`Nv`O@ z_y_r-1Ni0N^ojk;3Om^~E-ic1T%}TPHunvmCo6g`dY61=>pVz$2YBZtZ166XgV$O6 z0^t_>awzU*M)F`>-;D5Xc1tc0PyVTW_!w`w9&fpnrZ2+%P2v%Ux;n60^*ncebxJqk z-(>D+rA+^LH85RqJLbxXyzfh`BiSJ*@(~0$)$)9}9Tx|dxUfFpPwzcmMIO#l<;#NOO1`f5fNd*gE^K-tUuza5ukI)mKRIT3SqS-7%Tm}WZedU}c% z-R&%Qz66%}1pB8ZpESPXN#69NlkLC@!G3Y|cR_RCyVsND^_?5+*3T*hKZUdAuv>#^ zXFIhd_oeoEZV`bkRl}pFAJ?}@55h7$<$ST!3@B?nK4ub6IFZMH70#Ru1-}bDF8A>k z-v4`f*fVlADeT-`bf+5ju$_GypxS4q4Co4b{DbE?qlPq%y1P5*X+?gefgYT;{`Ig& z&q3(}f{}J$6v-K54@S#9zd(ith}pW+kG5ta>Icv-cWZDP#E?9@h&-Wv&e8j$8WDgQ7n~CZ1z1HPn znWR2;#1vu?(6{Vl@*Mg9)RE@3wiVdWCRpVz!OQBvOav!6bn#<2eR@2+5^H%M!yvSCO@Tyc^@dxqBI{NJddim@p zWsm%*R8!YhqbpC6)_p9IkmnP;G4^`Cn_=pOe z=Xijr{$EULOh>?1e2zsupi1H|oJAn z@+Mq!M$O3{wqk?lUFg}zs}<-aE^cE*s?n!HELmE$m*-irpX|=3IG<%CaE3VfWu9gr zIea!AWvyTIEQ37BKt6GhYnY0Ym-xgfVwyQ@*;4g28$H`@KI$}I6^l!6=T|Cu_lH=X z5}G{UE{!8U!&J%ig9e_!&ptt> zlKasfx6;v1bn%lt$X6edHb_q%(UWSu1(|~-zbZhuF zYhae5J!(e+pLBmu%cc$tPO02G%cfnxtNvx}FWS#@u9LWkLzwXI-Sap0dM(CfDLgSl zPYo|6HaaB7`z5AyjlQl~e841szaJc8Zifl+F|TRLGwS`p%bOU4weV%K;_8Gt<>cwESx7}eR`@|wtBKFGC{9`dpV9Db~loKx9&R#XAj ztc=sE7H^E|>X&W8b3Vehb!FRn!f-?5^9o2khnvb&Y4O%vB%%OVS+_LG%7$>Hp`BPx|bnwcTfpcafp3u66wX8gjoNwWjA= z801@jcQakzL~fFk2-mT$YuVXV{NHNq#R?YtWBahu-L1DrYrKlo>3n5USwpkLpi2#g5*D1k*tSxp1?^NO@_W)i%+qt~+lA zDKwKIZVfxOgX`Pc;f^q5Tij=RII@+PCCN{;R1^8Iis)vkvmh#Bs_tP&3$WC8kg%NM z{hYKvo4=L~Z<-5(lG}#FQSL-*Z`tR?3>v?EdNe5W1D*9vZHf!%D%CN=U~wOIHX zp1TZeS3<_%u4Ig@pE*ac%&sk<3ufxlX_eger~`Y{A~hGkhZq0RT5pGfx4ZMNptNtj zZgcIVA3ul$_R^0-p5!-v|4+8rbR+L4qpwfrPMElexU00MsR8rXA>qyNdF`R7E>`_H zdY`nL!#&p+_deG1OyvJ2@u1Fiq7}_k+4HfUWR#DG@vDPb#9n^p3D50hYTqeq9ZIuT zMZH7PZr<+yEdJe!r_`cn-T(3b1>W-vzVD>n7*= zxtDpN(SC23yLZ00-@4a(mi9aa{GHtHJp*>~COP+aFvFt-YN;yh~+ScE6F#IOnBH1?fmph_NioQI!Ta_WqCPba>kS z^e16cFokcB+>cqCuh`_nB>a;3FZygq+LL6cue*JQP3~pIpZ45cJ#z=o_y`PhKYv(- zPc6xVDV>YHKyZNwHbIP&^qajIX!%NCf zS>5NX@@Voh*1zd?WDZ$+%Pzb_u0C)rCu?h9f{)44TF*5&JJ>ci0mj$<*6)9j4$&Y`H{%#i!U^!J-(^DxHkQ4?l+IK!ns25z*v{aJCP z@I7^~>z(KPy^oK?;j5NlGtI_dGUb0IM(@Mj1;o zUtw|Qld8q+`X{WxR@nLgD}I_q_#aD=py%0Kclb-ic!`oUtgMwQPrL4h{EN}9+*UWU zk3zb3-X5P)&9s%>{nR}zv|5vKLj!p5E~fo7cE9(!?!=^L7Smsg+TkM~36A4e_D2=; z>6Q$3>L=Ka;oTGciD~==uK$X!{776fQ?J-avGG%JJ@%E9OWh4(aAV@lG$6)9@(SaxQlI`_dCzJ zS*~seM6-$i-W?CI7qjfw3fFd4?+^=knS~C-j!6r72m4z{mbw@VSAyghV~n4{(PnvN&4*xx$POUTBcsofs%GdnC(l~J$BX<@TlU7|pAsN@?S@Qfj zMq?MNu$*090JRU3jqL_W*AwLwWdqX4Y5s1KcXH0`ak936rxTrJV4me&o+0-y*x}?P@)_z47m$tB z?)NMAdB9xi%k(+Dy4<^EL+aopJK(v71l__{vBAq_Mz^c@JcJ>>re`9(JR|N`cMC=W zcYh!DwQAVHRZg^$5UHGCK|Xb|z#G`k=h@;%@R4O$o?F<>^HI@YpS}4a+66nlt7iHI z_^};+qN)sIK0OvGG7!IueZP;6VY{zkUGA_;wIR$WT(7!T`TTcNNHPSUMpezG?n(>C z(8$#g&MwmYH+z?b?J5z@r6XU&EyCa8E@3A1p`~OP9v0d6#p%BqJQaS7=i4EBd=_J$ z;`y?PPx6a1%ZMH;hTmZWKk|$-JZnEuSi2xgSVN|%ph(~rJk3@0v{0#@lw<{Df6QAu zd)9#UEu-!#4_lUSB~N1eoqs&YFYdE1+gYm}v|$S*yPXC94qDrdB{&X~{LUl&N5V7m z6!}H2Rk0Hfi9epfVUH$5Z;_=9dRBh&dI|TH2~%8Hp0SF1ZG^3C9WJ(W<5iFj)alwz zE~U0zOm>kZf@a|NhbS~!=Mcl>P-eU%JMfyF=<2OU-FT6)TOM_ru*d4nv3Ku@lKCQDio89%#nC=7o z%o#rBsDGzKiw9-4_h2=W69!iEJa4ij<3+vC+l#g&yAIB!pzLi1%;-6~@q;L9t@~f# zu9Iiq_Ji8nVEmf;R}ouL!ZY0oeddDLbBQyurRE}%r}H>%EHy(bs^&+!nac1YDW0JZ zWv$ws-A?|y$`a+~)9)2kwWHZI3=T7|m!^No|NYDpo@Iakh2#=pc~N{}a+F>M=6akd zJS<>wrXqWM!n^L4?fBI6ezV_X)GCvPB5ZUvzA0vhuSQN%j!v_)+hj;TRQ>Xr`ujn$ zaozMuG~q?6L0otHmj_3loClqb_NT$mWDxmgPTi|RzI%iJ$?mkiN;0%f;Dl#r>WE++ zTeeG0^;t895@hZUac&iSLvogI7g2tH^E<}KILr|3&n0zBa1`(P`chK3l%0DEi#A6l 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%0Dc-TKB9BvCzqYGR?yyK* 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 y@|3?8aR$aW8wf3g~a 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 literal 0 HcmV?d00001 diff --git a/rc11.png b/rc11.png new file mode 100644 index 0000000000000000000000000000000000000000..320e4f6dd36853114abdbce071237ef6c5a401cf GIT binary patch literal 4783 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 JPDHLkV1iFQD4+lU literal 0 HcmV?d00001 diff --git a/src/Drawing.h b/src/Drawing.h new file mode 100644 index 0000000..6657dfe --- /dev/null +++ b/src/Drawing.h @@ -0,0 +1,114 @@ +#pragma once +#include "libtcod.h" +#include "soloud_wav.h" +#include "defines.h" + +static SoLoud::Wav* click = nullptr; + +class Drawing +{ +public: + + + static void draw_window(TCODConsole* target, int x0, int y0, int w, int h, const std::string& title, + bool clear_inside = false) + { + TCODConsole::root->setDefaultForeground(TCODColor::grey); + + for (int x = x0; x < x0 + w; x++) + { + target->putChar(x, y0, TCOD_CHAR_DHLINE); + target->putChar(x, y0 + h, TCOD_CHAR_DHLINE); + } + + for (int y = y0; y < y0 + h; y++) + { + target->putChar(x0, y, TCOD_CHAR_DVLINE); + target->putChar(x0 + w, y, TCOD_CHAR_DVLINE); + } + + target->putChar(x0, y0, TCOD_CHAR_DNW); + target->putChar(x0 + w, y0, TCOD_CHAR_DNE); + target->putChar(x0, y0 + h, TCOD_CHAR_DSW); + target->putChar(x0 + w, y0 + h, TCOD_CHAR_DSE); + + int tw = title.size(); + int tx = x0 + (w - tw) / 2; + + target->putChar(tx - 1, y0, 185); + target->putChar(tx + tw, y0, 204); + + TCODConsole::root->setDefaultForeground(TCODColor::white); + target->printf(tx, y0, title.c_str()); + + if (clear_inside) + { + for (int x = x0 + 1; x < x0 + w; x++) + { + for (int y = y0 + 1; y < y0 + h; y++) + { + target->setChar(x, y, ' '); + target->setCharForeground(x, y, TCODColor::white); + target->setCharBackground(x, y, TCODColor::black); + } + } + } + } + + // Only changes foregrounds + // Returns true if changed + static bool draw_switch(TCODConsole* target, int x, int y, int rx, int ry, bool* on, const std::string& title) + { + if (click == nullptr) + { + click = new SoLoud::Wav(); + click->load("click.wav"); + } + // LED + target->setChar(x, y, '('); + target->setChar(x+2, y, ')'); + target->setChar(x + 1, y, 254); + + // Indicators + target->setChar(x, y + 2, '0'); + target->setChar(x + 2, y + 2, '1'); + + // Lever + target->setChar(x, y + 1, TCOD_CHAR_DHLINE); + target->setChar(x + 1, y + 1, TCOD_CHAR_DHLINE); + target->setChar(x + 2, y + 1, TCOD_CHAR_DHLINE); + + if (*on) + { + target->setChar(x + 2, y + 1, 'O'); + } + else + { + target->setChar(x, y + 1, 'O'); + } + + if (*on) + { + target->setCharForeground(x + 1, y, TCODColor::lightRed); + } + else + { + target->setCharForeground(x + 1, y, TCODColor::grey); + } + + int tw = title.size(); + int tx = (x + 1) - (tw / 2); + target->printf(tx, y - 1, title.c_str()); + + TCOD_mouse_t pos = TCODMouse::getStatus(); + + if (pos.cx - rx >= x && pos.cx - rx <= x + 2 && pos.cy - ry == y + 1 && pos.lbutton_pressed) + { + *on = !(*on); + g_soloud->play(*click); + return true; + } + + return false; + } +}; \ No newline at end of file diff --git a/src/Help.h b/src/Help.h new file mode 100644 index 0000000..26370ae --- /dev/null +++ b/src/Help.h @@ -0,0 +1,27 @@ +#pragma once +#include + + +class Help +{ +public: + + static constexpr const char* help_main = "\ +-=Main screen=-\n\n\ +F11 - Open/Close this menu\n\ +ESC - Close Menus\n\ +Space - Pause\n\ +\n\n\ +This window shows contextual help depending on your currently open screen\n\ +To open other screens, click on any of the machines in the submarine. \ +If there is nobody operating the machine, click on a crewmember, rightclick \ +the machine, and select \"move\".\n\n\ +-------------------------------------\n\ +What should I do?\n\n\ +Wait for orders from central command, you will receive them on the radio\n\n\ +-------------------------------------\n\ +How can I interact with the crew?\n\n\ +All orders are done via rightclicking, you can find further help on the \"Crewmember\" menu \ +that can be opened on the rightclick dropdown"; +}; + diff --git a/src/Main.cpp b/src/Main.cpp new file mode 100644 index 0000000..24ab4c6 --- /dev/null +++ b/src/Main.cpp @@ -0,0 +1,49 @@ +#include "libtcod.hpp" +#include "defines.h" + +#include "Status.h" +#include "flight/FlightScene.h" + +#include "soloud/include/soloud.h" +#include "soloud/include/soloud_wav.h" + +SoLoud::Soloud* g_soloud; + +int main(int argc, char** argv) +{ + + TCODConsole::setCustomFont("rc11.png", TCOD_FONT_LAYOUT_ASCII_INROW); + TCODConsole::initRoot(WIDTH, HEIGHT, "7DRL", false, TCOD_RENDERER_GLSL); + + + g_soloud = new SoLoud::Soloud; + g_soloud->init(); + + Status status; + FlightScene flight_scene(&status); + + TCODSystem::setFps(60); + + while (!TCODConsole::isWindowClosed()) + { + TCOD_key_t key; + TCOD_mouse_t mouse; + TCODSystem::checkForEvent(TCOD_EVENT_KEY_PRESS | TCOD_EVENT_MOUSE, &key, &mouse); + if (key.vk != TCODK_NONE) + { + flight_scene.turn(key); + } + + flight_scene.update(TCODSystem::getLastFrameLength()); + + + + TCODConsole::root->clear(); + flight_scene.render(); + TCODConsole::flush(); + } + + g_soloud->deinit(); + + return 0; +} diff --git a/src/Status.cpp b/src/Status.cpp new file mode 100644 index 0000000..cdadfa1 --- /dev/null +++ b/src/Status.cpp @@ -0,0 +1,27 @@ +#include "Status.h" + + + +void Status::draw(int x0, int y0, int x1, int y1) +{ + int id = 0; + for (int y = y1 - 1; y > y0; y--) + { + int i = strings.size() - id - 1; + if (i >= 0 && strings.size() > 0) + { + TCODConsole::root->printf(x0, y, strings[i].c_str()); + } + + id++; + } +} + +Status::Status() +{ +} + + +Status::~Status() +{ +} diff --git a/src/Status.h b/src/Status.h new file mode 100644 index 0000000..9e0b535 --- /dev/null +++ b/src/Status.h @@ -0,0 +1,17 @@ +#pragma once +#include +#include + +class Status +{ +public: + + std::vector strings; + + // x1 is ignored, we are always full width + void draw(int x0, int y0, int x1, int y1); + + Status(); + ~Status(); +}; + diff --git a/src/defines.h b/src/defines.h new file mode 100644 index 0000000..b070e19 --- /dev/null +++ b/src/defines.h @@ -0,0 +1,7 @@ +#pragma once +#include "soloud.h" + +#define WIDTH 90 +#define HEIGHT 70 + +extern SoLoud::Soloud* g_soloud; \ No newline at end of file diff --git a/src/flight/FlightMap.cpp b/src/flight/FlightMap.cpp new file mode 100644 index 0000000..47b7c8c --- /dev/null +++ b/src/flight/FlightMap.cpp @@ -0,0 +1,100 @@ +#include "FlightMap.h" + + + + +FlightMap::FlightMap(int width, int height, size_t seed) : vmap(width, height) +{ + this->width = width; + this->height = height; + + tiles.resize(width * height); + + // Cavern style map + for (int x = 0; x < width; x++) + { + for (int y = 0; y < height; y++) + { + tiles[y * width + x].wall = true; + } + } + + TCODRandom rng = TCODRandom(seed); + + int dx = width / 2, dy = height / 2; + int open = 0; + int target_open = rng.getFloat(0.3, 0.5) * width * height; + int max_steps = 100000; + int steps = 0; + + while (open < target_open && steps < max_steps) + { + if (tiles[dy * width + dx].wall) + { + tiles[dy * width + dx].wall = false; + open++; + } + + if (rng.getFloat(0.0, 1.0) >= 0.5) + { + if (rng.getFloat(0.0, 1.0) >= 0.5) + { + dx++; + } + else + { + dx--; + } + } + else + { + if (rng.getFloat(0.0, 1.0) >= 0.5) + { + dy++; + } + else + { + dy--; + } + } + + if (dx < 1) + { + dx = 1; + } + + if (dx >= width - 1) + { + dx = width - 2; + } + + if (dy < 1) + { + dy = 1; + } + + if (dy >= height - 1) + { + dy = height - 2; + } + + + + steps++; + } + + // TODO: Generate some bases or tunnels + + // Generate the visibility map + for (int x = 0; x < width; x++) + { + for (int y = 0; y < height; y++) + { + vmap.setProperties(x, y, !tiles[y * width + x].wall, !tiles[y * width + x].wall); + } + } +} + +FlightMap::~FlightMap() +{ +} diff --git a/src/flight/FlightMap.h b/src/flight/FlightMap.h new file mode 100644 index 0000000..5c9f52a --- /dev/null +++ b/src/flight/FlightMap.h @@ -0,0 +1,22 @@ +#pragma once +#include +#include + +struct MapTile +{ + bool wall; +}; + +class FlightMap +{ +public: + + int width, height; + std::vector tiles; + + TCODMap vmap; + + FlightMap(int width, int height, size_t seed); + ~FlightMap(); +}; + diff --git a/src/flight/FlightScene.cpp b/src/flight/FlightScene.cpp new file mode 100644 index 0000000..201442f --- /dev/null +++ b/src/flight/FlightScene.cpp @@ -0,0 +1,115 @@ +#include "FlightScene.h" + + + +void FlightScene::turn(TCOD_key_t key) +{ + + if (open_window == SONAR) + { + + if (key.vk == TCODK_UP) + { + py--; + } + + if (key.vk == TCODK_DOWN) + { + py++; + } + + if (key.vk == TCODK_RIGHT) + { + px++; + } + + if (key.vk == TCODK_LEFT) + { + px--; + } + + sonar.draw_world(px, py, map); + } + + if (key.vk == TCODK_F11) + { + help_open = !help_open; + } +} + +void FlightScene::update(float dt) +{ + sonar.update(dt); +} + +void FlightScene::render() +{ + TCODConsole::blit(&spaceship, 0, 0, + spaceship.getWidth(), spaceship.getHeight(), TCODConsole::root, sonar.console.getWidth(), 0); + + + + status->draw(1, sonar.console.getHeight(), WIDTH - 1, HEIGHT - 1); + + // Draw frames + for (int i = 0; i < WIDTH; i++) + { + TCODConsole::root->setChar(i, 49, TCOD_CHAR_DHLINE); + } + + if (open_window == SONAR) + { + + int x0 = (TCODConsole::root->getWidth() - sonar.console.getWidth()) / 2; + int y0 = (TCODConsole::root->getHeight() - sonar.console.getHeight()) / 2; + + sonar.draw(x0, y0); + + + Drawing::draw_window(TCODConsole::root, x0 - 1, y0 - 1, sonar.console.getWidth(), sonar.console.getHeight(), "Sonar"); + + TCODConsole::blit(&sonar.console, 0, 0, + sonar.console.getWidth() - 1, sonar.console.getHeight() - 1, TCODConsole::root, x0, y0); + } + + if (help_open) + { + Drawing::draw_window(TCODConsole::root, 0, 0, 40, HEIGHT - 1, "Help", true); + + TCODConsole::root->setDefaultForeground(TCODColor::lightGrey); + TCODConsole::root->printRect(1, 1, 39, HEIGHT - 2, help_str.c_str()); + } + + + +} + + +FlightScene::FlightScene(Status* status) : + sonar(soloud), spaceship(WIDTH - 49, 49), map(map_size, map_size, 11234) +{ + underwater.load("underwater.wav"); + underwater.setLooping(true); + + this->soloud = g_soloud; + this->status = status; + + px = map_size / 2; + py = map_size / 2; + + sonar.sonar_active = true; + sonar.draw_world(px, py, map); + + + + soloud->play(underwater); + + open_window = SONAR; + + help_str = Help::help_main; +} + + +FlightScene::~FlightScene() +{ +} diff --git a/src/flight/FlightScene.h b/src/flight/FlightScene.h new file mode 100644 index 0000000..b2f47f9 --- /dev/null +++ b/src/flight/FlightScene.h @@ -0,0 +1,52 @@ +#pragma once +#include +#include "../defines.h" +#include "../Status.h" +#include "FlightMap.h" +#include "soloud.h" +#include "soloud_wav.h" +#include "Sonar.h" +#include "../Drawing.h" +#include "../Help.h" + + +constexpr int map_size = 512; + +enum Window +{ + NONE, + SONAR +}; + +class FlightScene +{ +public: + + SoLoud::Soloud* soloud; + + SoLoud::Wav underwater; + + FlightMap map; + + Window open_window; + + + Sonar sonar; + + bool help_open; + std::string help_str; + + int px, py; + + + TCODConsole spaceship; + Status* status; + + void turn(TCOD_key_t key); + void update(float dt); + void render(); + + FlightScene(Status* status); + ~FlightScene(); +}; + diff --git a/src/flight/Sonar.cpp b/src/flight/Sonar.cpp new file mode 100644 index 0000000..d0d21f2 --- /dev/null +++ b/src/flight/Sonar.cpp @@ -0,0 +1,127 @@ +#include "Sonar.h" + + + +void Sonar::update(float dt) +{ + sonar_radius += dt * 14.0f; + + if (!sonar_active) + { + sonar_radius = 0.0f; + } + + if (sonar_radius >= 40.0f) + { + sonar_radius = 0.0f; + g_soloud->play(ping); + } +} + +void Sonar::draw(int rx, int ry) +{ + // Fade old pixels + for (int x = 0; x < 49; x++) + { + for (int y = 0; y < 49; y++) + { + TCODColor cur = console.getCharForeground(x, y); + + cur.setValue(cur.getValue() * 0.984f); + + + console.setCharForeground(x, y, cur); + } + } + + + + for (int x = 0; x < 49; x++) + { + for (int y = 0; y < 49; y++) + { + float xf = (float)(x - 24.0f); + float yf = (float)(y - 24.0f); + float dist = sqrt(xf * xf + yf * yf); + if (abs(dist - sonar_radius) <= 2.0f) + { + console.setCharForeground(x, y, TCODColor(80, 255, 80)); + } + } + } + + + + console.setCharForeground(24, 24, TCODColor(255, 255, 255)); + console.setChar(24, 24, 127); + + if (Drawing::draw_switch(&console, 8, 51, rx, ry, &sonar_active, "Active Sonar") && sonar_active) + { + g_soloud->play(ping); + } +} + +void Sonar::draw_world(int px, int py, FlightMap& map) +{ + // Run a visibility algorithm and draw + map.vmap.computeFov(px, py, sonar_active ? 24 : 4, true, FOV_BASIC); + + for (int x = -24; x < 24; x++) + { + for (int y = -24; y < 24; y++) + { + int mx = x + px; + int my = y + py; + + int sx = x + 24; + int sy = y + 24; + + bool seen = true; + + if (mx < 0 || my < 0 || mx >= map.width || my >= map.height) + { + seen = false; + } + + if (!map.vmap.isInFov(mx, my)) + { + seen = false; + } + + if (seen) + { + if (map.tiles[my * map.width + mx].wall) + { + //console.setChar(sx, sy, 219); // Block + console.setChar(sx, sy, 178); + } + else + { + //radar.setChar(sx, sy, 249); + console.setChar(sx, sy, 176); // Dust style + } + + } + else + { + console.setChar(sx, sy, 250); + //radar.setChar(sx, sy, ' '); + } + + } + } +} + + + +Sonar::Sonar(SoLoud::Soloud * soloud) : console(49, 56) +{ + this->soloud = soloud; + ping.load("ping.wav"); +} + +Sonar::~Sonar() +{ + +} + diff --git a/src/flight/Sonar.h b/src/flight/Sonar.h new file mode 100644 index 0000000..3a8202b --- /dev/null +++ b/src/flight/Sonar.h @@ -0,0 +1,28 @@ +#pragma once + +#include "libtcod.h" +#include "soloud.h" +#include "soloud_wav.h" + +#include "FlightMap.h" +#include "../Drawing.h" + +class Sonar +{ +public: + + SoLoud::Soloud* soloud; + + TCODConsole console; + float sonar_radius; + bool sonar_active; + SoLoud::Wav ping; + + void update(float dt); + void draw(int rx, int ry); + void draw_world(int px, int py, FlightMap& map); + + Sonar(SoLoud::Soloud* soloud); + ~Sonar(); +}; + diff --git a/src/soloud/include/soloud.h b/src/soloud/include/soloud.h new file mode 100644 index 0000000..c759ee4 --- /dev/null +++ b/src/soloud/include/soloud.h @@ -0,0 +1,546 @@ +/* +SoLoud audio engine +Copyright (c) 2013-2018 Jari Komppa + +This software is provided 'as-is', without any express or implied +warranty. In no event will the authors be held liable for any damages +arising from the use of this software. + +Permission is granted to anyone to use this software for any purpose, +including commercial applications, and to alter it and redistribute it +freely, subject to the following restrictions: + + 1. The origin of this software must not be misrepresented; you must not + claim that you wrote the original software. If you use this software + in a product, an acknowledgment in the product documentation would be + appreciated but is not required. + + 2. Altered source versions must be plainly marked as such, and must not be + misrepresented as being the original software. + + 3. This notice may not be removed or altered from any source + distribution. +*/ + +#ifndef SOLOUD_H +#define SOLOUD_H + +#include // rand +#include // sin + +#ifdef SOLOUD_NO_ASSERTS +#define SOLOUD_ASSERT(x) +#else +#ifdef _MSC_VER +#include // for sprintf in asserts +#define VC_EXTRALEAN +#define WIN32_LEAN_AND_MEAN +#include // only needed for OutputDebugStringA, should be solved somehow. +#define SOLOUD_ASSERT(x) if (!(x)) { char temp[200]; sprintf(temp, "%s(%d): assert(%s) failed.\n", __FILE__, __LINE__, #x); OutputDebugStringA(temp); __debugbreak(); } +#else +#include // assert +#define SOLOUD_ASSERT(x) assert(x) +#endif +#endif + +#ifdef WITH_SDL +#undef WITH_SDL2 +#undef WITH_SDL1 +#define WITH_SDL1 +#define WITH_SDL2 +#endif + +#ifdef WITH_SDL_STATIC +#undef WITH_SDL1_STATIC +#define WITH_SDL1_STATIC +#endif + +#ifndef M_PI +#define M_PI 3.14159265359 +#endif + +#if defined(_WIN32)||defined(_WIN64) +#define WINDOWS_VERSION +#endif + +#if !defined(DISABLE_SIMD) +#if defined(__x86_64__) || defined( _M_X64 ) || defined( __i386 ) || defined( _M_IX86 ) +#define SOLOUD_SSE_INTRINSICS +#endif +#endif + +#define SOLOUD_VERSION 201811 + +///////////////////////////////////////////////////////////////////// +///////////////////////////////////////////////////////////////////// +// Configuration defines + +// Maximum number of filters per stream +#define FILTERS_PER_STREAM 8 + +// Number of samples to process on one go +#define SAMPLE_GRANULARITY 512 + +// Maximum number of concurrent voices (hard limit is 4095) +#define VOICE_COUNT 1024 + +// Use linear resampler +#define RESAMPLER_LINEAR + +// 1)mono, 2)stereo 4)quad 6)5.1 8)7.1 +#define MAX_CHANNELS 8 + +// +///////////////////////////////////////////////////////////////////// +///////////////////////////////////////////////////////////////////// + +// Typedefs have to be made before the includes, as the +// includes depend on them. +namespace SoLoud +{ + class Soloud; + typedef void (*mutexCallFunction)(void *aMutexPtr); + typedef void (*soloudCallFunction)(Soloud *aSoloud); + typedef unsigned int result; + typedef unsigned int handle; + typedef double time; +}; + +namespace SoLoud +{ + // Class that handles aligned allocations to support vectorized operations + class AlignedFloatBuffer + { + public: + float *mData; // aligned pointer + unsigned char *mBasePtr; // raw allocated pointer (for delete) + int mFloats; // size of buffer (w/out padding) + + // ctor + AlignedFloatBuffer(); + // Allocate and align buffer + result init(unsigned int aFloats); + // Clear data to zero. + void clear(); + // dtor + ~AlignedFloatBuffer(); + }; + + // Lightweight class that handles small aligned buffer to support vectorized operations + class TinyAlignedFloatBuffer + { + public: + float *mData; // aligned pointer + unsigned char mActualData[sizeof(float) * 16 + 16]; + + // ctor + TinyAlignedFloatBuffer(); + }; +}; + +#include "soloud_filter.h" +#include "soloud_fader.h" +#include "soloud_audiosource.h" +#include "soloud_bus.h" +#include "soloud_queue.h" +#include "soloud_error.h" + +namespace SoLoud +{ + + // Soloud core class. + class Soloud + { + public: + // Back-end data; content is up to the back-end implementation. + void * mBackendData; + // Pointer for the audio thread mutex. + void * mAudioThreadMutex; + // Flag for when we're inside the mutex, used for debugging. + bool mInsideAudioThreadMutex; + // Called by SoLoud to shut down the back-end. If NULL, not called. Should be set by back-end. + soloudCallFunction mBackendCleanupFunc; + + // CTor + Soloud(); + // DTor + ~Soloud(); + + enum BACKENDS + { + AUTO = 0, + SDL1, + SDL2, + PORTAUDIO, + WINMM, + XAUDIO2, + WASAPI, + ALSA, + OSS, + OPENAL, + COREAUDIO, + OPENSLES, + VITA_HOMEBREW, + NULLDRIVER, + BACKEND_MAX, + }; + + enum FLAGS + { + // Use round-off clipper + CLIP_ROUNDOFF = 1, + ENABLE_VISUALIZATION = 2, + LEFT_HANDED_3D = 4 + }; + + // Initialize SoLoud. Must be called before SoLoud can be used. + result init(unsigned int aFlags = Soloud::CLIP_ROUNDOFF, unsigned int aBackend = Soloud::AUTO, unsigned int aSamplerate = Soloud::AUTO, unsigned int aBufferSize = Soloud::AUTO, unsigned int aChannels = 2); + + // Deinitialize SoLoud. Must be called before shutting down. + void deinit(); + + // Query SoLoud version number (should equal to SOLOUD_VERSION macro) + unsigned int getVersion() const; + + // Translate error number to an asciiz string + const char * getErrorString(result aErrorCode) const; + + // Returns current backend ID (BACKENDS enum) + unsigned int getBackendId(); + // Returns current backend string. May be NULL. + const char * getBackendString(); + // Returns current backend channel count (1 mono, 2 stereo, etc) + unsigned int getBackendChannels(); + // Returns current backend sample rate + unsigned int getBackendSamplerate(); + // Returns current backend buffer size + unsigned int getBackendBufferSize(); + + // Set speaker position in 3d space + result setSpeakerPosition(unsigned int aChannel, float aX, float aY, float aZ); + // Get speaker position in 3d space + result getSpeakerPosition(unsigned int aChannel, float &aX, float &aY, float &aZ); + + // Start playing a sound. Returns voice handle, which can be ignored or used to alter the playing sound's parameters. Negative volume means to use default. + handle play(AudioSource &aSound, float aVolume = -1.0f, float aPan = 0.0f, bool aPaused = 0, unsigned int aBus = 0); + // Start playing a sound delayed in relation to other sounds called via this function. Negative volume means to use default. + handle playClocked(time aSoundTime, AudioSource &aSound, float aVolume = -1.0f, float aPan = 0.0f, unsigned int aBus = 0); + // Start playing a 3d audio source + handle play3d(AudioSource &aSound, float aPosX, float aPosY, float aPosZ, float aVelX = 0.0f, float aVelY = 0.0f, float aVelZ = 0.0f, float aVolume = 1.0f, bool aPaused = 0, unsigned int aBus = 0); + // Start playing a 3d audio source, delayed in relation to other sounds called via this function. + handle play3dClocked(time aSoundTime, AudioSource &aSound, float aPosX, float aPosY, float aPosZ, float aVelX = 0.0f, float aVelY = 0.0f, float aVelZ = 0.0f, float aVolume = 1.0f, unsigned int aBus = 0); + // Start playing a sound without any panning. It will be played at full volume. + handle playBackground(AudioSource &aSound, float aVolume = -1.0f, bool aPaused = 0, unsigned int aBus = 0); + + // Seek the audio stream to certain point in time. Some streams can't seek backwards. Relative play speed affects time. + result seek(handle aVoiceHandle, time aSeconds); + // Stop the sound. + void stop(handle aVoiceHandle); + // Stop all voices. + void stopAll(); + // Stop all voices that play this sound source + void stopAudioSource(AudioSource &aSound); + // Count voices that play this audio source + int countAudioSource(AudioSource &aSound); + + // Set a live filter parameter. Use 0 for the global filters. + void setFilterParameter(handle aVoiceHandle, unsigned int aFilterId, unsigned int aAttributeId, float aValue); + // Get a live filter parameter. Use 0 for the global filters. + float getFilterParameter(handle aVoiceHandle, unsigned int aFilterId, unsigned int aAttributeId); + // Fade a live filter parameter. Use 0 for the global filters. + void fadeFilterParameter(handle aVoiceHandle, unsigned int aFilterId, unsigned int aAttributeId, float aTo, time aTime); + // Oscillate a live filter parameter. Use 0 for the global filters. + void oscillateFilterParameter(handle aVoiceHandle, unsigned int aFilterId, unsigned int aAttributeId, float aFrom, float aTo, time aTime); + + // Get current play time, in seconds. + time getStreamTime(handle aVoiceHandle); + // Get current sample position, in seconds. + time getStreamPosition(handle aVoiceHandle); + // Get current pause state. + bool getPause(handle aVoiceHandle); + // Get current volume. + float getVolume(handle aVoiceHandle); + // Get current overall volume (set volume * 3d volume) + float getOverallVolume(handle aVoiceHandle); + // Get current pan. + float getPan(handle aVoiceHandle); + // Get current sample rate. + float getSamplerate(handle aVoiceHandle); + // Get current voice protection state. + bool getProtectVoice(handle aVoiceHandle); + // Get the current number of busy voices. + unsigned int getActiveVoiceCount(); + // Get the current number of voices in SoLoud + unsigned int getVoiceCount(); + // Check if the handle is still valid, or if the sound has stopped. + bool isValidVoiceHandle(handle aVoiceHandle); + // Get current relative play speed. + float getRelativePlaySpeed(handle aVoiceHandle); + // Get current post-clip scaler value. + float getPostClipScaler() const; + // Get current global volume + float getGlobalVolume() const; + // Get current maximum active voice setting + unsigned int getMaxActiveVoiceCount() const; + // Query whether a voice is set to loop. + bool getLooping(handle aVoiceHandle); + // Get voice loop point value + time getLoopPoint(handle aVoiceHandle); + + // Set voice loop point value + void setLoopPoint(handle aVoiceHandle, time aLoopPoint); + // Set voice's loop state + void setLooping(handle aVoiceHandle, bool aLooping); + // Set current maximum active voice setting + result setMaxActiveVoiceCount(unsigned int aVoiceCount); + // Set behavior for inaudible sounds + void setInaudibleBehavior(handle aVoiceHandle, bool aMustTick, bool aKill); + // Set the global volume + void setGlobalVolume(float aVolume); + // Set the post clip scaler value + void setPostClipScaler(float aScaler); + // Set the pause state + void setPause(handle aVoiceHandle, bool aPause); + // Pause all voices + void setPauseAll(bool aPause); + // Set the relative play speed + result setRelativePlaySpeed(handle aVoiceHandle, float aSpeed); + // Set the voice protection state + void setProtectVoice(handle aVoiceHandle, bool aProtect); + // Set the sample rate + void setSamplerate(handle aVoiceHandle, float aSamplerate); + // Set panning value; -1 is left, 0 is center, 1 is right + void setPan(handle aVoiceHandle, float aPan); + // Set absolute left/right volumes + void setPanAbsolute(handle aVoiceHandle, float aLVolume, float aRVolume, float aLBVolume = 0, float aRBVolume = 0, float aCVolume = 0, float aSVolume = 0); + // Set overall volume + void setVolume(handle aVoiceHandle, float aVolume); + // Set delay, in samples, before starting to play samples. Calling this on a live sound will cause glitches. + void setDelaySamples(handle aVoiceHandle, unsigned int aSamples); + + // Set up volume fader + void fadeVolume(handle aVoiceHandle, float aTo, time aTime); + // Set up panning fader + void fadePan(handle aVoiceHandle, float aTo, time aTime); + // Set up relative play speed fader + void fadeRelativePlaySpeed(handle aVoiceHandle, float aTo, time aTime); + // Set up global volume fader + void fadeGlobalVolume(float aTo, time aTime); + // Schedule a stream to pause + void schedulePause(handle aVoiceHandle, time aTime); + // Schedule a stream to stop + void scheduleStop(handle aVoiceHandle, time aTime); + + // Set up volume oscillator + void oscillateVolume(handle aVoiceHandle, float aFrom, float aTo, time aTime); + // Set up panning oscillator + void oscillatePan(handle aVoiceHandle, float aFrom, float aTo, time aTime); + // Set up relative play speed oscillator + void oscillateRelativePlaySpeed(handle aVoiceHandle, float aFrom, float aTo, time aTime); + // Set up global volume oscillator + void oscillateGlobalVolume(float aFrom, float aTo, time aTime); + + // Set global filters. Set to NULL to clear the filter. + void setGlobalFilter(unsigned int aFilterId, Filter *aFilter); + + // Enable or disable visualization data gathering + void setVisualizationEnable(bool aEnable); + + // Calculate and get 256 floats of FFT data for visualization. Visualization has to be enabled before use. + float *calcFFT(); + + // Get 256 floats of wave data for visualization. Visualization has to be enabled before use. + float *getWave(); + + // Get approximate output volume for a channel for visualization. Visualization has to be enabled before use. + float getApproximateVolume(unsigned int aChannel); + + // Get current loop count. Returns 0 if handle is not valid. (All audio sources may not update loop count) + unsigned int getLoopCount(handle aVoiceHandle); + + // Get audiosource-specific information from a voice. + float getInfo(handle aVoiceHandle, unsigned int aInfoKey); + + // Create a voice group. Returns 0 if unable (out of voice groups / out of memory) + handle createVoiceGroup(); + // Destroy a voice group. + result destroyVoiceGroup(handle aVoiceGroupHandle); + // Add a voice handle to a voice group + result addVoiceToGroup(handle aVoiceGroupHandle, handle aVoiceHandle); + // Is this handle a valid voice group? + bool isVoiceGroup(handle aVoiceGroupHandle); + // Is this voice group empty? + bool isVoiceGroupEmpty(handle aVoiceGroupHandle); + + // Perform 3d audio parameter update + void update3dAudio(); + + // Set the speed of sound constant for doppler + result set3dSoundSpeed(float aSpeed); + // Get the current speed of sound constant for doppler + float get3dSoundSpeed(); + // Set 3d listener parameters + void set3dListenerParameters(float aPosX, float aPosY, float aPosZ, float aAtX, float aAtY, float aAtZ, float aUpX, float aUpY, float aUpZ, float aVelocityX = 0.0f, float aVelocityY = 0.0f, float aVelocityZ = 0.0f); + // Set 3d listener position + void set3dListenerPosition(float aPosX, float aPosY, float aPosZ); + // Set 3d listener "at" vector + void set3dListenerAt(float aAtX, float aAtY, float aAtZ); + // set 3d listener "up" vector + void set3dListenerUp(float aUpX, float aUpY, float aUpZ); + // Set 3d listener velocity + void set3dListenerVelocity(float aVelocityX, float aVelocityY, float aVelocityZ); + + // Set 3d audio source parameters + void set3dSourceParameters(handle aVoiceHandle, float aPosX, float aPosY, float aPosZ, float aVelocityX = 0.0f, float aVelocityY = 0.0f, float aVelocityZ = 0.0f); + // Set 3d audio source position + void set3dSourcePosition(handle aVoiceHandle, float aPosX, float aPosY, float aPosZ); + // Set 3d audio source velocity + void set3dSourceVelocity(handle aVoiceHandle, float aVelocityX, float aVelocityY, float aVelocityZ); + // Set 3d audio source min/max distance (distance < min means max volume) + void set3dSourceMinMaxDistance(handle aVoiceHandle, float aMinDistance, float aMaxDistance); + // Set 3d audio source attenuation parameters + void set3dSourceAttenuation(handle aVoiceHandle, unsigned int aAttenuationModel, float aAttenuationRolloffFactor); + // Set 3d audio source doppler factor to reduce or enhance doppler effect. Default = 1.0 + void set3dSourceDopplerFactor(handle aVoiceHandle, float aDopplerFactor); + + // Rest of the stuff is used internally. + + // Returns mixed float samples in buffer. Called by the back-end, or user with null driver. + void mix(float *aBuffer, unsigned int aSamples); + // Returns mixed 16-bit signed integer samples in buffer. Called by the back-end, or user with null driver. + void mixSigned16(short *aBuffer, unsigned int aSamples); + public: + // Mix N samples * M channels. Called by other mix_ functions. + void mix_internal(unsigned int aSamples); + + // Handle rest of initialization (called from backend) + void postinit(unsigned int aSamplerate, unsigned int aBufferSize, unsigned int aFlags, unsigned int aChannels); + + // Update list of active voices + void calcActiveVoices(); + // Map resample buffers to active voices + void mapResampleBuffers(); + // Perform mixing for a specific bus + void mixBus(float *aBuffer, unsigned int aSamplesToRead, unsigned int aBufferSize, float *aScratch, unsigned int aBus, float aSamplerate, unsigned int aChannels); + // Max. number of active voices. Busses and tickable inaudibles also count against this. + unsigned int mMaxActiveVoices; + // Highest voice in use so far + unsigned int mHighestVoice; + // Scratch buffer, used for resampling. + AlignedFloatBuffer mScratch; + // Current size of the scratch, in samples. + unsigned int mScratchSize; + // Amount of scratch needed. + unsigned int mScratchNeeded; + // Output scratch buffer, used in mix_(). + AlignedFloatBuffer mOutputScratch; + // Resampler buffers, two per active voice. + AlignedFloatBuffer *mResampleData; + // Owners of the resample data + AudioSourceInstance **mResampleDataOwner; + // Audio voices. + AudioSourceInstance *mVoice[VOICE_COUNT]; + // Output sample rate (not float) + unsigned int mSamplerate; + // Output channel count + unsigned int mChannels; + // Current backend ID + unsigned int mBackendID; + // Current backend string + const char * mBackendString; + // Maximum size of output buffer; used to calculate needed scratch. + unsigned int mBufferSize; + // Flags; see Soloud::FLAGS + unsigned int mFlags; + // Global volume. Applied before clipping. + float mGlobalVolume; + // Post-clip scaler. Applied after clipping. + float mPostClipScaler; + // Current play index. Used to create audio handles. + unsigned int mPlayIndex; + // Current sound source index. Used to create sound source IDs. + unsigned int mAudioSourceID; + // Fader for the global volume. + Fader mGlobalVolumeFader; + // Global stream time, for the global volume fader. + time mStreamTime; + // Last time seen by the playClocked call + time mLastClockedTime; + // Global filter + Filter *mFilter[FILTERS_PER_STREAM]; + // Global filter instance + FilterInstance *mFilterInstance[FILTERS_PER_STREAM]; + // Find a free voice, stopping the oldest if no free voice is found. + int findFreeVoice(); + // Converts handle to voice, if the handle is valid. Returns -1 if not. + int getVoiceFromHandle(handle aVoiceHandle) const; + // Converts voice + playindex into handle + handle getHandleFromVoice(unsigned int aVoice) const; + // Stop voice (not handle). + void stopVoice(unsigned int aVoice); + // Set voice (not handle) pan. + void setVoicePan(unsigned int aVoice, float aPan); + // Set voice (not handle) relative play speed. + result setVoiceRelativePlaySpeed(unsigned int aVoice, float aSpeed); + // Set voice (not handle) volume. + void setVoiceVolume(unsigned int aVoice, float aVolume); + // Set voice (not handle) pause state. + void setVoicePause(unsigned int aVoice, int aPause); + // Update overall volume from set and 3d volumes + void updateVoiceVolume(unsigned int aVoice); + // Update overall relative play speed from set and 3d speeds + void updateVoiceRelativePlaySpeed(unsigned int aVoice); + // Perform 3d audio calculation for array of voices + void update3dVoices(unsigned int *aVoiceList, unsigned int aVoiceCount); + // Clip the samples in the buffer + void clip(AlignedFloatBuffer &aBuffer, AlignedFloatBuffer &aDestBuffer, unsigned int aSamples, float aVolume0, float aVolume1); + // Approximate volume for channels. + float mVisualizationChannelVolume[MAX_CHANNELS]; + // Mono-mixed wave data for visualization and for visualization FFT input + float mVisualizationWaveData[256]; + // FFT output data + float mFFTData[256]; + // Snapshot of wave data for visualization + float mWaveData[256]; + + // 3d listener position + float m3dPosition[3]; + // 3d listener look-at + float m3dAt[3]; + // 3d listener up + float m3dUp[3]; + // 3d listener velocity + float m3dVelocity[3]; + // 3d speed of sound (for doppler) + float m3dSoundSpeed; + + // 3d position of speakers + float m3dSpeakerPosition[3 * MAX_CHANNELS]; + + // Data related to 3d processing, separate from AudioSource so we can do 3d calculations without audio mutex. + AudioSourceInstance3dData m3dData[VOICE_COUNT]; + + // For each voice group, first int is number of ints alocated. + unsigned int **mVoiceGroup; + unsigned int mVoiceGroupCount; + + // List of currently active voices + unsigned int mActiveVoice[VOICE_COUNT]; + // Number of currently active voices + unsigned int mActiveVoiceCount; + // Active voices list needs to be recalculated + bool mActiveVoiceDirty; + + // Remove all non-active voices from group + void trimVoiceGroup(handle aVoiceGroupHandle); + // Get pointer to the zero-terminated array of voice handles in a voice group + handle * voiceGroupHandleToArray(handle aVoiceGroupHandle) const; + + // Lock audio thread mutex. + void lockAudioMutex(); + // Unlock audio thread mutex. + void unlockAudioMutex(); + }; +}; + +#endif diff --git a/src/soloud/include/soloud_audiosource.h b/src/soloud/include/soloud_audiosource.h new file mode 100644 index 0000000..77e6156 --- /dev/null +++ b/src/soloud/include/soloud_audiosource.h @@ -0,0 +1,315 @@ +/* +SoLoud audio engine +Copyright (c) 2013-2015 Jari Komppa + +This software is provided 'as-is', without any express or implied +warranty. In no event will the authors be held liable for any damages +arising from the use of this software. + +Permission is granted to anyone to use this software for any purpose, +including commercial applications, and to alter it and redistribute it +freely, subject to the following restrictions: + + 1. The origin of this software must not be misrepresented; you must not + claim that you wrote the original software. If you use this software + in a product, an acknowledgment in the product documentation would be + appreciated but is not required. + + 2. Altered source versions must be plainly marked as such, and must not be + misrepresented as being the original software. + + 3. This notice may not be removed or altered from any source + distribution. +*/ + +#ifndef SOLOUD_AUDIOSOURCE_H +#define SOLOUD_AUDIOSOURCE_H + +#include "soloud.h" +#include "soloud_fader.h" +#include "soloud_filter.h" + +namespace SoLoud +{ + class AudioSource; + class AudioSourceInstance; + class AudioSourceInstance3dData; + + class AudioCollider + { + public: + // Calculate volume multiplier. Assumed to return value between 0 and 1. + virtual float collide(Soloud *aSoloud, AudioSourceInstance3dData *aAudioInstance3dData, int aUserData) = 0; + }; + + class AudioAttenuator + { + public: + virtual float attenuate(float aDistance, float aMinDistance, float aMaxDistance, float aRolloffFactor) = 0; + }; + + class AudioSourceInstance3dData + { + public: + // ctor + AudioSourceInstance3dData(); + // Set settings from audiosource + void init(AudioSource &aSource); + // 3d position + float m3dPosition[3]; + // 3d velocity + float m3dVelocity[3]; + // 3d cone direction + /* + float m3dConeDirection[3]; + // 3d cone inner angle + float m3dConeInnerAngle; + // 3d cone outer angle + float m3dConeOuterAngle; + // 3d cone outer volume multiplier + float m3dConeOuterVolume; + */ + // 3d min distance + float m3dMinDistance; + // 3d max distance + float m3dMaxDistance; + // 3d attenuation rolloff factor + float m3dAttenuationRolloff; + // 3d attenuation model + unsigned int m3dAttenuationModel; + // 3d doppler factor + float m3dDopplerFactor; + // Pointer to a custom audio collider object + AudioCollider *mCollider; + // Pointer to a custom audio attenuator object + AudioAttenuator *mAttenuator; + // User data related to audio collider + int mColliderData; + + // Doppler sample rate multiplier + float mDopplerValue; + // Overall 3d volume + float m3dVolume; + // Channel volume + float mChannelVolume[MAX_CHANNELS]; + // Copy of flags + unsigned int mFlags; + // Latest handle for this voice + handle mHandle; + }; + + // Base class for audio instances + class AudioSourceInstance + { + public: + enum FLAGS + { + // This audio instance loops (if supported) + LOOPING = 1, + // This audio instance is protected - won't get stopped if we run out of voices + PROTECTED = 2, + // This audio instance is paused + PAUSED = 4, + // This audio instance is affected by 3d processing + PROCESS_3D = 8, + // This audio instance has listener-relative 3d coordinates + LISTENER_RELATIVE = 16, + // Currently inaudible + INAUDIBLE = 32, + // If inaudible, should be killed (default = don't kill kill) + INAUDIBLE_KILL = 64, + // If inaudible, should still be ticked (default = pause) + INAUDIBLE_TICK = 128 + }; + // Ctor + AudioSourceInstance(); + // Dtor + virtual ~AudioSourceInstance(); + // Play index; used to identify instances from handles + unsigned int mPlayIndex; + // Loop count + unsigned int mLoopCount; + // Flags; see AudioSourceInstance::FLAGS + unsigned int mFlags; + // Pan value, for getPan() + float mPan; + // Volume for each channel (panning) + float mChannelVolume[MAX_CHANNELS]; + // Set volume + float mSetVolume; + // Overall volume overall = set * 3d + float mOverallVolume; + // Base samplerate; samplerate = base samplerate * relative play speed + float mBaseSamplerate; + // Samplerate; samplerate = base samplerate * relative play speed + float mSamplerate; + // Number of channels this audio source produces + unsigned int mChannels; + // Relative play speed; samplerate = base samplerate * relative play speed + float mSetRelativePlaySpeed; + // Overall relative plays peed; overall = set * 3d + float mOverallRelativePlaySpeed; + // How long this stream has played, in seconds. + time mStreamTime; + // Position of this stream, in seconds. + time mStreamPosition; + // Fader for the audio panning + Fader mPanFader; + // Fader for the audio volume + Fader mVolumeFader; + // Fader for the relative play speed + Fader mRelativePlaySpeedFader; + // Fader used to schedule pausing of the stream + Fader mPauseScheduler; + // Fader used to schedule stopping of the stream + Fader mStopScheduler; + // Affected by some fader + int mActiveFader; + // Current channel volumes, used to ramp the volume changes to avoid clicks + float mCurrentChannelVolume[MAX_CHANNELS]; + // ID of the sound source that generated this instance + unsigned int mAudioSourceID; + // Handle of the bus this audio instance is playing on. 0 for root. + unsigned int mBusHandle; + // Filter pointer + FilterInstance *mFilter[FILTERS_PER_STREAM]; + // Initialize instance. Mostly internal use. + void init(AudioSource &aSource, int aPlayIndex); + // Buffers for the resampler + AlignedFloatBuffer *mResampleData[2]; + // Sub-sample playhead; 16.16 fixed point + unsigned int mSrcOffset; + // Samples left over from earlier pass + unsigned int mLeftoverSamples; + // Number of samples to delay streaming + unsigned int mDelaySamples; + // When looping, start playing from this time + time mLoopPoint; + + // Get N samples from the stream to the buffer. Report samples written. + virtual unsigned int getAudio(float *aBuffer, unsigned int aSamplesToRead, unsigned int aBufferSize) = 0; + // Has the stream ended? + virtual bool hasEnded() = 0; + // Seek to certain place in the stream. Base implementation is generic "tape" seek (and slow). + virtual result seek(time aSeconds, float *mScratch, unsigned int mScratchSize); + // Rewind stream. Base implementation returns NOT_IMPLEMENTED, meaning it can't rewind. + virtual result rewind(); + // Get information. Returns 0 by default. + virtual float getInfo(unsigned int aInfoKey); + }; + + class Soloud; + + // Base class for audio sources + class AudioSource + { + public: + enum FLAGS + { + // The instances from this audio source should loop + SHOULD_LOOP = 1, + // Only one instance of this audio source should play at the same time + SINGLE_INSTANCE = 2, + // Visualization data gathering enabled. Only for busses. + VISUALIZATION_DATA = 4, + // Audio instances created from this source are affected by 3d processing + PROCESS_3D = 8, + // Audio instances created from this source have listener-relative 3d coordinates + LISTENER_RELATIVE = 16, + // Delay start of sound by the distance from listener + DISTANCE_DELAY = 32, + // If inaudible, should be killed (default) + INAUDIBLE_KILL = 64, + // If inaudible, should still be ticked (default = pause) + INAUDIBLE_TICK = 128 + }; + enum ATTENUATION_MODELS + { + // No attenuation + NO_ATTENUATION = 0, + // Inverse distance attenuation model + INVERSE_DISTANCE = 1, + // Linear distance attenuation model + LINEAR_DISTANCE = 2, + // Exponential distance attenuation model + EXPONENTIAL_DISTANCE = 3 + }; + + // Flags. See AudioSource::FLAGS + unsigned int mFlags; + // Base sample rate, used to initialize instances + float mBaseSamplerate; + // Default volume for created instances + float mVolume; + // Number of channels this audio source produces + unsigned int mChannels; + // Sound source ID. Assigned by SoLoud the first time it's played. + unsigned int mAudioSourceID; + // 3d min distance + float m3dMinDistance; + // 3d max distance + float m3dMaxDistance; + // 3d attenuation rolloff factor + float m3dAttenuationRolloff; + // 3d attenuation model + unsigned int m3dAttenuationModel; + // 3d doppler factor + float m3dDopplerFactor; + // Filter pointer + Filter *mFilter[FILTERS_PER_STREAM]; + // Pointer to the Soloud object. Needed to stop all instances in dtor. + Soloud *mSoloud; + // Pointer to a custom audio collider object + AudioCollider *mCollider; + // Pointer to custom attenuator object + AudioAttenuator *mAttenuator; + // User data related to audio collider + int mColliderData; + // When looping, start playing from this time + time mLoopPoint; + + // CTor + AudioSource(); + // Set default volume for instances + void setVolume(float aVolume); + // Set the looping of the instances created from this audio source + void setLooping(bool aLoop); + // Set whether only one instance of this sound should ever be playing at the same time + void setSingleInstance(bool aSingleInstance); + + // Set the minimum and maximum distances for 3d audio source (closer to min distance = max vol) + void set3dMinMaxDistance(float aMinDistance, float aMaxDistance); + // Set attenuation model and rolloff factor for 3d audio source + void set3dAttenuation(unsigned int aAttenuationModel, float aAttenuationRolloffFactor); + // Set doppler factor to reduce or enhance doppler effect, default = 1.0 + void set3dDopplerFactor(float aDopplerFactor); + // Set the coordinates for this audio source to be relative to listener's coordinates. + void set3dListenerRelative(bool aListenerRelative); + // Enable delaying the start of the sound based on the distance. + void set3dDistanceDelay(bool aDistanceDelay); + + // Set a custom 3d audio collider. Set to NULL to disable. + void set3dCollider(AudioCollider *aCollider, int aUserData = 0); + // Set a custom attenuator. Set to NULL to disable. + void set3dAttenuator(AudioAttenuator *aAttenuator); + + // Set behavior for inaudible sounds + void setInaudibleBehavior(bool aMustTick, bool aKill); + + // Set time to jump to when looping + void setLoopPoint(time aLoopPoint); + // Get current loop point value + time getLoopPoint(); + + // Set filter. Set to NULL to clear the filter. + virtual void setFilter(unsigned int aFilterId, Filter *aFilter); + // DTor + virtual ~AudioSource(); + // Create instance from the audio source. Called from within Soloud class. + virtual AudioSourceInstance *createInstance() = 0; + // Stop all instances of this audio source + void stop(); + }; +}; + +#endif diff --git a/src/soloud/include/soloud_bassboostfilter.h b/src/soloud/include/soloud_bassboostfilter.h new file mode 100644 index 0000000..1725184 --- /dev/null +++ b/src/soloud/include/soloud_bassboostfilter.h @@ -0,0 +1,63 @@ +/* +SoLoud audio engine +Copyright (c) 2013-2015 Jari Komppa + +This software is provided 'as-is', without any express or implied +warranty. In no event will the authors be held liable for any damages +arising from the use of this software. + +Permission is granted to anyone to use this software for any purpose, +including commercial applications, and to alter it and redistribute it +freely, subject to the following restrictions: + + 1. The origin of this software must not be misrepresented; you must not + claim that you wrote the original software. If you use this software + in a product, an acknowledgment in the product documentation would be + appreciated but is not required. + + 2. Altered source versions must be plainly marked as such, and must not be + misrepresented as being the original software. + + 3. This notice may not be removed or altered from any source + distribution. +*/ + +#ifndef SOLOUD_BASSBOOSTFILTER_H +#define SOLOUD_BASSBOOSTFILTER_H + +#include "soloud.h" +#include "soloud_fftfilter.h" + +namespace SoLoud +{ + class BassboostFilter; + + class BassboostFilterInstance : public FFTFilterInstance + { + enum FILTERATTRIBUTE + { + WET = 0, + BOOST = 1 + }; + BassboostFilter *mParent; + public: + virtual void fftFilterChannel(float *aFFTBuffer, unsigned int aSamples, float aSamplerate, time aTime, unsigned int aChannel, unsigned int aChannels); + BassboostFilterInstance(BassboostFilter *aParent); + }; + + class BassboostFilter : public FFTFilter + { + public: + enum FILTERATTRIBUTE + { + WET = 0, + BOOST = 1 + }; + float mBoost; + result setParams(float aBoost); + virtual FilterInstance *createInstance(); + BassboostFilter(); + }; +} + +#endif \ No newline at end of file diff --git a/src/soloud/include/soloud_biquadresonantfilter.h b/src/soloud/include/soloud_biquadresonantfilter.h new file mode 100644 index 0000000..e83e0cf --- /dev/null +++ b/src/soloud/include/soloud_biquadresonantfilter.h @@ -0,0 +1,91 @@ +/* +SoLoud audio engine +Copyright (c) 2013-2014 Jari Komppa + +This software is provided 'as-is', without any express or implied +warranty. In no event will the authors be held liable for any damages +arising from the use of this software. + +Permission is granted to anyone to use this software for any purpose, +including commercial applications, and to alter it and redistribute it +freely, subject to the following restrictions: + + 1. The origin of this software must not be misrepresented; you must not + claim that you wrote the original software. If you use this software + in a product, an acknowledgment in the product documentation would be + appreciated but is not required. + + 2. Altered source versions must be plainly marked as such, and must not be + misrepresented as being the original software. + + 3. This notice may not be removed or altered from any source + distribution. +*/ + +#ifndef SOLOUD_BQRFILTER_H +#define SOLOUD_BQRFILTER_H + +#include "soloud.h" + +namespace SoLoud +{ + class BiquadResonantFilter; + + struct BQRStateData + { + float mY1, mY2, mX1, mX2; + }; + + class BiquadResonantFilterInstance : public FilterInstance + { + enum FILTERATTRIBUTE + { + WET = 0, + SAMPLERATE = 1, + FREQUENCY = 2, + RESONANCE = 3 + }; + + int mActive; + BQRStateData mState[2]; + float mA0, mA1, mA2, mB1, mB2; + int mDirty; + int mFilterType; + + BiquadResonantFilter *mParent; + void calcBQRParams(); + public: + virtual void filterChannel(float *aBuffer, unsigned int aSamples, float aSamplerate, time aTime, unsigned int aChannel, unsigned int aChannels); + virtual ~BiquadResonantFilterInstance(); + BiquadResonantFilterInstance(BiquadResonantFilter *aParent); + }; + + class BiquadResonantFilter : public Filter + { + public: + enum FILTERTYPE + { + NONE = 0, + LOWPASS = 1, + HIGHPASS = 2, + BANDPASS = 3 + }; + enum FILTERATTRIBUTE + { + WET = 0, + SAMPLERATE = 1, + FREQUENCY = 2, + RESONANCE = 3 + }; + int mFilterType; + float mSampleRate; + float mFrequency; + float mResonance; + virtual BiquadResonantFilterInstance *createInstance(); + BiquadResonantFilter(); + result setParams(int aType, float aSampleRate, float aFrequency, float aResonance); + virtual ~BiquadResonantFilter(); + }; +} + +#endif \ No newline at end of file diff --git a/src/soloud/include/soloud_bus.h b/src/soloud/include/soloud_bus.h new file mode 100644 index 0000000..84d411a --- /dev/null +++ b/src/soloud/include/soloud_bus.h @@ -0,0 +1,91 @@ +/* +SoLoud audio engine +Copyright (c) 2013-2014 Jari Komppa + +This software is provided 'as-is', without any express or implied +warranty. In no event will the authors be held liable for any damages +arising from the use of this software. + +Permission is granted to anyone to use this software for any purpose, +including commercial applications, and to alter it and redistribute it +freely, subject to the following restrictions: + + 1. The origin of this software must not be misrepresented; you must not + claim that you wrote the original software. If you use this software + in a product, an acknowledgment in the product documentation would be + appreciated but is not required. + + 2. Altered source versions must be plainly marked as such, and must not be + misrepresented as being the original software. + + 3. This notice may not be removed or altered from any source + distribution. +*/ + +#ifndef SOLOUD_BUS_H +#define SOLOUD_BUS_H + +#include "soloud.h" + +namespace SoLoud +{ + class Bus; + + class BusInstance : public AudioSourceInstance + { + Bus *mParent; + unsigned int mScratchSize; + AlignedFloatBuffer mScratch; + public: + // Approximate volume for channels. + float mVisualizationChannelVolume[MAX_CHANNELS]; + // Mono-mixed wave data for visualization and for visualization FFT input + float mVisualizationWaveData[256]; + + BusInstance(Bus *aParent); + virtual unsigned int getAudio(float *aBuffer, unsigned int aSamplesToRead, unsigned int aBufferSize); + virtual bool hasEnded(); + virtual ~BusInstance(); + }; + + class Bus : public AudioSource + { + public: + Bus(); + virtual BusInstance *createInstance(); + // Set filter. Set to NULL to clear the filter. + virtual void setFilter(unsigned int aFilterId, Filter *aFilter); + // Play sound through the bus + handle play(AudioSource &aSound, float aVolume = 1.0f, float aPan = 0.0f, bool aPaused = 0); + // Play sound through the bus, delayed in relation to other sounds called via this function. + handle playClocked(time aSoundTime, AudioSource &aSound, float aVolume = 1.0f, float aPan = 0.0f); + // Start playing a 3d audio source through the bus + handle play3d(AudioSource &aSound, float aPosX, float aPosY, float aPosZ, float aVelX = 0.0f, float aVelY = 0.0f, float aVelZ = 0.0f, float aVolume = 1.0f, bool aPaused = 0); + // Start playing a 3d audio source through the bus, delayed in relation to other sounds called via this function. + handle play3dClocked(time aSoundTime, AudioSource &aSound, float aPosX, float aPosY, float aPosZ, float aVelX = 0.0f, float aVelY = 0.0f, float aVelZ = 0.0f, float aVolume = 1.0f); + // Set number of channels for the bus (default 2) + result setChannels(unsigned int aChannels); + // Enable or disable visualization data gathering + void setVisualizationEnable(bool aEnable); + + // Calculate and get 256 floats of FFT data for visualization. Visualization has to be enabled before use. + float *calcFFT(); + + // Get 256 floats of wave data for visualization. Visualization has to be enabled before use. + float *getWave(); + + // Get approximate volume for output channel for visualization. Visualization has to be enabled before use. + float getApproximateVolume(unsigned int aChannel); + public: + BusInstance *mInstance; + unsigned int mChannelHandle; + // FFT output data + float mFFTData[256]; + // Snapshot of wave data for visualization + float mWaveData[256]; + // Internal: find the bus' channel + void findBusHandle(); + }; +}; + +#endif \ No newline at end of file diff --git a/src/soloud/include/soloud_c.h b/src/soloud/include/soloud_c.h new file mode 100644 index 0000000..914347e --- /dev/null +++ b/src/soloud/include/soloud_c.h @@ -0,0 +1,625 @@ +/* ************************************************** + * WARNING: this is a generated file. Do not edit. * + * Any edits will be overwritten by the generator. * + ************************************************** */ + +/* +SoLoud audio engine +Copyright (c) 2013-2016 Jari Komppa + +This software is provided 'as-is', without any express or implied +warranty. In no event will the authors be held liable for any damages +arising from the use of this software. + +Permission is granted to anyone to use this software for any purpose, +including commercial applications, and to alter it and redistribute it +freely, subject to the following restrictions: + + 1. The origin of this software must not be misrepresented; you must not + claim that you wrote the original software. If you use this software + in a product, an acknowledgment in the product documentation would be + appreciated but is not required. + + 2. Altered source versions must be plainly marked as such, and must not be + misrepresented as being the original software. + + 3. This notice may not be removed or altered from any source + distribution. +*/ + +/* SoLoud C-Api Code Generator (c)2013-2018 Jari Komppa http://iki.fi/sol/ */ + +#ifndef SOLOUD_C_H_INCLUDED +#define SOLOUD_C_H_INCLUDED + +#ifdef __cplusplus +extern "C" { +#endif +// Collected enumerations +enum SOLOUD_ENUMS +{ + SOLOUD_AUTO = 0, + SOLOUD_SDL1 = 1, + SOLOUD_SDL2 = 2, + SOLOUD_PORTAUDIO = 3, + SOLOUD_WINMM = 4, + SOLOUD_XAUDIO2 = 5, + SOLOUD_WASAPI = 6, + SOLOUD_ALSA = 7, + SOLOUD_OSS = 8, + SOLOUD_OPENAL = 9, + SOLOUD_COREAUDIO = 10, + SOLOUD_OPENSLES = 11, + SOLOUD_VITA_HOMEBREW = 12, + SOLOUD_NULLDRIVER = 13, + SOLOUD_BACKEND_MAX = 14, + SOLOUD_CLIP_ROUNDOFF = 1, + SOLOUD_ENABLE_VISUALIZATION = 2, + SOLOUD_LEFT_HANDED_3D = 4, + BASSBOOSTFILTER_WET = 0, + BASSBOOSTFILTER_BOOST = 1, + BIQUADRESONANTFILTER_NONE = 0, + BIQUADRESONANTFILTER_LOWPASS = 1, + BIQUADRESONANTFILTER_HIGHPASS = 2, + BIQUADRESONANTFILTER_BANDPASS = 3, + BIQUADRESONANTFILTER_WET = 0, + BIQUADRESONANTFILTER_SAMPLERATE = 1, + BIQUADRESONANTFILTER_FREQUENCY = 2, + BIQUADRESONANTFILTER_RESONANCE = 3, + FLANGERFILTER_WET = 0, + FLANGERFILTER_DELAY = 1, + FLANGERFILTER_FREQ = 2, + LOFIFILTER_WET = 0, + LOFIFILTER_SAMPLERATE = 1, + LOFIFILTER_BITDEPTH = 2, + MONOTONE_SQUARE = 0, + MONOTONE_SAW = 1, + MONOTONE_SIN = 2, + MONOTONE_SAWSIN = 3, + ROBOTIZEFILTER_WET = 0, + SFXR_COIN = 0, + SFXR_LASER = 1, + SFXR_EXPLOSION = 2, + SFXR_POWERUP = 3, + SFXR_HURT = 4, + SFXR_JUMP = 5, + SFXR_BLIP = 6, + SPEECH_KW_SAW = 0, + SPEECH_KW_TRIANGLE = 1, + SPEECH_KW_SIN = 2, + SPEECH_KW_SQUARE = 3, + SPEECH_KW_PULSE = 4, + SPEECH_KW_NOISE = 5, + SPEECH_KW_WARBLE = 6, + VIC_PAL = 0, + VIC_NTSC = 1, + VIC_BASS = 0, + VIC_ALTO = 1, + VIC_SOPRANO = 2, + VIC_NOISE = 3, + VIC_MAX_REGS = 4 +}; + +// Object handle typedefs +typedef void * AlignedFloatBuffer; +typedef void * TinyAlignedFloatBuffer; +typedef void * Soloud; +typedef void * AudioCollider; +typedef void * AudioAttenuator; +typedef void * AudioSource; +typedef void * BassboostFilter; +typedef void * BiquadResonantFilter; +typedef void * Bus; +typedef void * DCRemovalFilter; +typedef void * EchoFilter; +typedef void * Fader; +typedef void * FFTFilter; +typedef void * Filter; +typedef void * FlangerFilter; +typedef void * LofiFilter; +typedef void * Monotone; +typedef void * Openmpt; +typedef void * Queue; +typedef void * RobotizeFilter; +typedef void * Prg; +typedef void * Sfxr; +typedef void * Speech; +typedef void * TedSid; +typedef void * Vic; +typedef void * Vizsn; +typedef void * Wav; +typedef void * WaveShaperFilter; +typedef void * WavStream; +typedef void * File; + +/* + * Soloud + */ +void Soloud_destroy(Soloud * aSoloud); +Soloud * Soloud_create(); +int Soloud_init(Soloud * aSoloud); +int Soloud_initEx(Soloud * aSoloud, unsigned int aFlags /* = Soloud::CLIP_ROUNDOFF */, unsigned int aBackend /* = Soloud::AUTO */, unsigned int aSamplerate /* = Soloud::AUTO */, unsigned int aBufferSize /* = Soloud::AUTO */, unsigned int aChannels /* = 2 */); +void Soloud_deinit(Soloud * aSoloud); +unsigned int Soloud_getVersion(Soloud * aSoloud); +const char * Soloud_getErrorString(Soloud * aSoloud, int aErrorCode); +unsigned int Soloud_getBackendId(Soloud * aSoloud); +const char * Soloud_getBackendString(Soloud * aSoloud); +unsigned int Soloud_getBackendChannels(Soloud * aSoloud); +unsigned int Soloud_getBackendSamplerate(Soloud * aSoloud); +unsigned int Soloud_getBackendBufferSize(Soloud * aSoloud); +int Soloud_setSpeakerPosition(Soloud * aSoloud, unsigned int aChannel, float aX, float aY, float aZ); +int Soloud_getSpeakerPosition(Soloud * aSoloud, unsigned int aChannel, float * aX, float * aY, float * aZ); +unsigned int Soloud_play(Soloud * aSoloud, AudioSource * aSound); +unsigned int Soloud_playEx(Soloud * aSoloud, AudioSource * aSound, float aVolume /* = -1.0f */, float aPan /* = 0.0f */, int aPaused /* = 0 */, unsigned int aBus /* = 0 */); +unsigned int Soloud_playClocked(Soloud * aSoloud, double aSoundTime, AudioSource * aSound); +unsigned int Soloud_playClockedEx(Soloud * aSoloud, double aSoundTime, AudioSource * aSound, float aVolume /* = -1.0f */, float aPan /* = 0.0f */, unsigned int aBus /* = 0 */); +unsigned int Soloud_play3d(Soloud * aSoloud, AudioSource * aSound, float aPosX, float aPosY, float aPosZ); +unsigned int Soloud_play3dEx(Soloud * aSoloud, AudioSource * aSound, float aPosX, float aPosY, float aPosZ, float aVelX /* = 0.0f */, float aVelY /* = 0.0f */, float aVelZ /* = 0.0f */, float aVolume /* = 1.0f */, int aPaused /* = 0 */, unsigned int aBus /* = 0 */); +unsigned int Soloud_play3dClocked(Soloud * aSoloud, double aSoundTime, AudioSource * aSound, float aPosX, float aPosY, float aPosZ); +unsigned int Soloud_play3dClockedEx(Soloud * aSoloud, double aSoundTime, AudioSource * aSound, float aPosX, float aPosY, float aPosZ, float aVelX /* = 0.0f */, float aVelY /* = 0.0f */, float aVelZ /* = 0.0f */, float aVolume /* = 1.0f */, unsigned int aBus /* = 0 */); +unsigned int Soloud_playBackground(Soloud * aSoloud, AudioSource * aSound); +unsigned int Soloud_playBackgroundEx(Soloud * aSoloud, AudioSource * aSound, float aVolume /* = -1.0f */, int aPaused /* = 0 */, unsigned int aBus /* = 0 */); +int Soloud_seek(Soloud * aSoloud, unsigned int aVoiceHandle, double aSeconds); +void Soloud_stop(Soloud * aSoloud, unsigned int aVoiceHandle); +void Soloud_stopAll(Soloud * aSoloud); +void Soloud_stopAudioSource(Soloud * aSoloud, AudioSource * aSound); +int Soloud_countAudioSource(Soloud * aSoloud, AudioSource * aSound); +void Soloud_setFilterParameter(Soloud * aSoloud, unsigned int aVoiceHandle, unsigned int aFilterId, unsigned int aAttributeId, float aValue); +float Soloud_getFilterParameter(Soloud * aSoloud, unsigned int aVoiceHandle, unsigned int aFilterId, unsigned int aAttributeId); +void Soloud_fadeFilterParameter(Soloud * aSoloud, unsigned int aVoiceHandle, unsigned int aFilterId, unsigned int aAttributeId, float aTo, double aTime); +void Soloud_oscillateFilterParameter(Soloud * aSoloud, unsigned int aVoiceHandle, unsigned int aFilterId, unsigned int aAttributeId, float aFrom, float aTo, double aTime); +double Soloud_getStreamTime(Soloud * aSoloud, unsigned int aVoiceHandle); +double Soloud_getStreamPosition(Soloud * aSoloud, unsigned int aVoiceHandle); +int Soloud_getPause(Soloud * aSoloud, unsigned int aVoiceHandle); +float Soloud_getVolume(Soloud * aSoloud, unsigned int aVoiceHandle); +float Soloud_getOverallVolume(Soloud * aSoloud, unsigned int aVoiceHandle); +float Soloud_getPan(Soloud * aSoloud, unsigned int aVoiceHandle); +float Soloud_getSamplerate(Soloud * aSoloud, unsigned int aVoiceHandle); +int Soloud_getProtectVoice(Soloud * aSoloud, unsigned int aVoiceHandle); +unsigned int Soloud_getActiveVoiceCount(Soloud * aSoloud); +unsigned int Soloud_getVoiceCount(Soloud * aSoloud); +int Soloud_isValidVoiceHandle(Soloud * aSoloud, unsigned int aVoiceHandle); +float Soloud_getRelativePlaySpeed(Soloud * aSoloud, unsigned int aVoiceHandle); +float Soloud_getPostClipScaler(Soloud * aSoloud); +float Soloud_getGlobalVolume(Soloud * aSoloud); +unsigned int Soloud_getMaxActiveVoiceCount(Soloud * aSoloud); +int Soloud_getLooping(Soloud * aSoloud, unsigned int aVoiceHandle); +double Soloud_getLoopPoint(Soloud * aSoloud, unsigned int aVoiceHandle); +void Soloud_setLoopPoint(Soloud * aSoloud, unsigned int aVoiceHandle, double aLoopPoint); +void Soloud_setLooping(Soloud * aSoloud, unsigned int aVoiceHandle, int aLooping); +int Soloud_setMaxActiveVoiceCount(Soloud * aSoloud, unsigned int aVoiceCount); +void Soloud_setInaudibleBehavior(Soloud * aSoloud, unsigned int aVoiceHandle, int aMustTick, int aKill); +void Soloud_setGlobalVolume(Soloud * aSoloud, float aVolume); +void Soloud_setPostClipScaler(Soloud * aSoloud, float aScaler); +void Soloud_setPause(Soloud * aSoloud, unsigned int aVoiceHandle, int aPause); +void Soloud_setPauseAll(Soloud * aSoloud, int aPause); +int Soloud_setRelativePlaySpeed(Soloud * aSoloud, unsigned int aVoiceHandle, float aSpeed); +void Soloud_setProtectVoice(Soloud * aSoloud, unsigned int aVoiceHandle, int aProtect); +void Soloud_setSamplerate(Soloud * aSoloud, unsigned int aVoiceHandle, float aSamplerate); +void Soloud_setPan(Soloud * aSoloud, unsigned int aVoiceHandle, float aPan); +void Soloud_setPanAbsolute(Soloud * aSoloud, unsigned int aVoiceHandle, float aLVolume, float aRVolume); +void Soloud_setPanAbsoluteEx(Soloud * aSoloud, unsigned int aVoiceHandle, float aLVolume, float aRVolume, float aLBVolume /* = 0 */, float aRBVolume /* = 0 */, float aCVolume /* = 0 */, float aSVolume /* = 0 */); +void Soloud_setVolume(Soloud * aSoloud, unsigned int aVoiceHandle, float aVolume); +void Soloud_setDelaySamples(Soloud * aSoloud, unsigned int aVoiceHandle, unsigned int aSamples); +void Soloud_fadeVolume(Soloud * aSoloud, unsigned int aVoiceHandle, float aTo, double aTime); +void Soloud_fadePan(Soloud * aSoloud, unsigned int aVoiceHandle, float aTo, double aTime); +void Soloud_fadeRelativePlaySpeed(Soloud * aSoloud, unsigned int aVoiceHandle, float aTo, double aTime); +void Soloud_fadeGlobalVolume(Soloud * aSoloud, float aTo, double aTime); +void Soloud_schedulePause(Soloud * aSoloud, unsigned int aVoiceHandle, double aTime); +void Soloud_scheduleStop(Soloud * aSoloud, unsigned int aVoiceHandle, double aTime); +void Soloud_oscillateVolume(Soloud * aSoloud, unsigned int aVoiceHandle, float aFrom, float aTo, double aTime); +void Soloud_oscillatePan(Soloud * aSoloud, unsigned int aVoiceHandle, float aFrom, float aTo, double aTime); +void Soloud_oscillateRelativePlaySpeed(Soloud * aSoloud, unsigned int aVoiceHandle, float aFrom, float aTo, double aTime); +void Soloud_oscillateGlobalVolume(Soloud * aSoloud, float aFrom, float aTo, double aTime); +void Soloud_setGlobalFilter(Soloud * aSoloud, unsigned int aFilterId, Filter * aFilter); +void Soloud_setVisualizationEnable(Soloud * aSoloud, int aEnable); +float * Soloud_calcFFT(Soloud * aSoloud); +float * Soloud_getWave(Soloud * aSoloud); +float Soloud_getApproximateVolume(Soloud * aSoloud, unsigned int aChannel); +unsigned int Soloud_getLoopCount(Soloud * aSoloud, unsigned int aVoiceHandle); +float Soloud_getInfo(Soloud * aSoloud, unsigned int aVoiceHandle, unsigned int aInfoKey); +unsigned int Soloud_createVoiceGroup(Soloud * aSoloud); +int Soloud_destroyVoiceGroup(Soloud * aSoloud, unsigned int aVoiceGroupHandle); +int Soloud_addVoiceToGroup(Soloud * aSoloud, unsigned int aVoiceGroupHandle, unsigned int aVoiceHandle); +int Soloud_isVoiceGroup(Soloud * aSoloud, unsigned int aVoiceGroupHandle); +int Soloud_isVoiceGroupEmpty(Soloud * aSoloud, unsigned int aVoiceGroupHandle); +void Soloud_update3dAudio(Soloud * aSoloud); +int Soloud_set3dSoundSpeed(Soloud * aSoloud, float aSpeed); +float Soloud_get3dSoundSpeed(Soloud * aSoloud); +void Soloud_set3dListenerParameters(Soloud * aSoloud, float aPosX, float aPosY, float aPosZ, float aAtX, float aAtY, float aAtZ, float aUpX, float aUpY, float aUpZ); +void Soloud_set3dListenerParametersEx(Soloud * aSoloud, float aPosX, float aPosY, float aPosZ, float aAtX, float aAtY, float aAtZ, float aUpX, float aUpY, float aUpZ, float aVelocityX /* = 0.0f */, float aVelocityY /* = 0.0f */, float aVelocityZ /* = 0.0f */); +void Soloud_set3dListenerPosition(Soloud * aSoloud, float aPosX, float aPosY, float aPosZ); +void Soloud_set3dListenerAt(Soloud * aSoloud, float aAtX, float aAtY, float aAtZ); +void Soloud_set3dListenerUp(Soloud * aSoloud, float aUpX, float aUpY, float aUpZ); +void Soloud_set3dListenerVelocity(Soloud * aSoloud, float aVelocityX, float aVelocityY, float aVelocityZ); +void Soloud_set3dSourceParameters(Soloud * aSoloud, unsigned int aVoiceHandle, float aPosX, float aPosY, float aPosZ); +void Soloud_set3dSourceParametersEx(Soloud * aSoloud, unsigned int aVoiceHandle, float aPosX, float aPosY, float aPosZ, float aVelocityX /* = 0.0f */, float aVelocityY /* = 0.0f */, float aVelocityZ /* = 0.0f */); +void Soloud_set3dSourcePosition(Soloud * aSoloud, unsigned int aVoiceHandle, float aPosX, float aPosY, float aPosZ); +void Soloud_set3dSourceVelocity(Soloud * aSoloud, unsigned int aVoiceHandle, float aVelocityX, float aVelocityY, float aVelocityZ); +void Soloud_set3dSourceMinMaxDistance(Soloud * aSoloud, unsigned int aVoiceHandle, float aMinDistance, float aMaxDistance); +void Soloud_set3dSourceAttenuation(Soloud * aSoloud, unsigned int aVoiceHandle, unsigned int aAttenuationModel, float aAttenuationRolloffFactor); +void Soloud_set3dSourceDopplerFactor(Soloud * aSoloud, unsigned int aVoiceHandle, float aDopplerFactor); +void Soloud_mix(Soloud * aSoloud, float * aBuffer, unsigned int aSamples); +void Soloud_mixSigned16(Soloud * aSoloud, short * aBuffer, unsigned int aSamples); + +/* + * AudioAttenuator + */ +void AudioAttenuator_destroy(AudioAttenuator * aAudioAttenuator); +float AudioAttenuator_attenuate(AudioAttenuator * aAudioAttenuator, float aDistance, float aMinDistance, float aMaxDistance, float aRolloffFactor); + +/* + * BassboostFilter + */ +void BassboostFilter_destroy(BassboostFilter * aBassboostFilter); +int BassboostFilter_setParams(BassboostFilter * aBassboostFilter, float aBoost); +BassboostFilter * BassboostFilter_create(); + +/* + * BiquadResonantFilter + */ +void BiquadResonantFilter_destroy(BiquadResonantFilter * aBiquadResonantFilter); +BiquadResonantFilter * BiquadResonantFilter_create(); +int BiquadResonantFilter_setParams(BiquadResonantFilter * aBiquadResonantFilter, int aType, float aSampleRate, float aFrequency, float aResonance); + +/* + * Bus + */ +void Bus_destroy(Bus * aBus); +Bus * Bus_create(); +void Bus_setFilter(Bus * aBus, unsigned int aFilterId, Filter * aFilter); +unsigned int Bus_play(Bus * aBus, AudioSource * aSound); +unsigned int Bus_playEx(Bus * aBus, AudioSource * aSound, float aVolume /* = 1.0f */, float aPan /* = 0.0f */, int aPaused /* = 0 */); +unsigned int Bus_playClocked(Bus * aBus, double aSoundTime, AudioSource * aSound); +unsigned int Bus_playClockedEx(Bus * aBus, double aSoundTime, AudioSource * aSound, float aVolume /* = 1.0f */, float aPan /* = 0.0f */); +unsigned int Bus_play3d(Bus * aBus, AudioSource * aSound, float aPosX, float aPosY, float aPosZ); +unsigned int Bus_play3dEx(Bus * aBus, AudioSource * aSound, float aPosX, float aPosY, float aPosZ, float aVelX /* = 0.0f */, float aVelY /* = 0.0f */, float aVelZ /* = 0.0f */, float aVolume /* = 1.0f */, int aPaused /* = 0 */); +unsigned int Bus_play3dClocked(Bus * aBus, double aSoundTime, AudioSource * aSound, float aPosX, float aPosY, float aPosZ); +unsigned int Bus_play3dClockedEx(Bus * aBus, double aSoundTime, AudioSource * aSound, float aPosX, float aPosY, float aPosZ, float aVelX /* = 0.0f */, float aVelY /* = 0.0f */, float aVelZ /* = 0.0f */, float aVolume /* = 1.0f */); +int Bus_setChannels(Bus * aBus, unsigned int aChannels); +void Bus_setVisualizationEnable(Bus * aBus, int aEnable); +float * Bus_calcFFT(Bus * aBus); +float * Bus_getWave(Bus * aBus); +float Bus_getApproximateVolume(Bus * aBus, unsigned int aChannel); +void Bus_setVolume(Bus * aBus, float aVolume); +void Bus_setLooping(Bus * aBus, int aLoop); +void Bus_set3dMinMaxDistance(Bus * aBus, float aMinDistance, float aMaxDistance); +void Bus_set3dAttenuation(Bus * aBus, unsigned int aAttenuationModel, float aAttenuationRolloffFactor); +void Bus_set3dDopplerFactor(Bus * aBus, float aDopplerFactor); +void Bus_set3dListenerRelative(Bus * aBus, int aListenerRelative); +void Bus_set3dDistanceDelay(Bus * aBus, int aDistanceDelay); +void Bus_set3dCollider(Bus * aBus, AudioCollider * aCollider); +void Bus_set3dColliderEx(Bus * aBus, AudioCollider * aCollider, int aUserData /* = 0 */); +void Bus_set3dAttenuator(Bus * aBus, AudioAttenuator * aAttenuator); +void Bus_setInaudibleBehavior(Bus * aBus, int aMustTick, int aKill); +void Bus_setLoopPoint(Bus * aBus, double aLoopPoint); +double Bus_getLoopPoint(Bus * aBus); +void Bus_stop(Bus * aBus); + +/* + * DCRemovalFilter + */ +void DCRemovalFilter_destroy(DCRemovalFilter * aDCRemovalFilter); +DCRemovalFilter * DCRemovalFilter_create(); +int DCRemovalFilter_setParams(DCRemovalFilter * aDCRemovalFilter); +int DCRemovalFilter_setParamsEx(DCRemovalFilter * aDCRemovalFilter, float aLength /* = 0.1f */); + +/* + * EchoFilter + */ +void EchoFilter_destroy(EchoFilter * aEchoFilter); +EchoFilter * EchoFilter_create(); +int EchoFilter_setParams(EchoFilter * aEchoFilter, float aDelay); +int EchoFilter_setParamsEx(EchoFilter * aEchoFilter, float aDelay, float aDecay /* = 0.7f */, float aFilter /* = 0.0f */); + +/* + * FFTFilter + */ +void FFTFilter_destroy(FFTFilter * aFFTFilter); +FFTFilter * FFTFilter_create(); + +/* + * FlangerFilter + */ +void FlangerFilter_destroy(FlangerFilter * aFlangerFilter); +FlangerFilter * FlangerFilter_create(); +int FlangerFilter_setParams(FlangerFilter * aFlangerFilter, float aDelay, float aFreq); + +/* + * LofiFilter + */ +void LofiFilter_destroy(LofiFilter * aLofiFilter); +LofiFilter * LofiFilter_create(); +int LofiFilter_setParams(LofiFilter * aLofiFilter, float aSampleRate, float aBitdepth); + +/* + * Monotone + */ +void Monotone_destroy(Monotone * aMonotone); +Monotone * Monotone_create(); +int Monotone_setParams(Monotone * aMonotone, int aHardwareChannels); +int Monotone_setParamsEx(Monotone * aMonotone, int aHardwareChannels, int aWaveform /* = SQUARE */); +int Monotone_load(Monotone * aMonotone, const char * aFilename); +int Monotone_loadMem(Monotone * aMonotone, unsigned char * aMem, unsigned int aLength); +int Monotone_loadMemEx(Monotone * aMonotone, unsigned char * aMem, unsigned int aLength, int aCopy /* = false */, int aTakeOwnership /* = true */); +int Monotone_loadFile(Monotone * aMonotone, File * aFile); +void Monotone_setVolume(Monotone * aMonotone, float aVolume); +void Monotone_setLooping(Monotone * aMonotone, int aLoop); +void Monotone_set3dMinMaxDistance(Monotone * aMonotone, float aMinDistance, float aMaxDistance); +void Monotone_set3dAttenuation(Monotone * aMonotone, unsigned int aAttenuationModel, float aAttenuationRolloffFactor); +void Monotone_set3dDopplerFactor(Monotone * aMonotone, float aDopplerFactor); +void Monotone_set3dListenerRelative(Monotone * aMonotone, int aListenerRelative); +void Monotone_set3dDistanceDelay(Monotone * aMonotone, int aDistanceDelay); +void Monotone_set3dCollider(Monotone * aMonotone, AudioCollider * aCollider); +void Monotone_set3dColliderEx(Monotone * aMonotone, AudioCollider * aCollider, int aUserData /* = 0 */); +void Monotone_set3dAttenuator(Monotone * aMonotone, AudioAttenuator * aAttenuator); +void Monotone_setInaudibleBehavior(Monotone * aMonotone, int aMustTick, int aKill); +void Monotone_setLoopPoint(Monotone * aMonotone, double aLoopPoint); +double Monotone_getLoopPoint(Monotone * aMonotone); +void Monotone_setFilter(Monotone * aMonotone, unsigned int aFilterId, Filter * aFilter); +void Monotone_stop(Monotone * aMonotone); + +/* + * Openmpt + */ +void Openmpt_destroy(Openmpt * aOpenmpt); +Openmpt * Openmpt_create(); +int Openmpt_load(Openmpt * aOpenmpt, const char * aFilename); +int Openmpt_loadMem(Openmpt * aOpenmpt, unsigned char * aMem, unsigned int aLength); +int Openmpt_loadMemEx(Openmpt * aOpenmpt, unsigned char * aMem, unsigned int aLength, int aCopy /* = false */, int aTakeOwnership /* = true */); +int Openmpt_loadFile(Openmpt * aOpenmpt, File * aFile); +void Openmpt_setVolume(Openmpt * aOpenmpt, float aVolume); +void Openmpt_setLooping(Openmpt * aOpenmpt, int aLoop); +void Openmpt_set3dMinMaxDistance(Openmpt * aOpenmpt, float aMinDistance, float aMaxDistance); +void Openmpt_set3dAttenuation(Openmpt * aOpenmpt, unsigned int aAttenuationModel, float aAttenuationRolloffFactor); +void Openmpt_set3dDopplerFactor(Openmpt * aOpenmpt, float aDopplerFactor); +void Openmpt_set3dListenerRelative(Openmpt * aOpenmpt, int aListenerRelative); +void Openmpt_set3dDistanceDelay(Openmpt * aOpenmpt, int aDistanceDelay); +void Openmpt_set3dCollider(Openmpt * aOpenmpt, AudioCollider * aCollider); +void Openmpt_set3dColliderEx(Openmpt * aOpenmpt, AudioCollider * aCollider, int aUserData /* = 0 */); +void Openmpt_set3dAttenuator(Openmpt * aOpenmpt, AudioAttenuator * aAttenuator); +void Openmpt_setInaudibleBehavior(Openmpt * aOpenmpt, int aMustTick, int aKill); +void Openmpt_setLoopPoint(Openmpt * aOpenmpt, double aLoopPoint); +double Openmpt_getLoopPoint(Openmpt * aOpenmpt); +void Openmpt_setFilter(Openmpt * aOpenmpt, unsigned int aFilterId, Filter * aFilter); +void Openmpt_stop(Openmpt * aOpenmpt); + +/* + * Queue + */ +void Queue_destroy(Queue * aQueue); +Queue * Queue_create(); +int Queue_play(Queue * aQueue, AudioSource * aSound); +unsigned int Queue_getQueueCount(Queue * aQueue); +int Queue_isCurrentlyPlaying(Queue * aQueue, AudioSource * aSound); +int Queue_setParamsFromAudioSource(Queue * aQueue, AudioSource * aSound); +int Queue_setParams(Queue * aQueue, float aSamplerate); +int Queue_setParamsEx(Queue * aQueue, float aSamplerate, unsigned int aChannels /* = 2 */); +void Queue_setVolume(Queue * aQueue, float aVolume); +void Queue_setLooping(Queue * aQueue, int aLoop); +void Queue_set3dMinMaxDistance(Queue * aQueue, float aMinDistance, float aMaxDistance); +void Queue_set3dAttenuation(Queue * aQueue, unsigned int aAttenuationModel, float aAttenuationRolloffFactor); +void Queue_set3dDopplerFactor(Queue * aQueue, float aDopplerFactor); +void Queue_set3dListenerRelative(Queue * aQueue, int aListenerRelative); +void Queue_set3dDistanceDelay(Queue * aQueue, int aDistanceDelay); +void Queue_set3dCollider(Queue * aQueue, AudioCollider * aCollider); +void Queue_set3dColliderEx(Queue * aQueue, AudioCollider * aCollider, int aUserData /* = 0 */); +void Queue_set3dAttenuator(Queue * aQueue, AudioAttenuator * aAttenuator); +void Queue_setInaudibleBehavior(Queue * aQueue, int aMustTick, int aKill); +void Queue_setLoopPoint(Queue * aQueue, double aLoopPoint); +double Queue_getLoopPoint(Queue * aQueue); +void Queue_setFilter(Queue * aQueue, unsigned int aFilterId, Filter * aFilter); +void Queue_stop(Queue * aQueue); + +/* + * RobotizeFilter + */ +void RobotizeFilter_destroy(RobotizeFilter * aRobotizeFilter); +RobotizeFilter * RobotizeFilter_create(); + +/* + * Prg + */ +void Prg_destroy(Prg * aPrg); +Prg * Prg_create(); +unsigned int Prg_rand(Prg * aPrg); +void Prg_srand(Prg * aPrg, int aSeed); + +/* + * Sfxr + */ +void Sfxr_destroy(Sfxr * aSfxr); +Sfxr * Sfxr_create(); +void Sfxr_resetParams(Sfxr * aSfxr); +int Sfxr_loadParams(Sfxr * aSfxr, const char * aFilename); +int Sfxr_loadParamsMem(Sfxr * aSfxr, unsigned char * aMem, unsigned int aLength); +int Sfxr_loadParamsMemEx(Sfxr * aSfxr, unsigned char * aMem, unsigned int aLength, int aCopy /* = false */, int aTakeOwnership /* = true */); +int Sfxr_loadParamsFile(Sfxr * aSfxr, File * aFile); +int Sfxr_loadPreset(Sfxr * aSfxr, int aPresetNo, int aRandSeed); +void Sfxr_setVolume(Sfxr * aSfxr, float aVolume); +void Sfxr_setLooping(Sfxr * aSfxr, int aLoop); +void Sfxr_set3dMinMaxDistance(Sfxr * aSfxr, float aMinDistance, float aMaxDistance); +void Sfxr_set3dAttenuation(Sfxr * aSfxr, unsigned int aAttenuationModel, float aAttenuationRolloffFactor); +void Sfxr_set3dDopplerFactor(Sfxr * aSfxr, float aDopplerFactor); +void Sfxr_set3dListenerRelative(Sfxr * aSfxr, int aListenerRelative); +void Sfxr_set3dDistanceDelay(Sfxr * aSfxr, int aDistanceDelay); +void Sfxr_set3dCollider(Sfxr * aSfxr, AudioCollider * aCollider); +void Sfxr_set3dColliderEx(Sfxr * aSfxr, AudioCollider * aCollider, int aUserData /* = 0 */); +void Sfxr_set3dAttenuator(Sfxr * aSfxr, AudioAttenuator * aAttenuator); +void Sfxr_setInaudibleBehavior(Sfxr * aSfxr, int aMustTick, int aKill); +void Sfxr_setLoopPoint(Sfxr * aSfxr, double aLoopPoint); +double Sfxr_getLoopPoint(Sfxr * aSfxr); +void Sfxr_setFilter(Sfxr * aSfxr, unsigned int aFilterId, Filter * aFilter); +void Sfxr_stop(Sfxr * aSfxr); + +/* + * Speech + */ +void Speech_destroy(Speech * aSpeech); +Speech * Speech_create(); +int Speech_setText(Speech * aSpeech, const char * aText); +int Speech_setParams(Speech * aSpeech); +int Speech_setParamsEx(Speech * aSpeech, unsigned int aBaseFrequency /* = 1330 */, float aBaseSpeed /* = 10.0f */, float aBaseDeclination /* = 0.5f */, int aBaseWaveform /* = KW_TRIANGLE */); +void Speech_setVolume(Speech * aSpeech, float aVolume); +void Speech_setLooping(Speech * aSpeech, int aLoop); +void Speech_set3dMinMaxDistance(Speech * aSpeech, float aMinDistance, float aMaxDistance); +void Speech_set3dAttenuation(Speech * aSpeech, unsigned int aAttenuationModel, float aAttenuationRolloffFactor); +void Speech_set3dDopplerFactor(Speech * aSpeech, float aDopplerFactor); +void Speech_set3dListenerRelative(Speech * aSpeech, int aListenerRelative); +void Speech_set3dDistanceDelay(Speech * aSpeech, int aDistanceDelay); +void Speech_set3dCollider(Speech * aSpeech, AudioCollider * aCollider); +void Speech_set3dColliderEx(Speech * aSpeech, AudioCollider * aCollider, int aUserData /* = 0 */); +void Speech_set3dAttenuator(Speech * aSpeech, AudioAttenuator * aAttenuator); +void Speech_setInaudibleBehavior(Speech * aSpeech, int aMustTick, int aKill); +void Speech_setLoopPoint(Speech * aSpeech, double aLoopPoint); +double Speech_getLoopPoint(Speech * aSpeech); +void Speech_setFilter(Speech * aSpeech, unsigned int aFilterId, Filter * aFilter); +void Speech_stop(Speech * aSpeech); + +/* + * TedSid + */ +void TedSid_destroy(TedSid * aTedSid); +TedSid * TedSid_create(); +int TedSid_load(TedSid * aTedSid, const char * aFilename); +int TedSid_loadToMem(TedSid * aTedSid, const char * aFilename); +int TedSid_loadMem(TedSid * aTedSid, unsigned char * aMem, unsigned int aLength); +int TedSid_loadMemEx(TedSid * aTedSid, unsigned char * aMem, unsigned int aLength, int aCopy /* = false */, int aTakeOwnership /* = true */); +int TedSid_loadFileToMem(TedSid * aTedSid, File * aFile); +int TedSid_loadFile(TedSid * aTedSid, File * aFile); +void TedSid_setVolume(TedSid * aTedSid, float aVolume); +void TedSid_setLooping(TedSid * aTedSid, int aLoop); +void TedSid_set3dMinMaxDistance(TedSid * aTedSid, float aMinDistance, float aMaxDistance); +void TedSid_set3dAttenuation(TedSid * aTedSid, unsigned int aAttenuationModel, float aAttenuationRolloffFactor); +void TedSid_set3dDopplerFactor(TedSid * aTedSid, float aDopplerFactor); +void TedSid_set3dListenerRelative(TedSid * aTedSid, int aListenerRelative); +void TedSid_set3dDistanceDelay(TedSid * aTedSid, int aDistanceDelay); +void TedSid_set3dCollider(TedSid * aTedSid, AudioCollider * aCollider); +void TedSid_set3dColliderEx(TedSid * aTedSid, AudioCollider * aCollider, int aUserData /* = 0 */); +void TedSid_set3dAttenuator(TedSid * aTedSid, AudioAttenuator * aAttenuator); +void TedSid_setInaudibleBehavior(TedSid * aTedSid, int aMustTick, int aKill); +void TedSid_setLoopPoint(TedSid * aTedSid, double aLoopPoint); +double TedSid_getLoopPoint(TedSid * aTedSid); +void TedSid_setFilter(TedSid * aTedSid, unsigned int aFilterId, Filter * aFilter); +void TedSid_stop(TedSid * aTedSid); + +/* + * Vic + */ +void Vic_destroy(Vic * aVic); +Vic * Vic_create(); +void Vic_setModel(Vic * aVic, int model); +int Vic_getModel(Vic * aVic); +void Vic_setRegister(Vic * aVic, int reg, unsigned char value); +unsigned char Vic_getRegister(Vic * aVic, int reg); +void Vic_setVolume(Vic * aVic, float aVolume); +void Vic_setLooping(Vic * aVic, int aLoop); +void Vic_set3dMinMaxDistance(Vic * aVic, float aMinDistance, float aMaxDistance); +void Vic_set3dAttenuation(Vic * aVic, unsigned int aAttenuationModel, float aAttenuationRolloffFactor); +void Vic_set3dDopplerFactor(Vic * aVic, float aDopplerFactor); +void Vic_set3dListenerRelative(Vic * aVic, int aListenerRelative); +void Vic_set3dDistanceDelay(Vic * aVic, int aDistanceDelay); +void Vic_set3dCollider(Vic * aVic, AudioCollider * aCollider); +void Vic_set3dColliderEx(Vic * aVic, AudioCollider * aCollider, int aUserData /* = 0 */); +void Vic_set3dAttenuator(Vic * aVic, AudioAttenuator * aAttenuator); +void Vic_setInaudibleBehavior(Vic * aVic, int aMustTick, int aKill); +void Vic_setLoopPoint(Vic * aVic, double aLoopPoint); +double Vic_getLoopPoint(Vic * aVic); +void Vic_setFilter(Vic * aVic, unsigned int aFilterId, Filter * aFilter); +void Vic_stop(Vic * aVic); + +/* + * Vizsn + */ +void Vizsn_destroy(Vizsn * aVizsn); +Vizsn * Vizsn_create(); +void Vizsn_setText(Vizsn * aVizsn, char * aText); +void Vizsn_setVolume(Vizsn * aVizsn, float aVolume); +void Vizsn_setLooping(Vizsn * aVizsn, int aLoop); +void Vizsn_set3dMinMaxDistance(Vizsn * aVizsn, float aMinDistance, float aMaxDistance); +void Vizsn_set3dAttenuation(Vizsn * aVizsn, unsigned int aAttenuationModel, float aAttenuationRolloffFactor); +void Vizsn_set3dDopplerFactor(Vizsn * aVizsn, float aDopplerFactor); +void Vizsn_set3dListenerRelative(Vizsn * aVizsn, int aListenerRelative); +void Vizsn_set3dDistanceDelay(Vizsn * aVizsn, int aDistanceDelay); +void Vizsn_set3dCollider(Vizsn * aVizsn, AudioCollider * aCollider); +void Vizsn_set3dColliderEx(Vizsn * aVizsn, AudioCollider * aCollider, int aUserData /* = 0 */); +void Vizsn_set3dAttenuator(Vizsn * aVizsn, AudioAttenuator * aAttenuator); +void Vizsn_setInaudibleBehavior(Vizsn * aVizsn, int aMustTick, int aKill); +void Vizsn_setLoopPoint(Vizsn * aVizsn, double aLoopPoint); +double Vizsn_getLoopPoint(Vizsn * aVizsn); +void Vizsn_setFilter(Vizsn * aVizsn, unsigned int aFilterId, Filter * aFilter); +void Vizsn_stop(Vizsn * aVizsn); + +/* + * Wav + */ +void Wav_destroy(Wav * aWav); +Wav * Wav_create(); +int Wav_load(Wav * aWav, const char * aFilename); +int Wav_loadMem(Wav * aWav, unsigned char * aMem, unsigned int aLength); +int Wav_loadMemEx(Wav * aWav, unsigned char * aMem, unsigned int aLength, int aCopy /* = false */, int aTakeOwnership /* = true */); +int Wav_loadFile(Wav * aWav, File * aFile); +int Wav_loadRawWave8(Wav * aWav, unsigned char * aMem, unsigned int aLength); +int Wav_loadRawWave8Ex(Wav * aWav, unsigned char * aMem, unsigned int aLength, float aSamplerate /* = 44100.0f */, unsigned int aChannels /* = 1 */); +int Wav_loadRawWave16(Wav * aWav, short * aMem, unsigned int aLength); +int Wav_loadRawWave16Ex(Wav * aWav, short * aMem, unsigned int aLength, float aSamplerate /* = 44100.0f */, unsigned int aChannels /* = 1 */); +int Wav_loadRawWave(Wav * aWav, float * aMem, unsigned int aLength); +int Wav_loadRawWaveEx(Wav * aWav, float * aMem, unsigned int aLength, float aSamplerate /* = 44100.0f */, unsigned int aChannels /* = 1 */, int aCopy /* = false */, int aTakeOwnership /* = true */); +double Wav_getLength(Wav * aWav); +void Wav_setVolume(Wav * aWav, float aVolume); +void Wav_setLooping(Wav * aWav, int aLoop); +void Wav_set3dMinMaxDistance(Wav * aWav, float aMinDistance, float aMaxDistance); +void Wav_set3dAttenuation(Wav * aWav, unsigned int aAttenuationModel, float aAttenuationRolloffFactor); +void Wav_set3dDopplerFactor(Wav * aWav, float aDopplerFactor); +void Wav_set3dListenerRelative(Wav * aWav, int aListenerRelative); +void Wav_set3dDistanceDelay(Wav * aWav, int aDistanceDelay); +void Wav_set3dCollider(Wav * aWav, AudioCollider * aCollider); +void Wav_set3dColliderEx(Wav * aWav, AudioCollider * aCollider, int aUserData /* = 0 */); +void Wav_set3dAttenuator(Wav * aWav, AudioAttenuator * aAttenuator); +void Wav_setInaudibleBehavior(Wav * aWav, int aMustTick, int aKill); +void Wav_setLoopPoint(Wav * aWav, double aLoopPoint); +double Wav_getLoopPoint(Wav * aWav); +void Wav_setFilter(Wav * aWav, unsigned int aFilterId, Filter * aFilter); +void Wav_stop(Wav * aWav); + +/* + * WaveShaperFilter + */ +void WaveShaperFilter_destroy(WaveShaperFilter * aWaveShaperFilter); +int WaveShaperFilter_setParams(WaveShaperFilter * aWaveShaperFilter, float aAmount); +int WaveShaperFilter_setParamsEx(WaveShaperFilter * aWaveShaperFilter, float aAmount, float aWet /* = 1.0f */); +WaveShaperFilter * WaveShaperFilter_create(); + +/* + * WavStream + */ +void WavStream_destroy(WavStream * aWavStream); +WavStream * WavStream_create(); +int WavStream_load(WavStream * aWavStream, const char * aFilename); +int WavStream_loadMem(WavStream * aWavStream, unsigned char * aData, unsigned int aDataLen); +int WavStream_loadMemEx(WavStream * aWavStream, unsigned char * aData, unsigned int aDataLen, int aCopy /* = false */, int aTakeOwnership /* = true */); +int WavStream_loadToMem(WavStream * aWavStream, const char * aFilename); +int WavStream_loadFile(WavStream * aWavStream, File * aFile); +int WavStream_loadFileToMem(WavStream * aWavStream, File * aFile); +double WavStream_getLength(WavStream * aWavStream); +void WavStream_setVolume(WavStream * aWavStream, float aVolume); +void WavStream_setLooping(WavStream * aWavStream, int aLoop); +void WavStream_set3dMinMaxDistance(WavStream * aWavStream, float aMinDistance, float aMaxDistance); +void WavStream_set3dAttenuation(WavStream * aWavStream, unsigned int aAttenuationModel, float aAttenuationRolloffFactor); +void WavStream_set3dDopplerFactor(WavStream * aWavStream, float aDopplerFactor); +void WavStream_set3dListenerRelative(WavStream * aWavStream, int aListenerRelative); +void WavStream_set3dDistanceDelay(WavStream * aWavStream, int aDistanceDelay); +void WavStream_set3dCollider(WavStream * aWavStream, AudioCollider * aCollider); +void WavStream_set3dColliderEx(WavStream * aWavStream, AudioCollider * aCollider, int aUserData /* = 0 */); +void WavStream_set3dAttenuator(WavStream * aWavStream, AudioAttenuator * aAttenuator); +void WavStream_setInaudibleBehavior(WavStream * aWavStream, int aMustTick, int aKill); +void WavStream_setLoopPoint(WavStream * aWavStream, double aLoopPoint); +double WavStream_getLoopPoint(WavStream * aWavStream); +void WavStream_setFilter(WavStream * aWavStream, unsigned int aFilterId, Filter * aFilter); +void WavStream_stop(WavStream * aWavStream); +#ifdef __cplusplus +} // extern "C" +#endif + +#endif // SOLOUD_C_H_INCLUDED + diff --git a/src/soloud/include/soloud_dcremovalfilter.h b/src/soloud/include/soloud_dcremovalfilter.h new file mode 100644 index 0000000..293fb38 --- /dev/null +++ b/src/soloud/include/soloud_dcremovalfilter.h @@ -0,0 +1,58 @@ +/* +SoLoud audio engine +Copyright (c) 2013-2015 Jari Komppa + +This software is provided 'as-is', without any express or implied +warranty. In no event will the authors be held liable for any damages +arising from the use of this software. + +Permission is granted to anyone to use this software for any purpose, +including commercial applications, and to alter it and redistribute it +freely, subject to the following restrictions: + + 1. The origin of this software must not be misrepresented; you must not + claim that you wrote the original software. If you use this software + in a product, an acknowledgment in the product documentation would be + appreciated but is not required. + + 2. Altered source versions must be plainly marked as such, and must not be + misrepresented as being the original software. + + 3. This notice may not be removed or altered from any source + distribution. +*/ + +#ifndef SOLOUD_DCREMOVAL_H +#define SOLOUD_DCREMOVAL_H + +#include "soloud.h" + +namespace SoLoud +{ + class DCRemovalFilter; + + class DCRemovalFilterInstance : public FilterInstance + { + float *mBuffer; + float *mTotals; + int mBufferLength; + DCRemovalFilter *mParent; + int mOffset; + + public: + virtual void filter(float *aBuffer, unsigned int aSamples, unsigned int aChannels, float aSamplerate, time aTime); + virtual ~DCRemovalFilterInstance(); + DCRemovalFilterInstance(DCRemovalFilter *aParent); + }; + + class DCRemovalFilter : public Filter + { + public: + float mLength; + virtual FilterInstance *createInstance(); + DCRemovalFilter(); + result setParams(float aLength = 0.1f); + }; +} + +#endif \ No newline at end of file diff --git a/src/soloud/include/soloud_echofilter.h b/src/soloud/include/soloud_echofilter.h new file mode 100644 index 0000000..fcc4f8b --- /dev/null +++ b/src/soloud/include/soloud_echofilter.h @@ -0,0 +1,59 @@ +/* +SoLoud audio engine +Copyright (c) 2013-2014 Jari Komppa + +This software is provided 'as-is', without any express or implied +warranty. In no event will the authors be held liable for any damages +arising from the use of this software. + +Permission is granted to anyone to use this software for any purpose, +including commercial applications, and to alter it and redistribute it +freely, subject to the following restrictions: + + 1. The origin of this software must not be misrepresented; you must not + claim that you wrote the original software. If you use this software + in a product, an acknowledgment in the product documentation would be + appreciated but is not required. + + 2. Altered source versions must be plainly marked as such, and must not be + misrepresented as being the original software. + + 3. This notice may not be removed or altered from any source + distribution. +*/ + +#ifndef SOLOUD_ECHOFILTER_H +#define SOLOUD_ECHOFILTER_H + +#include "soloud.h" + +namespace SoLoud +{ + class EchoFilter; + + class EchoFilterInstance : public FilterInstance + { + float *mBuffer; + int mBufferLength; + EchoFilter *mParent; + int mOffset; + + public: + virtual void filter(float *aBuffer, unsigned int aSamples, unsigned int aChannels, float aSamplerate, time aTime); + virtual ~EchoFilterInstance(); + EchoFilterInstance(EchoFilter *aParent); + }; + + class EchoFilter : public Filter + { + public: + float mDelay; + float mDecay; + float mFilter; + virtual FilterInstance *createInstance(); + EchoFilter(); + result setParams(float aDelay, float aDecay = 0.7f, float aFilter = 0.0f); + }; +} + +#endif \ No newline at end of file diff --git a/src/soloud/include/soloud_error.h b/src/soloud/include/soloud_error.h new file mode 100644 index 0000000..1379f8e --- /dev/null +++ b/src/soloud/include/soloud_error.h @@ -0,0 +1,41 @@ +/* +SoLoud audio engine +Copyright (c) 2013-2014 Jari Komppa + +This software is provided 'as-is', without any express or implied +warranty. In no event will the authors be held liable for any damages +arising from the use of this software. + +Permission is granted to anyone to use this software for any purpose, +including commercial applications, and to alter it and redistribute it +freely, subject to the following restrictions: + + 1. The origin of this software must not be misrepresented; you must not + claim that you wrote the original software. If you use this software + in a product, an acknowledgment in the product documentation would be + appreciated but is not required. + + 2. Altered source versions must be plainly marked as such, and must not be + misrepresented as being the original software. + + 3. This notice may not be removed or altered from any source + distribution. +*/ +#ifndef SOLOUD_ERROR_H +#define SOLOUD_ERROR_H + +namespace SoLoud +{ + enum SOLOUD_ERRORS + { + SO_NO_ERROR = 0, // No error + INVALID_PARAMETER = 1, // Some parameter is invalid + FILE_NOT_FOUND = 2, // File not found + FILE_LOAD_FAILED = 3, // File found, but could not be loaded + DLL_NOT_FOUND = 4, // DLL not found, or wrong DLL + OUT_OF_MEMORY = 5, // Out of memory + NOT_IMPLEMENTED = 6, // Feature not implemented + UNKNOWN_ERROR = 7 // Other error + }; +}; +#endif \ No newline at end of file diff --git a/src/soloud/include/soloud_fader.h b/src/soloud/include/soloud_fader.h new file mode 100644 index 0000000..bd1c93e --- /dev/null +++ b/src/soloud/include/soloud_fader.h @@ -0,0 +1,63 @@ +/* +SoLoud audio engine +Copyright (c) 2013-2014 Jari Komppa + +This software is provided 'as-is', without any express or implied +warranty. In no event will the authors be held liable for any damages +arising from the use of this software. + +Permission is granted to anyone to use this software for any purpose, +including commercial applications, and to alter it and redistribute it +freely, subject to the following restrictions: + + 1. The origin of this software must not be misrepresented; you must not + claim that you wrote the original software. If you use this software + in a product, an acknowledgment in the product documentation would be + appreciated but is not required. + + 2. Altered source versions must be plainly marked as such, and must not be + misrepresented as being the original software. + + 3. This notice may not be removed or altered from any source + distribution. +*/ + +#ifndef SOLOUD_FADER_H +#define SOLOUD_FADER_H + +#include "soloud.h" + +namespace SoLoud +{ + // Helper class to process faders + class Fader + { + public: + // Value to fade from + float mFrom; + // Value to fade to + float mTo; + // Delta between from and to + float mDelta; + // Total time to fade + time mTime; + // Time fading started + time mStartTime; + // Time fading will end + time mEndTime; + // Current value. Used in case time rolls over. + float mCurrent; + // Active flag; 0 means disabled, 1 is active, 2 is LFO, -1 means was active, but stopped + int mActive; + // Ctor + Fader(); + // Set up LFO + void setLFO(float aFrom, float aTo, time aTime, time aStartTime); + // Set up fader + void set(float aFrom, float aTo, time aTime, time aStartTime); + // Get the current fading value + float get(time aCurrentTime); + }; +}; + +#endif \ No newline at end of file diff --git a/src/soloud/include/soloud_fft.h b/src/soloud/include/soloud_fft.h new file mode 100644 index 0000000..dd54488 --- /dev/null +++ b/src/soloud/include/soloud_fft.h @@ -0,0 +1,51 @@ +/* +SoLoud audio engine +Copyright (c) 2013-2015 Jari Komppa + +This software is provided 'as-is', without any express or implied +warranty. In no event will the authors be held liable for any damages +arising from the use of this software. + +Permission is granted to anyone to use this software for any purpose, +including commercial applications, and to alter it and redistribute it +freely, subject to the following restrictions: + + 1. The origin of this software must not be misrepresented; you must not + claim that you wrote the original software. If you use this software + in a product, an acknowledgment in the product documentation would be + appreciated but is not required. + + 2. Altered source versions must be plainly marked as such, and must not be + misrepresented as being the original software. + + 3. This notice may not be removed or altered from any source + distribution. +*/ + +#ifndef SOLOUD_FFT_H +#define SOLOUD_FFT_H + +#include "soloud.h" + +namespace SoLoud +{ + namespace FFT + { + // Perform 1024 unit FFT. Buffer must have 1024 floats, and will be overwritten + void fft1024(float *aBuffer); + + // Perform 256 unit FFT. Buffer must have 256 floats, and will be overwritten + void fft256(float *aBuffer); + + // Perform 256 unit IFFT. Buffer must have 256 floats, and will be overwritten + void ifft256(float *aBuffer); + + // Generic (slower) power of two FFT. Buffer is overwritten. + void fft(float *aBuffer, unsigned int aBufferLength); + + // Generic (slower) power of two IFFT. Buffer is overwritten. + void ifft(float *aBuffer, unsigned int aBufferLength); + }; +}; + +#endif \ No newline at end of file diff --git a/src/soloud/include/soloud_fftfilter.h b/src/soloud/include/soloud_fftfilter.h new file mode 100644 index 0000000..751587b --- /dev/null +++ b/src/soloud/include/soloud_fftfilter.h @@ -0,0 +1,57 @@ +/* +SoLoud audio engine +Copyright (c) 2013-2015 Jari Komppa + +This software is provided 'as-is', without any express or implied +warranty. In no event will the authors be held liable for any damages +arising from the use of this software. + +Permission is granted to anyone to use this software for any purpose, +including commercial applications, and to alter it and redistribute it +freely, subject to the following restrictions: + + 1. The origin of this software must not be misrepresented; you must not + claim that you wrote the original software. If you use this software + in a product, an acknowledgment in the product documentation would be + appreciated but is not required. + + 2. Altered source versions must be plainly marked as such, and must not be + misrepresented as being the original software. + + 3. This notice may not be removed or altered from any source + distribution. +*/ + +#ifndef SOLOUD_FFTFILTER_H +#define SOLOUD_FFTFILTER_H + +#include "soloud.h" + +namespace SoLoud +{ + class FFTFilter; + + class FFTFilterInstance : public FilterInstance + { + float *mTemp; + float *mInputBuffer; + float *mMixBuffer; + unsigned int mOffset[MAX_CHANNELS]; + FFTFilter *mParent; + public: + virtual void fftFilterChannel(float *aFFTBuffer, unsigned int aSamples, float aSamplerate, time aTime, unsigned int aChannel, unsigned int aChannels); + virtual void filterChannel(float *aBuffer, unsigned int aSamples, float aSamplerate, time aTime, unsigned int aChannel, unsigned int aChannels); + virtual ~FFTFilterInstance(); + FFTFilterInstance(FFTFilter *aParent); + FFTFilterInstance(); + }; + + class FFTFilter : public Filter + { + public: + virtual FilterInstance *createInstance(); + FFTFilter(); + }; +} + +#endif \ No newline at end of file diff --git a/src/soloud/include/soloud_file.h b/src/soloud/include/soloud_file.h new file mode 100644 index 0000000..7667ada --- /dev/null +++ b/src/soloud/include/soloud_file.h @@ -0,0 +1,90 @@ +/* +SoLoud audio engine +Copyright (c) 2013-2015 Jari Komppa + +This software is provided 'as-is', without any express or implied +warranty. In no event will the authors be held liable for any damages +arising from the use of this software. + +Permission is granted to anyone to use this software for any purpose, +including commercial applications, and to alter it and redistribute it +freely, subject to the following restrictions: + + 1. The origin of this software must not be misrepresented; you must not + claim that you wrote the original software. If you use this software + in a product, an acknowledgment in the product documentation would be + appreciated but is not required. + + 2. Altered source versions must be plainly marked as such, and must not be + misrepresented as being the original software. + + 3. This notice may not be removed or altered from any source + distribution. +*/ + +#ifndef SOLOUD_FILE_H +#define SOLOUD_FILE_H + +#include +#include "soloud.h" + +typedef void* Soloud_Filehack; + +namespace SoLoud +{ + class File + { + public: + virtual ~File() {} + unsigned int read8(); + unsigned int read16(); + unsigned int read32(); + virtual int eof() = 0; + virtual unsigned int read(unsigned char *aDst, unsigned int aBytes) = 0; + virtual unsigned int length() = 0; + virtual void seek(int aOffset) = 0; + virtual unsigned int pos() = 0; + virtual FILE * getFilePtr() { return 0; } + virtual unsigned char * getMemPtr() { return 0; } + }; + + class DiskFile : public File + { + public: + FILE *mFileHandle; + + virtual int eof(); + virtual unsigned int read(unsigned char *aDst, unsigned int aBytes); + virtual unsigned int length(); + virtual void seek(int aOffset); + virtual unsigned int pos(); + virtual ~DiskFile(); + DiskFile(); + DiskFile(FILE *fp); + result open(const char *aFilename); + virtual FILE * getFilePtr(); + }; + + class MemoryFile : public File + { + public: + unsigned char *mDataPtr; + unsigned int mDataLength; + unsigned int mOffset; + bool mDataOwned; + + virtual int eof(); + virtual unsigned int read(unsigned char *aDst, unsigned int aBytes); + virtual unsigned int length(); + virtual void seek(int aOffset); + virtual unsigned int pos(); + virtual unsigned char * getMemPtr(); + virtual ~MemoryFile(); + MemoryFile(); + result openMem(unsigned char *aData, unsigned int aDataLength, bool aCopy=false, bool aTakeOwnership=true); + result openToMem(const char *aFilename); + result openFileToMem(File *aFile); + }; +}; + +#endif diff --git a/src/soloud/include/soloud_file_hack_off.h b/src/soloud/include/soloud_file_hack_off.h new file mode 100644 index 0000000..57c2ebd --- /dev/null +++ b/src/soloud/include/soloud_file_hack_off.h @@ -0,0 +1,35 @@ +/* +SoLoud audio engine +Copyright (c) 2013-2015 Jari Komppa + +This software is provided 'as-is', without any express or implied +warranty. In no event will the authors be held liable for any damages +arising from the use of this software. + +Permission is granted to anyone to use this software for any purpose, +including commercial applications, and to alter it and redistribute it +freely, subject to the following restrictions: + + 1. The origin of this software must not be misrepresented; you must not + claim that you wrote the original software. If you use this software + in a product, an acknowledgment in the product documentation would be + appreciated but is not required. + + 2. Altered source versions must be plainly marked as such, and must not be + misrepresented as being the original software. + + 3. This notice may not be removed or altered from any source + distribution. +*/ + +/* +See soloud_file_hack_on.h +*/ + +#undef FILE +#undef fgetc +#undef fread +#undef fseek +#undef ftell +#undef fclose +#undef fopen diff --git a/src/soloud/include/soloud_file_hack_on.h b/src/soloud/include/soloud_file_hack_on.h new file mode 100644 index 0000000..2be8c54 --- /dev/null +++ b/src/soloud/include/soloud_file_hack_on.h @@ -0,0 +1,58 @@ +/* +SoLoud audio engine +Copyright (c) 2013-2015 Jari Komppa + +This software is provided 'as-is', without any express or implied +warranty. In no event will the authors be held liable for any damages +arising from the use of this software. + +Permission is granted to anyone to use this software for any purpose, +including commercial applications, and to alter it and redistribute it +freely, subject to the following restrictions: + + 1. The origin of this software must not be misrepresented; you must not + claim that you wrote the original software. If you use this software + in a product, an acknowledgment in the product documentation would be + appreciated but is not required. + + 2. Altered source versions must be plainly marked as such, and must not be + misrepresented as being the original software. + + 3. This notice may not be removed or altered from any source + distribution. +*/ + +/* +This is a "hack" header to fool third party code to use our File stuff instead +of stdio FILE* stuff. +You can use soloud_file_hack_off.h to undef the stuff defined here. +*/ + +#ifndef SEEK_SET +#error soloud_file_hack_on must be included after stdio, otherwise the #define hacks will break stdio. +#endif + +typedef void* Soloud_Filehack; + +#ifdef __cplusplus +extern "C" { +#endif + +extern int Soloud_Filehack_fgetc(Soloud_Filehack *f); +extern int Soloud_Filehack_fread(void *dst, int s, int c, Soloud_Filehack *f); +extern int Soloud_Filehack_fseek(Soloud_Filehack *f, int idx, int base); +extern int Soloud_Filehack_ftell(Soloud_Filehack *f); +extern int Soloud_Filehack_fclose(Soloud_Filehack *f); +extern Soloud_Filehack * Soloud_Filehack_fopen(const char *aFilename, char *aMode); + +#ifdef __cplusplus +} +#endif + +#define FILE Soloud_Filehack +#define fgetc Soloud_Filehack_fgetc +#define fread Soloud_Filehack_fread +#define fseek Soloud_Filehack_fseek +#define ftell Soloud_Filehack_ftell +#define fclose Soloud_Filehack_fclose +#define fopen Soloud_Filehack_fopen diff --git a/src/soloud/include/soloud_filter.h b/src/soloud/include/soloud_filter.h new file mode 100644 index 0000000..a87fc11 --- /dev/null +++ b/src/soloud/include/soloud_filter.h @@ -0,0 +1,64 @@ +/* +SoLoud audio engine +Copyright (c) 2013-2014 Jari Komppa + +This software is provided 'as-is', without any express or implied +warranty. In no event will the authors be held liable for any damages +arising from the use of this software. + +Permission is granted to anyone to use this software for any purpose, +including commercial applications, and to alter it and redistribute it +freely, subject to the following restrictions: + + 1. The origin of this software must not be misrepresented; you must not + claim that you wrote the original software. If you use this software + in a product, an acknowledgment in the product documentation would be + appreciated but is not required. + + 2. Altered source versions must be plainly marked as such, and must not be + misrepresented as being the original software. + + 3. This notice may not be removed or altered from any source + distribution. +*/ + +#ifndef SOLOUD_FILTER_H +#define SOLOUD_FILTER_H + +#include "soloud.h" + +namespace SoLoud +{ + class Fader; + + class FilterInstance + { + public: + unsigned int mNumParams; + unsigned int mParamChanged; + float *mParam; + Fader *mParamFader; + + + FilterInstance(); + virtual result initParams(int aNumParams); + virtual void updateParams(time aTime); + virtual void filter(float *aBuffer, unsigned int aSamples, unsigned int aChannels, float aSamplerate, time aTime); + virtual void filterChannel(float *aBuffer, unsigned int aSamples, float aSamplerate, time aTime, unsigned int aChannel, unsigned int aChannels); + virtual float getFilterParameter(unsigned int aAttributeId); + virtual void setFilterParameter(unsigned int aAttributeId, float aValue); + virtual void fadeFilterParameter(unsigned int aAttributeId, float aTo, time aTime, time aStartTime); + virtual void oscillateFilterParameter(unsigned int aAttributeId, float aFrom, float aTo, time aTime, time aStartTime); + virtual ~FilterInstance(); + }; + + class Filter + { + public: + Filter(); + virtual FilterInstance *createInstance() = 0; + virtual ~Filter(); + }; +}; + +#endif diff --git a/src/soloud/include/soloud_flangerfilter.h b/src/soloud/include/soloud_flangerfilter.h new file mode 100644 index 0000000..e9a949d --- /dev/null +++ b/src/soloud/include/soloud_flangerfilter.h @@ -0,0 +1,65 @@ +/* +SoLoud audio engine +Copyright (c) 2013-2014 Jari Komppa + +This software is provided 'as-is', without any express or implied +warranty. In no event will the authors be held liable for any damages +arising from the use of this software. + +Permission is granted to anyone to use this software for any purpose, +including commercial applications, and to alter it and redistribute it +freely, subject to the following restrictions: + + 1. The origin of this software must not be misrepresented; you must not + claim that you wrote the original software. If you use this software + in a product, an acknowledgment in the product documentation would be + appreciated but is not required. + + 2. Altered source versions must be plainly marked as such, and must not be + misrepresented as being the original software. + + 3. This notice may not be removed or altered from any source + distribution. +*/ + +#ifndef SOLOUD_FLANGERFILTER_H +#define SOLOUD_FLANGERFILTER_H + +#include "soloud.h" + +namespace SoLoud +{ + class FlangerFilter; + + class FlangerFilterInstance : public FilterInstance + { + float *mBuffer; + unsigned int mBufferLength; + FlangerFilter *mParent; + unsigned int mOffset; + double mIndex; + + public: + virtual void filter(float *aBuffer, unsigned int aSamples, unsigned int aChannels, float aSamplerate, time aTime); + virtual ~FlangerFilterInstance(); + FlangerFilterInstance(FlangerFilter *aParent); + }; + + class FlangerFilter : public Filter + { + public: + enum FILTERPARAMS + { + WET, + DELAY, + FREQ + }; + float mDelay; + float mFreq; + virtual FilterInstance *createInstance(); + FlangerFilter(); + result setParams(float aDelay, float aFreq); + }; +} + +#endif \ No newline at end of file diff --git a/src/soloud/include/soloud_internal.h b/src/soloud/include/soloud_internal.h new file mode 100644 index 0000000..7502c11 --- /dev/null +++ b/src/soloud/include/soloud_internal.h @@ -0,0 +1,121 @@ +/* +SoLoud audio engine +Copyright (c) 2013-2015 Jari Komppa + +This software is provided 'as-is', without any express or implied +warranty. In no event will the authors be held liable for any damages +arising from the use of this software. + +Permission is granted to anyone to use this software for any purpose, +including commercial applications, and to alter it and redistribute it +freely, subject to the following restrictions: + + 1. The origin of this software must not be misrepresented; you must not + claim that you wrote the original software. If you use this software + in a product, an acknowledgment in the product documentation would be + appreciated but is not required. + + 2. Altered source versions must be plainly marked as such, and must not be + misrepresented as being the original software. + + 3. This notice may not be removed or altered from any source + distribution. +*/ + +#ifndef SOLOUD_INTERNAL_H +#define SOLOUD_INTERNAL_H + +#include "soloud.h" + +namespace SoLoud +{ + // SDL1 back-end initialization call + result sdl1_init(SoLoud::Soloud *aSoloud, unsigned int aFlags = Soloud::CLIP_ROUNDOFF, unsigned int aSamplerate = 44100, unsigned int aBuffer = 2048, unsigned int aChannels = 2); + + // SDL2 back-end initialization call + result sdl2_init(SoLoud::Soloud *aSoloud, unsigned int aFlags = Soloud::CLIP_ROUNDOFF, unsigned int aSamplerate = 44100, unsigned int aBuffer = 2048, unsigned int aChannels = 2); + + // SDL1 "non-dynamic" back-end initialization call + result sdl1static_init(SoLoud::Soloud *aSoloud, unsigned int aFlags = Soloud::CLIP_ROUNDOFF, unsigned int aSamplerate = 44100, unsigned int aBuffer = 2048, unsigned int aChannels = 2); + + // SDL2 "non-dynamic" back-end initialization call + result sdl2static_init(SoLoud::Soloud *aSoloud, unsigned int aFlags = Soloud::CLIP_ROUNDOFF, unsigned int aSamplerate = 44100, unsigned int aBuffer = 2048, unsigned int aChannels = 2); + + // OpenAL back-end initialization call + result openal_init(SoLoud::Soloud *aSoloud, unsigned int aFlags = Soloud::CLIP_ROUNDOFF, unsigned int aSamplerate = 44100, unsigned int aBuffer = 2048, unsigned int aChannels = 2); + + // Core Audio driver back-end initialization call + result coreaudio_init(SoLoud::Soloud *aSoloud, unsigned int aFlags = Soloud::CLIP_ROUNDOFF, unsigned int aSamplerate = 44100, unsigned int aBuffer = 2048, unsigned int aChannels = 2); + + // OpenSL ES back-end initialization call + result opensles_init(SoLoud::Soloud *aSoloud, unsigned int aFlags = Soloud::CLIP_ROUNDOFF, unsigned int aSamplerate = 44100, unsigned int aBuffer = 2048, unsigned int aChannels = 2); + + // PortAudio back-end initialization call + result portaudio_init(SoLoud::Soloud *aSoloud, unsigned int aFlags = Soloud::CLIP_ROUNDOFF, unsigned int aSamplerate = 44100, unsigned int aBuffer = 2048, unsigned int aChannels = 2); + + // WinMM back-end initialization call + result winmm_init(SoLoud::Soloud *aSoloud, unsigned int aFlags = Soloud::CLIP_ROUNDOFF, unsigned int aSamplerate = 44100, unsigned int aBuffer = 4096, unsigned int aChannels = 2); + + // XAudio2 back-end initialization call + result xaudio2_init(SoLoud::Soloud *aSoloud, unsigned int aFlags = Soloud::CLIP_ROUNDOFF, unsigned int aSamplerate = 44100, unsigned int aBuffer = 2048, unsigned int aChannels = 2); + + // WASAPI back-end initialization call + result wasapi_init(SoLoud::Soloud *aSoloud, unsigned int aFlags = Soloud::CLIP_ROUNDOFF, unsigned int aSamplerate = 44100, unsigned int aBuffer = 4096, unsigned int aChannels = 2); + + // OSS back-end initialization call + result oss_init(SoLoud::Soloud *aSoloud, unsigned int aFlags = Soloud::CLIP_ROUNDOFF, unsigned int aSamplerate = 44100, unsigned int aBuffer = 2048, unsigned int aChannels = 2); + + // PS Vita homebrew back-end initialization call + result vita_homebrew_init(SoLoud::Soloud *aSoloud, unsigned int aFlags = Soloud::CLIP_ROUNDOFF, unsigned int aSamplerate = 44100, unsigned int aBuffer = 2048, unsigned int aChannels = 2); + + // ALSA back-end initialization call + result alsa_init(SoLoud::Soloud *aSoloud, unsigned int aFlags = Soloud::CLIP_ROUNDOFF, unsigned int aSamplerate = 44100, unsigned int aBuffer = 2048, unsigned int aChannels = 2); + + // null driver back-end initialization call + result null_init(SoLoud::Soloud *aSoloud, unsigned int aFlags = Soloud::CLIP_ROUNDOFF, unsigned int aSamplerate = 44100, unsigned int aBuffer = 2048, unsigned int aChannels = 2); + + // Deinterlace samples in a buffer. From 12121212 to 11112222 + void deinterlace_samples_float(const float *aSourceBuffer, float *aDestBuffer, unsigned int aSamples, unsigned int aChannels); + + // Interlace samples in a buffer. From 11112222 to 12121212 + void interlace_samples_float(const float *aSourceBuffer, float *aDestBuffer, unsigned int aSamples, unsigned int aChannels); + + // Convert to 16-bit and interlace samples in a buffer. From 11112222 to 12121212 + void interlace_samples_s16(const float *aSourceBuffer, short *aDestBuffer, unsigned int aSamples, unsigned int aChannels); +}; + +#define FOR_ALL_VOICES_PRE \ + handle *h_ = NULL; \ + handle th_[2] = { aVoiceHandle, 0 }; \ + lockAudioMutex(); \ + h_ = voiceGroupHandleToArray(aVoiceHandle); \ + if (h_ == NULL) h_ = th_; \ + while (*h_) \ + { \ + int ch = getVoiceFromHandle(*h_); \ + if (ch != -1) \ + { + +#define FOR_ALL_VOICES_POST \ + } \ + h_++; \ + } \ + unlockAudioMutex(); + +#define FOR_ALL_VOICES_PRE_3D \ + handle *h_ = NULL; \ + handle th_[2] = { aVoiceHandle, 0 }; \ + h_ = voiceGroupHandleToArray(aVoiceHandle); \ + if (h_ == NULL) h_ = th_; \ + while (*h_) \ + { \ + int ch = (*h_ & 0xfff) - 1; \ + if (ch != -1 && m3dData[ch].mHandle == *h_) \ + { + +#define FOR_ALL_VOICES_POST_3D \ + } \ + h_++; \ + } + +#endif \ No newline at end of file diff --git a/src/soloud/include/soloud_lofifilter.h b/src/soloud/include/soloud_lofifilter.h new file mode 100644 index 0000000..99a6a3f --- /dev/null +++ b/src/soloud/include/soloud_lofifilter.h @@ -0,0 +1,75 @@ +/* +SoLoud audio engine +Copyright (c) 2013-2014 Jari Komppa + +This software is provided 'as-is', without any express or implied +warranty. In no event will the authors be held liable for any damages +arising from the use of this software. + +Permission is granted to anyone to use this software for any purpose, +including commercial applications, and to alter it and redistribute it +freely, subject to the following restrictions: + + 1. The origin of this software must not be misrepresented; you must not + claim that you wrote the original software. If you use this software + in a product, an acknowledgment in the product documentation would be + appreciated but is not required. + + 2. Altered source versions must be plainly marked as such, and must not be + misrepresented as being the original software. + + 3. This notice may not be removed or altered from any source + distribution. +*/ + +#ifndef SOLOUD_LOFIFILTER_H +#define SOLOUD_LOFIFILTER_H + +#include "soloud.h" + +namespace SoLoud +{ + class LofiFilter; + + struct LofiChannelData + { + float mSample; + float mSamplesToSkip; + }; + + class LofiFilterInstance : public FilterInstance + { + enum FILTERPARAMS + { + WET, + SAMPLERATE, + BITDEPTH + }; + LofiChannelData mChannelData[2]; + + LofiFilter *mParent; + public: + virtual void filterChannel(float *aBuffer, unsigned int aSamples, float aSamplerate, time aTime, unsigned int aChannel, unsigned int aChannels); + virtual ~LofiFilterInstance(); + LofiFilterInstance(LofiFilter *aParent); + }; + + class LofiFilter : public Filter + { + public: + enum FILTERPARAMS + { + WET, + SAMPLERATE, + BITDEPTH + }; + float mSampleRate; + float mBitdepth; + virtual LofiFilterInstance *createInstance(); + LofiFilter(); + result setParams(float aSampleRate, float aBitdepth); + virtual ~LofiFilter(); + }; +} + +#endif \ No newline at end of file diff --git a/src/soloud/include/soloud_monotone.h b/src/soloud/include/soloud_monotone.h new file mode 100644 index 0000000..bca1624 --- /dev/null +++ b/src/soloud/include/soloud_monotone.h @@ -0,0 +1,116 @@ +/* +MONOTONE module for SoLoud audio engine +Copyright (c) 2013-2015 Jari Komppa + +This software is provided 'as-is', without any express or implied +warranty. In no event will the authors be held liable for any damages +arising from the use of this software. + +Permission is granted to anyone to use this software for any purpose, +including commercial applications, and to alter it and redistribute it +freely, subject to the following restrictions: + + 1. The origin of this software must not be misrepresented; you must not + claim that you wrote the original software. If you use this software + in a product, an acknowledgment in the product documentation would be + appreciated but is not required. + + 2. Altered source versions must be plainly marked as such, and must not be + misrepresented as being the original software. + + 3. This notice may not be removed or altered from any source + distribution. +*/ + +#ifndef MONOTONE_H +#define MONOTONE_H + +#include "soloud.h" + +namespace SoLoud +{ + class Monotone; + class File; + + struct MonotoneSong + { + char *mTitle; + char *mComment; + unsigned char mVersion; // must be 1 + unsigned char mTotalPatterns; + unsigned char mTotalTracks; + unsigned char mCellSize; // must be 2 for version 1 + unsigned char mOrder[256]; + unsigned int *mPatternData; // 64 rows * mTotalPatterns * mTotalTracks + }; + + struct MonotoneChannel + { + int mEnabled; + int mActive; + int mFreq[3]; + int mPortamento; + int mArpCounter; + int mArp; + int mLastNote; + int mPortamentoToNote; + int mVibrato; + int mVibratoIndex; + int mVibratoDepth; + int mVibratoSpeed; + }; + + struct MonotoneHardwareChannel + { + int mEnabled; + float mSamplePos; + float mSamplePosInc; + }; + + class MonotoneInstance : public AudioSourceInstance + { + Monotone *mParent; + public: + MonotoneChannel mChannel[12]; + MonotoneHardwareChannel mOutput[12]; + int mNextChannel; + int mTempo; // ticks / row. Tick = 60hz. Default 4. + int mOrder; + int mRow; + int mSampleCount; + int mRowTick; + + MonotoneInstance(Monotone *aParent); + virtual unsigned int getAudio(float *aBuffer, unsigned int aSamples, unsigned int aBufferSize); + virtual bool hasEnded(); + }; + + class Monotone : public AudioSource + { + public: + enum MONOTONE_WAVEFORMS + { + SQUARE = 0, + SAW = 1, + SIN = 2, + SAWSIN = 3 + }; + + int mNotesHz[800]; + int mVibTable[32]; + int mHardwareChannels; + int mWaveform; + MonotoneSong mSong; + Monotone(); + ~Monotone(); + result setParams(int aHardwareChannels, int aWaveform = SQUARE); + result load(const char *aFilename); + result loadMem(unsigned char *aMem, unsigned int aLength, bool aCopy = false, bool aTakeOwnership = true); + result loadFile(File *aFile); + virtual AudioSourceInstance *createInstance(); + public: + void clear(); + }; +}; + +#endif \ No newline at end of file diff --git a/src/soloud/include/soloud_openmpt.h b/src/soloud/include/soloud_openmpt.h new file mode 100644 index 0000000..9a8bd54 --- /dev/null +++ b/src/soloud/include/soloud_openmpt.h @@ -0,0 +1,62 @@ +/* +Openmpt module for SoLoud audio engine +Copyright (c) 2016 Jari Komppa + +This software is provided 'as-is', without any express or implied +warranty. In no event will the authors be held liable for any damages +arising from the use of this software. + +Permission is granted to anyone to use this software for any purpose, +including commercial applications, and to alter it and redistribute it +freely, subject to the following restrictions: + + 1. The origin of this software must not be misrepresented; you must not + claim that you wrote the original software. If you use this software + in a product, an acknowledgment in the product documentation would be + appreciated but is not required. + + 2. Altered source versions must be plainly marked as such, and must not be + misrepresented as being the original software. + + 3. This notice may not be removed or altered from any source + distribution. +*/ + +#ifndef OPENMPT_H +#define OPENMPT_H + +#include "soloud.h" + +namespace SoLoud +{ + class Openmpt; + class File; + + class OpenmptInstance : public AudioSourceInstance + { + Openmpt *mParent; + void *mModfile; + int mPlaying; + + public: + OpenmptInstance(Openmpt *aParent); + virtual ~OpenmptInstance(); + virtual unsigned int getAudio(float *aBuffer, unsigned int aSamplesToRead, unsigned int aBufferSize); + virtual bool hasEnded(); + }; + + class Openmpt : public AudioSource + { + public: + char *mData; + unsigned int mDataLen; + Openmpt(); + virtual ~Openmpt(); + result load(const char* aFilename); + result loadMem(unsigned char *aMem, unsigned int aLength, bool aCopy = false, bool aTakeOwnership = true); + result loadFile(File *aFile); + virtual AudioSourceInstance *createInstance(); + }; +}; + +#endif \ No newline at end of file diff --git a/src/soloud/include/soloud_queue.h b/src/soloud/include/soloud_queue.h new file mode 100644 index 0000000..0491f56 --- /dev/null +++ b/src/soloud/include/soloud_queue.h @@ -0,0 +1,72 @@ +/* +SoLoud audio engine +Copyright (c) 2013-2018 Jari Komppa + +This software is provided 'as-is', without any express or implied +warranty. In no event will the authors be held liable for any damages +arising from the use of this software. + +Permission is granted to anyone to use this software for any purpose, +including commercial applications, and to alter it and redistribute it +freely, subject to the following restrictions: + + 1. The origin of this software must not be misrepresented; you must not + claim that you wrote the original software. If you use this software + in a product, an acknowledgment in the product documentation would be + appreciated but is not required. + + 2. Altered source versions must be plainly marked as such, and must not be + misrepresented as being the original software. + + 3. This notice may not be removed or altered from any source + distribution. +*/ + +#ifndef SOLOUD_QUEUE_H +#define SOLOUD_QUEUE_H + +#include "soloud.h" + +#define SOLOUD_QUEUE_MAX 32 + +namespace SoLoud +{ + class Queue; + + class QueueInstance : public AudioSourceInstance + { + Queue *mParent; + public: + QueueInstance(Queue *aParent); + virtual unsigned int getAudio(float *aBuffer, unsigned int aSamplesToRead, unsigned int aBufferSize); + virtual bool hasEnded(); + virtual ~QueueInstance(); + }; + + class Queue : public AudioSource + { + public: + Queue(); + virtual QueueInstance *createInstance(); + // Play sound through the queue + result play(AudioSource &aSound); + // Number of audio sources queued for replay + unsigned int getQueueCount(); + // Is this audio source currently playing? + bool isCurrentlyPlaying(AudioSource &aSound); + // Set params by reading them from an audio source + result setParamsFromAudioSource(AudioSource &aSound); + // Set params manually + result setParams(float aSamplerate, unsigned int aChannels = 2); + + public: + unsigned int mReadIndex, mWriteIndex, mCount; + AudioSourceInstance *mSource[SOLOUD_QUEUE_MAX]; + QueueInstance *mInstance; + handle mQueueHandle; + void findQueueHandle(); + + }; +}; + +#endif \ No newline at end of file diff --git a/src/soloud/include/soloud_robotizefilter.h b/src/soloud/include/soloud_robotizefilter.h new file mode 100644 index 0000000..6b89cce --- /dev/null +++ b/src/soloud/include/soloud_robotizefilter.h @@ -0,0 +1,60 @@ +/* +SoLoud audio engine +Copyright (c) 2013-2018 Jari Komppa + +This software is provided 'as-is', without any express or implied +warranty. In no event will the authors be held liable for any damages +arising from the use of this software. + +Permission is granted to anyone to use this software for any purpose, +including commercial applications, and to alter it and redistribute it +freely, subject to the following restrictions: + + 1. The origin of this software must not be misrepresented; you must not + claim that you wrote the original software. If you use this software + in a product, an acknowledgment in the product documentation would be + appreciated but is not required. + + 2. Altered source versions must be plainly marked as such, and must not be + misrepresented as being the original software. + + 3. This notice may not be removed or altered from any source + distribution. +*/ + +#ifndef SOLOUD_ROBOTIZEFILTER_H +#define SOLOUD_ROBOTIZEFILTER_H + +#include "soloud.h" +#include "soloud_fftfilter.h" + +namespace SoLoud +{ + class RobotizeFilter; + + class RobotizeFilterInstance : public FFTFilterInstance + { + enum FILTERATTRIBUTE + { + WET = 0 + }; + RobotizeFilter *mParent; + public: + virtual void fftFilterChannel(float *aFFTBuffer, unsigned int aSamples, float aSamplerate, time aTime, unsigned int aChannel, unsigned int aChannels); + RobotizeFilterInstance(RobotizeFilter *aParent); + }; + + class RobotizeFilter : public FFTFilter + { + public: + enum FILTERATTRIBUTE + { + WET = 0 + }; + float mBoost; + virtual FilterInstance *createInstance(); + RobotizeFilter(); + }; +} + +#endif \ No newline at end of file diff --git a/src/soloud/include/soloud_sfxr.h b/src/soloud/include/soloud_sfxr.h new file mode 100644 index 0000000..169c6df --- /dev/null +++ b/src/soloud/include/soloud_sfxr.h @@ -0,0 +1,169 @@ +/* +SFXR module for SoLoud audio engine +Copyright (c) 2014 Jari Komppa +Based on code (c) by Tomas Pettersson, re-licensed under zlib by permission + +This software is provided 'as-is', without any express or implied +warranty. In no event will the authors be held liable for any damages +arising from the use of this software. + +Permission is granted to anyone to use this software for any purpose, +including commercial applications, and to alter it and redistribute it +freely, subject to the following restrictions: + + 1. The origin of this software must not be misrepresented; you must not + claim that you wrote the original software. If you use this software + in a product, an acknowledgment in the product documentation would be + appreciated but is not required. + + 2. Altered source versions must be plainly marked as such, and must not be + misrepresented as being the original software. + + 3. This notice may not be removed or altered from any source + distribution. +*/ + +#ifndef SFXR_H +#define SFXR_H + +#include "soloud.h" + +namespace SoLoud +{ + class File; + + class Prg + { + public: + // random generator + Prg(); + unsigned int state[16]; + unsigned int index; + unsigned int rand(); + void srand(int aSeed); + }; + + struct SfxrParams + { + int wave_type; + + float p_base_freq; + float p_freq_limit; + float p_freq_ramp; + float p_freq_dramp; + float p_duty; + float p_duty_ramp; + + float p_vib_strength; + float p_vib_speed; + float p_vib_delay; + + float p_env_attack; + float p_env_sustain; + float p_env_decay; + float p_env_punch; + + bool filter_on; + float p_lpf_resonance; + float p_lpf_freq; + float p_lpf_ramp; + float p_hpf_freq; + float p_hpf_ramp; + + float p_pha_offset; + float p_pha_ramp; + + float p_repeat_speed; + + float p_arp_speed; + float p_arp_mod; + + float master_vol; + + float sound_vol; + }; + + class Sfxr; + + class SfxrInstance : public AudioSourceInstance + { + Sfxr *mParent; + + Prg mRand; + SfxrParams mParams; + + bool playing_sample; + int phase; + double fperiod; + double fmaxperiod; + double fslide; + double fdslide; + int period; + float square_duty; + float square_slide; + int env_stage; + int env_time; + int env_length[3]; + float env_vol; + float fphase; + float fdphase; + int iphase; + float phaser_buffer[1024]; + int ipp; + float noise_buffer[32]; + float fltp; + float fltdp; + float fltw; + float fltw_d; + float fltdmp; + float fltphp; + float flthp; + float flthp_d; + float vib_phase; + float vib_speed; + float vib_amp; + int rep_time; + int rep_limit; + int arp_time; + int arp_limit; + double arp_mod; + + void resetSample(bool aRestart); + + public: + SfxrInstance(Sfxr *aParent); + virtual unsigned int getAudio(float *aBuffer, unsigned int aSamplesToRead, unsigned int aBufferSize); + virtual bool hasEnded(); + }; + + class Sfxr : public AudioSource + { + public: + SfxrParams mParams; + + enum SFXR_PRESETS + { + COIN, + LASER, + EXPLOSION, + POWERUP, + HURT, + JUMP, + BLIP + }; + + Prg mRand; + + Sfxr(); + virtual ~Sfxr(); + void resetParams(); + result loadParams(const char* aFilename); + result loadParamsMem(unsigned char *aMem, unsigned int aLength, bool aCopy = false, bool aTakeOwnership = true); + result loadParamsFile(File *aFile); + + result loadPreset(int aPresetNo, int aRandSeed); + virtual AudioSourceInstance *createInstance(); + }; +}; + +#endif \ No newline at end of file diff --git a/src/soloud/include/soloud_speech.h b/src/soloud/include/soloud_speech.h new file mode 100644 index 0000000..fa7436c --- /dev/null +++ b/src/soloud/include/soloud_speech.h @@ -0,0 +1,79 @@ +/* +SoLoud audio engine +Copyright (c) 2013-2015 Jari Komppa + +This software is provided 'as-is', without any express or implied +warranty. In no event will the authors be held liable for any damages +arising from the use of this software. + +Permission is granted to anyone to use this software for any purpose, +including commercial applications, and to alter it and redistribute it +freely, subject to the following restrictions: + + 1. The origin of this software must not be misrepresented; you must not + claim that you wrote the original software. If you use this software + in a product, an acknowledgment in the product documentation would be + appreciated but is not required. + + 2. Altered source versions must be plainly marked as such, and must not be + misrepresented as being the original software. + + 3. This notice may not be removed or altered from any source + distribution. +*/ +#ifndef SOLOUD_SPEECH_H +#define SOLOUD_SPEECH_H + +#include "soloud.h" +#include "../src/audiosource/speech/darray.h" +#include "../src/audiosource/speech/klatt.h" +#include "../src/audiosource/speech/tts.h" + +namespace SoLoud +{ + class Speech; + + class Speech : public AudioSource + { + // copy of the enum in klatt.h for codegen purposes + enum KLATT_WAVEFORM + { + KW_SAW, + KW_TRIANGLE, + KW_SIN, + KW_SQUARE, + KW_PULSE, + KW_NOISE, + KW_WARBLE + }; + public: + int mBaseFrequency; + float mBaseSpeed; + float mBaseDeclination; + int mBaseWaveform; + int mFrames; + darray mElement; + Speech(); + result setText(const char *aText); + result setParams(unsigned int aBaseFrequency = 1330, float aBaseSpeed = 10.0f, float aBaseDeclination = 0.5f, int aBaseWaveform = KW_TRIANGLE); + virtual ~Speech(); + virtual AudioSourceInstance *createInstance(); + }; + + class SpeechInstance : public AudioSourceInstance + { + klatt mSynth; + Speech *mParent; + short *mSample; + int mSampleCount; + int mOffset; + public: + SpeechInstance(Speech *aParent); + virtual ~SpeechInstance(); + virtual unsigned int getAudio(float *aBuffer, unsigned int aSamplesToRead, unsigned int aBufferSize); + virtual result rewind(); + virtual bool hasEnded(); + }; +}; + +#endif diff --git a/src/soloud/include/soloud_tedsid.h b/src/soloud/include/soloud_tedsid.h new file mode 100644 index 0000000..d238c51 --- /dev/null +++ b/src/soloud/include/soloud_tedsid.h @@ -0,0 +1,74 @@ +/* +TED/SID module for SoLoud audio engine +Copyright (c) 2013-2015 Jari Komppa + +This software is provided 'as-is', without any express or implied +warranty. In no event will the authors be held liable for any damages +arising from the use of this software. + +Permission is granted to anyone to use this software for any purpose, +including commercial applications, and to alter it and redistribute it +freely, subject to the following restrictions: + + 1. The origin of this software must not be misrepresented; you must not + claim that you wrote the original software. If you use this software + in a product, an acknowledgment in the product documentation would be + appreciated but is not required. + + 2. Altered source versions must be plainly marked as such, and must not be + misrepresented as being the original software. + + 3. This notice may not be removed or altered from any source + distribution. +*/ + +#ifndef TEDSID_H +#define TEDSID_H + +#include "soloud.h" + +class SIDsound; +class TED; + +namespace SoLoud +{ + class TedSid; + class File; + + class TedSidInstance : public AudioSourceInstance + { + TedSid *mParent; + SIDsound *mSID; + TED *mTED; + unsigned int mSampleCount; + int mNextReg; + int mNextVal; + int mRegValues[128]; + public: + + TedSidInstance(TedSid *aParent); + ~TedSidInstance(); + virtual unsigned int getAudio(float *aBuffer, unsigned int aSamplesToRead, unsigned int aBufferSize); + virtual void tick(); + virtual bool hasEnded(); + virtual float getInfo(unsigned int aInfoKey); + }; + + class TedSid : public AudioSource + { + public: + File *mFile; + int mModel; + bool mFileOwned; + TedSid(); + ~TedSid(); + result load(const char *aFilename); + result loadToMem(const char *aFilename); + result loadMem(unsigned char *aMem, unsigned int aLength, bool aCopy = false, bool aTakeOwnership = true); + result loadFileToMem(File *aFile); + result loadFile(File *aFile); + virtual AudioSourceInstance *createInstance(); + }; +}; + +#endif \ No newline at end of file diff --git a/src/soloud/include/soloud_thread.h b/src/soloud/include/soloud_thread.h new file mode 100644 index 0000000..7ad7c6a --- /dev/null +++ b/src/soloud/include/soloud_thread.h @@ -0,0 +1,83 @@ +/* +SoLoud audio engine +Copyright (c) 2013-2014 Jari Komppa + +This software is provided 'as-is', without any express or implied +warranty. In no event will the authors be held liable for any damages +arising from the use of this software. + +Permission is granted to anyone to use this software for any purpose, +including commercial applications, and to alter it and redistribute it +freely, subject to the following restrictions: + + 1. The origin of this software must not be misrepresented; you must not + claim that you wrote the original software. If you use this software + in a product, an acknowledgment in the product documentation would be + appreciated but is not required. + + 2. Altered source versions must be plainly marked as such, and must not be + misrepresented as being the original software. + + 3. This notice may not be removed or altered from any source + distribution. +*/ + +#ifndef SOLOUD_THREAD_H +#define SOLOUD_THREAD_H + +#include "soloud.h" + +namespace SoLoud +{ + namespace Thread + { + typedef void (*threadFunction)(void *aParam); + + struct ThreadHandleData; + typedef ThreadHandleData* ThreadHandle; + + void * createMutex(); + void destroyMutex(void *aHandle); + void lockMutex(void *aHandle); + void unlockMutex(void *aHandle); + + ThreadHandle createThread(threadFunction aThreadFunction, void *aParameter); + + void sleep(int aMSec); + void wait(ThreadHandle aThreadHandle); + void release(ThreadHandle aThreadHandle); + +#define MAX_THREADPOOL_TASKS 1024 + + class PoolTask + { + public: + virtual void work() = 0; + }; + + class Pool + { + public: + // Initialize and run thread pool. For thread count 0, work is done at addWork call. + void init(int aThreadCount); + // Ctor, sets known state + Pool(); + // Dtor. Waits for the threads to finish. Work may be unfinished. + ~Pool(); + // Add work to work list. Object is not automatically deleted when work is done. + void addWork(PoolTask *aTask); + // Called from worker thread to get a new task. Returns null if no work available. + PoolTask *getWork(); + public: + int mThreadCount; // number of threads + ThreadHandle *mThread; // array of thread handles + void *mWorkMutex; // mutex to protect task array/maxtask + PoolTask *mTaskArray[MAX_THREADPOOL_TASKS]; // pointers to tasks + int mMaxTask; // how many tasks are pending + int mRobin; // cyclic counter, used to pick jobs for threads + volatile int mRunning; // running flag, used to flag threads to stop + }; + } +} + +#endif \ No newline at end of file diff --git a/src/soloud/include/soloud_vic.h b/src/soloud/include/soloud_vic.h new file mode 100644 index 0000000..ef6b486 --- /dev/null +++ b/src/soloud/include/soloud_vic.h @@ -0,0 +1,108 @@ +/* +SoLoud audio engine +Copyright (c) 2015 Jari Komppa + +VIC 6560/6561 sound chip emulator +Copyright (c) 2015 Petri Hakkinen + +This software is provided 'as-is', without any express or implied +warranty. In no event will the authors be held liable for any damages +arising from the use of this software. + +Permission is granted to anyone to use this software for any purpose, +including commercial applications, and to alter it and redistribute it +freely, subject to the following restrictions: + + 1. The origin of this software must not be misrepresented; you must not + claim that you wrote the original software. If you use this software + in a product, an acknowledgment in the product documentation would be + appreciated but is not required. + + 2. Altered source versions must be plainly marked as such, and must not be + misrepresented as being the original software. + + 3. This notice may not be removed or altered from any source + distribution. +*/ + +#ifndef SOLOUD_VIC_H +#define SOLOUD_VIC_H + +#include "soloud.h" + +/* +A very bare bones emulator for Commodore VIC-20 sound chip. Supports both PAL and NTSC models. +Bass, alto and soprano should be quite close to original vic, noise probably not so. + +The first three channels (bass, alto and soprano) are square waveform generators with 7-bit frequency. +The highest bit of each oscillator register switches the oscillator on/off. +The fourth oscillator generates a noise waveform. + +VIC-20 does not have per channel volume control, only global volume, +which you can change by setting audio source's volume. + +To get that authentic moldy VIC-20 sound, the audio source should be coupled with a biquad resonant filter +with the following params: type = LOWPASS, sample rate = 44100, frequency = 1500, resonance = 2.0. +*/ + +namespace SoLoud +{ + class Vic; + + class VicInstance : public AudioSourceInstance + { + public: + VicInstance(Vic *aParent); + ~VicInstance(); + + virtual unsigned int getAudio(float *aBuffer, unsigned int aSamplesToRead, unsigned int aBufferSize); + virtual bool hasEnded(); + + public: + Vic* m_parent; + unsigned int m_phase[4]; + unsigned int m_noisePos; + }; + + class Vic : public AudioSource + { + public: + // VIC model + enum + { + PAL = 0, + NTSC + }; + + // VIC sound registers + enum + { + BASS = 0, + ALTO, + SOPRANO, + NOISE, + MAX_REGS + }; + + Vic(); + + virtual ~Vic(); + + void setModel(int model); + + int getModel() const; + + void setRegister(int reg, unsigned char value); + + unsigned char getRegister(int reg); + + public: + virtual AudioSourceInstance *createInstance(); + int m_model; + float m_clocks[4]; // base clock frequencies for oscillators, dependent on VIC model + unsigned char m_regs[MAX_REGS]; + unsigned char m_noise[8192]; + }; +}; + +#endif diff --git a/src/soloud/include/soloud_vizsn.h b/src/soloud/include/soloud_vizsn.h new file mode 100644 index 0000000..35a229d --- /dev/null +++ b/src/soloud/include/soloud_vizsn.h @@ -0,0 +1,82 @@ +/* +SoLoud audio engine +Copyright (c) 2013-2018 Jari Komppa + +vizsn speech synthesizer (c) by Ville-Matias Heikkilä, +released under WTFPL, http://www.wtfpl.net/txt/copying/ +(in short, "do whatever you want to") + +Integration and changes to work with SoLoud by Jari Komppa, +released under same license. +*/ + +#ifndef SOLOUD_VIZSN_H +#define SOLOUD_VIZSN_H + +#include "soloud.h" + +namespace SoLoud +{ + class Vizsn; + + struct VizsnResonator + { + public: + float a, b, c, p1, p2; + + float resonate(float i); + float antiresonate(float i); + }; + + struct VizsnBank + { + VizsnResonator r[10]; + float pitch; + float frica, voice, aspir, bypas, breth; + }; + + class VizsnInstance : public AudioSourceInstance + { + public: + VizsnInstance(Vizsn *aParent); + ~VizsnInstance(); + + virtual unsigned int getAudio(float *aBuffer, unsigned int aSamplesToRead, unsigned int aBufferSize); + virtual bool hasEnded(); + + public: + Vizsn *mParent; + VizsnBank mBank0, mBank1, mBank0to1; + int mNper, mNmod, mNopen; + int mEchobuf[1024], mPtr; + int mCurrentVoiceType; + float mPitch; + char *mS; + float mBuf[2048]; + unsigned int mBufwrite; + unsigned int mBufread; + float vcsrc(int aPitch, int aVoicetype); + float noisrc(); + float genwave(); + void setphone(VizsnBank *aB, char aP, float aPitch); + void slidePrepare(int aNumtix); + void slideTick(); + int mA; + int mB; + int mOrgv; + float mGlotlast; + }; + + class Vizsn : public AudioSource + { + public: + char *mText; + Vizsn(); + virtual ~Vizsn(); + void setText(char *aText); + public: + virtual AudioSourceInstance *createInstance(); + }; +}; + +#endif diff --git a/src/soloud/include/soloud_wav.h b/src/soloud/include/soloud_wav.h new file mode 100644 index 0000000..887c16b --- /dev/null +++ b/src/soloud/include/soloud_wav.h @@ -0,0 +1,74 @@ +/* +SoLoud audio engine +Copyright (c) 2013-2018 Jari Komppa + +This software is provided 'as-is', without any express or implied +warranty. In no event will the authors be held liable for any damages +arising from the use of this software. + +Permission is granted to anyone to use this software for any purpose, +including commercial applications, and to alter it and redistribute it +freely, subject to the following restrictions: + + 1. The origin of this software must not be misrepresented; you must not + claim that you wrote the original software. If you use this software + in a product, an acknowledgment in the product documentation would be + appreciated but is not required. + + 2. Altered source versions must be plainly marked as such, and must not be + misrepresented as being the original software. + + 3. This notice may not be removed or altered from any source + distribution. +*/ + +#ifndef SOLOUD_WAV_H +#define SOLOUD_WAV_H + +#include "soloud.h" + +struct stb_vorbis; + +namespace SoLoud +{ + class Wav; + class File; + class MemoryFile; + + class WavInstance : public AudioSourceInstance + { + Wav *mParent; + unsigned int mOffset; + public: + WavInstance(Wav *aParent); + virtual unsigned int getAudio(float *aBuffer, unsigned int aSamplesToRead, unsigned int aBufferSize); + virtual result rewind(); + virtual bool hasEnded(); + }; + + class Wav : public AudioSource + { + result loadwav(MemoryFile *aReader); + result loadogg(MemoryFile *aReader); + result loadmp3(MemoryFile *aReader); + result loadflac(MemoryFile *aReader); + result testAndLoadFile(MemoryFile *aReader); + public: + float *mData; + unsigned int mSampleCount; + + Wav(); + virtual ~Wav(); + result load(const char *aFilename); + result loadMem(unsigned char *aMem, unsigned int aLength, bool aCopy = false, bool aTakeOwnership = true); + result loadFile(File *aFile); + result loadRawWave8(unsigned char *aMem, unsigned int aLength, float aSamplerate = 44100.0f, unsigned int aChannels = 1); + result loadRawWave16(short *aMem, unsigned int aLength, float aSamplerate = 44100.0f, unsigned int aChannels = 1); + result loadRawWave(float *aMem, unsigned int aLength, float aSamplerate = 44100.0f, unsigned int aChannels = 1, bool aCopy = false, bool aTakeOwnership = true); + + virtual AudioSourceInstance *createInstance(); + time getLength(); + }; +}; + +#endif diff --git a/src/soloud/include/soloud_waveshaperfilter.h b/src/soloud/include/soloud_waveshaperfilter.h new file mode 100644 index 0000000..11348a1 --- /dev/null +++ b/src/soloud/include/soloud_waveshaperfilter.h @@ -0,0 +1,54 @@ +/* +SoLoud audio engine +Copyright (c) 2013-2018 Jari Komppa + +This software is provided 'as-is', without any express or implied +warranty. In no event will the authors be held liable for any damages +arising from the use of this software. + +Permission is granted to anyone to use this software for any purpose, +including commercial applications, and to alter it and redistribute it +freely, subject to the following restrictions: + + 1. The origin of this software must not be misrepresented; you must not + claim that you wrote the original software. If you use this software + in a product, an acknowledgment in the product documentation would be + appreciated but is not required. + + 2. Altered source versions must be plainly marked as such, and must not be + misrepresented as being the original software. + + 3. This notice may not be removed or altered from any source + distribution. +*/ + +#ifndef SOLOUD_WAVESHAPERFILTER_H +#define SOLOUD_WAVESHAPERFILTER_H + +#include "soloud.h" + +namespace SoLoud +{ + class WaveShaperFilter; + + class WaveShaperFilterInstance : public FilterInstance + { + WaveShaperFilter *mParent; + public: + virtual void filterChannel(float *aBuffer, unsigned int aSamples, float aSamplerate, time aTime, unsigned int aChannel, unsigned int aChannels); + virtual ~WaveShaperFilterInstance(); + WaveShaperFilterInstance(WaveShaperFilter *aParent); + }; + + class WaveShaperFilter : public Filter + { + public: + float mAmount, mWet; + virtual WaveShaperFilterInstance *createInstance(); + result setParams(float aAmount, float aWet = 1.0f); + WaveShaperFilter(); + virtual ~WaveShaperFilter(); + }; +} + +#endif \ No newline at end of file diff --git a/src/soloud/include/soloud_wavstream.h b/src/soloud/include/soloud_wavstream.h new file mode 100644 index 0000000..ba7739c --- /dev/null +++ b/src/soloud/include/soloud_wavstream.h @@ -0,0 +1,106 @@ +/* +SoLoud audio engine +Copyright (c) 2013-2018 Jari Komppa + +This software is provided 'as-is', without any express or implied +warranty. In no event will the authors be held liable for any damages +arising from the use of this software. + +Permission is granted to anyone to use this software for any purpose, +including commercial applications, and to alter it and redistribute it +freely, subject to the following restrictions: + + 1. The origin of this software must not be misrepresented; you must not + claim that you wrote the original software. If you use this software + in a product, an acknowledgment in the product documentation would be + appreciated but is not required. + + 2. Altered source versions must be plainly marked as such, and must not be + misrepresented as being the original software. + + 3. This notice may not be removed or altered from any source + distribution. +*/ + +#ifndef SOLOUD_WAVSTREAM_H +#define SOLOUD_WAVSTREAM_H + +#include +#include "soloud.h" + +struct stb_vorbis; +#ifndef dr_flac_h +struct drflac; +#endif +#ifndef dr_mp3_h +struct drmp3; +#endif +#ifndef dr_wav_h +struct drwav; +#endif + +namespace SoLoud +{ + class WavStream; + class File; + + class WavStreamInstance : public AudioSourceInstance + { + WavStream *mParent; + unsigned int mOffset; + File *mFile; + union codec + { + stb_vorbis *mOgg; + drflac *mFlac; + drmp3 *mMp3; + drwav *mWav; + } mCodec; + unsigned int mOggFrameSize; + unsigned int mOggFrameOffset; + float **mOggOutputs; + public: + WavStreamInstance(WavStream *aParent); + virtual unsigned int getAudio(float *aBuffer, unsigned int aSamplesToRead, unsigned int aBufferSize); + virtual result rewind(); + virtual bool hasEnded(); + virtual ~WavStreamInstance(); + }; + + enum WAVSTREAM_FILETYPE + { + WAVSTREAM_WAV = 0, + WAVSTREAM_OGG = 1, + WAVSTREAM_FLAC = 2, + WAVSTREAM_MP3 = 3 + }; + + class WavStream : public AudioSource + { + result loadwav(File *fp); + result loadogg(File *fp); + result loadflac(File *fp); + result loadmp3(File *fp); + public: + int mFiletype; + char *mFilename; + File *mMemFile; + File *mStreamFile; + unsigned int mSampleCount; + + WavStream(); + virtual ~WavStream(); + result load(const char *aFilename); + result loadMem(unsigned char *aData, unsigned int aDataLen, bool aCopy = false, bool aTakeOwnership = true); + result loadToMem(const char *aFilename); + result loadFile(File *aFile); + result loadFileToMem(File *aFile); + virtual AudioSourceInstance *createInstance(); + time getLength(); + + public: + result parse(File *aFile); + }; +}; + +#endif \ No newline at end of file diff --git a/src/soloud/src/audiosource/monotone/soloud_monotone.cpp b/src/soloud/src/audiosource/monotone/soloud_monotone.cpp new file mode 100644 index 0000000..ee2593d --- /dev/null +++ b/src/soloud/src/audiosource/monotone/soloud_monotone.cpp @@ -0,0 +1,476 @@ +/* +MONOTONE module for SoLoud audio engine +Copyright (c) 2013-2015 Jari Komppa + +This software is provided 'as-is', without any express or implied +warranty. In no event will the authors be held liable for any damages +arising from the use of this software. + +Permission is granted to anyone to use this software for any purpose, +including commercial applications, and to alter it and redistribute it +freely, subject to the following restrictions: + + 1. The origin of this software must not be misrepresented; you must not + claim that you wrote the original software. If you use this software + in a product, an acknowledgment in the product documentation would be + appreciated but is not required. + + 2. Altered source versions must be plainly marked as such, and must not be + misrepresented as being the original software. + + 3. This notice may not be removed or altered from any source + distribution. +*/ + +#include +#include +#include +#include +#include "soloud_monotone.h" +#include "soloud_file.h" + +namespace SoLoud +{ + + MonotoneInstance::MonotoneInstance(Monotone *aParent) + { + mParent = aParent; + mOrder = 0; + mRow = 0; + mTempo = 4; + mSampleCount = 0; + mNextChannel = 0; + mRowTick = 0; + int i; + for (i = 0; i < 12; i++) + { + mOutput[i].mSamplePos = 0; + mOutput[i].mSamplePosInc = 0; + mOutput[i].mEnabled = i < mParent->mHardwareChannels && i < mParent->mSong.mTotalTracks; + mChannel[i].mEnabled = i < mParent->mSong.mTotalTracks; + mChannel[i].mActive = 0; + mChannel[i].mArpCounter = 0; + mChannel[i].mLastNote = 0; + mChannel[i].mPortamentoToNote = 0; + mChannel[i].mArp = 0; + mChannel[i].mVibrato = 0; + mChannel[i].mVibratoIndex = 0; + mChannel[i].mVibratoDepth = 1; + mChannel[i].mVibratoSpeed = 1; + } + } + + unsigned int MonotoneInstance::getAudio(float *aBuffer, unsigned int aSamplesToRead, unsigned int aBufferSize) + { + int samplesPerTick = (int)floor(mSamplerate / 60); + unsigned int i; + for (i = 0; i < 12; i++) + { + mOutput[i].mEnabled = i < (unsigned int)mParent->mHardwareChannels && i < (unsigned int)mParent->mSong.mTotalTracks; + } + for (i = 0; i < aSamplesToRead; i++) + { + if ((mSampleCount % samplesPerTick) == 0) + { + // new tick + mRowTick++; + if (mRowTick >= mTempo) + { + mRowTick = 0; + // Process row + int patternjump = mOrder + 1; + int rowjump = 0; + int dojump = 0; + int pattern = mParent->mSong.mOrder[mOrder]; + int j; + for (j = 0; j < mParent->mSong.mTotalTracks; j++) + { + unsigned int d = mParent->mSong.mPatternData[(pattern * 64 + mRow) * mParent->mSong.mTotalTracks + j]; + unsigned int note = (d >> 9) & 127; + unsigned int effect = (d >> 6) & 7; + unsigned int effectdata = (d)& 63; + unsigned int effectdata1 = (d >> 3) & 7; + unsigned int effectdata2 = (d >> 0) & 7; + + // by default, effects are off, and have to be set on every row. + mChannel[j].mPortamento = 0; + mChannel[j].mArp = 0; + mChannel[j].mVibrato = 0; + + int oldhz = mChannel[j].mFreq[0]; + + if (note == 127) + { + // noteEnd + mChannel[j].mActive = 0; + mChannel[j].mFreq[0] = 0; + mChannel[j].mFreq[1] = 0; + mChannel[j].mFreq[2] = 0; + mChannel[j].mPortamento = 0; + mChannel[j].mLastNote = 0; + } + else + if (note != 0) + { + mChannel[j].mActive = 1; + mChannel[j].mFreq[0] = mParent->mNotesHz[note * 8]; + mChannel[j].mFreq[1] = mChannel[j].mFreq[0]; + mChannel[j].mFreq[2] = mChannel[j].mFreq[0]; + mChannel[j].mPortamento = 0; + mChannel[j].mLastNote = note; + mChannel[j].mVibratoIndex = 0; + } + else + if (note == 0) + { + note = mChannel[j].mLastNote; + } + + switch (effect) + { + case 0x0: + // arp + mChannel[j].mFreq[1] = mParent->mNotesHz[(note + effectdata1) * 8]; + mChannel[j].mFreq[2] = mParent->mNotesHz[(note + effectdata2) * 8]; + if (effectdata1 || effectdata2) + mChannel[j].mArp = 1; + break; + case 0x1: + // portamento up + mChannel[j].mPortamento = effectdata; + break; + case 0x2: + // portamento down + mChannel[j].mPortamento = -(signed)effectdata; + break; + case 0x3: + // portamento to note + mChannel[j].mPortamentoToNote = mParent->mNotesHz[note * 8]; + if (oldhz != mChannel[j].mPortamentoToNote) + { + mChannel[j].mFreq[0] = oldhz; + mChannel[j].mPortamento = effectdata; + if (oldhz > mChannel[j].mPortamentoToNote) + mChannel[j].mPortamento *= -1; + } + else + { + mChannel[j].mPortamentoToNote = 0; + } + break; + case 0x4: + // vibrato + mChannel[j].mVibrato = 1; + if (effectdata2 != 0) mChannel[j].mVibratoDepth = effectdata2; + if (effectdata1 != 0) mChannel[j].mVibratoSpeed = effectdata1; + break; + case 0x5: + // pattern jump + patternjump = effectdata; + dojump = 1; + break; + case 0x6: + // row jump + rowjump = effectdata; + dojump = 1; + break; + case 0x7: + // set speed + mTempo = effectdata; + break; + } + } + + mRow++; + + if (dojump) + { + mRow = rowjump; + mOrder = patternjump; + } + + if (mRow == 64) + { + mRow = 0; + mOrder++; + if (mParent->mSong.mOrder[mOrder] == 0xff) + mOrder = 0; + } + } + + int j; + + // per tick events + for (j = 0; j < mParent->mSong.mTotalTracks; j++) + { + if (mChannel[j].mActive) + { + if (mChannel[j].mVibrato) + { + mChannel[j].mFreq[0] = mParent->mNotesHz[mChannel[j].mLastNote * 8 + (mParent->mVibTable[mChannel[j].mVibratoIndex] * mChannel[j].mVibratoDepth) / 64]; + mChannel[j].mVibratoIndex += mChannel[j].mVibratoSpeed; + mChannel[j].mVibratoIndex %= 32; + } + if (mChannel[j].mPortamento && mRowTick != 0) + { + mChannel[j].mFreq[0] += mChannel[j].mPortamento; + if (mChannel[j].mPortamentoToNote) + { + if ((mChannel[j].mPortamento > 0 && mChannel[j].mFreq[0] >= mChannel[j].mPortamentoToNote) || + (mChannel[j].mPortamento < 0 && mChannel[j].mFreq[0] <= mChannel[j].mPortamentoToNote)) + { + mChannel[j].mFreq[0] = mChannel[j].mPortamentoToNote; + mChannel[j].mPortamentoToNote = 0; + } + } + } + } + } + + // Channel fill + + int gotit = 0; + int tries = 0; + + for (j = 0; j < mParent->mHardwareChannels; j++) + mOutput[j].mSamplePosInc = 0; + + while (gotit < mParent->mHardwareChannels && tries < mParent->mSong.mTotalTracks) + { + if (mChannel[mNextChannel].mActive) + { + if (mChannel[mNextChannel].mArp) + { + mOutput[gotit].mSamplePosInc = 1.0f / (mSamplerate / mChannel[mNextChannel].mFreq[mChannel[mNextChannel].mArpCounter]); + mChannel[mNextChannel].mArpCounter++; + mChannel[mNextChannel].mArpCounter %= 3; + } + else + { + mOutput[gotit].mSamplePosInc = 1.0f / (mSamplerate / mChannel[mNextChannel].mFreq[0]); + } + gotit++; + } + mNextChannel++; + mNextChannel %= mParent->mSong.mTotalTracks; + tries++; + } + } + + aBuffer[i] = 0; + int j; + switch (mParent->mWaveform) + { + case Monotone::SAW: + for (j = 0; j < 12; j++) + { + if (mOutput[j].mEnabled) + { + float bleh = mOutput[j].mSamplePos + mOutput[j].mSamplePosInc; + mOutput[j].mSamplePos = bleh - (long)bleh; + // saw: + aBuffer[i] += ((mOutput[j].mSamplePos) - 0.5f) * 0.5f; + } + } + break; + case Monotone::SIN: + for (j = 0; j < 12; j++) + { + if (mOutput[j].mEnabled) + { + float bleh = mOutput[j].mSamplePos + mOutput[j].mSamplePosInc; + mOutput[j].mSamplePos = bleh - (long)bleh; + // sin: + aBuffer[i] += (float)sin(mOutput[j].mSamplePos * M_PI * 2) * 0.5f; + } + } + break; + case Monotone::SAWSIN: + for (j = 0; j < 12; j++) + { + if (mOutput[j].mEnabled) + { + float bleh = mOutput[j].mSamplePos + mOutput[j].mSamplePosInc; + mOutput[j].mSamplePos = bleh - (long)bleh; + // sawsin: + bleh = ((mOutput[j].mSamplePos) - 0.5f); + bleh *= (float)sin(mOutput[j].mSamplePos * M_PI * 2); + aBuffer[i] += bleh; + } + } + break; + case Monotone::SQUARE: + default: + for (j = 0; j < 12; j++) + { + if (mOutput[j].mEnabled) + { + float bleh = mOutput[j].mSamplePos + mOutput[j].mSamplePosInc; + mOutput[j].mSamplePos = bleh - (long)bleh; + // square: + aBuffer[i] += (mOutput[j].mSamplePos > 0.5f) ? 0.25f : -0.25f; + } + } + break; + } + + mSampleCount++; + } + return aSamplesToRead; + } + + bool MonotoneInstance::hasEnded() + { + return 0; + } + + Monotone::Monotone() + { + int i; + float temphz = 27.5f; + int IBO = 12; // Intervals Between Octaves + int IBN = 8; // Intervals Between Notes + float interval = 1.00724641222f;//exp(ln(2)/(IBO*IBN)); + int maxnote = 3 + (8 * IBO) + 1; + + mNotesHz[0] = 440; + mNotesHz[1 * IBN] = (int)floor(temphz + 0.5f); + + for (i = (1 * IBN) - 1; i > 1; i--) + { + temphz = temphz / interval; + if (temphz < 19) temphz = 19; // orig limitation, we could go lower though + mNotesHz[i] = (int)floor(temphz + 0.5f); + } + temphz = 27.5f; + for (i = (1 * IBN) + 1; i < maxnote * IBN; i++) + { + temphz = temphz * interval; + mNotesHz[i] = (int)floor(temphz + 0.5f); + } + + for (i = 0; i < 32; i++) + mVibTable[i] = (int)floor(0.5 + 64 * sin(i * M_PI / 32 * 2)); + + mSong.mTitle = 0; + mSong.mComment = 0; + mSong.mPatternData = 0; + + mBaseSamplerate = 44100; + mChannels = 1; + + mHardwareChannels = 1; + mWaveform = SQUARE; + } + + void Monotone::clear() + { + stop(); + + delete[] mSong.mTitle; + delete[] mSong.mComment; + delete[] mSong.mPatternData; + + mSong.mTitle = 0; + mSong.mComment = 0; + mSong.mPatternData = 0; + } + + Monotone::~Monotone() + { + stop(); + clear(); + } + + static char * mystrdup(const char *src) + { + int len = (int)strlen(src); + char * res = new char[len + 1]; + memcpy(res, src, len); + res[len] = 0; + return res; + } + + result Monotone::setParams(int aHardwareChannels, int aWaveform) + { + if (aHardwareChannels <= 0 || aWaveform < 0) + return INVALID_PARAMETER; + mHardwareChannels = aHardwareChannels; + mWaveform = aWaveform; + return SO_NO_ERROR; + } + + result Monotone::loadMem(unsigned char *aMem, unsigned int aLength, bool aCopy, bool aTakeOwnership) + { + MemoryFile mf; + int res = mf.openMem(aMem, aLength, aCopy, aTakeOwnership); + if (res != SO_NO_ERROR) + return res; + return loadFile(&mf); + } + + result Monotone::load(const char *aFilename) + { + DiskFile df; + int res = df.open(aFilename); + if (res != SO_NO_ERROR) + return res; + return loadFile(&df); + } + + result Monotone::loadFile(File *aFile) + { + if (aFile == NULL) + return INVALID_PARAMETER; + clear(); + int i; + unsigned char temp[200]; + aFile->read(temp, 9); + char magic[] = "\bMONOTONE"; + for (i = 0; i < 9; i++) + { + if (temp[i] != magic[i]) + { + return FILE_LOAD_FAILED; + } + } + aFile->read(temp, 41); + temp[temp[0] + 1] = 0; // pascal -> asciiz: pascal strings have length as first byte + mSong.mTitle = mystrdup((char*)temp + 1); + aFile->read(temp, 41); + temp[temp[0] + 1] = 0; // pascal -> asciiz: pascal strings have length as first byte + mSong.mComment = mystrdup((char*)temp + 1); + aFile->read(temp, 4); + mSong.mVersion = temp[0]; + mSong.mTotalPatterns = temp[1]; + mSong.mTotalTracks = temp[2]; + mSong.mCellSize = temp[3]; + if (mSong.mVersion != 1 || mSong.mCellSize != 2) + { + return FILE_LOAD_FAILED; + } + aFile->read(mSong.mOrder, 256); + int totalnotes = 64 * mSong.mTotalPatterns * mSong.mTotalTracks; + mSong.mPatternData = new unsigned int[totalnotes]; + for (i = 0; i < totalnotes; i++) + { + aFile->read(temp, 2); + unsigned int datavalue = temp[0] | (temp[1] << 8); + mSong.mPatternData[i] = datavalue; + //unsigned int note = (datavalue >> 9) & 127; + //unsigned int effect = (datavalue >> 6) & 7; + //unsigned int effectdata = (datavalue)& 63; + //unsigned int effectdata1 = (datavalue >> 3) & 7; + //unsigned int effectdata2 = (datavalue >> 0) & 7; + } + + return SO_NO_ERROR; + } + + + AudioSourceInstance * Monotone::createInstance() + { + return new MonotoneInstance(this); + } + +}; \ No newline at end of file diff --git a/src/soloud/src/audiosource/openmpt/soloud_openmpt.cpp b/src/soloud/src/audiosource/openmpt/soloud_openmpt.cpp new file mode 100644 index 0000000..6c64e51 --- /dev/null +++ b/src/soloud/src/audiosource/openmpt/soloud_openmpt.cpp @@ -0,0 +1,151 @@ +/* +Openmpt module for SoLoud audio engine +Copyright (c) 2016 Jari Komppa + +This software is provided 'as-is', without any express or implied +warranty. In no event will the authors be held liable for any damages +arising from the use of this software. + +Permission is granted to anyone to use this software for any purpose, +including commercial applications, and to alter it and redistribute it +freely, subject to the following restrictions: + + 1. The origin of this software must not be misrepresented; you must not + claim that you wrote the original software. If you use this software + in a product, an acknowledgment in the product documentation would be + appreciated but is not required. + + 2. Altered source versions must be plainly marked as such, and must not be + misrepresented as being the original software. + + 3. This notice may not be removed or altered from any source + distribution. +*/ + +#include +#include +#include "soloud_openmpt.h" +#include "soloud_file.h" + +extern "C" +{ + void * openmpt_module_create_from_memory(const void * filedata, size_t filesize, void *logfunc, void * user,void * ctls); + void openmpt_module_destroy(void * mod); + int openmpt_module_read_float_stereo(void * mod, int samplerate, size_t count, float * left, float * right); +} + +namespace SoLoud +{ + OpenmptInstance::OpenmptInstance(Openmpt *aParent) + { + mParent = aParent; + mModfile = openmpt_module_create_from_memory((const void*)mParent->mData, mParent->mDataLen, NULL, NULL, NULL); + mPlaying = mModfile != NULL; + } + + unsigned int OpenmptInstance::getAudio(float *aBuffer, unsigned int aSamplesToRead, unsigned int aBufferSize) + { + if (mModfile == NULL) + return 0; + int s = aSamplesToRead; + unsigned int outofs = 0; + + while (s && mPlaying) + { + int samples = 512; + if (s < samples) samples = s; + int res = openmpt_module_read_float_stereo(mModfile, (int)floor(mSamplerate), samples, aBuffer + outofs, aBuffer + outofs + aBufferSize); + if (res == 0) + { + mPlaying = 0; + return outofs; + } + outofs += samples; + s -= samples; + } + + return outofs; + } + + bool OpenmptInstance::hasEnded() + { + return !mPlaying; + } + + OpenmptInstance::~OpenmptInstance() + { + if (mModfile) + { + openmpt_module_destroy(mModfile); + } + mModfile = 0; + } + + result Openmpt::loadMem(unsigned char *aMem, unsigned int aLength, bool aCopy, bool aTakeOwnership) + { + MemoryFile mf; + int res = mf.openMem(aMem, aLength, aCopy, aTakeOwnership); + if (res != SO_NO_ERROR) + return res; + return loadFile(&mf); + } + + result Openmpt::load(const char *aFilename) + { + DiskFile df; + int res = df.open(aFilename); + if (res != SO_NO_ERROR) + return res; + return loadFile(&df); + } + + result Openmpt::loadFile(File *aFile) + { + if (mData) + { + delete[] mData; + } + + mDataLen = aFile->length(); + mData = new char[mDataLen]; + if (!mData) + { + mData = 0; + mDataLen = 0; + return OUT_OF_MEMORY; + } + aFile->read((unsigned char*)mData, mDataLen); + + void *mpf = openmpt_module_create_from_memory((const void*)mData, mDataLen, NULL, NULL, NULL); + if (!mpf) + { + delete[] mData; + mDataLen = 0; + return FILE_LOAD_FAILED; + } + openmpt_module_destroy(mpf); + return 0; + } + + Openmpt::Openmpt() + { + mBaseSamplerate = 44100; + mChannels = 2; + mData = 0; + mDataLen = 0; + } + + Openmpt::~Openmpt() + { + stop(); + delete[] mData; + mData = 0; + mDataLen = 0; + } + + AudioSourceInstance * Openmpt::createInstance() + { + return new OpenmptInstance(this); + } + +}; diff --git a/src/soloud/src/audiosource/openmpt/soloud_openmpt_dll.c b/src/soloud/src/audiosource/openmpt/soloud_openmpt_dll.c new file mode 100644 index 0000000..45ec003 --- /dev/null +++ b/src/soloud/src/audiosource/openmpt/soloud_openmpt_dll.c @@ -0,0 +1,132 @@ +/* +Openmpt module for SoLoud audio engine +Copyright (c) 2016 Jari Komppa + +This software is provided 'as-is', without any express or implied +warranty. In no event will the authors be held liable for any damages +arising from the use of this software. + +Permission is granted to anyone to use this software for any purpose, +including commercial applications, and to alter it and redistribute it +freely, subject to the following restrictions: + + 1. The origin of this software must not be misrepresented; you must not + claim that you wrote the original software. If you use this software + in a product, an acknowledgment in the product documentation would be + appreciated but is not required. + + 2. Altered source versions must be plainly marked as such, and must not be + misrepresented as being the original software. + + 3. This notice may not be removed or altered from any source + distribution. +*/ +#include +#if defined(_WIN32)||defined(_WIN64) +#define WINDOWS_VERSION +#endif // __WINDOWS__ +#include + +typedef void * (*dll_openmpt_module_create_from_memory)(const void * filedata, size_t filesize, void *logfunc, void * user, void * ctls); +typedef void (*dll_openmpt_module_destroy)(void * mod); +typedef int (*dll_openmpt_module_read_float_stereo)(void * mod, int samplerate, size_t count, float * left, float * right); + +static dll_openmpt_module_create_from_memory d_openmpt_module_create_from_memory = NULL; +static dll_openmpt_module_destroy d_openmpt_module_destroy = NULL; +static dll_openmpt_module_read_float_stereo d_openmpt_module_read_float_stereo = NULL; + +#ifdef WINDOWS_VERSION +#include + +static HMODULE openDll() +{ + HMODULE res = LoadLibraryA("libopenmpt.dll"); + return res; +} + +static void* getDllProc(HMODULE aDllHandle, const char *aProcName) +{ + return GetProcAddress(aDllHandle, aProcName); +} + +#elif defined(__vita__) + +static void * openDll() +{ + return NULL; +} + +static void* getDllProc(void * aLibrary, const char *aProcName) +{ + return NULL; +} + +#else +#include // dll functions + +static void * openDll() +{ + void * res; + res = dlopen("libopenmpt.so", RTLD_LAZY); + return res; +} + +static void* getDllProc(void * aLibrary, const char *aProcName) +{ + return dlsym(aLibrary, aProcName); +} + +#endif + +static int load_dll() +{ +#ifdef WINDOWS_VERSION + HMODULE dll = NULL; +#else + void * dll = NULL; +#endif + + if (d_openmpt_module_create_from_memory != NULL) + { + return 1; + } + + dll = openDll(); + + if (dll) + { + d_openmpt_module_create_from_memory = (dll_openmpt_module_create_from_memory)getDllProc(dll, "openmpt_module_create_from_memory"); + d_openmpt_module_destroy = (dll_openmpt_module_destroy)getDllProc(dll, "openmpt_module_destroy"); + d_openmpt_module_read_float_stereo = (dll_openmpt_module_read_float_stereo)getDllProc(dll, "openmpt_module_read_float_stereo"); + + + if (d_openmpt_module_create_from_memory && + d_openmpt_module_destroy && + d_openmpt_module_read_float_stereo) + { + return 1; + } + } + d_openmpt_module_create_from_memory = NULL; + return 0; +} + +void *openmpt_module_create_from_memory(const void * filedata, size_t filesize, void *logfunc, void * user, void * ctls) +{ + if (load_dll()) + return d_openmpt_module_create_from_memory(filedata, filesize, logfunc, user, ctls); + return 0; +} + +void openmpt_module_destroy(void * mod) +{ + if (load_dll()) + d_openmpt_module_destroy(mod); +} + +int openmpt_module_read_float_stereo(void * mod, int samplerate, size_t count, float * left, float * right) +{ + if (load_dll()) + return d_openmpt_module_read_float_stereo(mod, samplerate, count, left, right); + return 0; +} diff --git a/src/soloud/src/audiosource/sfxr/soloud_sfxr.cpp b/src/soloud/src/audiosource/sfxr/soloud_sfxr.cpp new file mode 100644 index 0000000..461f1a3 --- /dev/null +++ b/src/soloud/src/audiosource/sfxr/soloud_sfxr.cpp @@ -0,0 +1,633 @@ +/* +SFXR module for SoLoud audio engine +Copyright (c) 2014 Jari Komppa +Based on code (c) by Tomas Pettersson, re-licensed under zlib by permission + +This software is provided 'as-is', without any express or implied +warranty. In no event will the authors be held liable for any damages +arising from the use of this software. + +Permission is granted to anyone to use this software for any purpose, +including commercial applications, and to alter it and redistribute it +freely, subject to the following restrictions: + + 1. The origin of this software must not be misrepresented; you must not + claim that you wrote the original software. If you use this software + in a product, an acknowledgment in the product documentation would be + appreciated but is not required. + + 2. Altered source versions must be plainly marked as such, and must not be + misrepresented as being the original software. + + 3. This notice may not be removed or altered from any source + distribution. +*/ + +#include +#include +#include +#include "soloud_sfxr.h" +#include "soloud_file.h" + +namespace SoLoud +{ + + Prg::Prg() + { + } + + void Prg::srand(int aSeed) + { + index = 0; + int i; + for (i = 0; i < 16; i++) + state[i] = aSeed + i * aSeed + i; + } + + // WELL512 implementation, public domain by Chris Lomont + unsigned int Prg::rand() + { + unsigned int a, b, c, d; + a = state[index]; + c = state[(index+13)&15]; + b = a^c^(a<<16)^(c<<15); + c = state[(index+9)&15]; + c ^= (c>>11); + a = state[index] = b^c; + d = a^((a<<5)&0xDA442D24UL); + index = (index + 15)&15; + a = state[index]; + state[index] = a^b^d^(a<<2)^(b<<18)^(c<<28); + return state[index]; + } + + SfxrInstance::SfxrInstance(Sfxr *aParent) + { + mParent = aParent; + mParams = aParent->mParams; + mRand.srand(0x792352); + resetSample(false); + playing_sample = 1; + } + +#define frnd(x) ((float)(mRand.rand()%10001)/10000*(x)) + + unsigned int SfxrInstance::getAudio(float *aBuffer, unsigned int aSamplesToRead, unsigned int aBufferSize) + { + float *buffer = aBuffer; + unsigned int i; + for (i = 0; i < aSamplesToRead; i++) + { + rep_time++; + if (rep_limit != 0 && rep_time >= rep_limit) + { + rep_time = 0; + resetSample(true); + } + + // frequency envelopes/arpeggios + arp_time++; + if (arp_limit != 0 && arp_time >= arp_limit) + { + arp_limit = 0; + fperiod *= arp_mod; + } + fslide += fdslide; + fperiod *= fslide; + if (fperiod > fmaxperiod) + { + fperiod = fmaxperiod; + if (mParams.p_freq_limit > 0.0f) + { + if (mFlags & LOOPING) + { + resetSample(false); + } + else + { + playing_sample = false; + return i; + } + } + } + float rfperiod = (float)fperiod; + if (vib_amp > 0.0f) + { + vib_phase += vib_speed; + rfperiod = (float)(fperiod * (1.0 + sin(vib_phase) * vib_amp)); + } + period = (int)rfperiod; + if (period < 8) period = 8; + square_duty += square_slide; + if (square_duty < 0.0f) square_duty = 0.0f; + if (square_duty > 0.5f) square_duty = 0.5f; + // volume envelope + env_time++; + if (env_time > env_length[env_stage]) + { + env_time = 0; + env_stage++; + if (env_stage == 3) + { + if (mFlags & LOOPING) + { + resetSample(false); + } + else + { + playing_sample = false; + return i; + } + } + } + if (env_stage == 0) + { + if (env_length[0]) + { + env_vol = (float)env_time / env_length[0]; + } + else + { + env_vol = 0; + } + } + if (env_stage == 1) + { + if (env_length[1]) + { + env_vol = 1.0f + (float)pow(1.0f - (float)env_time / env_length[1], 1.0f) * 2.0f * mParams.p_env_punch; + } + else + { + env_vol = 0; + } + } + if (env_stage == 2) + { + if (env_length[2]) + { + env_vol = 1.0f - (float)env_time / env_length[2]; + } + else + { + env_vol = 0; + } + } + + // phaser step + fphase += fdphase; + iphase = abs((int)fphase); + if (iphase > 1023) iphase = 1023; + + if (flthp_d != 0.0f) + { + flthp *= flthp_d; + if (flthp < 0.00001f) flthp = 0.00001f; + if (flthp > 0.1f) flthp = 0.1f; + } + + float ssample = 0.0f; + for (int si = 0; si < 8; si++) // 8x supersampling + { + float sample = 0.0f; + phase++; + if (phase >= period) + { + phase %= period; + if (mParams.wave_type == 3) + { + for (int k = 0; k < 32; k++) + { + noise_buffer[k] = frnd(2.0f) - 1.0f; + } + } + } + // base waveform + float fp = (float)phase / period; + switch (mParams.wave_type) + { + case 0: // square + if (fp < square_duty) + { + sample = 0.5f; + } + else + { + sample = -0.5f; + } + break; + case 1: // sawtooth + sample = 1.0f - fp * 2; + break; + case 2: // sine + sample = (float)sin(fp * 2 * M_PI); + break; + case 3: // noise + sample = noise_buffer[phase * 32 / period]; + break; + } + // lp filter + float pp = fltp; + fltw *= fltw_d; + if (fltw < 0.0f) fltw = 0.0f; + if (fltw > 0.1f) fltw = 0.1f; + if (mParams.p_lpf_freq != 1.0f) + { + fltdp += (sample - fltp) * fltw; + fltdp -= fltdp * fltdmp; + } + else + { + fltp = sample; + fltdp = 0.0f; + } + fltp += fltdp; + // hp filter + fltphp += fltp - pp; + fltphp -= fltphp * flthp; + sample = fltphp; + // phaser + phaser_buffer[ipp & 1023] = sample; + sample += phaser_buffer[(ipp - iphase + 1024) & 1023]; + ipp = (ipp + 1) & 1023; + // final accumulation and envelope application + ssample += sample*env_vol; + } + ssample = ssample / 8 * mParams.master_vol; + + ssample *= 2.0f * mParams.sound_vol; + + if (buffer != NULL) + { + if (ssample > 1.0f) ssample = 1.0f; + if (ssample < -1.0f) ssample = -1.0f; + *buffer = ssample; + buffer++; + } + } + return aSamplesToRead; + } + + bool SfxrInstance::hasEnded() + { + return !playing_sample; + } + + void SfxrInstance::resetSample(bool aRestart) + { + if(!aRestart) + phase=0; + fperiod=100.0/(mParams.p_base_freq*mParams.p_base_freq+0.001); + period=(int)fperiod; + fmaxperiod=100.0/(mParams.p_freq_limit*mParams.p_freq_limit+0.001); + fslide=1.0-pow((double)mParams.p_freq_ramp, 3.0)*0.01; + fdslide=-pow((double)mParams.p_freq_dramp, 3.0)*0.000001; + square_duty=0.5f-mParams.p_duty*0.5f; + square_slide=-mParams.p_duty_ramp*0.00005f; + if(mParams.p_arp_mod>=0.0f) + arp_mod=1.0-pow((double)mParams.p_arp_mod, 2.0)*0.9; + else + arp_mod=1.0+pow((double)mParams.p_arp_mod, 2.0)*10.0; + arp_time=0; + arp_limit=(int)(pow(1.0f-mParams.p_arp_speed, 2.0f)*20000+32); + if(mParams.p_arp_speed==1.0f) + arp_limit=0; + if(!aRestart) + { + // reset filter + fltp=0.0f; + fltdp=0.0f; + fltw=(float)pow(mParams.p_lpf_freq, 3.0f)*0.1f; + fltw_d=1.0f+mParams.p_lpf_ramp*0.0001f; + fltdmp=5.0f/(1.0f+(float)pow(mParams.p_lpf_resonance, 2.0f)*20.0f)*(0.01f+fltw); + if(fltdmp>0.8f) fltdmp=0.8f; + fltphp=0.0f; + flthp=(float)pow(mParams.p_hpf_freq, 2.0f)*0.1f; + flthp_d=(float)(1.0+mParams.p_hpf_ramp*0.0003f); + // reset vibrato + vib_phase=0.0f; + vib_speed=(float)pow(mParams.p_vib_speed, 2.0f)*0.01f; + vib_amp=mParams.p_vib_strength*0.5f; + // reset envelope + env_vol=0.0f; + env_stage=0; + env_time=0; + env_length[0]=(int)(mParams.p_env_attack*mParams.p_env_attack*100000.0f); + env_length[1]=(int)(mParams.p_env_sustain*mParams.p_env_sustain*100000.0f); + env_length[2]=(int)(mParams.p_env_decay*mParams.p_env_decay*100000.0f); + + fphase=(float)pow(mParams.p_pha_offset, 2.0f)*1020.0f; + if(mParams.p_pha_offset<0.0f) fphase=-fphase; + fdphase=(float)pow(mParams.p_pha_ramp, 2.0f)*1.0f; + if(mParams.p_pha_ramp<0.0f) fdphase=-fdphase; + iphase=abs((int)fphase); + ipp=0; + for(int i=0;i<1024;i++) + phaser_buffer[i]=0.0f; + + for(int i=0;i<32;i++) + noise_buffer[i]=frnd(2.0f)-1.0f; + + rep_time=0; + rep_limit=(int)(pow(1.0f-mParams.p_repeat_speed, 2.0f)*20000+32); + if(mParams.p_repeat_speed==0.0f) + rep_limit=0; + } + } + + +#define rnd(n) (mRand.rand()%((n)+1)) +#undef frnd +#define frnd(x) ((float)(mRand.rand()%10001)/10000*(x)) + + + result Sfxr::loadPreset(int aPresetNo, int aRandSeed) + { + if (aPresetNo < 0 || aPresetNo > 6) + return INVALID_PARAMETER; + + resetParams(); + mRand.srand(aRandSeed); + switch(aPresetNo) + { + case 0: // pickup/coin + mParams.p_base_freq=0.4f+frnd(0.5f); + mParams.p_env_attack=0.0f; + mParams.p_env_sustain=frnd(0.1f); + mParams.p_env_decay=0.1f+frnd(0.4f); + mParams.p_env_punch=0.3f+frnd(0.3f); + if(rnd(1)) + { + mParams.p_arp_speed=0.5f+frnd(0.2f); + mParams.p_arp_mod=0.2f+frnd(0.4f); + } + break; + case 1: // laser/shoot + mParams.wave_type=rnd(2); + if(mParams.wave_type==2 && rnd(1)) + mParams.wave_type=rnd(1); + mParams.p_base_freq=0.5f+frnd(0.5f); + mParams.p_freq_limit=mParams.p_base_freq-0.2f-frnd(0.6f); + if(mParams.p_freq_limit<0.2f) mParams.p_freq_limit=0.2f; + mParams.p_freq_ramp=-0.15f-frnd(0.2f); + if(rnd(2)==0) + { + mParams.p_base_freq=0.3f+frnd(0.6f); + mParams.p_freq_limit=frnd(0.1f); + mParams.p_freq_ramp=-0.35f-frnd(0.3f); + } + if(rnd(1)) + { + mParams.p_duty=frnd(0.5f); + mParams.p_duty_ramp=frnd(0.2f); + } + else + { + mParams.p_duty=0.4f+frnd(0.5f); + mParams.p_duty_ramp=-frnd(0.7f); + } + mParams.p_env_attack=0.0f; + mParams.p_env_sustain=0.1f+frnd(0.2f); + mParams.p_env_decay=frnd(0.4f); + if(rnd(1)) + mParams.p_env_punch=frnd(0.3f); + if(rnd(2)==0) + { + mParams.p_pha_offset=frnd(0.2f); + mParams.p_pha_ramp=-frnd(0.2f); + } + if(rnd(1)) + mParams.p_hpf_freq=frnd(0.3f); + break; + case 2: // explosion + mParams.wave_type=3; + if(rnd(1)) + { + mParams.p_base_freq=0.1f+frnd(0.4f); + mParams.p_freq_ramp=-0.1f+frnd(0.4f); + } + else + { + mParams.p_base_freq=0.2f+frnd(0.7f); + mParams.p_freq_ramp=-0.2f-frnd(0.2f); + } + mParams.p_base_freq*=mParams.p_base_freq; + if(rnd(4)==0) + mParams.p_freq_ramp=0.0f; + if(rnd(2)==0) + mParams.p_repeat_speed=0.3f+frnd(0.5f); + mParams.p_env_attack=0.0f; + mParams.p_env_sustain=0.1f+frnd(0.3f); + mParams.p_env_decay=frnd(0.5f); + if(rnd(1)==0) + { + mParams.p_pha_offset=-0.3f+frnd(0.9f); + mParams.p_pha_ramp=-frnd(0.3f); + } + mParams.p_env_punch=0.2f+frnd(0.6f); + if(rnd(1)) + { + mParams.p_vib_strength=frnd(0.7f); + mParams.p_vib_speed=frnd(0.6f); + } + if(rnd(2)==0) + { + mParams.p_arp_speed=0.6f+frnd(0.3f); + mParams.p_arp_mod=0.8f-frnd(1.6f); + } + break; + case 3: // powerup + if(rnd(1)) + mParams.wave_type=1; + else + mParams.p_duty=frnd(0.6f); + if(rnd(1)) + { + mParams.p_base_freq=0.2f+frnd(0.3f); + mParams.p_freq_ramp=0.1f+frnd(0.4f); + mParams.p_repeat_speed=0.4f+frnd(0.4f); + } + else + { + mParams.p_base_freq=0.2f+frnd(0.3f); + mParams.p_freq_ramp=0.05f+frnd(0.2f); + if(rnd(1)) + { + mParams.p_vib_strength=frnd(0.7f); + mParams.p_vib_speed=frnd(0.6f); + } + } + mParams.p_env_attack=0.0f; + mParams.p_env_sustain=frnd(0.4f); + mParams.p_env_decay=0.1f+frnd(0.4f); + break; + case 4: // hit/hurt + mParams.wave_type=rnd(2); + if(mParams.wave_type==2) + mParams.wave_type=3; + if(mParams.wave_type==0) + mParams.p_duty=frnd(0.6f); + mParams.p_base_freq=0.2f+frnd(0.6f); + mParams.p_freq_ramp=-0.3f-frnd(0.4f); + mParams.p_env_attack=0.0f; + mParams.p_env_sustain=frnd(0.1f); + mParams.p_env_decay=0.1f+frnd(0.2f); + if(rnd(1)) + mParams.p_hpf_freq=frnd(0.3f); + break; + case 5: // jump + mParams.wave_type=0; + mParams.p_duty=frnd(0.6f); + mParams.p_base_freq=0.3f+frnd(0.3f); + mParams.p_freq_ramp=0.1f+frnd(0.2f); + mParams.p_env_attack=0.0f; + mParams.p_env_sustain=0.1f+frnd(0.3f); + mParams.p_env_decay=0.1f+frnd(0.2f); + if(rnd(1)) + mParams.p_hpf_freq=frnd(0.3f); + if(rnd(1)) + mParams.p_lpf_freq=1.0f-frnd(0.6f); + break; + case 6: // blip/select + mParams.wave_type=rnd(1); + if(mParams.wave_type==0) + mParams.p_duty=frnd(0.6f); + mParams.p_base_freq=0.2f+frnd(0.4f); + mParams.p_env_attack=0.0f; + mParams.p_env_sustain=0.1f+frnd(0.1f); + mParams.p_env_decay=frnd(0.2f); + mParams.p_hpf_freq=0.1f; + break; + } + return 0; + } + + void Sfxr::resetParams() + { + mParams.wave_type=0; + + mParams.p_base_freq=0.3f; + mParams.p_freq_limit=0.0f; + mParams.p_freq_ramp=0.0f; + mParams.p_freq_dramp=0.0f; + mParams.p_duty=0.0f; + mParams.p_duty_ramp=0.0f; + + mParams.p_vib_strength=0.0f; + mParams.p_vib_speed=0.0f; + mParams.p_vib_delay=0.0f; + + mParams.p_env_attack=0.0f; + mParams.p_env_sustain=0.3f; + mParams.p_env_decay=0.4f; + mParams.p_env_punch=0.0f; + + mParams.filter_on=false; + mParams.p_lpf_resonance=0.0f; + mParams.p_lpf_freq=1.0f; + mParams.p_lpf_ramp=0.0f; + mParams.p_hpf_freq=0.0f; + mParams.p_hpf_ramp=0.0f; + + mParams.p_pha_offset=0.0f; + mParams.p_pha_ramp=0.0f; + + mParams.p_repeat_speed=0.0f; + + mParams.p_arp_speed=0.0f; + mParams.p_arp_mod=0.0f; + + mParams.master_vol=0.05f; + mParams.sound_vol=0.5f; + } + + result Sfxr::loadParamsMem(unsigned char *aMem, unsigned int aLength, bool aCopy, bool aTakeOwnership) + { + MemoryFile mf; + int res = mf.openMem(aMem, aLength, aCopy, aTakeOwnership); + if (res != SO_NO_ERROR) + return res; + return loadParamsFile(&mf); + } + + result Sfxr::loadParams(const char *aFilename) + { + DiskFile df; + int res = df.open(aFilename); + if (res != SO_NO_ERROR) + return res; + return loadParamsFile(&df); + } + + result Sfxr::loadParamsFile(File *aFile) + { + int version=0; + aFile->read((unsigned char*)&version, sizeof(int)); + if(version!=100 && version!=101 && version!=102) + { + return FILE_LOAD_FAILED; + } + + aFile->read((unsigned char*)&mParams.wave_type, sizeof(int)); + + + mParams.sound_vol=0.5f; + if(version==102) + aFile->read((unsigned char*)&mParams.sound_vol, sizeof(float)); + + aFile->read((unsigned char*)&mParams.p_base_freq, sizeof(float)); + aFile->read((unsigned char*)&mParams.p_freq_limit, sizeof(float)); + aFile->read((unsigned char*)&mParams.p_freq_ramp, sizeof(float)); + if(version>=101) + aFile->read((unsigned char*)&mParams.p_freq_dramp, sizeof(float)); + aFile->read((unsigned char*)&mParams.p_duty, sizeof(float)); + aFile->read((unsigned char*)&mParams.p_duty_ramp, sizeof(float)); + + aFile->read((unsigned char*)&mParams.p_vib_strength, sizeof(float)); + aFile->read((unsigned char*)&mParams.p_vib_speed, sizeof(float)); + aFile->read((unsigned char*)&mParams.p_vib_delay, sizeof(float)); + + aFile->read((unsigned char*)&mParams.p_env_attack, sizeof(float)); + aFile->read((unsigned char*)&mParams.p_env_sustain, sizeof(float)); + aFile->read((unsigned char*)&mParams.p_env_decay, sizeof(float)); + aFile->read((unsigned char*)&mParams.p_env_punch, sizeof(float)); + + aFile->read((unsigned char*)&mParams.filter_on, sizeof(bool)); + aFile->read((unsigned char*)&mParams.p_lpf_resonance, sizeof(float)); + aFile->read((unsigned char*)&mParams.p_lpf_freq, sizeof(float)); + aFile->read((unsigned char*)&mParams.p_lpf_ramp, sizeof(float)); + aFile->read((unsigned char*)&mParams.p_hpf_freq, sizeof(float)); + aFile->read((unsigned char*)&mParams.p_hpf_ramp, sizeof(float)); + + aFile->read((unsigned char*)&mParams.p_pha_offset, sizeof(float)); + aFile->read((unsigned char*)&mParams.p_pha_ramp, sizeof(float)); + + aFile->read((unsigned char*)&mParams.p_repeat_speed, sizeof(float)); + + if(version>=101) + { + aFile->read((unsigned char*)&mParams.p_arp_speed, sizeof(float)); + aFile->read((unsigned char*)&mParams.p_arp_mod, sizeof(float)); + } + + return 0; + } + + Sfxr::~Sfxr() + { + stop(); + } + + Sfxr::Sfxr() + { + resetParams(); + mBaseSamplerate = 44100; + } + + + AudioSourceInstance * Sfxr::createInstance() + { + return new SfxrInstance(this); + } + +}; \ No newline at end of file diff --git a/src/soloud/src/audiosource/speech/Elements.def b/src/soloud/src/audiosource/speech/Elements.def new file mode 100644 index 0000000..cdeabbd --- /dev/null +++ b/src/soloud/src/audiosource/speech/Elements.def @@ -0,0 +1,1659 @@ +/*mName, mRK, mDU, mUD, mFont, mDict, mIpa, mFeat, interpolators*/ +/* (mSteady, mFixed, mProportion, mExtDelay, mIntDelay) */ +{"END", 31, 5, 5,0x00,NULL,NULL,0, + { + { 270, 135, 50, 3, 3}, /* ELM_FN 0 */ + { 490, 0, 100, 0, 0}, /* ELM_F1 0 */ + { 1480, 0, 100, 0, 0}, /* ELM_F2 0 */ + { 2500, 0, 100, 0, 0}, /* ELM_F3 0 */ + { 60, 0, 100, 0, 0}, /* ELM_B1 0 */ + { 90, 0, 100, 0, 0}, /* ELM_B2 0 */ + { 150, 0, 100, 0, 0}, /* ELM_B3 0 */ + { -30, -10.5, 100, 3, 0}, /* ELM_AN -10.5 */ + { -30, -10.5, 100, 3, 0}, /* ELM_A1 -10.5 */ + { -30, -10.5, 100, 3, 0}, /* ELM_A2 -10.5 */ + { -30, -10.5, 100, 3, 0}, /* ELM_A3 -10.5 */ + { -30, -10.5, 100, 3, 0}, /* ELM_A4 -10.5 */ + { -30, 0, 100, 3, 0}, /* ELM_A5 0 */ + { -30, 0, 100, 3, 0}, /* ELM_A6 0 */ + { -30, 0, 100, 3, 0}, /* ELM_AB 0 */ + { 0, 0, 50, 0, 0}, /* ELM_AV 0 */ + { 0, 0, 50, 0, 0}, /* ELM_AVC 0 */ + { 0, 0, 50, 0, 0}, /* ELM_ASP 0 */ + { 0, 0, 50, 0, 0} /* ELM_AF 0 */ + } +}, + +{"Q", 29, 6, 6,0x00,NULL,NULL,0, + { + { 270, 135, 50, 3, 3}, /* ELM_FN 0 */ + { 490, 0, 100, 3, 3}, /* ELM_F1 0 */ + { 1480, 0, 100, 3, 3}, /* ELM_F2 0 */ + { 2500, 0, 100, 3, 3}, /* ELM_F3 0 */ + { 60, 0, 100, 3, 3}, /* ELM_B1 0 */ + { 90, 0, 100, 3, 3}, /* ELM_B2 0 */ + { 150, 0, 100, 3, 3}, /* ELM_B3 0 */ + { -30, -10.5, 100, 3, 0}, /* ELM_AN -10.5 */ + { -30, -10.5, 100, 3, 0}, /* ELM_A1 -10.5 */ + { -30, -10.5, 100, 3, 0}, /* ELM_A2 -10.5 */ + { -30, -10.5, 100, 3, 0}, /* ELM_A3 -10.5 */ + { -30, -10.5, 100, 3, 0}, /* ELM_A4 -10.5 */ + { -30, 0, 100, 3, 0}, /* ELM_A5 0 */ + { -30, 0, 100, 3, 0}, /* ELM_A6 0 */ + { -30, 0, 100, 3, 0}, /* ELM_AB 0 */ + { 0, 0, 50, 0, 0}, /* ELM_AV 0 */ + { 0, 0, 50, 0, 0}, /* ELM_AVC 0 */ + { 0, 0, 50, 0, 0}, /* ELM_ASP 0 */ + { 0, 0, 50, 0, 0} /* ELM_AF 0 */ + } +}, + +{"P", 23, 8, 8,0x70,"p","p",ELM_FEATURE_BLB|ELM_FEATURE_STP|ELM_FEATURE_VLS, + { + { 270, 135, 50, 0, 0}, /* ELM_FN 0 */ + { 190, 110, 50, 2, 2}, /* ELM_F1 15 */ + { 760, 350, 50, 2, 2}, /* ELM_F2 -30 */ + { 2500, 0, 100, 0, 2}, /* ELM_F3 0 */ + { 60, 30, 50, 2, 2}, /* ELM_B1 0 */ + { 90, 45, 50, 2, 2}, /* ELM_B2 0 */ + { 150, 0, 100, 0, 2}, /* ELM_B3 0 */ + { -30, 0, 100, 0, 0}, /* ELM_AN 0 */ + { -30, 0, 100, 0, 0}, /* ELM_A1 0 */ + { -30, 0, 100, 0, 0}, /* ELM_A2 0 */ + { -30, 0, 100, 0, 0}, /* ELM_A3 0 */ + { -30, 0, 100, 0, 0}, /* ELM_A4 0 */ + { -30, 0, 100, 0, 0}, /* ELM_A5 0 */ + { -30, 0, 100, 0, 0}, /* ELM_A6 0 */ + { -30, 0, 100, 0, 0}, /* ELM_AB 0 */ + { 0, 0, 50, 0, 0}, /* ELM_AV 0 */ + { 0, 0, 50, 0, 0}, /* ELM_AVC 0 */ + { 60, 30, 50, 0, 0}, /* ELM_ASP 0 */ + { 60, 30, 50, 0, 0} /* ELM_AF 0 */ + } +}, + +{"PY", 29, 1, 1,0x70,"p","p",ELM_FEATURE_BLB|ELM_FEATURE_STP|ELM_FEATURE_VLS, + { + { 270, 135, 50, 0, 0}, /* ELM_FN 0 */ + { 190, 0, 100, 0, 0}, /* ELM_F1 0 */ + { 760, 0, 100, 0, 0}, /* ELM_F2 0 */ + { 2500, 0, 100, 0, 0}, /* ELM_F3 0 */ + { 60, 0, 100, 0, 0}, /* ELM_B1 0 */ + { 90, 0, 100, 0, 0}, /* ELM_B2 0 */ + { 150, 0, 100, 0, 0}, /* ELM_B3 0 */ + { -30, 0, 100, 0, 0}, /* ELM_AN 0 */ + { 24.5, 0, 100, 0, 0}, /* ELM_A1 0 */ + { 49, 0, 100, 0, 0}, /* ELM_A2 0 */ + { 43.75, 0, 100, 0, 0}, /* ELM_A3 0 */ + { 38.5, 0, 100, 0, 0}, /* ELM_A4 0 */ + { -30, 0, 100, 0, 0}, /* ELM_A5 0 */ + { -30, 0, 100, 0, 0}, /* ELM_A6 0 */ + { -30, 0, 100, 0, 0}, /* ELM_AB 0 */ + { 0, 0, 50, 0, 0}, /* ELM_AV 0 */ + { 0, 0, 50, 0, 0}, /* ELM_AVC 0 */ + { 60, 30, 50, 0, 0}, /* ELM_ASP 0 */ + { 60, 30, 50, 0, 0} /* ELM_AF 0 */ + } +}, + +{"PZ", 23, 2, 2,0x70,"p","p",ELM_FEATURE_BLB|ELM_FEATURE_STP|ELM_FEATURE_VLS, + { + { 270, 135, 50, 0, 0}, /* ELM_FN 0 */ + { 190, 110, 50, 2, 2}, /* ELM_F1 15 */ + { 760, 350, 50, 2, 2}, /* ELM_F2 -30 */ + { 2500, 0, 100, 2, 2}, /* ELM_F3 0 */ + { 60, 30, 50, 2, 2}, /* ELM_B1 0 */ + { 90, 45, 50, 2, 2}, /* ELM_B2 0 */ + { 150, 0, 100, 2, 2}, /* ELM_B3 0 */ + { -30, 0, 100, 0, 0}, /* ELM_AN 0 */ + { 24.5, 0, 100, 0, 0}, /* ELM_A1 0 */ + { 38.5, 0, 100, 0, 0}, /* ELM_A2 0 */ + { 33.25, 0, 100, 0, 0}, /* ELM_A3 0 */ + { 28, 0, 100, 0, 0}, /* ELM_A4 0 */ + { -30, 0, 100, 0, 0}, /* ELM_A5 0 */ + { -30, 0, 100, 0, 0}, /* ELM_A6 0 */ + { -30, 0, 100, 0, 0}, /* ELM_AB 0 */ + { 0, 0, 50, 0, 0}, /* ELM_AV 0 */ + { 0, 0, 50, 0, 0}, /* ELM_AVC 0 */ + { 60, 30, 50, 0, 0}, /* ELM_ASP 0 */ + { 60, 30, 50, 0, 0} /* ELM_AF 0 */ + } +}, + +{"T", 23, 6, 6,0x74,"t","t",ELM_FEATURE_ALV|ELM_FEATURE_STP|ELM_FEATURE_VLS, + { + { 270, 135, 50, 0, 0}, /* ELM_FN 0 */ + { 190, 110, 50, 2, 2}, /* ELM_F1 15 */ + { 1780, 950, 50, 2, 2}, /* ELM_F2 60 */ + { 2680, 2680, 0, 0, 2}, /* ELM_F3 0 */ + { 60, 30, 50, 2, 2}, /* ELM_B1 0 */ + { 90, 45, 50, 2, 2}, /* ELM_B2 0 */ + { 150, 150, 0, 0, 2}, /* ELM_B3 0 */ + { -30, 0, 100, 0, 0}, /* ELM_AN 0 */ + { -30, 0, 100, 0, 0}, /* ELM_A1 0 */ + { -30, 0, 100, 0, 0}, /* ELM_A2 0 */ + { -30, 0, 100, 0, 0}, /* ELM_A3 0 */ + { -30, 0, 100, 0, 0}, /* ELM_A4 0 */ + { -30, 0, 100, 0, 0}, /* ELM_A5 0 */ + { -30, 0, 100, 0, 0}, /* ELM_A6 0 */ + { -30, 0, 100, 0, 0}, /* ELM_AB 0 */ + { 0, 0, 50, 0, 0}, /* ELM_AV 0 */ + { 0, 0, 50, 0, 0}, /* ELM_AVC 0 */ + { 60, 30, 50, 0, 0}, /* ELM_ASP 0 */ + { 60, 30, 50, 0, 0} /* ELM_AF 0 */ + } +}, + +{"TY", 29, 1, 1,0x74,"t","t",ELM_FEATURE_ALV|ELM_FEATURE_STP|ELM_FEATURE_VLS, + { + { 270, 135, 50, 0, 0}, /* ELM_FN 0 */ + { 190, 0, 100, 0, 0}, /* ELM_F1 0 */ + { 1780, 0, 100, 0, 0}, /* ELM_F2 0 */ + { 2680, 0, 100, 0, 0}, /* ELM_F3 0 */ + { 60, 0, 100, 0, 0}, /* ELM_B1 0 */ + { 90, 0, 100, 0, 0}, /* ELM_B2 0 */ + { 150, 0, 100, 0, 0}, /* ELM_B3 0 */ + { -30, 0, 100, 0, 0}, /* ELM_AN 0 */ + { -30, 0, 100, 0, 0}, /* ELM_A1 0 */ + { -30, 0, 100, 0, 0}, /* ELM_A2 0 */ + { 38.5, 0, 100, 0, 0}, /* ELM_A3 0 */ + { 50.75, 0, 100, 0, 0}, /* ELM_A4 0 */ + { -30, 0, 100, 0, 0}, /* ELM_A5 0 */ + { -30, 0, 100, 0, 0}, /* ELM_A6 0 */ + { -30, 0, 100, 0, 0}, /* ELM_AB 0 */ + { 0, 0, 50, 0, 0}, /* ELM_AV 0 */ + { 0, 0, 50, 0, 0}, /* ELM_AVC 0 */ + { 60, 30, 50, 0, 0}, /* ELM_ASP 0 */ + { 60, 30, 50, 0, 0} /* ELM_AF 0 */ + } +}, + +{"TZ", 23, 2, 2,0x74,"t","t",ELM_FEATURE_ALV|ELM_FEATURE_STP|ELM_FEATURE_VLS, + { + { 270, 135, 50, 0, 0}, /* ELM_FN 0 */ + { 190, 110, 50, 2, 1}, /* ELM_F1 15 */ + { 1780, 950, 50, 2, 1}, /* ELM_F2 60 */ + { 2680, 2680, 0, 2, 0}, /* ELM_F3 0 */ + { 60, 30, 50, 2, 1}, /* ELM_B1 0 */ + { 90, 45, 50, 2, 1}, /* ELM_B2 0 */ + { 150, 150, 0, 2, 0}, /* ELM_B3 0 */ + { -30, 0, 100, 0, 0}, /* ELM_AN 0 */ + { -30, 0, 100, 0, 0}, /* ELM_A1 0 */ + { -30, 0, 100, 0, 0}, /* ELM_A2 0 */ + { 28, 0, 100, 0, 0}, /* ELM_A3 0 */ + { 40.25, 0, 100, 0, 0}, /* ELM_A4 0 */ + { -30, 0, 100, 0, 0}, /* ELM_A5 0 */ + { -30, 0, 100, 0, 0}, /* ELM_A6 0 */ + { -30, 0, 100, 0, 0}, /* ELM_AB 0 */ + { 0, 0, 50, 0, 0}, /* ELM_AV 0 */ + { 0, 0, 50, 0, 0}, /* ELM_AVC 0 */ + { 60, 30, 50, 0, 0}, /* ELM_ASP 0 */ + { 60, 30, 50, 0, 0} /* ELM_AF 0 */ + } +}, + +{"K", 23, 8, 8,0x6B,"k","k",ELM_FEATURE_STP|ELM_FEATURE_VEL|ELM_FEATURE_VLS, + { + { 270, 135, 50, 0, 0}, /* ELM_FN 0 */ + { 190, 110, 50, 3, 3}, /* ELM_F1 15 */ + { 1480, 1550, 50, 3, 3}, /* ELM_F2 810 */ + { 2620, 1580, 50, 3, 3}, /* ELM_F3 270 */ + { 60, 30, 50, 3, 3}, /* ELM_B1 0 */ + { 90, 45, 50, 3, 3}, /* ELM_B2 0 */ + { 150, 75, 50, 3, 3}, /* ELM_B3 0 */ + { -30, 0, 100, 0, 0}, /* ELM_AN 0 */ + { -30, 0, 100, 0, 0}, /* ELM_A1 0 */ + { -30, 0, 100, 0, 0}, /* ELM_A2 0 */ + { -30, 0, 100, 0, 0}, /* ELM_A3 0 */ + { -30, 0, 100, 0, 0}, /* ELM_A4 0 */ + { -30, 0, 100, 0, 0}, /* ELM_A5 0 */ + { -30, 0, 100, 0, 0}, /* ELM_A6 0 */ + { -30, 0, 100, 0, 0}, /* ELM_AB 0 */ + { 0, 0, 50, 0, 0}, /* ELM_AV 0 */ + { 0, 0, 50, 0, 0}, /* ELM_AVC 0 */ + { 60, 30, 50, 0, 0}, /* ELM_ASP 0 */ + { 60, 30, 50, 0, 0} /* ELM_AF 0 */ + } +}, + +{"KY", 29, 1, 1,0x6B,"k","k",ELM_FEATURE_STP|ELM_FEATURE_VEL|ELM_FEATURE_VLS, + { + { 270, 135, 50, 0, 0}, /* ELM_FN 0 */ + { 190, 0, 100, 0, 0}, /* ELM_F1 0 */ + { 1480, 0, 100, 0, 0}, /* ELM_F2 0 */ + { 2620, 0, 100, 0, 0}, /* ELM_F3 0 */ + { 60, 0, 100, 0, 0}, /* ELM_B1 0 */ + { 90, 0, 100, 0, 0}, /* ELM_B2 0 */ + { 150, 0, 100, 0, 0}, /* ELM_B3 0 */ + { -30, 0, 100, 0, 0}, /* ELM_AN 0 */ + { -30, 0, 100, 0, 0}, /* ELM_A1 0 */ + { 50.75, 0, 100, 0, 0}, /* ELM_A2 0 */ + { 50.75, 0, 100, 0, 0}, /* ELM_A3 0 */ + { 29.75, 0, 100, 0, 0}, /* ELM_A4 0 */ + { -30, 0, 100, 0, 0}, /* ELM_A5 0 */ + { -30, 0, 100, 0, 0}, /* ELM_A6 0 */ + { -30, 0, 100, 0, 0}, /* ELM_AB 0 */ + { 0, 0, 50, 0, 0}, /* ELM_AV 0 */ + { 0, 0, 50, 0, 0}, /* ELM_AVC 0 */ + { 60, 30, 50, 0, 0}, /* ELM_ASP 0 */ + { 60, 30, 50, 0, 0} /* ELM_AF 0 */ + } +}, + +{"KZ", 23, 4, 4,0x6B,"k","k",ELM_FEATURE_STP|ELM_FEATURE_VEL|ELM_FEATURE_VLS, + { + { 270, 135, 50, 0, 0}, /* ELM_FN 0 */ + { 190, 110, 50, 3, 3}, /* ELM_F1 15 */ + { 1480, 1550, 50, 3, 3}, /* ELM_F2 810 */ + { 2620, 1580, 50, 3, 3}, /* ELM_F3 270 */ + { 60, 30, 50, 3, 3}, /* ELM_B1 0 */ + { 90, 45, 50, 3, 3}, /* ELM_B2 0 */ + { 150, 75, 50, 3, 3}, /* ELM_B3 0 */ + { -30, 0, 100, 0, 0}, /* ELM_AN 0 */ + { -30, 0, 100, 0, 0}, /* ELM_A1 0 */ + { 40.25, 0, 100, 0, 0}, /* ELM_A2 0 */ + { 40.25, 0, 100, 0, 0}, /* ELM_A3 0 */ + { 19.25, 0, 100, 0, 0}, /* ELM_A4 0 */ + { -30, 0, 100, 0, 0}, /* ELM_A5 0 */ + { -30, 0, 100, 0, 0}, /* ELM_A6 0 */ + { -30, 0, 100, 0, 0}, /* ELM_AB 0 */ + { 0, 0, 50, 0, 0}, /* ELM_AV 0 */ + { 0, 0, 50, 0, 0}, /* ELM_AVC 0 */ + { 60, 30, 50, 0, 0}, /* ELM_ASP 0 */ + { 60, 30, 50, 0, 0} /* ELM_AF 0 */ + } +}, + +{"B", 26,12,12,0x62,"b","b",ELM_FEATURE_BLB|ELM_FEATURE_STP|ELM_FEATURE_VCD, + { + { 270, 135, 50, 0, 0}, /* ELM_FN 0 */ + { 190, 110, 50, 2, 2}, /* ELM_F1 15 */ + { 760, 350, 50, 2, 2}, /* ELM_F2 -30 */ + { 2500, 0, 100, 0, 2}, /* ELM_F3 0 */ + { 60, 30, 50, 2, 2}, /* ELM_B1 0 */ + { 90, 45, 50, 2, 2}, /* ELM_B2 0 */ + { 150, 0, 100, 0, 2}, /* ELM_B3 0 */ + { -30, 0, 100, 0, 0}, /* ELM_AN 0 */ + { 24.5, 0, 100, 0, 0}, /* ELM_A1 0 */ + { -30, 0, 100, 0, 0}, /* ELM_A2 0 */ + { -30, 0, 100, 0, 0}, /* ELM_A3 0 */ + { -30, 0, 100, 0, 0}, /* ELM_A4 0 */ + { -30, 0, 100, 0, 0}, /* ELM_A5 0 */ + { -30, 0, 100, 0, 0}, /* ELM_A6 0 */ + { -30, 0, 100, 0, 0}, /* ELM_AB 0 */ + { 62, 31, 50, 0, 0}, /* ELM_AV 0 */ + { 62, 31, 50, 0, 0}, /* ELM_AVC 0 */ + { 0, 0, 50, 0, 0}, /* ELM_ASP 0 */ + { 0, 0, 50, 0, 0} /* ELM_AF 0 */ + } +}, + +{"BY", 29, 1, 1,0x62,"b","b",ELM_FEATURE_BLB|ELM_FEATURE_STP|ELM_FEATURE_VCD, + { + { 270, 135, 50, 0, 0}, /* ELM_FN 0 */ + { 190, 0, 100, 0, 0}, /* ELM_F1 0 */ + { 760, 0, 100, 0, 0}, /* ELM_F2 0 */ + { 2500, 0, 100, 0, 0}, /* ELM_F3 0 */ + { 60, 0, 100, 0, 0}, /* ELM_B1 0 */ + { 90, 0, 100, 0, 0}, /* ELM_B2 0 */ + { 150, 0, 100, 0, 0}, /* ELM_B3 0 */ + { -30, 0, 100, 0, 0}, /* ELM_AN 0 */ + { 24.5, 0, 100, 0, 0}, /* ELM_A1 0 */ + { 49, 0, 100, 0, 0}, /* ELM_A2 0 */ + { 43.25, 0, 100, 0, 0}, /* ELM_A3 0 */ + { 38.5, 0, 100, 0, 0}, /* ELM_A4 0 */ + { -30, 0, 100, 0, 0}, /* ELM_A5 0 */ + { -30, 0, 100, 0, 0}, /* ELM_A6 0 */ + { -30, 0, 100, 0, 0}, /* ELM_AB 0 */ + { 62, 31, 50, 0, 0}, /* ELM_AV 0 */ + { 62, 31, 50, 0, 0}, /* ELM_AVC 0 */ + { 0, 0, 50, 0, 0}, /* ELM_ASP 0 */ + { 0, 0, 50, 0, 0} /* ELM_AF 0 */ + } +}, + +{"BZ", 26, 0, 0,0x62,"b","b",ELM_FEATURE_BLB|ELM_FEATURE_STP|ELM_FEATURE_VCD, + { + { 270, 135, 50, 0, 0}, /* ELM_FN 0 */ + { 190, 110, 50, 2, 0}, /* ELM_F1 15 */ + { 760, 350, 50, 2, 0}, /* ELM_F2 -30 */ + { 2500, 0, 100, 0, 0}, /* ELM_F3 0 */ + { 60, 30, 50, 2, 0}, /* ELM_B1 0 */ + { 90, 45, 50, 2, 0}, /* ELM_B2 0 */ + { 150, 0, 100, 0, 0}, /* ELM_B3 0 */ + { -30, 0, 100, 0, 0}, /* ELM_AN 0 */ + { -30, 0, 100, 0, 0}, /* ELM_A1 0 */ + { -30, 0, 100, 0, 0}, /* ELM_A2 0 */ + { -30, 0, 100, 0, 0}, /* ELM_A3 0 */ + { -30, 0, 100, 0, 0}, /* ELM_A4 0 */ + { -30, 0, 100, 0, 0}, /* ELM_A5 0 */ + { -30, 0, 100, 0, 0}, /* ELM_A6 0 */ + { -30, 0, 100, 0, 0}, /* ELM_AB 0 */ + { 62, 31, 50, 0, 0}, /* ELM_AV 0 */ + { 62, 31, 50, 0, 0}, /* ELM_AVC 0 */ + { 0, 0, 50, 0, 0}, /* ELM_ASP 0 */ + { 0, 0, 50, 0, 0} /* ELM_AF 0 */ + } +}, + +{"D", 26, 8, 8,0x64,"d","d",ELM_FEATURE_ALV|ELM_FEATURE_STP|ELM_FEATURE_VCD, + { + { 270, 135, 50, 0, 0}, /* ELM_FN 0 */ + { 190, 110, 50, 2, 2}, /* ELM_F1 15 */ + { 1780, 950, 50, 2, 2}, /* ELM_F2 60 */ + { 2680, 2680, 0, 2, 2}, /* ELM_F3 0 */ + { 60, 30, 50, 2, 2}, /* ELM_B1 0 */ + { 90, 45, 50, 2, 2}, /* ELM_B2 0 */ + { 150, 150, 0, 2, 2}, /* ELM_B3 0 */ + { -30, 0, 100, 0, 0}, /* ELM_AN 0 */ + { 31.5, 0, 100, 0, 0}, /* ELM_A1 0 */ + { -30, 0, 100, 0, 0}, /* ELM_A2 0 */ + { -30, 0, 100, 0, 0}, /* ELM_A3 0 */ + { -30, 0, 100, 0, 0}, /* ELM_A4 0 */ + { -30, 0, 100, 0, 0}, /* ELM_A5 0 */ + { -30, 0, 100, 0, 0}, /* ELM_A6 0 */ + { -30, 0, 100, 0, 0}, /* ELM_AB 0 */ + { 62, 31, 50, 0, 0}, /* ELM_AV 0 */ + { 62, 31, 50, 0, 0}, /* ELM_AVC 0 */ + { 0, 0, 50, 0, 0}, /* ELM_ASP 0 */ + { 0, 0, 50, 0, 0} /* ELM_AF 0 */ + } +}, + +{"DY", 29, 1, 1,0x64,"d","d",ELM_FEATURE_ALV|ELM_FEATURE_STP|ELM_FEATURE_VCD, + { + { 270, 135, 50, 0, 0}, /* ELM_FN 0 */ + { 190, 0, 100, 0, 0}, /* ELM_F1 0 */ + { 1780, 0, 100, 0, 0}, /* ELM_F2 0 */ + { 2680, 0, 100, 0, 0}, /* ELM_F3 0 */ + { 60, 0, 100, 0, 0}, /* ELM_B1 0 */ + { 90, 0, 100, 0, 0}, /* ELM_B2 0 */ + { 150, 0, 100, 0, 0}, /* ELM_B3 0 */ + { -30, 0, 100, 0, 0}, /* ELM_AN 0 */ + { 38.5, 0, 100, 0, 0}, /* ELM_A1 0 */ + { 38.5, 0, 100, 0, 0}, /* ELM_A2 0 */ + { 35, 0, 100, 0, 0}, /* ELM_A3 0 */ + { 45.5, 0, 100, 0, 0}, /* ELM_A4 0 */ + { -30, 0, 100, 0, 0}, /* ELM_A5 0 */ + { -30, 0, 100, 0, 0}, /* ELM_A6 0 */ + { -30, 0, 100, 0, 0}, /* ELM_AB 0 */ + { 62, 31, 50, 0, 0}, /* ELM_AV 0 */ + { 62, 31, 50, 0, 0}, /* ELM_AVC 0 */ + { 0, 0, 50, 0, 0}, /* ELM_ASP 0 */ + { 0, 0, 50, 0, 0} /* ELM_AF 0 */ + } +}, + +{"DZ", 26, 1, 1,0x64,"d","d",ELM_FEATURE_ALV|ELM_FEATURE_STP|ELM_FEATURE_VCD, + { + { 270, 135, 50, 0, 0}, /* ELM_FN 0 */ + { 190, 110, 50, 2, 0}, /* ELM_F1 15 */ + { 1780, 950, 50, 2, 0}, /* ELM_F2 60 */ + { 2680, 2680, 0, 2, 0}, /* ELM_F3 0 */ + { 60, 30, 50, 2, 0}, /* ELM_B1 0 */ + { 90, 45, 50, 2, 0}, /* ELM_B2 0 */ + { 150, 150, 0, 2, 0}, /* ELM_B3 0 */ + { -30, 0, 100, 0, 0}, /* ELM_AN 0 */ + { 38.5, 0, 100, 0, 0}, /* ELM_A1 0 */ + { 28, 0, 100, 0, 0}, /* ELM_A2 0 */ + { 24.5, 0, 100, 0, 0}, /* ELM_A3 0 */ + { 35, 0, 100, 0, 0}, /* ELM_A4 0 */ + { -30, 0, 100, 0, 0}, /* ELM_A5 0 */ + { -30, 0, 100, 0, 0}, /* ELM_A6 0 */ + { -30, 0, 100, 0, 0}, /* ELM_AB 0 */ + { 62, 31, 50, 0, 0}, /* ELM_AV 0 */ + { 62, 31, 50, 0, 0}, /* ELM_AVC 0 */ + { 0, 0, 50, 0, 0}, /* ELM_ASP 0 */ + { 0, 0, 50, 0, 0} /* ELM_AF 0 */ + } +}, + + +{"G", 26,12,12,0x67,"g","g",ELM_FEATURE_STP|ELM_FEATURE_VCD|ELM_FEATURE_VEL, + { + { 270, 135, 50, 0, 0}, /* ELM_FN 0 */ + { 190, 110, 50, 3, 3}, /* ELM_F1 15 */ + { 1480, 1550, 50, 3, 3}, /* ELM_F2 810 */ + { 2620, 1580, 50, 3, 3}, /* ELM_F3 270 */ + { 60, 30, 50, 3, 3}, /* ELM_B1 0 */ + { 90, 45, 50, 3, 3}, /* ELM_B2 0 */ + { 150, 75, 50, 3, 3}, /* ELM_B3 0 */ + { -30, 0, 100, 0, 0}, /* ELM_AN 0 */ + { 35, 0, 100, 0, 0}, /* ELM_A1 0 */ + { -30, 0, 100, 0, 0}, /* ELM_A2 0 */ + { -30, 0, 100, 0, 0}, /* ELM_A3 0 */ + { -30, 0, 100, 0, 0}, /* ELM_A4 0 */ + { -30, 0, 100, 0, 0}, /* ELM_A5 0 */ + { -30, 0, 100, 0, 0}, /* ELM_A6 0 */ + { -30, 0, 100, 0, 0}, /* ELM_AB 0 */ + { 62, 31, 50, 0, 0}, /* ELM_AV 0 */ + { 62, 31, 50, 0, 0}, /* ELM_AVC 0 */ + { 0, 0, 50, 0, 0}, /* ELM_ASP 0 */ + { 0, 0, 50, 0, 0} /* ELM_AF 0 */ + } +}, + +{"GY", 29, 1, 1,0x67,"g","g",ELM_FEATURE_STP|ELM_FEATURE_VCD|ELM_FEATURE_VEL, + { + { 270, 135, 50, 0, 0}, /* ELM_FN 0 */ + { 190, 0, 100, 0, 0}, /* ELM_F1 0 */ + { 1480, 0, 100, 0, 0}, /* ELM_F2 0 */ + { 2620, 0, 100, 0, 0}, /* ELM_F3 0 */ + { 60, 0, 100, 0, 0}, /* ELM_B1 0 */ + { 90, 0, 100, 0, 0}, /* ELM_B2 0 */ + { 150, 0, 100, 0, 0}, /* ELM_B3 0 */ + { -30, 0, 100, 0, 0}, /* ELM_AN 0 */ + { 35, 0, 100, 0, 0}, /* ELM_A1 0 */ + { 45.5, 0, 100, 0, 0}, /* ELM_A2 0 */ + { 40.25, 0, 100, 0, 0}, /* ELM_A3 0 */ + { 24.5, 0, 100, 0, 0}, /* ELM_A4 0 */ + { -30, 0, 100, 0, 0}, /* ELM_A5 0 */ + { -30, 0, 100, 0, 0}, /* ELM_A6 0 */ + { -30, 0, 100, 0, 0}, /* ELM_AB 0 */ + { 62, 31, 50, 0, 0}, /* ELM_AV 0 */ + { 62, 31, 50, 0, 0}, /* ELM_AVC 0 */ + { 0, 0, 50, 0, 0}, /* ELM_ASP 0 */ + { 0, 0, 50, 0, 0} /* ELM_AF 0 */ + } +}, + +{"GZ", 26, 2, 2,0x67,"g","g",ELM_FEATURE_STP|ELM_FEATURE_VCD|ELM_FEATURE_VEL, + { + { 270, 135, 50, 0, 0}, /* ELM_FN 0 */ + { 190, 110, 50, 3, 2}, /* ELM_F1 15 */ + { 1480, 1550, 50, 3, 2}, /* ELM_F2 810 */ + { 2620, 1580, 50, 3, 2}, /* ELM_F3 270 */ + { 60, 30, 50, 3, 2}, /* ELM_B1 0 */ + { 90, 45, 50, 3, 2}, /* ELM_B2 0 */ + { 150, 75, 50, 3, 2}, /* ELM_B3 0 */ + { -30, 0, 100, 0, 0}, /* ELM_AN 0 */ + { 35, 0, 100, 0, 0}, /* ELM_A1 0 */ + { 35, 0, 100, 0, 0}, /* ELM_A2 0 */ + { 29.75, 0, 100, 0, 0}, /* ELM_A3 0 */ + { 14, 0, 100, 0, 0}, /* ELM_A4 0 */ + { -30, 0, 100, 0, 0}, /* ELM_A5 0 */ + { -30, 0, 100, 0, 0}, /* ELM_A6 0 */ + { -30, 0, 100, 0, 0}, /* ELM_AB 0 */ + { 62, 31, 50, 0, 0}, /* ELM_AV 0 */ + { 62, 31, 50, 0, 0}, /* ELM_AVC 0 */ + { 0, 0, 50, 0, 0}, /* ELM_ASP 0 */ + { 0, 0, 50, 0, 0} /* ELM_AF 0 */ + } +}, + +{"M", 15, 8, 8,0x6D,"m","m",ELM_FEATURE_BLB|ELM_FEATURE_NAS, + { + { 360, 360, 0, 3, 0}, /* ELM_FN 0 */ + { 480, 480, 0, 3, 0}, /* ELM_F1 0 */ + { 1000, 350, 50, 3, 0}, /* ELM_F2 -150 */ + { 2200, 0, 100, 5, 0}, /* ELM_F3 0 */ + { 40, 20, 50, 3, 0}, /* ELM_B1 0 */ + { 175, 87, 50, 3, 0}, /* ELM_B2 -0.5 */ + { 120, 0, 100, 5, 0}, /* ELM_B3 0 */ + { 42, 21, 50, 3, 0}, /* ELM_AN 0 */ + { 26, -10, 100, 3, 0}, /* ELM_A1 -10 */ + { 30, -10, 100, 3, 0}, /* ELM_A2 -10 */ + { 33, -10, 100, 3, 0}, /* ELM_A3 -10 */ + { -30, -10, 100, 3, 0}, /* ELM_A4 -10 */ + { -30, 0, 100, 3, 0}, /* ELM_A5 0 */ + { -30, 0, 100, 3, 0}, /* ELM_A6 0 */ + { -30, 0, 100, 3, 0}, /* ELM_AB 0 */ + { 62, 31, 50, 2, 0}, /* ELM_AV 0 */ + { 62, 31, 50, 2, 0}, /* ELM_AVC 0 */ + { 0, 0, 50, 2, 0}, /* ELM_ASP 0 */ + { 0, 0, 50, 2, 0} /* ELM_AF 0 */ + } +}, + +{"N", 15, 8, 8,0x6E,"n","n",ELM_FEATURE_ALV|ELM_FEATURE_NAS, + { + { 450, 450, 0, 3, 0}, /* ELM_FN 0 */ + { 480, 480, 0, 3, 0}, /* ELM_F1 0 */ + { 1780, 950, 50, 3, 3}, /* ELM_F2 60 */ + { 2620, 2680, 0, 3, 0}, /* ELM_F3 60 */ + { 40, 20, 50, 3, 0}, /* ELM_B1 0 */ + { 300, 150, 50, 3, 3}, /* ELM_B2 0 */ + { 260, 130, 50, 3, 0}, /* ELM_B3 0 */ + { 42, 21, 50, 3, 0}, /* ELM_AN 0 */ + { 35, -10, 100, 3, 0}, /* ELM_A1 -10 */ + { 35, -10, 100, 3, 0}, /* ELM_A2 -10 */ + { 35, -10, 100, 3, 0}, /* ELM_A3 -10 */ + { 20, -10, 100, 3, 0}, /* ELM_A4 -10 */ + { -30, 0, 100, 3, 0}, /* ELM_A5 0 */ + { -30, 0, 100, 3, 0}, /* ELM_A6 0 */ + { -30, 0, 100, 3, 0}, /* ELM_AB 0 */ + { 62, 31, 50, 2, 0}, /* ELM_AV 0 */ + { 62, 31, 50, 2, 0}, /* ELM_AVC 0 */ + { 0, 0, 50, 2, 0}, /* ELM_ASP 0 */ + { 0, 0, 50, 2, 0} /* ELM_AF 0 */ + } +}, + +{"NG", 15, 8, 8,0x4E,"N","N",ELM_FEATURE_NAS|ELM_FEATURE_VEL, + { + { 360, 360, 0, 3, 0}, /* ELM_FN 0 */ + { 480, 480, 0, 3, 0}, /* ELM_F1 0 */ + { 820, 1550, 50, 5, 3}, /* ELM_F2 1140 */ + { 2800, 1580, 50, 3, 3}, /* ELM_F3 180 */ + { 160, 80, 0, 5, 0}, /* ELM_B1 -80 */ + { 150, 75, 50, 5, 3}, /* ELM_B2 0 */ + { 100, 50, 50, 3, 0}, /* ELM_B3 0 */ + { 42, 21, 50, 3, 3}, /* ELM_AN 0 */ + { 20, 0, 100, 3, 0}, /* ELM_A1 0 */ + { 30, 0, 100, 3, 0}, /* ELM_A2 0 */ + { 35, 0, 100, 3, 0}, /* ELM_A3 0 */ + { 0, 0, 100, 3, 0}, /* ELM_A4 0 */ + { -30, 0, 100, 3, 0}, /* ELM_A5 0 */ + { -30, 0, 100, 3, 0}, /* ELM_A6 0 */ + { -30, 0, 100, 3, 0}, /* ELM_AB 0 */ + { 52, 26, 50, 2, 0}, /* ELM_AV 0 */ + { 56, 28, 50, 2, 0}, /* ELM_AVC 0 */ + { 0, 0, 50, 2, 0}, /* ELM_ASP 0 */ + { 0, 0, 50, 2, 0} /* ELM_AF 0 */ + } +}, + +{"F", 18,12,12,0x66,"f","f",ELM_FEATURE_FRC|ELM_FEATURE_LBD|ELM_FEATURE_VLS, + { + { 270, 135, 50, 0, 0}, /* ELM_FN 0 */ + { 400, 170, 50, 3, 2}, /* ELM_F1 -30 */ + { 1420, 350, 50, 3, 2}, /* ELM_F2 -360 */ + { 2560, 980, 50, 3, 2}, /* ELM_F3 -300 */ + { 60, 30, 50, 3, 2}, /* ELM_B1 0 */ + { 90, 45, 50, 3, 2}, /* ELM_B2 0 */ + { 150, 75, 50, 3, 2}, /* ELM_B3 0 */ + { -30, 0, 100, 0, 0}, /* ELM_AN 0 */ + { -30, 0, 100, 0, 0}, /* ELM_A1 0 */ + { 0, 0, 100, 0, 0}, /* ELM_A2 0 */ + { 0, 0, 100, 0, 0}, /* ELM_A3 0 */ + { -30, 0, 100, 0, 0}, /* ELM_A4 0 */ + { -30, 0, 100, 0, 0}, /* ELM_A5 0 */ + { -30, 0, 100, 0, 0}, /* ELM_A6 0 */ + { 54, 27, 50, 0, 0}, /* ELM_AB 0 */ + { 0, 0, 50, 0, 0}, /* ELM_AV 0 */ + { 0, 0, 50, 0, 0}, /* ELM_AVC 0 */ + { 32, 16, 50, 0, 0}, /* ELM_ASP 0 */ + { 54, 30, 50, 0, 0} /* ELM_AF 3 */ + } +}, + +{"TH", 18,15,15,0x54,"T","T",ELM_FEATURE_DNT|ELM_FEATURE_FRC|ELM_FEATURE_VLS, + { + { 270, 135, 50, 0, 0}, /* ELM_FN 0 */ + { 400, 170, 50, 3, 2}, /* ELM_F1 -30 */ + { 1780, 1190, 50, 3, 2}, /* ELM_F2 300 */ + { 2680, 2680, 0, 3, 2}, /* ELM_F3 0 */ + { 60, 30, 50, 3, 2}, /* ELM_B1 0 */ + { 90, 45, 50, 3, 2}, /* ELM_B2 0 */ + { 150, 150, 0, 3, 2}, /* ELM_B3 0 */ + { -30, 0, 100, 0, 0}, /* ELM_AN 0 */ + { -30, 0, 100, 0, 0}, /* ELM_A1 0 */ + { 26.25, 0, 100, 0, 0}, /* ELM_A2 0 */ + { 28, 0, 100, 0, 0}, /* ELM_A3 0 */ + { 22.75, 0, 100, 0, 0}, /* ELM_A4 0 */ + { -30, 0, 100, 0, 0}, /* ELM_A5 0 */ + { -30, 0, 100, 0, 0}, /* ELM_A6 0 */ + { -30, 0, 100, 0, 0}, /* ELM_AB 0 */ + { 0, 0, 50, 0, 0}, /* ELM_AV 0 */ + { 0, 0, 50, 0, 0}, /* ELM_AVC 0 */ + { 60, 30, 50, 0, 0}, /* ELM_ASP 0 */ + { 60, 30, 50, 0, 0} /* ELM_AF 0 */ + } +}, + +{"S", 18,12,12,0x73,"s","s",ELM_FEATURE_ALV|ELM_FEATURE_FRC|ELM_FEATURE_VLS, + { + { 270, 135, 50, 0, 0}, /* ELM_FN 0 */ + { 400, 170, 50, 3, 2}, /* ELM_F1 -30 */ + { 1720, 950, 50, 3, 2}, /* ELM_F2 90 */ + { 2620, 0, 100, 3, 2}, /* ELM_F3 0 */ + { 200, 100, 50, 3, 2}, /* ELM_B1 0 */ + { 96, 48, 50, 3, 2}, /* ELM_B2 0 */ + { 220, 0, 100, 3, 2}, /* ELM_B3 0 */ + { -30, 0, 100, 0, 0}, /* ELM_AN 0 */ + { -30, 0, 100, 0, 0}, /* ELM_A1 0 */ + { 28, 0, 100, 0, 0}, /* ELM_A2 0 */ + { 28, 0, 100, 0, 0}, /* ELM_A3 0 */ + { 40.25, 0, 100, 0, 0}, /* ELM_A4 0 */ + { -30, 0, 100, 0, 0}, /* ELM_A5 0 */ + { -30, 0, 100, 0, 0}, /* ELM_A6 0 */ + { -30, 0, 100, 0, 0}, /* ELM_AB 0 */ + { 0, 0, 50, 0, 0}, /* ELM_AV 0 */ + { 0, 0, 50, 0, 0}, /* ELM_AVC 0 */ + { 32, 16, 50, 0, 0}, /* ELM_ASP 0 */ + { 60, 30, 50, 0, 0} /* ELM_AF 0 */ + } +}, + +{"SH", 18,12,12,0x53,"S","S",ELM_FEATURE_FRC|ELM_FEATURE_PLA|ELM_FEATURE_VLS, + { + { 270, 135, 50, 0, 0}, /* ELM_FN 0 */ + { 400, 170, 50, 3, 2}, /* ELM_F1 -30 */ + { 2200, 1190, 50, 3, 2}, /* ELM_F2 90 */ + { 2560, 0, 100, 3, 2}, /* ELM_F3 0 */ + { 60, 30, 50, 3, 2}, /* ELM_B1 0 */ + { 90, 45, 50, 3, 2}, /* ELM_B2 0 */ + { 150, 0, 100, 3, 2}, /* ELM_B3 0 */ + { -30, 0, 100, 0, 0}, /* ELM_AN 0 */ + { -30, 0, 100, 0, 0}, /* ELM_A1 0 */ + { 31.5, 0, 100, 0, 0}, /* ELM_A2 0 */ + { 42, 0, 100, 0, 0}, /* ELM_A3 0 */ + { 31.5, 0, 100, 0, 0}, /* ELM_A4 0 */ + { -30, 0, 100, 0, 0}, /* ELM_A5 0 */ + { -30, 0, 100, 0, 0}, /* ELM_A6 0 */ + { -30, 0, 100, 0, 0}, /* ELM_AB 0 */ + { 0, 0, 50, 0, 0}, /* ELM_AV 0 */ + { 0, 0, 50, 0, 0}, /* ELM_AVC 0 */ + { 60, 30, 50, 0, 0}, /* ELM_ASP 0 */ + { 60, 30, 50, 0, 0} /* ELM_AF 0 */ + } +}, + +{"X", 18,12,12,0x78,"x","x",ELM_FEATURE_FRC|ELM_FEATURE_VEL|ELM_FEATURE_VLS, + { + { 270, 135, 50, 0, 0}, /* ELM_FN 0 */ + { 190, 110, 50, 3, 3}, /* ELM_F1 15 */ + { 1480, 1550, 50, 3, 3}, /* ELM_F2 810 */ + { 2620, 1580, 50, 3, 3}, /* ELM_F3 270 */ + { 60, 30, 50, 3, 3}, /* ELM_B1 0 */ + { 90, 45, 50, 3, 3}, /* ELM_B2 0 */ + { 150, 75, 50, 3, 3}, /* ELM_B3 0 */ + { -30, 0, 100, 0, 0}, /* ELM_AN 0 */ + { -30, 0, 100, 0, 0}, /* ELM_A1 0 */ + { 40.25, 0, 100, 0, 0}, /* ELM_A2 0 */ + { 40.25, 0, 100, 0, 0}, /* ELM_A3 0 */ + { 19.25, 0, 100, 0, 0}, /* ELM_A4 0 */ + { -30, 0, 100, 0, 0}, /* ELM_A5 0 */ + { -30, 0, 100, 0, 0}, /* ELM_A6 0 */ + { -30, 0, 100, 0, 0}, /* ELM_AB 0 */ + { 0, 0, 50, 0, 0}, /* ELM_AV 0 */ + { 0, 0, 50, 0, 0}, /* ELM_AVC 0 */ + { 60, 30, 50, 0, 0}, /* ELM_ASP 0 */ + { 60, 30, 50, 0, 0} /* ELM_AF 0 */ + } +}, + +{"H", 9,10,10,0x68,"h","h",ELM_FEATURE_APR|ELM_FEATURE_GLT, + { + { 270, 135, 50, 0, 0}, /* ELM_FN 0 */ + { 490, 0, 100, 0, 7}, /* ELM_F1 0 */ + { 1480, 0, 100, 0, 7}, /* ELM_F2 0 */ + { 2500, 0, 100, 0, 7}, /* ELM_F3 0 */ + { 60, 0, 100, 0, 7}, /* ELM_B1 0 */ + { 90, 0, 100, 0, 7}, /* ELM_B2 0 */ + { 150, 0, 100, 0, 7}, /* ELM_B3 0 */ + { -30, 0, 100, 0, 7}, /* ELM_AN 0 */ + { 35, -14, 100, 0, 7}, /* ELM_A1 -14 */ + { 36.75, -14, 100, 0, 7}, /* ELM_A2 -14 */ + { 26.25, -7, 100, 0, 7}, /* ELM_A3 -7 */ + { 22.75, -3.5, 100, 0, 7}, /* ELM_A4 -3.5 */ + { -30, 0, 100, 0, 7}, /* ELM_A5 0 */ + { -30, 0, 100, 0, 7}, /* ELM_A6 0 */ + { -30, 0, 100, 0, 7}, /* ELM_AB 0 */ + { 0, 0, 50, 0, 0}, /* ELM_AV 0 */ + { 0, 0, 50, 0, 0}, /* ELM_AVC 0 */ + { 60, 30, 50, 0, 0}, /* ELM_ASP 0 */ + { 60, 30, 50, 0, 0} /* ELM_AF 0 */ + } +}, + +{"V", 20, 4, 4,0x76,"v","v",ELM_FEATURE_FRC|ELM_FEATURE_LBD|ELM_FEATURE_VCD, + { + { 270, 135, 50, 0, 0}, /* ELM_FN 0 */ + { 280, 170, 50, 3, 2}, /* ELM_F1 30 */ + { 1420, 350, 50, 3, 2}, /* ELM_F2 -360 */ + { 2560, 980, 50, 3, 2}, /* ELM_F3 -300 */ + { 60, 30, 50, 3, 2}, /* ELM_B1 0 */ + { 90, 45, 50, 3, 2}, /* ELM_B2 0 */ + { 150, 75, 50, 3, 2}, /* ELM_B3 0 */ + { -30, 0, 100, 0, 0}, /* ELM_AN 0 */ + { 29.75, 0, 100, 0, 0}, /* ELM_A1 0 */ + { 40.25, 0, 100, 0, 0}, /* ELM_A2 0 */ + { 36.75, 0, 100, 0, 0}, /* ELM_A3 0 */ + { 33.25, 0, 100, 0, 0}, /* ELM_A4 0 */ + { -30, 0, 100, 0, 0}, /* ELM_A5 0 */ + { -30, 0, 100, 0, 0}, /* ELM_A6 0 */ + { -30, 0, 100, 0, 0}, /* ELM_AB 0 */ + { 62, 31, 50, 0, 0}, /* ELM_AV 0 */ + { 62, 31, 50, 0, 0}, /* ELM_AVC 0 */ + { 0, 0, 50, 0, 0}, /* ELM_ASP 0 */ + { 0, 0, 50, 0, 0} /* ELM_AF 0 */ + } +}, + +{"QQ", 30, 0, 0,0x5A,"Z","Z",ELM_FEATURE_FRC|ELM_FEATURE_VCD, + { + { 270, 135, 50, 0, 0}, /* ELM_FN 0 */ + { 280, 0, 100, 0, 0}, /* ELM_F1 0 */ + { 1420, 0, 100, 0, 0}, /* ELM_F2 0 */ + { 2560, 0, 100, 0, 0}, /* ELM_F3 0 */ + { 60, 0, 100, 0, 0}, /* ELM_B1 0 */ + { 90, 0, 100, 0, 0}, /* ELM_B2 0 */ + { 150, 0, 100, 0, 0}, /* ELM_B3 0 */ + { -30, 0, 100, 0, 0}, /* ELM_AN 0 */ + { 29.75, 0, 100, 0, 0}, /* ELM_A1 0 */ + { 40.25, 0, 100, 0, 0}, /* ELM_A2 0 */ + { 36.75, 0, 100, 0, 0}, /* ELM_A3 0 */ + { 33.25, 0, 100, 0, 0}, /* ELM_A4 0 */ + { -30, 0, 100, 0, 0}, /* ELM_A5 0 */ + { -30, 0, 100, 0, 0}, /* ELM_A6 0 */ + { -30, 0, 100, 0, 0}, /* ELM_AB 0 */ + { 62, 31, 50, 0, 0}, /* ELM_AV 0 */ + { 62, 31, 50, 0, 0}, /* ELM_AVC 0 */ + { 0, 0, 50, 0, 0}, /* ELM_ASP 0 */ + { 0, 0, 50, 0, 0} /* ELM_AF 0 */ + } +}, + +{"DH", 20, 4, 4,0x54,"D","D",ELM_FEATURE_DNT|ELM_FEATURE_FRC|ELM_FEATURE_VCD, + { + { 270, 135, 50, 0, 0}, /* ELM_FN 0 */ + { 280, 170, 50, 3, 2}, /* ELM_F1 30 */ + { 1600, 1190, 50, 3, 2}, /* ELM_F2 390 */ + { 2560, 0, 100, 3, 2}, /* ELM_F3 0 */ + { 60, 30, 50, 3, 2}, /* ELM_B1 0 */ + { 90, 45, 50, 3, 2}, /* ELM_B2 0 */ + { 150, 0, 100, 3, 2}, /* ELM_B3 0 */ + { -30, 0, 100, 0, 0}, /* ELM_AN 0 */ + { 29.75, 0, 100, 0, 0}, /* ELM_A1 0 */ + { 31.5, 0, 100, 0, 0}, /* ELM_A2 0 */ + { 26.25, 0, 100, 0, 0}, /* ELM_A3 0 */ + { 28, 0, 100, 0, 0}, /* ELM_A4 0 */ + { -30, 0, 100, 0, 0}, /* ELM_A5 0 */ + { -30, 0, 100, 0, 0}, /* ELM_A6 0 */ + { 54, 27, 50, 0, 0}, /* ELM_AB 0 */ + { 36, 18, 50, 0, 0}, /* ELM_AV 0 */ + { 54, 27, 50, 0, 0}, /* ELM_AVC 0 */ + { 0, 0, 50, 0, 0}, /* ELM_ASP 0 */ + { 60, 30, 50, 0, 0} /* ELM_AF 0 */ + } +}, + +{"DI", 20, 4, 4,0x54,"D","D",ELM_FEATURE_DNT|ELM_FEATURE_FRC|ELM_FEATURE_VCD, + { + { 270, 135, 50, 0, 0}, /* ELM_FN 0 */ + { 280, 170, 50, 3, 2}, /* ELM_F1 30 */ + { 1600, 1190, 50, 3, 2}, /* ELM_F2 390 */ + { 2560, 0, 100, 3, 2}, /* ELM_F3 0 */ + { 60, 30, 50, 3, 2}, /* ELM_B1 0 */ + { 90, 45, 50, 3, 2}, /* ELM_B2 0 */ + { 150, 0, 100, 3, 2}, /* ELM_B3 0 */ + { -30, 0, 100, 0, 0}, /* ELM_AN 0 */ + { 29.75, 0, 100, 0, 0}, /* ELM_A1 0 */ + { 31.5, 0, 100, 0, 0}, /* ELM_A2 0 */ + { 26.25, 0, 100, 0, 0}, /* ELM_A3 0 */ + { 28, 0, 100, 0, 0}, /* ELM_A4 0 */ + { -30, 0, 100, 0, 0}, /* ELM_A5 0 */ + { -30, 0, 100, 0, 0}, /* ELM_A6 0 */ + { -30, 0, 100, 0, 0}, /* ELM_AB 0 */ + { 62, 31, 50, 0, 0}, /* ELM_AV 0 */ + { 62, 31, 50, 0, 0}, /* ELM_AVC 0 */ + { 0, 0, 50, 0, 0}, /* ELM_ASP 0 */ + { 0, 0, 50, 0, 0} /* ELM_AF 0 */ + } +}, + +{"Z", 20, 4, 4,0x7A,"z","z",ELM_FEATURE_ALV|ELM_FEATURE_FRC|ELM_FEATURE_VCD, + { + { 270, 135, 50, 0, 0}, /* ELM_FN 0 */ + { 280, 170, 50, 3, 2}, /* ELM_F1 30 */ + { 1720, 950, 50, 3, 2}, /* ELM_F2 90 */ + { 2560, 0, 100, 3, 2}, /* ELM_F3 0 */ + { 60, 30, 50, 3, 2}, /* ELM_B1 0 */ + { 90, 45, 50, 3, 2}, /* ELM_B2 0 */ + { 150, 0, 100, 3, 2}, /* ELM_B3 0 */ + { -30, 0, 100, 0, 0}, /* ELM_AN 0 */ + { 29.75, 0, 100, 0, 0}, /* ELM_A1 0 */ + { 24.5, 0, 100, 0, 0}, /* ELM_A2 0 */ + { 24.5, 0, 100, 0, 0}, /* ELM_A3 0 */ + { 36.75, 0, 100, 0, 0}, /* ELM_A4 0 */ + { -30, 0, 100, 0, 0}, /* ELM_A5 0 */ + { -30, 0, 100, 0, 0}, /* ELM_A6 0 */ + { -30, 0, 100, 0, 0}, /* ELM_AB 0 */ + { 40, 20, 50, 0, 0}, /* ELM_AV 0 */ + { 54, 27, 50, 0, 0}, /* ELM_AVC 0 */ + { 0, 0, 50, 0, 0}, /* ELM_ASP 0 */ + { 60, 30, 50, 0, 0} /* ELM_AF 0 */ + } +}, + +{"ZZ", 20, 4, 4,0x7A,"z","z",ELM_FEATURE_ALV|ELM_FEATURE_FRC|ELM_FEATURE_VCD, + { + { 270, 135, 50, 0, 0}, /* ELM_FN 0 */ + { 280, 170, 50, 3, 2}, /* ELM_F1 30 */ + { 1720, 950, 50, 3, 2}, /* ELM_F2 90 */ + { 2560, 0, 100, 3, 2}, /* ELM_F3 0 */ + { 60, 30, 50, 3, 2}, /* ELM_B1 0 */ + { 90, 45, 50, 3, 2}, /* ELM_B2 0 */ + { 150, 0, 100, 3, 2}, /* ELM_B3 0 */ + { -30, 0, 100, 0, 0}, /* ELM_AN 0 */ + { 29.75, 0, 100, 0, 0}, /* ELM_A1 0 */ + { 24.5, 0, 100, 0, 0}, /* ELM_A2 0 */ + { 24.5, 0, 100, 0, 0}, /* ELM_A3 0 */ + { 36.75, 0, 100, 0, 0}, /* ELM_A4 0 */ + { -30, 0, 100, 0, 0}, /* ELM_A5 0 */ + { -30, 0, 100, 0, 0}, /* ELM_A6 0 */ + { -30, 0, 100, 0, 0}, /* ELM_AB 0 */ + { 62, 31, 50, 0, 0}, /* ELM_AV 0 */ + { 62, 31, 50, 0, 0}, /* ELM_AVC 0 */ + { 0, 0, 50, 0, 0}, /* ELM_ASP 0 */ + { 0, 0, 50, 0, 0} /* ELM_AF 0 */ + } +}, + +{"ZH", 20, 4, 4,0x5A,"Z","Z",ELM_FEATURE_FRC|ELM_FEATURE_PLA|ELM_FEATURE_VCD, + { + { 270, 135, 50, 0, 0}, /* ELM_FN 0 */ + { 280, 170, 50, 3, 2}, /* ELM_F1 30 */ + { 2020, 1190, 50, 3, 2}, /* ELM_F2 180 */ + { 2560, 0, 100, 3, 2}, /* ELM_F3 0 */ + { 60, 30, 50, 3, 2}, /* ELM_B1 0 */ + { 90, 45, 50, 3, 2}, /* ELM_B2 0 */ + { 150, 0, 100, 3, 2}, /* ELM_B3 0 */ + { -30, 0, 100, 0, 0}, /* ELM_AN 0 */ + { 29.75, 0, 100, 0, 0}, /* ELM_A1 0 */ + { 26.25, 0, 100, 0, 0}, /* ELM_A2 0 */ + { 36.75, 0, 100, 0, 0}, /* ELM_A3 0 */ + { 26.25, 0, 100, 0, 0}, /* ELM_A4 0 */ + { -30, 0, 100, 0, 0}, /* ELM_A5 0 */ + { -30, 0, 100, 0, 0}, /* ELM_A6 0 */ + { -30, 0, 100, 0, 0}, /* ELM_AB 0 */ + { 62, 31, 50, 0, 0}, /* ELM_AV 0 */ + { 62, 31, 50, 0, 0}, /* ELM_AVC 0 */ + { 0, 0, 50, 0, 0}, /* ELM_ASP 0 */ + { 0, 0, 50, 0, 0} /* ELM_AF 0 */ + } +}, + +{"CH", 23, 4, 4,0x74,"t","t",ELM_FEATURE_ALV|ELM_FEATURE_STP|ELM_FEATURE_VLS, + { + { 270, 135, 50, 0, 0}, /* ELM_FN 0 */ + { 190, 110, 50, 2, 2}, /* ELM_F1 15 */ + { 1780, 950, 50, 2, 2}, /* ELM_F2 60 */ + { 2680, 2680, 0, 2, 2}, /* ELM_F3 0 */ + { 60, 30, 50, 2, 2}, /* ELM_B1 0 */ + { 90, 45, 50, 2, 2}, /* ELM_B2 0 */ + { 150, 150, 0, 2, 2}, /* ELM_B3 0 */ + { -30, 0, 100, 0, 0}, /* ELM_AN 0 */ + { -30, 0, 100, 0, 0}, /* ELM_A1 0 */ + { -30, 0, 100, 0, 0}, /* ELM_A2 0 */ + { -30, 0, 100, 0, 0}, /* ELM_A3 0 */ + { -30, 0, 100, 0, 0}, /* ELM_A4 0 */ + { -30, 0, 100, 0, 0}, /* ELM_A5 0 */ + { -30, 0, 100, 0, 0}, /* ELM_A6 0 */ + { -30, 0, 100, 0, 0}, /* ELM_AB 0 */ + { 0, 0, 50, 0, 0}, /* ELM_AV 0 */ + { 0, 0, 50, 0, 0}, /* ELM_AVC 0 */ + { 60, 30, 50, 0, 0}, /* ELM_ASP 0 */ + { 60, 30, 50, 0, 0} /* ELM_AF 0 */ + } +}, + +{"CI", 18, 8, 8,0x53,"S","S",ELM_FEATURE_FRC|ELM_FEATURE_PLA|ELM_FEATURE_VLS, + { + { 270, 135, 50, 0, 0}, /* ELM_FN 0 */ + { 400, 170, 50, 3, 2}, /* ELM_F1 -30 */ + { 2020, 1190, 50, 3, 2}, /* ELM_F2 180 */ + { 2560, 0, 100, 3, 2}, /* ELM_F3 0 */ + { 60, 30, 50, 3, 2}, /* ELM_B1 0 */ + { 90, 45, 50, 3, 2}, /* ELM_B2 0 */ + { 150, 0, 100, 3, 2}, /* ELM_B3 0 */ + { -30, 0, 100, 0, 0}, /* ELM_AN 0 */ + { -30, 0, 100, 0, 0}, /* ELM_A1 0 */ + { 31.5, 0, 100, 0, 0}, /* ELM_A2 0 */ + { 42, 0, 100, 0, 0}, /* ELM_A3 0 */ + { 31.5, 0, 100, 0, 0}, /* ELM_A4 0 */ + { -30, 0, 100, 0, 0}, /* ELM_A5 0 */ + { -30, 0, 100, 0, 0}, /* ELM_A6 0 */ + { -30, 0, 100, 0, 0}, /* ELM_AB 0 */ + { 0, 0, 50, 0, 0}, /* ELM_AV 0 */ + { 0, 0, 50, 0, 0}, /* ELM_AVC 0 */ + { 60, 30, 50, 0, 0}, /* ELM_ASP 0 */ + { 60, 30, 50, 0, 0} /* ELM_AF 0 */ + } +}, + +{"J", 26, 4, 4,0x64,"d","d",ELM_FEATURE_ALV|ELM_FEATURE_STP|ELM_FEATURE_VCD, + { + { 270, 135, 50, 0, 0}, /* ELM_FN 0 */ + { 190, 110, 50, 2, 2}, /* ELM_F1 15 */ + { 1780, 950, 50, 2, 2}, /* ELM_F2 60 */ + { 2680, 2680, 0, 2, 2}, /* ELM_F3 0 */ + { 60, 30, 50, 2, 2}, /* ELM_B1 0 */ + { 90, 45, 50, 2, 2}, /* ELM_B2 0 */ + { 150, 150, 0, 2, 2}, /* ELM_B3 0 */ + { -30, 0, 100, 0, 0}, /* ELM_AN 0 */ + { 31.5, 0, 100, 0, 0}, /* ELM_A1 0 */ + { -30, 0, 100, 0, 0}, /* ELM_A2 0 */ + { -30, 0, 100, 0, 0}, /* ELM_A3 0 */ + { -30, 0, 100, 0, 0}, /* ELM_A4 0 */ + { -30, 0, 100, 0, 0}, /* ELM_A5 0 */ + { -30, 0, 100, 0, 0}, /* ELM_A6 0 */ + { -30, 0, 100, 0, 0}, /* ELM_AB 0 */ + { 62, 31, 50, 0, 0}, /* ELM_AV 0 */ + { 62, 31, 50, 0, 0}, /* ELM_AVC 0 */ + { 0, 0, 50, 0, 0}, /* ELM_ASP 0 */ + { 0, 0, 50, 0, 0} /* ELM_AF 0 */ + } +}, + +{"JY", 20, 3, 3,0x5A,"Z","Z",ELM_FEATURE_FRC|ELM_FEATURE_PLA|ELM_FEATURE_VCD, + { + { 270, 135, 50, 0, 0}, /* ELM_FN 0 */ + { 280, 170, 50, 3, 2}, /* ELM_F1 30 */ + { 2020, 1190, 50, 3, 2}, /* ELM_F2 180 */ + { 2560, 0, 100, 3, 2}, /* ELM_F3 0 */ + { 60, 30, 50, 3, 2}, /* ELM_B1 0 */ + { 90, 45, 50, 3, 2}, /* ELM_B2 0 */ + { 150, 0, 100, 3, 2}, /* ELM_B3 0 */ + { -30, 0, 100, 0, 0}, /* ELM_AN 0 */ + { 29.75, 0, 100, 0, 0}, /* ELM_A1 0 */ + { 26.25, 0, 100, 0, 0}, /* ELM_A2 0 */ + { 36.75, 0, 100, 0, 0}, /* ELM_A3 0 */ + { 26.25, 0, 100, 0, 0}, /* ELM_A4 0 */ + { -30, 0, 100, 0, 0}, /* ELM_A5 0 */ + { -30, 0, 100, 0, 0}, /* ELM_A6 0 */ + { -30, 0, 100, 0, 0}, /* ELM_AB 0 */ + { 62, 31, 50, 0, 0}, /* ELM_AV 0 */ + { 62, 31, 50, 0, 0}, /* ELM_AVC 0 */ + { 0, 0, 50, 0, 0}, /* ELM_ASP 0 */ + { 0, 0, 50, 0, 0} /* ELM_AF 0 */ + } +}, + +{"L", 11, 8, 8,0x6C,"l","l",ELM_FEATURE_ALV|ELM_FEATURE_LAT|ELM_FEATURE_VCD, + { + { 270, 135, 50, 0, 0}, /* ELM_FN 0 */ + { 460, 230, 50, 6, 0}, /* ELM_F1 0 */ + { 1480, 710, 50, 6, 0}, /* ELM_F2 -30 */ + { 2500, 1220, 50, 6, 0}, /* ELM_F3 -30 */ + { 60, 30, 50, 6, 0}, /* ELM_B1 0 */ + { 90, 45, 50, 6, 0}, /* ELM_B2 0 */ + { 150, 75, 50, 6, 0}, /* ELM_B3 0 */ + { -30, 0, 100, 0, 0}, /* ELM_AN 0 */ + { 36.75, 0, 100, 0, 0}, /* ELM_A1 0 */ + { 26.25, 0, 100, 0, 0}, /* ELM_A2 0 */ + { 26.25, 0, 100, 0, 0}, /* ELM_A3 0 */ + { 21, 0, 100, 0, 0}, /* ELM_A4 0 */ + { -30, 0, 100, 0, 0}, /* ELM_A5 0 */ + { -30, 0, 100, 0, 0}, /* ELM_A6 0 */ + { -30, 0, 100, 0, 0}, /* ELM_AB 0 */ + { 62, 31, 50, 0, 0}, /* ELM_AV 0 */ + { 62, 31, 50, 0, 0}, /* ELM_AVC 0 */ + { 0, 0, 50, 0, 0}, /* ELM_ASP 0 */ + { 0, 0, 50, 0, 0} /* ELM_AF 0 */ + } +}, + +{"LL", 11, 8, 8,0x6C,"l","l",ELM_FEATURE_ALV|ELM_FEATURE_LAT|ELM_FEATURE_VCD, + { + { 270, 135, 50, 0, 0}, /* ELM_FN 0 */ + { 460, 230, 50, 6, 0}, /* ELM_F1 0 */ + { 940, 470, 50, 6, 0}, /* ELM_F2 0 */ + { 2500, 1220, 50, 6, 0}, /* ELM_F3 -30 */ + { 60, 30, 50, 6, 0}, /* ELM_B1 0 */ + { 90, 45, 50, 6, 0}, /* ELM_B2 0 */ + { 150, 75, 50, 6, 0}, /* ELM_B3 0 */ + { -30, 0, 100, 0, 0}, /* ELM_AN 0 */ + { 36.75, 0, 100, 0, 0}, /* ELM_A1 0 */ + { 26.25, 0, 100, 0, 0}, /* ELM_A2 0 */ + { 26.25, 0, 100, 0, 0}, /* ELM_A3 0 */ + { 21, 0, 100, 0, 0}, /* ELM_A4 0 */ + { -30, 0, 100, 0, 0}, /* ELM_A5 0 */ + { -30, 0, 100, 0, 0}, /* ELM_A6 0 */ + { -30, 0, 100, 0, 0}, /* ELM_AB 0 */ + { 62, 31, 50, 0, 0}, /* ELM_AV 0 */ + { 62, 31, 50, 0, 0}, /* ELM_AVC 0 */ + { 0, 0, 50, 0, 0}, /* ELM_ASP 0 */ + { 0, 0, 50, 0, 0} /* ELM_AF 0 */ + } +}, + +{"RX", 10,10,10,0xD5,"R","",ELM_FEATURE_RZD, + { + { 270, 135, 50, 0, 0}, /* ELM_FN 0 */ + { 490, 0, 100, 0, 5}, /* ELM_F1 0 */ + { 1180, 0, 100, 0, 5}, /* ELM_F2 0 */ + { 1600, 1600, 0, 5, 5}, /* ELM_F3 0 */ + { 60, 30, 50, 0, 5}, /* ELM_B1 0 */ + { 90, 45, 50, 5, 5}, /* ELM_B2 0 */ + { 70, 35, 50, 5, 5}, /* ELM_B3 0 */ + { -30, 0, 100, 5, 5}, /* ELM_AN 0 */ + { 42, 21, 50, 5, 5}, /* ELM_A1 0 */ + { 35, 17.5, 50, 5, 5}, /* ELM_A2 0 */ + { 35, 17.5, 50, 5, 5}, /* ELM_A3 0 */ + { -30, 0, 50, 5, 5}, /* ELM_A4 15 */ + { -30, -15, 50, 5, 5}, /* ELM_A5 0 */ + { -30, -15, 50, 5, 5}, /* ELM_A6 0 */ + { -30, -15, 50, 5, 5}, /* ELM_AB 0 */ + { 50, 25, 50, 0, 0}, /* ELM_AV 0 */ + { 16, 8, 50, 0, 0}, /* ELM_AVC 0 */ + { 0, 0, 50, 0, 0}, /* ELM_ASP 0 */ + { 0, 0, 50, 0, 0} /* ELM_AF 0 */ + } +}, + +{"R", 10,11,11,0xA8,"r","r",ELM_FEATURE_ALV|ELM_FEATURE_APR, + { + { 270, 135, 50, 0, 0}, /* ELM_FN 0 */ + { 490, 0, 100, 0, 5}, /* ELM_F1 0 */ + { 1180, 590, 50, 5, 5}, /* ELM_F2 0 */ + { 1600, 740, 50, 5, 5}, /* ELM_F3 -60 */ + { 60, 0, 100, 0, 5}, /* ELM_B1 0 */ + { 90, 45, 50, 5, 5}, /* ELM_B2 0 */ + { 150, 75, 50, 5, 5}, /* ELM_B3 0 */ + { -30, 0, 100, 5, 5}, /* ELM_AN 0 */ + { 42, 21, 50, 5, 5}, /* ELM_A1 0 */ + { 35, 17.5, 50, 5, 5}, /* ELM_A2 0 */ + { 35, 17.5, 50, 5, 5}, /* ELM_A3 0 */ + { -30, 0, 50, 5, 5}, /* ELM_A4 15 */ + { -30, -15, 50, 5, 5}, /* ELM_A5 0 */ + { -30, -15, 50, 5, 5}, /* ELM_A6 0 */ + { -30, -15, 50, 5, 5}, /* ELM_AB 0 */ + { 62, 31, 50, 0, 0}, /* ELM_AV 0 */ + { 62, 31, 50, 0, 0}, /* ELM_AVC 0 */ + { 0, 0, 50, 0, 0}, /* ELM_ASP 0 */ + { 0, 0, 50, 0, 0} /* ELM_AF 0 */ + } +}, + +{"W", 10, 8, 8,0x77,"w","w",ELM_FEATURE_APR|ELM_FEATURE_LBV|ELM_FEATURE_VCD, + { + { 270, 135, 50, 0, 0}, /* ELM_FN 0 */ + { 190, 50, 50, 4, 4}, /* ELM_F1 -45 */ + { 760, 350, 50, 4, 4}, /* ELM_F2 -30 */ + { 2020, 980, 50, 4, 4}, /* ELM_F3 -30 */ + { 60, 30, 50, 4, 4}, /* ELM_B1 0 */ + { 90, 45, 50, 4, 4}, /* ELM_B2 0 */ + { 150, 75, 50, 4, 4}, /* ELM_B3 0 */ + { -30, 0, 100, 4, 4}, /* ELM_AN 0 */ + { 43.75, 21, 50, 4, 4}, /* ELM_A1 -0.875 */ + { 28, 14, 50, 4, 4}, /* ELM_A2 0 */ + { 21, 10.5, 50, 4, 4}, /* ELM_A3 0 */ + { -30, 0, 50, 4, 4}, /* ELM_A4 15 */ + { -30, -15, 50, 4, 4}, /* ELM_A5 0 */ + { -30, -15, 50, 4, 4}, /* ELM_A6 0 */ + { -30, -15, 50, 4, 4}, /* ELM_AB 0 */ + { 62, 31, 50, 0, 0}, /* ELM_AV 0 */ + { 62, 31, 50, 0, 0}, /* ELM_AVC 0 */ + { 0, 0, 50, 0, 0}, /* ELM_ASP 0 */ + { 0, 0, 50, 0, 0} /* ELM_AF 0 */ + } +}, + +{"Y", 10, 7, 7,0x6A,"j","j",ELM_FEATURE_APR|ELM_FEATURE_PAL|ELM_FEATURE_VCD, + { + { 270, 135, 50, 0, 0}, /* ELM_FN 0 */ + { 250, 110, 50, 4, 4}, /* ELM_F1 -15 */ + { 2500, 1190, 50, 4, 4}, /* ELM_F2 -60 */ + { 2980, 1460, 50, 4, 4}, /* ELM_F3 -30 */ + { 60, 30, 50, 4, 4}, /* ELM_B1 0 */ + { 90, 45, 50, 4, 4}, /* ELM_B2 0 */ + { 150, 75, 50, 4, 4}, /* ELM_B3 0 */ + { -30, 0, 100, 4, 4}, /* ELM_AN 0 */ + { 50.75, 24.5, 50, 4, 4}, /* ELM_A1 -0.875 */ + { 33.25, 17.5, 50, 4, 4}, /* ELM_A2 0.875 */ + { 38.5, 17.5, 50, 4, 4}, /* ELM_A3 -1.75 */ + { 31.5, 14, 50, 4, 4}, /* ELM_A4 -1.75 */ + { -30, -15, 50, 4, 4}, /* ELM_A5 0 */ + { -30, -15, 50, 4, 4}, /* ELM_A6 0 */ + { -30, -15, 50, 4, 4}, /* ELM_AB 0 */ + { 62, 31, 50, 0, 0}, /* ELM_AV 0 */ + { 16, 8, 50, 0, 0}, /* ELM_AVC 0 */ + { 0, 0, 50, 0, 0}, /* ELM_ASP 0 */ + { 0, 0, 50, 0, 0} /* ELM_AF 0 */ + } +}, + +{"I", 2, 8, 6,0x49,"I","I",ELM_FEATURE_FNT|ELM_FEATURE_SMH|ELM_FEATURE_UNR|ELM_FEATURE_VWL, + { + { 270, 135, 50, 0, 0}, /* ELM_FN 0 */ + { 400, 170, 50, 4, 4}, /* ELM_F1 -30 */ + { 2080, 1070, 50, 4, 4}, /* ELM_F2 30 */ + { 2560, 1340, 50, 4, 4}, /* ELM_F3 60 */ + { 60, 30, 50, 4, 4}, /* ELM_B1 0 */ + { 90, 45, 50, 4, 4}, /* ELM_B2 0 */ + { 150, 75, 50, 4, 4}, /* ELM_B3 0 */ + { -30, 0, 100, 4, 4}, /* ELM_AN 0 */ + { 50.75, 24.5, 50, 4, 4}, /* ELM_A1 -0.875 */ + { 36.75, 17.5, 50, 4, 4}, /* ELM_A2 -0.875 */ + { 35, 17.5, 50, 4, 4}, /* ELM_A3 0 */ + { 29.75, 14, 50, 4, 4}, /* ELM_A4 -0.875 */ + { -30, -15, 50, 4, 4}, /* ELM_A5 0 */ + { -30, -15, 50, 4, 4}, /* ELM_A6 0 */ + { -30, -15, 50, 4, 4}, /* ELM_AB 0 */ + { 62, 31, 50, 0, 0}, /* ELM_AV 0 */ + { 16, 8, 50, 0, 0}, /* ELM_AVC 0 */ + { 0, 0, 50, 0, 0}, /* ELM_ASP 0 */ + { 0, 0, 50, 0, 0} /* ELM_AF 0 */ + } +}, + +{"E", 2, 8, 4,0x45,"e","E",ELM_FEATURE_FNT|ELM_FEATURE_LMD|ELM_FEATURE_UNR|ELM_FEATURE_VWL, + { + { 270, 135, 50, 0, 0}, /* ELM_FN 0 */ + { 640, 350, 50, 4, 4}, /* ELM_F1 30 */ + { 2020, 1070, 50, 4, 4}, /* ELM_F2 60 */ + { 2500, 1220, 50, 4, 4}, /* ELM_F3 -30 */ + { 60, 30, 50, 4, 4}, /* ELM_B1 0 */ + { 90, 45, 50, 4, 4}, /* ELM_B2 0 */ + { 150, 75, 50, 4, 4}, /* ELM_B3 0 */ + { -30, 0, 100, 4, 4}, /* ELM_AN 0 */ + { 50.75, 24.5, 50, 4, 4}, /* ELM_A1 -0.875 */ + { 42, 21, 50, 4, 4}, /* ELM_A2 0 */ + { 38.5, 17.5, 50, 4, 4}, /* ELM_A3 -1.75 */ + { 31.5, 14, 50, 4, 4}, /* ELM_A4 -1.75 */ + { -30, -15, 50, 4, 4}, /* ELM_A5 0 */ + { -30, -15, 50, 4, 4}, /* ELM_A6 0 */ + { -30, -15, 50, 4, 4}, /* ELM_AB 0 */ + { 62, 31, 50, 0, 0}, /* ELM_AV 0 */ + { 16, 8, 50, 0, 0}, /* ELM_AVC 0 */ + { 0, 0, 50, 0, 0}, /* ELM_ASP 0 */ + { 0, 0, 50, 0, 0} /* ELM_AF 0 */ + } +}, + +{"AA", 2,10, 5,0x51,"&","&",ELM_FEATURE_FNT|ELM_FEATURE_LOW|ELM_FEATURE_UNR|ELM_FEATURE_VWL, + { + { 270, 135, 50, 0, 0}, /* ELM_FN 0 */ + { 790, 410, 50, 4, 4}, /* ELM_F1 15 */ + { 1780, 950, 50, 4, 4}, /* ELM_F2 60 */ + { 2500, 1220, 50, 4, 4}, /* ELM_F3 -30 */ + { 130, 65, 50, 4, 4}, /* ELM_B1 0 */ + { 90, 45, 50, 4, 4}, /* ELM_B2 0 */ + { 150, 75, 50, 4, 4}, /* ELM_B3 0 */ + { -30, 0, 100, 4, 4}, /* ELM_AN 0 */ + { 50.75, 24.5, 50, 4, 4}, /* ELM_A1 -0.875 */ + { 47.25, 24.5, 50, 4, 4}, /* ELM_A2 0.875 */ + { 38.5, 17.5, 50, 4, 4}, /* ELM_A3 -1.75 */ + { 31.5, 14, 50, 4, 4}, /* ELM_A4 -1.75 */ + { -30, -15, 50, 4, 4}, /* ELM_A5 0 */ + { -30, -15, 50, 4, 4}, /* ELM_A6 0 */ + { -30, -15, 50, 4, 4}, /* ELM_AB 0 */ + { 62, 31, 50, 0, 0}, /* ELM_AV 0 */ + { 16, 8, 50, 0, 0}, /* ELM_AVC 0 */ + { 0, 0, 50, 0, 0}, /* ELM_ASP 0 */ + { 0, 0, 50, 0, 0} /* ELM_AF 0 */ + } +}, + +{"U", 2, 9, 6,0xC3,"V","V",ELM_FEATURE_BCK|ELM_FEATURE_LMD|ELM_FEATURE_UNR|ELM_FEATURE_VWL, + { + { 270, 135, 50, 0, 0}, /* ELM_FN 0 */ + { 700, 350, 50, 4, 4}, /* ELM_F1 0 */ + { 1360, 710, 50, 4, 4}, /* ELM_F2 30 */ + { 2500, 1220, 50, 4, 4}, /* ELM_F3 -30 */ + { 60, 30, 50, 4, 4}, /* ELM_B1 0 */ + { 90, 45, 50, 4, 4}, /* ELM_B2 0 */ + { 150, 75, 50, 4, 4}, /* ELM_B3 0 */ + { -30, 0, 100, 4, 4}, /* ELM_AN 0 */ + { 50.75, 24.5, 50, 4, 4}, /* ELM_A1 -0.875 */ + { 43.75, 21, 50, 4, 4}, /* ELM_A2 -0.875 */ + { 31.5, 14, 50, 4, 4}, /* ELM_A3 -1.75 */ + { 24.5, 10.5, 50, 4, 4}, /* ELM_A4 -1.75 */ + { -30, -15, 50, 4, 4}, /* ELM_A5 0 */ + { -30, -15, 50, 4, 4}, /* ELM_A6 0 */ + { -30, -15, 50, 4, 4}, /* ELM_AB 0 */ + { 62, 31, 50, 0, 0}, /* ELM_AV 0 */ + { 16, 8, 50, 0, 0}, /* ELM_AVC 0 */ + { 0, 0, 50, 0, 0}, /* ELM_ASP 0 */ + { 0, 0, 50, 0, 0} /* ELM_AF 0 */ + } +}, + +{"O", 2, 9, 6,0x81,"0","A.",ELM_FEATURE_BCK|ELM_FEATURE_LOW|ELM_FEATURE_RND|ELM_FEATURE_VWL, + { + { 270, 135, 50, 0, 0}, /* ELM_FN 0 */ + { 610, 290, 50, 4, 4}, /* ELM_F1 -15 */ + { 880, 470, 50, 4, 4}, /* ELM_F2 30 */ + { 2500, 1220, 50, 4, 4}, /* ELM_F3 -30 */ + { 60, 30, 50, 4, 4}, /* ELM_B1 0 */ + { 90, 45, 50, 4, 4}, /* ELM_B2 0 */ + { 150, 75, 50, 4, 4}, /* ELM_B3 0 */ + { -30, 0, 100, 4, 4}, /* ELM_AN 0 */ + { 50.75, 24.5, 50, 4, 4}, /* ELM_A1 -0.875 */ + { 47.25, 24.5, 50, 4, 4}, /* ELM_A2 0.875 */ + { 22.75, 10.5, 50, 4, 4}, /* ELM_A3 -0.875 */ + { 15.75, 7, 50, 4, 4}, /* ELM_A4 -0.875 */ + { -30, -15, 50, 4, 4}, /* ELM_A5 0 */ + { -30, -15, 50, 4, 4}, /* ELM_A6 0 */ + { -30, -15, 50, 4, 4}, /* ELM_AB 0 */ + { 62, 31, 50, 0, 0}, /* ELM_AV 0 */ + { 16, 8, 50, 0, 0}, /* ELM_AVC 0 */ + { 0, 0, 50, 0, 0}, /* ELM_ASP 0 */ + { 0, 0, 50, 0, 0} /* ELM_AF 0 */ + } +}, + +{"OO", 2, 6, 4,0x55,"U","U",ELM_FEATURE_BCK|ELM_FEATURE_RND|ELM_FEATURE_SMH|ELM_FEATURE_VWL, + { + { 270, 135, 50, 0, 0}, /* ELM_FN 0 */ + { 370, 170, 50, 4, 4}, /* ELM_F1 -15 */ + { 1000, 470, 50, 4, 4}, /* ELM_F2 -30 */ + { 2500, 1220, 50, 4, 4}, /* ELM_F3 -30 */ + { 60, 30, 50, 4, 4}, /* ELM_B1 0 */ + { 90, 45, 50, 4, 4}, /* ELM_B2 0 */ + { 150, 75, 50, 4, 4}, /* ELM_B3 0 */ + { -30, 0, 100, 4, 4}, /* ELM_AN 0 */ + { 50.75, 24.5, 50, 4, 4}, /* ELM_A1 -0.875 */ + { 42, 21, 50, 4, 4}, /* ELM_A2 0 */ + { 28, 14, 50, 4, 4}, /* ELM_A3 0 */ + { 22.75, 10.5, 50, 4, 4}, /* ELM_A4 -0.875 */ + { -30, -15, 50, 4, 4}, /* ELM_A5 0 */ + { -30, -15, 50, 4, 4}, /* ELM_A6 0 */ + { -30, -15, 50, 4, 4}, /* ELM_AB 0 */ + { 62, 31, 50, 0, 0}, /* ELM_AV 0 */ + { 16, 8, 50, 0, 0}, /* ELM_AVC 0 */ + { 0, 0, 50, 0, 0}, /* ELM_ASP 0 */ + { 0, 0, 50, 0, 0} /* ELM_AF 0 */ + } +}, + +{"A", 2, 4, 4,0xAB,"@","@",ELM_FEATURE_CNT|ELM_FEATURE_MDL|ELM_FEATURE_UNR|ELM_FEATURE_VWL, + { + { 270, 135, 50, 0, 0}, /* ELM_FN 0 */ + { 490, 230, 50, 4, 4}, /* ELM_F1 -15 */ + { 1480, 710, 50, 4, 4}, /* ELM_F2 -30 */ + { 2500, 1220, 50, 4, 4}, /* ELM_F3 -30 */ + { 60, 30, 50, 4, 4}, /* ELM_B1 0 */ + { 90, 45, 50, 4, 4}, /* ELM_B2 0 */ + { 150, 75, 50, 4, 4}, /* ELM_B3 0 */ + { -30, 0, 100, 4, 4}, /* ELM_AN 0 */ + { 50.75, 24.5, 50, 4, 4}, /* ELM_A1 -0.875 */ + { 50.75, 24.5, 50, 4, 4}, /* ELM_A2 -0.875 */ + { 33.25, 17.5, 50, 4, 4}, /* ELM_A3 0.875 */ + { 26.25, 14, 50, 4, 4}, /* ELM_A4 0.875 */ + { -30, -15, 50, 4, 4}, /* ELM_A5 0 */ + { -30, -15, 50, 4, 4}, /* ELM_A6 0 */ + { -30, -15, 50, 4, 4}, /* ELM_AB 0 */ + { 62, 31, 50, 0, 0}, /* ELM_AV 0 */ + { 16, 8, 50, 0, 0}, /* ELM_AVC 0 */ + { 0, 0, 50, 0, 0}, /* ELM_ASP 0 */ + { 0, 0, 50, 0, 0} /* ELM_AF 0 */ + } +}, + +{"EE", 2,11, 7,0x69,"i","i",ELM_FEATURE_FNT|ELM_FEATURE_HGH|ELM_FEATURE_UNR|ELM_FEATURE_VWL, + { + { 270, 135, 50, 0, 0}, /* ELM_FN 0 */ + { 250, 110, 50, 4, 4}, /* ELM_F1 -15 */ + { 2320, 1190, 50, 4, 4}, /* ELM_F2 30 */ + { 3200, 1580, 50, 4, 4}, /* ELM_F3 -20 */ + { 60, 30, 50, 4, 4}, /* ELM_B1 0 */ + { 90, 45, 50, 4, 4}, /* ELM_B2 0 */ + { 150, 75, 50, 4, 4}, /* ELM_B3 0 */ + { -30, 0, 100, 4, 4}, /* ELM_AN 0 */ + { 50.75, 24.5, 50, 4, 4}, /* ELM_A1 -0.875 */ + { 33.25, 17.5, 50, 4, 4}, /* ELM_A2 0.875 */ + { 36.75, 17.5, 50, 4, 4}, /* ELM_A3 -0.875 */ + { 31.5, 14, 50, 4, 4}, /* ELM_A4 -1.75 */ + { -30, -15, 50, 4, 4}, /* ELM_A5 0 */ + { -30, -15, 50, 4, 4}, /* ELM_A6 0 */ + { -30, -15, 50, 4, 4}, /* ELM_AB 0 */ + { 62, 31, 50, 0, 0}, /* ELM_AV 0 */ + { 16, 8, 50, 0, 0}, /* ELM_AVC 0 */ + { 0, 0, 50, 0, 0}, /* ELM_ASP 0 */ + { 0, 0, 50, 0, 0} /* ELM_AF 0 */ + } +}, + +{"ER", 2,16,16,0xCE,"3","V\"",ELM_FEATURE_CNT|ELM_FEATURE_LMD|ELM_FEATURE_UNR|ELM_FEATURE_VWL, + { + { 270, 135, 50, 0, 0}, /* ELM_FN 0 */ + { 580, 290, 50, 4, 4}, /* ELM_F1 0 */ + { 1420, 710, 50, 4, 4}, /* ELM_F2 0 */ + { 2500, 1220, 50, 4, 4}, /* ELM_F3 -30 */ + { 60, 30, 50, 4, 4}, /* ELM_B1 0 */ + { 90, 45, 50, 4, 4}, /* ELM_B2 0 */ + { 150, 75, 50, 4, 4}, /* ELM_B3 0 */ + { -30, 0, 100, 4, 4}, /* ELM_AN 0 */ + { 50.75, 24.5, 50, 4, 4}, /* ELM_A1 -0.875 */ + { 45.5, 21, 50, 4, 4}, /* ELM_A2 -1.75 */ + { 33.25, 17.5, 50, 4, 4}, /* ELM_A3 0.875 */ + { 26.25, 14, 50, 4, 4}, /* ELM_A4 0.875 */ + { -30, -15, 50, 4, 4}, /* ELM_A5 0 */ + { -30, -15, 50, 4, 4}, /* ELM_A6 0 */ + { -30, -15, 50, 4, 4}, /* ELM_AB 0 */ + { 62, 31, 50, 0, 0}, /* ELM_AV 0 */ + { 16, 8, 50, 0, 0}, /* ELM_AVC 0 */ + { 0, 0, 50, 0, 0}, /* ELM_ASP 0 */ + { 0, 0, 50, 0, 0} /* ELM_AF 0 */ + } +}, + +{"AR", 2,15,15,0x41,"A","A",ELM_FEATURE_BCK|ELM_FEATURE_LOW|ELM_FEATURE_UNR|ELM_FEATURE_VWL, + { + { 270, 135, 50, 0, 0}, /* ELM_FN 0 */ + { 790, 410, 50, 4, 4}, /* ELM_F1 15 */ + { 880, 470, 50, 4, 4}, /* ELM_F2 30 */ + { 2500, 1220, 50, 4, 4}, /* ELM_F3 -30 */ + { 60, 30, 50, 4, 4}, /* ELM_B1 0 */ + { 90, 45, 50, 4, 4}, /* ELM_B2 0 */ + { 150, 75, 50, 4, 4}, /* ELM_B3 0 */ + { -30, 0, 100, 4, 4}, /* ELM_AN 0 */ + { 50.75, 24.5, 50, 4, 4}, /* ELM_A1 -0.875 */ + { 49, 24.5, 50, 4, 4}, /* ELM_A2 0 */ + { 29.75, 14, 50, 4, 4}, /* ELM_A3 -0.875 */ + { 22.75, 10.5, 50, 4, 4}, /* ELM_A4 -0.875 */ + { -30, -15, 50, 4, 4}, /* ELM_A5 0 */ + { -30, -15, 50, 4, 4}, /* ELM_A6 0 */ + { -30, -15, 50, 4, 4}, /* ELM_AB 0 */ + { 62, 31, 50, 0, 0}, /* ELM_AV 0 */ + { 16, 8, 50, 0, 0}, /* ELM_AVC 0 */ + { 0, 0, 50, 0, 0}, /* ELM_ASP 0 */ + { 0, 0, 50, 0, 0} /* ELM_AF 0 */ + } +}, + +{"AW", 2,16,10,0x8D,"O","O",ELM_FEATURE_BCK|ELM_FEATURE_LMD|ELM_FEATURE_RND|ELM_FEATURE_VWL, + { + { 270, 135, 50, 0, 0}, /* ELM_FN 0 */ + { 490, 230, 50, 4, 4}, /* ELM_F1 -15 */ + { 820, 470, 50, 4, 4}, /* ELM_F2 60 */ + { 2500, 1220, 50, 4, 4}, /* ELM_F3 -30 */ + { 60, 30, 50, 4, 4}, /* ELM_B1 0 */ + { 90, 45, 50, 4, 4}, /* ELM_B2 0 */ + { 150, 75, 50, 4, 4}, /* ELM_B3 0 */ + { -30, 0, 100, 4, 4}, /* ELM_AN 0 */ + { 50.75, 24.5, 50, 4, 4}, /* ELM_A1 -0.875 */ + { 45.5, 21, 50, 4, 4}, /* ELM_A2 -1.75 */ + { 22.75, 10.5, 50, 4, 4}, /* ELM_A3 -0.875 */ + { 17.5, 7, 50, 4, 4}, /* ELM_A4 -1.75 */ + { -30, -15, 50, 4, 4}, /* ELM_A5 0 */ + { -30, -15, 50, 4, 4}, /* ELM_A6 0 */ + { -30, -15, 50, 4, 4}, /* ELM_AB 0 */ + { 62, 31, 50, 0, 0}, /* ELM_AV 0 */ + { 16, 8, 50, 0, 0}, /* ELM_AVC 0 */ + { 0, 0, 50, 0, 0}, /* ELM_ASP 0 */ + { 0, 0, 50, 0, 0} /* ELM_AF 0 */ + } +}, + +{"UU", 2,14, 9,0x75,"u","u",ELM_FEATURE_BCK|ELM_FEATURE_HGH|ELM_FEATURE_RND|ELM_FEATURE_VWL, + { + { 270, 135, 50, 0, 0}, /* ELM_FN 0 */ + { 250, 110, 50, 4, 4}, /* ELM_F1 -15 */ + { 880, 470, 50, 4, 4}, /* ELM_F2 30 */ + { 2200, 1100, 50, 4, 4}, /* ELM_F3 0 */ + { 60, 30, 50, 4, 4}, /* ELM_B1 0 */ + { 90, 45, 50, 4, 4}, /* ELM_B2 0 */ + { 150, 75, 50, 4, 4}, /* ELM_B3 0 */ + { -30, 0, 100, 4, 4}, /* ELM_AN 0 */ + { 50.75, 24.5, 50, 4, 4}, /* ELM_A1 -0.875 */ + { 38.5, 17.5, 50, 4, 4}, /* ELM_A2 -1.75 */ + { 17.5, 7, 50, 4, 4}, /* ELM_A3 -1.75 */ + { 10.5, 3.5, 50, 4, 4}, /* ELM_A4 -1.75 */ + { -30, -15, 50, 4, 4}, /* ELM_A5 0 */ + { -30, -15, 50, 4, 4}, /* ELM_A6 0 */ + { -30, -15, 50, 4, 4}, /* ELM_AB 0 */ + { 62, 31, 50, 0, 0}, /* ELM_AV 0 */ + { 16, 8, 50, 0, 0}, /* ELM_AVC 0 */ + { 0, 0, 50, 0, 0}, /* ELM_ASP 0 */ + { 0, 0, 50, 0, 0} /* ELM_AF 0 */ + } +}, + +{"AI", 2, 9, 6,0x45,"e","E",ELM_FEATURE_FNT|ELM_FEATURE_LMD|ELM_FEATURE_UNR|ELM_FEATURE_VWL, + { + { 270, 135, 50, 0, 0}, /* ELM_FN 0 */ + { 640, 290, 50, 5, 5}, /* ELM_F1 -30 */ + { 1600, 830, 50, 5, 5}, /* ELM_F2 30 */ + { 2500, 1220, 50, 5, 5}, /* ELM_F3 -30 */ + { 60, 30, 50, 5, 5}, /* ELM_B1 0 */ + { 90, 45, 50, 5, 5}, /* ELM_B2 0 */ + { 150, 75, 50, 5, 5}, /* ELM_B3 0 */ + { -30, 0, 100, 5, 5}, /* ELM_AN 0 */ + { 50.75, 24.5, 50, 5, 5}, /* ELM_A1 -0.875 */ + { 45.5, 21, 50, 5, 5}, /* ELM_A2 -1.75 */ + { 35, 17.5, 50, 5, 5}, /* ELM_A3 0 */ + { 29.75, 14, 50, 5, 5}, /* ELM_A4 -0.875 */ + { -30, -15, 50, 5, 5}, /* ELM_A5 0 */ + { -30, -15, 50, 5, 5}, /* ELM_A6 0 */ + { -30, -15, 50, 5, 5}, /* ELM_AB 0 */ + { 62, 31, 50, 0, 0}, /* ELM_AV 0 */ + { 16, 8, 50, 0, 0}, /* ELM_AVC 0 */ + { 0, 0, 50, 0, 0}, /* ELM_ASP 0 */ + { 0, 0, 50, 0, 0} /* ELM_AF 0 */ + } +}, + +{"IE", 2, 9, 6,0x61,"a","a",ELM_FEATURE_CNT|ELM_FEATURE_LOW|ELM_FEATURE_UNR|ELM_FEATURE_VWL, + { + { 270, 135, 50, 0, 0}, /* ELM_FN 0 */ + { 790, 410, 50, 5, 5}, /* ELM_F1 15 */ + { 880, 470, 50, 5, 5}, /* ELM_F2 30 */ + { 2500, 1220, 50, 5, 5}, /* ELM_F3 -30 */ + { 60, 30, 50, 5, 5}, /* ELM_B1 0 */ + { 90, 45, 50, 5, 5}, /* ELM_B2 0 */ + { 150, 75, 50, 5, 5}, /* ELM_B3 0 */ + { -30, 0, 100, 5, 5}, /* ELM_AN 0 */ + { 50.75, 24.5, 50, 5, 5}, /* ELM_A1 -0.875 */ + { 49, 24.5, 50, 5, 5}, /* ELM_A2 0 */ + { 29.75, 14, 50, 5, 5}, /* ELM_A3 -0.875 */ + { 22.75, 10.5, 50, 5, 5}, /* ELM_A4 -0.875 */ + { -30, -15, 50, 5, 5}, /* ELM_A5 0 */ + { -30, -15, 50, 5, 5}, /* ELM_A6 0 */ + { -30, -15, 50, 5, 5}, /* ELM_AB 0 */ + { 62, 31, 50, 0, 0}, /* ELM_AV 0 */ + { 16, 8, 50, 0, 0}, /* ELM_AVC 0 */ + { 0, 0, 50, 0, 0}, /* ELM_ASP 0 */ + { 0, 0, 50, 0, 0} /* ELM_AF 0 */ + } +}, + +{"OI", 2, 9, 6,0x6F,"o","o",ELM_FEATURE_BCK|ELM_FEATURE_RND|ELM_FEATURE_UMD|ELM_FEATURE_VWL, + { + { 270, 135, 50, 0, 0}, /* ELM_FN 0 */ + { 490, 230, 50, 5, 5}, /* ELM_F1 -15 */ + { 820, 350, 50, 5, 5}, /* ELM_F2 -60 */ + { 2500, 1220, 50, 5, 5}, /* ELM_F3 -30 */ + { 60, 30, 50, 5, 5}, /* ELM_B1 0 */ + { 90, 45, 50, 5, 5}, /* ELM_B2 0 */ + { 150, 75, 50, 5, 5}, /* ELM_B3 0 */ + { -30, 0, 100, 5, 5}, /* ELM_AN 0 */ + { 50.75, 24.5, 50, 5, 5}, /* ELM_A1 -0.875 */ + { 45.5, 21, 50, 5, 5}, /* ELM_A2 -1.75 */ + { 22.75, 10.5, 50, 5, 5}, /* ELM_A3 -0.875 */ + { 17.5, 7, 50, 5, 5}, /* ELM_A4 -1.75 */ + { -30, -15, 50, 5, 5}, /* ELM_A5 0 */ + { -30, -15, 50, 5, 5}, /* ELM_A6 0 */ + { -30, -15, 50, 5, 5}, /* ELM_AB 0 */ + { 62, 31, 50, 0, 0}, /* ELM_AV 0 */ + { 16, 8, 50, 0, 0}, /* ELM_AVC 0 */ + { 0, 0, 50, 0, 0}, /* ELM_ASP 0 */ + { 0, 0, 50, 0, 0} /* ELM_AF 0 */ + } +}, + +{"OU", 2, 9, 6,0x61,"a","a",ELM_FEATURE_CNT|ELM_FEATURE_LOW|ELM_FEATURE_UNR|ELM_FEATURE_VWL, + { + { 270, 135, 50, 0, 0}, /* ELM_FN 0 */ + { 790, 410, 50, 5, 5}, /* ELM_F1 15 */ + { 1300, 590, 50, 5, 5}, /* ELM_F2 -60 */ + { 2500, 1220, 50, 5, 5}, /* ELM_F3 -30 */ + { 60, 30, 50, 5, 5}, /* ELM_B1 0 */ + { 90, 45, 50, 5, 5}, /* ELM_B2 0 */ + { 150, 75, 50, 5, 5}, /* ELM_B3 0 */ + { -30, 0, 100, 5, 5}, /* ELM_AN 0 */ + { 50.75, 24.5, 50, 5, 5}, /* ELM_A1 -0.875 */ + { 47.25, 24.5, 50, 5, 5}, /* ELM_A2 0.875 */ + { 35, 17.5, 50, 5, 5}, /* ELM_A3 0 */ + { 28, 14, 50, 5, 5}, /* ELM_A4 0 */ + { -30, -15, 50, 5, 5}, /* ELM_A5 0 */ + { -30, -15, 50, 5, 5}, /* ELM_A6 0 */ + { -30, -15, 50, 5, 5}, /* ELM_AB 0 */ + { 62, 31, 50, 0, 0}, /* ELM_AV 0 */ + { 16, 8, 50, 0, 0}, /* ELM_AVC 0 */ + { 0, 0, 50, 0, 0}, /* ELM_ASP 0 */ + { 0, 0, 50, 0, 0} /* ELM_AF 0 */ + } +}, + +{"OV", 2, 8, 6,0x55,"U","U",ELM_FEATURE_BCK|ELM_FEATURE_RND|ELM_FEATURE_SMH|ELM_FEATURE_VWL, + { + { 270, 135, 50, 0, 0}, /* ELM_FN 0 */ + { 370, 170, 50, 4, 4}, /* ELM_F1 -15 */ + { 1000, 470, 50, 4, 4}, /* ELM_F2 -30 */ + { 2500, 1220, 50, 4, 4}, /* ELM_F3 -30 */ + { 60, 30, 50, 4, 4}, /* ELM_B1 0 */ + { 90, 45, 50, 4, 4}, /* ELM_B2 0 */ + { 150, 75, 50, 4, 4}, /* ELM_B3 0 */ + { -30, 0, 100, 4, 4}, /* ELM_AN 0 */ + { 50.75, 24.5, 50, 4, 4}, /* ELM_A1 -0.875 */ + { 42, 21, 50, 4, 4}, /* ELM_A2 0 */ + { 28, 14, 50, 4, 4}, /* ELM_A3 0 */ + { 22.75, 10.5, 50, 4, 4}, /* ELM_A4 -0.875 */ + { -30, -15, 50, 4, 4}, /* ELM_A5 0 */ + { -30, -15, 50, 4, 4}, /* ELM_A6 0 */ + { -30, -15, 50, 4, 4}, /* ELM_AB 0 */ + { 62, 31, 50, 0, 0}, /* ELM_AV 0 */ + { 16, 8, 50, 0, 0}, /* ELM_AVC 0 */ + { 0, 0, 50, 0, 0}, /* ELM_ASP 0 */ + { 0, 0, 50, 0, 0} /* ELM_AF 0 */ + } +}, + +{"OA", 2, 9, 6,0xAB,"@","@",ELM_FEATURE_CNT|ELM_FEATURE_MDL|ELM_FEATURE_UNR|ELM_FEATURE_VWL, + { + { 270, 135, 50, 0, 0}, /* ELM_FN 0 */ + { 490, 230, 50, 5, 5}, /* ELM_F1 -15 */ + { 1480, 710, 50, 5, 5}, /* ELM_F2 -30 */ + { 2500, 1220, 50, 5, 5}, /* ELM_F3 -30 */ + { 60, 30, 50, 5, 5}, /* ELM_B1 0 */ + { 90, 45, 50, 5, 5}, /* ELM_B2 0 */ + { 150, 75, 50, 5, 5}, /* ELM_B3 0 */ + { -30, 0, 100, 5, 5}, /* ELM_AN 0 */ + { 50.75, 24.5, 50, 5, 5}, /* ELM_A1 -0.875 */ + { 50.75, 24.5, 50, 5, 5}, /* ELM_A2 -0.875 */ + { 33.25, 17.5, 50, 5, 5}, /* ELM_A3 0.875 */ + { 26.25, 14, 50, 5, 5}, /* ELM_A4 0.875 */ + { -30, -15, 50, 5, 5}, /* ELM_A5 0 */ + { -30, -15, 50, 5, 5}, /* ELM_A6 0 */ + { -30, -15, 50, 5, 5}, /* ELM_AB 0 */ + { 62, 31, 50, 0, 0}, /* ELM_AV 0 */ + { 16, 8, 50, 0, 0}, /* ELM_AVC 0 */ + { 0, 0, 50, 0, 0}, /* ELM_ASP 0 */ + { 0, 0, 50, 0, 0} /* ELM_AF 0 */ + } +}, + +{"IA", 2, 9, 6,0x49,"I","I",ELM_FEATURE_FNT|ELM_FEATURE_SMH|ELM_FEATURE_UNR|ELM_FEATURE_VWL, + { + { 270, 135, 50, 0, 0}, /* ELM_FN 0 */ + { 310, 170, 50, 5, 5}, /* ELM_F1 15 */ + { 2200, 1070, 50, 5, 5}, /* ELM_F2 -30 */ + { 2920, 1460, 50, 5, 5}, /* ELM_F3 0 */ + { 60, 30, 50, 5, 5}, /* ELM_B1 0 */ + { 90, 45, 50, 5, 5}, /* ELM_B2 0 */ + { 150, 75, 50, 5, 5}, /* ELM_B3 0 */ + { -30, 0, 100, 5, 5}, /* ELM_AN 0 */ + { 50.75, 24.5, 50, 5, 5}, /* ELM_A1 -0.875 */ + { 35, 17.5, 50, 5, 5}, /* ELM_A2 0 */ + { 36.75, 17.5, 50, 5, 5}, /* ELM_A3 -0.875 */ + { 31.5, 14, 50, 5, 5}, /* ELM_A4 -1.75 */ + { -30, -15, 50, 5, 5}, /* ELM_A5 0 */ + { -30, -15, 50, 5, 5}, /* ELM_A6 0 */ + { -30, -15, 50, 5, 5}, /* ELM_AB 0 */ + { 62, 31, 50, 0, 0}, /* ELM_AV 0 */ + { 16, 8, 50, 0, 0}, /* ELM_AVC 0 */ + { 0, 0, 50, 0, 0}, /* ELM_ASP 0 */ + { 0, 0, 50, 0, 0} /* ELM_AF 0 */ + } +}, + +{"IB", 2, 8, 6,0x51,"@","@",ELM_FEATURE_FNT|ELM_FEATURE_LOW|ELM_FEATURE_UNR|ELM_FEATURE_VWL, + { + { 270, 135, 50, 0, 0}, /* ELM_FN 0 */ + { 490, 230, 50, 4, 4}, /* ELM_F1 -15 */ + { 1480, 710, 50, 4, 4}, /* ELM_F2 -30 */ + { 2500, 1220, 50, 4, 4}, /* ELM_F3 -30 */ + { 60, 30, 50, 4, 4}, /* ELM_B1 0 */ + { 90, 45, 50, 4, 4}, /* ELM_B2 0 */ + { 150, 75, 50, 4, 4}, /* ELM_B3 0 */ + { -30, 0, 100, 4, 4}, /* ELM_AN 0 */ + { 50.75, 24.5, 50, 4, 4}, /* ELM_A1 -0.875 */ + { 50.75, 24.5, 50, 4, 4}, /* ELM_A2 -0.875 */ + { 33.25, 17.5, 50, 4, 4}, /* ELM_A3 0.875 */ + { 26.25, 14, 50, 4, 4}, /* ELM_A4 0.875 */ + { -30, -15, 50, 4, 4}, /* ELM_A5 0 */ + { -30, -15, 50, 4, 4}, /* ELM_A6 0 */ + { -30, -15, 50, 4, 4}, /* ELM_AB 0 */ + { 62, 31, 50, 0, 0}, /* ELM_AV 0 */ + { 16, 8, 50, 0, 0}, /* ELM_AVC 0 */ + { 0, 0, 50, 0, 0}, /* ELM_ASP 0 */ + { 0, 0, 50, 0, 0} /* ELM_AF 0 */ + } +}, + +{"AIR", 2, 9, 6,0x45,"e","E",ELM_FEATURE_FNT|ELM_FEATURE_LMD|ELM_FEATURE_UNR|ELM_FEATURE_VWL, + { + { 270, 135, 50, 0, 0}, /* ELM_FN 0 */ + { 640, 350, 50, 5, 5}, /* ELM_F1 30 */ + { 2020, 1070, 50, 5, 5}, /* ELM_F2 60 */ + { 2500, 1220, 50, 5, 5}, /* ELM_F3 -30 */ + { 60, 30, 50, 5, 5}, /* ELM_B1 0 */ + { 90, 45, 50, 5, 5}, /* ELM_B2 0 */ + { 150, 75, 50, 5, 5}, /* ELM_B3 0 */ + { -30, 0, 100, 5, 5}, /* ELM_AN 0 */ + { 50.75, 24.5, 50, 5, 5}, /* ELM_A1 -0.875 */ + { 42, 21, 50, 5, 5}, /* ELM_A2 0 */ + { 38.5, 17.5, 50, 5, 5}, /* ELM_A3 -1.75 */ + { 31.5, 14, 50, 5, 5}, /* ELM_A4 -1.75 */ + { -30, -15, 50, 5, 5}, /* ELM_A5 0 */ + { -30, -15, 50, 5, 5}, /* ELM_A6 0 */ + { -30, -15, 50, 5, 5}, /* ELM_AB 0 */ + { 62, 31, 50, 0, 0}, /* ELM_AV 0 */ + { 16, 8, 50, 0, 0}, /* ELM_AVC 0 */ + { 0, 0, 50, 0, 0}, /* ELM_ASP 0 */ + { 0, 0, 50, 0, 0} /* ELM_AF 0 */ + } +}, + +{"OOR", 2, 9, 6,0x55,"U","U",ELM_FEATURE_BCK|ELM_FEATURE_RND|ELM_FEATURE_SMH|ELM_FEATURE_VWL, + { + { 270, 135, 50, 0, 0}, /* ELM_FN 0 */ + { 370, 170, 50, 5, 5}, /* ELM_F1 -15 */ + { 1000, 470, 50, 5, 5}, /* ELM_F2 -30 */ + { 2500, 1220, 50, 5, 5}, /* ELM_F3 -30 */ + { 60, 30, 50, 5, 5}, /* ELM_B1 0 */ + { 90, 45, 50, 5, 5}, /* ELM_B2 0 */ + { 150, 75, 50, 5, 5}, /* ELM_B3 0 */ + { -30, 0, 100, 5, 5}, /* ELM_AN 0 */ + { 50.75, 24.5, 50, 5, 5}, /* ELM_A1 -0.875 */ + { 42, 21, 50, 5, 5}, /* ELM_A2 0 */ + { 28, 14, 50, 5, 5}, /* ELM_A3 0 */ + { 22.75, 7, 50, 5, 5}, /* ELM_A4 -4.375 */ + { -30, -15, 50, 5, 5}, /* ELM_A5 0 */ + { -30, -15, 50, 5, 5}, /* ELM_A6 0 */ + { -30, -15, 50, 5, 5}, /* ELM_AB 0 */ + { 62, 31, 50, 0, 0}, /* ELM_AV 0 */ + { 16, 8, 50, 0, 0}, /* ELM_AVC 0 */ + { 0, 0, 50, 0, 0}, /* ELM_ASP 0 */ + { 0, 0, 50, 0, 0} /* ELM_AF 0 */ + } +}, + +{"OR", 2, 9, 6,0x8D,"O","O",ELM_FEATURE_BCK|ELM_FEATURE_LMD|ELM_FEATURE_RND|ELM_FEATURE_VWL, + { + { 270, 135, 50, 0, 0}, /* ELM_FN 0 */ + { 490, 230, 50, 5, 5}, /* ELM_F1 -15 */ + { 820, 470, 50, 5, 5}, /* ELM_F2 60 */ + { 2500, 1220, 50, 5, 5}, /* ELM_F3 -30 */ + { 60, 30, 50, 5, 5}, /* ELM_B1 0 */ + { 90, 45, 50, 5, 5}, /* ELM_B2 0 */ + { 150, 75, 50, 5, 5}, /* ELM_B3 0 */ + { -30, 0, 100, 5, 5}, /* ELM_AN 0 */ + { 50.75, 24.5, 50, 5, 5}, /* ELM_A1 -0.875 */ + { 45.5, 21, 50, 5, 5}, /* ELM_A2 -1.75 */ + { 22.75, 10.5, 50, 5, 5}, /* ELM_A3 -0.875 */ + { 17.5, 7, 50, 5, 5}, /* ELM_A4 -1.75 */ + { -30, -15, 50, 5, 5}, /* ELM_A5 0 */ + { -30, -15, 50, 5, 5}, /* ELM_A6 0 */ + { -30, -15, 50, 5, 5}, /* ELM_AB 0 */ + { 62, 31, 50, 0, 0}, /* ELM_AV 0 */ + { 16, 8, 50, 0, 0}, /* ELM_AVC 0 */ + { 0, 0, 50, 0, 0}, /* ELM_ASP 0 */ + { 0, 0, 50, 0, 0} /* ELM_AF 0 */ + } +} + diff --git a/src/soloud/src/audiosource/speech/darray.cpp b/src/soloud/src/audiosource/speech/darray.cpp new file mode 100644 index 0000000..4a6eae4 --- /dev/null +++ b/src/soloud/src/audiosource/speech/darray.cpp @@ -0,0 +1,70 @@ +#include +#include +#include "darray.h" + +darray::darray() +{ + mAllocChunk = 128; + mAllocated = mUsed = 0; + mData = NULL; +} + +void darray::clear() +{ + free(mData); + mAllocChunk = 128; + mAllocated = mUsed = 0; + mData = NULL; +} + +darray::~darray() +{ + clear(); +} + +char * darray::getDataInPos(int aPosition) +{ + if (aPosition < mAllocated && aPosition < mUsed) + return mData + aPosition; + + if (aPosition >= mAllocated) + { + int newsize = mAllocated; + + while (newsize <= aPosition) + { + newsize += mAllocChunk; + mAllocChunk *= 2; + } + + char *newdata = (char*)realloc(mData, newsize); + if (!newdata) + { + free(mData); + mData = NULL; + mAllocated = mUsed = 0; + return NULL; + } + else + { + memset(newdata + mAllocated, 0, newsize - mAllocated); + } + + mData = newdata; + mAllocated = newsize; + } + + if (aPosition >= mUsed) + { + mUsed = aPosition + 1; + } + + return mData + aPosition; +} + +void darray::put(int aData) +{ + char *s = getDataInPos(mUsed); + + *s = aData; +} diff --git a/src/soloud/src/audiosource/speech/darray.h b/src/soloud/src/audiosource/speech/darray.h new file mode 100644 index 0000000..d3251fb --- /dev/null +++ b/src/soloud/src/audiosource/speech/darray.h @@ -0,0 +1,22 @@ +#if !defined(DARRAY_H) +#define DARRAY_H + +class darray +{ +protected: + char *mData; + int mUsed; + int mAllocated; + int mAllocChunk; +public: + darray(); + ~darray(); + void clear(); + char *getDataInPos(int aPosition); + void put(int aData); + int getSize() const { return mUsed; } + char *getData() { return mData; } +}; + +#endif + diff --git a/src/soloud/src/audiosource/speech/klatt.cpp b/src/soloud/src/audiosource/speech/klatt.cpp new file mode 100644 index 0000000..cd5e116 --- /dev/null +++ b/src/soloud/src/audiosource/speech/klatt.cpp @@ -0,0 +1,1073 @@ +#include +#include +#include "klatt.h" +#include "darray.h" +#include "resonator.h" + +#ifndef PI +#define PI 3.1415926535897932384626433832795f +#endif + +#ifndef NULL +#define NULL 0 +#endif + +class Interp +{ +public: + float mSteady; + float mFixed; + char mProportion; + char mExtDelay; + char mIntDelay; +}; + + +enum Eparm_e +{ + ELM_FN, ELM_F1, ELM_F2, ELM_F3, + ELM_B1, ELM_B2, ELM_B3, ELM_AN, + ELM_A1, ELM_A2, ELM_A3, ELM_A4, + ELM_A5, ELM_A6, ELM_AB, ELM_AV, + ELM_AVC, ELM_ASP, ELM_AF, + ELM_COUNT +}; + +class Element +{ +public: + const char *mName; // unused + const char mRK; + const char mDU; + const char mUD; + unsigned char mFont; // unused + const char *mDict; // unused + const char *mIpa; // unused + int mFeat; // only ELM_FEATURE_VWL + Interp mInterpolator[ELM_COUNT]; + }; + +enum ELEMENT_FEATURES +{ + ELM_FEATURE_ALV = 0x00000001, + ELM_FEATURE_APR = 0x00000002, + ELM_FEATURE_BCK = 0x00000004, + ELM_FEATURE_BLB = 0x00000008, + ELM_FEATURE_CNT = 0x00000010, + ELM_FEATURE_DNT = 0x00000020, + ELM_FEATURE_FNT = 0x00000040, + ELM_FEATURE_FRC = 0x00000080, + ELM_FEATURE_GLT = 0x00000100, + ELM_FEATURE_HGH = 0x00000200, + ELM_FEATURE_LAT = 0x00000400, + ELM_FEATURE_LBD = 0x00000800, + ELM_FEATURE_LBV = 0x00001000, + ELM_FEATURE_LMD = 0x00002000, + ELM_FEATURE_LOW = 0x00004000, + ELM_FEATURE_MDL = 0x00008000, + ELM_FEATURE_NAS = 0x00010000, + ELM_FEATURE_PAL = 0x00020000, + ELM_FEATURE_PLA = 0x00040000, + ELM_FEATURE_RND = 0x00080000, + ELM_FEATURE_RZD = 0x00100000, + ELM_FEATURE_SMH = 0x00200000, + ELM_FEATURE_STP = 0x00400000, + ELM_FEATURE_UMD = 0x00800000, + ELM_FEATURE_UNR = 0x01000000, + ELM_FEATURE_VCD = 0x02000000, + ELM_FEATURE_VEL = 0x04000000, + ELM_FEATURE_VLS = 0x08000000, + ELM_FEATURE_VWL = 0x10000000 +}; + +enum ELEMENTS +{ + ELM_END = 0, + ELM_Q, ELM_P, ELM_PY, ELM_PZ, ELM_T, ELM_TY, + ELM_TZ, ELM_K, ELM_KY, ELM_KZ, ELM_B, ELM_BY, ELM_BZ, + ELM_D, ELM_DY, ELM_DZ, ELM_G, ELM_GY, ELM_GZ, ELM_M, + ELM_N, ELM_NG, ELM_F, ELM_TH, ELM_S, ELM_SH, ELM_X, + ELM_H, ELM_V, ELM_QQ, ELM_DH, ELM_DI, ELM_Z, ELM_ZZ, + ELM_ZH, ELM_CH, ELM_CI, ELM_J, ELM_JY, ELM_L, ELM_LL, + ELM_RX, ELM_R, ELM_W, ELM_Y, ELM_I, ELM_E, ELM_AA, + ELM_U, ELM_O, ELM_OO, ELM_A, ELM_EE, ELM_ER, ELM_AR, + ELM_AW, ELM_UU, ELM_AI, ELM_IE, ELM_OI, ELM_OU, ELM_OV, + ELM_OA, ELM_IA, ELM_IB, ELM_AIR,ELM_OOR,ELM_OR +}; + +#define PHONEME_COUNT 53 +#define AMP_ADJ 14 +#define StressDur(e,s) (s,((e->mDU + e->mUD)/2)) + + + + +class PhonemeToElements +{ +public: + int mKey; + char mData[8]; +}; + +/* Order is important - 2 byte phonemes first, otherwise + the search function will fail*/ +static PhonemeToElements phoneme_to_elements[PHONEME_COUNT] = +{ + /* mKey, count, 0-7 elements */ +/* tS */ 0x5374, 2, ELM_CH, ELM_CI, 0, 0, 0, 0, 0, +/* dZ */ 0x5a64, 4, ELM_J, ELM_JY, ELM_QQ, ELM_JY, 0, 0, 0, +/* rr */ 0x7272, 3, ELM_R, ELM_QQ, ELM_R, 0, 0, 0, 0, +/* eI */ 0x4965, 2, ELM_AI, ELM_I, 0, 0, 0, 0, 0, +/* aI */ 0x4961, 2, ELM_IE, ELM_I, 0, 0, 0, 0, 0, +/* oI */ 0x496f, 2, ELM_OI, ELM_I, 0, 0, 0, 0, 0, +/* aU */ 0x5561, 2, ELM_OU, ELM_OV, 0, 0, 0, 0, 0, +/* @U */ 0x5540, 2, ELM_OA, ELM_OV, 0, 0, 0, 0, 0, +/* I@ */ 0x4049, 2, ELM_IA, ELM_IB, 0, 0, 0, 0, 0, +/* e@ */ 0x4065, 2, ELM_AIR, ELM_IB, 0, 0, 0, 0, 0, +/* U@ */ 0x4055, 2, ELM_OOR, ELM_IB, 0, 0, 0, 0, 0, +/* O@ */ 0x404f, 2, ELM_OR, ELM_IB, 0, 0, 0, 0, 0, +/* oU */ 0x556f, 2, ELM_OI, ELM_OV, 0, 0, 0, 0, 0, +/* */ 0x0020, 1, ELM_Q, 0, 0, 0, 0, 0, 0, +/* p */ 0x0070, 3, ELM_P, ELM_PY, ELM_PZ, 0, 0, 0, 0, +/* t */ 0x0074, 3, ELM_T, ELM_TY, ELM_TZ, 0, 0, 0, 0, +/* k */ 0x006b, 3, ELM_K, ELM_KY, ELM_KZ, 0, 0, 0, 0, +/* b */ 0x0062, 3, ELM_B, ELM_BY, ELM_BZ, 0, 0, 0, 0, +/* d */ 0x0064, 3, ELM_D, ELM_DY, ELM_DZ, 0, 0, 0, 0, +/* g */ 0x0067, 3, ELM_G, ELM_GY, ELM_GZ, 0, 0, 0, 0, +/* m */ 0x006d, 1, ELM_M, 0, 0, 0, 0, 0, 0, +/* n */ 0x006e, 1, ELM_N, 0, 0, 0, 0, 0, 0, +/* N */ 0x004e, 1, ELM_NG, 0, 0, 0, 0, 0, 0, +/* f */ 0x0066, 1, ELM_F, 0, 0, 0, 0, 0, 0, +/* T */ 0x0054, 1, ELM_TH, 0, 0, 0, 0, 0, 0, +/* s */ 0x0073, 1, ELM_S, 0, 0, 0, 0, 0, 0, +/* S */ 0x0053, 1, ELM_SH, 0, 0, 0, 0, 0, 0, +/* h */ 0x0068, 1, ELM_H, 0, 0, 0, 0, 0, 0, +/* v */ 0x0076, 3, ELM_V, ELM_QQ, ELM_V, 0, 0, 0, 0, +/* D */ 0x0044, 3, ELM_DH, ELM_QQ, ELM_DI, 0, 0, 0, 0, +/* z */ 0x007a, 3, ELM_Z, ELM_QQ, ELM_ZZ, 0, 0, 0, 0, +/* Z */ 0x005a, 3, ELM_ZH, ELM_QQ, ELM_ZH, 0, 0, 0, 0, +/* l */ 0x006c, 1, ELM_L, 0, 0, 0, 0, 0, 0, +/* r */ 0x0072, 1, ELM_R, 0, 0, 0, 0, 0, 0, +/* R */ 0x0052, 1, ELM_RX, 0, 0, 0, 0, 0, 0, +/* w */ 0x0077, 1, ELM_W, 0, 0, 0, 0, 0, 0, +/* x */ 0x0078, 1, ELM_X, 0, 0, 0, 0, 0, 0, +/* % */ 0x0025, 1, ELM_QQ, 0, 0, 0, 0, 0, 0, +/* j */ 0x006a, 1, ELM_Y, 0, 0, 0, 0, 0, 0, +/* I */ 0x0049, 1, ELM_I, 0, 0, 0, 0, 0, 0, +/* e */ 0x0065, 1, ELM_E, 0, 0, 0, 0, 0, 0, +/* & */ 0x0026, 1, ELM_AA, 0, 0, 0, 0, 0, 0, +/* V */ 0x0056, 1, ELM_U, 0, 0, 0, 0, 0, 0, +/* 0 */ 0x0030, 1, ELM_O, 0, 0, 0, 0, 0, 0, +/* U */ 0x0055, 1, ELM_OO, 0, 0, 0, 0, 0, 0, +/* @ */ 0x0040, 1, ELM_A, 0, 0, 0, 0, 0, 0, +/* i */ 0x0069, 1, ELM_EE, 0, 0, 0, 0, 0, 0, +/* 3 */ 0x0033, 1, ELM_ER, 0, 0, 0, 0, 0, 0, +/* A */ 0x0041, 1, ELM_AR, 0, 0, 0, 0, 0, 0, +/* O */ 0x004f, 1, ELM_AW, 0, 0, 0, 0, 0, 0, +/* u */ 0x0075, 1, ELM_UU, 0, 0, 0, 0, 0, 0, +/* o */ 0x006f, 1, ELM_OI, 0, 0, 0, 0, 0, 0, +/* . */ 0x002e, 1, ELM_END,0, 0, 0, 0, 0, 0, +}; + +static Element gElement[] = +{ +#include "Elements.def" +}; + +static short clip(float input) +{ + int temp = (int)input; + /* clip on boundaries of 16-bit word */ + + if (temp < -32767) + { + //assert? + temp = -32767; + } + else + if (temp > 32767) + { + //assert? + temp = 32767; + } + + return (short)(temp); +} + +/* Convert from decibels to a linear scale factor */ +static float DBtoLIN(int dB) +{ + /* + * Convertion table, db to linear, 87 dB --> 32767 + * 86 dB --> 29491 (1 dB down = 0.5**1/6) + * ... + * 81 dB --> 16384 (6 dB down = 0.5) + * ... + * 0 dB --> 0 + * + * The just noticeable difference for a change in intensity of a vowel + * is approximately 1 dB. Thus all amplitudes are quantized to 1 dB + * steps. + */ + + static const float amptable[88] = + { + 0.0, 0.0, 0.0, 0.0, 0.0, + 0.0, 0.0, 0.0, 0.0, 0.0, + 0.0, 0.0, 0.0, 6.0, 7.0, + 8.0, 9.0, 10.0, 11.0, 13.0, + 14.0, 16.0, 18.0, 20.0, 22.0, + 25.0, 28.0, 32.0, 35.0, 40.0, + 45.0, 51.0, 57.0, 64.0, 71.0, + 80.0, 90.0, 101.0, 114.0, 128.0, + 142.0, 159.0, 179.0, 202.0, 227.0, + 256.0, 284.0, 318.0, 359.0, 405.0, + 455.0, 512.0, 568.0, 638.0, 719.0, + 811.0, 911.0, 1024.0, 1137.0, 1276.0, + 1438.0, 1622.0, 1823.0, 2048.0, 2273.0, + 2552.0, 2875.0, 3244.0, 3645.0, 4096.0, + 4547.0, 5104.0, 5751.0, 6488.0, 7291.0, + 8192.0, 9093.0, 10207.0, 11502.0, 12976.0, + 14582.0, 16384.0, 18350.0, 20644.0, 23429.0, + 26214.0, 29491.0, 32767.0 + }; + + // Check limits or argument (can be removed in final product) + if (dB < 0) + { + dB = 0; + } + else + if (dB >= 88) + { + dB = 87; + } + + return amptable[dB] * 0.001f; +} + + + +klatt_frame::klatt_frame() : + mF0FundamentalFreq(1330), mVoicingAmpdb(60), mFormant1Freq(500), + mFormant1Bandwidth(60), mFormant2Freq(1500), mFormant2Bandwidth(90), + mFormant3Freq(2800), mFormant3Bandwidth(150), mFormant4Freq(3250), + mFormant4Bandwidth(200), mFormant5Freq(3700), mFormant5Bandwidth(200), + mFormant6Freq(4990), mFormant6Bandwidth(500), mNasalZeroFreq(270), + mNasalZeroBandwidth(100), mNasalPoleFreq(270), mNasalPoleBandwidth(100), + mAspirationAmpdb(0), mNoSamplesInOpenPeriod(30), mVoicingBreathiness(0), + mVoicingSpectralTiltdb(10), mFricationAmpdb(0), mSkewnessOfAlternatePeriods(0), + mFormant1Ampdb(0), mFormant1ParallelBandwidth(80), mFormant2Ampdb(0), + mFormant2ParallelBandwidth(200), mFormant3Ampdb(0), mFormant3ParallelBandwidth(350), + mFormant4Ampdb(0), mFormant4ParallelBandwidth(500), mFormant5Ampdb(0), + mFormant5ParallelBandwidth(600), mFormant6Ampdb(0), mFormant6ParallelBandwidth(800), + mParallelNasalPoleAmpdb(0), mBypassFricationAmpdb(0), mPalallelVoicingAmpdb(0), + mOverallGaindb(62) +{ +}; + + +klatt::klatt() : + mBaseF0(1330), + mBaseSpeed(10.0f), + mBaseDeclination(0.5f), + mBaseWaveform(KW_SAW), + mF0Flutter(0), + mSampleRate(0), + mNspFr(0), + mF0FundamentalFreq(0), + mVoicingAmpdb(0), + mSkewnessOfAlternatePeriods(0), + mTimeCount(0), + mNPer(0), + mT0(0), + mNOpen(0), + mNMod(0), + mAmpVoice(0), + mAmpBypas(0), + mAmpAspir(0), + mAmpFrica(0), + mAmpBreth(0), + mSkew(0), + mVLast(0), + mNLast(0), + mGlotLast(0), + mDecay(0), + mOneMd(0), + mElementCount(0), + mElement(0), + mElementIndex(0), + mLastElement(0), + mTStress(0), + mNTStress(0), + mTop(0) +{ +} + +/* +function FLUTTER + +This function adds F0 flutter, as specified in: + +"Analysis, synthesis and perception of voice quality variations among +female and male talkers" D.H. Klatt and L.C. Klatt JASA 87(2) February 1990. +Flutter is added by applying a quasi-random element constructed from three +slowly varying sine waves. +*/ +void klatt::flutter() +{ + int original_f0 = mFrame.mF0FundamentalFreq / 10; + float fla = (float) mF0Flutter / 50; + float flb = (float) original_f0 / 100; + float flc = (float)sin(2 * PI * 12.7 * mTimeCount); + float fld = (float)sin(2 * PI * 7.1 * mTimeCount); + float fle = (float)sin(2 * PI * 4.7 * mTimeCount); + float delta_f0 = fla * flb * (flc + fld + fle) * 10; + mF0FundamentalFreq += (int) delta_f0; +} + +/* Vwave is the differentiated glottal flow waveform, there is a weak +spectral zero around 800 Hz, magic constants a,b reset pitch-synch +*/ + +float klatt::natural_source(int aNper) +{ + // See if glottis open + if (aNper < mNOpen) + { + switch (mBaseWaveform) + { + case KW_TRIANGLE: + return ((aNper % 200) - 100) * 81.92f; // triangle + case KW_SIN: + return (float)(sin(aNper * 0.0314) * 8192); // sin + case KW_SQUARE: + return ((aNper % 200) - 100) > 0 ? 8192.0f : -8192.0f; // square + case KW_PULSE: + return ((aNper % 200) - 100) > 50 ? 8192.0f : -8192.0f; // pulse + case KW_NOISE: + return (int)mNLast & 1 ? -8192.0f : 8192.0f; + case KW_WARBLE: + return (int)mNLast & 7 ? -8192.0f : 8192.0f; + case KW_SAW: // fallthrough + default: + return (abs((aNper % 200) - 100) - 50) * 163.84f; // saw + } + } + else + { + // Glottis closed + return (0.0); + } + +} + +/* Reset selected parameters pitch-synchronously */ + +void klatt::pitch_synch_par_reset(int ns) +{ + if (mF0FundamentalFreq > 0) + { + mT0 = (40 * mSampleRate) / mF0FundamentalFreq; + + /* Period in samp*4 */ + mAmpVoice = DBtoLIN(mVoicingAmpdb); + + /* Duration of period before amplitude modulation */ + mNMod = mT0; + + if (mVoicingAmpdb > 0) + { + mNMod >>= 1; + } + + /* Breathiness of voicing waveform */ + + mAmpBreth = DBtoLIN(mFrame.mVoicingBreathiness) * 0.1f; + + /* Set open phase of glottal period */ + /* where 40 <= open phase <= 263 */ + + mNOpen = 4 * mFrame.mNoSamplesInOpenPeriod; + + if (mNOpen >= (mT0 - 1)) + { + mNOpen = mT0 - 2; + } + + if (mNOpen < 40) + { + mNOpen = 40; /* F0 max = 1000 Hz */ + } + + int temp; + float temp1; + + temp = mSampleRate / mNOpen; + mCritDampedGlotLowPassFilter.initResonator(0L, temp, mSampleRate); + + /* Make gain at F1 about constant */ + + temp1 = mNOpen * .00833f; + mCritDampedGlotLowPassFilter.setGain(temp1 * temp1); + + /* Truncate skewness so as not to exceed duration of closed phase + of glottal period */ + + temp = mT0 - mNOpen; + + if (mSkewnessOfAlternatePeriods > temp) + { + mSkewnessOfAlternatePeriods = temp; + } + + if (mSkew >= 0) + { + mSkew = mSkewnessOfAlternatePeriods; /* Reset mSkew to requested mSkewnessOfAlternatePeriods */ + } + else + { + mSkew = -mSkewnessOfAlternatePeriods; + } + + /* Add skewness to closed portion of voicing period */ + + mT0 = mT0 + mSkew; + mSkew = -mSkew; + } + else + { + mT0 = 4; /* Default for f0 undefined */ + mAmpVoice = 0.0; + mNMod = mT0; + mAmpBreth = 0.0; + } + + /* Reset these pars pitch synchronously or at update rate if f0=0 */ + + if ((mT0 != 4) || (ns == 0)) + { + /* Set one-pole ELM_FEATURE_LOW-pass filter that tilts glottal source */ + mDecay = (0.033f * mFrame.mVoicingSpectralTiltdb); /* Function of samp_rate ? */ + + if (mDecay > 0.0f) + { + mOneMd = 1.0f - mDecay; + } + else + { + mOneMd = 1.0f; + } + } +} + + +/* Get variable parameters from host computer, +initially also get definition of fixed pars +*/ + +void klatt::frame_init() +{ + int mOverallGaindb; /* Overall gain, 60 dB is unity 0 to 60 */ + float amp_parF1; /* mFormant1Ampdb converted to linear gain */ + float amp_parFN; /* mParallelNasalPoleAmpdb converted to linear gain */ + float amp_parF2; /* mFormant2Ampdb converted to linear gain */ + float amp_parF3; /* mFormant3Ampdb converted to linear gain */ + float amp_parF4; /* mFormant4Ampdb converted to linear gain */ + float amp_parF5; /* mFormant5Ampdb converted to linear gain */ + float amp_parF6; /* mFormant6Ampdb converted to linear gain */ + + /* Read speech frame definition into temp store + and move some parameters into active use immediately + (voice-excited ones are updated pitch synchronously + to avoid waveform glitches). + */ + + mF0FundamentalFreq = mFrame.mF0FundamentalFreq; + mVoicingAmpdb = mFrame.mVoicingAmpdb - 7; + + if (mVoicingAmpdb < 0) mVoicingAmpdb = 0; + + mAmpAspir = DBtoLIN(mFrame.mAspirationAmpdb) * .05f; + mAmpFrica = DBtoLIN(mFrame.mFricationAmpdb) * 0.25f; + mSkewnessOfAlternatePeriods = mFrame.mSkewnessOfAlternatePeriods; + + /* Fudge factors (which comprehend affects of formants on each other?) + with these in place ALL_PARALLEL should sound as close as + possible to CASCADE_PARALLEL. + Possible problem feeding in Holmes's amplitudes given this. + */ + amp_parF1 = DBtoLIN(mFrame.mFormant1Ampdb) * 0.4f; /* -7.96 dB */ + amp_parF2 = DBtoLIN(mFrame.mFormant2Ampdb) * 0.15f; /* -16.5 dB */ + amp_parF3 = DBtoLIN(mFrame.mFormant3Ampdb) * 0.06f; /* -24.4 dB */ + amp_parF4 = DBtoLIN(mFrame.mFormant4Ampdb) * 0.04f; /* -28.0 dB */ + amp_parF5 = DBtoLIN(mFrame.mFormant5Ampdb) * 0.022f; /* -33.2 dB */ + amp_parF6 = DBtoLIN(mFrame.mFormant6Ampdb) * 0.03f; /* -30.5 dB */ + amp_parFN = DBtoLIN(mFrame.mParallelNasalPoleAmpdb) * 0.6f; /* -4.44 dB */ + mAmpBypas = DBtoLIN(mFrame.mBypassFricationAmpdb) * 0.05f; /* -26.0 db */ + + // Set coeficients of nasal resonator and zero antiresonator + mNasalPole.initResonator(mFrame.mNasalPoleFreq, mFrame.mNasalPoleBandwidth, mSampleRate); + + mNasalZero.initAntiresonator(mFrame.mNasalZeroFreq, mFrame.mNasalZeroBandwidth, mSampleRate); + + // Set coefficients of parallel resonators, and amplitude of outputs + mParallelFormant1.initResonator(mFrame.mFormant1Freq, mFrame.mFormant1ParallelBandwidth, mSampleRate); + mParallelFormant1.setGain(amp_parF1); + + mParallelResoNasalPole.initResonator(mFrame.mNasalPoleFreq, mFrame.mNasalPoleBandwidth, mSampleRate); + mParallelResoNasalPole.setGain(amp_parFN); + + mParallelFormant2.initResonator(mFrame.mFormant2Freq, mFrame.mFormant2ParallelBandwidth, mSampleRate); + mParallelFormant2.setGain(amp_parF2); + + mParallelFormant3.initResonator(mFrame.mFormant3Freq, mFrame.mFormant3ParallelBandwidth, mSampleRate); + mParallelFormant3.setGain(amp_parF3); + + mParallelFormant4.initResonator(mFrame.mFormant4Freq, mFrame.mFormant4ParallelBandwidth, mSampleRate); + mParallelFormant4.setGain(amp_parF4); + + mParallelFormant5.initResonator(mFrame.mFormant5Freq, mFrame.mFormant5ParallelBandwidth, mSampleRate); + mParallelFormant5.setGain(amp_parF5); + + mParallelFormant6.initResonator(mFrame.mFormant6Freq, mFrame.mFormant6ParallelBandwidth, mSampleRate); + mParallelFormant6.setGain(amp_parF6); + + + /* fold overall gain into output resonator */ + mOverallGaindb = mFrame.mOverallGaindb - 3; + + if (mOverallGaindb <= 0) + mOverallGaindb = 57; + + /* output ELM_FEATURE_LOW-pass filter - resonator with freq 0 and BW = globals->mSampleRate + Thus 3db point is globals->mSampleRate/2 i.e. Nyquist limit. + Only 3db down seems rather mild... + */ + mOutputLowPassFilter.initResonator(0L, (int)mSampleRate, mSampleRate); + mOutputLowPassFilter.setGain(DBtoLIN(mOverallGaindb)); +} + +/* +function PARWAV + +CONVERT FRAME OF PARAMETER DATA TO A WAVEFORM CHUNK +Synthesize globals->mNspFr samples of waveform and store in jwave[]. +*/ + +void klatt::parwave(short int *jwave) +{ + /* Output of cascade branch, also final output */ + + /* Initialize synthesizer and get specification for current speech + frame from host microcomputer */ + + frame_init(); + + if (mF0Flutter != 0) + { + mTimeCount++; /* used for f0 flutter */ + flutter(); /* add f0 flutter */ + } + + /* MAIN LOOP, for each output sample of current frame: */ + + int ns; + for (ns = 0; ns < mNspFr; ns++) + { + float noise; + int n4; + float sourc; /* Sound source if all-parallel config used */ + float glotout; /* Output of glottal sound source */ + float par_glotout; /* Output of parallelglottal sound sourc */ + float voice = 0; /* Current sample of voicing waveform */ + float frics; /* Frication sound source */ + float aspiration; /* Aspiration sound source */ + int nrand; /* Varible used by random number generator */ + + /* Our own code like rand(), but portable + whole upper 31 bits of seed random + assumes 32-bit unsigned arithmetic + with untested code to handle larger. + */ + mSeed = mSeed * 1664525 + 1; + + mSeed &= 0xFFFFFFFF; + + /* Shift top bits of seed up to top of int then back down to LS 14 bits */ + /* Assumes 8 bits per sizeof unit i.e. a "byte" */ + nrand = (((int) mSeed) << (8 * sizeof(int) - 32)) >> (8 * sizeof(int) - 14); + + /* Tilt down noise spectrum by soft ELM_FEATURE_LOW-pass filter having + * a pole near the origin in the z-plane, i.e. + * output = input + (0.75 * lastoutput) */ + + noise = nrand + (0.75f * mNLast); /* Function of samp_rate ? */ + + mNLast = noise; + + /* Amplitude modulate noise (reduce noise amplitude during + second half of glottal period) if voicing simultaneously present + */ + + if (mNPer > mNMod) + { + noise *= 0.5f; + } + + /* Compute frication noise */ + sourc = frics = mAmpFrica * noise; + + /* Compute voicing waveform : (run glottal source simulation at + 4 times normal sample rate to minimize quantization noise in + period of female voice) + */ + + for (n4 = 0; n4 < 4; n4++) + { + /* use a more-natural-shaped source waveform with excitation + occurring both upon opening and upon closure, stronest at closure */ + voice = natural_source(mNPer); + + /* Reset period when counter 'mNPer' reaches mT0 */ + + if (mNPer >= mT0) + { + mNPer = 0; + pitch_synch_par_reset(ns); + } + + /* Low-pass filter voicing waveform before downsampling from 4*globals->mSampleRate */ + /* to globals->mSampleRate samples/sec. Resonator f=.09*globals->mSampleRate, bw=.06*globals->mSampleRate */ + + voice = mDownSampLowPassFilter.resonate(voice); /* in=voice, out=voice */ + + /* Increment counter that keeps track of 4*globals->mSampleRate samples/sec */ + mNPer++; + } + + /* Tilt spectrum of voicing source down by soft ELM_FEATURE_LOW-pass filtering, amount + of tilt determined by mVoicingSpectralTiltdb + */ + voice = (voice * mOneMd) + (mVLast * mDecay); + + mVLast = voice; + + /* Add breathiness during glottal open phase */ + if (mNPer < mNOpen) + { + /* Amount of breathiness determined by parameter mVoicingBreathiness */ + /* Use nrand rather than noise because noise is ELM_FEATURE_LOW-passed */ + voice += mAmpBreth * nrand; + } + + /* Set amplitude of voicing */ + glotout = mAmpVoice * voice; + + /* Compute aspiration amplitude and add to voicing source */ + aspiration = mAmpAspir * noise; + + glotout += aspiration; + + par_glotout = glotout; + + /* NIS - rsynth "hack" + As Holmes' scheme is weak at nasals and (physically) nasal cavity + is "back near glottis" feed glottal source through nasal resonators + Don't think this is quite right, but improves things a bit + */ + par_glotout = mNasalZero.antiresonate(par_glotout); + par_glotout = mNasalPole.resonate(par_glotout); + /* And just use mParallelFormant1 NOT mParallelResoNasalPole */ + float out = mParallelFormant1.resonate(par_glotout); + /* Sound sourc for other parallel resonators is frication + plus first difference of voicing waveform. + */ + sourc += (par_glotout - mGlotLast); + mGlotLast = par_glotout; + + /* Standard parallel vocal tract + Formants F6,F5,F4,F3,F2, outputs added with alternating sign + */ + out = mParallelFormant6.resonate(sourc) - out; + out = mParallelFormant5.resonate(sourc) - out; + out = mParallelFormant4.resonate(sourc) - out; + out = mParallelFormant3.resonate(sourc) - out; + out = mParallelFormant2.resonate(sourc) - out; + + out = mAmpBypas * sourc - out; + out = mOutputLowPassFilter.resonate(out); + + *jwave++ = clip(out); /* Convert back to integer */ + } +} + + + +static char * phoneme_to_element_lookup(char *s, void ** data) +{ + int key8 = *s; + int key16 = key8 + (s[1] << 8); + if (s[1] == 0) key16 = -1; // avoid key8==key16 + int i; + for (i = 0; i < PHONEME_COUNT; i++) + { + if (phoneme_to_elements[i].mKey == key16) + { + *data = &phoneme_to_elements[i].mData; + return s+2; + } + if (phoneme_to_elements[i].mKey == key8) + { + *data = &phoneme_to_elements[i].mData; + return s+1; + } + } + // should never happen + *data = NULL; + return s+1; +} + + + +int klatt::phone_to_elm(char *aPhoneme, int aCount, darray *aElement) +{ + int stress = 0; + char *s = aPhoneme; + int t = 0; + char *limit = s + aCount; + + while (s < limit && *s) + { + char *e = NULL; + s = phoneme_to_element_lookup(s, (void**)&e); + + if (e) + { + int n = *e++; + + while (n-- > 0) + { + int x = *e++; + Element * p = &gElement[x]; + /* This works because only vowels have mUD != mDU, + and we set stress just before a vowel + */ + aElement->put(x); + + if (!(p->mFeat & ELM_FEATURE_VWL)) + stress = 0; + + int stressdur = StressDur(p,stress); + + t += stressdur; + + aElement->put(stressdur); + aElement->put(stress); + } + } + + else + { + char ch = *s++; + + switch (ch) + { + + case '\'': /* Primary stress */ + stress = 3; + break; + + case ',': /* Secondary stress */ + stress = 2; + break; + + case '+': /* Tertiary stress */ + stress = 1; + break; + + case '-': /* hyphen in input */ + break; + + default: +// fprintf(stderr, "Ignoring %c in '%.*s'\n", ch, aCount, aPhoneme); + break; + } + } + } + + return t; +} + + + +/* 'a' is dominant element, 'b' is dominated + ext is flag to say to use external times from 'a' rather + than internal i.e. ext != 0 if 'a' is NOT current element. + */ + +static void set_trans(Slope *t, Element * a, Element * b,int ext, int e) +{ + int i; + + for (i = 0; i < ELM_COUNT; i++) + { + t[i].mTime = ((ext) ? a->mInterpolator[i].mExtDelay : a->mInterpolator[i].mIntDelay); + + if (t[i].mTime) + { + t[i].mValue = a->mInterpolator[i].mFixed + (a->mInterpolator[i].mProportion * b->mInterpolator[i].mSteady) * 0.01f; // mProportion is in scale 0..100, so *0.01. + } + else + { + t[i].mValue = b->mInterpolator[i].mSteady; + } + } +} + +static float lerp(float a, float b, int t, int d) +{ + if (t <= 0) + { + return a; + } + + if (t >= d) + { + return b; + } + + float f = (float)t / (float)d; + return a + (b - a) * f; +} + +static float interpolate(Slope *aStartSlope, Slope *aEndSlope, float aMidValue, int aTime, int aDuration) +{ + int steadyTime = aDuration - (aStartSlope->mTime + aEndSlope->mTime); + + if (steadyTime >= 0) + { + // Interpolate to a midpoint, stay there for a while, then interpolate to end + + if (aTime < aStartSlope->mTime) + { + // interpolate to the first value + return lerp(aStartSlope->mValue, aMidValue, aTime, aStartSlope->mTime); + } + // reached midpoint + + aTime -= aStartSlope->mTime; + + if (aTime <= steadyTime) + { + // still at steady state + return aMidValue; + } + + // interpolate to the end + return lerp(aMidValue, aEndSlope->mValue, aTime - steadyTime, aEndSlope->mTime); + } + else + { + // No steady state + float f = 1.0f - ((float) aTime / (float) aDuration); + float sp = lerp(aStartSlope->mValue, aMidValue, aTime, aStartSlope->mTime); + float ep = lerp(aEndSlope->mValue, aMidValue, aDuration - aTime, aEndSlope->mTime); + return f * sp + ((float) 1.0 - f) * ep; + } +} + + + +void klatt::initsynth(int aElementCount,unsigned char *aElement) +{ + mElement = aElement; + mElementCount = aElementCount; + mElementIndex = 0; + mLastElement = &gElement[0]; + mSeed = 5; + mTStress = 0; + mNTStress = 0; + mFrame.mF0FundamentalFreq = mBaseF0; + mTop = 1.1f * mFrame.mF0FundamentalFreq; + mFrame.mNasalPoleFreq = (int)mLastElement->mInterpolator[ELM_FN].mSteady; + mFrame.mFormant1ParallelBandwidth = mFrame.mFormant1Bandwidth = 60; + mFrame.mFormant2ParallelBandwidth = mFrame.mFormant2Bandwidth = 90; + mFrame.mFormant3ParallelBandwidth = mFrame.mFormant3Bandwidth = 150; +// mFrame.mFormant4ParallelBandwidth = (default) + + // Set stress attack/decay slope + mStressS.mTime = 40; + mStressE.mTime = 40; + mStressE.mValue = 0.0; +} + +int klatt::synth(int aSampleCount, short *aSamplePointer) +{ + short *samp = aSamplePointer; + + if (mElementIndex >= mElementCount) + return -1; + + Element * currentElement = &gElement[mElement[mElementIndex++]]; + int dur = mElement[mElementIndex++]; + mElementIndex++; // skip stress + + if (currentElement->mRK == 31) // "END" + { + // Reset the fundamental frequency top + mFrame.mF0FundamentalFreq = mBaseF0; + mTop = 1.1f * mFrame.mF0FundamentalFreq; + } + + // Skip zero length elements which are only there to affect + // boundary values of adjacent elements + + if (dur > 0) + { + Element * ne = (mElementIndex < mElementCount) ? &gElement[mElement[mElementIndex]] : &gElement[0]; + Slope start[ELM_COUNT]; + Slope end[ELM_COUNT]; + int t; + + if (currentElement->mRK > mLastElement->mRK) + { + set_trans(start, currentElement, mLastElement, 0, 's'); + // we dominate last + } + else + { + set_trans(start, mLastElement, currentElement, 1, 's'); + // last dominates us + } + + if (ne->mRK > currentElement->mRK) + { + set_trans(end, ne, currentElement, 1, 'e'); + // next dominates us + } + else + { + set_trans(end, currentElement, ne, 0, 'e'); + // we dominate next + } + + for (t = 0; t < dur; t++, mTStress++) + { + float base = mTop * 0.8f; // 3 * top / 5 + float tp[ELM_COUNT]; + int j; + + if (mTStress == mNTStress) + { + int j = mElementIndex; + mStressS = mStressE; + mTStress = 0; + mNTStress = dur; + + while (j <= mElementCount) + { + Element * e = (j < mElementCount) ? &gElement[mElement[j++]] : &gElement[0]; + int du = (j < mElementCount) ? mElement[j++] : 0; + int s = (j < mElementCount) ? mElement[j++] : 3; + + if (s || e->mFeat & ELM_FEATURE_VWL) + { + int d = 0; + + if (s) + mStressE.mValue = (float) s / 3; + else + mStressE.mValue = (float) 0.1; + + do + { + d += du; + e = (j < mElementCount) ? &gElement[mElement[j++]] : &gElement[0]; + du = mElement[j++]; + } + + while ((e->mFeat & ELM_FEATURE_VWL) && mElement[j++] == s); + + mNTStress += d / 2; + + break; + } + + mNTStress += du; + } + } + + for (j = 0; j < ELM_COUNT; j++) + { + tp[j] = interpolate(&start[j], &end[j], (float) currentElement->mInterpolator[j].mSteady, t, dur); + } + + // Now call the synth for each frame + + mFrame.mF0FundamentalFreq = (int)(base + (mTop - base) * interpolate(&mStressS, &mStressE, (float)0, mTStress, mNTStress)); + mFrame.mVoicingAmpdb = mFrame.mPalallelVoicingAmpdb = (int)tp[ELM_AV]; + mFrame.mFricationAmpdb = (int)tp[ELM_AF]; + mFrame.mNasalZeroFreq = (int)tp[ELM_FN]; + mFrame.mAspirationAmpdb = (int)tp[ELM_ASP]; + mFrame.mVoicingBreathiness = (int)tp[ELM_AVC]; + mFrame.mFormant1ParallelBandwidth = mFrame.mFormant1Bandwidth = (int)tp[ELM_B1]; + mFrame.mFormant2ParallelBandwidth = mFrame.mFormant2Bandwidth = (int)tp[ELM_B2]; + mFrame.mFormant3ParallelBandwidth = mFrame.mFormant3Bandwidth = (int)tp[ELM_B3]; + mFrame.mFormant1Freq = (int)tp[ELM_F1]; + mFrame.mFormant2Freq = (int)tp[ELM_F2]; + mFrame.mFormant3Freq = (int)tp[ELM_F3]; + + // AMP_ADJ + is a kludge to get amplitudes up to klatt-compatible levels + + + //pars.mParallelNasalPoleAmpdb = AMP_ADJ + tp[ELM_AN]; + + mFrame.mBypassFricationAmpdb = AMP_ADJ + (int)tp[ELM_AB]; + mFrame.mFormant5Ampdb = AMP_ADJ + (int)tp[ELM_A5]; + mFrame.mFormant6Ampdb = AMP_ADJ + (int)tp[ELM_A6]; + mFrame.mFormant1Ampdb = AMP_ADJ + (int)tp[ELM_A1]; + mFrame.mFormant2Ampdb = AMP_ADJ + (int)tp[ELM_A2]; + mFrame.mFormant3Ampdb = AMP_ADJ + (int)tp[ELM_A3]; + mFrame.mFormant4Ampdb = AMP_ADJ + (int)tp[ELM_A4]; + + parwave(samp); + + samp += mNspFr; + + // Declination of f0 envelope 0.25Hz / cS + mTop -= mBaseDeclination;// 0.5; + } + } + + mLastElement = currentElement; + + return (int)(samp - aSamplePointer); +} + + +void klatt::init(int aBaseFrequency, float aBaseSpeed, float aBaseDeclination, int aBaseWaveform) +{ + mBaseF0 = aBaseFrequency; + mBaseSpeed = aBaseSpeed; + mBaseDeclination = aBaseDeclination; + mBaseWaveform = aBaseWaveform; + + mSampleRate = 11025; + mF0Flutter = 0; + mF0FundamentalFreq = mBaseF0; + mFrame.mF0FundamentalFreq = mBaseF0; + + int FLPhz = (950 * mSampleRate) / 10000; + int BLPhz = (630 * mSampleRate) / 10000; + mNspFr = (int)(mSampleRate * mBaseSpeed) / 1000; + + mDownSampLowPassFilter.initResonator(FLPhz, BLPhz, mSampleRate); + + mNPer = 0; /* LG */ + mT0 = 0; /* LG */ + + mVLast = 0; /* Previous output of voice */ + mNLast = 0; /* Previous output of random number generator */ + mGlotLast = 0; /* Previous value of glotout */ +} diff --git a/src/soloud/src/audiosource/speech/klatt.h b/src/soloud/src/audiosource/speech/klatt.h new file mode 100644 index 0000000..6621090 --- /dev/null +++ b/src/soloud/src/audiosource/speech/klatt.h @@ -0,0 +1,153 @@ +#ifndef KLATT_H +#define KLATT_H + +#include "resonator.h" + +#define CASCADE_PARALLEL 1 +#define ALL_PARALLEL 2 +#define NPAR 40 + +class klatt_frame +{ +public: + int mF0FundamentalFreq; // Voicing fund freq in Hz + int mVoicingAmpdb; // Amp of voicing in dB, 0 to 70 + int mFormant1Freq; // First formant freq in Hz, 200 to 1300 + int mFormant1Bandwidth; // First formant bw in Hz, 40 to 1000 + int mFormant2Freq; // Second formant freq in Hz, 550 to 3000 + int mFormant2Bandwidth; // Second formant bw in Hz, 40 to 1000 + int mFormant3Freq; // Third formant freq in Hz, 1200 to 4999 + int mFormant3Bandwidth; // Third formant bw in Hz, 40 to 1000 + int mFormant4Freq; // Fourth formant freq in Hz, 1200 to 4999 + int mFormant4Bandwidth; // Fourth formant bw in Hz, 40 to 1000 + int mFormant5Freq; // Fifth formant freq in Hz, 1200 to 4999 + int mFormant5Bandwidth; // Fifth formant bw in Hz, 40 to 1000 + int mFormant6Freq; // Sixth formant freq in Hz, 1200 to 4999 + int mFormant6Bandwidth; // Sixth formant bw in Hz, 40 to 2000 + int mNasalZeroFreq; // Nasal zero freq in Hz, 248 to 528 + int mNasalZeroBandwidth; // Nasal zero bw in Hz, 40 to 1000 + int mNasalPoleFreq; // Nasal pole freq in Hz, 248 to 528 + int mNasalPoleBandwidth; // Nasal pole bw in Hz, 40 to 1000 + int mAspirationAmpdb; // Amp of aspiration in dB, 0 to 70 + int mNoSamplesInOpenPeriod; // # of samples in open period, 10 to 65 + int mVoicingBreathiness; // Breathiness in voicing, 0 to 80 + int mVoicingSpectralTiltdb; // Voicing spectral tilt in dB, 0 to 24 + int mFricationAmpdb; // Amp of frication in dB, 0 to 80 + int mSkewnessOfAlternatePeriods; // Skewness of alternate periods, 0 to 40 in sample#/2 + int mFormant1Ampdb; // Amp of par 1st formant in dB, 0 to 80 + int mFormant1ParallelBandwidth; // Par. 1st formant bw in Hz, 40 to 1000 + int mFormant2Ampdb; // Amp of F2 frication in dB, 0 to 80 + int mFormant2ParallelBandwidth; // Par. 2nd formant bw in Hz, 40 to 1000 + int mFormant3Ampdb; // Amp of F3 frication in dB, 0 to 80 + int mFormant3ParallelBandwidth; // Par. 3rd formant bw in Hz, 40 to 1000 + int mFormant4Ampdb; // Amp of F4 frication in dB, 0 to 80 + int mFormant4ParallelBandwidth; // Par. 4th formant bw in Hz, 40 to 1000 + int mFormant5Ampdb; // Amp of F5 frication in dB, 0 to 80 + int mFormant5ParallelBandwidth; // Par. 5th formant bw in Hz, 40 to 1000 + int mFormant6Ampdb; // Amp of F6 (same as r6pa), 0 to 80 + int mFormant6ParallelBandwidth; // Par. 6th formant bw in Hz, 40 to 2000 + int mParallelNasalPoleAmpdb; // Amp of par nasal pole in dB, 0 to 80 + int mBypassFricationAmpdb; // Amp of bypass fric. in dB, 0 to 80 + int mPalallelVoicingAmpdb; // Amp of voicing, par in dB, 0 to 70 + int mOverallGaindb; // Overall gain, 60 dB is unity, 0 to 60 + klatt_frame(); +}; + +class darray; +class Element; + +class Slope +{ +public: + float mValue; /* boundary value */ + int mTime; /* transition time */ + Slope() + { + mValue = 0; + mTime = 0; + } +}; + + +enum KLATT_WAVEFORM +{ + KW_SAW, + KW_TRIANGLE, + KW_SIN, + KW_SQUARE, + KW_PULSE, + KW_NOISE, + KW_WARBLE +}; + +class klatt +{ + // resonators + resonator mParallelFormant1, mParallelFormant2, mParallelFormant3, + mParallelFormant4, mParallelFormant5, mParallelFormant6, + mParallelResoNasalPole, mNasalPole, mNasalZero, + mCritDampedGlotLowPassFilter, mDownSampLowPassFilter, mOutputLowPassFilter; +public: + int mBaseF0; + float mBaseSpeed; + float mBaseDeclination; + int mBaseWaveform; + + int mF0Flutter; + int mSampleRate; + int mNspFr; + int mF0FundamentalFreq; // Voicing fund freq in Hz + int mVoicingAmpdb; // Amp of voicing in dB, 0 to 70 + int mSkewnessOfAlternatePeriods; // Skewness of alternate periods,0 to 40 + int mTimeCount; // used for f0 flutter + int mNPer; // Current loc in voicing period 40000 samp/s + int mT0; // Fundamental period in output samples times 4 + int mNOpen; // Number of samples in open phase of period + int mNMod; // Position in period to begin noise amp. modul + + // Various amplitude variables used in main loop + + float mAmpVoice; // mVoicingAmpdb converted to linear gain + float mAmpBypas; // mBypassFricationAmpdb converted to linear gain + float mAmpAspir; // AP converted to linear gain + float mAmpFrica; // mFricationAmpdb converted to linear gain + float mAmpBreth; // ATURB converted to linear gain + + // State variables of sound sources + + int mSkew; // Alternating jitter, in half-period units + float mVLast; // Previous output of voice + float mNLast; // Previous output of random number generator + float mGlotLast; // Previous value of glotout + float mDecay; // mVoicingSpectralTiltdb converted to exponential time const + float mOneMd; // in voicing one-pole ELM_FEATURE_LOW-pass filter + + unsigned int mSeed; // random seed + + + + float natural_source(int aNper); + + void frame_init(); + void flutter(); + void pitch_synch_par_reset(int ns); + void parwave(short int *jwave); + void init(int aBaseFrequency = 1330, float aBaseSpeed = 10.0f, float aBaseDeclination = 0.5f, int aBaseWaveform = KW_SAW); + static int phone_to_elm(char *aPhoneme, int aCount, darray *aElement); + + int mElementCount; + unsigned char *mElement; + int mElementIndex; + klatt_frame mFrame; + Element * mLastElement; + int mTStress; + int mNTStress; + Slope mStressS; + Slope mStressE; + float mTop; + void initsynth(int aElementCount,unsigned char *aElement); + int synth(int aSampleCount, short *aSamplePointer); + klatt(); +}; + +#endif \ No newline at end of file diff --git a/src/soloud/src/audiosource/speech/legal_readme.txt b/src/soloud/src/audiosource/speech/legal_readme.txt new file mode 100644 index 0000000..878ec6a --- /dev/null +++ b/src/soloud/src/audiosource/speech/legal_readme.txt @@ -0,0 +1,38 @@ +The speech synth is based on rsynth by the late +Nick Ing-Simmons (et al). + +He described the legal status as: + + This is a text to speech system produced by + integrating various pieces of code and tables + of data, which are all (I believe) in the + public domain. + +Since then, the rsynth source code has passed legal +checks by several open source organizations, so it +"should" be pretty safe. + +The primary copyright claims seem to have to do +with text-to-speech dictionary use, which I've +removed completely. + +I've done some serious refactoring, clean-up and +feature removal on the source, as all I need is +"a" free, simple speech synth, not a "good" +speech synth. Since I've removed a bunch of stuff, +this is probably safer public domain release +than the original. + +(I'm rather surprised there's no good public domain +speech synths out there; after all, it's 2013..) + +I'm placing my changes in public domain as well, +or if that's not acceptable for you, then CC0: +http://creativecommons.org/publicdomain/zero/1.0/ + +The SoLoud interface files (soloud_speech.*) are +under ZLib/LibPNG license. + +-- Jari Komppa + 2013 + \ No newline at end of file diff --git a/src/soloud/src/audiosource/speech/resonator.cpp b/src/soloud/src/audiosource/speech/resonator.cpp new file mode 100644 index 0000000..6214444 --- /dev/null +++ b/src/soloud/src/audiosource/speech/resonator.cpp @@ -0,0 +1,74 @@ +#include +#include "resonator.h" + +#ifndef PI +#define PI 3.1415926535897932384626433832795f +#endif + +/* Convert formant freqencies and bandwidth into resonator difference equation coefficents + */ +void resonator::initResonator( + int aFrequency, /* Frequency of resonator in Hz */ + int aBandwidth, /* Bandwidth of resonator in Hz */ + int aSamplerate) +{ + float arg = (-PI / aSamplerate) * aBandwidth; + float r = (float)exp(arg); + mC = -(r * r); + arg = (-2.0f * PI / aSamplerate) * aFrequency; + mB = r * (float)cos(arg) * 2.0f; + mA = 1.0f - mB - mC; +} + +/* Convert formant freqencies and bandwidth into anti-resonator difference equation constants + */ +void resonator::initAntiresonator( + int aFrequency, /* Frequency of resonator in Hz */ + int aBandwidth, /* Bandwidth of resonator in Hz */ + int aSamplerate) +{ + initResonator(aFrequency, aBandwidth, aSamplerate); /* First compute ordinary resonator coefficients */ + /* Now convert to antiresonator coefficients */ + mA = 1.0f / mA; /* a'= 1/a */ + mB *= -mA; /* b'= -b/a */ + mC *= -mA; /* c'= -c/a */ +} + +/* Generic resonator function */ +float resonator::resonate(float input) +{ + float x = mA * input + mB * mP1 + mC * mP2; + mP2 = mP1; + mP1 = x; + return x; +} + +/* Generic anti-resonator function + Same as resonator except that a,b,c need to be set with initAntiresonator() + and we save inputs in p1/p2 rather than outputs. + There is currently only one of these - "mNasalZero" +*/ +/* Output = (mNasalZero.a * input) + (mNasalZero.b * oldin1) + (mNasalZero.c * oldin2) */ + +float resonator::antiresonate(float input) +{ + float x = mA * input + mB * mP1 + mC * mP2; + mP2 = mP1; + mP1 = input; + return x; +} + +resonator::resonator() +{ + mA = mB = mC = mP1 = mP2 = 0; +} + +resonator::~resonator() +{ +} + +void resonator::setGain(float aG) +{ + mA *= aG; +} + diff --git a/src/soloud/src/audiosource/speech/resonator.h b/src/soloud/src/audiosource/speech/resonator.h new file mode 100644 index 0000000..2e75e31 --- /dev/null +++ b/src/soloud/src/audiosource/speech/resonator.h @@ -0,0 +1,44 @@ +#ifndef RESONATOR_H +#define RESONATOR_H + +class resonator +{ + float mA, mB, mC, mP1, mP2; +public: + + /* Convert formant freqencies and bandwidth into resonator difference equation coefficents + */ + void initResonator( + int aFrequency, /* Frequency of resonator in Hz */ + int aBandwidth, /* Bandwidth of resonator in Hz */ + int aSamplerate); + + /* Convert formant freqencies and bandwidth into anti-resonator difference equation constants + */ + void initAntiresonator( + int aFrequency, /* Frequency of resonator in Hz */ + int aBandwidth, /* Bandwidth of resonator in Hz */ + int aSamplerate); + + /* Set gain */ + void setGain(float aG); + + /* Generic resonator function */ + float resonate(float input); + + /* Generic anti-resonator function + Same as resonator except that a,b,c need to be set with initAntiresonator() + and we save inputs in p1/p2 rather than outputs. + There is currently only one of these - "mNasalZero" + + Output = (mNasalZero.a * input) + (mNasalZero.b * oldin1) + (mNasalZero.c * oldin2) + */ + + float antiresonate(float input); + + resonator(); + + ~resonator(); +}; + +#endif \ No newline at end of file diff --git a/src/soloud/src/audiosource/speech/soloud_speech.cpp b/src/soloud/src/audiosource/speech/soloud_speech.cpp new file mode 100644 index 0000000..df3889e --- /dev/null +++ b/src/soloud/src/audiosource/speech/soloud_speech.cpp @@ -0,0 +1,148 @@ +/* +SoLoud audio engine +Copyright (c) 2013-2018 Jari Komppa + +This software is provided 'as-is', without any express or implied +warranty. In no event will the authors be held liable for any damages +arising from the use of this software. + +Permission is granted to anyone to use this software for any purpose, +including commercial applications, and to alter it and redistribute it +freely, subject to the following restrictions: + + 1. The origin of this software must not be misrepresented; you must not + claim that you wrote the original software. If you use this software + in a product, an acknowledgment in the product documentation would be + appreciated but is not required. + + 2. Altered source versions must be plainly marked as such, and must not be + misrepresented as being the original software. + + 3. This notice may not be removed or altered from any source + distribution. +*/ +#include +#include "soloud.h" +#include "soloud_speech.h" + + +namespace SoLoud +{ + SpeechInstance::SpeechInstance(Speech *aParent) + { + mParent = aParent; + mSynth.init(mParent->mBaseFrequency, mParent->mBaseSpeed, mParent->mBaseDeclination, mParent->mBaseWaveform); + mSample = new short[mSynth.mNspFr * 100]; + mSynth.initsynth(mParent->mElement.getSize(), (unsigned char *)mParent->mElement.getData()); + mOffset = 10; + mSampleCount = 10; + } + + SpeechInstance::~SpeechInstance() + { + delete[] mSample; + } + + static void writesamples(short * aSrc, float * aDst, int aCount) + { + int i; + for (i = 0; i < aCount; i++) + { + aDst[i] = aSrc[i] * (1 / (float)0x8000); + } + } + + unsigned int SpeechInstance::getAudio(float *aBuffer, unsigned int aSamplesToRead, unsigned int aBufferSize) + { + mSynth.init(mParent->mBaseFrequency, mParent->mBaseSpeed, mParent->mBaseDeclination, mParent->mBaseWaveform); + unsigned int samples_out = 0; + if (mSampleCount > mOffset) + { + unsigned int copycount = mSampleCount - mOffset; + if (copycount > aSamplesToRead) + { + copycount = aSamplesToRead; + } + writesamples(mSample + mOffset, aBuffer, copycount); + mOffset += copycount; + samples_out += copycount; + } + + while (mSampleCount >= 0 && samples_out < aSamplesToRead) + { + mOffset = 0; + mSampleCount = mSynth.synth(mSynth.mNspFr, mSample); + if (mSampleCount > 0) + { + unsigned int copycount = mSampleCount; + if (copycount > aSamplesToRead - samples_out) + { + copycount = aSamplesToRead - samples_out; + } + writesamples(mSample, aBuffer + samples_out, copycount); + mOffset += copycount; + samples_out += copycount; + } + } + return samples_out; + } + + result SpeechInstance::rewind() + { + mSynth.init(mParent->mBaseFrequency, mParent->mBaseSpeed, mParent->mBaseDeclination, mParent->mBaseWaveform); + mSynth.initsynth(mParent->mElement.getSize(), (unsigned char *)mParent->mElement.getData()); + mOffset = 10; + mSampleCount = 10; + mStreamPosition = 0.0f; + return 0; + } + + bool SpeechInstance::hasEnded() + { + if (mSampleCount < 0) + return 1; + return 0; + } + + result Speech::setParams(unsigned int aBaseFrequency, float aBaseSpeed, float aBaseDeclination, int aBaseWaveform) + { + mBaseFrequency = aBaseFrequency; + mBaseSpeed = aBaseSpeed; + mBaseDeclination = aBaseDeclination; + mBaseWaveform = aBaseWaveform; + return 0; + } + + result Speech::setText(const char *aText) + { + if (aText == NULL) + return INVALID_PARAMETER; + + stop(); + mElement.clear(); + darray phone; + xlate_string(aText, &phone); + mFrames = klatt::phone_to_elm(phone.getData(), phone.getSize(), &mElement); + return 0; + } + + Speech::Speech() + { + mBaseSamplerate = 11025; + mFrames = 0; + mBaseFrequency = 1330; + mBaseSpeed = 10; + mBaseDeclination = 0.5f; + mBaseWaveform = KW_SQUARE; + } + + Speech::~Speech() + { + stop(); + } + + AudioSourceInstance *Speech::createInstance() + { + return new SpeechInstance(this); + } +}; diff --git a/src/soloud/src/audiosource/speech/tts.cpp b/src/soloud/src/audiosource/speech/tts.cpp new file mode 100644 index 0000000..e65082a --- /dev/null +++ b/src/soloud/src/audiosource/speech/tts.cpp @@ -0,0 +1,1421 @@ +#include +#include +#include +#include +#include "darray.h" +#include "tts.h" + +static const char *ASCII[] = +{ + "null", "", "", "", + "", "", "", "", + "", "", "", "", + "", "", "", "", + "", "", "", "", + "", "", "", "", + "", "", "", "", + "", "", "", "", + "space", "exclamation mark", "double quote", "hash", + "dollar", "percent", "ampersand", "quote", + "open parenthesis", "close parenthesis", "asterisk", "plus", + "comma", "minus", "full stop", "slash", + "zero", "one", "two", "three", + "four", "five", "six", "seven", + "eight", "nine", "colon", "semi colon", + "less than", "equals", "greater than", "question mark", +#ifndef ALPHA_IN_DICT + "at", "ay", "bee", "see", + "dee", "e", "eff", "gee", + "aych", "i", "jay", "kay", + "ell", "em", "en", "ohe", + "pee", "kju", "are", "es", + "tee", "you", "vee", "double you", + "eks", "why", "zed", "open bracket", +#else /* ALPHA_IN_DICT */ + "at", "A", "B", "C", + "D", "E", "F", "G", + "H", "I", "J", "K", + "L", "M", "N", "O", + "P", "Q", "R", "S", + "T", "U", "V", "W", + "X", "Y", "Z", "open bracket", +#endif /* ALPHA_IN_DICT */ + "back slash", "close bracket", "circumflex", "underscore", +#ifndef ALPHA_IN_DICT + "back quote", "ay", "bee", "see", + "dee", "e", "eff", "gee", + "aych", "i", "jay", "kay", + "ell", "em", "en", "ohe", + "pee", "kju", "are", "es", + "tee", "you", "vee", "double you", + "eks", "why", "zed", "open brace", +#else /* ALPHA_IN_DICT */ + "back quote", "A", "B", "C", + "D", "E", "F", "G", + "H", "I", "J", "K", + "L", "M", "N", "O", + "P", "Q", "R", "S", + "T", "U", "V", "W", + "X", "Y", "Z", "open brace", +#endif /* ALPHA_IN_DICT */ + "vertical bar", "close brace", "tilde", "delete", + NULL +}; + +/* Context definitions */ +static const char Anything[] = ""; +/* No context requirement */ + +static const char Nothing[] = " "; +/* Context is beginning or end of word */ + +static const char Silent[] = ""; +/* No phonemes */ + + +#define LEFT_PART 0 +#define MATCH_PART 1 +#define RIGHT_PART 2 +#define OUT_PART 3 + +typedef const char *Rule[4]; +/* Rule is an array of 4 character pointers */ + + +/*0 = Punctuation */ +/* +** LEFT_PART MATCH_PART RIGHT_PART OUT_PART +*/ + + +static Rule punct_rules[] = +{ + {Anything, " ", Anything, " "}, + {Anything, "-", Anything, ""}, + {".", "'S", Anything, "z"}, + {"#:.E", "'S", Anything, "z"}, + {"#", "'S", Anything, "z"}, + {Anything, "'", Anything, ""}, + {Anything, ",", Anything, " "}, + {Anything, ".", Anything, " "}, + {Anything, "?", Anything, " "}, + {Anything, "!", Anything, " "}, + {Anything, 0, Anything, Silent}, +}; + +static Rule A_rules[] = +{ + {Anything, "A", Nothing, "@"}, + {Nothing, "ARE", Nothing, "0r"}, + {Nothing, "AR", "O", "@r"}, + {Anything, "AR", "#", "er"}, + {"^", "AS", "#", "eIs"}, + {Anything, "A", "WA", "@"}, + {Anything, "AW", Anything, "O"}, + {" :", "ANY", Anything, "eni"}, + {Anything, "A", "^+#", "eI"}, + {"#:", "ALLY", Anything, "@li"}, + {Nothing, "AL", "#", "@l"}, + {Anything, "AGAIN", Anything, "@gen"}, + {"#:", "AG", "E", "IdZ"}, + {Anything, "A", "^+:#", "&"}, + {" :", "A", "^+ ", "eI"}, + {Anything, "A", "^%", "eI"}, + {Nothing, "ARR", Anything, "@r"}, + {Anything, "ARR", Anything, "&r"}, + {" :", "AR", Nothing, "0r"}, + {Anything, "AR", Nothing, "3"}, + {Anything, "AR", Anything, "0r"}, + {Anything, "AIR", Anything, "er"}, + {Anything, "AI", Anything, "eI"}, + {Anything, "AY", Anything, "eI"}, + {Anything, "AU", Anything, "O"}, + {"#:", "AL", Nothing, "@l"}, + {"#:", "ALS", Nothing, "@lz"}, + {Anything, "ALK", Anything, "Ok"}, + {Anything, "AL", "^", "Ol"}, + {" :", "ABLE", Anything, "eIb@l"}, + {Anything, "ABLE", Anything, "@b@l"}, + {Anything, "ANG", "+", "eIndZ"}, + {"^", "A", "^#", "eI"}, + {Anything, "A", Anything, "&"}, + {Anything, 0, Anything, Silent}, +}; + +static Rule B_rules[] = +{ + {Nothing, "BE", "^#", "bI"}, + {Anything, "BEING", Anything, "biIN"}, + {Nothing, "BOTH", Nothing, "b@UT"}, + {Nothing, "BUS", "#", "bIz"}, + {Anything, "BUIL", Anything, "bIl"}, + {Anything, "B", Anything, "b"}, + {Anything, 0, Anything, Silent}, +}; + +static Rule C_rules[] = +{ + {Nothing, "CH", "^", "k"}, + {"^E", "CH", Anything, "k"}, + {Anything, "CH", Anything, "tS"}, + {" S", "CI", "#", "saI"}, + {Anything, "CI", "A", "S"}, + {Anything, "CI", "O", "S"}, + {Anything, "CI", "EN", "S"}, + {Anything, "C", "+", "s"}, + {Anything, "CK", Anything, "k"}, + {Anything, "COM", "%", "kVm"}, + {Anything, "C", Anything, "k"}, + {Anything, 0, Anything, Silent}, +}; + +static Rule D_rules[] = +{ + {"#:", "DED", Nothing, "dId"}, + {".E", "D", Nothing, "d"}, + {"#:^E", "D", Nothing, "t"}, + {Nothing, "DE", "^#", "dI"}, + {Nothing, "DO", Nothing, "mDU"}, + {Nothing, "DOES", Anything, "dVz"}, + {Nothing, "DOING", Anything, "duIN"}, + {Nothing, "DOW", Anything, "daU"}, + {Anything, "DU", "A", "dZu"}, + {Anything, "D", Anything, "d"}, + {Anything, 0, Anything, Silent}, +}; + +static Rule E_rules[] = +{ + {"#:", "E", Nothing, ""}, + {"':^", "E", Nothing, ""}, + {" :", "E", Nothing, "i"}, + {"#", "ED", Nothing, "d"}, + {"#:", "E", "D ", ""}, + {Anything, "EV", "ER", "ev"}, + {Anything, "E", "^%", "i"}, + {Anything, "ERI", "#", "iri"}, + {Anything, "ERI", Anything, "erI"}, + {"#:", "ER", "#", "3"}, + {Anything, "ER", "#", "er"}, + {Anything, "ER", Anything, "3"}, + {Nothing, "EVEN", Anything, "iven"}, + {"#:", "E", "W", ""}, + {"T", "EW", Anything, "u"}, + {"S", "EW", Anything, "u"}, + {"R", "EW", Anything, "u"}, + {"D", "EW", Anything, "u"}, + {"L", "EW", Anything, "u"}, + {"Z", "EW", Anything, "u"}, + {"N", "EW", Anything, "u"}, + {"J", "EW", Anything, "u"}, + {"TH", "EW", Anything, "u"}, + {"CH", "EW", Anything, "u"}, + {"SH", "EW", Anything, "u"}, + {Anything, "EW", Anything, "ju"}, + {Anything, "E", "O", "i"}, + {"#:S", "ES", Nothing, "Iz"}, + {"#:C", "ES", Nothing, "Iz"}, + {"#:G", "ES", Nothing, "Iz"}, + {"#:Z", "ES", Nothing, "Iz"}, + {"#:X", "ES", Nothing, "Iz"}, + {"#:J", "ES", Nothing, "Iz"}, + {"#:CH", "ES", Nothing, "Iz"}, + {"#:SH", "ES", Nothing, "Iz"}, + {"#:", "E", "S ", ""}, + {"#:", "ELY", Nothing, "li"}, + {"#:", "EMENT", Anything, "ment"}, + {Anything, "EFUL", Anything, "fUl"}, + {Anything, "EE", Anything, "i"}, + {Anything, "EARN", Anything, "3n"}, + {Nothing, "EAR", "^", "3"}, + {Anything, "EAD", Anything, "ed"}, + {"#:", "EA", Nothing, "i@"}, + {Anything, "EA", "SU", "e"}, + {Anything, "EA", Anything, "i"}, + {Anything, "EIGH", Anything, "eI"}, + {Anything, "EI", Anything, "i"}, + {Nothing, "EYE", Anything, "aI"}, + {Anything, "EY", Anything, "i"}, + {Anything, "EU", Anything, "ju"}, + {Anything, "E", Anything, "e"}, + {Anything, 0, Anything, Silent}, +}; + +static Rule F_rules[] = +{ + {Anything, "FUL", Anything, "fUl"}, + {Anything, "F", Anything, "f"}, + {Anything, 0, Anything, Silent}, +}; + +static Rule G_rules[] = +{ + {Anything, "GIV", Anything, "gIv"}, + {Nothing, "G", "I^", "g"}, + {Anything, "GE", "T", "ge"}, + {"SU", "GGES", Anything, "gdZes"}, + {Anything, "GG", Anything, "g"}, + {" B#", "G", Anything, "g"}, + {Anything, "G", "+", "dZ"}, + {Anything, "GREAT", Anything, "greIt"}, + {"#", "GH", Anything, ""}, + {Anything, "G", Anything, "g"}, + {Anything, 0, Anything, Silent}, +}; + +static Rule H_rules[] = +{ + {Nothing, "HAV", Anything, "h&v"}, + {Nothing, "HERE", Anything, "hir"}, + {Nothing, "HOUR", Anything, "aU3"}, + {Anything, "HOW", Anything, "haU"}, + {Anything, "H", "#", "h"}, + {Anything, "H", Anything, ""}, + {Anything, 0, Anything, Silent}, +}; + +static Rule I_rules[] = +{ + {Nothing, "IAIN", Nothing, "I@n"}, + {Nothing, "ING", Nothing, "IN"}, + {Nothing, "IN", Anything, "In"}, + {Nothing, "I", Nothing, "aI"}, + {Anything, "IN", "D", "aIn"}, + {Anything, "IER", Anything, "i3"}, + {"#:R", "IED", Anything, "id"}, + {Anything, "IED", Nothing, "aId"}, + {Anything, "IEN", Anything, "ien"}, + {Anything, "IE", "T", "aIe"}, + {" :", "I", "%", "aI"}, + {Anything, "I", "%", "i"}, + {Anything, "IE", Anything, "i"}, + {Anything, "I", "^+:#", "I"}, + {Anything, "IR", "#", "aIr"}, + {Anything, "IZ", "%", "aIz"}, + {Anything, "IS", "%", "aIz"}, + {Anything, "I", "D%", "aI"}, + {"+^", "I", "^+", "I"}, + {Anything, "I", "T%", "aI"}, + {"#:^", "I", "^+", "I"}, + {Anything, "I", "^+", "aI"}, + {Anything, "IR", Anything, "3"}, + {Anything, "IGH", Anything, "aI"}, + {Anything, "ILD", Anything, "aIld"}, + {Anything, "IGN", Nothing, "aIn"}, + {Anything, "IGN", "^", "aIn"}, + {Anything, "IGN", "%", "aIn"}, + {Anything, "IQUE", Anything, "ik"}, + {"^", "I", "^#", "aI"}, + {Anything, "I", Anything, "I"}, + {Anything, 0, Anything, Silent}, +}; + +static Rule J_rules[] = +{ + {Anything, "J", Anything, "dZ"}, + {Anything, 0, Anything, Silent}, +}; + +static Rule K_rules[] = +{ + {Nothing, "K", "N", ""}, + {Anything, "K", Anything, "k"}, + {Anything, 0, Anything, Silent}, +}; + +static Rule L_rules[] = +{ + {Anything, "LO", "C#", "l@U"}, + {"L", "L", Anything, ""}, + {"#:^", "L", "%", "@l"}, + {Anything, "LEAD", Anything, "lid"}, + {Anything, "L", Anything, "l"}, + {Anything, 0, Anything, Silent}, +}; + +static Rule M_rules[] = +{ + {Anything, "MOV", Anything, "muv"}, + {"#", "MM", "#", "m"}, + {Anything, "M", Anything, "m"}, + {Anything, 0, Anything, Silent}, +}; + +static Rule N_rules[] = +{ + {"E", "NG", "+", "ndZ"}, + {Anything, "NG", "R", "Ng"}, + {Anything, "NG", "#", "Ng"}, + {Anything, "NGL", "%", "Ng@l"}, + {Anything, "NG", Anything, "N"}, + {Anything, "NK", Anything, "Nk"}, + {Nothing, "NOW", Nothing, "naU"}, + {"#", "NG", Nothing, "Ng"}, + {Anything, "N", Anything, "n"}, + {Anything, 0, Anything, Silent}, +}; + +static Rule O_rules[] = +{ + {Anything, "OF", Nothing, "@v"}, + {Anything, "OROUGH", Anything, "3@U"}, + {"#:", "OR", Nothing, "3"}, + {"#:", "ORS", Nothing, "3z"}, + {Anything, "OR", Anything, "Or"}, + {Nothing, "ONE", Anything, "wVn"}, + {Anything, "OW", Anything, "@U"}, + {Nothing, "OVER", Anything, "@Uv3"}, + {Anything, "OV", Anything, "Vv"}, + {Anything, "O", "^%", "@U"}, + {Anything, "O", "^EN", "@U"}, + {Anything, "O", "^I#", "@U"}, + {Anything, "OL", "D", "@Ul"}, + {Anything, "OUGHT", Anything, "Ot"}, + {Anything, "OUGH", Anything, "Vf"}, + {Nothing, "OU", Anything, "aU"}, + {"H", "OU", "S#", "aU"}, + {Anything, "OUS", Anything, "@s"}, + {Anything, "OUR", Anything, "Or"}, + {Anything, "OULD", Anything, "Ud"}, + {"^", "OU", "^L", "V"}, + {Anything, "OUP", Anything, "up"}, + {Anything, "OU", Anything, "aU"}, + {Anything, "OY", Anything, "oI"}, + {Anything, "OING", Anything, "@UIN"}, + {Anything, "OI", Anything, "oI"}, + {Anything, "OOR", Anything, "Or"}, + {Anything, "OOK", Anything, "Uk"}, + {Anything, "OOD", Anything, "Ud"}, + {Anything, "OO", Anything, "u"}, + {Anything, "O", "E", "@U"}, + {Anything, "O", Nothing, "@U"}, + {Anything, "OA", Anything, "@U"}, + {Nothing, "ONLY", Anything, "@Unli"}, + {Nothing, "ONCE", Anything, "wVns"}, + {Anything, "ON'T", Anything, "@Unt"}, + {"C", "O", "N", "0"}, + {Anything, "O", "NG", "O"}, + {" :^", "O", "N", "V"}, + {"I", "ON", Anything, "@n"}, + {"#:", "ON", Nothing, "@n"}, + {"#^", "ON", Anything, "@n"}, + {Anything, "O", "ST ", "@U"}, + {Anything, "OF", "^", "Of"}, + {Anything, "OTHER", Anything, "VD3"}, + {Anything, "OSS", Nothing, "Os"}, + {"#:^", "OM", Anything, "Vm"}, + {Anything, "O", Anything, "0"}, + {Anything, 0, Anything, Silent}, +}; + +static Rule P_rules[] = +{ + {Anything, "PH", Anything, "f"}, + {Anything, "PEOP", Anything, "pip"}, + {Anything, "POW", Anything, "paU"}, + {Anything, "PUT", Nothing, "pUt"}, + {Anything, "P", Anything, "p"}, + {Anything, 0, Anything, Silent}, +}; + +static Rule Q_rules[] = +{ + {Anything, "QUAR", Anything, "kwOr"}, + {Anything, "QU", Anything, "kw"}, + {Anything, "Q", Anything, "k"}, + {Anything, 0, Anything, Silent}, +}; + +static Rule R_rules[] = +{ + {Nothing, "RE", "^#", "ri"}, + {Anything, "R", Anything, "r"}, + {Anything, 0, Anything, Silent}, +}; + +static Rule S_rules[] = +{ + {Anything, "SH", Anything, "S"}, + {"#", "SION", Anything, "Z@n"}, + {Anything, "SOME", Anything, "sVm"}, + {"#", "SUR", "#", "Z3"}, + {Anything, "SUR", "#", "S3"}, + {"#", "SU", "#", "Zu"}, + {"#", "SSU", "#", "Su"}, + {"#", "SED", Nothing, "zd"}, + {"#", "S", "#", "z"}, + {Anything, "SAID", Anything, "sed"}, + {"^", "SION", Anything, "S@n"}, + {Anything, "S", "S", ""}, + {".", "S", Nothing, "z"}, + {"#:.E", "S", Nothing, "z"}, + {"#:^##", "S", Nothing, "z"}, + {"#:^#", "S", Nothing, "s"}, + {"U", "S", Nothing, "s"}, + {" :#", "S", Nothing, "z"}, + {Nothing, "SCH", Anything, "sk"}, + {Anything, "S", "C+", ""}, + {"#", "SM", Anything, "zm"}, + {"#", "SN", "'", "z@n"}, + {Anything, "S", Anything, "s"}, + {Anything, 0, Anything, Silent}, +}; + +static Rule T_rules[] = +{ + {Nothing, "THE", Nothing, "D@"}, + {Anything, "TO", Nothing, "tu"}, + {Anything, "THAT", Nothing, "D&t"}, + {Nothing, "THIS", Nothing, "DIs"}, + {Nothing, "THEY", Anything, "DeI"}, + {Nothing, "THERE", Anything, "Der"}, + {Anything, "THER", Anything, "D3"}, + {Anything, "THEIR", Anything, "Der"}, + {Nothing, "THAN", Nothing, "D&n"}, + {Nothing, "THEM", Nothing, "Dem"}, + {Anything, "THESE", Nothing, "Diz"}, + {Nothing, "THEN", Anything, "Den"}, + {Anything, "THROUGH", Anything, "Tru"}, + {Anything, "THOSE", Anything, "D@Uz"}, + {Anything, "THOUGH", Nothing, "D@U"}, + {Nothing, "THUS", Anything, "DVs"}, + {Anything, "TH", Anything, "T"}, + {"#:", "TED", Nothing, "tId"}, + {"S", "TI", "#N", "tS"}, + {Anything, "TI", "O", "S"}, + {Anything, "TI", "A", "S"}, + {Anything, "TIEN", Anything, "S@n"}, + {Anything, "TUR", "#", "tS3"}, + {Anything, "TU", "A", "tSu"}, + {Nothing, "TWO", Anything, "tu"}, + {Anything, "T", Anything, "t"}, + {Anything, 0, Anything, Silent}, +}; + +static Rule U_rules[] = +{ + {Nothing, "UN", "I", "jun"}, + {Nothing, "UN", Anything, "Vn"}, + {Nothing, "UPON", Anything, "@pOn"}, + {"T", "UR", "#", "Ur"}, + {"S", "UR", "#", "Ur"}, + {"R", "UR", "#", "Ur"}, + {"D", "UR", "#", "Ur"}, + {"L", "UR", "#", "Ur"}, + {"Z", "UR", "#", "Ur"}, + {"N", "UR", "#", "Ur"}, + {"J", "UR", "#", "Ur"}, + {"TH", "UR", "#", "Ur"}, + {"CH", "UR", "#", "Ur"}, + {"SH", "UR", "#", "Ur"}, + {Anything, "UR", "#", "jUr"}, + {Anything, "UR", Anything, "3"}, + {Anything, "U", "^ ", "V"}, + {Anything, "U", "^^", "V"}, + {Anything, "UY", Anything, "aI"}, + {" G", "U", "#", ""}, + {"G", "U", "%", ""}, + {"G", "U", "#", "w"}, + {"#N", "U", Anything, "ju"}, + {"T", "U", Anything, "u"}, + {"S", "U", Anything, "u"}, + {"R", "U", Anything, "u"}, + {"D", "U", Anything, "u"}, + {"L", "U", Anything, "u"}, + {"Z", "U", Anything, "u"}, + {"N", "U", Anything, "u"}, + {"J", "U", Anything, "u"}, + {"TH", "U", Anything, "u"}, + {"CH", "U", Anything, "u"}, + {"SH", "U", Anything, "u"}, + {Anything, "U", Anything, "ju"}, + {Anything, 0, Anything, Silent}, +}; + +static Rule V_rules[] = +{ + {Anything, "VIEW", Anything, "vju"}, + {Anything, "V", Anything, "v"}, + {Anything, 0, Anything, Silent}, +}; + +static Rule W_rules[] = +{ + {Nothing, "WERE", Anything, "w3"}, + {Anything, "WA", "S", "w0"}, + {Anything, "WA", "T", "w0"}, + {Anything, "WHERE", Anything, "hwer"}, + {Anything, "WHAT", Anything, "hw0t"}, + {Anything, "WHOL", Anything, "h@Ul"}, + {Anything, "WHO", Anything, "hu"}, + {Anything, "WH", Anything, "hw"}, + {Anything, "WAR", Anything, "wOr"}, + {Anything, "WOR", "^", "w3"}, + {Anything, "WR", Anything, "r"}, + {Anything, "W", Anything, "w"}, + {Anything, 0, Anything, Silent}, +}; + +static Rule X_rules[] = +{ + {Anything, "X", Anything, "ks"}, + {Anything, 0, Anything, Silent}, +}; + +static Rule Y_rules[] = +{ + {Anything, "YOUNG", Anything, "jVN"}, + {Nothing, "YOU", Anything, "ju"}, + {Nothing, "YES", Anything, "jes"}, + {Nothing, "Y", Anything, "j"}, + {"#:^", "Y", Nothing, "i"}, + {"#:^", "Y", "I", "i"}, + {" :", "Y", Nothing, "aI"}, + {" :", "Y", "#", "aI"}, + {" :", "Y", "^+:#", "I"}, + {" :", "Y", "^#", "aI"}, + {Anything, "Y", Anything, "I"}, + {Anything, 0, Anything, Silent}, +}; + +static Rule Z_rules[] = +{ + {Anything, "Z", Anything, "z"}, + {Anything, 0, Anything, Silent}, +}; + +static Rule *Rules[] = +{ + punct_rules, + A_rules, B_rules, C_rules, D_rules, E_rules, F_rules, G_rules, + H_rules, I_rules, J_rules, K_rules, L_rules, M_rules, N_rules, + O_rules, P_rules, Q_rules, R_rules, S_rules, T_rules, U_rules, + V_rules, W_rules, X_rules, Y_rules, Z_rules +}; + + +static const char *Cardinals[] = +{ + "zero", "one", "two", "three", "four", + "five", "six", "seven", "eight", "nine", + "ten", "eleven", "twelve", "thirteen", "fourteen", + "fifteen", "sixteen", "seventeen", "eighteen", "nineteen" +}; + + +static const char *Twenties[] = +{ + "twenty", "thirty", "forty", "fifty", + "sixty", "seventy", "eighty", "ninety" +}; + + +static const char *Ordinals[] = +{ + "zeroth", "first", "second", "third", "fourth", + "fifth", "sixth", "seventh","eighth", "ninth", + "tenth", "eleventh", "twelfth", "thirteenth", "fourteenth", + "fifteenth", "sixteenth", "seventeenth", "eighteenth", "nineteenth" +}; + + +static const char *Ord_twenties[] = +{ + "twentieth", "thirtieth", "fortieth", "fiftieth", + "sixtieth", "seventieth", "eightieth", "ninetieth" +}; + + +/* +** Translate a number to phonemes. This version is for CARDINAL numbers. +** Note: this is recursive. +*/ +static int xlate_cardinal(int value, darray *phone) +{ + int nph = 0; + + if (value < 0) + { + nph += xlate_string("minus", phone); + value = (-value); + + if (value < 0) /* Overflow! -32768 */ + { + nph += xlate_string("a lot", phone); + return nph; + } + } + + if (value >= 1000000000L) + /* Billions */ + { + nph += xlate_cardinal(value / 1000000000L, phone); + nph += xlate_string("billion", phone); + value = value % 1000000000; + + if (value == 0) + return nph; /* Even billion */ + + if (value < 100) + nph += xlate_string("and", phone); + + /* as in THREE BILLION AND FIVE */ + } + + if (value >= 1000000L) + /* Millions */ + { + nph += xlate_cardinal(value / 1000000L, phone); + nph += xlate_string("million", phone); + value = value % 1000000L; + + if (value == 0) + return nph; /* Even million */ + + if (value < 100) + nph += xlate_string("and", phone); + + /* as in THREE MILLION AND FIVE */ + } + + /* Thousands 1000..1099 2000..99999 */ + /* 1100 to 1999 is eleven-hunderd to ninteen-hunderd */ + + if ((value >= 1000L && value <= 1099L) || value >= 2000L) + { + nph += xlate_cardinal(value / 1000L, phone); + nph += xlate_string("thousand", phone); + value = value % 1000L; + + if (value == 0) + return nph; /* Even thousand */ + + if (value < 100) + nph += xlate_string("and", phone); + + /* as in THREE THOUSAND AND FIVE */ + } + + if (value >= 100L) + { + nph += xlate_string(Cardinals[value / 100], phone); + nph += xlate_string("hundred", phone); + value = value % 100; + + if (value == 0) + return nph; /* Even hundred */ + } + + if (value >= 20) + { + nph += xlate_string(Twenties[(value - 20) / 10], phone); + value = value % 10; + + if (value == 0) + return nph; /* Even ten */ + } + + nph += xlate_string(Cardinals[value], phone); + + return nph; +} + +/* +** Translate a number to phonemes. This version is for ORDINAL numbers. +** Note: this is recursive. +*/ +static int xlate_ordinal(int value, darray *phone) +{ + int nph = 0; + + if (value < 0) + { + nph += xlate_string("minus", phone); + value = (-value); + + if (value < 0) /* Overflow! -32768 */ + { + nph += xlate_string("a lot", phone); + return nph; + } + } + + if (value >= 1000000000L) + /* Billions */ + { + nph += xlate_cardinal(value / 1000000000L, phone); + value = value % 1000000000; + + if (value == 0) + { + nph += xlate_string("billionth", phone); + return nph; /* Even billion */ + } + + nph += xlate_string("billion", phone); + + if (value < 100) + nph += xlate_string("and", phone); + + /* as in THREE BILLION AND FIVE */ + } + + if (value >= 1000000L) + /* Millions */ + { + nph += xlate_cardinal(value / 1000000L, phone); + value = value % 1000000L; + + if (value == 0) + { + nph += xlate_string("millionth", phone); + return nph; /* Even million */ + } + + nph += xlate_string("million", phone); + + if (value < 100) + nph += xlate_string("and", phone); + + /* as in THREE MILLION AND FIVE */ + } + + /* Thousands 1000..1099 2000..99999 */ + /* 1100 to 1999 is eleven-hunderd to ninteen-hunderd */ + + if ((value >= 1000L && value <= 1099L) || value >= 2000L) + { + nph += xlate_cardinal(value / 1000L, phone); + value = value % 1000L; + + if (value == 0) + { + nph += xlate_string("thousandth", phone); + return nph; /* Even thousand */ + } + + nph += xlate_string("thousand", phone); + + if (value < 100) + nph += xlate_string("and", phone); + + /* as in THREE THOUSAND AND FIVE */ + } + + if (value >= 100L) + { + nph += xlate_string(Cardinals[value / 100], phone); + value = value % 100; + + if (value == 0) + { + nph += xlate_string("hundredth", phone); + return nph; /* Even hundred */ + } + + nph += xlate_string("hundred", phone); + } + + if (value >= 20) + { + if ((value % 10) == 0) + { + nph += xlate_string(Ord_twenties[(value - 20) / 10], phone); + return nph; /* Even ten */ + } + + nph += xlate_string(Twenties[(value - 20) / 10], phone); + + value = value % 10; + } + + nph += xlate_string(Ordinals[value], phone); + + return nph; +} + + +static int isvowel(int chr) +{ + return (chr == 'A' || chr == 'E' || chr == 'I' || + chr == 'O' || chr == 'U'); +} + +static int isconsonant(int chr) +{ + return (isupper(chr) && !isvowel(chr)); +} + +static int leftmatch( + const char *pattern, /* first char of pattern to match in text */ + const char *context) /* last char of text to be matched */ + +{ + const char *pat; + const char *text; + int count; + + if (*pattern == '\0') + /* null string matches any context */ + { + return 1; + } + + /* point to last character in pattern string */ + count = (int)strlen(pattern); + + pat = pattern + (count - 1); + + text = context; + + for (; count > 0; pat--, count--) + { + /* First check for simple text or space */ + if (isalpha(*pat) || *pat == '\'' || *pat == ' ') + { + if (*pat != *text) + { + return 0; + } + else + { + text--; + continue; + } + } + + switch (*pat) + { + + case '#': /* One or more vowels */ + + if (!isvowel(*text)) + return 0; + + text--; + + while (isvowel(*text)) + text--; + + break; + + case ':': /* Zero or more consonants */ + while (isconsonant(*text)) + text--; + + break; + + case '^': /* One consonant */ + if (!isconsonant(*text)) + return 0; + + text--; + + break; + + case '.': /* B, D, V, G, J, L, M, N, R, W, Z */ + if (*text != 'B' && *text != 'D' && *text != 'V' + && *text != 'G' && *text != 'J' && *text != 'L' + && *text != 'M' && *text != 'N' && *text != 'R' + && *text != 'W' && *text != 'Z') + return 0; + + text--; + + break; + + case '+': /* E, I or Y (front vowel) */ + if (*text != 'E' && *text != 'I' && *text != 'Y') + return 0; + + text--; + + break; + + case '%': + + default: + fprintf(stderr, "Bad char in left rule: '%c'\n", *pat); + + return 0; + } + } + + return 1; +} + +static int rightmatch( + const char *pattern, /* first char of pattern to match in text */ + const char *context) /* last char of text to be matched */ +{ + const char *pat; + const char *text; + + if (*pattern == '\0') + /* null string matches any context */ + return 1; + + pat = pattern; + + text = context; + + for (pat = pattern; *pat != '\0'; pat++) + { + /* First check for simple text or space */ + if (isalpha(*pat) || *pat == '\'' || *pat == ' ') + { + if (*pat != *text) + { + return 0; + } + else + { + text++; + continue; + } + } + + switch (*pat) + { + + case '#': /* One or more vowels */ + + if (!isvowel(*text)) + return 0; + + text++; + + while (isvowel(*text)) + text++; + + break; + + case ':': /* Zero or more consonants */ + while (isconsonant(*text)) + text++; + + break; + + case '^': /* One consonant */ + if (!isconsonant(*text)) + return 0; + + text++; + + break; + + case '.': /* B, D, V, G, J, L, M, N, R, W, Z */ + if (*text != 'B' && *text != 'D' && *text != 'V' + && *text != 'G' && *text != 'J' && *text != 'L' + && *text != 'M' && *text != 'N' && *text != 'R' + && *text != 'W' && *text != 'Z') + return 0; + + text++; + + break; + + case '+': /* E, I or Y (front vowel) */ + if (*text != 'E' && *text != 'I' && *text != 'Y') + return 0; + + text++; + + break; + + case '%': /* ER, E, ES, ED, ING, ELY (a suffix) */ + if (*text == 'E') + { + text++; + + if (*text == 'L') + { + text++; + + if (*text == 'Y') + { + text++; + break; + } + + else + { + text--; /* Don't gobble L */ + break; + } + } + + else + if (*text == 'R' || *text == 'S' || *text == 'D') + text++; + + break; + } + + else + if (*text == 'I') + { + text++; + + if (*text == 'N') + { + text++; + + if (*text == 'G') + { + text++; + break; + } + } + + return 0; + } + + else + return 0; + + default: + fprintf(stderr, "Bad char in right rule:'%c'\n", *pat); + + return 0; + } + } + + return 1; +} + +static void phone_cat(darray *arg, const char *s) +{ + char ch; + + while ((ch = *s++)) + arg->put(ch); +} + + +static int find_rule(darray *arg, char *word, int index, Rule *rules) +{ + for (;;) /* Search for the rule */ + { + Rule *rule; + const char *left, + *match, + *right, + *output; + int remainder; + rule = rules++; + match = (*rule)[1]; + + if (match == 0) + /* bad symbol! */ + { + fprintf(stderr, "Error: Can't find rule for: '%c' in \"%s\"\n", + word[index], word); + return index + 1; /* Skip it! */ + } + + for (remainder = index; *match != '\0'; match++, remainder++) + { + if (*match != word[remainder]) + break; + } + + if (*match != '\0') + continue; /* found missmatch */ + + left = (*rule)[0]; + + right = (*rule)[2]; + + if (!leftmatch(left, &word[index - 1])) + continue; + + if (!rightmatch(right, &word[remainder])) + continue; + + output = (*rule)[3]; + + phone_cat(arg, output); + + return remainder; + } +} + +static void guess_word(darray *arg, char *word) +{ + int index; /* Current position in word */ + int type; /* First letter of match part */ + index = 1; /* Skip the initial blank */ + + do + { + if (isupper(word[index])) + type = word[index] - 'A' + 1; + else + type = 0; + + index = find_rule(arg, word, index, Rules[type]); + } + + while (word[index] != '\0'); +} + + +static int NRL(const char *s, int n, darray *phone) +{ + int old = phone->getSize(); + char *word = (char *) malloc(n + 3); + char *d = word; + *d++ = ' '; + + while (n-- > 0) + { + char ch = *s++; + + if (islower(ch)) + ch = toupper(ch); + + *d++ = ch; + } + + *d++ = ' '; // kinda unnecessary + + *d = '\0'; + guess_word(phone, word); + free(word); + return phone->getSize() - old; +} + + +static int spell_out(const char *word, int n, darray *phone) +{ + int nph = 0; + + while (n-- > 0) + { + nph += xlate_string(ASCII[*word++ & 0x7F], phone); + } + + return nph; +} + +static int suspect_word(const char *s, int n) +{ + int i = 0; + int seen_lower = 0; + int seen_upper = 0; + int seen_vowel = 0; + int last = 0; + + for (i = 0; i < n; i++) + { + char ch = *s++; + + if (i && last != '-' && isupper(ch)) + seen_upper = 1; + + if (islower(ch)) + { + seen_lower = 1; + ch = toupper(ch); + } + + if (ch == 'A' || ch == 'E' || ch == 'I' || ch == 'O' || ch == 'U' || ch == 'Y') + seen_vowel = 1; + + last = ch; + } + + return !seen_vowel || (seen_upper && seen_lower) || !seen_lower; +} + +static int xlate_word(const char *word, int n, darray *phone) +{ + int nph = 0; + + if (*word != '[') + { + if (suspect_word(word, n)) + return spell_out(word, n, phone); + else + { + nph += NRL(word, n, phone); + } + } + + else + { + if ((++word)[(--n) - 1] == ']') + n--; + + while (n-- > 0) + { + phone->put(*word++); + nph++; + } + } + + phone->put(' '); + + return nph + 1; +} + + +int xlate_string(const char *string, darray *phone) +{ + int nph = 0; + const char *s = string; + char ch; + + while (isspace(ch = *s)) + s++; + + while ((ch = *s)) + { + const char *word = s; + + if (isalpha(ch)) + { + while (isalpha(ch = *s) || ((ch == '\'' || ch == '-' || ch == '.') && isalpha(s[1]))) + { + s++; + } + + if (!ch || isspace(ch) || ispunct(ch) || (isdigit(ch) && !suspect_word(word, (int)(s - word)))) + { + nph += xlate_word(word, (int)(s - word), phone); + } + else + { + while ((ch = *s) && !isspace(ch) && !ispunct(ch)) + { + s++; + } + + nph += spell_out(word, (int)(s - word), phone); + } + } + else + { + if (isdigit(ch) || (ch == '-' && isdigit(s[1]))) + { + int sign = (ch == '-') ? -1 : 1; + int value = 0; + + if (sign < 0) + { + ch = *++s; + } + + while (isdigit(ch = *s)) + { + value = value * 10 + ch - '0'; + s++; + } + + if (ch == '.' && isdigit(s[1])) + { + word = ++s; + nph += xlate_cardinal(value * sign, phone); + nph += xlate_string("point", phone); + + while (isdigit(ch = *s)) + { + s++; + } + + nph += spell_out(word, (int)(s - word), phone); + } + else + { + /* check for ordinals, date, time etc. can go in here */ + nph += xlate_cardinal(value * sign, phone); + } + } + else + { + if (ch == '[' && strchr(s, ']')) + { + const char *word = s; + + while (*s && *s++ != ']') + /* nothing */ + ; + + nph += xlate_word(word, (int)(s - word), phone); + } + else + { + if (ispunct(ch)) + { + switch (ch) + { + + case '!': + + case '?': + + case '.': + s++; + phone->put('.');// (' '); + break; + + case '"': /* change pitch ? */ + + case ':': + + case '-': + + case ';': + + case ',': + + case '(': + + case ')': + s++; + phone->put(' '); + break; + + case '[': + { + const char *e = strchr(s, ']'); + + if (e) + { + s++; + + while (s < e) + phone->put(*s++); + + s = e + 1; + + break; + } + } + // fallthrough + default: + nph += spell_out(word, 1, phone); + s++; + break; + } + } + else + { + while ((ch = *s) && !isspace(ch)) + { + s++; + } + + nph += spell_out(word, (int)(s - word), phone); + } + } + } + + while (isspace(ch = *s)) + s++; + } + } + + return nph; +} diff --git a/src/soloud/src/audiosource/speech/tts.h b/src/soloud/src/audiosource/speech/tts.h new file mode 100644 index 0000000..8966e76 --- /dev/null +++ b/src/soloud/src/audiosource/speech/tts.h @@ -0,0 +1,5 @@ + +extern int xlate_string (const char *string,darray *phone); + + + diff --git a/src/soloud/src/audiosource/tedsid/sid.cpp b/src/soloud/src/audiosource/tedsid/sid.cpp new file mode 100644 index 0000000..6864d06 --- /dev/null +++ b/src/soloud/src/audiosource/tedsid/sid.cpp @@ -0,0 +1,623 @@ +// Issues: +// - Filter cutoff frequencies not 100% accurate +// - Combined waveforms of the 6581 incorrect (SID card used 8580 anyway) +// - filter distortion not emulated +// - no joystick or paddle support +// - probably many more + +#include +#ifndef __vita__ +#include +#endif +#include "sid.h" +//#include "Tedmem.h" + +#define DIGIBLASTER_MULT 14 + +#ifndef M_PI +#define M_PI 3.1415926535897932384626433832795 +#endif + +// Hack to store master volume +//unsigned int SIDsound::masterVolume = 0; + +// +// Random number generator for noise waveform +// + +// Test a bit. Returns 1 if bit is set. +inline static long bit(long val, unsigned int bitnr) +{ + return (val >> bitnr) & 1; +} + +inline void SIDsound::updateShiftReg(SIDVoice &v) +{ + unsigned int shiftReg = v.shiftReg; + unsigned int bit22 = bit(shiftReg,22); + unsigned int bit17 = bit(shiftReg,17); + + // Shift 1 bit left + shiftReg = ((shiftReg) << 1);// & 0x7fffff; + + // Feed bit 0 + v.shiftReg = shiftReg | (bit22 ^ bit17); +} + +inline int SIDsound::waveNoise(SIDVoice &v) +{ + unsigned int shiftReg = v.shiftReg; + // Pick out bits to make output value, left shift by 4 + return + (bit(shiftReg,22) << 11) | + (bit(shiftReg,20) << 10) | + (bit(shiftReg,16) << 9) | + (bit(shiftReg,13) << 8) | + (bit(shiftReg,11) << 7) | + (bit(shiftReg, 7) << 6) | + (bit(shiftReg, 4) << 5) | + (bit(shiftReg, 2) << 4); +}; + +void SIDsound::setModel(unsigned int model) +{ + int i; + + switch (model) { + case SID8580DB: + case SID8580: + for ( i=0; i<2048; i++) { + double x = i / 8.0; + //double cf = 12500.0 * i / 2048.0; // specs and YAPE + // approximate with a 3-degree polynomial + //double cf = 0.0003*x*x*x + 0.0882*x*x + 44.49*x - 38.409; + // approximate with a 2-degree polynomial + //double cf = -0.0177*x*x + 55.261*x - 55.518; // CSG 8580R4 + double cf = -0.0156*x*x + 48.473*x - 45.074; // 8580R5 + cutOffFreq[i] = cf <= 0 ? 0 : cf; + } + dcWave = 0x800; + dcMixer = 0; + dcVoice = 0; + break; + + case SID6581: // R4 actually + for (i=0; i<1024; i++) { + cutOffFreq[i] = (tanh(((double)i/1.5 - 1024.0)/1024.0*M_PI) + tanh(M_PI)) + * (6000.0 - 220.0) + 220.0; + } + for (; i<1056; i++) { + double x = ((double)i - 1024.0) / (1056.0 - 1003.); + cutOffFreq[i] = x*(1315.0 - 1003.0) + 1003.0; + } + for (; i<2048; i++) { + double x = ((double)i - 1056.0) / (2048.0 - 1056.0); + cutOffFreq[i] = //(tanh (((double)i - 2048.0)/1024.0*M_PI) + tanh(M_PI)) + //* (20163.0 - 1315.0) + 1315.0; + (20163.0 - 1315.0) * x + 1315.0; + } + dcWave = 0x380; + dcMixer = -0xFFF*0xFF/18 >> 7; + dcVoice = 0x800*0xFF; + break; + + case SID6581R1: // 6581 R1 + for (i=0; i<1024; i++) { + cutOffFreq[i] = (tanh(((double)i-1024.0)/1024.0*M_PI) + tanh(M_PI)) + * (6000.0 - 220.0) + 220.0; + } + for (; i<2048; i++) { + cutOffFreq[i] = (tanh (((double)i-2048.0)/1024.0*M_PI) + tanh(M_PI)) + * (18000.0 - 4600.0) + 4600.0; + } + dcWave = 0x380; + dcMixer = -0xFFF*0xFF/18 >> 7; + dcVoice = 0x800*0xFF; + break; + } + setFilterCutoff(); + model_ = model; +} + +// Static data members +const unsigned int SIDsound::RateCountPeriod[16] = { + 0x7F00,0x0006,0x003C,0x0330,0x20C0,0x6755,0x3800,0x500E, + 0x1212,0x0222,0x1848,0x59B8,0x3840,0x77E2,0x7625,0x0A93 +}; + +const unsigned char SIDsound::envGenDRdivisors[256] = { + 30,30,30,30,30,30,16,16,16,16,16,16,16,16,8,8, + 8,8,8,8,8,8,8,8,8,8,4,4,4,4,4,4, + 4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4, + 4,4,4,4,4,4,2,2,2,2,2,2,2,2,2,2, + 2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2, + 2,2,2,2,2,2,2,2,2,2,2,2,2,1,1,1, + 1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1, + 1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1, + 1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1, + 1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1, + 1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1, + 1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1, + 1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1, + 1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1, + 1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1, + 1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1 +}; + +void SIDsound::calcEnvelopeTable() +{ + // number of SIDsound envelope clocks per sample (0x1FFFFF) + const double deltaSampleCyclesFloat = ((double) sidBaseFreq * 256.0) / (double)sampleRate; + sidCyclesPerSampleInt = (unsigned int) (deltaSampleCyclesFloat + 0.5); +} + +void SIDsound::setFrequency(unsigned int sid_frequency) +{ + switch (sid_frequency) { + case 0: + sidBaseFreq = TED_SOUND_CLOCK * 4; // 312 * 114 * 50 / 2; + break; + default: + sidBaseFreq = SOUND_FREQ_PAL_C64; + break; + } + calcEnvelopeTable(); +} + +void SIDsound::setSampleRate(unsigned int sampleRate_) +{ + sampleRate = sampleRate_; + calcEnvelopeTable(); +} + +SIDsound::SIDsound(unsigned int model, unsigned int chnlDisableMask) : enableDigiBlaster(false) +{ + unsigned int i; + masterVolume = 0; + + // Link voices together + for (i=0; i<3; i++) { + voice[i].modulatedBy = &voice[(i+2)%3]; // previous voice + voice[i].modulatesThis = &voice[(i+1)%3]; // next voice + voice[i].disabled = !!((chnlDisableMask >> i) & 1); + } + + filterCutoff = 0; + setModel(model); + setFrequency(0); + reset(); +} + +void SIDsound::reset(void) +{ + volume = masterVolume; + + lastByteWritten = 0; + + for (int v=0; v<3; v++) { + voice[v].wave = WAVE_NONE; + voice[v].egState = EG_FROZEN; + voice[v].accu = voice[v].add = 0; + voice[v].freq = voice[v].pw = 0; + voice[v].envCurrLevel = voice[v].envSustainLevel = 0; + voice[v].gate = voice[v].ring = voice[v].test = 0; + voice[v].filter = voice[v].sync = false; + voice[v].muted = 0; + // Initial value of internal shift register + voice[v].shiftReg = 0x7FFFFC; + voice[v].envExpCounter = 0; + voice[v].envAttackAdd = voice[v].envDecaySub = voice[v].envReleaseSub = 0; + voice[v].envCounterCompare = RateCountPeriod[0]; + voice[v].envCounter = 0x7fff; + } + + filterType = FILTER_NONE; + filterCutoff = filterResonance = 0; + + Vhp = Vbp = Vlp = 0; + setFilterCutoff(); + setResonance(); + + dcDigiBlaster = 0; + clockDeltaRemainder = 0; +} + +inline int SIDsound::getWaveSample(SIDVoice &v) +{ + switch (v.wave) { + case WAVE_TRI: + return waveTriangle(v); + case WAVE_SAW: + return waveSaw(v); + case WAVE_PULSE: + return wavePulse(v); + case WAVE_TRISAW: + return waveTriSaw(v); + case WAVE_TRIPULSE: + return waveTriPulse(v); + case WAVE_SAWPULSE: + return waveSawPulse(v); + case WAVE_TRISAWPULSE: + return waveTriSawPulse(v); + case WAVE_NOISE: + return waveNoise(v); + default: + return 0x800; + } +} + +unsigned char SIDsound::read(unsigned int adr) +{ + switch(adr) { + case 0x19: + case 0x1A: + // POTX/POTY paddle AD converters (unemulated) + lastByteWritten = 0; + return 0xFF; + + // Voice 3 (only) oscillator readout + case 0x1B: + lastByteWritten = 0; + return (unsigned char)(getWaveSample(voice[2])>>0); // 4? + + // Voice 3 EG readout + case 0x1C: + return (unsigned char)(voice[2].envCurrLevel); + + case 0x1E: // Digiblaster DAC readout + if (enableDigiBlaster && model_ == SID8580) + { + return (unsigned char) (dcDigiBlaster >> DIGIBLASTER_MULT); + } + return lastByteWritten; + + default: + // Write-only registers return the last value written + return lastByteWritten; + } +} + +void SIDsound::write(unsigned int adr, unsigned char value) +{ + lastByteWritten = value; + + SIDVoice &v = voice[adr/7]; + switch (adr) { + case 0: + case 7: + case 14: + v.freq = (unsigned short)((v.freq & 0xff00) | value); + v.add = (unsigned int)(((double)v.freq + * sidBaseFreq) * 16.0 / sampleRate + 0.5); + break; + + case 1: + case 8: + case 15: + v.freq = (unsigned short)((v.freq & 0xff) | (value << 8)); + v.add = (unsigned int)(((double)v.freq + * sidBaseFreq) * 16.0 / sampleRate + 0.5); + break; + + case 2: + case 9: + case 16: + v.pw = (unsigned short)((v.pw & 0x0f00) | value); + break; + + case 3: + case 10: + case 17: + v.pw = (unsigned short)((v.pw & 0xff) | ((value & 0xf) << 8)); + break; + + case 4: + case 11: + case 18: + if ((value & 1) != (unsigned char) v.gate) { + if (value & 1) { + // gate on + v.egState = EG_ATTACK; + v.envCounterCompare = v.envAttackAdd; + } else { + // gate off +#if 00 + if (v.egState != EG_FROZEN) +#endif + v.egState = EG_RELEASE; + v.envCounterCompare = v.envReleaseSub; + } + v.gate = value & 1; + } + v.modulatedBy->sync = value & 2; + v.ring = value & 4; + if ((value & 8) && !v.test) { + v.accu = 0; //(model_ >= SID8580) ? 0 : 0; + unsigned int bit19 = (v.shiftReg >> 19) & 1; + v.shiftReg = (v.shiftReg & 0x7ffffd) | ((bit19^1) << 1); + v.test = 0xFFF; + } else if (v.test && !(value & 8)) { + unsigned int bit0 = ((v.shiftReg >> 22) ^ (v.shiftReg >> 17)) & 0x1; + v.shiftReg <<= 1; + v.shiftReg &= 0x7fffff; + v.shiftReg |= bit0; + v.test = 0x000; + } + v.wave = (value >> 4) & 0x0F; + if (v.wave > 8) { + v.shiftReg &= 0x7fffff^(1<<22)^(1<<20)^(1<<16)^(1<<13)^(1<<11)^(1<<7)^(1<<4)^(1<<2); + } + break; + + case 5: + case 12: + case 19: + v.envAttackAdd = value >> 4; + v.envDecaySub = value & 0x0F; + if (v.egState == EG_ATTACK) + v.envCounterCompare = v.envAttackAdd; + else if (v.egState == EG_DECAY) + v.envCounterCompare = v.envDecaySub; + break; + + case 6: + case 13: + case 20: + v.envSustainLevel = (value >> 4) * 0x11; + v.envReleaseSub = value & 0x0F; + if (v.egState == EG_RELEASE) + v.envCounterCompare = v.envReleaseSub; + break; + + case 21: + if ((unsigned int)(value&7) != (filterCutoff&7)) { + filterCutoff = (value&7)|(filterCutoff&0x7F8); + setFilterCutoff(); + } + break; + + case 22: + filterCutoff = (value<<3)|(filterCutoff&7); + setFilterCutoff(); + break; + + case 23: + voice[0].filter = value & 1; + voice[1].filter = value & 2; + voice[2].filter = value & 4; + filterResonance = (unsigned char)(value >> 4); + setResonance(); + break; + + case 24: + volume = value & 0x0F; + voice[2].muted = value & 0x80; + filterType = (unsigned char)((value >> 4) & 7); + break; + + case 30: // Digiblaster DAC + if (enableDigiBlaster && model_ == SID8580) + { + dcDigiBlaster = (value ^ 0x00) << DIGIBLASTER_MULT; + } + break; + + case 31: // Digiblaster ADC + break; + } +} + +inline void SIDsound::setFilterCutoff() +{ + const double freqDomainDivCoeff = 2 * M_PI * 1.048576; + w0 = int(cutOffFreq[filterCutoff] * freqDomainDivCoeff); + // Limit cutoff to Nyquist frq to keep the sample based filter stable + const double NyquistFrq = double(sampleRate) / 2; + const double maxCutOff = NyquistFrq > 16000.0 ? 16000.0 : NyquistFrq; + const int w0MaxDt = int(maxCutOff * freqDomainDivCoeff); // 16000 + if (w0 > w0MaxDt) w0 = w0MaxDt; +} + +inline void SIDsound::setResonance() +{ + resonanceCoeffDiv1024 = (int) (1024.0/(0.707 + 1.9 * (double) filterResonance / 15.0) + 0.5); // 2.3 +} + +inline unsigned int SIDsound::clock() +{ + unsigned int count = sidCyclesPerSampleInt >> 8; + unsigned int tmp = sidCyclesPerSampleInt & 0xFF; + unsigned int newCount = clockDeltaRemainder + tmp; + + if (newCount >= 0x100) { + clockDeltaRemainder = newCount & 0xFF; + count++; + } else { + clockDeltaRemainder = newCount; + } + return count; +} + +// simplified version of http://bel.fi/~alankila/c64-sw/index-cpp.html +inline int SIDsound::filterOutput(unsigned int cycles, int Vi) +{ + int w0deltaTime = w0 >> 6; + Vi >>= 7; + unsigned int count = cycles; + + do { + int dVlp = (w0deltaTime * Vbp >> 14); + Vlp -= dVlp; + int dVbp = (w0deltaTime * Vhp >> 14); + Vbp -= dVbp; + Vhp = (Vbp * resonanceCoeffDiv1024 >> 10) - Vlp - Vi; + } while (--count); + + int Vf; + + switch (filterType) { + default: + case FILTER_NONE: + Vf = 0; + break; + case FILTER_LP: + Vf = Vlp; + break; + case FILTER_BP: + Vf = Vbp; + break; + case FILTER_LPBP: + Vf = Vlp + Vbp; + break; + case FILTER_HP: + Vf = Vhp; + break; + case FILTER_NOTCH: + Vf = Vlp + Vhp; + break; + case FILTER_HPBP: + Vf = Vbp + Vhp; + break; + case FILTER_ALL: + Vf = Vlp + Vbp + Vhp; + break; + } + return Vf << 7; +} + +// Envelope based on: +// http://blog.kevtris.org/?p=13 +inline int SIDsound::doEnvelopeGenerator(unsigned int cycles, SIDVoice &v) +{ + unsigned int count = cycles; + + do { + unsigned int LFSR = v.envCounter; + if (LFSR != RateCountPeriod[v.envCounterCompare]) { + const unsigned int feedback = ((LFSR >> 14) ^ (LFSR >> 13)) & 1; + LFSR = ((LFSR << 1) | feedback) & 0x7FFF; + v.envCounter = LFSR; + } else { + // LFSR = 0x7fff reset LFSR + v.envCounter = 0x7fff; + + if (v.egState == EG_ATTACK || ++v.envExpCounter == envGenDRdivisors[v.envCurrLevel]) { + + v.envExpCounter = 0; + + switch (v.egState) { + + case EG_ATTACK: + // According to Bob Yannes, Attack is linear... + if ( ((++v.envCurrLevel) & 0xFF) == 0xFF) { + v.egState = EG_DECAY; + v.envCounterCompare = v.envDecaySub; + } + break; + + case EG_DECAY: + if (v.envCurrLevel != v.envSustainLevel) { + v.envCurrLevel--; + v.envCurrLevel &= 0xFF; + if (!v.envCurrLevel) + v.egState = EG_FROZEN; + } + break; + + case EG_RELEASE: + v.envCurrLevel = (v.envCurrLevel - 1) & 0xFF; + if (!v.envCurrLevel) + v.egState = EG_FROZEN; + break; + + case EG_FROZEN: + v.envCurrLevel = 0; + break; + } + } + } + } while (--count); + + return v.envCurrLevel & 0xFF; // envelope is 8 bits +} + +void SIDsound::calcSamples(short *buf, long accu) +{ + for (;accu--;) { + // Outputs for normal and filtered sounds + int sumFilteredOutput = 0; + int sumOutput = 0; + int sample; + + const unsigned int cyclesToDo = clock(); + // Loop for the three voices + int j = 2; + do { + SIDVoice &v = voice[j]; + int envelope = doEnvelopeGenerator(cyclesToDo, v); + // Waveform generator + if (!v.test) { +#if 1 + unsigned int accPrev = v.accu; + // Update accumulator + v.accu += v.add; + // FIXME Apply ring modulation. + if (v.sync && !(accPrev & 0x8000000) && (v.accu & 0x8000000) + ) +#else + v.accPrev = v.accu; + // Update accumulator if test bit not set + v.accu += v.add; + unsigned int accPrev = v.accPrev; + if (v.sync && !(v.accPrev & 0x8000000) && (v.accu & 0x8000000) + && !( v.modulatedBy->sync && !(v.modulatedBy->accPrev & 0x800000) && + (v.modulatedBy->accu & 0x800000)) + ) +#endif + v.modulatesThis->accu = 0; + if (v.freq) { + unsigned int accNext = accPrev; + unsigned int freq = v.freq << 4; + do { + accNext += freq; + // noise shift register is updating even when waveform is not selected + if (!(accPrev & 0x0800000) && (accNext & 0x0800000)) + updateShiftReg(v); + accPrev = accNext; + } while ( accNext < v.accu ); + } + // real accu is 24 bit but we use FP integer arithmetic + v.accu &= 0xFFFFFFF; + } + int output = v.disabled ? 0x0800 : getWaveSample(v); + + if (v.filter) + sumFilteredOutput += (output - dcWave) * envelope + dcVoice; + else { + if (v.muted) + sumOutput += (0x0800 - dcWave) * envelope + dcVoice; + else + sumOutput += (output - dcWave) * envelope + dcVoice; + } + } while (j--); + + int accu = (sumOutput + filterOutput(cyclesToDo, sumFilteredOutput) + + dcMixer + dcDigiBlaster) * volume; + +#if 1 + sample = accu >> 12; +#else + unsigned int interPolationFac = (clockDeltaRemainder - sidCyclesPerSampleInt) & 0xFF; + accu >>= 7; + sample = (prevAccu * (0xFF ^ interPolationFac) + accu * (interPolationFac)) >> 12; + prevAccu = accu; +#endif + + *buf++ = (short) sample; + } +} + +SIDsound::~SIDsound() +{ + masterVolume = volume; +} diff --git a/src/soloud/src/audiosource/tedsid/sid.h b/src/soloud/src/audiosource/tedsid/sid.h new file mode 100644 index 0000000..23d0cb7 --- /dev/null +++ b/src/soloud/src/audiosource/tedsid/sid.h @@ -0,0 +1,180 @@ +#ifndef _SID_H +#define _SID_H + +#define SOUND_FREQ_PAL_C64 985248 +#define TED_SOUND_CLOCK (221680) + +enum { + SID6581 = 0, + SID8580, + SID8580DB, + SID6581R1 +}; + +// SID class +class SIDsound +{ +public: + SIDsound(unsigned int model, unsigned int chnlDisableMask); + virtual ~SIDsound(); + virtual void reset(); + virtual void setReplayFreq() { + calcEnvelopeTable(); + }; + void setModel(unsigned int model); + void setFrequency(unsigned int sid_frequency); + void setSampleRate(unsigned int sampleRate_); + void calcEnvelopeTable(); + unsigned char read(unsigned int adr); + void write(unsigned int adr, unsigned char byte); + void calcSamples(short *buf, long count); + void enableDisableChannel(unsigned int ch, bool enabled) { + voice[ch].disabled = !enabled; + } + +private: + + // SIDsound waveforms + enum { + WAVE_NONE, WAVE_TRI, WAVE_SAW, WAVE_TRISAW, WAVE_PULSE, + WAVE_TRIPULSE, WAVE_SAWPULSE, WAVE_TRISAWPULSE, WAVE_NOISE + }; + // Envelope Genarator states + enum { + EG_FROZEN, EG_ATTACK, EG_DECAY, EG_RELEASE + }; + // Filter types + enum { + FILTER_NONE, FILTER_LP, FILTER_BP, FILTER_LPBP, FILTER_HP, FILTER_NOTCH, FILTER_HPBP, FILTER_ALL + }; + // Class for SID voices + class SIDVoice { + public: + int wave; // the selected waveform + int egState; // state of the EG + SIDVoice *modulatedBy; // the voice that modulates this one + SIDVoice *modulatesThis;// the voice that is modulated by this one + + unsigned int accu; // accumulator of the waveform generator, 8.16 fixed + unsigned int accPrev; // previous accu value (for ring modulation) + unsigned int add; // added to the accumulator for each sample + unsigned int shiftReg; // shift register for noise waveform + + unsigned short freq; // voice frequency + unsigned short pw; // pulse-width value + + unsigned int envAttackAdd; + unsigned int envDecaySub; + unsigned int envSustainLevel; + unsigned int envReleaseSub; + unsigned int envCurrLevel; + unsigned int envCounter; + unsigned int envExpCounter; + unsigned int envCounterCompare; + + unsigned int gate; // EG gate flag + unsigned int ring; // ring modulation flag + unsigned int test; // test flag + unsigned int filter; // voice filtered flag + unsigned int muted; // voice muted flag (only for 3rd voice) + bool disabled; // voice disabled + + // This bit is set for the modulating voice, + // not for the modulated one (compared to the real one) + unsigned int sync; // sync modulation flag + }; + int volume; // SID Master volume + unsigned int sidBaseFreq; // SID base frequency + unsigned int sidCyclesPerSampleInt; + unsigned int clockDeltaRemainder; + int dcMixer; // different for 6581 and 8580 (constant level output for digi) + int dcVoice; + int dcWave; + int dcDigiBlaster; + //int extIn; + // + unsigned int clock(); + // Wave generator functions + inline static int waveTriangle(SIDVoice &v); + inline static int waveSaw(SIDVoice &v); + inline static int wavePulse(SIDVoice &v); + inline static int waveTriSaw(SIDVoice &v); + inline static int waveTriPulse(SIDVoice &v); + inline static int waveSawPulse(SIDVoice &v); + inline static int waveTriSawPulse(SIDVoice &v); + inline static int waveNoise(SIDVoice &v); + inline static int getWaveSample(SIDVoice &v); + inline void updateShiftReg(SIDVoice &v); + // Envelope + inline int doEnvelopeGenerator(unsigned int cycles, SIDVoice &v); + static const unsigned int RateCountPeriod[16]; // Factors for A/D/S/R Timing + static const unsigned char envGenDRdivisors[256]; // For exponential approximation of D/R + /*static*/ unsigned int masterVolume; + // voice array for the 3 channels + SIDVoice voice[3]; + // filter stuff + unsigned char filterType; // filter type + unsigned int filterCutoff; // SID filter frequency + unsigned char filterResonance; // filter resonance (0..15) + double cutOffFreq[2048]; // filter cutoff frequency register + int resonanceCoeffDiv1024; // filter resonance * 1024 + int w0; // filter cutoff freq + void setResonance(); + void setFilterCutoff(); + int filterOutput(unsigned int cycles, int Vi); + int Vhp; // highpass + int Vbp; // bandpass + int Vlp; // lowpass + // + unsigned char lastByteWritten;// Last value written to the SID + int model_; + bool enableDigiBlaster; + unsigned int sampleRate; +}; + +/* + Wave outputs +*/ +inline int SIDsound::waveTriangle(SIDVoice &v) +{ + unsigned int msb = (v.ring ? v.accu ^ v.modulatedBy->accu : v.accu) + & 0x8000000; + // triangle wave 15 bit only + return ((msb ? ~v.accu : v.accu) >> 15) & 0xFFE; +} + +inline int SIDsound::waveSaw(SIDVoice &v) +{ + return (v.accu >> 16) & 0xFFF; +} + +inline int SIDsound::wavePulse(SIDVoice &v) +{ + // square wave starts high + return (v.test | ((v.accu >> 16) >= v.pw ? 0xFFF : 0x000)); +} + +inline int SIDsound::waveTriSaw(SIDVoice &v) +{ + unsigned int sm = (waveTriangle(v)) & (waveSaw(v)); + return (sm>>1) & (sm<<1); +} + +inline int SIDsound::waveTriPulse(SIDVoice &v) +{ + unsigned int sm = (waveTriangle(v)) & (wavePulse(v)); + return (sm>>1) & (sm<<1); +} + +inline int SIDsound::waveSawPulse(SIDVoice &v) +{ + return (waveSaw(v)) & (wavePulse(v)); +} + +inline int SIDsound::waveTriSawPulse(SIDVoice &v) +{ + unsigned int sm = (waveTriangle(v)) & (waveSaw(v)) & (wavePulse(v)); + return (sm>>1) & (sm<<1); +} + +#endif diff --git a/src/soloud/src/audiosource/tedsid/soloud_tedsid.cpp b/src/soloud/src/audiosource/tedsid/soloud_tedsid.cpp new file mode 100644 index 0000000..4e5f844 --- /dev/null +++ b/src/soloud/src/audiosource/tedsid/soloud_tedsid.cpp @@ -0,0 +1,256 @@ +/* +TED/SID module for SoLoud audio engine +Copyright (c) 2015 Jari Komppa + +This software is provided 'as-is', without any express or implied +warranty. In no event will the authors be held liable for any damages +arising from the use of this software. + +Permission is granted to anyone to use this software for any purpose, +including commercial applications, and to alter it and redistribute it +freely, subject to the following restrictions: + + 1. The origin of this software must not be misrepresented; you must not + claim that you wrote the original software. If you use this software + in a product, an acknowledgment in the product documentation would be + appreciated but is not required. + + 2. Altered source versions must be plainly marked as such, and must not be + misrepresented as being the original software. + + 3. This notice may not be removed or altered from any source + distribution. +*/ + +#include +#include +#include +#include +#include "sid.h" +#include "ted.h" +#include "soloud_tedsid.h" +#include "soloud_file.h" + +namespace SoLoud +{ + + TedSidInstance::TedSidInstance(TedSid *aParent) + { + mParent = aParent; + mSampleCount = 0; + mSID = new SIDsound(mParent->mModel, 0); + mSID->setFrequency(0); + mSID->setSampleRate(TED_SOUND_CLOCK); + mSID->setFrequency(1); + + mTED = new TED(); + mTED->oscillatorInit(); + + mNextReg = 100; // NOP + mNextVal = 0; + int i; + for (i = 0; i < 128; i++) + mRegValues[i] = 0; + } + + unsigned int TedSidInstance::getAudio(float *aBuffer, unsigned int aSamplesToRead, unsigned int aBufferSize) + { + unsigned int i; + for (i = 0; i < aSamplesToRead; i++) + { + tick(); + short sample; + mSID->calcSamples(&sample, 1); + short tedsample = 0; + mTED->renderSound(1, &tedsample); + aBuffer[i] = (sample + tedsample) / 8192.0f; + mSampleCount--; + } + return aSamplesToRead; + } + + void TedSidInstance::tick() + { + if (mParent->mFile == 0) + return; + + while (mSampleCount == 0) + { + mRegValues[mNextReg] = mNextVal; + if (mNextReg < 64) + { + mSID->write(mNextReg, mNextVal); + } + else + if (mNextReg < 64 + 5) + { + mTED->writeSoundReg(mNextReg - 64, mNextVal); + } +// mSampleCount = mParent->mFile->read16(); + mNextVal = mParent->mFile->read8(); + mNextReg = mParent->mFile->read8(); + if (mNextReg & 0x80) + { + // timestamp! + mSampleCount = ((int)(mNextReg & 0x7f) << 8) | mNextVal; + mNextVal = mParent->mFile->read8(); + mNextReg = mParent->mFile->read8(); + } + if (mParent->mFile->eof()) + mParent->mFile->seek(8); + } + } + + float TedSidInstance::getInfo(unsigned int aInfoKey) + { + return (float)mRegValues[aInfoKey & 127]; + } + + bool TedSidInstance::hasEnded() + { + return 0; + } + + TedSidInstance::~TedSidInstance() + { + delete mSID; + delete mTED; + } + + TedSid::TedSid() + { + mBaseSamplerate = TED_SOUND_CLOCK; + mChannels = 1; + mFile = 0; + mFileOwned = false; + } + + TedSid::~TedSid() + { + stop(); + if (mFileOwned) + delete mFile; + } + + result TedSid::loadMem(unsigned char *aMem, unsigned int aLength, bool aCopy, bool aTakeOwnership) + { + if (!aMem || aLength == 0) + return INVALID_PARAMETER; + MemoryFile *mf = new MemoryFile; + if (!mf) + return OUT_OF_MEMORY; + int res = mf->openMem(aMem, aLength, aCopy, aTakeOwnership); + if (res != SO_NO_ERROR) + { + delete mf; + return res; + } + res = loadFile(mf); + if (res != SO_NO_ERROR) + { + delete mf; + return res; + } + mFileOwned = aCopy || aTakeOwnership; + + return SO_NO_ERROR; + } + + result TedSid::load(const char *aFilename) + { + if (!aFilename) + return INVALID_PARAMETER; + DiskFile *df = new DiskFile; + if (!df) return OUT_OF_MEMORY; + int res = df->open(aFilename); + if (res != SO_NO_ERROR) + { + delete df; + return res; + } + res = loadFile(df); + if (res != SO_NO_ERROR) + { + delete df; + return res; + } + mFileOwned = true; + return SO_NO_ERROR; + } + + result TedSid::loadToMem(const char *aFilename) + { + if (!aFilename) + return INVALID_PARAMETER; + MemoryFile *mf = new MemoryFile; + if (!mf) return OUT_OF_MEMORY; + int res = mf->openToMem(aFilename); + if (res != SO_NO_ERROR) + { + delete mf; + return res; + } + res = loadFile(mf); + if (res != SO_NO_ERROR) + { + delete mf; + return res; + } + mFileOwned = true; + return SO_NO_ERROR; + } + + result TedSid::loadFileToMem(File *aFile) + { + if (!aFile) + return INVALID_PARAMETER; + MemoryFile *mf = new MemoryFile; + if (!mf) return OUT_OF_MEMORY; + int res = mf->openFileToMem(aFile); + if (res != SO_NO_ERROR) + { + delete mf; + return res; + } + res = loadFile(mf); + if (res != SO_NO_ERROR) + { + delete mf; + return res; + } + mFileOwned = true; + return SO_NO_ERROR; + } + + result TedSid::loadFile(File *aFile) + { + if (aFile == NULL) + return INVALID_PARAMETER; + if (mFileOwned) + delete mFile; + // Expect a file wih header and at least one reg write + if (aFile->length() < 4+4+2+2) return FILE_LOAD_FAILED; + + aFile->seek(0); + if (aFile->read8() != 'D') return FILE_LOAD_FAILED; + if (aFile->read8() != 'u') return FILE_LOAD_FAILED; + if (aFile->read8() != 'm') return FILE_LOAD_FAILED; + if (aFile->read8() != 'p') return FILE_LOAD_FAILED; + if (aFile->read8() != 0) return FILE_LOAD_FAILED; + mModel = aFile->read8(); + aFile->seek(8); + + mFile = aFile; + mFileOwned = false; + + + return SO_NO_ERROR; + } + + + AudioSourceInstance * TedSid::createInstance() + { + return new TedSidInstance(this); + } + +}; \ No newline at end of file diff --git a/src/soloud/src/audiosource/tedsid/ted.cpp b/src/soloud/src/audiosource/tedsid/ted.cpp new file mode 100644 index 0000000..21d5978 --- /dev/null +++ b/src/soloud/src/audiosource/tedsid/ted.cpp @@ -0,0 +1,236 @@ +#include +#include "ted.h" + + +#define PRECISION 0 +#define OSCRELOADVAL (0x3FF << PRECISION) +#define TED_SOUND_CLOCK (221680) + +TED::TED() +{ + sampleRate = TED_SOUND_CLOCK; + masterVolume = 8; + Volume = 8; + Snd1Status = 0; + Snd2Status = 0; + SndNoiseStatus = 0; + DAStatus = 0; + Freq1 = 0; + Freq2 = 0; + NoiseCounter = 0; + FlipFlop[0] = FlipFlop[1] = 0; + dcOutput[0] = dcOutput[1] = 0; + oscCount[0] = oscCount[1] = 0; + OscReload[0] = OscReload[1] = 0; + waveForm[0] = waveForm[1] = 0; + oscStep = 0; + memset(noise, 0, sizeof(noise)); + channelMask[0] = channelMask[1] = 0; + vol = 0; +} + +void TED::enableChannel(unsigned int channel, bool enable) +{ + channelMask[channel % 3] = enable ? -1 : 0; +} + +inline void TED::setFreq(unsigned int channel, int freq) +{ + dcOutput[channel] = (freq == 0x3FE) ? 1 : 0; + OscReload[channel] = ((freq + 1)&0x3FF) << PRECISION; +} + +void TED::oscillatorReset() +{ + FlipFlop[0] = dcOutput[0] = 0; + FlipFlop[1] = dcOutput[1] = 0; + oscCount[0] = 0; + oscCount[1] = 0; + NoiseCounter = 0; + Freq1 = Freq2 = 0; + DAStatus = Snd1Status = Snd2Status = 0; +} + +// call only once! +void TED::oscillatorInit() +{ + oscillatorReset(); + /* initialise im with 0xa8 */ + int im = 0xa8; + for (unsigned int i = 0; i<256; i++) { + noise[i] = im & 1; + im = (im<<1)+(1^((im>>7)&1)^((im>>5)&1)^((im>>4)&1)^((im>>1)&1)); + } + oscStep = (1 << PRECISION) << 0; + + // set player specific parameters + waveForm[0] = waveForm[1] = 1; + masterVolume = 8; + enableChannel(0, true); + enableChannel(1, true); + enableChannel(2, true); +} + +void TED::writeSoundReg(unsigned int reg, unsigned char value) +{ + + switch (reg) { + case 0: + Freq1 = (Freq1 & 0x300) | value; + setFreq(0, Freq1); + break; + case 1: + Freq2 = (Freq2 & 0x300) | value; + setFreq(1, Freq2); + break; + case 2: + Freq2 = (Freq2 & 0xFF) | (value << 8); + setFreq(1, Freq2); + break; + case 3: + DAStatus = value & 0x80; + if (DAStatus) { + FlipFlop[0] = 1; + FlipFlop[1] = 1; + oscCount[0] = OscReload[0]; + oscCount[1] = OscReload[1]; + NoiseCounter = 0xFF; + } + Volume = value & 0x0F; + if (Volume > 8) Volume = 8; + Volume = (Volume << 8) * masterVolume / 10; + Snd1Status = value & 0x10; + Snd2Status = value & 0x20; + SndNoiseStatus = value & 0x40; + break; + case 4: + Freq1 = (Freq1 & 0xFF) | (value << 8); + setFreq(0, Freq1); + break; + } +} + +inline unsigned int TED::waveSquare(unsigned int channel) +{ + return Volume; +} + +inline unsigned int TED::waveSawTooth(unsigned int channel) +{ + unsigned int mod; + +#if 0 + int msb = OSCRELOADVAL + 1 - OscReload[channel]; + int diff = 2 * msb - int(FlipFlop[channel]) * msb - int(oscCount[channel]) + int(OscReload[channel]); + //if (diff < 0) diff = 0; + //if (oscCount[channel] >= 0x3fa) diff = 0; + mod = (Volume * diff) / (2 * msb); +#else + int diff = int(oscCount[channel]) - int(OscReload[channel]); + if (diff < 0) diff = 0; + mod = (Volume * diff) / (OSCRELOADVAL + 1 - OscReload[channel]); +#endif + return mod; +} + +inline unsigned int TED::waveTriangle(unsigned int channel) +{ + unsigned int mod; + int msb; + +#if 0 + msb = OSCRELOADVAL + 1 - OscReload[channel]; + int diff = FlipFlop[channel] ? int(oscCount[channel]) - int(OscReload[channel]) + : int(OSCRELOADVAL) - int(oscCount[channel]); + //if (diff < 0) diff = 0; + //if (oscCount[channel] >= 0x3fa) diff = 0; + mod = (3 * Volume * diff / msb / 2); +#else + /* + msb = (OscReload[channel] + OSCRELOADVAL) / 2; + int diff = oscCount[channel] < msb ? oscCount[channel] - OscReload[channel] : OSCRELOADVAL - oscCount[channel]; + mod = (2 * diff * Volume / (OSCRELOADVAL - OscReload[channel] + 1)); + if (mod > Volume) mod = Volume; + */ + msb = (OscReload[channel] + OSCRELOADVAL) / 2; + mod = oscCount[channel] < msb ? oscCount[channel] : (oscCount[channel] - msb); + mod = (mod * Volume / msb); +#endif + return mod; +} + +inline unsigned int TED::getWaveSample(unsigned int channel, unsigned int wave) +{ + unsigned int sm; + + switch (wave) { + default: + case 1: // square + return waveSquare(channel); + break; + case 2: // sawtooth + return waveSawTooth(channel); + break; + case 4: // triangle + return waveTriangle(channel); + break; + + // combined waveforms á la SID + case 3: // square + sawtooth + sm = waveSawTooth(channel) + waveSquare(channel); + return sm /= 2; + break; + case 5: // square + triangle + sm = waveTriangle(channel) + waveSquare(channel); + return sm /= 2; + break; + case 6: // sawtooth + triangle + sm = waveTriangle(channel) + waveSawTooth(channel); + return sm /= 2; + break; + case 7: // square + sawtooth + triangle + sm = waveTriangle(channel) + waveSawTooth(channel) + waveSquare(channel); + return sm /= 3; + break; + } +} + +void TED::renderSound(unsigned int nrsamples, short *buffer) +{ + // Calculate the buffer... + if (DAStatus) {// digi? + short sample = 0;//audiohwspec->silence; + if (Snd1Status) sample = Volume; + if (Snd2Status) sample += Volume; + for (;nrsamples--;) { + *buffer++ = sample & channelMask[2]; + } + } else { + unsigned int result; + for (;nrsamples--;) { + // Channel 1 + if (dcOutput[0]) { + FlipFlop[0] = 1; + } else if ((oscCount[0] += oscStep) >= OSCRELOADVAL) { + FlipFlop[0] ^= 1; + oscCount[0] = OscReload[0] + (oscCount[0] - OSCRELOADVAL); + } + // Channel 2 + if (dcOutput[1]) { + FlipFlop[1] = 1; + } else if ((oscCount[1] += oscStep) >= OSCRELOADVAL) { + NoiseCounter = (NoiseCounter + 1) & 0xFF; + FlipFlop[1] ^= 1; + oscCount[1] = OscReload[1] + (oscCount[1] - OSCRELOADVAL); + } + result = (Snd1Status && FlipFlop[0]) ? (getWaveSample(0, waveForm[0]) & channelMask[0]) : 0; + if (Snd2Status && FlipFlop[1]) { + result += getWaveSample(1, waveForm[1]) & channelMask[1]; + } else if (SndNoiseStatus && noise[NoiseCounter] & channelMask[2]) { + result += Volume; + } + *buffer++ = result; + } // for + } +} + diff --git a/src/soloud/src/audiosource/tedsid/ted.h b/src/soloud/src/audiosource/tedsid/ted.h new file mode 100644 index 0000000..8f2b196 --- /dev/null +++ b/src/soloud/src/audiosource/tedsid/ted.h @@ -0,0 +1,44 @@ + +class TED +{ +public: + unsigned int masterVolume; + int Volume; + int Snd1Status; + int Snd2Status; + int SndNoiseStatus; + int DAStatus; + unsigned short Freq1; + unsigned short Freq2; + int NoiseCounter; + int FlipFlop[2]; + int dcOutput[2]; + int oscCount[2]; + int OscReload[2]; + int waveForm[2]; + int oscStep; + int sampleRate; + unsigned char noise[256]; // 0-8 + unsigned int channelMask[3]; + int vol; + + TED(); + void enableChannel(unsigned int channel, bool enable); + void setFreq(unsigned int channel, int freq); + void oscillatorReset(); + void oscillatorInit(); + void writeSoundReg(unsigned int reg, unsigned char value); + void storeToBuffer(short *buffer, unsigned int count); + unsigned int waveSquare(unsigned int channel); + unsigned int waveSawTooth(unsigned int channel); + unsigned int waveTriangle(unsigned int channel); + unsigned int getWaveSample(unsigned int channel, unsigned int wave); + void renderSound(unsigned int nrsamples, short *buffer); + void setMasterVolume(unsigned int shift); + void selectWaveForm(unsigned int channel, unsigned int wave); + void setplaybackSpeed(unsigned int speed); + unsigned int getTimeSinceLastReset(); + void setSampleRate(unsigned int value); + void setFilterOrder(unsigned int value); + void initFilter(unsigned int sampleRate_, unsigned int filterOrder_); +}; \ No newline at end of file diff --git a/src/soloud/src/audiosource/vic/soloud_vic.cpp b/src/soloud/src/audiosource/vic/soloud_vic.cpp new file mode 100644 index 0000000..0d7ac60 --- /dev/null +++ b/src/soloud/src/audiosource/vic/soloud_vic.cpp @@ -0,0 +1,168 @@ +/* +SoLoud audio engine +Copyright (c) 2015 Jari Komppa + +VIC 6560/6561 sound chip emulator +Copyright (c) 2015 Petri Hakkinen + +This software is provided 'as-is', without any express or implied +warranty. In no event will the authors be held liable for any damages +arising from the use of this software. + +Permission is granted to anyone to use this software for any purpose, +including commercial applications, and to alter it and redistribute it +freely, subject to the following restrictions: + + 1. The origin of this software must not be misrepresented; you must not + claim that you wrote the original software. If you use this software + in a product, an acknowledgment in the product documentation would be + appreciated but is not required. + + 2. Altered source versions must be plainly marked as such, and must not be + misrepresented as being the original software. + + 3. This notice may not be removed or altered from any source + distribution. +*/ + +#include +#include +#include +#include +#include "soloud_vic.h" + +namespace SoLoud +{ + + VicInstance::VicInstance(Vic *aParent) + { + m_parent = aParent; + + for(int i = 0; i < 4; i++) + m_phase[i] = 0; + + m_noisePos = 0; + } + + VicInstance::~VicInstance() + { + } + + unsigned int VicInstance::getAudio(float *aBuffer, unsigned int aSamplesToRead, unsigned int aBufferSize) + { + unsigned int phaseAdder[4] = { 0, 0, 0, 0 }; + for(int i = 0; i < 4; i++) + { + unsigned char reg = m_parent->getRegister(i); + if(reg >= 128) + { + float freq = m_parent->m_clocks[i] / (float)(reg < 255 ? 255 - reg : 1); + phaseAdder[i] = (unsigned int)(freq * 65536.0f / 44100.0f + 0.5f); + } + } + + for(int i = 0; i < (signed)aSamplesToRead; i++) + { + float s = 0.0f; + + // square waves + for(int v = 0; v < 3; v++) + { + if(phaseAdder[v] != 0) + { + s += (m_phase[v] < 32768 ? 0.5f : -0.5f); + m_phase[v] = (m_phase[v] + phaseAdder[v]) & 65535; + } + } + + // noise + if(phaseAdder[3] != 0) + { + s += (float)m_parent->m_noise[m_noisePos] / 255.0f - 0.5f; + + m_phase[3] += phaseAdder[3]; + + if(m_phase[3] >= 32768) + { + m_noisePos = (m_noisePos + 1) & 8191; + m_phase[3] &= 32767; + } + } + + aBuffer[i] = s / 4.0f; + } + return aSamplesToRead; + } + + bool VicInstance::hasEnded() + { + return false; + } + + Vic::Vic() + { + mBaseSamplerate = 44100; + setModel(PAL); + + for(int i = 0; i < MAX_REGS; i++) + m_regs[i] = 0; + + // Galois LFSR (source: https://en.wikipedia.org/wiki/Linear_feedback_shift_register) + unsigned short lfsr = 0xACE1u; + for(int i = 0; i < 8192; i++) + { + unsigned lsb = lfsr & 1; + lfsr >>= 1; + lfsr ^= (unsigned)(-(signed)lsb) & 0xB400u; + m_noise[i] = (lfsr & 0xff) ^ (lfsr >> 8); + } + } + + Vic::~Vic() + { + stop(); + } + + void Vic::setModel(int model) + { + m_model = model; + + switch(model) + { + case PAL: + m_clocks[0] = 4329.0f; + m_clocks[1] = 8659.0f; + m_clocks[2] = 17320.0f; + m_clocks[3] = 34640.0f; + break; + + case NTSC: + m_clocks[0] = 3995.0f; + m_clocks[1] = 7990.0f; + m_clocks[2] = 15980.0f; + m_clocks[3] = 31960.0f; + break; + } + } + + int Vic::getModel() const + { + return m_model; + } + + void Vic::setRegister(int reg, unsigned char value) + { + m_regs[reg] = value; + } + + unsigned char Vic::getRegister(int reg) + { + return m_regs[reg]; + } + + AudioSourceInstance * Vic::createInstance() + { + return new VicInstance(this); + } + +}; \ No newline at end of file diff --git a/src/soloud/src/audiosource/vizsn/soloud_vizsn.cpp b/src/soloud/src/audiosource/vizsn/soloud_vizsn.cpp new file mode 100644 index 0000000..5d654d2 --- /dev/null +++ b/src/soloud/src/audiosource/vizsn/soloud_vizsn.cpp @@ -0,0 +1,533 @@ +/* +SoLoud audio engine +Copyright (c) 2013-2018 Jari Komppa + +vizsn speech synthesizer (c) by Ville-Matias Heikkilä, +released under WTFPL, http://www.wtfpl.net/txt/copying/ +(in short, "do whatever you want to") + +Integration and changes to work with SoLoud by Jari Komppa, +released under same license. +*/ + +#include +#include +#include +#include +#include "soloud_vizsn.h" + +/* + + lähtöfunktiot: voice, noise + muut: pitch + volyymit: voice, asp, fric, bypass (4kpl) + resonaattorit: lp, nz (ar), npc, 1p, 2p, 3p, 4p, 5p, 6p, out (10kpl) + + + [voice] [noise] + | + | | + | | + (re.LP) | + | | + (*voice) (*asp) + | | + `--[+]--' + | + (ar.NZ) + | + (re.NPC) + | + .-----------. [noise] + | | | +(re.1P) (diff) (*fric) + | | | + | [+]------' + | | + [-]-(re.4P)--[ + | | + [-]-(re.3P)--[ <-- selvitäänkö kahdella tuossa vaiheessa? + | | + [-]-(re.2P)--[ + | | + | (*bypass) + | | + `----[-]----' + |' + (re.OUT) + | + out + + resonaattori: + + x = a*input + b*y + c*z + + ja tulos kiertää x=>y=>z + + antiresonaattori: + + x = a*input + b*y + c*z + + inputti kiertää i=>y=>z +*/ + +#define RLP 0 +#define RNZ 1 +#define RNPC 2 +#define ROUT 3 +#define R1P 4 +#define R2P 5 +#define R3P 6 +#define R4P 7 +#define R5P 8 +#define R6P 9 +#define P_A 0 +#define P_AE 1 +#define P_E 2 +#define P_OE 3 +#define P_O 4 +#define P_I 5 +#define P_Y 6 +#define P_U 7 +#define P_H 8 +#define P_V 9 +#define P_J 10 +#define P_S 11 +#define P_L 12 +#define P_R 13 +#define P_K 14 +#define P_T 15 +#define P_P 16 +#define P_N 17 +#define P_M 18 +#define P_NG 19 +#define P_NEW 12 +#define P_END -1 +#define P_CLR -2 + +#define filter(i,v) i##last=i+(i##last*v); +#define plosive(a) ((((a) >= P_K) && ((a) <= P_P)) || ((a) == P_CLR)) + +static const float vowtab[8][4][2] = +{ + /* a */ 0.10f, 1.6f, 0, 0, 0.2f, 1.5f, 0, 0, + /* ä */ 0.10f, 1.6f, 0, 0, 0.2f, 0, 0, 0, + + /* e */ 0.08f, 1.8f, 0, 0, 0.2f, -0.8f, 0, 0, + /* ö */ 0.08f, 1.8f, 0, 0, 0.3f, 0.9f, 0, 0, + /* o */ 0.08f, 1.8f, 0, 0, 0.2f, 1.6f, 0, 0, + + /* i */ 0.05f, 1.9f, 0, 0, 0.2f, -1.5f, 0, 0, + /* y */ 0.05f, 1.9f, 0, 0, 0.2f, 0.8f, 0, 0, + /* u */ 0.05f, 1.9f, 0, 0, 0.1f, 1.7f, 0, 0 +}; + +/* integerisoi (8bit): kerro kolmella */ +static const float voo[13][5 + 3 * 10] = +{ + /* frikatiivit & puolivokaalit */ + + /* h */ + 0.0f, 0.0f, 0.36f, 0.0f, 0.0f, 0.32f, 1.36f, -0.67f, 22.0f, -42.0f, 21.0f, 0.04f, 1.9f, -0.92f, 1.17f, 0.8f, -0.02f, + 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, + + /* v */ + 0.7f, 0.0f, 0.0f, 0.0f, 0.0f, 0.32f, 1.36f, -0.67f, 22.0f, -42.0f, 21.0f, 0.04f, 1.9f, -0.92f, 1.17f, 0.8f, -0.02f, + 0.005f, 1.9f, -0.95f, 0.0f, 0.0f, 0.0f, 0.04f, 1.5f, -0.93f, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, + + /* j */ + 0.7f, 0.0f, 0.0f, 0.0f, 0.0f, 0.32f, 1.36f, -0.67f, 22.0f, -42.0f, 21.0f, 0.04f, 1.9f, -0.92f, 1.17f, 0.8f, -0.02f, + 0.005f, 1.9f, -0.95f, 0.0f, 0.0f, 0.0f, 0.04f, -1.5f, -0.93f, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, + + /* s */ + 0.0f, 0.0f, 0.36f, 0.0f, 0.0f, 0.32f, 1.36f, -0.67f, 22.0f, -42.0f, 21.0f, 0.04f, 1.9f, -0.92f, 1.7f, 0.1f, -0.02f, + 0.0f, 0.1f, -0.02f, 0.0f, 1.76f, -0.85f, 0.01f, 0.42f, -0.93f, 0.02f, -1.37f, -0.68f, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, + + /* l */ + 0.8f, 0.0f, 0.0f, 0.0f, 0.0f, 0.32f, 1.36f, -0.67f, 22.0f, -42.0f, 21.0f, 0.04f, 1.88f, -0.92f, 1.17f, 0.8f, -0.02f, + 0.1f, -0.5f, -0.93f, 0.6f, 1.0f, -0.93f, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, + + /* r */ + 0.8f, 0.4f, 0.0f, 0.0f, 0.0f, 0.32f, 1.36f, -0.67f, 22.0f, -42.0f, 21.0f, 0.04f, 1.9f, -0.92f, 1.17f, 0.8f, -0.02f, + -0.2f, 0.0f, -0.93f, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, + + /* klusiilit */ + + /* k */ + 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0.32f, 1.36f, -0.67f, 22.0f, -42.0f, 21.0f, 0.04f, 1.9f, -0.92f, 1.17f, 0.8f, -0.02f, + 0.0f, 1.95f, -0.94f, 0.4f, 1.0f, -0.93f, 0.6f, 1.0f, -0.89f, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, + + /* t */ + 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0.32f, 1.36f, -0.67f, 22.0f, -42.0f, 21.0f, 0.04f, 1.9f, -0.92f, 1.17f, 0.8f, -0.02f, + 0.0f, 1.6f, -0.94f, 0.0f, 0.3f, -0.93f, 1.5f, -0.6f, -0.89f, 1.8f, -1.5f, -0.68f, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, + + /* p */ + 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0.32f, 1.36f, -0.67f, 22.0f, -42.0f, 21.0f, 0.04f, 1.9f, -0.92f, 1.17f, 0.8f, -0.02f, + 0.01f, 1.9f, -0.94f, 1.5f, 1.7f, -0.93f, 1.0f, 1.0f, -0.89f, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, + + /* nasaalit */ + + /* n */ + 0.81f, 0.0f, 0.0f, 0.0f, 0.0f, 0.32f, 1.36f, -0.67f, 15.0f, -20.0f, 10.0f, 0.04f, 1.88f, -0.92f, 1.17f, 0.1f, -0.02f, + 0.02f, 1.83f, -0.97f, 0.10f, 0.26f, -0.83f, 0.06f, -0.85f, -0.82f, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, + + /* m */ + 0.81f, 0.0f, 0.0f, 0.0f, 0.0f, 0.32f, 1.36f, -0.67f, 15.0f, -20.0f, 10.0f, 0.04f, 1.88f, -0.92f, 1.17f, 0.1f, -0.02f, + 0.08f, 1.5f, -0.94f, 0.06f, 1.0f, -0.9f, 0.05f, 1.5f, -0.89f, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, + + /* ng */ + 0.81f, 0.0f, 0.0f, 0.0f, 0.0f, 0.32f, 1.36f, -0.67f, 15.0f, -20.0f, 10.0f, 0.04f, 1.88f, -0.92f, 1.17f, 0.1f, -0.02f, + 0.1f, 1.6f, -0.94f, 0.7f, -1.0f, -0.91f, 0.1f, 1.16f, -0.91f, 0.03f, -1.3f, -0.68f, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f +}; + +static const char keyz[] = +{ + P_A, P_P, P_S, P_T, P_E, P_V, P_NG, + P_H, P_I, P_J, P_K, P_L, P_M, P_N, + P_O, P_P, P_K, P_R, P_S, P_T, P_U, + P_V, P_U, P_S, P_Y, P_S, P_AE, P_OE +}; + +namespace SoLoud +{ + float VizsnResonator::resonate(float i) + { + float x = (a * i) + (b * p1) + (c * p2); + p2 = p1; + p1 = x; + return x; + } + + float VizsnResonator::antiresonate(float i) + { + float x = a * i + b * p1 + c * p2; + p2 = p1; + p1 = i; + return x; + } + VizsnInstance::VizsnInstance(Vizsn *aParent) + { + mParent = aParent; + mPtr = 0; + mCurrentVoiceType = 6; + memset(mEchobuf, 0, 1024 * sizeof(int)); + mPitch = 800; + mS = mParent->mText; + mBufwrite = 0; + mBufread = 0; + mA = 0; + mB = 100; + mOrgv = -1; + mGlotlast = 0; + } + + VizsnInstance::~VizsnInstance() + { + } + + unsigned int VizsnInstance::getAudio(float *aBuffer, unsigned int aSamplesToRead, unsigned int aBufferSize) + { + unsigned int idx = 0; + int i, j; + if (mBufwrite > mBufread) + { + for (; mBufwrite > mBufread && idx < aSamplesToRead; mBufread++) + { + aBuffer[idx] = mBuf[mBufread]; + idx++; + } + } + if (idx == aSamplesToRead) return aSamplesToRead; + mBufwrite = mBufread = 0; + while (idx + mBufwrite < aSamplesToRead) + { + setphone(&mBank0, *mS, mPitch); + + if (*mS == P_END) + { + mBuf[mBufwrite] = 0; + mBufwrite++; + SOLOUD_ASSERT(mBufwrite < 2048); + break; + } + + setphone(&mBank1, mS[1], mPitch);//pitch+=50); -- RAISE SOUND + + slidePrepare(50); + + mNper = 0; + + for (i = plosive(*mS) ? 100 : 300; i; i--) + { + mBuf[mBufwrite] = genwave(); + mBufwrite++; + SOLOUD_ASSERT(mBufwrite < 2048); + } + + if (!plosive(mS[1])) + { + for (i = 50; i; i--) + { + for (j = 10; j; j--) + { + mBuf[mBufwrite] = genwave(); + mBufwrite++; + SOLOUD_ASSERT(mBufwrite < 2048); + } + slideTick(); + } + } + else + { + for (i = 50; i; i--) + { + for (j = 3; j; j--) + { + mBuf[mBufwrite] = genwave(); + mBufwrite++; + SOLOUD_ASSERT(mBufwrite < 2048); + } + } + } + + mS++; + + memcpy(&mBank0, &mBank1, sizeof(VizsnBank)); + } + for (; idx < aSamplesToRead; idx++) + { + aBuffer[idx] = mBuf[mBufread]; + mBufread++; + } + return aSamplesToRead; + } + + float VizsnInstance::vcsrc(int aPitch, int aVoicetype) + { + mA += aPitch; + + if (mOrgv != aVoicetype) + { + mOrgv = aVoicetype; + mA = 0; + mB = 100; + } + + switch (aVoicetype) + { + case 0: return (mA & (256 + 128 + 32)) * 5 * 0.0002f; + case 1: return (float)(sin(mA * 0.0002) * cos(mA * 0.0003) * 0.2f + ((rand() % 200 - 100) / 300.0f)); // ilmava + case 2: return (float)tan(mA*0.00002)*0.01f; // burpy + case 3: return ((mA & 65535) > 32768 ? 65535 : 0) * 0.00001f; // square wave + case 4: return mA * mA * 0.0000000002f; // kuisku + case 5: mA += 3; mB++; return ((mA & 255) > ((mB >> 2) & 255)) ? 0.3f : 0.0f; + case 7: return ((mA >> 8) & (256 + 128)) * 0.001f; // robottipulssi + case 8: return (float)(rand() % (1 + ((mA & 65535) >> 8))) / 256; // -- hiukka ihmisempi tsaatana + case 9: return ((float)(rand() & 32767)) / 32767; // -- noise: tsaatana + case 6: // fallthrough + default: return (mA & 65535) * (0.001f / 256); /*-- sawtooth: near natural */ + } + } + + float VizsnInstance::noisrc() + { + return ((float)(rand() & 32767)) / 32768; + } + + float VizsnInstance::genwave() + { + float s, o, noise, voice, glot, parglot; + int ob; + + noise = noisrc(); + + if (mNper > mNmod) + { + noise *= 0.5f; + } + + s = mBank0.frica * noise; + + voice = vcsrc((int)floor(mBank0.pitch), mCurrentVoiceType); + voice = mBank0.r[RLP].resonate(voice); + + if (mNper < mNopen) + { + voice += mBank0.breth * noise; + } + + parglot = glot = (mBank0.voice * voice) + (mBank0.aspir * noise); + + parglot = mBank0.r[RNZ].antiresonate(parglot); + parglot = mBank0.r[RNPC].resonate(parglot); + s += (parglot - mGlotlast); + mGlotlast = parglot; + o = mBank0.r[R1P].resonate(parglot); + + int i; + for (i = R4P; i > R2P; i--) + { + o = mBank0.r[i].resonate(s) - o; + } + + o = mBank0.r[ROUT].resonate(mBank0.bypas * s - o); + + /*********/ + + ob = (int)floor(o * 400 * 256 + (mEchobuf[mPtr] / 4)); + mEchobuf[mPtr] = ob; + mPtr = (mPtr + 1) & 1023; + + ob = (ob >> 8) + 128; + + if (ob < 0) ob = 0; + if (ob > 255) ob = 255; + + mNper++; + + return ob * (1.0f / 255.0f); + } + + void VizsnInstance::setphone(VizsnBank *aB, char aP, float aPitch) + { + int i; + aB->frica = aB->aspir = aB->bypas = aB->breth = aB->voice = 0; + aB->pitch = mPitch; + + if (aP < 0) + { + for (i = 0; i < 10; i++) + { + aB->r[i].p1 = aB->r[i].p2 = aB->r[i].a = aB->r[i].b = aB->r[i].c = 0; + } + } + else + { + if (aP < 8) + { + /* vokaali */ + VizsnResonator *r = aB->r; + const float *s = vowtab[aP][0]; + + r[R1P].c = -0.95f; r[R2P].c = -0.93f; r[R3P].c = -0.88f; r[R4P].c = -0.67f; + r[RLP].a = 0.31f; r[RLP].b = 1.35f; r[RLP].c = -0.67f; + r[RNZ].a = 22.0f; r[RNZ].b = -42.0f; r[RNZ].c = 21.0f; + r[RNPC].a = 0.04f; r[RNPC].b = 1.87f; r[RNPC].c = -0.92f; + r[ROUT].a = 1.16f; r[ROUT].b = 0.08f; r[ROUT].c = -0.02f; + + r += R1P; + + for (i = 4; i; i--) + { + r->a = *s++; + r->b = *s++; + r++; + } + + aB->voice = 0.8f; + } + else + { + /* v */ + int i; + const float *v = voo[aP - 8]; + + aB->voice = *v++; + aB->aspir = *v++; + aB->frica = *v++; + aB->bypas = *v++; + aB->breth = *v++; + + for (i = 0; i < 10; i++) + { + aB->r[i].a = *v++; + aB->r[i].b = *v++; + aB->r[i].c = *v++; + } + + aB->voice = 0.8f; + + aB->breth = 0.18f; + } + } + } + + void VizsnInstance::slidePrepare(int aNumtix) + { + int i; + + for (i = 0; i < 10; i++) + { + mBank0to1.r[i].a = (mBank1.r[i].a - mBank0.r[i].a) / aNumtix; + mBank0to1.r[i].b = (mBank1.r[i].b - mBank0.r[i].b) / aNumtix; + mBank0to1.r[i].c = (mBank1.r[i].c - mBank0.r[i].c) / aNumtix; + } + + mBank0to1.pitch = (mBank1.pitch - mBank0.pitch) / aNumtix; + } + + void VizsnInstance::slideTick() + { + int i; + + for (i = 0; i < 10; i++) + { + mBank0.r[i].a += mBank0to1.r[i].a; + mBank0.r[i].b += mBank0to1.r[i].b; + mBank0.r[i].c += mBank0to1.r[i].c; + } + + mBank0.pitch += mBank0to1.pitch; + } + + bool VizsnInstance::hasEnded() + { + return *mS == P_END; + } + + Vizsn::Vizsn() + { + mBaseSamplerate = 8000; + mText = 0; + } + + Vizsn::~Vizsn() + { + stop(); + } + + AudioSourceInstance * Vizsn::createInstance() + { + return new VizsnInstance(this); + } + + void Vizsn::setText(char *aText) + { + if (!aText) + return; + stop(); + delete[] mText; + int len = (int)strlen(aText); + mText = new char[len + 3]; + memcpy(mText+1, aText, len); + mText[0] = P_CLR; + int i; + for (i = 0; i < len; i++) + { + int c = mText[i + 1]; + if (c == '\x84' || c == -124) c = '{'; // ä + if (c == '\x94' || c == -108) c = '|'; // ö + if (c >= 'a' && c <= '|') + { + mText[i + 1] = keyz[c - 'a']; + } + else + { + mText[i + 1] = P_CLR; + } + } + mText[len + 1] = P_END; + mText[len + 2] = 0; + } + +}; diff --git a/src/soloud/src/audiosource/wav/dr_flac.h b/src/soloud/src/audiosource/wav/dr_flac.h new file mode 100644 index 0000000..fab4212 --- /dev/null +++ b/src/soloud/src/audiosource/wav/dr_flac.h @@ -0,0 +1,8154 @@ +// FLAC audio decoder. Public domain. See "unlicense" statement at the end of this file. +// dr_flac - v0.10.0 - 2018-09-11 +// +// David Reid - mackron@gmail.com + +// USAGE +// +// dr_flac is a single-file library. To use it, do something like the following in one .c file. +// #define DR_FLAC_IMPLEMENTATION +// #include "dr_flac.h" +// +// You can then #include this file in other parts of the program as you would with any other header file. To decode audio data, +// do something like the following: +// +// drflac* pFlac = drflac_open_file("MySong.flac"); +// if (pFlac == NULL) { +// // Failed to open FLAC file +// } +// +// drflac_int32* pSamples = malloc(pFlac->totalSampleCount * sizeof(drflac_int32)); +// drflac_uint64 numberOfInterleavedSamplesActuallyRead = drflac_read_pcm_frames_s32(pFlac, pFlac->totalSampleCount, pSamples); +// +// The drflac object represents the decoder. It is a transparent type so all the information you need, such as the number of +// channels and the bits per sample, should be directly accessible - just make sure you don't change their values. Samples are +// always output as interleaved signed 32-bit PCM. In the example above a native FLAC stream was opened, however dr_flac has +// seamless support for Ogg encapsulated FLAC streams as well. +// +// You do not need to decode the entire stream in one go - you just specify how many samples you'd like at any given time and +// the decoder will give you as many samples as it can, up to the amount requested. Later on when you need the next batch of +// samples, just call it again. Example: +// +// while (drflac_read_pcm_frames_s32(pFlac, chunkSize, pChunkSamples) > 0) { +// do_something(); +// } +// +// You can seek to a specific sample with drflac_seek_to_sample(). The given sample is based on interleaving. So for example, +// if you were to seek to the sample at index 0 in a stereo stream, you'll be seeking to the first sample of the left channel. +// The sample at index 1 will be the first sample of the right channel. The sample at index 2 will be the second sample of the +// left channel, etc. +// +// +// If you just want to quickly decode an entire FLAC file in one go you can do something like this: +// +// unsigned int channels; +// unsigned int sampleRate; +// drflac_uint64 totalSampleCount; +// drflac_int32* pSampleData = drflac_open_and_decode_file_s32("MySong.flac", &channels, &sampleRate, &totalSampleCount); +// if (pSampleData == NULL) { +// // Failed to open and decode FLAC file. +// } +// +// ... +// +// drflac_free(pSampleData); +// +// +// You can read samples as signed 16-bit integer and 32-bit floating-point PCM with the *_s16() and *_f32() family of APIs +// respectively, but note that these should be considered lossy. +// +// +// If you need access to metadata (album art, etc.), use drflac_open_with_metadata(), drflac_open_file_with_metdata() or +// drflac_open_memory_with_metadata(). The rationale for keeping these APIs separate is that they're slightly slower than the +// normal versions and also just a little bit harder to use. +// +// dr_flac reports metadata to the application through the use of a callback, and every metadata block is reported before +// drflac_open_with_metdata() returns. +// +// +// The main opening APIs (drflac_open(), etc.) will fail if the header is not present. The presents a problem in certain +// scenarios such as broadcast style streams like internet radio where the header may not be present because the user has +// started playback mid-stream. To handle this, use the relaxed APIs: drflac_open_relaxed() and drflac_open_with_metadata_relaxed(). +// +// It is not recommended to use these APIs for file based streams because a missing header would usually indicate a +// corrupted or perverse file. In addition, these APIs can take a long time to initialize because they may need to spend +// a lot of time finding the first frame. +// +// +// +// OPTIONS +// #define these options before including this file. +// +// #define DR_FLAC_NO_STDIO +// Disable drflac_open_file() and family. +// +// #define DR_FLAC_NO_OGG +// Disables support for Ogg/FLAC streams. +// +// #define DR_FLAC_BUFFER_SIZE +// Defines the size of the internal buffer to store data from onRead(). This buffer is used to reduce the number of calls +// back to the client for more data. Larger values means more memory, but better performance. My tests show diminishing +// returns after about 4KB (which is the default). Consider reducing this if you have a very efficient implementation of +// onRead(), or increase it if it's very inefficient. Must be a multiple of 8. +// +// #define DR_FLAC_NO_CRC +// Disables CRC checks. This will offer a performance boost when CRC is unnecessary. +// +// #define DR_FLAC_NO_SIMD +// Disables SIMD optimizations (SSE on x86/x64 architectures). Use this if you are having compatibility issues with your +// compiler. +// +// +// +// QUICK NOTES +// - dr_flac does not currently support changing the sample rate nor channel count mid stream. +// - Audio data is output as signed 32-bit PCM, regardless of the bits per sample the FLAC stream is encoded as. +// - This has not been tested on big-endian architectures. +// - dr_flac is not thread-safe, but its APIs can be called from any thread so long as you do your own synchronization. +// - When using Ogg encapsulation, a corrupted metadata block will result in drflac_open_with_metadata() and drflac_open() +// returning inconsistent samples. + +#ifndef dr_flac_h +#define dr_flac_h + +#include + +#if defined(_MSC_VER) && _MSC_VER < 1600 +typedef signed char drflac_int8; +typedef unsigned char drflac_uint8; +typedef signed short drflac_int16; +typedef unsigned short drflac_uint16; +typedef signed int drflac_int32; +typedef unsigned int drflac_uint32; +typedef signed __int64 drflac_int64; +typedef unsigned __int64 drflac_uint64; +#else +#include +typedef int8_t drflac_int8; +typedef uint8_t drflac_uint8; +typedef int16_t drflac_int16; +typedef uint16_t drflac_uint16; +typedef int32_t drflac_int32; +typedef uint32_t drflac_uint32; +typedef int64_t drflac_int64; +typedef uint64_t drflac_uint64; +#endif +typedef drflac_uint8 drflac_bool8; +typedef drflac_uint32 drflac_bool32; +#define DRFLAC_TRUE 1 +#define DRFLAC_FALSE 0 + +#if defined(_MSC_VER) && _MSC_VER >= 1700 // Visual Studio 2012 +#define DRFLAC_DEPRECATED __declspec(deprecated) +#elif (defined(__GNUC__) && __GNUC__ >= 4) +#define DRFLAC_DEPRECATED __attribute__((deprecated)) +#elif (defined(__clang__) && __has_feature(attribute_deprecated)) +#define DRFLAC_DEPRECATED __attribute__((deprecated)) +#else +#define DRFLAC_DEPRECATED +#endif + +// As data is read from the client it is placed into an internal buffer for fast access. This controls the +// size of that buffer. Larger values means more speed, but also more memory. In my testing there is diminishing +// returns after about 4KB, but you can fiddle with this to suit your own needs. Must be a multiple of 8. +#ifndef DR_FLAC_BUFFER_SIZE +#define DR_FLAC_BUFFER_SIZE 4096 +#endif + +#ifdef __cplusplus +extern "C" { +#endif + +// Check if we can enable 64-bit optimizations. +#if defined(_WIN64) || defined(_LP64) || defined(__LP64__) +#define DRFLAC_64BIT +#endif + +#ifdef DRFLAC_64BIT +typedef drflac_uint64 drflac_cache_t; +#else +typedef drflac_uint32 drflac_cache_t; +#endif + +// The various metadata block types. +#define DRFLAC_METADATA_BLOCK_TYPE_STREAMINFO 0 +#define DRFLAC_METADATA_BLOCK_TYPE_PADDING 1 +#define DRFLAC_METADATA_BLOCK_TYPE_APPLICATION 2 +#define DRFLAC_METADATA_BLOCK_TYPE_SEEKTABLE 3 +#define DRFLAC_METADATA_BLOCK_TYPE_VORBIS_COMMENT 4 +#define DRFLAC_METADATA_BLOCK_TYPE_CUESHEET 5 +#define DRFLAC_METADATA_BLOCK_TYPE_PICTURE 6 +#define DRFLAC_METADATA_BLOCK_TYPE_INVALID 127 + +// The various picture types specified in the PICTURE block. +#define DRFLAC_PICTURE_TYPE_OTHER 0 +#define DRFLAC_PICTURE_TYPE_FILE_ICON 1 +#define DRFLAC_PICTURE_TYPE_OTHER_FILE_ICON 2 +#define DRFLAC_PICTURE_TYPE_COVER_FRONT 3 +#define DRFLAC_PICTURE_TYPE_COVER_BACK 4 +#define DRFLAC_PICTURE_TYPE_LEAFLET_PAGE 5 +#define DRFLAC_PICTURE_TYPE_MEDIA 6 +#define DRFLAC_PICTURE_TYPE_LEAD_ARTIST 7 +#define DRFLAC_PICTURE_TYPE_ARTIST 8 +#define DRFLAC_PICTURE_TYPE_CONDUCTOR 9 +#define DRFLAC_PICTURE_TYPE_BAND 10 +#define DRFLAC_PICTURE_TYPE_COMPOSER 11 +#define DRFLAC_PICTURE_TYPE_LYRICIST 12 +#define DRFLAC_PICTURE_TYPE_RECORDING_LOCATION 13 +#define DRFLAC_PICTURE_TYPE_DURING_RECORDING 14 +#define DRFLAC_PICTURE_TYPE_DURING_PERFORMANCE 15 +#define DRFLAC_PICTURE_TYPE_SCREEN_CAPTURE 16 +#define DRFLAC_PICTURE_TYPE_BRIGHT_COLORED_FISH 17 +#define DRFLAC_PICTURE_TYPE_ILLUSTRATION 18 +#define DRFLAC_PICTURE_TYPE_BAND_LOGOTYPE 19 +#define DRFLAC_PICTURE_TYPE_PUBLISHER_LOGOTYPE 20 + +typedef enum +{ + drflac_container_native, + drflac_container_ogg, + drflac_container_unknown +} drflac_container; + +typedef enum +{ + drflac_seek_origin_start, + drflac_seek_origin_current +} drflac_seek_origin; + +// Packing is important on this structure because we map this directly to the raw data within the SEEKTABLE metadata block. +#pragma pack(2) +typedef struct +{ + drflac_uint64 firstSample; + drflac_uint64 frameOffset; // The offset from the first byte of the header of the first frame. + drflac_uint16 sampleCount; +} drflac_seekpoint; +#pragma pack() + +typedef struct +{ + drflac_uint16 minBlockSize; + drflac_uint16 maxBlockSize; + drflac_uint32 minFrameSize; + drflac_uint32 maxFrameSize; + drflac_uint32 sampleRate; + drflac_uint8 channels; + drflac_uint8 bitsPerSample; + drflac_uint64 totalSampleCount; + drflac_uint8 md5[16]; +} drflac_streaminfo; + +typedef struct +{ + // The metadata type. Use this to know how to interpret the data below. + drflac_uint32 type; + + // A pointer to the raw data. This points to a temporary buffer so don't hold on to it. It's best to + // not modify the contents of this buffer. Use the structures below for more meaningful and structured + // information about the metadata. It's possible for this to be null. + const void* pRawData; + + // The size in bytes of the block and the buffer pointed to by pRawData if it's non-NULL. + drflac_uint32 rawDataSize; + + union + { + drflac_streaminfo streaminfo; + + struct + { + int unused; + } padding; + + struct + { + drflac_uint32 id; + const void* pData; + drflac_uint32 dataSize; + } application; + + struct + { + drflac_uint32 seekpointCount; + const drflac_seekpoint* pSeekpoints; + } seektable; + + struct + { + drflac_uint32 vendorLength; + const char* vendor; + drflac_uint32 commentCount; + const void* pComments; + } vorbis_comment; + + struct + { + char catalog[128]; + drflac_uint64 leadInSampleCount; + drflac_bool32 isCD; + drflac_uint8 trackCount; + const void* pTrackData; + } cuesheet; + + struct + { + drflac_uint32 type; + drflac_uint32 mimeLength; + const char* mime; + drflac_uint32 descriptionLength; + const char* description; + drflac_uint32 width; + drflac_uint32 height; + drflac_uint32 colorDepth; + drflac_uint32 indexColorCount; + drflac_uint32 pictureDataSize; + const drflac_uint8* pPictureData; + } picture; + } data; +} drflac_metadata; + + +// Callback for when data needs to be read from the client. +// +// pUserData [in] The user data that was passed to drflac_open() and family. +// pBufferOut [out] The output buffer. +// bytesToRead [in] The number of bytes to read. +// +// Returns the number of bytes actually read. +// +// A return value of less than bytesToRead indicates the end of the stream. Do _not_ return from this callback until +// either the entire bytesToRead is filled or you have reached the end of the stream. +typedef size_t (* drflac_read_proc)(void* pUserData, void* pBufferOut, size_t bytesToRead); + +// Callback for when data needs to be seeked. +// +// pUserData [in] The user data that was passed to drflac_open() and family. +// offset [in] The number of bytes to move, relative to the origin. Will never be negative. +// origin [in] The origin of the seek - the current position or the start of the stream. +// +// Returns whether or not the seek was successful. +// +// The offset will never be negative. Whether or not it is relative to the beginning or current position is determined +// by the "origin" parameter which will be either drflac_seek_origin_start or drflac_seek_origin_current. +typedef drflac_bool32 (* drflac_seek_proc)(void* pUserData, int offset, drflac_seek_origin origin); + +// Callback for when a metadata block is read. +// +// pUserData [in] The user data that was passed to drflac_open() and family. +// pMetadata [in] A pointer to a structure containing the data of the metadata block. +// +// Use pMetadata->type to determine which metadata block is being handled and how to read the data. +typedef void (* drflac_meta_proc)(void* pUserData, drflac_metadata* pMetadata); + + +// Structure for internal use. Only used for decoders opened with drflac_open_memory. +typedef struct +{ + const drflac_uint8* data; + size_t dataSize; + size_t currentReadPos; +} drflac__memory_stream; + +// Structure for internal use. Used for bit streaming. +typedef struct +{ + // The function to call when more data needs to be read. + drflac_read_proc onRead; + + // The function to call when the current read position needs to be moved. + drflac_seek_proc onSeek; + + // The user data to pass around to onRead and onSeek. + void* pUserData; + + + // The number of unaligned bytes in the L2 cache. This will always be 0 until the end of the stream is hit. At the end of the + // stream there will be a number of bytes that don't cleanly fit in an L1 cache line, so we use this variable to know whether + // or not the bistreamer needs to run on a slower path to read those last bytes. This will never be more than sizeof(drflac_cache_t). + size_t unalignedByteCount; + + // The content of the unaligned bytes. + drflac_cache_t unalignedCache; + + // The index of the next valid cache line in the "L2" cache. + drflac_uint32 nextL2Line; + + // The number of bits that have been consumed by the cache. This is used to determine how many valid bits are remaining. + drflac_uint32 consumedBits; + + // The cached data which was most recently read from the client. There are two levels of cache. Data flows as such: + // Client -> L2 -> L1. The L2 -> L1 movement is aligned and runs on a fast path in just a few instructions. + drflac_cache_t cacheL2[DR_FLAC_BUFFER_SIZE/sizeof(drflac_cache_t)]; + drflac_cache_t cache; + + // CRC-16. This is updated whenever bits are read from the bit stream. Manually set this to 0 to reset the CRC. For FLAC, this + // is reset to 0 at the beginning of each frame. + drflac_uint16 crc16; + drflac_cache_t crc16Cache; // A cache for optimizing CRC calculations. This is filled when when the L1 cache is reloaded. + drflac_uint32 crc16CacheIgnoredBytes; // The number of bytes to ignore when updating the CRC-16 from the CRC-16 cache. +} drflac_bs; + +typedef struct +{ + // The type of the subframe: SUBFRAME_CONSTANT, SUBFRAME_VERBATIM, SUBFRAME_FIXED or SUBFRAME_LPC. + drflac_uint8 subframeType; + + // The number of wasted bits per sample as specified by the sub-frame header. + drflac_uint8 wastedBitsPerSample; + + // The order to use for the prediction stage for SUBFRAME_FIXED and SUBFRAME_LPC. + drflac_uint8 lpcOrder; + + // The number of bits per sample for this subframe. This is not always equal to the current frame's bit per sample because + // an extra bit is required for side channels when interchannel decorrelation is being used. + drflac_uint32 bitsPerSample; + + // A pointer to the buffer containing the decoded samples in the subframe. This pointer is an offset from drflac::pExtraData. Note that + // it's a signed 32-bit integer for each value. + drflac_int32* pDecodedSamples; +} drflac_subframe; + +typedef struct +{ + // If the stream uses variable block sizes, this will be set to the index of the first sample. If fixed block sizes are used, this will + // always be set to 0. + drflac_uint64 sampleNumber; + + // If the stream uses fixed block sizes, this will be set to the frame number. If variable block sizes are used, this will always be 0. + drflac_uint32 frameNumber; + + // The sample rate of this frame. + drflac_uint32 sampleRate; + + // The number of samples in each sub-frame within this frame. + drflac_uint16 blockSize; + + // The channel assignment of this frame. This is not always set to the channel count. If interchannel decorrelation is being used this + // will be set to DRFLAC_CHANNEL_ASSIGNMENT_LEFT_SIDE, DRFLAC_CHANNEL_ASSIGNMENT_RIGHT_SIDE or DRFLAC_CHANNEL_ASSIGNMENT_MID_SIDE. + drflac_uint8 channelAssignment; + + // The number of bits per sample within this frame. + drflac_uint8 bitsPerSample; + + // The frame's CRC. + drflac_uint8 crc8; +} drflac_frame_header; + +typedef struct +{ + // The header. + drflac_frame_header header; + + // The number of samples left to be read in this frame. This is initially set to the block size multiplied by the channel count. As samples + // are read, this will be decremented. When it reaches 0, the decoder will see this frame as fully consumed and load the next frame. + drflac_uint32 samplesRemaining; + + // The list of sub-frames within the frame. There is one sub-frame for each channel, and there's a maximum of 8 channels. + drflac_subframe subframes[8]; +} drflac_frame; + +typedef struct +{ + // The function to call when a metadata block is read. + drflac_meta_proc onMeta; + + // The user data posted to the metadata callback function. + void* pUserDataMD; + + + // The sample rate. Will be set to something like 44100. + drflac_uint32 sampleRate; + + // The number of channels. This will be set to 1 for monaural streams, 2 for stereo, etc. Maximum 8. This is set based on the + // value specified in the STREAMINFO block. + drflac_uint8 channels; + + // The bits per sample. Will be set to something like 16, 24, etc. + drflac_uint8 bitsPerSample; + + // The maximum block size, in samples. This number represents the number of samples in each channel (not combined). + drflac_uint16 maxBlockSize; + + // The total number of samples making up the stream. This includes every channel. For example, if the stream has 2 channels, + // with each channel having a total of 4096, this value will be set to 2*4096 = 8192. Can be 0 in which case it's still a + // valid stream, but just means the total sample count is unknown. Likely the case with streams like internet radio. + drflac_uint64 totalSampleCount; + drflac_uint64 totalPCMFrameCount; // <-- Equal to totalSampleCount / channels. + + + // The container type. This is set based on whether or not the decoder was opened from a native or Ogg stream. + drflac_container container; + + // The number of seekpoints in the seektable. + drflac_uint32 seekpointCount; + + + // Information about the frame the decoder is currently sitting on. + drflac_frame currentFrame; + + // The index of the sample the decoder is currently sitting on. This is only used for seeking. + drflac_uint64 currentSample; + + // The position of the first frame in the stream. This is only ever used for seeking. + drflac_uint64 firstFramePos; + + + // A hack to avoid a malloc() when opening a decoder with drflac_open_memory(). + drflac__memory_stream memoryStream; + + + // A pointer to the decoded sample data. This is an offset of pExtraData. + drflac_int32* pDecodedSamples; + + // A pointer to the seek table. This is an offset of pExtraData, or NULL if there is no seek table. + drflac_seekpoint* pSeekpoints; + + // Internal use only. Only used with Ogg containers. Points to a drflac_oggbs object. This is an offset of pExtraData. + void* _oggbs; + + // The bit streamer. The raw FLAC data is fed through this object. + drflac_bs bs; + + // Variable length extra data. We attach this to the end of the object so we can avoid unnecessary mallocs. + drflac_uint8 pExtraData[1]; +} drflac; + + +// Opens a FLAC decoder. +// +// onRead [in] The function to call when data needs to be read from the client. +// onSeek [in] The function to call when the read position of the client data needs to move. +// pUserData [in, optional] A pointer to application defined data that will be passed to onRead and onSeek. +// +// Returns a pointer to an object representing the decoder. +// +// Close the decoder with drflac_close(). +// +// This function will automatically detect whether or not you are attempting to open a native or Ogg encapsulated +// FLAC, both of which should work seamlessly without any manual intervention. Ogg encapsulation also works with +// multiplexed streams which basically means it can play FLAC encoded audio tracks in videos. +// +// This is the lowest level function for opening a FLAC stream. You can also use drflac_open_file() and drflac_open_memory() +// to open the stream from a file or from a block of memory respectively. +// +// The STREAMINFO block must be present for this to succeed. Use drflac_open_relaxed() to open a FLAC stream where +// the header may not be present. +// +// See also: drflac_open_file(), drflac_open_memory(), drflac_open_with_metadata(), drflac_close() +drflac* drflac_open(drflac_read_proc onRead, drflac_seek_proc onSeek, void* pUserData); + +// The same as drflac_open(), except attempts to open the stream even when a header block is not present. +// +// Because the header is not necessarily available, the caller must explicitly define the container (Native or Ogg). Do +// not set this to drflac_container_unknown - that is for internal use only. +// +// Opening in relaxed mode will continue reading data from onRead until it finds a valid frame. If a frame is never +// found it will continue forever. To abort, force your onRead callback to return 0, which dr_flac will use as an +// indicator that the end of the stream was found. +drflac* drflac_open_relaxed(drflac_read_proc onRead, drflac_seek_proc onSeek, drflac_container container, void* pUserData); + +// Opens a FLAC decoder and notifies the caller of the metadata chunks (album art, etc.). +// +// onRead [in] The function to call when data needs to be read from the client. +// onSeek [in] The function to call when the read position of the client data needs to move. +// onMeta [in] The function to call for every metadata block. +// pUserData [in, optional] A pointer to application defined data that will be passed to onRead, onSeek and onMeta. +// +// Returns a pointer to an object representing the decoder. +// +// Close the decoder with drflac_close(). +// +// This is slower than drflac_open(), so avoid this one if you don't need metadata. Internally, this will do a DRFLAC_MALLOC() +// and DRFLAC_FREE() for every metadata block except for STREAMINFO and PADDING blocks. +// +// The caller is notified of the metadata via the onMeta callback. All metadata blocks will be handled before the function +// returns. +// +// The STREAMINFO block must be present for this to succeed. Use drflac_open_with_metadata_relaxed() to open a FLAC +// stream where the header may not be present. +// +// Note that this will behave inconsistently with drflac_open() if the stream is an Ogg encapsulated stream and a metadata +// block is corrupted. This is due to the way the Ogg stream recovers from corrupted pages. When drflac_open_with_metadata() +// is being used, the open routine will try to read the contents of the metadata block, whereas drflac_open() will simply +// seek past it (for the sake of efficiency). This inconsistency can result in different samples being returned depending on +// whether or not the stream is being opened with metadata. +// +// See also: drflac_open_file_with_metadata(), drflac_open_memory_with_metadata(), drflac_open(), drflac_close() +drflac* drflac_open_with_metadata(drflac_read_proc onRead, drflac_seek_proc onSeek, drflac_meta_proc onMeta, void* pUserData); + +// The same as drflac_open_with_metadata(), except attempts to open the stream even when a header block is not present. +// +// See also: drflac_open_with_metadata(), drflac_open_relaxed() +drflac* drflac_open_with_metadata_relaxed(drflac_read_proc onRead, drflac_seek_proc onSeek, drflac_meta_proc onMeta, drflac_container container, void* pUserData); + +// Closes the given FLAC decoder. +// +// pFlac [in] The decoder to close. +// +// This will destroy the decoder object. +void drflac_close(drflac* pFlac); + + +// Reads sample data from the given FLAC decoder, output as interleaved signed 32-bit PCM. +// +// pFlac [in] The decoder. +// framesToRead [in] The number of PCM frames to read. +// pBufferOut [out, optional] A pointer to the buffer that will receive the decoded samples. +// +// Returns the number of PCM frames actually read. +// +// pBufferOut can be null, in which case the call will act as a seek, and the return value will be the number of frames +// seeked. +drflac_uint64 drflac_read_pcm_frames_s32(drflac* pFlac, drflac_uint64 framesToRead, drflac_int32* pBufferOut); + +// Same as drflac_read_pcm_frames_s32(), except outputs samples as 16-bit integer PCM rather than 32-bit. +// +// Note that this is lossy for streams where the bits per sample is larger than 16. +drflac_uint64 drflac_read_pcm_frames_s16(drflac* pFlac, drflac_uint64 framesToRead, drflac_int16* pBufferOut); + +// Same as drflac_read_pcm_frames_s32(), except outputs samples as 32-bit floating-point PCM. +// +// Note that this should be considered lossy due to the nature of floating point numbers not being able to exactly +// represent every possible number. +drflac_uint64 drflac_read_pcm_frames_f32(drflac* pFlac, drflac_uint64 framesToRead, float* pBufferOut); + +// Seeks to the PCM frame at the given index. +// +// pFlac [in] The decoder. +// pcmFrameIndex [in] The index of the PCM frame to seek to. See notes below. +// +// Returns DRFLAC_TRUE if successful; DRFLAC_FALSE otherwise. +drflac_bool32 drflac_seek_to_pcm_frame(drflac* pFlac, drflac_uint64 pcmFrameIndex); + + + +#ifndef DR_FLAC_NO_STDIO +// Opens a FLAC decoder from the file at the given path. +// +// filename [in] The path of the file to open, either absolute or relative to the current directory. +// +// Returns a pointer to an object representing the decoder. +// +// Close the decoder with drflac_close(). +// +// This will hold a handle to the file until the decoder is closed with drflac_close(). Some platforms will restrict the +// number of files a process can have open at any given time, so keep this mind if you have many decoders open at the +// same time. +// +// See also: drflac_open(), drflac_open_file_with_metadata(), drflac_close() +drflac* drflac_open_file(const char* filename); + +// Opens a FLAC decoder from the file at the given path and notifies the caller of the metadata chunks (album art, etc.) +// +// Look at the documentation for drflac_open_with_metadata() for more information on how metadata is handled. +drflac* drflac_open_file_with_metadata(const char* filename, drflac_meta_proc onMeta, void* pUserData); +#endif + +// Opens a FLAC decoder from a pre-allocated block of memory +// +// This does not create a copy of the data. It is up to the application to ensure the buffer remains valid for +// the lifetime of the decoder. +drflac* drflac_open_memory(const void* data, size_t dataSize); + +// Opens a FLAC decoder from a pre-allocated block of memory and notifies the caller of the metadata chunks (album art, etc.) +// +// Look at the documentation for drflac_open_with_metadata() for more information on how metadata is handled. +drflac* drflac_open_memory_with_metadata(const void* data, size_t dataSize, drflac_meta_proc onMeta, void* pUserData); + + + +//// High Level APIs //// + +// Opens a FLAC stream from the given callbacks and fully decodes it in a single operation. The return value is a +// pointer to the sample data as interleaved signed 32-bit PCM. The returned data must be freed with DRFLAC_FREE(). +// +// Sometimes a FLAC file won't keep track of the total sample count. In this situation the function will continuously +// read samples into a dynamically sized buffer on the heap until no samples are left. +// +// Do not call this function on a broadcast type of stream (like internet radio streams and whatnot). +drflac_int32* drflac_open_and_read_pcm_frames_s32(drflac_read_proc onRead, drflac_seek_proc onSeek, void* pUserData, unsigned int* channels, unsigned int* sampleRate, drflac_uint64* totalPCMFrameCount); + +// Same as drflac_open_and_read_pcm_frames_s32(), except returns signed 16-bit integer samples. +drflac_int16* drflac_open_and_read_pcm_frames_s16(drflac_read_proc onRead, drflac_seek_proc onSeek, void* pUserData, unsigned int* channels, unsigned int* sampleRate, drflac_uint64* totalPCMFrameCount); + +// Same as drflac_open_and_read_pcm_frames_s32(), except returns 32-bit floating-point samples. +float* drflac_open_and_read_pcm_frames_f32(drflac_read_proc onRead, drflac_seek_proc onSeek, void* pUserData, unsigned int* channels, unsigned int* sampleRate, drflac_uint64* totalPCMFrameCount); + +#ifndef DR_FLAC_NO_STDIO +// Same as drflac_open_and_read_pcm_frames_s32() except opens the decoder from a file. +drflac_int32* drflac_open_file_and_read_pcm_frames_s32(const char* filename, unsigned int* channels, unsigned int* sampleRate, drflac_uint64* totalPCMFrameCount); + +// Same as drflac_open_file_and_read_pcm_frames_s32(), except returns signed 16-bit integer samples. +drflac_int16* drflac_open_file_and_read_pcm_frames_s16(const char* filename, unsigned int* channels, unsigned int* sampleRate, drflac_uint64* totalPCMFrameCount); + +// Same as drflac_open_file_and_read_pcm_frames_s32(), except returns 32-bit floating-point samples. +float* drflac_open_file_and_read_pcm_frames_f32(const char* filename, unsigned int* channels, unsigned int* sampleRate, drflac_uint64* totalPCMFrameCount); +#endif + +// Same as drflac_open_and_read_pcm_frames_s32() except opens the decoder from a block of memory. +drflac_int32* drflac_open_memory_and_read_pcm_frames_s32(const void* data, size_t dataSize, unsigned int* channels, unsigned int* sampleRate, drflac_uint64* totalPCMFrameCount); + +// Same as drflac_open_memory_and_read_pcm_frames_s32(), except returns signed 16-bit integer samples. +drflac_int16* drflac_open_memory_and_read_pcm_frames_s16(const void* data, size_t dataSize, unsigned int* channels, unsigned int* sampleRate, drflac_uint64* totalPCMFrameCount); + +// Same as drflac_open_memory_and_read_pcm_frames_s32(), except returns 32-bit floating-point samples. +float* drflac_open_memory_and_read_pcm_frames_f32(const void* data, size_t dataSize, unsigned int* channels, unsigned int* sampleRate, drflac_uint64* totalPCMFrameCount); + +// Frees memory that was allocated internally by dr_flac. +void drflac_free(void* p); + + +// Structure representing an iterator for vorbis comments in a VORBIS_COMMENT metadata block. +typedef struct +{ + drflac_uint32 countRemaining; + const char* pRunningData; +} drflac_vorbis_comment_iterator; + +// Initializes a vorbis comment iterator. This can be used for iterating over the vorbis comments in a VORBIS_COMMENT +// metadata block. +void drflac_init_vorbis_comment_iterator(drflac_vorbis_comment_iterator* pIter, drflac_uint32 commentCount, const void* pComments); + +// Goes to the next vorbis comment in the given iterator. If null is returned it means there are no more comments. The +// returned string is NOT null terminated. +const char* drflac_next_vorbis_comment(drflac_vorbis_comment_iterator* pIter, drflac_uint32* pCommentLengthOut); + + +// Structure representing an iterator for cuesheet tracks in a CUESHEET metadata block. +typedef struct +{ + drflac_uint32 countRemaining; + const char* pRunningData; +} drflac_cuesheet_track_iterator; + +// Packing is important on this structure because we map this directly to the raw data within the CUESHEET metadata block. +#pragma pack(4) +typedef struct +{ + drflac_uint64 offset; + drflac_uint8 index; + drflac_uint8 reserved[3]; +} drflac_cuesheet_track_index; +#pragma pack() + +typedef struct +{ + drflac_uint64 offset; + drflac_uint8 trackNumber; + char ISRC[12]; + drflac_bool8 isAudio; + drflac_bool8 preEmphasis; + drflac_uint8 indexCount; + const drflac_cuesheet_track_index* pIndexPoints; +} drflac_cuesheet_track; + +// Initializes a cuesheet track iterator. This can be used for iterating over the cuesheet tracks in a CUESHEET metadata +// block. +void drflac_init_cuesheet_track_iterator(drflac_cuesheet_track_iterator* pIter, drflac_uint32 trackCount, const void* pTrackData); + +// Goes to the next cuesheet track in the given iterator. If DRFLAC_FALSE is returned it means there are no more comments. +drflac_bool32 drflac_next_cuesheet_track(drflac_cuesheet_track_iterator* pIter, drflac_cuesheet_track* pCuesheetTrack); + + +//// Deprecated APIs //// +DRFLAC_DEPRECATED drflac_uint64 drflac_read_s32(drflac* pFlac, drflac_uint64 samplesToRead, drflac_int32* pBufferOut); // Use drflac_read_pcm_frames_s32() instead. +DRFLAC_DEPRECATED drflac_uint64 drflac_read_s16(drflac* pFlac, drflac_uint64 samplesToRead, drflac_int16* pBufferOut); // Use drflac_read_pcm_frames_s16() instead. +DRFLAC_DEPRECATED drflac_uint64 drflac_read_f32(drflac* pFlac, drflac_uint64 samplesToRead, float* pBufferOut); // Use drflac_read_pcm_frames_f32() instead. +DRFLAC_DEPRECATED drflac_bool32 drflac_seek_to_sample(drflac* pFlac, drflac_uint64 sampleIndex); // Use drflac_seek_to_pcm_frame() instead. +DRFLAC_DEPRECATED drflac_int32* drflac_open_and_decode_s32(drflac_read_proc onRead, drflac_seek_proc onSeek, void* pUserData, unsigned int* channels, unsigned int* sampleRate, drflac_uint64* totalSampleCount); // Use drflac_open_and_read_pcm_frames_s32(). +DRFLAC_DEPRECATED drflac_int16* drflac_open_and_decode_s16(drflac_read_proc onRead, drflac_seek_proc onSeek, void* pUserData, unsigned int* channels, unsigned int* sampleRate, drflac_uint64* totalSampleCount); // Use drflac_open_and_read_pcm_frames_s16(). +DRFLAC_DEPRECATED float* drflac_open_and_decode_f32(drflac_read_proc onRead, drflac_seek_proc onSeek, void* pUserData, unsigned int* channels, unsigned int* sampleRate, drflac_uint64* totalSampleCount); // Use drflac_open_and_read_pcm_frames_f32(). +DRFLAC_DEPRECATED drflac_int32* drflac_open_and_decode_file_s32(const char* filename, unsigned int* channels, unsigned int* sampleRate, drflac_uint64* totalSampleCount); // Use drflac_open_file_and_read_pcm_frames_s32(). +DRFLAC_DEPRECATED drflac_int16* drflac_open_and_decode_file_s16(const char* filename, unsigned int* channels, unsigned int* sampleRate, drflac_uint64* totalSampleCount); // Use drflac_open_file_and_read_pcm_frames_s16(). +DRFLAC_DEPRECATED float* drflac_open_and_decode_file_f32(const char* filename, unsigned int* channels, unsigned int* sampleRate, drflac_uint64* totalSampleCount); // Use drflac_open_file_and_read_pcm_frames_f32(). +DRFLAC_DEPRECATED drflac_int32* drflac_open_and_decode_memory_s32(const void* data, size_t dataSize, unsigned int* channels, unsigned int* sampleRate, drflac_uint64* totalSampleCount); // Use drflac_open_memory_and_read_pcm_frames_s32(). +DRFLAC_DEPRECATED drflac_int16* drflac_open_and_decode_memory_s16(const void* data, size_t dataSize, unsigned int* channels, unsigned int* sampleRate, drflac_uint64* totalSampleCount); // Use drflac_open_memory_and_read_pcm_frames_s16(). +DRFLAC_DEPRECATED float* drflac_open_and_decode_memory_f32(const void* data, size_t dataSize, unsigned int* channels, unsigned int* sampleRate, drflac_uint64* totalSampleCount); // Use drflac_open_memory_and_read_pcm_frames_f32(). + +#ifdef __cplusplus +} +#endif +#endif //dr_flac_h + + +/////////////////////////////////////////////////////////////////////////////// +// +// IMPLEMENTATION +// +/////////////////////////////////////////////////////////////////////////////// +#ifdef DR_FLAC_IMPLEMENTATION +#ifdef __linux__ + #ifndef _BSD_SOURCE + #define _BSD_SOURCE + #endif + #ifndef __USE_BSD + #define __USE_BSD + #endif + #include +#endif + +#include +#include + +#ifdef _MSC_VER +#define DRFLAC_INLINE __forceinline +#else +#ifdef __GNUC__ +#define DRFLAC_INLINE inline __attribute__((always_inline)) +#else +#define DRFLAC_INLINE inline +#endif +#endif + +// CPU architecture. +#if defined(__x86_64__) || defined(_M_X64) + #define DRFLAC_X64 +#elif defined(__i386) || defined(_M_IX86) + #define DRFLAC_X86 +#elif defined(__arm__) || defined(_M_ARM) + #define DRFLAC_ARM +#endif + +// Intrinsics Support +#if !defined(DR_FLAC_NO_SIMD) + #if defined(DRFLAC_X64) || defined(DRFLAC_X86) + #if defined(_MSC_VER) && !defined(__clang__) + // MSVC. + #if !defined(DRFLAC_NO_SSE2) // Assume all MSVC compilers support SSE2 intrinsics. + #define DRFLAC_SUPPORT_SSE2 + #endif + #if _MSC_VER >= 1600 && !defined(DRFLAC_NO_SSE41) // 2010 + #define DRFLAC_SUPPORT_SSE41 + #endif + #else + // Assume GNUC-style. + #if defined(__SSE2__) && !defined(DRFLAC_NO_SSE2) + #define DRFLAC_SUPPORT_SSE2 + #endif + #if defined(__SSE4_1__) && !defined(DRFLAC_NO_SSE41) + #define DRFLAC_SUPPORT_SSE41 + #endif + #endif + + // If at this point we still haven't determined compiler support for the intrinsics just fall back to __has_include. + #if !defined(__GNUC__) && !defined(__clang__) && defined(__has_include) + #if !defined(DRFLAC_SUPPORT_SSE2) && !defined(DRFLAC_NO_SSE2) && __has_include() + #define DRFLAC_SUPPORT_SSE2 + #endif + #if !defined(DRFLAC_SUPPORT_SSE41) && !defined(DRFLAC_NO_SSE41) && __has_include() + #define DRFLAC_SUPPORT_SSE41 + #endif + #endif + + #if defined(DRFLAC_SUPPORT_SSE41) + #include + #elif defined(DRFLAC_SUPPORT_SSE2) + #include + #endif + #endif + + #if defined(DRFLAC_ARM) + #if !defined(DRFLAC_NO_NEON) && (defined(__ARM_NEON) || defined(__aarch64__) || defined(_M_ARM64)) + #define DRFLAC_SUPPORT_NEON + #endif + + // Fall back to looking for the #include file. + #if !defined(__GNUC__) && !defined(__clang__) && defined(__has_include) + #if !defined(DRFLAC_SUPPORT_NEON) && !defined(DRFLAC_NO_NEON) && __has_include() + #define DRFLAC_SUPPORT_NEON + #endif + #endif + + #if defined(DRFLAC_SUPPORT_NEON) + #include + #endif + #endif +#endif + +// Compile-time CPU feature support. +#if !defined(DR_FLAC_NO_SIMD) && (defined(DRFLAC_X86) || defined(DRFLAC_X64)) + #if defined(_MSC_VER) && !defined(__clang__) + #if _MSC_VER >= 1400 + #include + static void drflac__cpuid(int info[4], int fid) + { + __cpuid(info, fid); + } + #else + #define DRFLAC_NO_CPUID + #endif + #else + #if defined(__GNUC__) || defined(__clang__) + static void drflac__cpuid(int info[4], int fid) + { + // It looks like the -fPIC option uses the ebx register which GCC complains about. We can work around this by just using a different register, the + // specific register of which I'm letting the compiler decide on. The "k" prefix is used to specify a 32-bit register. The {...} syntax is for + // supporting different assembly dialects. + // + // What's basically happening is that we're saving and restoring the ebx register manually. + #if defined(DRFLAC_X86) && defined(__PIC__) + __asm__ __volatile__ ( + "xchg{l} {%%}ebx, %k1;" + "cpuid;" + "xchg{l} {%%}ebx, %k1;" + : "=a"(info[0]), "=&r"(info[1]), "=c"(info[2]), "=d"(info[3]) : "a"(fid), "c"(0) + ); + #else + __asm__ __volatile__ ( + "cpuid" : "=a"(info[0]), "=b"(info[1]), "=c"(info[2]), "=d"(info[3]) : "a"(fid), "c"(0) + ); + #endif + } + #else + #define DRFLAC_NO_CPUID + #endif + #endif +#else + #define DRFLAC_NO_CPUID +#endif + +static DRFLAC_INLINE drflac_bool32 drflac_has_sse2() +{ +#if defined(DRFLAC_SUPPORT_SSE2) + #if (defined(DRFLAC_X64) || defined(DRFLAC_X86)) && !defined(DRFLAC_NO_SSE2) + #if defined(DRFLAC_X64) + return DRFLAC_TRUE; // 64-bit targets always support SSE2. + #elif (defined(_M_IX86_FP) && _M_IX86_FP == 2) || defined(__SSE2__) + return DRFLAC_TRUE; // If the compiler is allowed to freely generate SSE2 code we can assume support. + #else + #if defined(DRFLAC_NO_CPUID) + return DRFLAC_FALSE; + #else + int info[4]; + drflac_cpuid(info, 1); + return (info[3] & (1 << 26)) != 0; + #endif + #endif + #else + return DRFLAC_FALSE; // SSE2 is only supported on x86 and x64 architectures. + #endif +#else + return DRFLAC_FALSE; // No compiler support. +#endif +} + +static DRFLAC_INLINE drflac_bool32 drflac_has_sse41() +{ +#if defined(DRFLAC_SUPPORT_SSE41) + #if (defined(DRFLAC_X64) || defined(DRFLAC_X86)) && !defined(DRFLAC_NO_SSE41) + #if defined(DRFLAC_X64) + return DRFLAC_TRUE; // 64-bit targets always support SSE4.1. + #elif (defined(_M_IX86_FP) && _M_IX86_FP == 2) || defined(__SSE4_1__) + return DRFLAC_TRUE; // If the compiler is allowed to freely generate SSE41 code we can assume support. + #else + #if defined(DRFLAC_NO_CPUID) + return DRFLAC_FALSE; + #else + int info[4]; + drflac_cpuid(info, 1); + return (info[2] & (1 << 19)) != 0; + #endif + #endif + #else + return DRFLAC_FALSE; // SSE41 is only supported on x86 and x64 architectures. + #endif +#else + return DRFLAC_FALSE; // No compiler support. +#endif +} + + +#if defined(_MSC_VER) && _MSC_VER >= 1500 && (defined(DRFLAC_X86) || defined(DRFLAC_X64)) + #define DRFLAC_HAS_LZCNT_INTRINSIC +#elif (defined(__GNUC__) && ((__GNUC__ > 4) || (__GNUC__ == 4 && __GNUC_MINOR__ >= 7))) + #define DRFLAC_HAS_LZCNT_INTRINSIC +#elif defined(__clang__) + #if __has_builtin(__builtin_clzll) || __has_builtin(__builtin_clzl) + #define DRFLAC_HAS_LZCNT_INTRINSIC + #endif +#endif + +#if defined(_MSC_VER) && _MSC_VER >= 1300 + #define DRFLAC_HAS_BYTESWAP16_INTRINSIC + #define DRFLAC_HAS_BYTESWAP32_INTRINSIC + #define DRFLAC_HAS_BYTESWAP64_INTRINSIC +#elif defined(__clang__) + #if __has_builtin(__builtin_bswap16) + #define DRFLAC_HAS_BYTESWAP16_INTRINSIC + #endif + #if __has_builtin(__builtin_bswap32) + #define DRFLAC_HAS_BYTESWAP32_INTRINSIC + #endif + #if __has_builtin(__builtin_bswap64) + #define DRFLAC_HAS_BYTESWAP64_INTRINSIC + #endif +#elif defined(__GNUC__) + #if ((__GNUC__ > 4) || (__GNUC__ == 4 && __GNUC_MINOR__ >= 3)) + #define DRFLAC_HAS_BYTESWAP32_INTRINSIC + #define DRFLAC_HAS_BYTESWAP64_INTRINSIC + #endif + #if ((__GNUC__ > 4) || (__GNUC__ == 4 && __GNUC_MINOR__ >= 8)) + #define DRFLAC_HAS_BYTESWAP16_INTRINSIC + #endif +#endif + + +// Standard library stuff. +#ifndef DRFLAC_ASSERT +#include +#define DRFLAC_ASSERT(expression) assert(expression) +#endif +#ifndef DRFLAC_MALLOC +#define DRFLAC_MALLOC(sz) malloc((sz)) +#endif +#ifndef DRFLAC_REALLOC +#define DRFLAC_REALLOC(p, sz) realloc((p), (sz)) +#endif +#ifndef DRFLAC_FREE +#define DRFLAC_FREE(p) free((p)) +#endif +#ifndef DRFLAC_COPY_MEMORY +#define DRFLAC_COPY_MEMORY(dst, src, sz) memcpy((dst), (src), (sz)) +#endif +#ifndef DRFLAC_ZERO_MEMORY +#define DRFLAC_ZERO_MEMORY(p, sz) memset((p), 0, (sz)) +#endif + +#define DRFLAC_MAX_SIMD_VECTOR_SIZE 64 // 64 for AVX-512 in the future. + +typedef drflac_int32 drflac_result; +#define DRFLAC_SUCCESS 0 +#define DRFLAC_ERROR -1 // A generic error. +#define DRFLAC_INVALID_ARGS -2 +#define DRFLAC_END_OF_STREAM -128 +#define DRFLAC_CRC_MISMATCH -129 + +#define DRFLAC_SUBFRAME_CONSTANT 0 +#define DRFLAC_SUBFRAME_VERBATIM 1 +#define DRFLAC_SUBFRAME_FIXED 8 +#define DRFLAC_SUBFRAME_LPC 32 +#define DRFLAC_SUBFRAME_RESERVED 255 + +#define DRFLAC_RESIDUAL_CODING_METHOD_PARTITIONED_RICE 0 +#define DRFLAC_RESIDUAL_CODING_METHOD_PARTITIONED_RICE2 1 + +#define DRFLAC_CHANNEL_ASSIGNMENT_INDEPENDENT 0 +#define DRFLAC_CHANNEL_ASSIGNMENT_LEFT_SIDE 8 +#define DRFLAC_CHANNEL_ASSIGNMENT_RIGHT_SIDE 9 +#define DRFLAC_CHANNEL_ASSIGNMENT_MID_SIDE 10 + +// Keeps track of the number of leading samples for each sub-frame. This is required because the SSE pipeline will occasionally +// reference excess prior samples. +#define DRFLAC_LEADING_SAMPLES 32 + + +#define drflac_align(x, a) ((((x) + (a) - 1) / (a)) * (a)) +#define drflac_assert DRFLAC_ASSERT +#define drflac_copy_memory DRFLAC_COPY_MEMORY +#define drflac_zero_memory DRFLAC_ZERO_MEMORY + + +// CPU caps. +static drflac_bool32 drflac__gIsLZCNTSupported = DRFLAC_FALSE; +#ifndef DRFLAC_NO_CPUID +static drflac_bool32 drflac__gIsSSE2Supported = DRFLAC_FALSE; +static drflac_bool32 drflac__gIsSSE41Supported = DRFLAC_FALSE; +static void drflac__init_cpu_caps() +{ + int info[4] = {0}; + + // LZCNT + drflac__cpuid(info, 0x80000001); + drflac__gIsLZCNTSupported = (info[2] & (1 << 5)) != 0; + + // SSE2 + drflac__gIsSSE2Supported = drflac_has_sse2(); + + // SSE4.1 + drflac__gIsSSE41Supported = drflac_has_sse41(); +} +#endif + + +//// Endian Management //// +static DRFLAC_INLINE drflac_bool32 drflac__is_little_endian() +{ +#if defined(DRFLAC_X86) || defined(DRFLAC_X64) + return DRFLAC_TRUE; +#else + int n = 1; + return (*(char*)&n) == 1; +#endif +} + +static DRFLAC_INLINE drflac_uint16 drflac__swap_endian_uint16(drflac_uint16 n) +{ +#ifdef DRFLAC_HAS_BYTESWAP16_INTRINSIC + #if defined(_MSC_VER) + return _byteswap_ushort(n); + #elif defined(__GNUC__) || defined(__clang__) + return __builtin_bswap16(n); + #else + #error "This compiler does not support the byte swap intrinsic." + #endif +#else + return ((n & 0xFF00) >> 8) | + ((n & 0x00FF) << 8); +#endif +} + +static DRFLAC_INLINE drflac_uint32 drflac__swap_endian_uint32(drflac_uint32 n) +{ +#ifdef DRFLAC_HAS_BYTESWAP32_INTRINSIC + #if defined(_MSC_VER) + return _byteswap_ulong(n); + #elif defined(__GNUC__) || defined(__clang__) + return __builtin_bswap32(n); + #else + #error "This compiler does not support the byte swap intrinsic." + #endif +#else + return ((n & 0xFF000000) >> 24) | + ((n & 0x00FF0000) >> 8) | + ((n & 0x0000FF00) << 8) | + ((n & 0x000000FF) << 24); +#endif +} + +static DRFLAC_INLINE drflac_uint64 drflac__swap_endian_uint64(drflac_uint64 n) +{ +#ifdef DRFLAC_HAS_BYTESWAP64_INTRINSIC + #if defined(_MSC_VER) + return _byteswap_uint64(n); + #elif defined(__GNUC__) || defined(__clang__) + return __builtin_bswap64(n); + #else + #error "This compiler does not support the byte swap intrinsic." + #endif +#else + return ((n & (drflac_uint64)0xFF00000000000000) >> 56) | + ((n & (drflac_uint64)0x00FF000000000000) >> 40) | + ((n & (drflac_uint64)0x0000FF0000000000) >> 24) | + ((n & (drflac_uint64)0x000000FF00000000) >> 8) | + ((n & (drflac_uint64)0x00000000FF000000) << 8) | + ((n & (drflac_uint64)0x0000000000FF0000) << 24) | + ((n & (drflac_uint64)0x000000000000FF00) << 40) | + ((n & (drflac_uint64)0x00000000000000FF) << 56); +#endif +} + + +static DRFLAC_INLINE drflac_uint16 drflac__be2host_16(drflac_uint16 n) +{ +#ifdef __linux__ + return be16toh(n); +#else + if (drflac__is_little_endian()) { + return drflac__swap_endian_uint16(n); + } + + return n; +#endif +} + +static DRFLAC_INLINE drflac_uint32 drflac__be2host_32(drflac_uint32 n) +{ +#ifdef __linux__ + return be32toh(n); +#else + if (drflac__is_little_endian()) { + return drflac__swap_endian_uint32(n); + } + + return n; +#endif +} + +static DRFLAC_INLINE drflac_uint64 drflac__be2host_64(drflac_uint64 n) +{ +#ifdef __linux__ + return be64toh(n); +#else + if (drflac__is_little_endian()) { + return drflac__swap_endian_uint64(n); + } + + return n; +#endif +} + + +static DRFLAC_INLINE drflac_uint32 drflac__le2host_32(drflac_uint32 n) +{ +#ifdef __linux__ + return le32toh(n); +#else + if (!drflac__is_little_endian()) { + return drflac__swap_endian_uint32(n); + } + + return n; +#endif +} + + +static DRFLAC_INLINE drflac_uint32 drflac__unsynchsafe_32(drflac_uint32 n) +{ + drflac_uint32 result = 0; + result |= (n & 0x7F000000) >> 3; + result |= (n & 0x007F0000) >> 2; + result |= (n & 0x00007F00) >> 1; + result |= (n & 0x0000007F) >> 0; + + return result; +} + + + +// The CRC code below is based on this document: http://zlib.net/crc_v3.txt +static drflac_uint8 drflac__crc8_table[] = { + 0x00, 0x07, 0x0E, 0x09, 0x1C, 0x1B, 0x12, 0x15, 0x38, 0x3F, 0x36, 0x31, 0x24, 0x23, 0x2A, 0x2D, + 0x70, 0x77, 0x7E, 0x79, 0x6C, 0x6B, 0x62, 0x65, 0x48, 0x4F, 0x46, 0x41, 0x54, 0x53, 0x5A, 0x5D, + 0xE0, 0xE7, 0xEE, 0xE9, 0xFC, 0xFB, 0xF2, 0xF5, 0xD8, 0xDF, 0xD6, 0xD1, 0xC4, 0xC3, 0xCA, 0xCD, + 0x90, 0x97, 0x9E, 0x99, 0x8C, 0x8B, 0x82, 0x85, 0xA8, 0xAF, 0xA6, 0xA1, 0xB4, 0xB3, 0xBA, 0xBD, + 0xC7, 0xC0, 0xC9, 0xCE, 0xDB, 0xDC, 0xD5, 0xD2, 0xFF, 0xF8, 0xF1, 0xF6, 0xE3, 0xE4, 0xED, 0xEA, + 0xB7, 0xB0, 0xB9, 0xBE, 0xAB, 0xAC, 0xA5, 0xA2, 0x8F, 0x88, 0x81, 0x86, 0x93, 0x94, 0x9D, 0x9A, + 0x27, 0x20, 0x29, 0x2E, 0x3B, 0x3C, 0x35, 0x32, 0x1F, 0x18, 0x11, 0x16, 0x03, 0x04, 0x0D, 0x0A, + 0x57, 0x50, 0x59, 0x5E, 0x4B, 0x4C, 0x45, 0x42, 0x6F, 0x68, 0x61, 0x66, 0x73, 0x74, 0x7D, 0x7A, + 0x89, 0x8E, 0x87, 0x80, 0x95, 0x92, 0x9B, 0x9C, 0xB1, 0xB6, 0xBF, 0xB8, 0xAD, 0xAA, 0xA3, 0xA4, + 0xF9, 0xFE, 0xF7, 0xF0, 0xE5, 0xE2, 0xEB, 0xEC, 0xC1, 0xC6, 0xCF, 0xC8, 0xDD, 0xDA, 0xD3, 0xD4, + 0x69, 0x6E, 0x67, 0x60, 0x75, 0x72, 0x7B, 0x7C, 0x51, 0x56, 0x5F, 0x58, 0x4D, 0x4A, 0x43, 0x44, + 0x19, 0x1E, 0x17, 0x10, 0x05, 0x02, 0x0B, 0x0C, 0x21, 0x26, 0x2F, 0x28, 0x3D, 0x3A, 0x33, 0x34, + 0x4E, 0x49, 0x40, 0x47, 0x52, 0x55, 0x5C, 0x5B, 0x76, 0x71, 0x78, 0x7F, 0x6A, 0x6D, 0x64, 0x63, + 0x3E, 0x39, 0x30, 0x37, 0x22, 0x25, 0x2C, 0x2B, 0x06, 0x01, 0x08, 0x0F, 0x1A, 0x1D, 0x14, 0x13, + 0xAE, 0xA9, 0xA0, 0xA7, 0xB2, 0xB5, 0xBC, 0xBB, 0x96, 0x91, 0x98, 0x9F, 0x8A, 0x8D, 0x84, 0x83, + 0xDE, 0xD9, 0xD0, 0xD7, 0xC2, 0xC5, 0xCC, 0xCB, 0xE6, 0xE1, 0xE8, 0xEF, 0xFA, 0xFD, 0xF4, 0xF3 +}; + +static drflac_uint16 drflac__crc16_table[] = { + 0x0000, 0x8005, 0x800F, 0x000A, 0x801B, 0x001E, 0x0014, 0x8011, + 0x8033, 0x0036, 0x003C, 0x8039, 0x0028, 0x802D, 0x8027, 0x0022, + 0x8063, 0x0066, 0x006C, 0x8069, 0x0078, 0x807D, 0x8077, 0x0072, + 0x0050, 0x8055, 0x805F, 0x005A, 0x804B, 0x004E, 0x0044, 0x8041, + 0x80C3, 0x00C6, 0x00CC, 0x80C9, 0x00D8, 0x80DD, 0x80D7, 0x00D2, + 0x00F0, 0x80F5, 0x80FF, 0x00FA, 0x80EB, 0x00EE, 0x00E4, 0x80E1, + 0x00A0, 0x80A5, 0x80AF, 0x00AA, 0x80BB, 0x00BE, 0x00B4, 0x80B1, + 0x8093, 0x0096, 0x009C, 0x8099, 0x0088, 0x808D, 0x8087, 0x0082, + 0x8183, 0x0186, 0x018C, 0x8189, 0x0198, 0x819D, 0x8197, 0x0192, + 0x01B0, 0x81B5, 0x81BF, 0x01BA, 0x81AB, 0x01AE, 0x01A4, 0x81A1, + 0x01E0, 0x81E5, 0x81EF, 0x01EA, 0x81FB, 0x01FE, 0x01F4, 0x81F1, + 0x81D3, 0x01D6, 0x01DC, 0x81D9, 0x01C8, 0x81CD, 0x81C7, 0x01C2, + 0x0140, 0x8145, 0x814F, 0x014A, 0x815B, 0x015E, 0x0154, 0x8151, + 0x8173, 0x0176, 0x017C, 0x8179, 0x0168, 0x816D, 0x8167, 0x0162, + 0x8123, 0x0126, 0x012C, 0x8129, 0x0138, 0x813D, 0x8137, 0x0132, + 0x0110, 0x8115, 0x811F, 0x011A, 0x810B, 0x010E, 0x0104, 0x8101, + 0x8303, 0x0306, 0x030C, 0x8309, 0x0318, 0x831D, 0x8317, 0x0312, + 0x0330, 0x8335, 0x833F, 0x033A, 0x832B, 0x032E, 0x0324, 0x8321, + 0x0360, 0x8365, 0x836F, 0x036A, 0x837B, 0x037E, 0x0374, 0x8371, + 0x8353, 0x0356, 0x035C, 0x8359, 0x0348, 0x834D, 0x8347, 0x0342, + 0x03C0, 0x83C5, 0x83CF, 0x03CA, 0x83DB, 0x03DE, 0x03D4, 0x83D1, + 0x83F3, 0x03F6, 0x03FC, 0x83F9, 0x03E8, 0x83ED, 0x83E7, 0x03E2, + 0x83A3, 0x03A6, 0x03AC, 0x83A9, 0x03B8, 0x83BD, 0x83B7, 0x03B2, + 0x0390, 0x8395, 0x839F, 0x039A, 0x838B, 0x038E, 0x0384, 0x8381, + 0x0280, 0x8285, 0x828F, 0x028A, 0x829B, 0x029E, 0x0294, 0x8291, + 0x82B3, 0x02B6, 0x02BC, 0x82B9, 0x02A8, 0x82AD, 0x82A7, 0x02A2, + 0x82E3, 0x02E6, 0x02EC, 0x82E9, 0x02F8, 0x82FD, 0x82F7, 0x02F2, + 0x02D0, 0x82D5, 0x82DF, 0x02DA, 0x82CB, 0x02CE, 0x02C4, 0x82C1, + 0x8243, 0x0246, 0x024C, 0x8249, 0x0258, 0x825D, 0x8257, 0x0252, + 0x0270, 0x8275, 0x827F, 0x027A, 0x826B, 0x026E, 0x0264, 0x8261, + 0x0220, 0x8225, 0x822F, 0x022A, 0x823B, 0x023E, 0x0234, 0x8231, + 0x8213, 0x0216, 0x021C, 0x8219, 0x0208, 0x820D, 0x8207, 0x0202 +}; + +static DRFLAC_INLINE drflac_uint8 drflac_crc8_byte(drflac_uint8 crc, drflac_uint8 data) +{ + return drflac__crc8_table[crc ^ data]; +} + +static DRFLAC_INLINE drflac_uint8 drflac_crc8(drflac_uint8 crc, drflac_uint32 data, drflac_uint32 count) +{ + drflac_assert(count <= 32); + +#ifdef DR_FLAC_NO_CRC + (void)crc; + (void)data; + (void)count; + return 0; +#else +#if 0 + // REFERENCE (use of this implementation requires an explicit flush by doing "drflac_crc8(crc, 0, 8);") + drflac_uint8 p = 0x07; + for (int i = count-1; i >= 0; --i) { + drflac_uint8 bit = (data & (1 << i)) >> i; + if (crc & 0x80) { + crc = ((crc << 1) | bit) ^ p; + } else { + crc = ((crc << 1) | bit); + } + } + return crc; +#else + drflac_uint32 wholeBytes = count >> 3; + drflac_uint32 leftoverBits = count - (wholeBytes*8); + + static drflac_uint64 leftoverDataMaskTable[8] = { + 0x00, 0x01, 0x03, 0x07, 0x0F, 0x1F, 0x3F, 0x7F + }; + drflac_uint64 leftoverDataMask = leftoverDataMaskTable[leftoverBits]; + + switch (wholeBytes) { + case 4: crc = drflac_crc8_byte(crc, (drflac_uint8)((data & (0xFF000000UL << leftoverBits)) >> (24 + leftoverBits))); + case 3: crc = drflac_crc8_byte(crc, (drflac_uint8)((data & (0x00FF0000UL << leftoverBits)) >> (16 + leftoverBits))); + case 2: crc = drflac_crc8_byte(crc, (drflac_uint8)((data & (0x0000FF00UL << leftoverBits)) >> ( 8 + leftoverBits))); + case 1: crc = drflac_crc8_byte(crc, (drflac_uint8)((data & (0x000000FFUL << leftoverBits)) >> ( 0 + leftoverBits))); + case 0: if (leftoverBits > 0) crc = (crc << leftoverBits) ^ drflac__crc8_table[(crc >> (8 - leftoverBits)) ^ (data & leftoverDataMask)]; + } + return crc; +#endif +#endif +} + +static DRFLAC_INLINE drflac_uint16 drflac_crc16_byte(drflac_uint16 crc, drflac_uint8 data) +{ + return (crc << 8) ^ drflac__crc16_table[(drflac_uint8)(crc >> 8) ^ data]; +} + +static DRFLAC_INLINE drflac_uint16 drflac_crc16_bytes(drflac_uint16 crc, drflac_cache_t data, drflac_uint32 byteCount) +{ + switch (byteCount) + { +#ifdef DRFLAC_64BIT + case 8: crc = drflac_crc16_byte(crc, (drflac_uint8)((data >> 56) & 0xFF)); + case 7: crc = drflac_crc16_byte(crc, (drflac_uint8)((data >> 48) & 0xFF)); + case 6: crc = drflac_crc16_byte(crc, (drflac_uint8)((data >> 40) & 0xFF)); + case 5: crc = drflac_crc16_byte(crc, (drflac_uint8)((data >> 32) & 0xFF)); +#endif + case 4: crc = drflac_crc16_byte(crc, (drflac_uint8)((data >> 24) & 0xFF)); + case 3: crc = drflac_crc16_byte(crc, (drflac_uint8)((data >> 16) & 0xFF)); + case 2: crc = drflac_crc16_byte(crc, (drflac_uint8)((data >> 8) & 0xFF)); + case 1: crc = drflac_crc16_byte(crc, (drflac_uint8)((data >> 0) & 0xFF)); + } + + return crc; +} + +static DRFLAC_INLINE drflac_uint16 drflac_crc16__32bit(drflac_uint16 crc, drflac_uint32 data, drflac_uint32 count) +{ + drflac_assert(count <= 64); + +#ifdef DR_FLAC_NO_CRC + (void)crc; + (void)data; + (void)count; + return 0; +#else +#if 0 + // REFERENCE (use of this implementation requires an explicit flush by doing "drflac_crc16(crc, 0, 16);") + drflac_uint16 p = 0x8005; + for (int i = count-1; i >= 0; --i) { + drflac_uint16 bit = (data & (1ULL << i)) >> i; + if (r & 0x8000) { + r = ((r << 1) | bit) ^ p; + } else { + r = ((r << 1) | bit); + } + } + + return crc; +#else + drflac_uint32 wholeBytes = count >> 3; + drflac_uint32 leftoverBits = count - (wholeBytes*8); + + static drflac_uint64 leftoverDataMaskTable[8] = { + 0x00, 0x01, 0x03, 0x07, 0x0F, 0x1F, 0x3F, 0x7F + }; + drflac_uint64 leftoverDataMask = leftoverDataMaskTable[leftoverBits]; + + switch (wholeBytes) { + default: + case 4: crc = drflac_crc16_byte(crc, (drflac_uint8)((data & (0xFF000000UL << leftoverBits)) >> (24 + leftoverBits))); + case 3: crc = drflac_crc16_byte(crc, (drflac_uint8)((data & (0x00FF0000UL << leftoverBits)) >> (16 + leftoverBits))); + case 2: crc = drflac_crc16_byte(crc, (drflac_uint8)((data & (0x0000FF00UL << leftoverBits)) >> ( 8 + leftoverBits))); + case 1: crc = drflac_crc16_byte(crc, (drflac_uint8)((data & (0x000000FFUL << leftoverBits)) >> ( 0 + leftoverBits))); + case 0: if (leftoverBits > 0) crc = (crc << leftoverBits) ^ drflac__crc16_table[(crc >> (16 - leftoverBits)) ^ (data & leftoverDataMask)]; + } + return crc; +#endif +#endif +} + +static DRFLAC_INLINE drflac_uint16 drflac_crc16__64bit(drflac_uint16 crc, drflac_uint64 data, drflac_uint32 count) +{ + drflac_assert(count <= 64); + +#ifdef DR_FLAC_NO_CRC + (void)crc; + (void)data; + (void)count; + return 0; +#else + drflac_uint32 wholeBytes = count >> 3; + drflac_uint32 leftoverBits = count - (wholeBytes*8); + + static drflac_uint64 leftoverDataMaskTable[8] = { + 0x00, 0x01, 0x03, 0x07, 0x0F, 0x1F, 0x3F, 0x7F + }; + drflac_uint64 leftoverDataMask = leftoverDataMaskTable[leftoverBits]; + + switch (wholeBytes) { + default: + case 8: crc = drflac_crc16_byte(crc, (drflac_uint8)((data & ((drflac_uint64)0xFF00000000000000 << leftoverBits)) >> (56 + leftoverBits))); + case 7: crc = drflac_crc16_byte(crc, (drflac_uint8)((data & ((drflac_uint64)0x00FF000000000000 << leftoverBits)) >> (48 + leftoverBits))); + case 6: crc = drflac_crc16_byte(crc, (drflac_uint8)((data & ((drflac_uint64)0x0000FF0000000000 << leftoverBits)) >> (40 + leftoverBits))); + case 5: crc = drflac_crc16_byte(crc, (drflac_uint8)((data & ((drflac_uint64)0x000000FF00000000 << leftoverBits)) >> (32 + leftoverBits))); + case 4: crc = drflac_crc16_byte(crc, (drflac_uint8)((data & ((drflac_uint64)0x00000000FF000000 << leftoverBits)) >> (24 + leftoverBits))); + case 3: crc = drflac_crc16_byte(crc, (drflac_uint8)((data & ((drflac_uint64)0x0000000000FF0000 << leftoverBits)) >> (16 + leftoverBits))); + case 2: crc = drflac_crc16_byte(crc, (drflac_uint8)((data & ((drflac_uint64)0x000000000000FF00 << leftoverBits)) >> ( 8 + leftoverBits))); + case 1: crc = drflac_crc16_byte(crc, (drflac_uint8)((data & ((drflac_uint64)0x00000000000000FF << leftoverBits)) >> ( 0 + leftoverBits))); + case 0: if (leftoverBits > 0) crc = (crc << leftoverBits) ^ drflac__crc16_table[(crc >> (16 - leftoverBits)) ^ (data & leftoverDataMask)]; + } + return crc; +#endif +} + + +static DRFLAC_INLINE drflac_uint16 drflac_crc16(drflac_uint16 crc, drflac_cache_t data, drflac_uint32 count) +{ +#ifdef DRFLAC_64BIT + return drflac_crc16__64bit(crc, data, count); +#else + return drflac_crc16__32bit(crc, data, count); +#endif +} + + +#ifdef DRFLAC_64BIT +#define drflac__be2host__cache_line drflac__be2host_64 +#else +#define drflac__be2host__cache_line drflac__be2host_32 +#endif + +// BIT READING ATTEMPT #2 +// +// This uses a 32- or 64-bit bit-shifted cache - as bits are read, the cache is shifted such that the first valid bit is sitting +// on the most significant bit. It uses the notion of an L1 and L2 cache (borrowed from CPU architecture), where the L1 cache +// is a 32- or 64-bit unsigned integer (depending on whether or not a 32- or 64-bit build is being compiled) and the L2 is an +// array of "cache lines", with each cache line being the same size as the L1. The L2 is a buffer of about 4KB and is where data +// from onRead() is read into. +#define DRFLAC_CACHE_L1_SIZE_BYTES(bs) (sizeof((bs)->cache)) +#define DRFLAC_CACHE_L1_SIZE_BITS(bs) (sizeof((bs)->cache)*8) +#define DRFLAC_CACHE_L1_BITS_REMAINING(bs) (DRFLAC_CACHE_L1_SIZE_BITS(bs) - (bs)->consumedBits) +#define DRFLAC_CACHE_L1_SELECTION_MASK(_bitCount) (~((~(drflac_cache_t)0) >> (_bitCount))) +#define DRFLAC_CACHE_L1_SELECTION_SHIFT(bs, _bitCount) (DRFLAC_CACHE_L1_SIZE_BITS(bs) - (_bitCount)) +#define DRFLAC_CACHE_L1_SELECT(bs, _bitCount) (((bs)->cache) & DRFLAC_CACHE_L1_SELECTION_MASK(_bitCount)) +#define DRFLAC_CACHE_L1_SELECT_AND_SHIFT(bs, _bitCount) (DRFLAC_CACHE_L1_SELECT((bs), (_bitCount)) >> DRFLAC_CACHE_L1_SELECTION_SHIFT((bs), (_bitCount))) +#define DRFLAC_CACHE_L1_SELECT_AND_SHIFT_SAFE(bs, _bitCount)(DRFLAC_CACHE_L1_SELECT((bs), (_bitCount)) >> (DRFLAC_CACHE_L1_SELECTION_SHIFT((bs), (_bitCount)) & (DRFLAC_CACHE_L1_SIZE_BITS(bs)-1))) +#define DRFLAC_CACHE_L2_SIZE_BYTES(bs) (sizeof((bs)->cacheL2)) +#define DRFLAC_CACHE_L2_LINE_COUNT(bs) (DRFLAC_CACHE_L2_SIZE_BYTES(bs) / sizeof((bs)->cacheL2[0])) +#define DRFLAC_CACHE_L2_LINES_REMAINING(bs) (DRFLAC_CACHE_L2_LINE_COUNT(bs) - (bs)->nextL2Line) + + +#ifndef DR_FLAC_NO_CRC +static DRFLAC_INLINE void drflac__reset_crc16(drflac_bs* bs) +{ + bs->crc16 = 0; + bs->crc16CacheIgnoredBytes = bs->consumedBits >> 3; +} + +static DRFLAC_INLINE void drflac__update_crc16(drflac_bs* bs) +{ + bs->crc16 = drflac_crc16_bytes(bs->crc16, bs->crc16Cache, DRFLAC_CACHE_L1_SIZE_BYTES(bs) - bs->crc16CacheIgnoredBytes); + bs->crc16CacheIgnoredBytes = 0; +} + +static DRFLAC_INLINE drflac_uint16 drflac__flush_crc16(drflac_bs* bs) +{ + // We should never be flushing in a situation where we are not aligned on a byte boundary. + drflac_assert((DRFLAC_CACHE_L1_BITS_REMAINING(bs) & 7) == 0); + + // The bits that were read from the L1 cache need to be accumulated. The number of bytes needing to be accumulated is determined + // by the number of bits that have been consumed. + if (DRFLAC_CACHE_L1_BITS_REMAINING(bs) == 0) { + drflac__update_crc16(bs); + } else { + // We only accumulate the consumed bits. + bs->crc16 = drflac_crc16_bytes(bs->crc16, bs->crc16Cache >> DRFLAC_CACHE_L1_BITS_REMAINING(bs), (bs->consumedBits >> 3) - bs->crc16CacheIgnoredBytes); + + // The bits that we just accumulated should never be accumulated again. We need to keep track of how many bytes were accumulated + // so we can handle that later. + bs->crc16CacheIgnoredBytes = bs->consumedBits >> 3; + } + + return bs->crc16; +} +#endif + +static DRFLAC_INLINE drflac_bool32 drflac__reload_l1_cache_from_l2(drflac_bs* bs) +{ + // Fast path. Try loading straight from L2. + if (bs->nextL2Line < DRFLAC_CACHE_L2_LINE_COUNT(bs)) { + bs->cache = bs->cacheL2[bs->nextL2Line++]; + return DRFLAC_TRUE; + } + + // If we get here it means we've run out of data in the L2 cache. We'll need to fetch more from the client, if there's + // any left. + if (bs->unalignedByteCount > 0) { + return DRFLAC_FALSE; // If we have any unaligned bytes it means there's no more aligned bytes left in the client. + } + + size_t bytesRead = bs->onRead(bs->pUserData, bs->cacheL2, DRFLAC_CACHE_L2_SIZE_BYTES(bs)); + + bs->nextL2Line = 0; + if (bytesRead == DRFLAC_CACHE_L2_SIZE_BYTES(bs)) { + bs->cache = bs->cacheL2[bs->nextL2Line++]; + return DRFLAC_TRUE; + } + + + // If we get here it means we were unable to retrieve enough data to fill the entire L2 cache. It probably + // means we've just reached the end of the file. We need to move the valid data down to the end of the buffer + // and adjust the index of the next line accordingly. Also keep in mind that the L2 cache must be aligned to + // the size of the L1 so we'll need to seek backwards by any misaligned bytes. + size_t alignedL1LineCount = bytesRead / DRFLAC_CACHE_L1_SIZE_BYTES(bs); + + // We need to keep track of any unaligned bytes for later use. + bs->unalignedByteCount = bytesRead - (alignedL1LineCount * DRFLAC_CACHE_L1_SIZE_BYTES(bs)); + if (bs->unalignedByteCount > 0) { + bs->unalignedCache = bs->cacheL2[alignedL1LineCount]; + } + + if (alignedL1LineCount > 0) { + size_t offset = DRFLAC_CACHE_L2_LINE_COUNT(bs) - alignedL1LineCount; + for (size_t i = alignedL1LineCount; i > 0; --i) { + bs->cacheL2[i-1 + offset] = bs->cacheL2[i-1]; + } + + bs->nextL2Line = (drflac_uint32)offset; + bs->cache = bs->cacheL2[bs->nextL2Line++]; + return DRFLAC_TRUE; + } else { + // If we get into this branch it means we weren't able to load any L1-aligned data. + bs->nextL2Line = DRFLAC_CACHE_L2_LINE_COUNT(bs); + return DRFLAC_FALSE; + } +} + +static drflac_bool32 drflac__reload_cache(drflac_bs* bs) +{ +#ifndef DR_FLAC_NO_CRC + drflac__update_crc16(bs); +#endif + + // Fast path. Try just moving the next value in the L2 cache to the L1 cache. + if (drflac__reload_l1_cache_from_l2(bs)) { + bs->cache = drflac__be2host__cache_line(bs->cache); + bs->consumedBits = 0; +#ifndef DR_FLAC_NO_CRC + bs->crc16Cache = bs->cache; +#endif + return DRFLAC_TRUE; + } + + // Slow path. + + // If we get here it means we have failed to load the L1 cache from the L2. Likely we've just reached the end of the stream and the last + // few bytes did not meet the alignment requirements for the L2 cache. In this case we need to fall back to a slower path and read the + // data from the unaligned cache. + size_t bytesRead = bs->unalignedByteCount; + if (bytesRead == 0) { + bs->consumedBits = DRFLAC_CACHE_L1_SIZE_BITS(bs); // <-- The stream has been exhausted, so marked the bits as consumed. + return DRFLAC_FALSE; + } + + drflac_assert(bytesRead < DRFLAC_CACHE_L1_SIZE_BYTES(bs)); + bs->consumedBits = (drflac_uint32)(DRFLAC_CACHE_L1_SIZE_BYTES(bs) - bytesRead) * 8; + + bs->cache = drflac__be2host__cache_line(bs->unalignedCache); + bs->cache &= DRFLAC_CACHE_L1_SELECTION_MASK(DRFLAC_CACHE_L1_BITS_REMAINING(bs)); // <-- Make sure the consumed bits are always set to zero. Other parts of the library depend on this property. + bs->unalignedByteCount = 0; // <-- At this point the unaligned bytes have been moved into the cache and we thus have no more unaligned bytes. + +#ifndef DR_FLAC_NO_CRC + bs->crc16Cache = bs->cache >> bs->consumedBits; + bs->crc16CacheIgnoredBytes = bs->consumedBits >> 3; +#endif + return DRFLAC_TRUE; +} + +static void drflac__reset_cache(drflac_bs* bs) +{ + bs->nextL2Line = DRFLAC_CACHE_L2_LINE_COUNT(bs); // <-- This clears the L2 cache. + bs->consumedBits = DRFLAC_CACHE_L1_SIZE_BITS(bs); // <-- This clears the L1 cache. + bs->cache = 0; + bs->unalignedByteCount = 0; // <-- This clears the trailing unaligned bytes. + bs->unalignedCache = 0; + +#ifndef DR_FLAC_NO_CRC + bs->crc16Cache = 0; + bs->crc16CacheIgnoredBytes = 0; +#endif +} + + +static DRFLAC_INLINE drflac_bool32 drflac__read_uint32(drflac_bs* bs, unsigned int bitCount, drflac_uint32* pResultOut) +{ + drflac_assert(bs != NULL); + drflac_assert(pResultOut != NULL); + drflac_assert(bitCount > 0); + drflac_assert(bitCount <= 32); + + if (bs->consumedBits == DRFLAC_CACHE_L1_SIZE_BITS(bs)) { + if (!drflac__reload_cache(bs)) { + return DRFLAC_FALSE; + } + } + + if (bitCount <= DRFLAC_CACHE_L1_BITS_REMAINING(bs)) { + // If we want to load all 32-bits from a 32-bit cache we need to do it slightly differently because we can't do + // a 32-bit shift on a 32-bit integer. This will never be the case on 64-bit caches, so we can have a slightly + // more optimal solution for this. +#ifdef DRFLAC_64BIT + *pResultOut = (drflac_uint32)DRFLAC_CACHE_L1_SELECT_AND_SHIFT(bs, bitCount); + bs->consumedBits += bitCount; + bs->cache <<= bitCount; +#else + if (bitCount < DRFLAC_CACHE_L1_SIZE_BITS(bs)) { + *pResultOut = (drflac_uint32)DRFLAC_CACHE_L1_SELECT_AND_SHIFT(bs, bitCount); + bs->consumedBits += bitCount; + bs->cache <<= bitCount; + } else { + // Cannot shift by 32-bits, so need to do it differently. + *pResultOut = (drflac_uint32)bs->cache; + bs->consumedBits = DRFLAC_CACHE_L1_SIZE_BITS(bs); + bs->cache = 0; + } +#endif + + return DRFLAC_TRUE; + } else { + // It straddles the cached data. It will never cover more than the next chunk. We just read the number in two parts and combine them. + drflac_uint32 bitCountHi = DRFLAC_CACHE_L1_BITS_REMAINING(bs); + drflac_uint32 bitCountLo = bitCount - bitCountHi; + drflac_uint32 resultHi = (drflac_uint32)DRFLAC_CACHE_L1_SELECT_AND_SHIFT(bs, bitCountHi); + + if (!drflac__reload_cache(bs)) { + return DRFLAC_FALSE; + } + + *pResultOut = (resultHi << bitCountLo) | (drflac_uint32)DRFLAC_CACHE_L1_SELECT_AND_SHIFT(bs, bitCountLo); + bs->consumedBits += bitCountLo; + bs->cache <<= bitCountLo; + return DRFLAC_TRUE; + } +} + +static drflac_bool32 drflac__read_int32(drflac_bs* bs, unsigned int bitCount, drflac_int32* pResult) +{ + drflac_assert(bs != NULL); + drflac_assert(pResult != NULL); + drflac_assert(bitCount > 0); + drflac_assert(bitCount <= 32); + + drflac_uint32 result; + if (!drflac__read_uint32(bs, bitCount, &result)) { + return DRFLAC_FALSE; + } + + drflac_uint32 signbit = ((result >> (bitCount-1)) & 0x01); + result |= (~signbit + 1) << bitCount; + + *pResult = (drflac_int32)result; + return DRFLAC_TRUE; +} + +#ifdef DRFLAC_64BIT +static drflac_bool32 drflac__read_uint64(drflac_bs* bs, unsigned int bitCount, drflac_uint64* pResultOut) +{ + drflac_assert(bitCount <= 64); + drflac_assert(bitCount > 32); + + drflac_uint32 resultHi; + if (!drflac__read_uint32(bs, bitCount - 32, &resultHi)) { + return DRFLAC_FALSE; + } + + drflac_uint32 resultLo; + if (!drflac__read_uint32(bs, 32, &resultLo)) { + return DRFLAC_FALSE; + } + + *pResultOut = (((drflac_uint64)resultHi) << 32) | ((drflac_uint64)resultLo); + return DRFLAC_TRUE; +} +#endif + +// Function below is unused, but leaving it here in case I need to quickly add it again. +#if 0 +static drflac_bool32 drflac__read_int64(drflac_bs* bs, unsigned int bitCount, drflac_int64* pResultOut) +{ + drflac_assert(bitCount <= 64); + + drflac_uint64 result; + if (!drflac__read_uint64(bs, bitCount, &result)) { + return DRFLAC_FALSE; + } + + drflac_uint64 signbit = ((result >> (bitCount-1)) & 0x01); + result |= (~signbit + 1) << bitCount; + + *pResultOut = (drflac_int64)result; + return DRFLAC_TRUE; +} +#endif + +static drflac_bool32 drflac__read_uint16(drflac_bs* bs, unsigned int bitCount, drflac_uint16* pResult) +{ + drflac_assert(bs != NULL); + drflac_assert(pResult != NULL); + drflac_assert(bitCount > 0); + drflac_assert(bitCount <= 16); + + drflac_uint32 result; + if (!drflac__read_uint32(bs, bitCount, &result)) { + return DRFLAC_FALSE; + } + + *pResult = (drflac_uint16)result; + return DRFLAC_TRUE; +} + +#if 0 +static drflac_bool32 drflac__read_int16(drflac_bs* bs, unsigned int bitCount, drflac_int16* pResult) +{ + drflac_assert(bs != NULL); + drflac_assert(pResult != NULL); + drflac_assert(bitCount > 0); + drflac_assert(bitCount <= 16); + + drflac_int32 result; + if (!drflac__read_int32(bs, bitCount, &result)) { + return DRFLAC_FALSE; + } + + *pResult = (drflac_int16)result; + return DRFLAC_TRUE; +} +#endif + +static drflac_bool32 drflac__read_uint8(drflac_bs* bs, unsigned int bitCount, drflac_uint8* pResult) +{ + drflac_assert(bs != NULL); + drflac_assert(pResult != NULL); + drflac_assert(bitCount > 0); + drflac_assert(bitCount <= 8); + + drflac_uint32 result; + if (!drflac__read_uint32(bs, bitCount, &result)) { + return DRFLAC_FALSE; + } + + *pResult = (drflac_uint8)result; + return DRFLAC_TRUE; +} + +static drflac_bool32 drflac__read_int8(drflac_bs* bs, unsigned int bitCount, drflac_int8* pResult) +{ + drflac_assert(bs != NULL); + drflac_assert(pResult != NULL); + drflac_assert(bitCount > 0); + drflac_assert(bitCount <= 8); + + drflac_int32 result; + if (!drflac__read_int32(bs, bitCount, &result)) { + return DRFLAC_FALSE; + } + + *pResult = (drflac_int8)result; + return DRFLAC_TRUE; +} + + +static drflac_bool32 drflac__seek_bits(drflac_bs* bs, size_t bitsToSeek) +{ + if (bitsToSeek <= DRFLAC_CACHE_L1_BITS_REMAINING(bs)) { + bs->consumedBits += (drflac_uint32)bitsToSeek; + bs->cache <<= bitsToSeek; + return DRFLAC_TRUE; + } else { + // It straddles the cached data. This function isn't called too frequently so I'm favouring simplicity here. + bitsToSeek -= DRFLAC_CACHE_L1_BITS_REMAINING(bs); + bs->consumedBits += DRFLAC_CACHE_L1_BITS_REMAINING(bs); + bs->cache = 0; + + // Simple case. Seek in groups of the same number as bits that fit within a cache line. +#ifdef DRFLAC_64BIT + while (bitsToSeek >= DRFLAC_CACHE_L1_SIZE_BITS(bs)) { + drflac_uint64 bin; + if (!drflac__read_uint64(bs, DRFLAC_CACHE_L1_SIZE_BITS(bs), &bin)) { + return DRFLAC_FALSE; + } + bitsToSeek -= DRFLAC_CACHE_L1_SIZE_BITS(bs); + } +#else + while (bitsToSeek >= DRFLAC_CACHE_L1_SIZE_BITS(bs)) { + drflac_uint32 bin; + if (!drflac__read_uint32(bs, DRFLAC_CACHE_L1_SIZE_BITS(bs), &bin)) { + return DRFLAC_FALSE; + } + bitsToSeek -= DRFLAC_CACHE_L1_SIZE_BITS(bs); + } +#endif + + // Whole leftover bytes. + while (bitsToSeek >= 8) { + drflac_uint8 bin; + if (!drflac__read_uint8(bs, 8, &bin)) { + return DRFLAC_FALSE; + } + bitsToSeek -= 8; + } + + // Leftover bits. + if (bitsToSeek > 0) { + drflac_uint8 bin; + if (!drflac__read_uint8(bs, (drflac_uint32)bitsToSeek, &bin)) { + return DRFLAC_FALSE; + } + bitsToSeek = 0; // <-- Necessary for the assert below. + } + + drflac_assert(bitsToSeek == 0); + return DRFLAC_TRUE; + } +} + + +// This function moves the bit streamer to the first bit after the sync code (bit 15 of the of the frame header). It will also update the CRC-16. +static drflac_bool32 drflac__find_and_seek_to_next_sync_code(drflac_bs* bs) +{ + drflac_assert(bs != NULL); + + // The sync code is always aligned to 8 bits. This is convenient for us because it means we can do byte-aligned movements. The first + // thing to do is align to the next byte. + if (!drflac__seek_bits(bs, DRFLAC_CACHE_L1_BITS_REMAINING(bs) & 7)) { + return DRFLAC_FALSE; + } + + for (;;) { +#ifndef DR_FLAC_NO_CRC + drflac__reset_crc16(bs); +#endif + + drflac_uint8 hi; + if (!drflac__read_uint8(bs, 8, &hi)) { + return DRFLAC_FALSE; + } + + if (hi == 0xFF) { + drflac_uint8 lo; + if (!drflac__read_uint8(bs, 6, &lo)) { + return DRFLAC_FALSE; + } + + if (lo == 0x3E) { + return DRFLAC_TRUE; + } else { + if (!drflac__seek_bits(bs, DRFLAC_CACHE_L1_BITS_REMAINING(bs) & 7)) { + return DRFLAC_FALSE; + } + } + } + } + + // Should never get here. + //return DRFLAC_FALSE; +} + + +#if !defined(DR_FLAC_NO_SIMD) && defined(DRFLAC_HAS_LZCNT_INTRINSIC) +#define DRFLAC_IMPLEMENT_CLZ_LZCNT +#endif +#if defined(_MSC_VER) && _MSC_VER >= 1400 && (defined(DRFLAC_X64) || defined(DRFLAC_X86)) +#define DRFLAC_IMPLEMENT_CLZ_MSVC +#endif + +static DRFLAC_INLINE drflac_uint32 drflac__clz_software(drflac_cache_t x) +{ + if (x == 0) { + return sizeof(x)*8; + } + + static drflac_uint32 clz_table_4[] = { + 0, + 4, + 3, 3, + 2, 2, 2, 2, + 1, 1, 1, 1, 1, 1, 1, 1 + }; + + drflac_uint32 n = clz_table_4[x >> (sizeof(x)*8 - 4)]; + if (n == 0) { +#ifdef DRFLAC_64BIT + if ((x & 0xFFFFFFFF00000000ULL) == 0) { n = 32; x <<= 32; } + if ((x & 0xFFFF000000000000ULL) == 0) { n += 16; x <<= 16; } + if ((x & 0xFF00000000000000ULL) == 0) { n += 8; x <<= 8; } + if ((x & 0xF000000000000000ULL) == 0) { n += 4; x <<= 4; } +#else + if ((x & 0xFFFF0000) == 0) { n = 16; x <<= 16; } + if ((x & 0xFF000000) == 0) { n += 8; x <<= 8; } + if ((x & 0xF0000000) == 0) { n += 4; x <<= 4; } +#endif + n += clz_table_4[x >> (sizeof(x)*8 - 4)]; + } + + return n - 1; +} + +#ifdef DRFLAC_IMPLEMENT_CLZ_LZCNT +static DRFLAC_INLINE drflac_bool32 drflac__is_lzcnt_supported() +{ + // If the compiler itself does not support the intrinsic then we'll need to return false. +#ifdef DRFLAC_HAS_LZCNT_INTRINSIC + return drflac__gIsLZCNTSupported; +#else + return DRFLAC_FALSE; +#endif +} + +static DRFLAC_INLINE drflac_uint32 drflac__clz_lzcnt(drflac_cache_t x) +{ +#if defined(_MSC_VER) && !defined(__clang__) + #ifdef DRFLAC_64BIT + return (drflac_uint32)__lzcnt64(x); + #else + return (drflac_uint32)__lzcnt(x); + #endif +#else + #if defined(__GNUC__) || defined(__clang__) + if (x == 0) { + return sizeof(x)*8; + } + #ifdef DRFLAC_64BIT + return (drflac_uint32)__builtin_clzll((unsigned long long)x); + #else + return (drflac_uint32)__builtin_clzl((unsigned long)x); + #endif + #else + // Unsupported compiler. + #error "This compiler does not support the lzcnt intrinsic." + #endif +#endif +} +#endif + +#ifdef DRFLAC_IMPLEMENT_CLZ_MSVC +#include // For BitScanReverse(). + +static DRFLAC_INLINE drflac_uint32 drflac__clz_msvc(drflac_cache_t x) +{ + if (x == 0) { + return sizeof(x)*8; + } + + drflac_uint32 n; +#ifdef DRFLAC_64BIT + _BitScanReverse64((unsigned long*)&n, x); +#else + _BitScanReverse((unsigned long*)&n, x); +#endif + return sizeof(x)*8 - n - 1; +} +#endif + +static DRFLAC_INLINE drflac_uint32 drflac__clz(drflac_cache_t x) +{ +#ifdef DRFLAC_IMPLEMENT_CLZ_LZCNT + if (drflac__is_lzcnt_supported()) { + return drflac__clz_lzcnt(x); + } else +#endif + { +#ifdef DRFLAC_IMPLEMENT_CLZ_MSVC + return drflac__clz_msvc(x); +#else + return drflac__clz_software(x); +#endif + } +} + + +static inline drflac_bool32 drflac__seek_past_next_set_bit(drflac_bs* bs, unsigned int* pOffsetOut) +{ + drflac_uint32 zeroCounter = 0; + while (bs->cache == 0) { + zeroCounter += (drflac_uint32)DRFLAC_CACHE_L1_BITS_REMAINING(bs); + if (!drflac__reload_cache(bs)) { + return DRFLAC_FALSE; + } + } + + drflac_uint32 setBitOffsetPlus1 = drflac__clz(bs->cache); + setBitOffsetPlus1 += 1; + + bs->consumedBits += setBitOffsetPlus1; + bs->cache <<= setBitOffsetPlus1; + + *pOffsetOut = zeroCounter + setBitOffsetPlus1 - 1; + return DRFLAC_TRUE; +} + + + +static drflac_bool32 drflac__seek_to_byte(drflac_bs* bs, drflac_uint64 offsetFromStart) +{ + drflac_assert(bs != NULL); + drflac_assert(offsetFromStart > 0); + + // Seeking from the start is not quite as trivial as it sounds because the onSeek callback takes a signed 32-bit integer (which + // is intentional because it simplifies the implementation of the onSeek callbacks), however offsetFromStart is unsigned 64-bit. + // To resolve we just need to do an initial seek from the start, and then a series of offset seeks to make up the remainder. + if (offsetFromStart > 0x7FFFFFFF) { + drflac_uint64 bytesRemaining = offsetFromStart; + if (!bs->onSeek(bs->pUserData, 0x7FFFFFFF, drflac_seek_origin_start)) { + return DRFLAC_FALSE; + } + bytesRemaining -= 0x7FFFFFFF; + + while (bytesRemaining > 0x7FFFFFFF) { + if (!bs->onSeek(bs->pUserData, 0x7FFFFFFF, drflac_seek_origin_current)) { + return DRFLAC_FALSE; + } + bytesRemaining -= 0x7FFFFFFF; + } + + if (bytesRemaining > 0) { + if (!bs->onSeek(bs->pUserData, (int)bytesRemaining, drflac_seek_origin_current)) { + return DRFLAC_FALSE; + } + } + } else { + if (!bs->onSeek(bs->pUserData, (int)offsetFromStart, drflac_seek_origin_start)) { + return DRFLAC_FALSE; + } + } + + // The cache should be reset to force a reload of fresh data from the client. + drflac__reset_cache(bs); + return DRFLAC_TRUE; +} + + +static drflac_result drflac__read_utf8_coded_number(drflac_bs* bs, drflac_uint64* pNumberOut, drflac_uint8* pCRCOut) +{ + drflac_assert(bs != NULL); + drflac_assert(pNumberOut != NULL); + + drflac_uint8 crc = *pCRCOut; + + unsigned char utf8[7] = {0}; + if (!drflac__read_uint8(bs, 8, utf8)) { + *pNumberOut = 0; + return DRFLAC_END_OF_STREAM; + } + crc = drflac_crc8(crc, utf8[0], 8); + + if ((utf8[0] & 0x80) == 0) { + *pNumberOut = utf8[0]; + *pCRCOut = crc; + return DRFLAC_SUCCESS; + } + + int byteCount = 1; + if ((utf8[0] & 0xE0) == 0xC0) { + byteCount = 2; + } else if ((utf8[0] & 0xF0) == 0xE0) { + byteCount = 3; + } else if ((utf8[0] & 0xF8) == 0xF0) { + byteCount = 4; + } else if ((utf8[0] & 0xFC) == 0xF8) { + byteCount = 5; + } else if ((utf8[0] & 0xFE) == 0xFC) { + byteCount = 6; + } else if ((utf8[0] & 0xFF) == 0xFE) { + byteCount = 7; + } else { + *pNumberOut = 0; + return DRFLAC_CRC_MISMATCH; // Bad UTF-8 encoding. + } + + // Read extra bytes. + drflac_assert(byteCount > 1); + + drflac_uint64 result = (drflac_uint64)(utf8[0] & (0xFF >> (byteCount + 1))); + for (int i = 1; i < byteCount; ++i) { + if (!drflac__read_uint8(bs, 8, utf8 + i)) { + *pNumberOut = 0; + return DRFLAC_END_OF_STREAM; + } + crc = drflac_crc8(crc, utf8[i], 8); + + result = (result << 6) | (utf8[i] & 0x3F); + } + + *pNumberOut = result; + *pCRCOut = crc; + return DRFLAC_SUCCESS; +} + + + + +// The next two functions are responsible for calculating the prediction. +// +// When the bits per sample is >16 we need to use 64-bit integer arithmetic because otherwise we'll run out of precision. It's +// safe to assume this will be slower on 32-bit platforms so we use a more optimal solution when the bits per sample is <=16. +static DRFLAC_INLINE drflac_int32 drflac__calculate_prediction_32(drflac_uint32 order, drflac_int32 shift, const drflac_int32* coefficients, drflac_int32* pDecodedSamples) +{ + drflac_assert(order <= 32); + + // 32-bit version. + + // VC++ optimizes this to a single jmp. I've not yet verified this for other compilers. + drflac_int32 prediction = 0; + + switch (order) + { + case 32: prediction += coefficients[31] * pDecodedSamples[-32]; + case 31: prediction += coefficients[30] * pDecodedSamples[-31]; + case 30: prediction += coefficients[29] * pDecodedSamples[-30]; + case 29: prediction += coefficients[28] * pDecodedSamples[-29]; + case 28: prediction += coefficients[27] * pDecodedSamples[-28]; + case 27: prediction += coefficients[26] * pDecodedSamples[-27]; + case 26: prediction += coefficients[25] * pDecodedSamples[-26]; + case 25: prediction += coefficients[24] * pDecodedSamples[-25]; + case 24: prediction += coefficients[23] * pDecodedSamples[-24]; + case 23: prediction += coefficients[22] * pDecodedSamples[-23]; + case 22: prediction += coefficients[21] * pDecodedSamples[-22]; + case 21: prediction += coefficients[20] * pDecodedSamples[-21]; + case 20: prediction += coefficients[19] * pDecodedSamples[-20]; + case 19: prediction += coefficients[18] * pDecodedSamples[-19]; + case 18: prediction += coefficients[17] * pDecodedSamples[-18]; + case 17: prediction += coefficients[16] * pDecodedSamples[-17]; + case 16: prediction += coefficients[15] * pDecodedSamples[-16]; + case 15: prediction += coefficients[14] * pDecodedSamples[-15]; + case 14: prediction += coefficients[13] * pDecodedSamples[-14]; + case 13: prediction += coefficients[12] * pDecodedSamples[-13]; + case 12: prediction += coefficients[11] * pDecodedSamples[-12]; + case 11: prediction += coefficients[10] * pDecodedSamples[-11]; + case 10: prediction += coefficients[ 9] * pDecodedSamples[-10]; + case 9: prediction += coefficients[ 8] * pDecodedSamples[- 9]; + case 8: prediction += coefficients[ 7] * pDecodedSamples[- 8]; + case 7: prediction += coefficients[ 6] * pDecodedSamples[- 7]; + case 6: prediction += coefficients[ 5] * pDecodedSamples[- 6]; + case 5: prediction += coefficients[ 4] * pDecodedSamples[- 5]; + case 4: prediction += coefficients[ 3] * pDecodedSamples[- 4]; + case 3: prediction += coefficients[ 2] * pDecodedSamples[- 3]; + case 2: prediction += coefficients[ 1] * pDecodedSamples[- 2]; + case 1: prediction += coefficients[ 0] * pDecodedSamples[- 1]; + } + + return (drflac_int32)(prediction >> shift); +} + +static DRFLAC_INLINE drflac_int32 drflac__calculate_prediction_64(drflac_uint32 order, drflac_int32 shift, const drflac_int32* coefficients, drflac_int32* pDecodedSamples) +{ + drflac_assert(order <= 32); + + // 64-bit version. + + // This method is faster on the 32-bit build when compiling with VC++. See note below. +#ifndef DRFLAC_64BIT + drflac_int64 prediction; + if (order == 8) + { + prediction = coefficients[0] * (drflac_int64)pDecodedSamples[-1]; + prediction += coefficients[1] * (drflac_int64)pDecodedSamples[-2]; + prediction += coefficients[2] * (drflac_int64)pDecodedSamples[-3]; + prediction += coefficients[3] * (drflac_int64)pDecodedSamples[-4]; + prediction += coefficients[4] * (drflac_int64)pDecodedSamples[-5]; + prediction += coefficients[5] * (drflac_int64)pDecodedSamples[-6]; + prediction += coefficients[6] * (drflac_int64)pDecodedSamples[-7]; + prediction += coefficients[7] * (drflac_int64)pDecodedSamples[-8]; + } + else if (order == 7) + { + prediction = coefficients[0] * (drflac_int64)pDecodedSamples[-1]; + prediction += coefficients[1] * (drflac_int64)pDecodedSamples[-2]; + prediction += coefficients[2] * (drflac_int64)pDecodedSamples[-3]; + prediction += coefficients[3] * (drflac_int64)pDecodedSamples[-4]; + prediction += coefficients[4] * (drflac_int64)pDecodedSamples[-5]; + prediction += coefficients[5] * (drflac_int64)pDecodedSamples[-6]; + prediction += coefficients[6] * (drflac_int64)pDecodedSamples[-7]; + } + else if (order == 3) + { + prediction = coefficients[0] * (drflac_int64)pDecodedSamples[-1]; + prediction += coefficients[1] * (drflac_int64)pDecodedSamples[-2]; + prediction += coefficients[2] * (drflac_int64)pDecodedSamples[-3]; + } + else if (order == 6) + { + prediction = coefficients[0] * (drflac_int64)pDecodedSamples[-1]; + prediction += coefficients[1] * (drflac_int64)pDecodedSamples[-2]; + prediction += coefficients[2] * (drflac_int64)pDecodedSamples[-3]; + prediction += coefficients[3] * (drflac_int64)pDecodedSamples[-4]; + prediction += coefficients[4] * (drflac_int64)pDecodedSamples[-5]; + prediction += coefficients[5] * (drflac_int64)pDecodedSamples[-6]; + } + else if (order == 5) + { + prediction = coefficients[0] * (drflac_int64)pDecodedSamples[-1]; + prediction += coefficients[1] * (drflac_int64)pDecodedSamples[-2]; + prediction += coefficients[2] * (drflac_int64)pDecodedSamples[-3]; + prediction += coefficients[3] * (drflac_int64)pDecodedSamples[-4]; + prediction += coefficients[4] * (drflac_int64)pDecodedSamples[-5]; + } + else if (order == 4) + { + prediction = coefficients[0] * (drflac_int64)pDecodedSamples[-1]; + prediction += coefficients[1] * (drflac_int64)pDecodedSamples[-2]; + prediction += coefficients[2] * (drflac_int64)pDecodedSamples[-3]; + prediction += coefficients[3] * (drflac_int64)pDecodedSamples[-4]; + } + else if (order == 12) + { + prediction = coefficients[0] * (drflac_int64)pDecodedSamples[-1]; + prediction += coefficients[1] * (drflac_int64)pDecodedSamples[-2]; + prediction += coefficients[2] * (drflac_int64)pDecodedSamples[-3]; + prediction += coefficients[3] * (drflac_int64)pDecodedSamples[-4]; + prediction += coefficients[4] * (drflac_int64)pDecodedSamples[-5]; + prediction += coefficients[5] * (drflac_int64)pDecodedSamples[-6]; + prediction += coefficients[6] * (drflac_int64)pDecodedSamples[-7]; + prediction += coefficients[7] * (drflac_int64)pDecodedSamples[-8]; + prediction += coefficients[8] * (drflac_int64)pDecodedSamples[-9]; + prediction += coefficients[9] * (drflac_int64)pDecodedSamples[-10]; + prediction += coefficients[10] * (drflac_int64)pDecodedSamples[-11]; + prediction += coefficients[11] * (drflac_int64)pDecodedSamples[-12]; + } + else if (order == 2) + { + prediction = coefficients[0] * (drflac_int64)pDecodedSamples[-1]; + prediction += coefficients[1] * (drflac_int64)pDecodedSamples[-2]; + } + else if (order == 1) + { + prediction = coefficients[0] * (drflac_int64)pDecodedSamples[-1]; + } + else if (order == 10) + { + prediction = coefficients[0] * (drflac_int64)pDecodedSamples[-1]; + prediction += coefficients[1] * (drflac_int64)pDecodedSamples[-2]; + prediction += coefficients[2] * (drflac_int64)pDecodedSamples[-3]; + prediction += coefficients[3] * (drflac_int64)pDecodedSamples[-4]; + prediction += coefficients[4] * (drflac_int64)pDecodedSamples[-5]; + prediction += coefficients[5] * (drflac_int64)pDecodedSamples[-6]; + prediction += coefficients[6] * (drflac_int64)pDecodedSamples[-7]; + prediction += coefficients[7] * (drflac_int64)pDecodedSamples[-8]; + prediction += coefficients[8] * (drflac_int64)pDecodedSamples[-9]; + prediction += coefficients[9] * (drflac_int64)pDecodedSamples[-10]; + } + else if (order == 9) + { + prediction = coefficients[0] * (drflac_int64)pDecodedSamples[-1]; + prediction += coefficients[1] * (drflac_int64)pDecodedSamples[-2]; + prediction += coefficients[2] * (drflac_int64)pDecodedSamples[-3]; + prediction += coefficients[3] * (drflac_int64)pDecodedSamples[-4]; + prediction += coefficients[4] * (drflac_int64)pDecodedSamples[-5]; + prediction += coefficients[5] * (drflac_int64)pDecodedSamples[-6]; + prediction += coefficients[6] * (drflac_int64)pDecodedSamples[-7]; + prediction += coefficients[7] * (drflac_int64)pDecodedSamples[-8]; + prediction += coefficients[8] * (drflac_int64)pDecodedSamples[-9]; + } + else if (order == 11) + { + prediction = coefficients[0] * (drflac_int64)pDecodedSamples[-1]; + prediction += coefficients[1] * (drflac_int64)pDecodedSamples[-2]; + prediction += coefficients[2] * (drflac_int64)pDecodedSamples[-3]; + prediction += coefficients[3] * (drflac_int64)pDecodedSamples[-4]; + prediction += coefficients[4] * (drflac_int64)pDecodedSamples[-5]; + prediction += coefficients[5] * (drflac_int64)pDecodedSamples[-6]; + prediction += coefficients[6] * (drflac_int64)pDecodedSamples[-7]; + prediction += coefficients[7] * (drflac_int64)pDecodedSamples[-8]; + prediction += coefficients[8] * (drflac_int64)pDecodedSamples[-9]; + prediction += coefficients[9] * (drflac_int64)pDecodedSamples[-10]; + prediction += coefficients[10] * (drflac_int64)pDecodedSamples[-11]; + } + else + { + prediction = 0; + for (int j = 0; j < (int)order; ++j) { + prediction += coefficients[j] * (drflac_int64)pDecodedSamples[-j-1]; + } + } +#endif + + // VC++ optimizes this to a single jmp instruction, but only the 64-bit build. The 32-bit build generates less efficient code for some + // reason. The ugly version above is faster so we'll just switch between the two depending on the target platform. +#ifdef DRFLAC_64BIT + drflac_int64 prediction = 0; + + switch (order) + { + case 32: prediction += coefficients[31] * (drflac_int64)pDecodedSamples[-32]; + case 31: prediction += coefficients[30] * (drflac_int64)pDecodedSamples[-31]; + case 30: prediction += coefficients[29] * (drflac_int64)pDecodedSamples[-30]; + case 29: prediction += coefficients[28] * (drflac_int64)pDecodedSamples[-29]; + case 28: prediction += coefficients[27] * (drflac_int64)pDecodedSamples[-28]; + case 27: prediction += coefficients[26] * (drflac_int64)pDecodedSamples[-27]; + case 26: prediction += coefficients[25] * (drflac_int64)pDecodedSamples[-26]; + case 25: prediction += coefficients[24] * (drflac_int64)pDecodedSamples[-25]; + case 24: prediction += coefficients[23] * (drflac_int64)pDecodedSamples[-24]; + case 23: prediction += coefficients[22] * (drflac_int64)pDecodedSamples[-23]; + case 22: prediction += coefficients[21] * (drflac_int64)pDecodedSamples[-22]; + case 21: prediction += coefficients[20] * (drflac_int64)pDecodedSamples[-21]; + case 20: prediction += coefficients[19] * (drflac_int64)pDecodedSamples[-20]; + case 19: prediction += coefficients[18] * (drflac_int64)pDecodedSamples[-19]; + case 18: prediction += coefficients[17] * (drflac_int64)pDecodedSamples[-18]; + case 17: prediction += coefficients[16] * (drflac_int64)pDecodedSamples[-17]; + case 16: prediction += coefficients[15] * (drflac_int64)pDecodedSamples[-16]; + case 15: prediction += coefficients[14] * (drflac_int64)pDecodedSamples[-15]; + case 14: prediction += coefficients[13] * (drflac_int64)pDecodedSamples[-14]; + case 13: prediction += coefficients[12] * (drflac_int64)pDecodedSamples[-13]; + case 12: prediction += coefficients[11] * (drflac_int64)pDecodedSamples[-12]; + case 11: prediction += coefficients[10] * (drflac_int64)pDecodedSamples[-11]; + case 10: prediction += coefficients[ 9] * (drflac_int64)pDecodedSamples[-10]; + case 9: prediction += coefficients[ 8] * (drflac_int64)pDecodedSamples[- 9]; + case 8: prediction += coefficients[ 7] * (drflac_int64)pDecodedSamples[- 8]; + case 7: prediction += coefficients[ 6] * (drflac_int64)pDecodedSamples[- 7]; + case 6: prediction += coefficients[ 5] * (drflac_int64)pDecodedSamples[- 6]; + case 5: prediction += coefficients[ 4] * (drflac_int64)pDecodedSamples[- 5]; + case 4: prediction += coefficients[ 3] * (drflac_int64)pDecodedSamples[- 4]; + case 3: prediction += coefficients[ 2] * (drflac_int64)pDecodedSamples[- 3]; + case 2: prediction += coefficients[ 1] * (drflac_int64)pDecodedSamples[- 2]; + case 1: prediction += coefficients[ 0] * (drflac_int64)pDecodedSamples[- 1]; + } +#endif + + return (drflac_int32)(prediction >> shift); +} + +static DRFLAC_INLINE void drflac__calculate_prediction_64_x4(drflac_uint32 order, drflac_int32 shift, const drflac_int32* coefficients, const drflac_uint32 riceParamParts[4], drflac_int32* pDecodedSamples) +{ + drflac_assert(order <= 32); + + drflac_int64 prediction0 = 0; + drflac_int64 prediction1 = 0; + drflac_int64 prediction2 = 0; + drflac_int64 prediction3 = 0; + + switch (order) + { + case 32: + prediction0 += coefficients[31] * (drflac_int64)pDecodedSamples[-32]; + prediction1 += coefficients[31] * (drflac_int64)pDecodedSamples[-31]; + prediction2 += coefficients[31] * (drflac_int64)pDecodedSamples[-30]; + prediction3 += coefficients[31] * (drflac_int64)pDecodedSamples[-29]; + case 31: + prediction0 += coefficients[30] * (drflac_int64)pDecodedSamples[-31]; + prediction1 += coefficients[30] * (drflac_int64)pDecodedSamples[-30]; + prediction2 += coefficients[30] * (drflac_int64)pDecodedSamples[-29]; + prediction3 += coefficients[30] * (drflac_int64)pDecodedSamples[-28]; + case 30: + prediction0 += coefficients[29] * (drflac_int64)pDecodedSamples[-30]; + prediction1 += coefficients[29] * (drflac_int64)pDecodedSamples[-29]; + prediction2 += coefficients[29] * (drflac_int64)pDecodedSamples[-28]; + prediction3 += coefficients[29] * (drflac_int64)pDecodedSamples[-27]; + case 29: + prediction0 += coefficients[28] * (drflac_int64)pDecodedSamples[-29]; + prediction1 += coefficients[28] * (drflac_int64)pDecodedSamples[-28]; + prediction2 += coefficients[28] * (drflac_int64)pDecodedSamples[-27]; + prediction3 += coefficients[28] * (drflac_int64)pDecodedSamples[-26]; + case 28: + prediction0 += coefficients[27] * (drflac_int64)pDecodedSamples[-28]; + prediction1 += coefficients[27] * (drflac_int64)pDecodedSamples[-27]; + prediction2 += coefficients[27] * (drflac_int64)pDecodedSamples[-26]; + prediction3 += coefficients[27] * (drflac_int64)pDecodedSamples[-25]; + case 27: + prediction0 += coefficients[26] * (drflac_int64)pDecodedSamples[-27]; + prediction1 += coefficients[26] * (drflac_int64)pDecodedSamples[-26]; + prediction2 += coefficients[26] * (drflac_int64)pDecodedSamples[-25]; + prediction3 += coefficients[26] * (drflac_int64)pDecodedSamples[-24]; + case 26: + prediction0 += coefficients[25] * (drflac_int64)pDecodedSamples[-26]; + prediction1 += coefficients[25] * (drflac_int64)pDecodedSamples[-25]; + prediction2 += coefficients[25] * (drflac_int64)pDecodedSamples[-24]; + prediction3 += coefficients[25] * (drflac_int64)pDecodedSamples[-23]; + case 25: + prediction0 += coefficients[24] * (drflac_int64)pDecodedSamples[-25]; + prediction1 += coefficients[24] * (drflac_int64)pDecodedSamples[-24]; + prediction2 += coefficients[24] * (drflac_int64)pDecodedSamples[-23]; + prediction3 += coefficients[24] * (drflac_int64)pDecodedSamples[-22]; + case 24: + prediction0 += coefficients[23] * (drflac_int64)pDecodedSamples[-24]; + prediction1 += coefficients[23] * (drflac_int64)pDecodedSamples[-23]; + prediction2 += coefficients[23] * (drflac_int64)pDecodedSamples[-22]; + prediction3 += coefficients[23] * (drflac_int64)pDecodedSamples[-21]; + case 23: + prediction0 += coefficients[22] * (drflac_int64)pDecodedSamples[-23]; + prediction1 += coefficients[22] * (drflac_int64)pDecodedSamples[-22]; + prediction2 += coefficients[22] * (drflac_int64)pDecodedSamples[-21]; + prediction3 += coefficients[22] * (drflac_int64)pDecodedSamples[-20]; + case 22: + prediction0 += coefficients[21] * (drflac_int64)pDecodedSamples[-22]; + prediction1 += coefficients[21] * (drflac_int64)pDecodedSamples[-21]; + prediction2 += coefficients[21] * (drflac_int64)pDecodedSamples[-20]; + prediction3 += coefficients[21] * (drflac_int64)pDecodedSamples[-19]; + case 21: + prediction0 += coefficients[20] * (drflac_int64)pDecodedSamples[-21]; + prediction1 += coefficients[20] * (drflac_int64)pDecodedSamples[-20]; + prediction2 += coefficients[20] * (drflac_int64)pDecodedSamples[-19]; + prediction3 += coefficients[20] * (drflac_int64)pDecodedSamples[-18]; + case 20: + prediction0 += coefficients[19] * (drflac_int64)pDecodedSamples[-20]; + prediction1 += coefficients[19] * (drflac_int64)pDecodedSamples[-19]; + prediction2 += coefficients[19] * (drflac_int64)pDecodedSamples[-18]; + prediction3 += coefficients[19] * (drflac_int64)pDecodedSamples[-17]; + case 19: + prediction0 += coefficients[18] * (drflac_int64)pDecodedSamples[-19]; + prediction1 += coefficients[18] * (drflac_int64)pDecodedSamples[-18]; + prediction2 += coefficients[18] * (drflac_int64)pDecodedSamples[-17]; + prediction3 += coefficients[18] * (drflac_int64)pDecodedSamples[-16]; + case 18: + prediction0 += coefficients[17] * (drflac_int64)pDecodedSamples[-18]; + prediction1 += coefficients[17] * (drflac_int64)pDecodedSamples[-17]; + prediction2 += coefficients[17] * (drflac_int64)pDecodedSamples[-16]; + prediction3 += coefficients[17] * (drflac_int64)pDecodedSamples[-15]; + case 17: + prediction0 += coefficients[16] * (drflac_int64)pDecodedSamples[-17]; + prediction1 += coefficients[16] * (drflac_int64)pDecodedSamples[-16]; + prediction2 += coefficients[16] * (drflac_int64)pDecodedSamples[-15]; + prediction3 += coefficients[16] * (drflac_int64)pDecodedSamples[-14]; + + case 16: + prediction0 += coefficients[15] * (drflac_int64)pDecodedSamples[-16]; + prediction1 += coefficients[15] * (drflac_int64)pDecodedSamples[-15]; + prediction2 += coefficients[15] * (drflac_int64)pDecodedSamples[-14]; + prediction3 += coefficients[15] * (drflac_int64)pDecodedSamples[-13]; + case 15: + prediction0 += coefficients[14] * (drflac_int64)pDecodedSamples[-15]; + prediction1 += coefficients[14] * (drflac_int64)pDecodedSamples[-14]; + prediction2 += coefficients[14] * (drflac_int64)pDecodedSamples[-13]; + prediction3 += coefficients[14] * (drflac_int64)pDecodedSamples[-12]; + case 14: + prediction0 += coefficients[13] * (drflac_int64)pDecodedSamples[-14]; + prediction1 += coefficients[13] * (drflac_int64)pDecodedSamples[-13]; + prediction2 += coefficients[13] * (drflac_int64)pDecodedSamples[-12]; + prediction3 += coefficients[13] * (drflac_int64)pDecodedSamples[-11]; + case 13: + prediction0 += coefficients[12] * (drflac_int64)pDecodedSamples[-13]; + prediction1 += coefficients[12] * (drflac_int64)pDecodedSamples[-12]; + prediction2 += coefficients[12] * (drflac_int64)pDecodedSamples[-11]; + prediction3 += coefficients[12] * (drflac_int64)pDecodedSamples[-10]; + case 12: + prediction0 += coefficients[11] * (drflac_int64)pDecodedSamples[-12]; + prediction1 += coefficients[11] * (drflac_int64)pDecodedSamples[-11]; + prediction2 += coefficients[11] * (drflac_int64)pDecodedSamples[-10]; + prediction3 += coefficients[11] * (drflac_int64)pDecodedSamples[- 9]; + case 11: + prediction0 += coefficients[10] * (drflac_int64)pDecodedSamples[-11]; + prediction1 += coefficients[10] * (drflac_int64)pDecodedSamples[-10]; + prediction2 += coefficients[10] * (drflac_int64)pDecodedSamples[- 9]; + prediction3 += coefficients[10] * (drflac_int64)pDecodedSamples[- 8]; + case 10: + prediction0 += coefficients[9] * (drflac_int64)pDecodedSamples[-10]; + prediction1 += coefficients[9] * (drflac_int64)pDecodedSamples[- 9]; + prediction2 += coefficients[9] * (drflac_int64)pDecodedSamples[- 8]; + prediction3 += coefficients[9] * (drflac_int64)pDecodedSamples[- 7]; + case 9: + prediction0 += coefficients[8] * (drflac_int64)pDecodedSamples[- 9]; + prediction1 += coefficients[8] * (drflac_int64)pDecodedSamples[- 8]; + prediction2 += coefficients[8] * (drflac_int64)pDecodedSamples[- 7]; + prediction3 += coefficients[8] * (drflac_int64)pDecodedSamples[- 6]; + case 8: + prediction0 += coefficients[7] * (drflac_int64)pDecodedSamples[- 8]; + prediction1 += coefficients[7] * (drflac_int64)pDecodedSamples[- 7]; + prediction2 += coefficients[7] * (drflac_int64)pDecodedSamples[- 6]; + prediction3 += coefficients[7] * (drflac_int64)pDecodedSamples[- 5]; + case 7: + prediction0 += coefficients[6] * (drflac_int64)pDecodedSamples[- 7]; + prediction1 += coefficients[6] * (drflac_int64)pDecodedSamples[- 6]; + prediction2 += coefficients[6] * (drflac_int64)pDecodedSamples[- 5]; + prediction3 += coefficients[6] * (drflac_int64)pDecodedSamples[- 4]; + case 6: + prediction0 += coefficients[5] * (drflac_int64)pDecodedSamples[- 6]; + prediction1 += coefficients[5] * (drflac_int64)pDecodedSamples[- 5]; + prediction2 += coefficients[5] * (drflac_int64)pDecodedSamples[- 4]; + prediction3 += coefficients[5] * (drflac_int64)pDecodedSamples[- 3]; + case 5: + prediction0 += coefficients[4] * (drflac_int64)pDecodedSamples[- 5]; + prediction1 += coefficients[4] * (drflac_int64)pDecodedSamples[- 4]; + prediction2 += coefficients[4] * (drflac_int64)pDecodedSamples[- 3]; + prediction3 += coefficients[4] * (drflac_int64)pDecodedSamples[- 2]; + case 4: + prediction0 += coefficients[3] * (drflac_int64)pDecodedSamples[- 4]; + prediction1 += coefficients[3] * (drflac_int64)pDecodedSamples[- 3]; + prediction2 += coefficients[3] * (drflac_int64)pDecodedSamples[- 2]; + prediction3 += coefficients[3] * (drflac_int64)pDecodedSamples[- 1]; + order = 3; + } + + switch (order) + { + case 3: prediction0 += coefficients[ 2] * (drflac_int64)pDecodedSamples[- 3]; + case 2: prediction0 += coefficients[ 1] * (drflac_int64)pDecodedSamples[- 2]; + case 1: prediction0 += coefficients[ 0] * (drflac_int64)pDecodedSamples[- 1]; + } + pDecodedSamples[0] = riceParamParts[0] + (drflac_int32)(prediction0 >> shift); + + switch (order) + { + case 3: prediction1 += coefficients[ 2] * (drflac_int64)pDecodedSamples[- 2]; + case 2: prediction1 += coefficients[ 1] * (drflac_int64)pDecodedSamples[- 1]; + case 1: prediction1 += coefficients[ 0] * (drflac_int64)pDecodedSamples[ 0]; + } + pDecodedSamples[1] = riceParamParts[1] + (drflac_int32)(prediction1 >> shift); + + switch (order) + { + case 3: prediction2 += coefficients[ 2] * (drflac_int64)pDecodedSamples[- 1]; + case 2: prediction2 += coefficients[ 1] * (drflac_int64)pDecodedSamples[ 0]; + case 1: prediction2 += coefficients[ 0] * (drflac_int64)pDecodedSamples[ 1]; + } + pDecodedSamples[2] = riceParamParts[2] + (drflac_int32)(prediction2 >> shift); + + switch (order) + { + case 3: prediction3 += coefficients[ 2] * (drflac_int64)pDecodedSamples[ 0]; + case 2: prediction3 += coefficients[ 1] * (drflac_int64)pDecodedSamples[ 1]; + case 1: prediction3 += coefficients[ 0] * (drflac_int64)pDecodedSamples[ 2]; + } + pDecodedSamples[3] = riceParamParts[3] + (drflac_int32)(prediction3 >> shift); +} + +#if defined(DRFLAC_SUPPORT_SSE41) +static DRFLAC_INLINE drflac_int32 drflac__calculate_prediction_64__sse41(drflac_uint32 order, drflac_int32 shift, const drflac_int32* coefficients, drflac_int32* pDecodedSamples) +{ + drflac_assert(order <= 32); + + __m128i prediction = _mm_setzero_si128(); + + switch (order) + { + case 32: + case 31: prediction = _mm_add_epi64(prediction, _mm_mul_epi32(_mm_set_epi32(0, coefficients[31], 0, coefficients[30]), _mm_set_epi32(0, pDecodedSamples[-32], 0, pDecodedSamples[-31]))); + case 30: + case 29: prediction = _mm_add_epi64(prediction, _mm_mul_epi32(_mm_set_epi32(0, coefficients[29], 0, coefficients[28]), _mm_set_epi32(0, pDecodedSamples[-30], 0, pDecodedSamples[-29]))); + case 28: + case 27: prediction = _mm_add_epi64(prediction, _mm_mul_epi32(_mm_set_epi32(0, coefficients[27], 0, coefficients[26]), _mm_set_epi32(0, pDecodedSamples[-28], 0, pDecodedSamples[-27]))); + case 26: + case 25: prediction = _mm_add_epi64(prediction, _mm_mul_epi32(_mm_set_epi32(0, coefficients[25], 0, coefficients[24]), _mm_set_epi32(0, pDecodedSamples[-26], 0, pDecodedSamples[-25]))); + case 24: + case 23: prediction = _mm_add_epi64(prediction, _mm_mul_epi32(_mm_set_epi32(0, coefficients[23], 0, coefficients[22]), _mm_set_epi32(0, pDecodedSamples[-24], 0, pDecodedSamples[-23]))); + case 22: + case 21: prediction = _mm_add_epi64(prediction, _mm_mul_epi32(_mm_set_epi32(0, coefficients[21], 0, coefficients[20]), _mm_set_epi32(0, pDecodedSamples[-22], 0, pDecodedSamples[-21]))); + case 20: + case 19: prediction = _mm_add_epi64(prediction, _mm_mul_epi32(_mm_set_epi32(0, coefficients[19], 0, coefficients[18]), _mm_set_epi32(0, pDecodedSamples[-20], 0, pDecodedSamples[-19]))); + case 18: + case 17: prediction = _mm_add_epi64(prediction, _mm_mul_epi32(_mm_set_epi32(0, coefficients[17], 0, coefficients[16]), _mm_set_epi32(0, pDecodedSamples[-18], 0, pDecodedSamples[-17]))); + case 16: + case 15: prediction = _mm_add_epi64(prediction, _mm_mul_epi32(_mm_set_epi32(0, coefficients[15], 0, coefficients[14]), _mm_set_epi32(0, pDecodedSamples[-16], 0, pDecodedSamples[-15]))); + case 14: + case 13: prediction = _mm_add_epi64(prediction, _mm_mul_epi32(_mm_set_epi32(0, coefficients[13], 0, coefficients[12]), _mm_set_epi32(0, pDecodedSamples[-14], 0, pDecodedSamples[-13]))); + case 12: + case 11: prediction = _mm_add_epi64(prediction, _mm_mul_epi32(_mm_set_epi32(0, coefficients[11], 0, coefficients[10]), _mm_set_epi32(0, pDecodedSamples[-12], 0, pDecodedSamples[-11]))); + case 10: + case 9: prediction = _mm_add_epi64(prediction, _mm_mul_epi32(_mm_set_epi32(0, coefficients[ 9], 0, coefficients[ 8]), _mm_set_epi32(0, pDecodedSamples[-10], 0, pDecodedSamples[- 9]))); + case 8: + case 7: prediction = _mm_add_epi64(prediction, _mm_mul_epi32(_mm_set_epi32(0, coefficients[ 7], 0, coefficients[ 6]), _mm_set_epi32(0, pDecodedSamples[- 8], 0, pDecodedSamples[- 7]))); + case 6: + case 5: prediction = _mm_add_epi64(prediction, _mm_mul_epi32(_mm_set_epi32(0, coefficients[ 5], 0, coefficients[ 4]), _mm_set_epi32(0, pDecodedSamples[- 6], 0, pDecodedSamples[- 5]))); + case 4: + case 3: prediction = _mm_add_epi64(prediction, _mm_mul_epi32(_mm_set_epi32(0, coefficients[ 3], 0, coefficients[ 2]), _mm_set_epi32(0, pDecodedSamples[- 4], 0, pDecodedSamples[- 3]))); + case 2: + case 1: prediction = _mm_add_epi64(prediction, _mm_mul_epi32(_mm_set_epi32(0, coefficients[ 1], 0, coefficients[ 0]), _mm_set_epi32(0, pDecodedSamples[- 2], 0, pDecodedSamples[- 1]))); + } + + return (drflac_int32)(( + ((drflac_uint64*)&prediction)[0] + + ((drflac_uint64*)&prediction)[1]) >> shift); +} + +static DRFLAC_INLINE void drflac__calculate_prediction_64_x2__sse41(drflac_uint32 order, drflac_int32 shift, const drflac_int32* coefficients, const drflac_uint32 riceParamParts[4], drflac_int32* pDecodedSamples) +{ + drflac_assert(order <= 32); + + __m128i prediction = _mm_setzero_si128(); + drflac_int64 predictions[2] = {0, 0}; + + switch (order) + { + case 32: prediction = _mm_add_epi64(prediction, _mm_mul_epi32(_mm_set_epi32(0, coefficients[31], 0, coefficients[31]), _mm_set_epi32(0, pDecodedSamples[-31], 0, pDecodedSamples[-32]))); + case 31: prediction = _mm_add_epi64(prediction, _mm_mul_epi32(_mm_set_epi32(0, coefficients[30], 0, coefficients[30]), _mm_set_epi32(0, pDecodedSamples[-30], 0, pDecodedSamples[-31]))); + case 30: prediction = _mm_add_epi64(prediction, _mm_mul_epi32(_mm_set_epi32(0, coefficients[29], 0, coefficients[29]), _mm_set_epi32(0, pDecodedSamples[-29], 0, pDecodedSamples[-30]))); + case 29: prediction = _mm_add_epi64(prediction, _mm_mul_epi32(_mm_set_epi32(0, coefficients[28], 0, coefficients[28]), _mm_set_epi32(0, pDecodedSamples[-28], 0, pDecodedSamples[-29]))); + case 28: prediction = _mm_add_epi64(prediction, _mm_mul_epi32(_mm_set_epi32(0, coefficients[27], 0, coefficients[27]), _mm_set_epi32(0, pDecodedSamples[-27], 0, pDecodedSamples[-28]))); + case 27: prediction = _mm_add_epi64(prediction, _mm_mul_epi32(_mm_set_epi32(0, coefficients[26], 0, coefficients[26]), _mm_set_epi32(0, pDecodedSamples[-26], 0, pDecodedSamples[-27]))); + case 26: prediction = _mm_add_epi64(prediction, _mm_mul_epi32(_mm_set_epi32(0, coefficients[25], 0, coefficients[25]), _mm_set_epi32(0, pDecodedSamples[-25], 0, pDecodedSamples[-26]))); + case 25: prediction = _mm_add_epi64(prediction, _mm_mul_epi32(_mm_set_epi32(0, coefficients[24], 0, coefficients[24]), _mm_set_epi32(0, pDecodedSamples[-24], 0, pDecodedSamples[-25]))); + case 24: prediction = _mm_add_epi64(prediction, _mm_mul_epi32(_mm_set_epi32(0, coefficients[23], 0, coefficients[23]), _mm_set_epi32(0, pDecodedSamples[-23], 0, pDecodedSamples[-24]))); + case 23: prediction = _mm_add_epi64(prediction, _mm_mul_epi32(_mm_set_epi32(0, coefficients[22], 0, coefficients[22]), _mm_set_epi32(0, pDecodedSamples[-22], 0, pDecodedSamples[-23]))); + case 22: prediction = _mm_add_epi64(prediction, _mm_mul_epi32(_mm_set_epi32(0, coefficients[21], 0, coefficients[21]), _mm_set_epi32(0, pDecodedSamples[-21], 0, pDecodedSamples[-22]))); + case 21: prediction = _mm_add_epi64(prediction, _mm_mul_epi32(_mm_set_epi32(0, coefficients[20], 0, coefficients[20]), _mm_set_epi32(0, pDecodedSamples[-20], 0, pDecodedSamples[-21]))); + case 20: prediction = _mm_add_epi64(prediction, _mm_mul_epi32(_mm_set_epi32(0, coefficients[19], 0, coefficients[19]), _mm_set_epi32(0, pDecodedSamples[-19], 0, pDecodedSamples[-20]))); + case 19: prediction = _mm_add_epi64(prediction, _mm_mul_epi32(_mm_set_epi32(0, coefficients[18], 0, coefficients[18]), _mm_set_epi32(0, pDecodedSamples[-18], 0, pDecodedSamples[-19]))); + case 18: prediction = _mm_add_epi64(prediction, _mm_mul_epi32(_mm_set_epi32(0, coefficients[17], 0, coefficients[17]), _mm_set_epi32(0, pDecodedSamples[-17], 0, pDecodedSamples[-18]))); + case 17: prediction = _mm_add_epi64(prediction, _mm_mul_epi32(_mm_set_epi32(0, coefficients[16], 0, coefficients[16]), _mm_set_epi32(0, pDecodedSamples[-16], 0, pDecodedSamples[-17]))); + case 16: prediction = _mm_add_epi64(prediction, _mm_mul_epi32(_mm_set_epi32(0, coefficients[15], 0, coefficients[15]), _mm_set_epi32(0, pDecodedSamples[-15], 0, pDecodedSamples[-16]))); + case 15: prediction = _mm_add_epi64(prediction, _mm_mul_epi32(_mm_set_epi32(0, coefficients[14], 0, coefficients[14]), _mm_set_epi32(0, pDecodedSamples[-14], 0, pDecodedSamples[-15]))); + case 14: prediction = _mm_add_epi64(prediction, _mm_mul_epi32(_mm_set_epi32(0, coefficients[13], 0, coefficients[13]), _mm_set_epi32(0, pDecodedSamples[-13], 0, pDecodedSamples[-14]))); + case 13: prediction = _mm_add_epi64(prediction, _mm_mul_epi32(_mm_set_epi32(0, coefficients[12], 0, coefficients[12]), _mm_set_epi32(0, pDecodedSamples[-12], 0, pDecodedSamples[-13]))); + case 12: prediction = _mm_add_epi64(prediction, _mm_mul_epi32(_mm_set_epi32(0, coefficients[11], 0, coefficients[11]), _mm_set_epi32(0, pDecodedSamples[-11], 0, pDecodedSamples[-12]))); + case 11: prediction = _mm_add_epi64(prediction, _mm_mul_epi32(_mm_set_epi32(0, coefficients[10], 0, coefficients[10]), _mm_set_epi32(0, pDecodedSamples[-10], 0, pDecodedSamples[-11]))); + case 10: prediction = _mm_add_epi64(prediction, _mm_mul_epi32(_mm_set_epi32(0, coefficients[ 9], 0, coefficients[ 9]), _mm_set_epi32(0, pDecodedSamples[- 9], 0, pDecodedSamples[-10]))); + case 9: prediction = _mm_add_epi64(prediction, _mm_mul_epi32(_mm_set_epi32(0, coefficients[ 8], 0, coefficients[ 8]), _mm_set_epi32(0, pDecodedSamples[- 8], 0, pDecodedSamples[- 9]))); + case 8: prediction = _mm_add_epi64(prediction, _mm_mul_epi32(_mm_set_epi32(0, coefficients[ 7], 0, coefficients[ 7]), _mm_set_epi32(0, pDecodedSamples[- 7], 0, pDecodedSamples[- 8]))); + case 7: prediction = _mm_add_epi64(prediction, _mm_mul_epi32(_mm_set_epi32(0, coefficients[ 6], 0, coefficients[ 6]), _mm_set_epi32(0, pDecodedSamples[- 6], 0, pDecodedSamples[- 7]))); + case 6: prediction = _mm_add_epi64(prediction, _mm_mul_epi32(_mm_set_epi32(0, coefficients[ 5], 0, coefficients[ 5]), _mm_set_epi32(0, pDecodedSamples[- 5], 0, pDecodedSamples[- 6]))); + case 5: prediction = _mm_add_epi64(prediction, _mm_mul_epi32(_mm_set_epi32(0, coefficients[ 4], 0, coefficients[ 4]), _mm_set_epi32(0, pDecodedSamples[- 4], 0, pDecodedSamples[- 5]))); + case 4: prediction = _mm_add_epi64(prediction, _mm_mul_epi32(_mm_set_epi32(0, coefficients[ 3], 0, coefficients[ 3]), _mm_set_epi32(0, pDecodedSamples[- 3], 0, pDecodedSamples[- 4]))); + case 3: prediction = _mm_add_epi64(prediction, _mm_mul_epi32(_mm_set_epi32(0, coefficients[ 2], 0, coefficients[ 2]), _mm_set_epi32(0, pDecodedSamples[- 2], 0, pDecodedSamples[- 3]))); + case 2: prediction = _mm_add_epi64(prediction, _mm_mul_epi32(_mm_set_epi32(0, coefficients[ 1], 0, coefficients[ 1]), _mm_set_epi32(0, pDecodedSamples[- 1], 0, pDecodedSamples[- 2]))); + order = 1; + } + + _mm_storeu_si128((__m128i*)predictions, prediction); + + switch (order) + { + case 1: predictions[0] += coefficients[ 0] * (drflac_int64)pDecodedSamples[- 1]; + } + pDecodedSamples[0] = riceParamParts[0] + (drflac_int32)(predictions[0] >> shift); + + switch (order) + { + case 1: predictions[1] += coefficients[ 0] * (drflac_int64)pDecodedSamples[ 0]; + } + pDecodedSamples[1] = riceParamParts[1] + (drflac_int32)(predictions[1] >> shift); +} + + +static DRFLAC_INLINE __m128i drflac__mm_not_si128(__m128i a) +{ + return _mm_xor_si128(a, _mm_cmpeq_epi32(_mm_setzero_si128(), _mm_setzero_si128())); +} + +static DRFLAC_INLINE __m128i drflac__mm_slide1_epi32(__m128i a, __m128i b) +{ + // a3a2a1a0/b3b2b1b0 -> a2a1a0b3 + + // Result = a2a1a0b3 + __m128i b3a3b2a2 = _mm_unpackhi_epi32(a, b); + __m128i a2b3a2b3 = _mm_shuffle_epi32(b3a3b2a2, _MM_SHUFFLE(0, 3, 0, 3)); + __m128i a1a2a0b3 = _mm_unpacklo_epi32(a2b3a2b3, a); + __m128i a2a1a0b3 = _mm_shuffle_epi32(a1a2a0b3, _MM_SHUFFLE(2, 3, 1, 0)); + return a2a1a0b3; +} + +static DRFLAC_INLINE __m128i drflac__mm_slide2_epi32(__m128i a, __m128i b) +{ + // Result = a1a0b3b2 + __m128i b1b0b3b2 = _mm_shuffle_epi32(b, _MM_SHUFFLE(1, 0, 3, 2)); + __m128i a1b3a0b2 = _mm_unpacklo_epi32(b1b0b3b2, a); + __m128i a1a0b3b2 = _mm_shuffle_epi32(a1b3a0b2, _MM_SHUFFLE(3, 1, 2, 0)); + return a1a0b3b2; +} + +static DRFLAC_INLINE __m128i drflac__mm_slide3_epi32(__m128i a, __m128i b) +{ + // Result = a0b3b2b1 + __m128i b1a1b0a0 = _mm_unpacklo_epi32(a, b); + __m128i a0b1a0b1 = _mm_shuffle_epi32(b1a1b0a0, _MM_SHUFFLE(0, 3, 0, 3)); + __m128i b3a0b2b1 = _mm_unpackhi_epi32(a0b1a0b1, b); + __m128i a0b3b2b1 = _mm_shuffle_epi32(b3a0b2b1, _MM_SHUFFLE(2, 3, 1, 0)); + return a0b3b2b1; +} + +static DRFLAC_INLINE void drflac__calculate_prediction_32_x4__sse41(drflac_uint32 order, drflac_int32 shift, const __m128i* coefficients128, const __m128i riceParamParts128, drflac_int32* pDecodedSamples) +{ + drflac_assert(order <= 32); + + // I don't think this is as efficient as it could be. More work needs to be done on this. + if (order > 0) { + __m128i s_09_10_11_12 = _mm_loadu_si128((const __m128i*)(pDecodedSamples - 12)); + __m128i s_05_06_07_08 = _mm_loadu_si128((const __m128i*)(pDecodedSamples - 8)); + __m128i s_01_02_03_04 = _mm_loadu_si128((const __m128i*)(pDecodedSamples - 4)); + + __m128i prediction = _mm_setzero_si128(); + + // The idea with this switch is to do do a single jump based on the value of "order". In my test library, "order" is never larger than 12, so + // I have decided to do a less optimal solution in the order > 12 case. + switch (order) + { + case 32: prediction = _mm_add_epi32(prediction, _mm_mullo_epi32(coefficients128[31], _mm_loadu_si128((const __m128i*)(pDecodedSamples - 32)))); + case 31: prediction = _mm_add_epi32(prediction, _mm_mullo_epi32(coefficients128[30], _mm_loadu_si128((const __m128i*)(pDecodedSamples - 31)))); + case 30: prediction = _mm_add_epi32(prediction, _mm_mullo_epi32(coefficients128[29], _mm_loadu_si128((const __m128i*)(pDecodedSamples - 30)))); + case 29: prediction = _mm_add_epi32(prediction, _mm_mullo_epi32(coefficients128[28], _mm_loadu_si128((const __m128i*)(pDecodedSamples - 29)))); + case 28: prediction = _mm_add_epi32(prediction, _mm_mullo_epi32(coefficients128[27], _mm_loadu_si128((const __m128i*)(pDecodedSamples - 28)))); + case 27: prediction = _mm_add_epi32(prediction, _mm_mullo_epi32(coefficients128[26], _mm_loadu_si128((const __m128i*)(pDecodedSamples - 27)))); + case 26: prediction = _mm_add_epi32(prediction, _mm_mullo_epi32(coefficients128[25], _mm_loadu_si128((const __m128i*)(pDecodedSamples - 26)))); + case 25: prediction = _mm_add_epi32(prediction, _mm_mullo_epi32(coefficients128[24], _mm_loadu_si128((const __m128i*)(pDecodedSamples - 25)))); + case 24: prediction = _mm_add_epi32(prediction, _mm_mullo_epi32(coefficients128[23], _mm_loadu_si128((const __m128i*)(pDecodedSamples - 24)))); + case 23: prediction = _mm_add_epi32(prediction, _mm_mullo_epi32(coefficients128[22], _mm_loadu_si128((const __m128i*)(pDecodedSamples - 23)))); + case 22: prediction = _mm_add_epi32(prediction, _mm_mullo_epi32(coefficients128[21], _mm_loadu_si128((const __m128i*)(pDecodedSamples - 22)))); + case 21: prediction = _mm_add_epi32(prediction, _mm_mullo_epi32(coefficients128[20], _mm_loadu_si128((const __m128i*)(pDecodedSamples - 21)))); + case 20: prediction = _mm_add_epi32(prediction, _mm_mullo_epi32(coefficients128[19], _mm_loadu_si128((const __m128i*)(pDecodedSamples - 20)))); + case 19: prediction = _mm_add_epi32(prediction, _mm_mullo_epi32(coefficients128[18], _mm_loadu_si128((const __m128i*)(pDecodedSamples - 19)))); + case 18: prediction = _mm_add_epi32(prediction, _mm_mullo_epi32(coefficients128[17], _mm_loadu_si128((const __m128i*)(pDecodedSamples - 18)))); + case 17: prediction = _mm_add_epi32(prediction, _mm_mullo_epi32(coefficients128[16], _mm_loadu_si128((const __m128i*)(pDecodedSamples - 17)))); + case 16: prediction = _mm_add_epi32(prediction, _mm_mullo_epi32(coefficients128[15], _mm_loadu_si128((const __m128i*)(pDecodedSamples - 16)))); + case 15: prediction = _mm_add_epi32(prediction, _mm_mullo_epi32(coefficients128[14], _mm_loadu_si128((const __m128i*)(pDecodedSamples - 15)))); + case 14: prediction = _mm_add_epi32(prediction, _mm_mullo_epi32(coefficients128[13], _mm_loadu_si128((const __m128i*)(pDecodedSamples - 14)))); + case 13: prediction = _mm_add_epi32(prediction, _mm_mullo_epi32(coefficients128[12], _mm_loadu_si128((const __m128i*)(pDecodedSamples - 13)))); + + case 12: prediction = _mm_add_epi32(prediction, _mm_mullo_epi32(coefficients128[11], s_09_10_11_12)); + case 11: prediction = _mm_add_epi32(prediction, _mm_mullo_epi32(coefficients128[10], drflac__mm_slide3_epi32(s_05_06_07_08, s_09_10_11_12))); + case 10: prediction = _mm_add_epi32(prediction, _mm_mullo_epi32(coefficients128[ 9], drflac__mm_slide2_epi32(s_05_06_07_08, s_09_10_11_12))); + case 9: prediction = _mm_add_epi32(prediction, _mm_mullo_epi32(coefficients128[ 8], drflac__mm_slide1_epi32(s_05_06_07_08, s_09_10_11_12))); + case 8: prediction = _mm_add_epi32(prediction, _mm_mullo_epi32(coefficients128[ 7], s_05_06_07_08)); + case 7: prediction = _mm_add_epi32(prediction, _mm_mullo_epi32(coefficients128[ 6], drflac__mm_slide3_epi32(s_01_02_03_04, s_05_06_07_08))); + case 6: prediction = _mm_add_epi32(prediction, _mm_mullo_epi32(coefficients128[ 5], drflac__mm_slide2_epi32(s_01_02_03_04, s_05_06_07_08))); + case 5: prediction = _mm_add_epi32(prediction, _mm_mullo_epi32(coefficients128[ 4], drflac__mm_slide1_epi32(s_01_02_03_04, s_05_06_07_08))); + case 4: prediction = _mm_add_epi32(prediction, _mm_mullo_epi32(coefficients128[ 3], s_01_02_03_04)); order = 3; // <-- Don't forget to set order to 3 here! + case 3: prediction = _mm_add_epi32(prediction, _mm_mullo_epi32(coefficients128[ 2], drflac__mm_slide3_epi32(_mm_setzero_si128(), s_01_02_03_04))); + case 2: prediction = _mm_add_epi32(prediction, _mm_mullo_epi32(coefficients128[ 1], drflac__mm_slide2_epi32(_mm_setzero_si128(), s_01_02_03_04))); + case 1: prediction = _mm_add_epi32(prediction, _mm_mullo_epi32(coefficients128[ 0], drflac__mm_slide1_epi32(_mm_setzero_si128(), s_01_02_03_04))); + } + + drflac_int32 predictions[4]; + _mm_storeu_si128((__m128i*)predictions, prediction); + + drflac_uint32 riceParamParts[4]; + _mm_storeu_si128((__m128i*)riceParamParts, riceParamParts128); + + predictions[0] = riceParamParts[0] + (predictions[0] >> shift); + + switch (order) + { + case 3: predictions[3] += ((const drflac_int32*)&coefficients128[ 2])[0] * predictions[ 0]; + case 2: predictions[2] += ((const drflac_int32*)&coefficients128[ 1])[0] * predictions[ 0]; + case 1: predictions[1] += ((const drflac_int32*)&coefficients128[ 0])[0] * predictions[ 0]; + } + predictions[1] = riceParamParts[1] + (predictions[1] >> shift); + + switch (order) + { + case 3: + case 2: predictions[3] += ((const drflac_int32*)&coefficients128[ 1])[0] * predictions[ 1]; + case 1: predictions[2] += ((const drflac_int32*)&coefficients128[ 0])[0] * predictions[ 1]; + } + predictions[2] = riceParamParts[2] + (predictions[2] >> shift); + + switch (order) + { + case 3: + case 2: + case 1: predictions[3] += ((const drflac_int32*)&coefficients128[ 0])[0] * predictions[ 2]; + } + predictions[3] = riceParamParts[3] + (predictions[3] >> shift); + + pDecodedSamples[0] = predictions[0]; + pDecodedSamples[1] = predictions[1]; + pDecodedSamples[2] = predictions[2]; + pDecodedSamples[3] = predictions[3]; + } else { + _mm_storeu_si128((__m128i*)pDecodedSamples, riceParamParts128); + } +} +#endif + +#if 0 +// Reference implementation for reading and decoding samples with residual. This is intentionally left unoptimized for the +// sake of readability and should only be used as a reference. +static drflac_bool32 drflac__decode_samples_with_residual__rice__reference(drflac_bs* bs, drflac_uint32 bitsPerSample, drflac_uint32 count, drflac_uint8 riceParam, drflac_uint32 order, drflac_int32 shift, const drflac_int32* coefficients, drflac_int32* pSamplesOut) +{ + drflac_assert(bs != NULL); + drflac_assert(count > 0); + drflac_assert(pSamplesOut != NULL); + + for (drflac_uint32 i = 0; i < count; ++i) { + drflac_uint32 zeroCounter = 0; + for (;;) { + drflac_uint8 bit; + if (!drflac__read_uint8(bs, 1, &bit)) { + return DRFLAC_FALSE; + } + + if (bit == 0) { + zeroCounter += 1; + } else { + break; + } + } + + drflac_uint32 decodedRice; + if (riceParam > 0) { + if (!drflac__read_uint32(bs, riceParam, &decodedRice)) { + return DRFLAC_FALSE; + } + } else { + decodedRice = 0; + } + + decodedRice |= (zeroCounter << riceParam); + if ((decodedRice & 0x01)) { + decodedRice = ~(decodedRice >> 1); + } else { + decodedRice = (decodedRice >> 1); + } + + + if (bitsPerSample > 16) { + pSamplesOut[i] = decodedRice + drflac__calculate_prediction_64(order, shift, coefficients, pSamplesOut + i); + } else { + pSamplesOut[i] = decodedRice + drflac__calculate_prediction_32(order, shift, coefficients, pSamplesOut + i); + } + } + + return DRFLAC_TRUE; +} +#endif + +#if 0 +static drflac_bool32 drflac__read_rice_parts__reference(drflac_bs* bs, drflac_uint8 riceParam, drflac_uint32* pZeroCounterOut, drflac_uint32* pRiceParamPartOut) +{ + drflac_uint32 zeroCounter = 0; + for (;;) { + drflac_uint8 bit; + if (!drflac__read_uint8(bs, 1, &bit)) { + return DRFLAC_FALSE; + } + + if (bit == 0) { + zeroCounter += 1; + } else { + break; + } + } + + drflac_uint32 decodedRice; + if (riceParam > 0) { + if (!drflac__read_uint32(bs, riceParam, &decodedRice)) { + return DRFLAC_FALSE; + } + } else { + decodedRice = 0; + } + + *pZeroCounterOut = zeroCounter; + *pRiceParamPartOut = decodedRice; + return DRFLAC_TRUE; +} +#endif + +#if 0 +static DRFLAC_INLINE drflac_bool32 drflac__read_rice_parts(drflac_bs* bs, drflac_uint8 riceParam, drflac_uint32* pZeroCounterOut, drflac_uint32* pRiceParamPartOut) +{ + drflac_assert(riceParam > 0); // <-- riceParam should never be 0. drflac__read_rice_parts__param_equals_zero() should be used instead for this case. + + drflac_cache_t riceParamMask = DRFLAC_CACHE_L1_SELECTION_MASK(riceParam); + + drflac_uint32 zeroCounter = 0; + while (bs->cache == 0) { + zeroCounter += (drflac_uint32)DRFLAC_CACHE_L1_BITS_REMAINING(bs); + if (!drflac__reload_cache(bs)) { + return DRFLAC_FALSE; + } + } + + drflac_uint32 setBitOffsetPlus1 = drflac__clz(bs->cache); + zeroCounter += setBitOffsetPlus1; + setBitOffsetPlus1 += 1; + + + drflac_uint32 riceParamPart; + drflac_uint32 riceLength = setBitOffsetPlus1 + riceParam; + if (riceLength < DRFLAC_CACHE_L1_BITS_REMAINING(bs)) { + riceParamPart = (drflac_uint32)((bs->cache & (riceParamMask >> setBitOffsetPlus1)) >> DRFLAC_CACHE_L1_SELECTION_SHIFT(bs, riceLength)); + + bs->consumedBits += riceLength; + bs->cache <<= riceLength; + } else { + bs->consumedBits += riceLength; + bs->cache <<= setBitOffsetPlus1 & (DRFLAC_CACHE_L1_SIZE_BITS(bs)-1); // <-- Equivalent to "if (setBitOffsetPlus1 < DRFLAC_CACHE_L1_SIZE_BITS(bs)) { bs->cache <<= setBitOffsetPlus1; }" + + // It straddles the cached data. It will never cover more than the next chunk. We just read the number in two parts and combine them. + drflac_uint32 bitCountLo = bs->consumedBits - DRFLAC_CACHE_L1_SIZE_BITS(bs); + drflac_cache_t resultHi = DRFLAC_CACHE_L1_SELECT_AND_SHIFT(bs, riceParam); // <-- Use DRFLAC_CACHE_L1_SELECT_AND_SHIFT_SAFE() if ever this function allows riceParam=0. + + if (bs->nextL2Line < DRFLAC_CACHE_L2_LINE_COUNT(bs)) { +#ifndef DR_FLAC_NO_CRC + drflac__update_crc16(bs); +#endif + bs->cache = drflac__be2host__cache_line(bs->cacheL2[bs->nextL2Line++]); + bs->consumedBits = 0; +#ifndef DR_FLAC_NO_CRC + bs->crc16Cache = bs->cache; +#endif + } else { + // Slow path. We need to fetch more data from the client. + if (!drflac__reload_cache(bs)) { + return DRFLAC_FALSE; + } + } + + riceParamPart = (drflac_uint32)(resultHi | DRFLAC_CACHE_L1_SELECT_AND_SHIFT_SAFE(bs, bitCountLo)); + + bs->consumedBits += bitCountLo; + bs->cache <<= bitCountLo; + } + + pZeroCounterOut[0] = zeroCounter; + pRiceParamPartOut[0] = riceParamPart; + + return DRFLAC_TRUE; +} +#endif + +static DRFLAC_INLINE drflac_bool32 drflac__read_rice_parts_x1(drflac_bs* bs, drflac_uint8 riceParam, drflac_uint32* pZeroCounterOut, drflac_uint32* pRiceParamPartOut) +{ + drflac_uint32 riceParamPlus1 = riceParam + 1; + //drflac_cache_t riceParamPlus1Mask = DRFLAC_CACHE_L1_SELECTION_MASK(riceParamPlus1); + drflac_uint32 riceParamPlus1Shift = DRFLAC_CACHE_L1_SELECTION_SHIFT(bs, riceParamPlus1); + drflac_uint32 riceParamPlus1MaxConsumedBits = DRFLAC_CACHE_L1_SIZE_BITS(bs) - riceParamPlus1; + + // The idea here is to use local variables for the cache in an attempt to encourage the compiler to store them in registers. I have + // no idea how this will work in practice... + drflac_cache_t bs_cache = bs->cache; + drflac_uint32 bs_consumedBits = bs->consumedBits; + + // The first thing to do is find the first unset bit. Most likely a bit will be set in the current cache line. + drflac_uint32 lzcount = drflac__clz(bs_cache); + if (lzcount < sizeof(bs_cache)*8) { + pZeroCounterOut[0] = lzcount; + + // It is most likely that the riceParam part (which comes after the zero counter) is also on this cache line. When extracting + // this, we include the set bit from the unary coded part because it simplifies cache management. This bit will be handled + // outside of this function at a higher level. + extract_rice_param_part: + bs_cache <<= lzcount; + bs_consumedBits += lzcount; + + if (bs_consumedBits <= riceParamPlus1MaxConsumedBits) { + // Getting here means the rice parameter part is wholly contained within the current cache line. + pRiceParamPartOut[0] = (drflac_uint32)(bs_cache >> riceParamPlus1Shift); + bs_cache <<= riceParamPlus1; + bs_consumedBits += riceParamPlus1; + } else { + // Getting here means the rice parameter part straddles the cache line. We need to read from the tail of the current cache + // line, reload the cache, and then combine it with the head of the next cache line. + + // Grab the high part of the rice parameter part. + drflac_uint32 riceParamPartHi = (drflac_uint32)(bs_cache >> riceParamPlus1Shift); + + // Before reloading the cache we need to grab the size in bits of the low part. + drflac_uint32 riceParamPartLoBitCount = bs_consumedBits - riceParamPlus1MaxConsumedBits; + drflac_assert(riceParamPartLoBitCount > 0 && riceParamPartLoBitCount < 32); + + // Now reload the cache. + if (bs->nextL2Line < DRFLAC_CACHE_L2_LINE_COUNT(bs)) { + #ifndef DR_FLAC_NO_CRC + drflac__update_crc16(bs); + #endif + bs_cache = drflac__be2host__cache_line(bs->cacheL2[bs->nextL2Line++]); + bs_consumedBits = riceParamPartLoBitCount; + #ifndef DR_FLAC_NO_CRC + bs->crc16Cache = bs_cache; + #endif + } else { + // Slow path. We need to fetch more data from the client. + if (!drflac__reload_cache(bs)) { + return DRFLAC_FALSE; + } + + bs_cache = bs->cache; + bs_consumedBits = bs->consumedBits + riceParamPartLoBitCount; + } + + // We should now have enough information to construct the rice parameter part. + drflac_uint32 riceParamPartLo = (drflac_uint32)(bs_cache >> (DRFLAC_CACHE_L1_SELECTION_SHIFT(bs, riceParamPartLoBitCount))); + pRiceParamPartOut[0] = riceParamPartHi | riceParamPartLo; + + bs_cache <<= riceParamPartLoBitCount; + } + } else { + // Getting here means there are no bits set on the cache line. This is a less optimal case because we just wasted a call + // to drflac__clz() and we need to reload the cache. + drflac_uint32 zeroCounter = (drflac_uint32)(DRFLAC_CACHE_L1_SIZE_BITS(bs) - bs_consumedBits); + for (;;) { + if (bs->nextL2Line < DRFLAC_CACHE_L2_LINE_COUNT(bs)) { + #ifndef DR_FLAC_NO_CRC + drflac__update_crc16(bs); + #endif + bs_cache = drflac__be2host__cache_line(bs->cacheL2[bs->nextL2Line++]); + bs_consumedBits = 0; + #ifndef DR_FLAC_NO_CRC + bs->crc16Cache = bs_cache; + #endif + } else { + // Slow path. We need to fetch more data from the client. + if (!drflac__reload_cache(bs)) { + return DRFLAC_FALSE; + } + + bs_cache = bs->cache; + bs_consumedBits = bs->consumedBits; + } + + lzcount = drflac__clz(bs_cache); + zeroCounter += lzcount; + + if (lzcount < sizeof(bs_cache)*8) { + break; + } + } + + pZeroCounterOut[0] = zeroCounter; + goto extract_rice_param_part; + } + + // Make sure the cache is restored at the end of it all. + bs->cache = bs_cache; + bs->consumedBits = bs_consumedBits; + + return DRFLAC_TRUE; +} + +static DRFLAC_INLINE drflac_bool32 drflac__read_rice_parts_x4(drflac_bs* bs, drflac_uint8 riceParam, drflac_uint32* pZeroCounterOut, drflac_uint32* pRiceParamPartOut) +{ + drflac_uint32 riceParamPlus1 = riceParam + 1; + //drflac_cache_t riceParamPlus1Mask = DRFLAC_CACHE_L1_SELECTION_MASK(riceParamPlus1); + drflac_uint32 riceParamPlus1Shift = DRFLAC_CACHE_L1_SELECTION_SHIFT(bs, riceParamPlus1); + drflac_uint32 riceParamPlus1MaxConsumedBits = DRFLAC_CACHE_L1_SIZE_BITS(bs) - riceParamPlus1; + + // The idea here is to use local variables for the cache in an attempt to encourage the compiler to store them in registers. I have + // no idea how this will work in practice... + drflac_cache_t bs_cache = bs->cache; + drflac_uint32 bs_consumedBits = bs->consumedBits; + + // What this is doing is trying to efficiently extract 4 rice parts at a time, the idea being that we can exploit certain properties + // to our advantage to make things more efficient. + for (int i = 0; i < 4; ++i) { + // The first thing to do is find the first unset bit. Most likely a bit will be set in the current cache line. + drflac_uint32 lzcount = drflac__clz(bs_cache); + if (lzcount < sizeof(bs_cache)*8) { + pZeroCounterOut[i] = lzcount; + + // It is most likely that the riceParam part (which comes after the zero counter) is also on this cache line. When extracting + // this, we include the set bit from the unary coded part because it simplifies cache management. This bit will be handled + // outside of this function at a higher level. + extract_rice_param_part: + bs_cache <<= lzcount; + bs_consumedBits += lzcount; + + if (bs_consumedBits <= riceParamPlus1MaxConsumedBits) { + // Getting here means the rice parameter part is wholly contained within the current cache line. + pRiceParamPartOut[i] = (drflac_uint32)(bs_cache >> riceParamPlus1Shift); + bs_cache <<= riceParamPlus1; + bs_consumedBits += riceParamPlus1; + } else { + // Getting here means the rice parameter part straddles the cache line. We need to read from the tail of the current cache + // line, reload the cache, and then combine it with the head of the next cache line. + + // Grab the high part of the rice parameter part. + drflac_uint32 riceParamPartHi = (drflac_uint32)(bs_cache >> riceParamPlus1Shift); + + // Before reloading the cache we need to grab the size in bits of the low part. + drflac_uint32 riceParamPartLoBitCount = bs_consumedBits - riceParamPlus1MaxConsumedBits; + + // Now reload the cache. + if (bs->nextL2Line < DRFLAC_CACHE_L2_LINE_COUNT(bs)) { + #ifndef DR_FLAC_NO_CRC + drflac__update_crc16(bs); + #endif + bs_cache = drflac__be2host__cache_line(bs->cacheL2[bs->nextL2Line++]); + bs_consumedBits = riceParamPartLoBitCount; + #ifndef DR_FLAC_NO_CRC + bs->crc16Cache = bs_cache; + #endif + } else { + // Slow path. We need to fetch more data from the client. + if (!drflac__reload_cache(bs)) { + return DRFLAC_FALSE; + } + + bs_cache = bs->cache; + bs_consumedBits = bs->consumedBits + riceParamPartLoBitCount; + } + + // We should now have enough information to construct the rice parameter part. + drflac_uint32 riceParamPartLo = (drflac_uint32)(bs_cache >> (DRFLAC_CACHE_L1_SELECTION_SHIFT(bs, riceParamPartLoBitCount))); + pRiceParamPartOut[i] = riceParamPartHi | riceParamPartLo; + + bs_cache <<= riceParamPartLoBitCount; + } + } else { + // Getting here means there are no bits set on the cache line. This is a less optimal case because we just wasted a call + // to drflac__clz() and we need to reload the cache. + drflac_uint32 zeroCounter = (drflac_uint32)(DRFLAC_CACHE_L1_SIZE_BITS(bs) - bs_consumedBits); + for (;;) { + if (bs->nextL2Line < DRFLAC_CACHE_L2_LINE_COUNT(bs)) { + #ifndef DR_FLAC_NO_CRC + drflac__update_crc16(bs); + #endif + bs_cache = drflac__be2host__cache_line(bs->cacheL2[bs->nextL2Line++]); + bs_consumedBits = 0; + #ifndef DR_FLAC_NO_CRC + bs->crc16Cache = bs_cache; + #endif + } else { + // Slow path. We need to fetch more data from the client. + if (!drflac__reload_cache(bs)) { + return DRFLAC_FALSE; + } + + bs_cache = bs->cache; + bs_consumedBits = bs->consumedBits; + } + + lzcount = drflac__clz(bs_cache); + zeroCounter += lzcount; + + if (lzcount < sizeof(bs_cache)*8) { + break; + } + } + + pZeroCounterOut[i] = zeroCounter; + goto extract_rice_param_part; + } + } + + // Make sure the cache is restored at the end of it all. + bs->cache = bs_cache; + bs->consumedBits = bs_consumedBits; + + return DRFLAC_TRUE; +} + +static DRFLAC_INLINE drflac_bool32 drflac__seek_rice_parts(drflac_bs* bs, drflac_uint8 riceParam) +{ + drflac_uint32 riceParamPlus1 = riceParam + 1; + drflac_uint32 riceParamPlus1MaxConsumedBits = DRFLAC_CACHE_L1_SIZE_BITS(bs) - riceParamPlus1; + + // The idea here is to use local variables for the cache in an attempt to encourage the compiler to store them in registers. I have + // no idea how this will work in practice... + drflac_cache_t bs_cache = bs->cache; + drflac_uint32 bs_consumedBits = bs->consumedBits; + + // The first thing to do is find the first unset bit. Most likely a bit will be set in the current cache line. + drflac_uint32 lzcount = drflac__clz(bs_cache); + if (lzcount < sizeof(bs_cache)*8) { + // It is most likely that the riceParam part (which comes after the zero counter) is also on this cache line. When extracting + // this, we include the set bit from the unary coded part because it simplifies cache management. This bit will be handled + // outside of this function at a higher level. + extract_rice_param_part: + bs_cache <<= lzcount; + bs_consumedBits += lzcount; + + if (bs_consumedBits <= riceParamPlus1MaxConsumedBits) { + // Getting here means the rice parameter part is wholly contained within the current cache line. + bs_cache <<= riceParamPlus1; + bs_consumedBits += riceParamPlus1; + } else { + // Getting here means the rice parameter part straddles the cache line. We need to read from the tail of the current cache + // line, reload the cache, and then combine it with the head of the next cache line. + + // Before reloading the cache we need to grab the size in bits of the low part. + drflac_uint32 riceParamPartLoBitCount = bs_consumedBits - riceParamPlus1MaxConsumedBits; + drflac_assert(riceParamPartLoBitCount > 0 && riceParamPartLoBitCount < 32); + + // Now reload the cache. + if (bs->nextL2Line < DRFLAC_CACHE_L2_LINE_COUNT(bs)) { + #ifndef DR_FLAC_NO_CRC + drflac__update_crc16(bs); + #endif + bs_cache = drflac__be2host__cache_line(bs->cacheL2[bs->nextL2Line++]); + bs_consumedBits = riceParamPartLoBitCount; + #ifndef DR_FLAC_NO_CRC + bs->crc16Cache = bs_cache; + #endif + } else { + // Slow path. We need to fetch more data from the client. + if (!drflac__reload_cache(bs)) { + return DRFLAC_FALSE; + } + + bs_cache = bs->cache; + bs_consumedBits = bs->consumedBits + riceParamPartLoBitCount; + } + + bs_cache <<= riceParamPartLoBitCount; + } + } else { + // Getting here means there are no bits set on the cache line. This is a less optimal case because we just wasted a call + // to drflac__clz() and we need to reload the cache. + for (;;) { + if (bs->nextL2Line < DRFLAC_CACHE_L2_LINE_COUNT(bs)) { + #ifndef DR_FLAC_NO_CRC + drflac__update_crc16(bs); + #endif + bs_cache = drflac__be2host__cache_line(bs->cacheL2[bs->nextL2Line++]); + bs_consumedBits = 0; + #ifndef DR_FLAC_NO_CRC + bs->crc16Cache = bs_cache; + #endif + } else { + // Slow path. We need to fetch more data from the client. + if (!drflac__reload_cache(bs)) { + return DRFLAC_FALSE; + } + + bs_cache = bs->cache; + bs_consumedBits = bs->consumedBits; + } + + lzcount = drflac__clz(bs_cache); + if (lzcount < sizeof(bs_cache)*8) { + break; + } + } + + goto extract_rice_param_part; + } + + // Make sure the cache is restored at the end of it all. + bs->cache = bs_cache; + bs->consumedBits = bs_consumedBits; + + return DRFLAC_TRUE; +} + + +static drflac_bool32 drflac__decode_samples_with_residual__rice__scalar(drflac_bs* bs, drflac_uint32 bitsPerSample, drflac_uint32 count, drflac_uint8 riceParam, drflac_uint32 order, drflac_int32 shift, const drflac_int32* coefficients, drflac_int32* pSamplesOut) +{ + drflac_assert(bs != NULL); + drflac_assert(count > 0); + drflac_assert(pSamplesOut != NULL); + + drflac_uint32 t[2] = {0x00000000, 0xFFFFFFFF}; + + drflac_uint32 zeroCountPart0; + drflac_uint32 zeroCountPart1; + drflac_uint32 zeroCountPart2; + drflac_uint32 zeroCountPart3; + drflac_uint32 riceParamPart0; + drflac_uint32 riceParamPart1; + drflac_uint32 riceParamPart2; + drflac_uint32 riceParamPart3; + drflac_uint32 riceParamMask = ~((~0UL) << riceParam); + const drflac_int32* pSamplesOutEnd = pSamplesOut + ((count >> 2) << 2); + + if (bitsPerSample >= 24) { + while (pSamplesOut < pSamplesOutEnd) { + // Rice extraction. It's faster to do this one at a time against local variables than it is to use the x4 version + // against an array. Not sure why, but perhaps it's making more efficient use of registers? + if (!drflac__read_rice_parts_x1(bs, riceParam, &zeroCountPart0, &riceParamPart0) || + !drflac__read_rice_parts_x1(bs, riceParam, &zeroCountPart1, &riceParamPart1) || + !drflac__read_rice_parts_x1(bs, riceParam, &zeroCountPart2, &riceParamPart2) || + !drflac__read_rice_parts_x1(bs, riceParam, &zeroCountPart3, &riceParamPart3)) { + return DRFLAC_FALSE; + } + + riceParamPart0 &= riceParamMask; + riceParamPart1 &= riceParamMask; + riceParamPart2 &= riceParamMask; + riceParamPart3 &= riceParamMask; + + riceParamPart0 |= (zeroCountPart0 << riceParam); + riceParamPart1 |= (zeroCountPart1 << riceParam); + riceParamPart2 |= (zeroCountPart2 << riceParam); + riceParamPart3 |= (zeroCountPart3 << riceParam); + + riceParamPart0 = (riceParamPart0 >> 1) ^ t[riceParamPart0 & 0x01]; + riceParamPart1 = (riceParamPart1 >> 1) ^ t[riceParamPart1 & 0x01]; + riceParamPart2 = (riceParamPart2 >> 1) ^ t[riceParamPart2 & 0x01]; + riceParamPart3 = (riceParamPart3 >> 1) ^ t[riceParamPart3 & 0x01]; + + pSamplesOut[0] = riceParamPart0 + drflac__calculate_prediction_64(order, shift, coefficients, pSamplesOut + 0); + pSamplesOut[1] = riceParamPart1 + drflac__calculate_prediction_64(order, shift, coefficients, pSamplesOut + 1); + pSamplesOut[2] = riceParamPart2 + drflac__calculate_prediction_64(order, shift, coefficients, pSamplesOut + 2); + pSamplesOut[3] = riceParamPart3 + drflac__calculate_prediction_64(order, shift, coefficients, pSamplesOut + 3); + + pSamplesOut += 4; + } + } else { + while (pSamplesOut < pSamplesOutEnd) { + if (!drflac__read_rice_parts_x1(bs, riceParam, &zeroCountPart0, &riceParamPart0) || + !drflac__read_rice_parts_x1(bs, riceParam, &zeroCountPart1, &riceParamPart1) || + !drflac__read_rice_parts_x1(bs, riceParam, &zeroCountPart2, &riceParamPart2) || + !drflac__read_rice_parts_x1(bs, riceParam, &zeroCountPart3, &riceParamPart3)) { + return DRFLAC_FALSE; + } + + riceParamPart0 &= riceParamMask; + riceParamPart1 &= riceParamMask; + riceParamPart2 &= riceParamMask; + riceParamPart3 &= riceParamMask; + + riceParamPart0 |= (zeroCountPart0 << riceParam); + riceParamPart1 |= (zeroCountPart1 << riceParam); + riceParamPart2 |= (zeroCountPart2 << riceParam); + riceParamPart3 |= (zeroCountPart3 << riceParam); + + riceParamPart0 = (riceParamPart0 >> 1) ^ t[riceParamPart0 & 0x01]; + riceParamPart1 = (riceParamPart1 >> 1) ^ t[riceParamPart1 & 0x01]; + riceParamPart2 = (riceParamPart2 >> 1) ^ t[riceParamPart2 & 0x01]; + riceParamPart3 = (riceParamPart3 >> 1) ^ t[riceParamPart3 & 0x01]; + + pSamplesOut[0] = riceParamPart0 + drflac__calculate_prediction_32(order, shift, coefficients, pSamplesOut + 0); + pSamplesOut[1] = riceParamPart1 + drflac__calculate_prediction_32(order, shift, coefficients, pSamplesOut + 1); + pSamplesOut[2] = riceParamPart2 + drflac__calculate_prediction_32(order, shift, coefficients, pSamplesOut + 2); + pSamplesOut[3] = riceParamPart3 + drflac__calculate_prediction_32(order, shift, coefficients, pSamplesOut + 3); + + pSamplesOut += 4; + } + } + + + + drflac_uint32 i = ((count >> 2) << 2); + while (i < count) { + // Rice extraction. + if (!drflac__read_rice_parts_x1(bs, riceParam, &zeroCountPart0, &riceParamPart0)) { + return DRFLAC_FALSE; + } + + // Rice reconstruction. + riceParamPart0 &= riceParamMask; + riceParamPart0 |= (zeroCountPart0 << riceParam); + riceParamPart0 = (riceParamPart0 >> 1) ^ t[riceParamPart0 & 0x01]; + //riceParamPart0 = (riceParamPart0 >> 1) ^ (~(riceParamPart0 & 0x01) + 1); + + // Sample reconstruction. + if (bitsPerSample >= 24) { + pSamplesOut[0] = riceParamPart0 + drflac__calculate_prediction_64(order, shift, coefficients, pSamplesOut + 0); + } else { + pSamplesOut[0] = riceParamPart0 + drflac__calculate_prediction_32(order, shift, coefficients, pSamplesOut + 0); + } + + i += 1; + pSamplesOut += 1; + } + + return DRFLAC_TRUE; +} + +#if defined(DRFLAC_SUPPORT_SSE41) +static drflac_bool32 drflac__decode_samples_with_residual__rice__sse41(drflac_bs* bs, drflac_uint32 bitsPerSample, drflac_uint32 count, drflac_uint8 riceParam, drflac_uint32 order, drflac_int32 shift, const drflac_int32* coefficients, drflac_int32* pSamplesOut) +{ + drflac_assert(bs != NULL); + drflac_assert(count > 0); + drflac_assert(pSamplesOut != NULL); + + static drflac_uint32 t[2] = {0x00000000, 0xFFFFFFFF}; + + //drflac_uint32 zeroCountParts[4]; + //drflac_uint32 riceParamParts[4]; + + drflac_uint32 zeroCountParts0; + drflac_uint32 zeroCountParts1; + drflac_uint32 zeroCountParts2; + drflac_uint32 zeroCountParts3; + drflac_uint32 riceParamParts0; + drflac_uint32 riceParamParts1; + drflac_uint32 riceParamParts2; + drflac_uint32 riceParamParts3; + + drflac_uint32 riceParamMask = ~((~0UL) << riceParam); + __m128i riceParamMask128 = _mm_set1_epi32(riceParamMask); + __m128i one = _mm_set1_epi32(0x01); + + const drflac_int32* pSamplesOutEnd = pSamplesOut + ((count >> 2) << 2); + + if (bitsPerSample >= 24) { + while (pSamplesOut < pSamplesOutEnd) { + // Rice extraction. + if (!drflac__read_rice_parts_x1(bs, riceParam, &zeroCountParts0, &riceParamParts0) || + !drflac__read_rice_parts_x1(bs, riceParam, &zeroCountParts1, &riceParamParts1) || + !drflac__read_rice_parts_x1(bs, riceParam, &zeroCountParts2, &riceParamParts2) || + !drflac__read_rice_parts_x1(bs, riceParam, &zeroCountParts3, &riceParamParts3)) { + return DRFLAC_FALSE; + } + + __m128i zeroCountPart128 = _mm_set_epi32(zeroCountParts3, zeroCountParts2, zeroCountParts1, zeroCountParts0); + __m128i riceParamPart128 = _mm_set_epi32(riceParamParts3, riceParamParts2, riceParamParts1, riceParamParts0); + + riceParamPart128 = _mm_and_si128(riceParamPart128, riceParamMask128); + riceParamPart128 = _mm_or_si128(riceParamPart128, _mm_slli_epi32(zeroCountPart128, riceParam)); + riceParamPart128 = _mm_xor_si128(_mm_srli_epi32(riceParamPart128, 1), _mm_mullo_epi32(_mm_and_si128(riceParamPart128, one), _mm_set1_epi32(0xFFFFFFFF))); // <-- Only supported from SSE4.1 + //riceParamPart128 = _mm_xor_si128(_mm_srli_epi32(riceParamPart128, 1), _mm_add_epi32(drflac__mm_not_si128(_mm_and_si128(riceParamPart128, one)), one)); // <-- SSE2 compatible + + drflac_uint32 riceParamParts[4]; + _mm_storeu_si128((__m128i*)riceParamParts, riceParamPart128); + + #if defined(DRFLAC_64BIT) + // The scalar implementation seems to be faster on 64-bit in my testing. + drflac__calculate_prediction_64_x4(order, shift, coefficients, riceParamParts, pSamplesOut); + #else + pSamplesOut[0] = riceParamParts[0] + drflac__calculate_prediction_64__sse41(order, shift, coefficients, pSamplesOut + 0); + pSamplesOut[1] = riceParamParts[1] + drflac__calculate_prediction_64__sse41(order, shift, coefficients, pSamplesOut + 1); + pSamplesOut[2] = riceParamParts[2] + drflac__calculate_prediction_64__sse41(order, shift, coefficients, pSamplesOut + 2); + pSamplesOut[3] = riceParamParts[3] + drflac__calculate_prediction_64__sse41(order, shift, coefficients, pSamplesOut + 3); + #endif + + pSamplesOut += 4; + } + } else { + drflac_int32 coefficientsUnaligned[32*4 + 4] = {0}; + drflac_int32* coefficients128 = (drflac_int32*)(((size_t)coefficientsUnaligned + 15) & ~15); + for (drflac_uint32 i = 0; i < order; ++i) { + coefficients128[i*4+0] = coefficients[i]; + coefficients128[i*4+1] = coefficients[i]; + coefficients128[i*4+2] = coefficients[i]; + coefficients128[i*4+3] = coefficients[i]; + } + + while (pSamplesOut < pSamplesOutEnd) { + // Rice extraction. +#if 1 + if (!drflac__read_rice_parts_x1(bs, riceParam, &zeroCountParts0, &riceParamParts0) || + !drflac__read_rice_parts_x1(bs, riceParam, &zeroCountParts1, &riceParamParts1) || + !drflac__read_rice_parts_x1(bs, riceParam, &zeroCountParts2, &riceParamParts2) || + !drflac__read_rice_parts_x1(bs, riceParam, &zeroCountParts3, &riceParamParts3)) { + return DRFLAC_FALSE; + } + + __m128i zeroCountPart128 = _mm_set_epi32(zeroCountParts3, zeroCountParts2, zeroCountParts1, zeroCountParts0); + __m128i riceParamPart128 = _mm_set_epi32(riceParamParts3, riceParamParts2, riceParamParts1, riceParamParts0); +#else + if (!drflac__read_rice_parts_x4(bs, riceParam, zeroCountParts, riceParamParts)) { + return DRFLAC_FALSE; + } + + __m128i zeroCountPart128 = _mm_set_epi32(zeroCountParts[3], zeroCountParts[2], zeroCountParts[1], zeroCountParts[0]); + __m128i riceParamPart128 = _mm_set_epi32(riceParamParts[3], riceParamParts[2], riceParamParts[1], riceParamParts[0]); +#endif + + riceParamPart128 = _mm_and_si128(riceParamPart128, riceParamMask128); + riceParamPart128 = _mm_or_si128(riceParamPart128, _mm_slli_epi32(zeroCountPart128, riceParam)); + riceParamPart128 = _mm_xor_si128(_mm_srli_epi32(riceParamPart128, 1), _mm_mullo_epi32(_mm_and_si128(riceParamPart128, one), _mm_set1_epi32(0xFFFFFFFF))); + +#if 1 + drflac__calculate_prediction_32_x4__sse41(order, shift, (const __m128i*)coefficients128, riceParamPart128, pSamplesOut); +#else + drflac_int32 riceParamParts[4]; + _mm_storeu_si128((__m128i*)riceParamParts, riceParamPart128); + + pSamplesOut[0] = riceParamParts[0] + drflac__calculate_prediction_32(order, shift, coefficients, pSamplesOut + 0); + pSamplesOut[1] = riceParamParts[1] + drflac__calculate_prediction_32(order, shift, coefficients, pSamplesOut + 1); + pSamplesOut[2] = riceParamParts[2] + drflac__calculate_prediction_32(order, shift, coefficients, pSamplesOut + 2); + pSamplesOut[3] = riceParamParts[3] + drflac__calculate_prediction_32(order, shift, coefficients, pSamplesOut + 3); +#endif + + pSamplesOut += 4; + } + } + + + drflac_uint32 i = ((count >> 2) << 2); + while (i < count) { + // Rice extraction. + if (!drflac__read_rice_parts_x1(bs, riceParam, &zeroCountParts0, &riceParamParts0)) { + return DRFLAC_FALSE; + } + + // Rice reconstruction. + riceParamParts0 &= riceParamMask; + riceParamParts0 |= (zeroCountParts0 << riceParam); + riceParamParts0 = (riceParamParts0 >> 1) ^ t[riceParamParts0 & 0x01]; + + // Sample reconstruction. + if (bitsPerSample >= 24) { + pSamplesOut[0] = riceParamParts0 + drflac__calculate_prediction_64(order, shift, coefficients, pSamplesOut + 0); + } else { + pSamplesOut[0] = riceParamParts0 + drflac__calculate_prediction_32(order, shift, coefficients, pSamplesOut + 0); + } + + i += 1; + pSamplesOut += 1; + } + + return DRFLAC_TRUE; +} +#endif + +static drflac_bool32 drflac__decode_samples_with_residual__rice(drflac_bs* bs, drflac_uint32 bitsPerSample, drflac_uint32 count, drflac_uint8 riceParam, drflac_uint32 order, drflac_int32 shift, const drflac_int32* coefficients, drflac_int32* pSamplesOut) +{ +#if defined(DRFLAC_SUPPORT_SSE41) + if (drflac__gIsSSE41Supported) { + return drflac__decode_samples_with_residual__rice__sse41(bs, bitsPerSample, count, riceParam, order, shift, coefficients, pSamplesOut); + } else +#endif + { + // Scalar fallback. + #if 0 + return drflac__decode_samples_with_residual__rice__reference(bs, bitsPerSample, count, riceParam, order, shift, coefficients, pSamplesOut); + #else + return drflac__decode_samples_with_residual__rice__scalar(bs, bitsPerSample, count, riceParam, order, shift, coefficients, pSamplesOut); + #endif + } +} + +// Reads and seeks past a string of residual values as Rice codes. The decoder should be sitting on the first bit of the Rice codes. +static drflac_bool32 drflac__read_and_seek_residual__rice(drflac_bs* bs, drflac_uint32 count, drflac_uint8 riceParam) +{ + drflac_assert(bs != NULL); + drflac_assert(count > 0); + + for (drflac_uint32 i = 0; i < count; ++i) { + if (!drflac__seek_rice_parts(bs, riceParam)) { + return DRFLAC_FALSE; + } + } + + return DRFLAC_TRUE; +} + +static drflac_bool32 drflac__decode_samples_with_residual__unencoded(drflac_bs* bs, drflac_uint32 bitsPerSample, drflac_uint32 count, drflac_uint8 unencodedBitsPerSample, drflac_uint32 order, drflac_int32 shift, const drflac_int32* coefficients, drflac_int32* pSamplesOut) +{ + drflac_assert(bs != NULL); + drflac_assert(count > 0); + drflac_assert(unencodedBitsPerSample <= 31); // <-- unencodedBitsPerSample is a 5 bit number, so cannot exceed 31. + drflac_assert(pSamplesOut != NULL); + + for (unsigned int i = 0; i < count; ++i) { + if (unencodedBitsPerSample > 0) { + if (!drflac__read_int32(bs, unencodedBitsPerSample, pSamplesOut + i)) { + return DRFLAC_FALSE; + } + } else { + pSamplesOut[i] = 0; + } + + if (bitsPerSample > 16) { + pSamplesOut[i] += drflac__calculate_prediction_64(order, shift, coefficients, pSamplesOut + i); + } else { + pSamplesOut[i] += drflac__calculate_prediction_32(order, shift, coefficients, pSamplesOut + i); + } + } + + return DRFLAC_TRUE; +} + + +// Reads and decodes the residual for the sub-frame the decoder is currently sitting on. This function should be called +// when the decoder is sitting at the very start of the RESIDUAL block. The first residuals will be ignored. The +// and parameters are used to determine how many residual values need to be decoded. +static drflac_bool32 drflac__decode_samples_with_residual(drflac_bs* bs, drflac_uint32 bitsPerSample, drflac_uint32 blockSize, drflac_uint32 order, drflac_int32 shift, const drflac_int32* coefficients, drflac_int32* pDecodedSamples) +{ + drflac_assert(bs != NULL); + drflac_assert(blockSize != 0); + drflac_assert(pDecodedSamples != NULL); // <-- Should we allow NULL, in which case we just seek past the residual rather than do a full decode? + + drflac_uint8 residualMethod; + if (!drflac__read_uint8(bs, 2, &residualMethod)) { + return DRFLAC_FALSE; + } + + if (residualMethod != DRFLAC_RESIDUAL_CODING_METHOD_PARTITIONED_RICE && residualMethod != DRFLAC_RESIDUAL_CODING_METHOD_PARTITIONED_RICE2) { + return DRFLAC_FALSE; // Unknown or unsupported residual coding method. + } + + // Ignore the first values. + pDecodedSamples += order; + + + drflac_uint8 partitionOrder; + if (!drflac__read_uint8(bs, 4, &partitionOrder)) { + return DRFLAC_FALSE; + } + + // From the FLAC spec: + // The Rice partition order in a Rice-coded residual section must be less than or equal to 8. + if (partitionOrder > 8) { + return DRFLAC_FALSE; + } + + // Validation check. + if ((blockSize / (1 << partitionOrder)) <= order) { + return DRFLAC_FALSE; + } + + drflac_uint32 samplesInPartition = (blockSize / (1 << partitionOrder)) - order; + drflac_uint32 partitionsRemaining = (1 << partitionOrder); + for (;;) { + drflac_uint8 riceParam = 0; + if (residualMethod == DRFLAC_RESIDUAL_CODING_METHOD_PARTITIONED_RICE) { + if (!drflac__read_uint8(bs, 4, &riceParam)) { + return DRFLAC_FALSE; + } + if (riceParam == 15) { + riceParam = 0xFF; + } + } else if (residualMethod == DRFLAC_RESIDUAL_CODING_METHOD_PARTITIONED_RICE2) { + if (!drflac__read_uint8(bs, 5, &riceParam)) { + return DRFLAC_FALSE; + } + if (riceParam == 31) { + riceParam = 0xFF; + } + } + + if (riceParam != 0xFF) { + if (!drflac__decode_samples_with_residual__rice(bs, bitsPerSample, samplesInPartition, riceParam, order, shift, coefficients, pDecodedSamples)) { + return DRFLAC_FALSE; + } + } else { + unsigned char unencodedBitsPerSample = 0; + if (!drflac__read_uint8(bs, 5, &unencodedBitsPerSample)) { + return DRFLAC_FALSE; + } + + if (!drflac__decode_samples_with_residual__unencoded(bs, bitsPerSample, samplesInPartition, unencodedBitsPerSample, order, shift, coefficients, pDecodedSamples)) { + return DRFLAC_FALSE; + } + } + + pDecodedSamples += samplesInPartition; + + + if (partitionsRemaining == 1) { + break; + } + + partitionsRemaining -= 1; + + if (partitionOrder != 0) { + samplesInPartition = blockSize / (1 << partitionOrder); + } + } + + return DRFLAC_TRUE; +} + +// Reads and seeks past the residual for the sub-frame the decoder is currently sitting on. This function should be called +// when the decoder is sitting at the very start of the RESIDUAL block. The first residuals will be set to 0. The +// and parameters are used to determine how many residual values need to be decoded. +static drflac_bool32 drflac__read_and_seek_residual(drflac_bs* bs, drflac_uint32 blockSize, drflac_uint32 order) +{ + drflac_assert(bs != NULL); + drflac_assert(blockSize != 0); + + drflac_uint8 residualMethod; + if (!drflac__read_uint8(bs, 2, &residualMethod)) { + return DRFLAC_FALSE; + } + + if (residualMethod != DRFLAC_RESIDUAL_CODING_METHOD_PARTITIONED_RICE && residualMethod != DRFLAC_RESIDUAL_CODING_METHOD_PARTITIONED_RICE2) { + return DRFLAC_FALSE; // Unknown or unsupported residual coding method. + } + + drflac_uint8 partitionOrder; + if (!drflac__read_uint8(bs, 4, &partitionOrder)) { + return DRFLAC_FALSE; + } + + // From the FLAC spec: + // The Rice partition order in a Rice-coded residual section must be less than or equal to 8. + if (partitionOrder > 8) { + return DRFLAC_FALSE; + } + + // Validation check. + if ((blockSize / (1 << partitionOrder)) <= order) { + return DRFLAC_FALSE; + } + + drflac_uint32 samplesInPartition = (blockSize / (1 << partitionOrder)) - order; + drflac_uint32 partitionsRemaining = (1 << partitionOrder); + for (;;) + { + drflac_uint8 riceParam = 0; + if (residualMethod == DRFLAC_RESIDUAL_CODING_METHOD_PARTITIONED_RICE) { + if (!drflac__read_uint8(bs, 4, &riceParam)) { + return DRFLAC_FALSE; + } + if (riceParam == 15) { + riceParam = 0xFF; + } + } else if (residualMethod == DRFLAC_RESIDUAL_CODING_METHOD_PARTITIONED_RICE2) { + if (!drflac__read_uint8(bs, 5, &riceParam)) { + return DRFLAC_FALSE; + } + if (riceParam == 31) { + riceParam = 0xFF; + } + } + + if (riceParam != 0xFF) { + if (!drflac__read_and_seek_residual__rice(bs, samplesInPartition, riceParam)) { + return DRFLAC_FALSE; + } + } else { + unsigned char unencodedBitsPerSample = 0; + if (!drflac__read_uint8(bs, 5, &unencodedBitsPerSample)) { + return DRFLAC_FALSE; + } + + if (!drflac__seek_bits(bs, unencodedBitsPerSample * samplesInPartition)) { + return DRFLAC_FALSE; + } + } + + + if (partitionsRemaining == 1) { + break; + } + + partitionsRemaining -= 1; + samplesInPartition = blockSize / (1 << partitionOrder); + } + + return DRFLAC_TRUE; +} + + +static drflac_bool32 drflac__decode_samples__constant(drflac_bs* bs, drflac_uint32 blockSize, drflac_uint32 bitsPerSample, drflac_int32* pDecodedSamples) +{ + // Only a single sample needs to be decoded here. + drflac_int32 sample; + if (!drflac__read_int32(bs, bitsPerSample, &sample)) { + return DRFLAC_FALSE; + } + + // We don't really need to expand this, but it does simplify the process of reading samples. If this becomes a performance issue (unlikely) + // we'll want to look at a more efficient way. + for (drflac_uint32 i = 0; i < blockSize; ++i) { + pDecodedSamples[i] = sample; + } + + return DRFLAC_TRUE; +} + +static drflac_bool32 drflac__decode_samples__verbatim(drflac_bs* bs, drflac_uint32 blockSize, drflac_uint32 bitsPerSample, drflac_int32* pDecodedSamples) +{ + for (drflac_uint32 i = 0; i < blockSize; ++i) { + drflac_int32 sample; + if (!drflac__read_int32(bs, bitsPerSample, &sample)) { + return DRFLAC_FALSE; + } + + pDecodedSamples[i] = sample; + } + + return DRFLAC_TRUE; +} + +static drflac_bool32 drflac__decode_samples__fixed(drflac_bs* bs, drflac_uint32 blockSize, drflac_uint32 bitsPerSample, drflac_uint8 lpcOrder, drflac_int32* pDecodedSamples) +{ + static drflac_int32 lpcCoefficientsTable[5][4] = { + {0, 0, 0, 0}, + {1, 0, 0, 0}, + {2, -1, 0, 0}, + {3, -3, 1, 0}, + {4, -6, 4, -1} + }; + + // Warm up samples and coefficients. + for (drflac_uint32 i = 0; i < lpcOrder; ++i) { + drflac_int32 sample; + if (!drflac__read_int32(bs, bitsPerSample, &sample)) { + return DRFLAC_FALSE; + } + + pDecodedSamples[i] = sample; + } + + + if (!drflac__decode_samples_with_residual(bs, bitsPerSample, blockSize, lpcOrder, 0, lpcCoefficientsTable[lpcOrder], pDecodedSamples)) { + return DRFLAC_FALSE; + } + + return DRFLAC_TRUE; +} + +static drflac_bool32 drflac__decode_samples__lpc(drflac_bs* bs, drflac_uint32 blockSize, drflac_uint32 bitsPerSample, drflac_uint8 lpcOrder, drflac_int32* pDecodedSamples) +{ + drflac_uint8 i; + + // Warm up samples. + for (i = 0; i < lpcOrder; ++i) { + drflac_int32 sample; + if (!drflac__read_int32(bs, bitsPerSample, &sample)) { + return DRFLAC_FALSE; + } + + pDecodedSamples[i] = sample; + } + + drflac_uint8 lpcPrecision; + if (!drflac__read_uint8(bs, 4, &lpcPrecision)) { + return DRFLAC_FALSE; + } + if (lpcPrecision == 15) { + return DRFLAC_FALSE; // Invalid. + } + lpcPrecision += 1; + + + drflac_int8 lpcShift; + if (!drflac__read_int8(bs, 5, &lpcShift)) { + return DRFLAC_FALSE; + } + + + drflac_int32 coefficients[32]; + drflac_zero_memory(coefficients, sizeof(coefficients)); + for (i = 0; i < lpcOrder; ++i) { + if (!drflac__read_int32(bs, lpcPrecision, coefficients + i)) { + return DRFLAC_FALSE; + } + } + + if (!drflac__decode_samples_with_residual(bs, bitsPerSample, blockSize, lpcOrder, lpcShift, coefficients, pDecodedSamples)) { + return DRFLAC_FALSE; + } + + return DRFLAC_TRUE; +} + + +static drflac_bool32 drflac__read_next_flac_frame_header(drflac_bs* bs, drflac_uint8 streaminfoBitsPerSample, drflac_frame_header* header) +{ + drflac_assert(bs != NULL); + drflac_assert(header != NULL); + + const drflac_uint32 sampleRateTable[12] = {0, 88200, 176400, 192000, 8000, 16000, 22050, 24000, 32000, 44100, 48000, 96000}; + const drflac_uint8 bitsPerSampleTable[8] = {0, 8, 12, (drflac_uint8)-1, 16, 20, 24, (drflac_uint8)-1}; // -1 = reserved. + + // Keep looping until we find a valid sync code. + for (;;) { + if (!drflac__find_and_seek_to_next_sync_code(bs)) { + return DRFLAC_FALSE; + } + + drflac_uint8 crc8 = 0xCE; // 0xCE = drflac_crc8(0, 0x3FFE, 14); + + drflac_uint8 reserved = 0; + if (!drflac__read_uint8(bs, 1, &reserved)) { + return DRFLAC_FALSE; + } + if (reserved == 1) { + continue; + } + crc8 = drflac_crc8(crc8, reserved, 1); + + + drflac_uint8 blockingStrategy = 0; + if (!drflac__read_uint8(bs, 1, &blockingStrategy)) { + return DRFLAC_FALSE; + } + crc8 = drflac_crc8(crc8, blockingStrategy, 1); + + + drflac_uint8 blockSize = 0; + if (!drflac__read_uint8(bs, 4, &blockSize)) { + return DRFLAC_FALSE; + } + if (blockSize == 0) { + continue; + } + crc8 = drflac_crc8(crc8, blockSize, 4); + + + drflac_uint8 sampleRate = 0; + if (!drflac__read_uint8(bs, 4, &sampleRate)) { + return DRFLAC_FALSE; + } + crc8 = drflac_crc8(crc8, sampleRate, 4); + + + drflac_uint8 channelAssignment = 0; + if (!drflac__read_uint8(bs, 4, &channelAssignment)) { + return DRFLAC_FALSE; + } + if (channelAssignment > 10) { + continue; + } + crc8 = drflac_crc8(crc8, channelAssignment, 4); + + + drflac_uint8 bitsPerSample = 0; + if (!drflac__read_uint8(bs, 3, &bitsPerSample)) { + return DRFLAC_FALSE; + } + if (bitsPerSample == 3 || bitsPerSample == 7) { + continue; + } + crc8 = drflac_crc8(crc8, bitsPerSample, 3); + + + if (!drflac__read_uint8(bs, 1, &reserved)) { + return DRFLAC_FALSE; + } + if (reserved == 1) { + continue; + } + crc8 = drflac_crc8(crc8, reserved, 1); + + + drflac_bool32 isVariableBlockSize = blockingStrategy == 1; + if (isVariableBlockSize) { + drflac_uint64 sampleNumber; + drflac_result result = drflac__read_utf8_coded_number(bs, &sampleNumber, &crc8); + if (result != DRFLAC_SUCCESS) { + if (result == DRFLAC_END_OF_STREAM) { + return DRFLAC_FALSE; + } else { + continue; + } + } + header->frameNumber = 0; + header->sampleNumber = sampleNumber; + } else { + drflac_uint64 frameNumber = 0; + drflac_result result = drflac__read_utf8_coded_number(bs, &frameNumber, &crc8); + if (result != DRFLAC_SUCCESS) { + if (result == DRFLAC_END_OF_STREAM) { + return DRFLAC_FALSE; + } else { + continue; + } + } + header->frameNumber = (drflac_uint32)frameNumber; // <-- Safe cast. + header->sampleNumber = 0; + } + + + if (blockSize == 1) { + header->blockSize = 192; + } else if (blockSize >= 2 && blockSize <= 5) { + header->blockSize = 576 * (1 << (blockSize - 2)); + } else if (blockSize == 6) { + if (!drflac__read_uint16(bs, 8, &header->blockSize)) { + return DRFLAC_FALSE; + } + crc8 = drflac_crc8(crc8, header->blockSize, 8); + header->blockSize += 1; + } else if (blockSize == 7) { + if (!drflac__read_uint16(bs, 16, &header->blockSize)) { + return DRFLAC_FALSE; + } + crc8 = drflac_crc8(crc8, header->blockSize, 16); + header->blockSize += 1; + } else { + header->blockSize = 256 * (1 << (blockSize - 8)); + } + + + if (sampleRate <= 11) { + header->sampleRate = sampleRateTable[sampleRate]; + } else if (sampleRate == 12) { + if (!drflac__read_uint32(bs, 8, &header->sampleRate)) { + return DRFLAC_FALSE; + } + crc8 = drflac_crc8(crc8, header->sampleRate, 8); + header->sampleRate *= 1000; + } else if (sampleRate == 13) { + if (!drflac__read_uint32(bs, 16, &header->sampleRate)) { + return DRFLAC_FALSE; + } + crc8 = drflac_crc8(crc8, header->sampleRate, 16); + } else if (sampleRate == 14) { + if (!drflac__read_uint32(bs, 16, &header->sampleRate)) { + return DRFLAC_FALSE; + } + crc8 = drflac_crc8(crc8, header->sampleRate, 16); + header->sampleRate *= 10; + } else { + continue; // Invalid. Assume an invalid block. + } + + + header->channelAssignment = channelAssignment; + + header->bitsPerSample = bitsPerSampleTable[bitsPerSample]; + if (header->bitsPerSample == 0) { + header->bitsPerSample = streaminfoBitsPerSample; + } + + if (!drflac__read_uint8(bs, 8, &header->crc8)) { + return DRFLAC_FALSE; + } + +#ifndef DR_FLAC_NO_CRC + if (header->crc8 != crc8) { + continue; // CRC mismatch. Loop back to the top and find the next sync code. + } +#endif + return DRFLAC_TRUE; + } +} + +static drflac_bool32 drflac__read_subframe_header(drflac_bs* bs, drflac_subframe* pSubframe) +{ + drflac_uint8 header; + if (!drflac__read_uint8(bs, 8, &header)) { + return DRFLAC_FALSE; + } + + // First bit should always be 0. + if ((header & 0x80) != 0) { + return DRFLAC_FALSE; + } + + int type = (header & 0x7E) >> 1; + if (type == 0) { + pSubframe->subframeType = DRFLAC_SUBFRAME_CONSTANT; + } else if (type == 1) { + pSubframe->subframeType = DRFLAC_SUBFRAME_VERBATIM; + } else { + if ((type & 0x20) != 0) { + pSubframe->subframeType = DRFLAC_SUBFRAME_LPC; + pSubframe->lpcOrder = (type & 0x1F) + 1; + } else if ((type & 0x08) != 0) { + pSubframe->subframeType = DRFLAC_SUBFRAME_FIXED; + pSubframe->lpcOrder = (type & 0x07); + if (pSubframe->lpcOrder > 4) { + pSubframe->subframeType = DRFLAC_SUBFRAME_RESERVED; + pSubframe->lpcOrder = 0; + } + } else { + pSubframe->subframeType = DRFLAC_SUBFRAME_RESERVED; + } + } + + if (pSubframe->subframeType == DRFLAC_SUBFRAME_RESERVED) { + return DRFLAC_FALSE; + } + + // Wasted bits per sample. + pSubframe->wastedBitsPerSample = 0; + if ((header & 0x01) == 1) { + unsigned int wastedBitsPerSample; + if (!drflac__seek_past_next_set_bit(bs, &wastedBitsPerSample)) { + return DRFLAC_FALSE; + } + pSubframe->wastedBitsPerSample = (unsigned char)wastedBitsPerSample + 1; + } + + return DRFLAC_TRUE; +} + +static drflac_bool32 drflac__decode_subframe(drflac_bs* bs, drflac_frame* frame, int subframeIndex, drflac_int32* pDecodedSamplesOut) +{ + drflac_assert(bs != NULL); + drflac_assert(frame != NULL); + + drflac_subframe* pSubframe = frame->subframes + subframeIndex; + if (!drflac__read_subframe_header(bs, pSubframe)) { + return DRFLAC_FALSE; + } + + // Side channels require an extra bit per sample. Took a while to figure that one out... + pSubframe->bitsPerSample = frame->header.bitsPerSample; + if ((frame->header.channelAssignment == DRFLAC_CHANNEL_ASSIGNMENT_LEFT_SIDE || frame->header.channelAssignment == DRFLAC_CHANNEL_ASSIGNMENT_MID_SIDE) && subframeIndex == 1) { + pSubframe->bitsPerSample += 1; + } else if (frame->header.channelAssignment == DRFLAC_CHANNEL_ASSIGNMENT_RIGHT_SIDE && subframeIndex == 0) { + pSubframe->bitsPerSample += 1; + } + + // Need to handle wasted bits per sample. + if (pSubframe->wastedBitsPerSample >= pSubframe->bitsPerSample) { + return DRFLAC_FALSE; + } + pSubframe->bitsPerSample -= pSubframe->wastedBitsPerSample; + pSubframe->pDecodedSamples = pDecodedSamplesOut; + + switch (pSubframe->subframeType) + { + case DRFLAC_SUBFRAME_CONSTANT: + { + drflac__decode_samples__constant(bs, frame->header.blockSize, pSubframe->bitsPerSample, pSubframe->pDecodedSamples); + } break; + + case DRFLAC_SUBFRAME_VERBATIM: + { + drflac__decode_samples__verbatim(bs, frame->header.blockSize, pSubframe->bitsPerSample, pSubframe->pDecodedSamples); + } break; + + case DRFLAC_SUBFRAME_FIXED: + { + drflac__decode_samples__fixed(bs, frame->header.blockSize, pSubframe->bitsPerSample, pSubframe->lpcOrder, pSubframe->pDecodedSamples); + } break; + + case DRFLAC_SUBFRAME_LPC: + { + drflac__decode_samples__lpc(bs, frame->header.blockSize, pSubframe->bitsPerSample, pSubframe->lpcOrder, pSubframe->pDecodedSamples); + } break; + + default: return DRFLAC_FALSE; + } + + return DRFLAC_TRUE; +} + +static drflac_bool32 drflac__seek_subframe(drflac_bs* bs, drflac_frame* frame, int subframeIndex) +{ + drflac_assert(bs != NULL); + drflac_assert(frame != NULL); + + drflac_subframe* pSubframe = frame->subframes + subframeIndex; + if (!drflac__read_subframe_header(bs, pSubframe)) { + return DRFLAC_FALSE; + } + + // Side channels require an extra bit per sample. Took a while to figure that one out... + pSubframe->bitsPerSample = frame->header.bitsPerSample; + if ((frame->header.channelAssignment == DRFLAC_CHANNEL_ASSIGNMENT_LEFT_SIDE || frame->header.channelAssignment == DRFLAC_CHANNEL_ASSIGNMENT_MID_SIDE) && subframeIndex == 1) { + pSubframe->bitsPerSample += 1; + } else if (frame->header.channelAssignment == DRFLAC_CHANNEL_ASSIGNMENT_RIGHT_SIDE && subframeIndex == 0) { + pSubframe->bitsPerSample += 1; + } + + // Need to handle wasted bits per sample. + if (pSubframe->wastedBitsPerSample >= pSubframe->bitsPerSample) { + return DRFLAC_FALSE; + } + pSubframe->bitsPerSample -= pSubframe->wastedBitsPerSample; + pSubframe->pDecodedSamples = NULL; + + switch (pSubframe->subframeType) + { + case DRFLAC_SUBFRAME_CONSTANT: + { + if (!drflac__seek_bits(bs, pSubframe->bitsPerSample)) { + return DRFLAC_FALSE; + } + } break; + + case DRFLAC_SUBFRAME_VERBATIM: + { + unsigned int bitsToSeek = frame->header.blockSize * pSubframe->bitsPerSample; + if (!drflac__seek_bits(bs, bitsToSeek)) { + return DRFLAC_FALSE; + } + } break; + + case DRFLAC_SUBFRAME_FIXED: + { + unsigned int bitsToSeek = pSubframe->lpcOrder * pSubframe->bitsPerSample; + if (!drflac__seek_bits(bs, bitsToSeek)) { + return DRFLAC_FALSE; + } + + if (!drflac__read_and_seek_residual(bs, frame->header.blockSize, pSubframe->lpcOrder)) { + return DRFLAC_FALSE; + } + } break; + + case DRFLAC_SUBFRAME_LPC: + { + unsigned int bitsToSeek = pSubframe->lpcOrder * pSubframe->bitsPerSample; + if (!drflac__seek_bits(bs, bitsToSeek)) { + return DRFLAC_FALSE; + } + + unsigned char lpcPrecision; + if (!drflac__read_uint8(bs, 4, &lpcPrecision)) { + return DRFLAC_FALSE; + } + if (lpcPrecision == 15) { + return DRFLAC_FALSE; // Invalid. + } + lpcPrecision += 1; + + + bitsToSeek = (pSubframe->lpcOrder * lpcPrecision) + 5; // +5 for shift. + if (!drflac__seek_bits(bs, bitsToSeek)) { + return DRFLAC_FALSE; + } + + if (!drflac__read_and_seek_residual(bs, frame->header.blockSize, pSubframe->lpcOrder)) { + return DRFLAC_FALSE; + } + } break; + + default: return DRFLAC_FALSE; + } + + return DRFLAC_TRUE; +} + + +static DRFLAC_INLINE drflac_uint8 drflac__get_channel_count_from_channel_assignment(drflac_int8 channelAssignment) +{ + drflac_assert(channelAssignment <= 10); + + drflac_uint8 lookup[] = {1, 2, 3, 4, 5, 6, 7, 8, 2, 2, 2}; + return lookup[channelAssignment]; +} + +static drflac_result drflac__decode_flac_frame(drflac* pFlac) +{ + // This function should be called while the stream is sitting on the first byte after the frame header. + drflac_zero_memory(pFlac->currentFrame.subframes, sizeof(pFlac->currentFrame.subframes)); + + // The frame block size must never be larger than the maximum block size defined by the FLAC stream. + if (pFlac->currentFrame.header.blockSize > pFlac->maxBlockSize) { + return DRFLAC_ERROR; + } + + // The number of channels in the frame must match the channel count from the STREAMINFO block. + int channelCount = drflac__get_channel_count_from_channel_assignment(pFlac->currentFrame.header.channelAssignment); + if (channelCount != (int)pFlac->channels) { + return DRFLAC_ERROR; + } + + for (int i = 0; i < channelCount; ++i) { + if (!drflac__decode_subframe(&pFlac->bs, &pFlac->currentFrame, i, pFlac->pDecodedSamples + ((pFlac->currentFrame.header.blockSize+DRFLAC_LEADING_SAMPLES) * i) + DRFLAC_LEADING_SAMPLES)) { + return DRFLAC_ERROR; + } + } + + drflac_uint8 paddingSizeInBits = DRFLAC_CACHE_L1_BITS_REMAINING(&pFlac->bs) & 7; + if (paddingSizeInBits > 0) { + drflac_uint8 padding = 0; + if (!drflac__read_uint8(&pFlac->bs, paddingSizeInBits, &padding)) { + return DRFLAC_END_OF_STREAM; + } + } + +#ifndef DR_FLAC_NO_CRC + drflac_uint16 actualCRC16 = drflac__flush_crc16(&pFlac->bs); +#endif + drflac_uint16 desiredCRC16; + if (!drflac__read_uint16(&pFlac->bs, 16, &desiredCRC16)) { + return DRFLAC_END_OF_STREAM; + } + +#ifndef DR_FLAC_NO_CRC + if (actualCRC16 != desiredCRC16) { + return DRFLAC_CRC_MISMATCH; // CRC mismatch. + } +#endif + + pFlac->currentFrame.samplesRemaining = pFlac->currentFrame.header.blockSize * channelCount; + + return DRFLAC_SUCCESS; +} + +static drflac_result drflac__seek_flac_frame(drflac* pFlac) +{ + int channelCount = drflac__get_channel_count_from_channel_assignment(pFlac->currentFrame.header.channelAssignment); + for (int i = 0; i < channelCount; ++i) { + if (!drflac__seek_subframe(&pFlac->bs, &pFlac->currentFrame, i)) { + return DRFLAC_ERROR; + } + } + + // Padding. + if (!drflac__seek_bits(&pFlac->bs, DRFLAC_CACHE_L1_BITS_REMAINING(&pFlac->bs) & 7)) { + return DRFLAC_ERROR; + } + + // CRC. +#ifndef DR_FLAC_NO_CRC + drflac_uint16 actualCRC16 = drflac__flush_crc16(&pFlac->bs); +#endif + drflac_uint16 desiredCRC16; + if (!drflac__read_uint16(&pFlac->bs, 16, &desiredCRC16)) { + return DRFLAC_END_OF_STREAM; + } + +#ifndef DR_FLAC_NO_CRC + if (actualCRC16 != desiredCRC16) { + return DRFLAC_CRC_MISMATCH; // CRC mismatch. + } +#endif + + return DRFLAC_SUCCESS; +} + +static drflac_bool32 drflac__read_and_decode_next_flac_frame(drflac* pFlac) +{ + drflac_assert(pFlac != NULL); + + for (;;) { + if (!drflac__read_next_flac_frame_header(&pFlac->bs, pFlac->bitsPerSample, &pFlac->currentFrame.header)) { + return DRFLAC_FALSE; + } + + drflac_result result = drflac__decode_flac_frame(pFlac); + if (result != DRFLAC_SUCCESS) { + if (result == DRFLAC_CRC_MISMATCH) { + continue; // CRC mismatch. Skip to the next frame. + } else { + return DRFLAC_FALSE; + } + } + + return DRFLAC_TRUE; + } +} + + +static void drflac__get_current_frame_sample_range(drflac* pFlac, drflac_uint64* pFirstSampleInFrameOut, drflac_uint64* pLastSampleInFrameOut) +{ + drflac_assert(pFlac != NULL); + + unsigned int channelCount = drflac__get_channel_count_from_channel_assignment(pFlac->currentFrame.header.channelAssignment); + + drflac_uint64 firstSampleInFrame = pFlac->currentFrame.header.sampleNumber; + if (firstSampleInFrame == 0) { + firstSampleInFrame = pFlac->currentFrame.header.frameNumber * pFlac->maxBlockSize*channelCount; + } + + drflac_uint64 lastSampleInFrame = firstSampleInFrame + (pFlac->currentFrame.header.blockSize*channelCount); + if (lastSampleInFrame > 0) { + lastSampleInFrame -= 1; // Needs to be zero based. + } + + if (pFirstSampleInFrameOut) *pFirstSampleInFrameOut = firstSampleInFrame; + if (pLastSampleInFrameOut) *pLastSampleInFrameOut = lastSampleInFrame; +} + +static drflac_bool32 drflac__seek_to_first_frame(drflac* pFlac) +{ + drflac_assert(pFlac != NULL); + + drflac_bool32 result = drflac__seek_to_byte(&pFlac->bs, pFlac->firstFramePos); + + drflac_zero_memory(&pFlac->currentFrame, sizeof(pFlac->currentFrame)); + pFlac->currentSample = 0; + + return result; +} + +static DRFLAC_INLINE drflac_result drflac__seek_to_next_flac_frame(drflac* pFlac) +{ + // This function should only ever be called while the decoder is sitting on the first byte past the FRAME_HEADER section. + drflac_assert(pFlac != NULL); + return drflac__seek_flac_frame(pFlac); +} + +drflac_uint64 drflac__seek_forward_by_samples(drflac* pFlac, drflac_uint64 samplesToRead) +{ + drflac_uint64 samplesRead = 0; + while (samplesToRead > 0) { + if (pFlac->currentFrame.samplesRemaining == 0) { + if (!drflac__read_and_decode_next_flac_frame(pFlac)) { + break; // Couldn't read the next frame, so just break from the loop and return. + } + } else { + if (pFlac->currentFrame.samplesRemaining > samplesToRead) { + samplesRead += samplesToRead; + pFlac->currentFrame.samplesRemaining -= (drflac_uint32)samplesToRead; // <-- Safe cast. Will always be < currentFrame.samplesRemaining < 65536. + samplesToRead = 0; + } else { + samplesRead += pFlac->currentFrame.samplesRemaining; + samplesToRead -= pFlac->currentFrame.samplesRemaining; + pFlac->currentFrame.samplesRemaining = 0; + } + } + } + + pFlac->currentSample += samplesRead; + return samplesRead; +} + +drflac_uint64 drflac__seek_forward_by_pcm_frames(drflac* pFlac, drflac_uint64 pcmFramesToSeek) +{ + return drflac__seek_forward_by_samples(pFlac, pcmFramesToSeek*pFlac->channels); +} + +static drflac_bool32 drflac__seek_to_sample__brute_force(drflac* pFlac, drflac_uint64 sampleIndex) +{ + drflac_assert(pFlac != NULL); + + drflac_bool32 isMidFrame = DRFLAC_FALSE; + + // If we are seeking forward we start from the current position. Otherwise we need to start all the way from the start of the file. + drflac_uint64 runningSampleCount; + if (sampleIndex >= pFlac->currentSample) { + // Seeking forward. Need to seek from the current position. + runningSampleCount = pFlac->currentSample; + + // The frame header for the first frame may not yet have been read. We need to do that if necessary. + if (pFlac->currentSample == 0 && pFlac->currentFrame.samplesRemaining == 0) { + if (!drflac__read_next_flac_frame_header(&pFlac->bs, pFlac->bitsPerSample, &pFlac->currentFrame.header)) { + return DRFLAC_FALSE; + } + } else { + isMidFrame = DRFLAC_TRUE; + } + } else { + // Seeking backwards. Need to seek from the start of the file. + runningSampleCount = 0; + + // Move back to the start. + if (!drflac__seek_to_first_frame(pFlac)) { + return DRFLAC_FALSE; + } + + // Decode the first frame in preparation for sample-exact seeking below. + if (!drflac__read_next_flac_frame_header(&pFlac->bs, pFlac->bitsPerSample, &pFlac->currentFrame.header)) { + return DRFLAC_FALSE; + } + } + + // We need to as quickly as possible find the frame that contains the target sample. To do this, we iterate over each frame and inspect its + // header. If based on the header we can determine that the frame contains the sample, we do a full decode of that frame. + for (;;) { + drflac_uint64 firstSampleInFrame = 0; + drflac_uint64 lastSampleInFrame = 0; + drflac__get_current_frame_sample_range(pFlac, &firstSampleInFrame, &lastSampleInFrame); + + drflac_uint64 sampleCountInThisFrame = (lastSampleInFrame - firstSampleInFrame) + 1; + if (sampleIndex < (runningSampleCount + sampleCountInThisFrame)) { + // The sample should be in this frame. We need to fully decode it, however if it's an invalid frame (a CRC mismatch), we need to pretend + // it never existed and keep iterating. + drflac_uint64 samplesToDecode = sampleIndex - runningSampleCount; + + if (!isMidFrame) { + drflac_result result = drflac__decode_flac_frame(pFlac); + if (result == DRFLAC_SUCCESS) { + // The frame is valid. We just need to skip over some samples to ensure it's sample-exact. + return drflac__seek_forward_by_samples(pFlac, samplesToDecode) == samplesToDecode; // <-- If this fails, something bad has happened (it should never fail). + } else { + if (result == DRFLAC_CRC_MISMATCH) { + goto next_iteration; // CRC mismatch. Pretend this frame never existed. + } else { + return DRFLAC_FALSE; + } + } + } else { + // We started seeking mid-frame which means we need to skip the frame decoding part. + return drflac__seek_forward_by_samples(pFlac, samplesToDecode) == samplesToDecode; + } + } else { + // It's not in this frame. We need to seek past the frame, but check if there was a CRC mismatch. If so, we pretend this + // frame never existed and leave the running sample count untouched. + if (!isMidFrame) { + drflac_result result = drflac__seek_to_next_flac_frame(pFlac); + if (result == DRFLAC_SUCCESS) { + runningSampleCount += sampleCountInThisFrame; + } else { + if (result == DRFLAC_CRC_MISMATCH) { + goto next_iteration; // CRC mismatch. Pretend this frame never existed. + } else { + return DRFLAC_FALSE; + } + } + } else { + // We started seeking mid-frame which means we need to seek by reading to the end of the frame instead of with + // drflac__seek_to_next_flac_frame() which only works if the decoder is sitting on the byte just after the frame header. + runningSampleCount += pFlac->currentFrame.samplesRemaining; + pFlac->currentFrame.samplesRemaining = 0; + isMidFrame = DRFLAC_FALSE; + } + } + + next_iteration: + // Grab the next frame in preparation for the next iteration. + if (!drflac__read_next_flac_frame_header(&pFlac->bs, pFlac->bitsPerSample, &pFlac->currentFrame.header)) { + return DRFLAC_FALSE; + } + } +} + + +static drflac_bool32 drflac__seek_to_sample__seek_table(drflac* pFlac, drflac_uint64 sampleIndex) +{ + drflac_assert(pFlac != NULL); + + if (pFlac->pSeekpoints == NULL || pFlac->seekpointCount == 0) { + return DRFLAC_FALSE; + } + + + drflac_uint32 iClosestSeekpoint = 0; + for (drflac_uint32 iSeekpoint = 0; iSeekpoint < pFlac->seekpointCount; ++iSeekpoint) { + if (pFlac->pSeekpoints[iSeekpoint].firstSample*pFlac->channels >= sampleIndex) { + break; + } + + iClosestSeekpoint = iSeekpoint; + } + + + drflac_bool32 isMidFrame = DRFLAC_FALSE; + + // At this point we should have found the seekpoint closest to our sample. If we are seeking forward and the closest seekpoint is _before_ the current sample, we + // just seek forward from where we are. Otherwise we start seeking from the seekpoint's first sample. + drflac_uint64 runningSampleCount; + if ((sampleIndex >= pFlac->currentSample) && (pFlac->pSeekpoints[iClosestSeekpoint].firstSample*pFlac->channels <= pFlac->currentSample)) { + // Optimized case. Just seek forward from where we are. + runningSampleCount = pFlac->currentSample; + + // The frame header for the first frame may not yet have been read. We need to do that if necessary. + if (pFlac->currentSample == 0 && pFlac->currentFrame.samplesRemaining == 0) { + if (!drflac__read_next_flac_frame_header(&pFlac->bs, pFlac->bitsPerSample, &pFlac->currentFrame.header)) { + return DRFLAC_FALSE; + } + } else { + isMidFrame = DRFLAC_TRUE; + } + } else { + // Slower case. Seek to the start of the seekpoint and then seek forward from there. + runningSampleCount = pFlac->pSeekpoints[iClosestSeekpoint].firstSample*pFlac->channels; + + if (!drflac__seek_to_byte(&pFlac->bs, pFlac->firstFramePos + pFlac->pSeekpoints[iClosestSeekpoint].frameOffset)) { + return DRFLAC_FALSE; + } + + // Grab the frame the seekpoint is sitting on in preparation for the sample-exact seeking below. + if (!drflac__read_next_flac_frame_header(&pFlac->bs, pFlac->bitsPerSample, &pFlac->currentFrame.header)) { + return DRFLAC_FALSE; + } + } + + for (;;) { + drflac_uint64 firstSampleInFrame = 0; + drflac_uint64 lastSampleInFrame = 0; + drflac__get_current_frame_sample_range(pFlac, &firstSampleInFrame, &lastSampleInFrame); + + drflac_uint64 sampleCountInThisFrame = (lastSampleInFrame - firstSampleInFrame) + 1; + if (sampleIndex < (runningSampleCount + sampleCountInThisFrame)) { + // The sample should be in this frame. We need to fully decode it, but if it's an invalid frame (a CRC mismatch) we need to pretend + // it never existed and keep iterating. + drflac_uint64 samplesToDecode = sampleIndex - runningSampleCount; + + if (!isMidFrame) { + drflac_result result = drflac__decode_flac_frame(pFlac); + if (result == DRFLAC_SUCCESS) { + // The frame is valid. We just need to skip over some samples to ensure it's sample-exact. + return drflac__seek_forward_by_samples(pFlac, samplesToDecode) == samplesToDecode; // <-- If this fails, something bad has happened (it should never fail). + } else { + if (result == DRFLAC_CRC_MISMATCH) { + goto next_iteration; // CRC mismatch. Pretend this frame never existed. + } else { + return DRFLAC_FALSE; + } + } + } else { + // We started seeking mid-frame which means we need to skip the frame decoding part. + return drflac__seek_forward_by_samples(pFlac, samplesToDecode) == samplesToDecode; + } + } else { + // It's not in this frame. We need to seek past the frame, but check if there was a CRC mismatch. If so, we pretend this + // frame never existed and leave the running sample count untouched. + if (!isMidFrame) { + drflac_result result = drflac__seek_to_next_flac_frame(pFlac); + if (result == DRFLAC_SUCCESS) { + runningSampleCount += sampleCountInThisFrame; + } else { + if (result == DRFLAC_CRC_MISMATCH) { + goto next_iteration; // CRC mismatch. Pretend this frame never existed. + } else { + return DRFLAC_FALSE; + } + } + } else { + // We started seeking mid-frame which means we need to seek by reading to the end of the frame instead of with + // drflac__seek_to_next_flac_frame() which only works if the decoder is sitting on the byte just after the frame header. + runningSampleCount += pFlac->currentFrame.samplesRemaining; + pFlac->currentFrame.samplesRemaining = 0; + isMidFrame = DRFLAC_FALSE; + } + } + + next_iteration: + // Grab the next frame in preparation for the next iteration. + if (!drflac__read_next_flac_frame_header(&pFlac->bs, pFlac->bitsPerSample, &pFlac->currentFrame.header)) { + return DRFLAC_FALSE; + } + } +} + + +#ifndef DR_FLAC_NO_OGG +typedef struct +{ + drflac_uint8 capturePattern[4]; // Should be "OggS" + drflac_uint8 structureVersion; // Always 0. + drflac_uint8 headerType; + drflac_uint64 granulePosition; + drflac_uint32 serialNumber; + drflac_uint32 sequenceNumber; + drflac_uint32 checksum; + drflac_uint8 segmentCount; + drflac_uint8 segmentTable[255]; +} drflac_ogg_page_header; +#endif + +typedef struct +{ + drflac_read_proc onRead; + drflac_seek_proc onSeek; + drflac_meta_proc onMeta; + drflac_container container; + void* pUserData; + void* pUserDataMD; + drflac_uint32 sampleRate; + drflac_uint8 channels; + drflac_uint8 bitsPerSample; + drflac_uint64 totalSampleCount; + drflac_uint16 maxBlockSize; + drflac_uint64 runningFilePos; + drflac_bool32 hasStreamInfoBlock; + drflac_bool32 hasMetadataBlocks; + drflac_bs bs; // <-- A bit streamer is required for loading data during initialization. + drflac_frame_header firstFrameHeader; // <-- The header of the first frame that was read during relaxed initalization. Only set if there is no STREAMINFO block. + +#ifndef DR_FLAC_NO_OGG + drflac_uint32 oggSerial; + drflac_uint64 oggFirstBytePos; + drflac_ogg_page_header oggBosHeader; +#endif +} drflac_init_info; + +static DRFLAC_INLINE void drflac__decode_block_header(drflac_uint32 blockHeader, drflac_uint8* isLastBlock, drflac_uint8* blockType, drflac_uint32* blockSize) +{ + blockHeader = drflac__be2host_32(blockHeader); + *isLastBlock = (blockHeader & (0x01 << 31)) >> 31; + *blockType = (blockHeader & (0x7F << 24)) >> 24; + *blockSize = (blockHeader & 0xFFFFFF); +} + +static DRFLAC_INLINE drflac_bool32 drflac__read_and_decode_block_header(drflac_read_proc onRead, void* pUserData, drflac_uint8* isLastBlock, drflac_uint8* blockType, drflac_uint32* blockSize) +{ + drflac_uint32 blockHeader; + if (onRead(pUserData, &blockHeader, 4) != 4) { + return DRFLAC_FALSE; + } + + drflac__decode_block_header(blockHeader, isLastBlock, blockType, blockSize); + return DRFLAC_TRUE; +} + +drflac_bool32 drflac__read_streaminfo(drflac_read_proc onRead, void* pUserData, drflac_streaminfo* pStreamInfo) +{ + // min/max block size. + drflac_uint32 blockSizes; + if (onRead(pUserData, &blockSizes, 4) != 4) { + return DRFLAC_FALSE; + } + + // min/max frame size. + drflac_uint64 frameSizes = 0; + if (onRead(pUserData, &frameSizes, 6) != 6) { + return DRFLAC_FALSE; + } + + // Sample rate, channels, bits per sample and total sample count. + drflac_uint64 importantProps; + if (onRead(pUserData, &importantProps, 8) != 8) { + return DRFLAC_FALSE; + } + + // MD5 + drflac_uint8 md5[16]; + if (onRead(pUserData, md5, sizeof(md5)) != sizeof(md5)) { + return DRFLAC_FALSE; + } + + blockSizes = drflac__be2host_32(blockSizes); + frameSizes = drflac__be2host_64(frameSizes); + importantProps = drflac__be2host_64(importantProps); + + pStreamInfo->minBlockSize = (blockSizes & 0xFFFF0000) >> 16; + pStreamInfo->maxBlockSize = blockSizes & 0x0000FFFF; + pStreamInfo->minFrameSize = (drflac_uint32)((frameSizes & (drflac_uint64)0xFFFFFF0000000000) >> 40); + pStreamInfo->maxFrameSize = (drflac_uint32)((frameSizes & (drflac_uint64)0x000000FFFFFF0000) >> 16); + pStreamInfo->sampleRate = (drflac_uint32)((importantProps & (drflac_uint64)0xFFFFF00000000000) >> 44); + pStreamInfo->channels = (drflac_uint8 )((importantProps & (drflac_uint64)0x00000E0000000000) >> 41) + 1; + pStreamInfo->bitsPerSample = (drflac_uint8 )((importantProps & (drflac_uint64)0x000001F000000000) >> 36) + 1; + pStreamInfo->totalSampleCount = (importantProps & (drflac_uint64)0x0000000FFFFFFFFF) * pStreamInfo->channels; + drflac_copy_memory(pStreamInfo->md5, md5, sizeof(md5)); + + return DRFLAC_TRUE; +} + +drflac_bool32 drflac__read_and_decode_metadata(drflac_read_proc onRead, drflac_seek_proc onSeek, drflac_meta_proc onMeta, void* pUserData, void* pUserDataMD, drflac_uint64* pFirstFramePos, drflac_uint64* pSeektablePos, drflac_uint32* pSeektableSize) +{ + // We want to keep track of the byte position in the stream of the seektable. At the time of calling this function we know that + // we'll be sitting on byte 42. + drflac_uint64 runningFilePos = 42; + drflac_uint64 seektablePos = 0; + drflac_uint32 seektableSize = 0; + + for (;;) { + drflac_uint8 isLastBlock = 0; + drflac_uint8 blockType; + drflac_uint32 blockSize; + if (!drflac__read_and_decode_block_header(onRead, pUserData, &isLastBlock, &blockType, &blockSize)) { + return DRFLAC_FALSE; + } + runningFilePos += 4; + + + drflac_metadata metadata; + metadata.type = blockType; + metadata.pRawData = NULL; + metadata.rawDataSize = 0; + + switch (blockType) + { + case DRFLAC_METADATA_BLOCK_TYPE_APPLICATION: + { + if (blockSize < 4) { + return DRFLAC_FALSE; + } + + if (onMeta) { + void* pRawData = DRFLAC_MALLOC(blockSize); + if (pRawData == NULL) { + return DRFLAC_FALSE; + } + + if (onRead(pUserData, pRawData, blockSize) != blockSize) { + DRFLAC_FREE(pRawData); + return DRFLAC_FALSE; + } + + metadata.pRawData = pRawData; + metadata.rawDataSize = blockSize; + metadata.data.application.id = drflac__be2host_32(*(drflac_uint32*)pRawData); + metadata.data.application.pData = (const void*)((drflac_uint8*)pRawData + sizeof(drflac_uint32)); + metadata.data.application.dataSize = blockSize - sizeof(drflac_uint32); + onMeta(pUserDataMD, &metadata); + + DRFLAC_FREE(pRawData); + } + } break; + + case DRFLAC_METADATA_BLOCK_TYPE_SEEKTABLE: + { + seektablePos = runningFilePos; + seektableSize = blockSize; + + if (onMeta) { + void* pRawData = DRFLAC_MALLOC(blockSize); + if (pRawData == NULL) { + return DRFLAC_FALSE; + } + + if (onRead(pUserData, pRawData, blockSize) != blockSize) { + DRFLAC_FREE(pRawData); + return DRFLAC_FALSE; + } + + metadata.pRawData = pRawData; + metadata.rawDataSize = blockSize; + metadata.data.seektable.seekpointCount = blockSize/sizeof(drflac_seekpoint); + metadata.data.seektable.pSeekpoints = (const drflac_seekpoint*)pRawData; + + // Endian swap. + for (drflac_uint32 iSeekpoint = 0; iSeekpoint < metadata.data.seektable.seekpointCount; ++iSeekpoint) { + drflac_seekpoint* pSeekpoint = (drflac_seekpoint*)pRawData + iSeekpoint; + pSeekpoint->firstSample = drflac__be2host_64(pSeekpoint->firstSample); + pSeekpoint->frameOffset = drflac__be2host_64(pSeekpoint->frameOffset); + pSeekpoint->sampleCount = drflac__be2host_16(pSeekpoint->sampleCount); + } + + onMeta(pUserDataMD, &metadata); + + DRFLAC_FREE(pRawData); + } + } break; + + case DRFLAC_METADATA_BLOCK_TYPE_VORBIS_COMMENT: + { + if (blockSize < 8) { + return DRFLAC_FALSE; + } + + if (onMeta) { + void* pRawData = DRFLAC_MALLOC(blockSize); + if (pRawData == NULL) { + return DRFLAC_FALSE; + } + + if (onRead(pUserData, pRawData, blockSize) != blockSize) { + DRFLAC_FREE(pRawData); + return DRFLAC_FALSE; + } + + metadata.pRawData = pRawData; + metadata.rawDataSize = blockSize; + + const char* pRunningData = (const char*)pRawData; + const char* const pRunningDataEnd = (const char*)pRawData + blockSize; + + metadata.data.vorbis_comment.vendorLength = drflac__le2host_32(*(const drflac_uint32*)pRunningData); pRunningData += 4; + + // Need space for the rest of the block + if ((pRunningDataEnd - pRunningData) - 4 < (drflac_int64)metadata.data.vorbis_comment.vendorLength) { // <-- Note the order of operations to avoid overflow to a valid value + DRFLAC_FREE(pRawData); + return DRFLAC_FALSE; + } + metadata.data.vorbis_comment.vendor = pRunningData; pRunningData += metadata.data.vorbis_comment.vendorLength; + metadata.data.vorbis_comment.commentCount = drflac__le2host_32(*(const drflac_uint32*)pRunningData); pRunningData += 4; + + // Need space for 'commentCount' comments after the block, which at minimum is a drflac_uint32 per comment + if ((pRunningDataEnd - pRunningData) / sizeof(drflac_uint32) < metadata.data.vorbis_comment.commentCount) { // <-- Note the order of operations to avoid overflow to a valid value + DRFLAC_FREE(pRawData); + return DRFLAC_FALSE; + } + metadata.data.vorbis_comment.pComments = pRunningData; + + // Check that the comments section is valid before passing it to the callback + for (drflac_uint32 i = 0; i < metadata.data.vorbis_comment.commentCount; ++i) { + if (pRunningDataEnd - pRunningData < 4) { + DRFLAC_FREE(pRawData); + return DRFLAC_FALSE; + } + const drflac_uint32 commentLength = drflac__le2host_32(*(const drflac_uint32*)pRunningData); pRunningData += 4; + if (pRunningDataEnd - pRunningData < (drflac_int64)commentLength) { // <-- Note the order of operations to avoid overflow to a valid value + DRFLAC_FREE(pRawData); + return DRFLAC_FALSE; + } + pRunningData += commentLength; + } + + onMeta(pUserDataMD, &metadata); + + DRFLAC_FREE(pRawData); + } + } break; + + case DRFLAC_METADATA_BLOCK_TYPE_CUESHEET: + { + if (blockSize < 396) { + return DRFLAC_FALSE; + } + + if (onMeta) { + void* pRawData = DRFLAC_MALLOC(blockSize); + if (pRawData == NULL) { + return DRFLAC_FALSE; + } + + if (onRead(pUserData, pRawData, blockSize) != blockSize) { + DRFLAC_FREE(pRawData); + return DRFLAC_FALSE; + } + + metadata.pRawData = pRawData; + metadata.rawDataSize = blockSize; + + char* pRunningData = (char*)pRawData; + const char* const pRunningDataEnd = (const char*)pRawData + blockSize; + + drflac_copy_memory(metadata.data.cuesheet.catalog, pRunningData, 128); pRunningData += 128; + metadata.data.cuesheet.leadInSampleCount = drflac__be2host_64(*(const drflac_uint64*)pRunningData); pRunningData += 8; + metadata.data.cuesheet.isCD = (pRunningData[0] & 0x80) != 0; pRunningData += 259; + metadata.data.cuesheet.trackCount = pRunningData[0]; pRunningData += 1; + metadata.data.cuesheet.pTrackData = pRunningData; + + // Check that the cuesheet tracks are valid before passing it to the callback + for (drflac_uint8 i = 0; i < metadata.data.cuesheet.trackCount; ++i) { + if (pRunningDataEnd - pRunningData < 36) { + DRFLAC_FREE(pRawData); + return DRFLAC_FALSE; + } + + // Skip to the index point count + pRunningData += 35; + const drflac_uint8 indexCount = pRunningData[0]; pRunningData += 1; + const drflac_uint32 indexPointSize = indexCount * sizeof(drflac_cuesheet_track_index); + if (pRunningDataEnd - pRunningData < (drflac_int64)indexPointSize) { + DRFLAC_FREE(pRawData); + return DRFLAC_FALSE; + } + + // Endian swap. + for (drflac_uint8 index = 0; index < indexCount; ++index) { + drflac_cuesheet_track_index* pTrack = (drflac_cuesheet_track_index*)pRunningData; + pRunningData += sizeof(drflac_cuesheet_track_index); + pTrack->offset = drflac__be2host_64(pTrack->offset); + } + } + + onMeta(pUserDataMD, &metadata); + + DRFLAC_FREE(pRawData); + } + } break; + + case DRFLAC_METADATA_BLOCK_TYPE_PICTURE: + { + if (blockSize < 32) { + return DRFLAC_FALSE; + } + + if (onMeta) { + void* pRawData = DRFLAC_MALLOC(blockSize); + if (pRawData == NULL) { + return DRFLAC_FALSE; + } + + if (onRead(pUserData, pRawData, blockSize) != blockSize) { + DRFLAC_FREE(pRawData); + return DRFLAC_FALSE; + } + + metadata.pRawData = pRawData; + metadata.rawDataSize = blockSize; + + const char* pRunningData = (const char*)pRawData; + const char* const pRunningDataEnd = (const char*)pRawData + blockSize; + + metadata.data.picture.type = drflac__be2host_32(*(const drflac_uint32*)pRunningData); pRunningData += 4; + metadata.data.picture.mimeLength = drflac__be2host_32(*(const drflac_uint32*)pRunningData); pRunningData += 4; + + // Need space for the rest of the block + if ((pRunningDataEnd - pRunningData) - 24 < (drflac_int64)metadata.data.picture.mimeLength) { // <-- Note the order of operations to avoid overflow to a valid value + DRFLAC_FREE(pRawData); + return DRFLAC_FALSE; + } + metadata.data.picture.mime = pRunningData; pRunningData += metadata.data.picture.mimeLength; + metadata.data.picture.descriptionLength = drflac__be2host_32(*(const drflac_uint32*)pRunningData); pRunningData += 4; + + // Need space for the rest of the block + if ((pRunningDataEnd - pRunningData) - 20 < (drflac_int64)metadata.data.picture.descriptionLength) { // <-- Note the order of operations to avoid overflow to a valid value + DRFLAC_FREE(pRawData); + return DRFLAC_FALSE; + } + metadata.data.picture.description = pRunningData; pRunningData += metadata.data.picture.descriptionLength; + metadata.data.picture.width = drflac__be2host_32(*(const drflac_uint32*)pRunningData); pRunningData += 4; + metadata.data.picture.height = drflac__be2host_32(*(const drflac_uint32*)pRunningData); pRunningData += 4; + metadata.data.picture.colorDepth = drflac__be2host_32(*(const drflac_uint32*)pRunningData); pRunningData += 4; + metadata.data.picture.indexColorCount = drflac__be2host_32(*(const drflac_uint32*)pRunningData); pRunningData += 4; + metadata.data.picture.pictureDataSize = drflac__be2host_32(*(const drflac_uint32*)pRunningData); pRunningData += 4; + metadata.data.picture.pPictureData = (const drflac_uint8*)pRunningData; + + // Need space for the picture after the block + if (pRunningDataEnd - pRunningData < (drflac_int64)metadata.data.picture.pictureDataSize) { // <-- Note the order of operations to avoid overflow to a valid value + DRFLAC_FREE(pRawData); + return DRFLAC_FALSE; + } + + onMeta(pUserDataMD, &metadata); + + DRFLAC_FREE(pRawData); + } + } break; + + case DRFLAC_METADATA_BLOCK_TYPE_PADDING: + { + if (onMeta) { + metadata.data.padding.unused = 0; + + // Padding doesn't have anything meaningful in it, so just skip over it, but make sure the caller is aware of it by firing the callback. + if (!onSeek(pUserData, blockSize, drflac_seek_origin_current)) { + isLastBlock = DRFLAC_TRUE; // An error occurred while seeking. Attempt to recover by treating this as the last block which will in turn terminate the loop. + } else { + onMeta(pUserDataMD, &metadata); + } + } + } break; + + case DRFLAC_METADATA_BLOCK_TYPE_INVALID: + { + // Invalid chunk. Just skip over this one. + if (onMeta) { + if (!onSeek(pUserData, blockSize, drflac_seek_origin_current)) { + isLastBlock = DRFLAC_TRUE; // An error occurred while seeking. Attempt to recover by treating this as the last block which will in turn terminate the loop. + } + } + } break; + + default: + { + // It's an unknown chunk, but not necessarily invalid. There's a chance more metadata blocks might be defined later on, so we + // can at the very least report the chunk to the application and let it look at the raw data. + if (onMeta) { + void* pRawData = DRFLAC_MALLOC(blockSize); + if (pRawData == NULL) { + return DRFLAC_FALSE; + } + + if (onRead(pUserData, pRawData, blockSize) != blockSize) { + DRFLAC_FREE(pRawData); + return DRFLAC_FALSE; + } + + metadata.pRawData = pRawData; + metadata.rawDataSize = blockSize; + onMeta(pUserDataMD, &metadata); + + DRFLAC_FREE(pRawData); + } + } break; + } + + // If we're not handling metadata, just skip over the block. If we are, it will have been handled earlier in the switch statement above. + if (onMeta == NULL && blockSize > 0) { + if (!onSeek(pUserData, blockSize, drflac_seek_origin_current)) { + isLastBlock = DRFLAC_TRUE; + } + } + + runningFilePos += blockSize; + if (isLastBlock) { + break; + } + } + + *pSeektablePos = seektablePos; + *pSeektableSize = seektableSize; + *pFirstFramePos = runningFilePos; + + return DRFLAC_TRUE; +} + +drflac_bool32 drflac__init_private__native(drflac_init_info* pInit, drflac_read_proc onRead, drflac_seek_proc onSeek, drflac_meta_proc onMeta, void* pUserData, void* pUserDataMD, drflac_bool32 relaxed) +{ + (void)onSeek; + + // Pre: The bit stream should be sitting just past the 4-byte id header. + + pInit->container = drflac_container_native; + + // The first metadata block should be the STREAMINFO block. + drflac_uint8 isLastBlock; + drflac_uint8 blockType; + drflac_uint32 blockSize; + if (!drflac__read_and_decode_block_header(onRead, pUserData, &isLastBlock, &blockType, &blockSize)) { + return DRFLAC_FALSE; + } + + if (blockType != DRFLAC_METADATA_BLOCK_TYPE_STREAMINFO || blockSize != 34) { + if (!relaxed) { + // We're opening in strict mode and the first block is not the STREAMINFO block. Error. + return DRFLAC_FALSE; + } else { + // Relaxed mode. To open from here we need to just find the first frame and set the sample rate, etc. to whatever is defined + // for that frame. + pInit->hasStreamInfoBlock = DRFLAC_FALSE; + pInit->hasMetadataBlocks = DRFLAC_FALSE; + + if (!drflac__read_next_flac_frame_header(&pInit->bs, 0, &pInit->firstFrameHeader)) { + return DRFLAC_FALSE; // Couldn't find a frame. + } + + if (pInit->firstFrameHeader.bitsPerSample == 0) { + return DRFLAC_FALSE; // Failed to initialize because the first frame depends on the STREAMINFO block, which does not exist. + } + + pInit->sampleRate = pInit->firstFrameHeader.sampleRate; + pInit->channels = drflac__get_channel_count_from_channel_assignment(pInit->firstFrameHeader.channelAssignment); + pInit->bitsPerSample = pInit->firstFrameHeader.bitsPerSample; + pInit->maxBlockSize = 65535; // <-- See notes here: https://xiph.org/flac/format.html#metadata_block_streaminfo + return DRFLAC_TRUE; + } + } else { + drflac_streaminfo streaminfo; + if (!drflac__read_streaminfo(onRead, pUserData, &streaminfo)) { + return DRFLAC_FALSE; + } + + pInit->hasStreamInfoBlock = DRFLAC_TRUE; + pInit->sampleRate = streaminfo.sampleRate; + pInit->channels = streaminfo.channels; + pInit->bitsPerSample = streaminfo.bitsPerSample; + pInit->totalSampleCount = streaminfo.totalSampleCount; + pInit->maxBlockSize = streaminfo.maxBlockSize; // Don't care about the min block size - only the max (used for determining the size of the memory allocation). + pInit->hasMetadataBlocks = !isLastBlock; + + if (onMeta) { + drflac_metadata metadata; + metadata.type = DRFLAC_METADATA_BLOCK_TYPE_STREAMINFO; + metadata.pRawData = NULL; + metadata.rawDataSize = 0; + metadata.data.streaminfo = streaminfo; + onMeta(pUserDataMD, &metadata); + } + + return DRFLAC_TRUE; + } +} + +#ifndef DR_FLAC_NO_OGG +#define DRFLAC_OGG_MAX_PAGE_SIZE 65307 +#define DRFLAC_OGG_CAPTURE_PATTERN_CRC32 1605413199 // CRC-32 of "OggS". + +typedef enum +{ + drflac_ogg_recover_on_crc_mismatch, + drflac_ogg_fail_on_crc_mismatch +} drflac_ogg_crc_mismatch_recovery; + + +static drflac_uint32 drflac__crc32_table[] = { + 0x00000000L, 0x04C11DB7L, 0x09823B6EL, 0x0D4326D9L, + 0x130476DCL, 0x17C56B6BL, 0x1A864DB2L, 0x1E475005L, + 0x2608EDB8L, 0x22C9F00FL, 0x2F8AD6D6L, 0x2B4BCB61L, + 0x350C9B64L, 0x31CD86D3L, 0x3C8EA00AL, 0x384FBDBDL, + 0x4C11DB70L, 0x48D0C6C7L, 0x4593E01EL, 0x4152FDA9L, + 0x5F15ADACL, 0x5BD4B01BL, 0x569796C2L, 0x52568B75L, + 0x6A1936C8L, 0x6ED82B7FL, 0x639B0DA6L, 0x675A1011L, + 0x791D4014L, 0x7DDC5DA3L, 0x709F7B7AL, 0x745E66CDL, + 0x9823B6E0L, 0x9CE2AB57L, 0x91A18D8EL, 0x95609039L, + 0x8B27C03CL, 0x8FE6DD8BL, 0x82A5FB52L, 0x8664E6E5L, + 0xBE2B5B58L, 0xBAEA46EFL, 0xB7A96036L, 0xB3687D81L, + 0xAD2F2D84L, 0xA9EE3033L, 0xA4AD16EAL, 0xA06C0B5DL, + 0xD4326D90L, 0xD0F37027L, 0xDDB056FEL, 0xD9714B49L, + 0xC7361B4CL, 0xC3F706FBL, 0xCEB42022L, 0xCA753D95L, + 0xF23A8028L, 0xF6FB9D9FL, 0xFBB8BB46L, 0xFF79A6F1L, + 0xE13EF6F4L, 0xE5FFEB43L, 0xE8BCCD9AL, 0xEC7DD02DL, + 0x34867077L, 0x30476DC0L, 0x3D044B19L, 0x39C556AEL, + 0x278206ABL, 0x23431B1CL, 0x2E003DC5L, 0x2AC12072L, + 0x128E9DCFL, 0x164F8078L, 0x1B0CA6A1L, 0x1FCDBB16L, + 0x018AEB13L, 0x054BF6A4L, 0x0808D07DL, 0x0CC9CDCAL, + 0x7897AB07L, 0x7C56B6B0L, 0x71159069L, 0x75D48DDEL, + 0x6B93DDDBL, 0x6F52C06CL, 0x6211E6B5L, 0x66D0FB02L, + 0x5E9F46BFL, 0x5A5E5B08L, 0x571D7DD1L, 0x53DC6066L, + 0x4D9B3063L, 0x495A2DD4L, 0x44190B0DL, 0x40D816BAL, + 0xACA5C697L, 0xA864DB20L, 0xA527FDF9L, 0xA1E6E04EL, + 0xBFA1B04BL, 0xBB60ADFCL, 0xB6238B25L, 0xB2E29692L, + 0x8AAD2B2FL, 0x8E6C3698L, 0x832F1041L, 0x87EE0DF6L, + 0x99A95DF3L, 0x9D684044L, 0x902B669DL, 0x94EA7B2AL, + 0xE0B41DE7L, 0xE4750050L, 0xE9362689L, 0xEDF73B3EL, + 0xF3B06B3BL, 0xF771768CL, 0xFA325055L, 0xFEF34DE2L, + 0xC6BCF05FL, 0xC27DEDE8L, 0xCF3ECB31L, 0xCBFFD686L, + 0xD5B88683L, 0xD1799B34L, 0xDC3ABDEDL, 0xD8FBA05AL, + 0x690CE0EEL, 0x6DCDFD59L, 0x608EDB80L, 0x644FC637L, + 0x7A089632L, 0x7EC98B85L, 0x738AAD5CL, 0x774BB0EBL, + 0x4F040D56L, 0x4BC510E1L, 0x46863638L, 0x42472B8FL, + 0x5C007B8AL, 0x58C1663DL, 0x558240E4L, 0x51435D53L, + 0x251D3B9EL, 0x21DC2629L, 0x2C9F00F0L, 0x285E1D47L, + 0x36194D42L, 0x32D850F5L, 0x3F9B762CL, 0x3B5A6B9BL, + 0x0315D626L, 0x07D4CB91L, 0x0A97ED48L, 0x0E56F0FFL, + 0x1011A0FAL, 0x14D0BD4DL, 0x19939B94L, 0x1D528623L, + 0xF12F560EL, 0xF5EE4BB9L, 0xF8AD6D60L, 0xFC6C70D7L, + 0xE22B20D2L, 0xE6EA3D65L, 0xEBA91BBCL, 0xEF68060BL, + 0xD727BBB6L, 0xD3E6A601L, 0xDEA580D8L, 0xDA649D6FL, + 0xC423CD6AL, 0xC0E2D0DDL, 0xCDA1F604L, 0xC960EBB3L, + 0xBD3E8D7EL, 0xB9FF90C9L, 0xB4BCB610L, 0xB07DABA7L, + 0xAE3AFBA2L, 0xAAFBE615L, 0xA7B8C0CCL, 0xA379DD7BL, + 0x9B3660C6L, 0x9FF77D71L, 0x92B45BA8L, 0x9675461FL, + 0x8832161AL, 0x8CF30BADL, 0x81B02D74L, 0x857130C3L, + 0x5D8A9099L, 0x594B8D2EL, 0x5408ABF7L, 0x50C9B640L, + 0x4E8EE645L, 0x4A4FFBF2L, 0x470CDD2BL, 0x43CDC09CL, + 0x7B827D21L, 0x7F436096L, 0x7200464FL, 0x76C15BF8L, + 0x68860BFDL, 0x6C47164AL, 0x61043093L, 0x65C52D24L, + 0x119B4BE9L, 0x155A565EL, 0x18197087L, 0x1CD86D30L, + 0x029F3D35L, 0x065E2082L, 0x0B1D065BL, 0x0FDC1BECL, + 0x3793A651L, 0x3352BBE6L, 0x3E119D3FL, 0x3AD08088L, + 0x2497D08DL, 0x2056CD3AL, 0x2D15EBE3L, 0x29D4F654L, + 0xC5A92679L, 0xC1683BCEL, 0xCC2B1D17L, 0xC8EA00A0L, + 0xD6AD50A5L, 0xD26C4D12L, 0xDF2F6BCBL, 0xDBEE767CL, + 0xE3A1CBC1L, 0xE760D676L, 0xEA23F0AFL, 0xEEE2ED18L, + 0xF0A5BD1DL, 0xF464A0AAL, 0xF9278673L, 0xFDE69BC4L, + 0x89B8FD09L, 0x8D79E0BEL, 0x803AC667L, 0x84FBDBD0L, + 0x9ABC8BD5L, 0x9E7D9662L, 0x933EB0BBL, 0x97FFAD0CL, + 0xAFB010B1L, 0xAB710D06L, 0xA6322BDFL, 0xA2F33668L, + 0xBCB4666DL, 0xB8757BDAL, 0xB5365D03L, 0xB1F740B4L +}; + +static DRFLAC_INLINE drflac_uint32 drflac_crc32_byte(drflac_uint32 crc32, drflac_uint8 data) +{ +#ifndef DR_FLAC_NO_CRC + return (crc32 << 8) ^ drflac__crc32_table[(drflac_uint8)((crc32 >> 24) & 0xFF) ^ data]; +#else + (void)data; + return crc32; +#endif +} + +#if 0 +static DRFLAC_INLINE drflac_uint32 drflac_crc32_uint32(drflac_uint32 crc32, drflac_uint32 data) +{ + crc32 = drflac_crc32_byte(crc32, (drflac_uint8)((data >> 24) & 0xFF)); + crc32 = drflac_crc32_byte(crc32, (drflac_uint8)((data >> 16) & 0xFF)); + crc32 = drflac_crc32_byte(crc32, (drflac_uint8)((data >> 8) & 0xFF)); + crc32 = drflac_crc32_byte(crc32, (drflac_uint8)((data >> 0) & 0xFF)); + return crc32; +} + +static DRFLAC_INLINE drflac_uint32 drflac_crc32_uint64(drflac_uint32 crc32, drflac_uint64 data) +{ + crc32 = drflac_crc32_uint32(crc32, (drflac_uint32)((data >> 32) & 0xFFFFFFFF)); + crc32 = drflac_crc32_uint32(crc32, (drflac_uint32)((data >> 0) & 0xFFFFFFFF)); + return crc32; +} +#endif + +static DRFLAC_INLINE drflac_uint32 drflac_crc32_buffer(drflac_uint32 crc32, drflac_uint8* pData, drflac_uint32 dataSize) +{ + // This can be optimized. + for (drflac_uint32 i = 0; i < dataSize; ++i) { + crc32 = drflac_crc32_byte(crc32, pData[i]); + } + return crc32; +} + + +static DRFLAC_INLINE drflac_bool32 drflac_ogg__is_capture_pattern(drflac_uint8 pattern[4]) +{ + return pattern[0] == 'O' && pattern[1] == 'g' && pattern[2] == 'g' && pattern[3] == 'S'; +} + +static DRFLAC_INLINE drflac_uint32 drflac_ogg__get_page_header_size(drflac_ogg_page_header* pHeader) +{ + return 27 + pHeader->segmentCount; +} + +static DRFLAC_INLINE drflac_uint32 drflac_ogg__get_page_body_size(drflac_ogg_page_header* pHeader) +{ + drflac_uint32 pageBodySize = 0; + for (int i = 0; i < pHeader->segmentCount; ++i) { + pageBodySize += pHeader->segmentTable[i]; + } + + return pageBodySize; +} + +drflac_result drflac_ogg__read_page_header_after_capture_pattern(drflac_read_proc onRead, void* pUserData, drflac_ogg_page_header* pHeader, drflac_uint32* pBytesRead, drflac_uint32* pCRC32) +{ + drflac_assert(*pCRC32 == DRFLAC_OGG_CAPTURE_PATTERN_CRC32); + + drflac_uint8 data[23]; + if (onRead(pUserData, data, 23) != 23) { + return DRFLAC_END_OF_STREAM; + } + *pBytesRead += 23; + + pHeader->structureVersion = data[0]; + pHeader->headerType = data[1]; + drflac_copy_memory(&pHeader->granulePosition, &data[ 2], 8); + drflac_copy_memory(&pHeader->serialNumber, &data[10], 4); + drflac_copy_memory(&pHeader->sequenceNumber, &data[14], 4); + drflac_copy_memory(&pHeader->checksum, &data[18], 4); + pHeader->segmentCount = data[22]; + + // Calculate the CRC. Note that for the calculation the checksum part of the page needs to be set to 0. + data[18] = 0; + data[19] = 0; + data[20] = 0; + data[21] = 0; + + drflac_uint32 i; + for (i = 0; i < 23; ++i) { + *pCRC32 = drflac_crc32_byte(*pCRC32, data[i]); + } + + + if (onRead(pUserData, pHeader->segmentTable, pHeader->segmentCount) != pHeader->segmentCount) { + return DRFLAC_END_OF_STREAM; + } + *pBytesRead += pHeader->segmentCount; + + for (i = 0; i < pHeader->segmentCount; ++i) { + *pCRC32 = drflac_crc32_byte(*pCRC32, pHeader->segmentTable[i]); + } + + return DRFLAC_SUCCESS; +} + +drflac_result drflac_ogg__read_page_header(drflac_read_proc onRead, void* pUserData, drflac_ogg_page_header* pHeader, drflac_uint32* pBytesRead, drflac_uint32* pCRC32) +{ + *pBytesRead = 0; + + drflac_uint8 id[4]; + if (onRead(pUserData, id, 4) != 4) { + return DRFLAC_END_OF_STREAM; + } + *pBytesRead += 4; + + // We need to read byte-by-byte until we find the OggS capture pattern. + for (;;) { + if (drflac_ogg__is_capture_pattern(id)) { + *pCRC32 = DRFLAC_OGG_CAPTURE_PATTERN_CRC32; + + drflac_result result = drflac_ogg__read_page_header_after_capture_pattern(onRead, pUserData, pHeader, pBytesRead, pCRC32); + if (result == DRFLAC_SUCCESS) { + return DRFLAC_SUCCESS; + } else { + if (result == DRFLAC_CRC_MISMATCH) { + continue; + } else { + return result; + } + } + } else { + // The first 4 bytes did not equal the capture pattern. Read the next byte and try again. + id[0] = id[1]; + id[1] = id[2]; + id[2] = id[3]; + if (onRead(pUserData, &id[3], 1) != 1) { + return DRFLAC_END_OF_STREAM; + } + *pBytesRead += 1; + } + } +} + + +// The main part of the Ogg encapsulation is the conversion from the physical Ogg bitstream to the native FLAC bitstream. It works +// in three general stages: Ogg Physical Bitstream -> Ogg/FLAC Logical Bitstream -> FLAC Native Bitstream. dr_flac is designed +// in such a way that the core sections assume everything is delivered in native format. Therefore, for each encapsulation type +// dr_flac is supporting there needs to be a layer sitting on top of the onRead and onSeek callbacks that ensures the bits read from +// the physical Ogg bitstream are converted and delivered in native FLAC format. +typedef struct +{ + drflac_read_proc onRead; // The original onRead callback from drflac_open() and family. + drflac_seek_proc onSeek; // The original onSeek callback from drflac_open() and family. + void* pUserData; // The user data passed on onRead and onSeek. This is the user data that was passed on drflac_open() and family. + drflac_uint64 currentBytePos; // The position of the byte we are sitting on in the physical byte stream. Used for efficient seeking. + drflac_uint64 firstBytePos; // The position of the first byte in the physical bitstream. Points to the start of the "OggS" identifier of the FLAC bos page. + drflac_uint32 serialNumber; // The serial number of the FLAC audio pages. This is determined by the initial header page that was read during initialization. + drflac_ogg_page_header bosPageHeader; // Used for seeking. + drflac_ogg_page_header currentPageHeader; + drflac_uint32 bytesRemainingInPage; + drflac_uint32 pageDataSize; + drflac_uint8 pageData[DRFLAC_OGG_MAX_PAGE_SIZE]; +} drflac_oggbs; // oggbs = Ogg Bitstream + +static size_t drflac_oggbs__read_physical(drflac_oggbs* oggbs, void* bufferOut, size_t bytesToRead) +{ + size_t bytesActuallyRead = oggbs->onRead(oggbs->pUserData, bufferOut, bytesToRead); + oggbs->currentBytePos += bytesActuallyRead; + + return bytesActuallyRead; +} + +static drflac_bool32 drflac_oggbs__seek_physical(drflac_oggbs* oggbs, drflac_uint64 offset, drflac_seek_origin origin) +{ + if (origin == drflac_seek_origin_start) { + if (offset <= 0x7FFFFFFF) { + if (!oggbs->onSeek(oggbs->pUserData, (int)offset, drflac_seek_origin_start)) { + return DRFLAC_FALSE; + } + oggbs->currentBytePos = offset; + + return DRFLAC_TRUE; + } else { + if (!oggbs->onSeek(oggbs->pUserData, 0x7FFFFFFF, drflac_seek_origin_start)) { + return DRFLAC_FALSE; + } + oggbs->currentBytePos = offset; + + return drflac_oggbs__seek_physical(oggbs, offset - 0x7FFFFFFF, drflac_seek_origin_current); + } + } else { + while (offset > 0x7FFFFFFF) { + if (!oggbs->onSeek(oggbs->pUserData, 0x7FFFFFFF, drflac_seek_origin_current)) { + return DRFLAC_FALSE; + } + oggbs->currentBytePos += 0x7FFFFFFF; + offset -= 0x7FFFFFFF; + } + + if (!oggbs->onSeek(oggbs->pUserData, (int)offset, drflac_seek_origin_current)) { // <-- Safe cast thanks to the loop above. + return DRFLAC_FALSE; + } + oggbs->currentBytePos += offset; + + return DRFLAC_TRUE; + } +} + +static drflac_bool32 drflac_oggbs__goto_next_page(drflac_oggbs* oggbs, drflac_ogg_crc_mismatch_recovery recoveryMethod) +{ + drflac_ogg_page_header header; + for (;;) { + drflac_uint32 crc32 = 0; + drflac_uint32 bytesRead; + if (drflac_ogg__read_page_header(oggbs->onRead, oggbs->pUserData, &header, &bytesRead, &crc32) != DRFLAC_SUCCESS) { + return DRFLAC_FALSE; + } + oggbs->currentBytePos += bytesRead; + + drflac_uint32 pageBodySize = drflac_ogg__get_page_body_size(&header); + if (pageBodySize > DRFLAC_OGG_MAX_PAGE_SIZE) { + continue; // Invalid page size. Assume it's corrupted and just move to the next page. + } + + if (header.serialNumber != oggbs->serialNumber) { + // It's not a FLAC page. Skip it. + if (pageBodySize > 0 && !drflac_oggbs__seek_physical(oggbs, pageBodySize, drflac_seek_origin_current)) { + return DRFLAC_FALSE; + } + continue; + } + + + // We need to read the entire page and then do a CRC check on it. If there's a CRC mismatch we need to skip this page. + if (drflac_oggbs__read_physical(oggbs, oggbs->pageData, pageBodySize) != pageBodySize) { + return DRFLAC_FALSE; + } + oggbs->pageDataSize = pageBodySize; + +#ifndef DR_FLAC_NO_CRC + drflac_uint32 actualCRC32 = drflac_crc32_buffer(crc32, oggbs->pageData, oggbs->pageDataSize); + if (actualCRC32 != header.checksum) { + if (recoveryMethod == drflac_ogg_recover_on_crc_mismatch) { + continue; // CRC mismatch. Skip this page. + } else { + // Even though we are failing on a CRC mismatch, we still want our stream to be in a good state. Therefore we + // go to the next valid page to ensure we're in a good state, but return false to let the caller know that the + // seek did not fully complete. + drflac_oggbs__goto_next_page(oggbs, drflac_ogg_recover_on_crc_mismatch); + return DRFLAC_FALSE; + } + } +#else + (void)recoveryMethod; // <-- Silence a warning. +#endif + + oggbs->currentPageHeader = header; + oggbs->bytesRemainingInPage = pageBodySize; + return DRFLAC_TRUE; + } +} + +// Function below is unused at the moment, but I might be re-adding it later. +#if 0 +static drflac_uint8 drflac_oggbs__get_current_segment_index(drflac_oggbs* oggbs, drflac_uint8* pBytesRemainingInSeg) +{ + drflac_uint32 bytesConsumedInPage = drflac_ogg__get_page_body_size(&oggbs->currentPageHeader) - oggbs->bytesRemainingInPage; + drflac_uint8 iSeg = 0; + drflac_uint32 iByte = 0; + while (iByte < bytesConsumedInPage) { + drflac_uint8 segmentSize = oggbs->currentPageHeader.segmentTable[iSeg]; + if (iByte + segmentSize > bytesConsumedInPage) { + break; + } else { + iSeg += 1; + iByte += segmentSize; + } + } + + *pBytesRemainingInSeg = oggbs->currentPageHeader.segmentTable[iSeg] - (drflac_uint8)(bytesConsumedInPage - iByte); + return iSeg; +} + +static drflac_bool32 drflac_oggbs__seek_to_next_packet(drflac_oggbs* oggbs) +{ + // The current packet ends when we get to the segment with a lacing value of < 255 which is not at the end of a page. + for (;;) { + drflac_bool32 atEndOfPage = DRFLAC_FALSE; + + drflac_uint8 bytesRemainingInSeg; + drflac_uint8 iFirstSeg = drflac_oggbs__get_current_segment_index(oggbs, &bytesRemainingInSeg); + + drflac_uint32 bytesToEndOfPacketOrPage = bytesRemainingInSeg; + for (drflac_uint8 iSeg = iFirstSeg; iSeg < oggbs->currentPageHeader.segmentCount; ++iSeg) { + drflac_uint8 segmentSize = oggbs->currentPageHeader.segmentTable[iSeg]; + if (segmentSize < 255) { + if (iSeg == oggbs->currentPageHeader.segmentCount-1) { + atEndOfPage = DRFLAC_TRUE; + } + + break; + } + + bytesToEndOfPacketOrPage += segmentSize; + } + + // At this point we will have found either the packet or the end of the page. If were at the end of the page we'll + // want to load the next page and keep searching for the end of the packet. + drflac_oggbs__seek_physical(oggbs, bytesToEndOfPacketOrPage, drflac_seek_origin_current); + oggbs->bytesRemainingInPage -= bytesToEndOfPacketOrPage; + + if (atEndOfPage) { + // We're potentially at the next packet, but we need to check the next page first to be sure because the packet may + // straddle pages. + if (!drflac_oggbs__goto_next_page(oggbs)) { + return DRFLAC_FALSE; + } + + // If it's a fresh packet it most likely means we're at the next packet. + if ((oggbs->currentPageHeader.headerType & 0x01) == 0) { + return DRFLAC_TRUE; + } + } else { + // We're at the next packet. + return DRFLAC_TRUE; + } + } +} + +static drflac_bool32 drflac_oggbs__seek_to_next_frame(drflac_oggbs* oggbs) +{ + // The bitstream should be sitting on the first byte just after the header of the frame. + + // What we're actually doing here is seeking to the start of the next packet. + return drflac_oggbs__seek_to_next_packet(oggbs); +} +#endif + +static size_t drflac__on_read_ogg(void* pUserData, void* bufferOut, size_t bytesToRead) +{ + drflac_oggbs* oggbs = (drflac_oggbs*)pUserData; + drflac_assert(oggbs != NULL); + + drflac_uint8* pRunningBufferOut = (drflac_uint8*)bufferOut; + + // Reading is done page-by-page. If we've run out of bytes in the page we need to move to the next one. + size_t bytesRead = 0; + while (bytesRead < bytesToRead) { + size_t bytesRemainingToRead = bytesToRead - bytesRead; + + if (oggbs->bytesRemainingInPage >= bytesRemainingToRead) { + drflac_copy_memory(pRunningBufferOut, oggbs->pageData + (oggbs->pageDataSize - oggbs->bytesRemainingInPage), bytesRemainingToRead); + bytesRead += bytesRemainingToRead; + oggbs->bytesRemainingInPage -= (drflac_uint32)bytesRemainingToRead; + break; + } + + // If we get here it means some of the requested data is contained in the next pages. + if (oggbs->bytesRemainingInPage > 0) { + drflac_copy_memory(pRunningBufferOut, oggbs->pageData + (oggbs->pageDataSize - oggbs->bytesRemainingInPage), oggbs->bytesRemainingInPage); + bytesRead += oggbs->bytesRemainingInPage; + pRunningBufferOut += oggbs->bytesRemainingInPage; + oggbs->bytesRemainingInPage = 0; + } + + drflac_assert(bytesRemainingToRead > 0); + if (!drflac_oggbs__goto_next_page(oggbs, drflac_ogg_recover_on_crc_mismatch)) { + break; // Failed to go to the next page. Might have simply hit the end of the stream. + } + } + + return bytesRead; +} + +static drflac_bool32 drflac__on_seek_ogg(void* pUserData, int offset, drflac_seek_origin origin) +{ + drflac_oggbs* oggbs = (drflac_oggbs*)pUserData; + drflac_assert(oggbs != NULL); + drflac_assert(offset >= 0); // <-- Never seek backwards. + + // Seeking is always forward which makes things a lot simpler. + if (origin == drflac_seek_origin_start) { + if (!drflac_oggbs__seek_physical(oggbs, (int)oggbs->firstBytePos, drflac_seek_origin_start)) { + return DRFLAC_FALSE; + } + + if (!drflac_oggbs__goto_next_page(oggbs, drflac_ogg_fail_on_crc_mismatch)) { + return DRFLAC_FALSE; + } + + return drflac__on_seek_ogg(pUserData, offset, drflac_seek_origin_current); + } + + + drflac_assert(origin == drflac_seek_origin_current); + + int bytesSeeked = 0; + while (bytesSeeked < offset) { + int bytesRemainingToSeek = offset - bytesSeeked; + drflac_assert(bytesRemainingToSeek >= 0); + + if (oggbs->bytesRemainingInPage >= (size_t)bytesRemainingToSeek) { + bytesSeeked += bytesRemainingToSeek; + oggbs->bytesRemainingInPage -= bytesRemainingToSeek; + break; + } + + // If we get here it means some of the requested data is contained in the next pages. + if (oggbs->bytesRemainingInPage > 0) { + bytesSeeked += (int)oggbs->bytesRemainingInPage; + oggbs->bytesRemainingInPage = 0; + } + + drflac_assert(bytesRemainingToSeek > 0); + if (!drflac_oggbs__goto_next_page(oggbs, drflac_ogg_fail_on_crc_mismatch)) { + // Failed to go to the next page. We either hit the end of the stream or had a CRC mismatch. + return DRFLAC_FALSE; + } + } + + return DRFLAC_TRUE; +} + +drflac_bool32 drflac_ogg__seek_to_sample(drflac* pFlac, drflac_uint64 sampleIndex) +{ + drflac_oggbs* oggbs = (drflac_oggbs*)pFlac->_oggbs; + + drflac_uint64 originalBytePos = oggbs->currentBytePos; // For recovery. + + // First seek to the first frame. + if (!drflac__seek_to_byte(&pFlac->bs, pFlac->firstFramePos)) { + return DRFLAC_FALSE; + } + oggbs->bytesRemainingInPage = 0; + + drflac_uint64 runningGranulePosition = 0; + drflac_uint64 runningFrameBytePos = oggbs->currentBytePos; // <-- Points to the OggS identifier. + for (;;) { + if (!drflac_oggbs__goto_next_page(oggbs, drflac_ogg_recover_on_crc_mismatch)) { + drflac_oggbs__seek_physical(oggbs, originalBytePos, drflac_seek_origin_start); + return DRFLAC_FALSE; // Never did find that sample... + } + + runningFrameBytePos = oggbs->currentBytePos - drflac_ogg__get_page_header_size(&oggbs->currentPageHeader) - oggbs->pageDataSize; + if (oggbs->currentPageHeader.granulePosition*pFlac->channels >= sampleIndex) { + break; // The sample is somewhere in the previous page. + } + + + // At this point we know the sample is not in the previous page. It could possibly be in this page. For simplicity we + // disregard any pages that do not begin a fresh packet. + if ((oggbs->currentPageHeader.headerType & 0x01) == 0) { // <-- Is it a fresh page? + if (oggbs->currentPageHeader.segmentTable[0] >= 2) { + drflac_uint8 firstBytesInPage[2]; + firstBytesInPage[0] = oggbs->pageData[0]; + firstBytesInPage[1] = oggbs->pageData[1]; + + if ((firstBytesInPage[0] == 0xFF) && (firstBytesInPage[1] & 0xFC) == 0xF8) { // <-- Does the page begin with a frame's sync code? + runningGranulePosition = oggbs->currentPageHeader.granulePosition*pFlac->channels; + } + + continue; + } + } + } + + + // We found the page that that is closest to the sample, so now we need to find it. The first thing to do is seek to the + // start of that page. In the loop above we checked that it was a fresh page which means this page is also the start of + // a new frame. This property means that after we've seeked to the page we can immediately start looping over frames until + // we find the one containing the target sample. + if (!drflac_oggbs__seek_physical(oggbs, runningFrameBytePos, drflac_seek_origin_start)) { + return DRFLAC_FALSE; + } + if (!drflac_oggbs__goto_next_page(oggbs, drflac_ogg_recover_on_crc_mismatch)) { + return DRFLAC_FALSE; + } + + + // At this point we'll be sitting on the first byte of the frame header of the first frame in the page. We just keep + // looping over these frames until we find the one containing the sample we're after. + drflac_uint64 runningSampleCount = runningGranulePosition; + for (;;) { + // There are two ways to find the sample and seek past irrelevant frames: + // 1) Use the native FLAC decoder. + // 2) Use Ogg's framing system. + // + // Both of these options have their own pros and cons. Using the native FLAC decoder is slower because it needs to + // do a full decode of the frame. Using Ogg's framing system is faster, but more complicated and involves some code + // duplication for the decoding of frame headers. + // + // Another thing to consider is that using the Ogg framing system will perform direct seeking of the physical Ogg + // bitstream. This is important to consider because it means we cannot read data from the drflac_bs object using the + // standard drflac__*() APIs because that will read in extra data for its own internal caching which in turn breaks + // the positioning of the read pointer of the physical Ogg bitstream. Therefore, anything that would normally be read + // using the native FLAC decoding APIs, such as drflac__read_next_flac_frame_header(), need to be re-implemented so as to + // avoid the use of the drflac_bs object. + // + // Considering these issues, I have decided to use the slower native FLAC decoding method for the following reasons: + // 1) Seeking is already partially accelerated using Ogg's paging system in the code block above. + // 2) Seeking in an Ogg encapsulated FLAC stream is probably quite uncommon. + // 3) Simplicity. + if (!drflac__read_next_flac_frame_header(&pFlac->bs, pFlac->bitsPerSample, &pFlac->currentFrame.header)) { + return DRFLAC_FALSE; + } + + drflac_uint64 firstSampleInFrame = 0; + drflac_uint64 lastSampleInFrame = 0; + drflac__get_current_frame_sample_range(pFlac, &firstSampleInFrame, &lastSampleInFrame); + + drflac_uint64 sampleCountInThisFrame = (lastSampleInFrame - firstSampleInFrame) + 1; + if (sampleIndex < (runningSampleCount + sampleCountInThisFrame)) { + // The sample should be in this frame. We need to fully decode it, however if it's an invalid frame (a CRC mismatch), we need to pretend + // it never existed and keep iterating. + drflac_result result = drflac__decode_flac_frame(pFlac); + if (result == DRFLAC_SUCCESS) { + // The frame is valid. We just need to skip over some samples to ensure it's sample-exact. + drflac_uint64 samplesToDecode = (size_t)(sampleIndex - runningSampleCount); // <-- Safe cast because the maximum number of samples in a frame is 65535. + if (samplesToDecode == 0) { + return DRFLAC_TRUE; + } + return drflac__seek_forward_by_samples(pFlac, samplesToDecode) == samplesToDecode; // <-- If this fails, something bad has happened (it should never fail). + } else { + if (result == DRFLAC_CRC_MISMATCH) { + continue; // CRC mismatch. Pretend this frame never existed. + } else { + return DRFLAC_FALSE; + } + } + } else { + // It's not in this frame. We need to seek past the frame, but check if there was a CRC mismatch. If so, we pretend this + // frame never existed and leave the running sample count untouched. + drflac_result result = drflac__seek_to_next_flac_frame(pFlac); + if (result == DRFLAC_SUCCESS) { + runningSampleCount += sampleCountInThisFrame; + } else { + if (result == DRFLAC_CRC_MISMATCH) { + continue; // CRC mismatch. Pretend this frame never existed. + } else { + return DRFLAC_FALSE; + } + } + } + } +} + + +drflac_bool32 drflac__init_private__ogg(drflac_init_info* pInit, drflac_read_proc onRead, drflac_seek_proc onSeek, drflac_meta_proc onMeta, void* pUserData, void* pUserDataMD, drflac_bool32 relaxed) +{ + // Pre: The bit stream should be sitting just past the 4-byte OggS capture pattern. + (void)relaxed; + + pInit->container = drflac_container_ogg; + pInit->oggFirstBytePos = 0; + + // We'll get here if the first 4 bytes of the stream were the OggS capture pattern, however it doesn't necessarily mean the + // stream includes FLAC encoded audio. To check for this we need to scan the beginning-of-stream page markers and check if + // any match the FLAC specification. Important to keep in mind that the stream may be multiplexed. + drflac_ogg_page_header header; + + drflac_uint32 crc32 = DRFLAC_OGG_CAPTURE_PATTERN_CRC32; + drflac_uint32 bytesRead = 0; + if (drflac_ogg__read_page_header_after_capture_pattern(onRead, pUserData, &header, &bytesRead, &crc32) != DRFLAC_SUCCESS) { + return DRFLAC_FALSE; + } + pInit->runningFilePos += bytesRead; + + for (;;) { + // Break if we're past the beginning of stream page. + if ((header.headerType & 0x02) == 0) { + return DRFLAC_FALSE; + } + + + // Check if it's a FLAC header. + int pageBodySize = drflac_ogg__get_page_body_size(&header); + if (pageBodySize == 51) { // 51 = the lacing value of the FLAC header packet. + // It could be a FLAC page... + drflac_uint32 bytesRemainingInPage = pageBodySize; + + drflac_uint8 packetType; + if (onRead(pUserData, &packetType, 1) != 1) { + return DRFLAC_FALSE; + } + + bytesRemainingInPage -= 1; + if (packetType == 0x7F) { + // Increasingly more likely to be a FLAC page... + drflac_uint8 sig[4]; + if (onRead(pUserData, sig, 4) != 4) { + return DRFLAC_FALSE; + } + + bytesRemainingInPage -= 4; + if (sig[0] == 'F' && sig[1] == 'L' && sig[2] == 'A' && sig[3] == 'C') { + // Almost certainly a FLAC page... + drflac_uint8 mappingVersion[2]; + if (onRead(pUserData, mappingVersion, 2) != 2) { + return DRFLAC_FALSE; + } + + if (mappingVersion[0] != 1) { + return DRFLAC_FALSE; // Only supporting version 1.x of the Ogg mapping. + } + + // The next 2 bytes are the non-audio packets, not including this one. We don't care about this because we're going to + // be handling it in a generic way based on the serial number and packet types. + if (!onSeek(pUserData, 2, drflac_seek_origin_current)) { + return DRFLAC_FALSE; + } + + // Expecting the native FLAC signature "fLaC". + if (onRead(pUserData, sig, 4) != 4) { + return DRFLAC_FALSE; + } + + if (sig[0] == 'f' && sig[1] == 'L' && sig[2] == 'a' && sig[3] == 'C') { + // The remaining data in the page should be the STREAMINFO block. + drflac_uint8 isLastBlock; + drflac_uint8 blockType; + drflac_uint32 blockSize; + if (!drflac__read_and_decode_block_header(onRead, pUserData, &isLastBlock, &blockType, &blockSize)) { + return DRFLAC_FALSE; + } + + if (blockType != DRFLAC_METADATA_BLOCK_TYPE_STREAMINFO || blockSize != 34) { + return DRFLAC_FALSE; // Invalid block type. First block must be the STREAMINFO block. + } + + drflac_streaminfo streaminfo; + if (drflac__read_streaminfo(onRead, pUserData, &streaminfo)) { + // Success! + pInit->hasStreamInfoBlock = DRFLAC_TRUE; + pInit->sampleRate = streaminfo.sampleRate; + pInit->channels = streaminfo.channels; + pInit->bitsPerSample = streaminfo.bitsPerSample; + pInit->totalSampleCount = streaminfo.totalSampleCount; + pInit->maxBlockSize = streaminfo.maxBlockSize; + pInit->hasMetadataBlocks = !isLastBlock; + + if (onMeta) { + drflac_metadata metadata; + metadata.type = DRFLAC_METADATA_BLOCK_TYPE_STREAMINFO; + metadata.pRawData = NULL; + metadata.rawDataSize = 0; + metadata.data.streaminfo = streaminfo; + onMeta(pUserDataMD, &metadata); + } + + pInit->runningFilePos += pageBodySize; + pInit->oggFirstBytePos = pInit->runningFilePos - 79; // Subtracting 79 will place us right on top of the "OggS" identifier of the FLAC bos page. + pInit->oggSerial = header.serialNumber; + pInit->oggBosHeader = header; + break; + } else { + // Failed to read STREAMINFO block. Aww, so close... + return DRFLAC_FALSE; + } + } else { + // Invalid file. + return DRFLAC_FALSE; + } + } else { + // Not a FLAC header. Skip it. + if (!onSeek(pUserData, bytesRemainingInPage, drflac_seek_origin_current)) { + return DRFLAC_FALSE; + } + } + } else { + // Not a FLAC header. Seek past the entire page and move on to the next. + if (!onSeek(pUserData, bytesRemainingInPage, drflac_seek_origin_current)) { + return DRFLAC_FALSE; + } + } + } else { + if (!onSeek(pUserData, pageBodySize, drflac_seek_origin_current)) { + return DRFLAC_FALSE; + } + } + + pInit->runningFilePos += pageBodySize; + + + // Read the header of the next page. + if (drflac_ogg__read_page_header(onRead, pUserData, &header, &bytesRead, &crc32) != DRFLAC_SUCCESS) { + return DRFLAC_FALSE; + } + pInit->runningFilePos += bytesRead; + } + + + // If we get here it means we found a FLAC audio stream. We should be sitting on the first byte of the header of the next page. The next + // packets in the FLAC logical stream contain the metadata. The only thing left to do in the initialization phase for Ogg is to create the + // Ogg bistream object. + pInit->hasMetadataBlocks = DRFLAC_TRUE; // <-- Always have at least VORBIS_COMMENT metadata block. + return DRFLAC_TRUE; +} +#endif + +drflac_bool32 drflac__init_private(drflac_init_info* pInit, drflac_read_proc onRead, drflac_seek_proc onSeek, drflac_meta_proc onMeta, drflac_container container, void* pUserData, void* pUserDataMD) +{ + if (pInit == NULL || onRead == NULL || onSeek == NULL) { + return DRFLAC_FALSE; + } + + drflac_zero_memory(pInit, sizeof(*pInit)); + pInit->onRead = onRead; + pInit->onSeek = onSeek; + pInit->onMeta = onMeta; + pInit->container = container; + pInit->pUserData = pUserData; + pInit->pUserDataMD = pUserDataMD; + + pInit->bs.onRead = onRead; + pInit->bs.onSeek = onSeek; + pInit->bs.pUserData = pUserData; + drflac__reset_cache(&pInit->bs); + + + // If the container is explicitly defined then we can try opening in relaxed mode. + drflac_bool32 relaxed = container != drflac_container_unknown; + + drflac_uint8 id[4]; + + // Skip over any ID3 tags. + for (;;) { + if (onRead(pUserData, id, 4) != 4) { + return DRFLAC_FALSE; // Ran out of data. + } + pInit->runningFilePos += 4; + + if (id[0] == 'I' && id[1] == 'D' && id[2] == '3') { + drflac_uint8 header[6]; + if (onRead(pUserData, header, 6) != 6) { + return DRFLAC_FALSE; // Ran out of data. + } + pInit->runningFilePos += 6; + + drflac_uint8 flags = header[1]; + drflac_uint32 headerSize; + drflac_copy_memory(&headerSize, header+2, 4); + headerSize = drflac__unsynchsafe_32(drflac__be2host_32(headerSize)); + if (flags & 0x10) { + headerSize += 10; + } + + if (!onSeek(pUserData, headerSize, drflac_seek_origin_current)) { + return DRFLAC_FALSE; // Failed to seek past the tag. + } + pInit->runningFilePos += headerSize; + } else { + break; + } + } + + if (id[0] == 'f' && id[1] == 'L' && id[2] == 'a' && id[3] == 'C') { + return drflac__init_private__native(pInit, onRead, onSeek, onMeta, pUserData, pUserDataMD, relaxed); + } +#ifndef DR_FLAC_NO_OGG + if (id[0] == 'O' && id[1] == 'g' && id[2] == 'g' && id[3] == 'S') { + return drflac__init_private__ogg(pInit, onRead, onSeek, onMeta, pUserData, pUserDataMD, relaxed); + } +#endif + + // If we get here it means we likely don't have a header. Try opening in relaxed mode, if applicable. + if (relaxed) { + if (container == drflac_container_native) { + return drflac__init_private__native(pInit, onRead, onSeek, onMeta, pUserData, pUserDataMD, relaxed); + } +#ifndef DR_FLAC_NO_OGG + if (container == drflac_container_ogg) { + return drflac__init_private__ogg(pInit, onRead, onSeek, onMeta, pUserData, pUserDataMD, relaxed); + } +#endif + } + + // Unsupported container. + return DRFLAC_FALSE; +} + +void drflac__init_from_info(drflac* pFlac, drflac_init_info* pInit) +{ + drflac_assert(pFlac != NULL); + drflac_assert(pInit != NULL); + + drflac_zero_memory(pFlac, sizeof(*pFlac)); + pFlac->bs = pInit->bs; + pFlac->onMeta = pInit->onMeta; + pFlac->pUserDataMD = pInit->pUserDataMD; + pFlac->maxBlockSize = pInit->maxBlockSize; + pFlac->sampleRate = pInit->sampleRate; + pFlac->channels = (drflac_uint8)pInit->channels; + pFlac->bitsPerSample = (drflac_uint8)pInit->bitsPerSample; + pFlac->totalSampleCount = pInit->totalSampleCount; + pFlac->totalPCMFrameCount = pInit->totalSampleCount / pFlac->channels; + pFlac->container = pInit->container; +} + +drflac* drflac_open_with_metadata_private(drflac_read_proc onRead, drflac_seek_proc onSeek, drflac_meta_proc onMeta, drflac_container container, void* pUserData, void* pUserDataMD) +{ +#ifndef DRFLAC_NO_CPUID + // CPU support first. + drflac__init_cpu_caps(); +#endif + + drflac_init_info init; + if (!drflac__init_private(&init, onRead, onSeek, onMeta, container, pUserData, pUserDataMD)) { + return NULL; + } + + // The size of the allocation for the drflac object needs to be large enough to fit the following: + // 1) The main members of the drflac structure + // 2) A block of memory large enough to store the decoded samples of the largest frame in the stream + // 3) If the container is Ogg, a drflac_oggbs object + // + // The complicated part of the allocation is making sure there's enough room the decoded samples, taking into consideration + // the different SIMD instruction sets. + drflac_uint32 allocationSize = sizeof(drflac); + + // The allocation size for decoded frames depends on the number of 32-bit integers that fit inside the largest SIMD vector + // we are supporting. + drflac_uint32 wholeSIMDVectorCountPerChannel; + if (((init.maxBlockSize+DRFLAC_LEADING_SAMPLES) % (DRFLAC_MAX_SIMD_VECTOR_SIZE / sizeof(drflac_int32))) == 0) { + wholeSIMDVectorCountPerChannel = ((init.maxBlockSize+DRFLAC_LEADING_SAMPLES) / (DRFLAC_MAX_SIMD_VECTOR_SIZE / sizeof(drflac_int32))); + } else { + wholeSIMDVectorCountPerChannel = ((init.maxBlockSize+DRFLAC_LEADING_SAMPLES) / (DRFLAC_MAX_SIMD_VECTOR_SIZE / sizeof(drflac_int32))) + 1; + } + + drflac_uint32 decodedSamplesAllocationSize = wholeSIMDVectorCountPerChannel * DRFLAC_MAX_SIMD_VECTOR_SIZE * init.channels; + + allocationSize += decodedSamplesAllocationSize; + allocationSize += DRFLAC_MAX_SIMD_VECTOR_SIZE; // Allocate extra bytes to ensure we have enough for alignment. + +#ifndef DR_FLAC_NO_OGG + // There's additional data required for Ogg streams. + drflac_uint32 oggbsAllocationSize = 0; + if (init.container == drflac_container_ogg) { + oggbsAllocationSize = sizeof(drflac_oggbs); + allocationSize += oggbsAllocationSize; + } + + drflac_oggbs oggbs; + drflac_zero_memory(&oggbs, sizeof(oggbs)); + if (init.container == drflac_container_ogg) { + oggbs.onRead = onRead; + oggbs.onSeek = onSeek; + oggbs.pUserData = pUserData; + oggbs.currentBytePos = init.oggFirstBytePos; + oggbs.firstBytePos = init.oggFirstBytePos; + oggbs.serialNumber = init.oggSerial; + oggbs.bosPageHeader = init.oggBosHeader; + oggbs.bytesRemainingInPage = 0; + } +#endif + + // This part is a bit awkward. We need to load the seektable so that it can be referenced in-memory, but I want the drflac object to + // consist of only a single heap allocation. To this, the size of the seek table needs to be known, which we determine when reading + // and decoding the metadata. + drflac_uint64 firstFramePos = 42; // <-- We know we are at byte 42 at this point. + drflac_uint64 seektablePos = 0; + drflac_uint32 seektableSize = 0; + if (init.hasMetadataBlocks) { + drflac_read_proc onReadOverride = onRead; + drflac_seek_proc onSeekOverride = onSeek; + void* pUserDataOverride = pUserData; + +#ifndef DR_FLAC_NO_OGG + if (init.container == drflac_container_ogg) { + onReadOverride = drflac__on_read_ogg; + onSeekOverride = drflac__on_seek_ogg; + pUserDataOverride = (void*)&oggbs; + } +#endif + + if (!drflac__read_and_decode_metadata(onReadOverride, onSeekOverride, onMeta, pUserDataOverride, pUserDataMD, &firstFramePos, &seektablePos, &seektableSize)) { + return NULL; + } + + allocationSize += seektableSize; + } + + + drflac* pFlac = (drflac*)DRFLAC_MALLOC(allocationSize); + drflac__init_from_info(pFlac, &init); + pFlac->pDecodedSamples = (drflac_int32*)drflac_align((size_t)pFlac->pExtraData, DRFLAC_MAX_SIMD_VECTOR_SIZE); + +#ifndef DR_FLAC_NO_OGG + if (init.container == drflac_container_ogg) { + drflac_oggbs* pInternalOggbs = (drflac_oggbs*)((drflac_uint8*)pFlac->pDecodedSamples + decodedSamplesAllocationSize + seektableSize); + *pInternalOggbs = oggbs; + + // The Ogg bistream needs to be layered on top of the original bitstream. + pFlac->bs.onRead = drflac__on_read_ogg; + pFlac->bs.onSeek = drflac__on_seek_ogg; + pFlac->bs.pUserData = (void*)pInternalOggbs; + pFlac->_oggbs = (void*)pInternalOggbs; + } +#endif + + pFlac->firstFramePos = firstFramePos; + + // NOTE: Seektables are not currently compatible with Ogg encapsulation (Ogg has its own accelerated seeking system). I may change this later, so I'm leaving this here for now. +#ifndef DR_FLAC_NO_OGG + if (init.container == drflac_container_ogg) + { + pFlac->pSeekpoints = NULL; + pFlac->seekpointCount = 0; + } + else +#endif + { + // If we have a seektable we need to load it now, making sure we move back to where we were previously. + if (seektablePos != 0) { + pFlac->seekpointCount = seektableSize / sizeof(*pFlac->pSeekpoints); + pFlac->pSeekpoints = (drflac_seekpoint*)((drflac_uint8*)pFlac->pDecodedSamples + decodedSamplesAllocationSize); + + // Seek to the seektable, then just read directly into our seektable buffer. + if (pFlac->bs.onSeek(pFlac->bs.pUserData, (int)seektablePos, drflac_seek_origin_start)) { + if (pFlac->bs.onRead(pFlac->bs.pUserData, pFlac->pSeekpoints, seektableSize) == seektableSize) { + // Endian swap. + for (drflac_uint32 iSeekpoint = 0; iSeekpoint < pFlac->seekpointCount; ++iSeekpoint) { + pFlac->pSeekpoints[iSeekpoint].firstSample = drflac__be2host_64(pFlac->pSeekpoints[iSeekpoint].firstSample); + pFlac->pSeekpoints[iSeekpoint].frameOffset = drflac__be2host_64(pFlac->pSeekpoints[iSeekpoint].frameOffset); + pFlac->pSeekpoints[iSeekpoint].sampleCount = drflac__be2host_16(pFlac->pSeekpoints[iSeekpoint].sampleCount); + } + } else { + // Failed to read the seektable. Pretend we don't have one. + pFlac->pSeekpoints = NULL; + pFlac->seekpointCount = 0; + } + + // We need to seek back to where we were. If this fails it's a critical error. + if (!pFlac->bs.onSeek(pFlac->bs.pUserData, (int)pFlac->firstFramePos, drflac_seek_origin_start)) { + DRFLAC_FREE(pFlac); + return NULL; + } + } else { + // Failed to seek to the seektable. Ominous sign, but for now we can just pretend we don't have one. + pFlac->pSeekpoints = NULL; + pFlac->seekpointCount = 0; + } + } + } + + + + // If we get here, but don't have a STREAMINFO block, it means we've opened the stream in relaxed mode and need to decode + // the first frame. + if (!init.hasStreamInfoBlock) { + pFlac->currentFrame.header = init.firstFrameHeader; + do + { + drflac_result result = drflac__decode_flac_frame(pFlac); + if (result == DRFLAC_SUCCESS) { + break; + } else { + if (result == DRFLAC_CRC_MISMATCH) { + if (!drflac__read_next_flac_frame_header(&pFlac->bs, pFlac->bitsPerSample, &pFlac->currentFrame.header)) { + DRFLAC_FREE(pFlac); + return NULL; + } + continue; + } else { + DRFLAC_FREE(pFlac); + return NULL; + } + } + } while (1); + } + + return pFlac; +} + + + +#ifndef DR_FLAC_NO_STDIO +#include + +static size_t drflac__on_read_stdio(void* pUserData, void* bufferOut, size_t bytesToRead) +{ + return fread(bufferOut, 1, bytesToRead, (FILE*)pUserData); +} + +static drflac_bool32 drflac__on_seek_stdio(void* pUserData, int offset, drflac_seek_origin origin) +{ + drflac_assert(offset >= 0); // <-- Never seek backwards. + + return fseek((FILE*)pUserData, offset, (origin == drflac_seek_origin_current) ? SEEK_CUR : SEEK_SET) == 0; +} + +static FILE* drflac__fopen(const char* filename) +{ + FILE* pFile; +#ifdef _MSC_VER + if (fopen_s(&pFile, filename, "rb") != 0) { + return NULL; + } +#else + pFile = fopen(filename, "rb"); + if (pFile == NULL) { + return NULL; + } +#endif + + return pFile; +} + + +drflac* drflac_open_file(const char* filename) +{ + FILE* file = drflac__fopen(filename); + if (file == NULL) { + return NULL; + } + + drflac* pFlac = drflac_open(drflac__on_read_stdio, drflac__on_seek_stdio, (void*)file); + if (pFlac == NULL) { + fclose(file); + return NULL; + } + + return pFlac; +} + +drflac* drflac_open_file_with_metadata(const char* filename, drflac_meta_proc onMeta, void* pUserData) +{ + FILE* file = drflac__fopen(filename); + if (file == NULL) { + return NULL; + } + + drflac* pFlac = drflac_open_with_metadata_private(drflac__on_read_stdio, drflac__on_seek_stdio, onMeta, drflac_container_unknown, (void*)file, pUserData); + if (pFlac == NULL) { + fclose(file); + return pFlac; + } + + return pFlac; +} +#endif //DR_FLAC_NO_STDIO + +static size_t drflac__on_read_memory(void* pUserData, void* bufferOut, size_t bytesToRead) +{ + drflac__memory_stream* memoryStream = (drflac__memory_stream*)pUserData; + drflac_assert(memoryStream != NULL); + drflac_assert(memoryStream->dataSize >= memoryStream->currentReadPos); + + size_t bytesRemaining = memoryStream->dataSize - memoryStream->currentReadPos; + if (bytesToRead > bytesRemaining) { + bytesToRead = bytesRemaining; + } + + if (bytesToRead > 0) { + drflac_copy_memory(bufferOut, memoryStream->data + memoryStream->currentReadPos, bytesToRead); + memoryStream->currentReadPos += bytesToRead; + } + + return bytesToRead; +} + +static drflac_bool32 drflac__on_seek_memory(void* pUserData, int offset, drflac_seek_origin origin) +{ + drflac__memory_stream* memoryStream = (drflac__memory_stream*)pUserData; + drflac_assert(memoryStream != NULL); + drflac_assert(offset >= 0); // <-- Never seek backwards. + + if (offset > (drflac_int64)memoryStream->dataSize) { + return DRFLAC_FALSE; + } + + if (origin == drflac_seek_origin_current) { + if (memoryStream->currentReadPos + offset <= memoryStream->dataSize) { + memoryStream->currentReadPos += offset; + } else { + return DRFLAC_FALSE; // Trying to seek too far forward. + } + } else { + if ((drflac_uint32)offset <= memoryStream->dataSize) { + memoryStream->currentReadPos = offset; + } else { + return DRFLAC_FALSE; // Trying to seek too far forward. + } + } + + return DRFLAC_TRUE; +} + +drflac* drflac_open_memory(const void* data, size_t dataSize) +{ + drflac__memory_stream memoryStream; + memoryStream.data = (const unsigned char*)data; + memoryStream.dataSize = dataSize; + memoryStream.currentReadPos = 0; + drflac* pFlac = drflac_open(drflac__on_read_memory, drflac__on_seek_memory, &memoryStream); + if (pFlac == NULL) { + return NULL; + } + + pFlac->memoryStream = memoryStream; + + // This is an awful hack... +#ifndef DR_FLAC_NO_OGG + if (pFlac->container == drflac_container_ogg) + { + drflac_oggbs* oggbs = (drflac_oggbs*)pFlac->_oggbs; + oggbs->pUserData = &pFlac->memoryStream; + } + else +#endif + { + pFlac->bs.pUserData = &pFlac->memoryStream; + } + + return pFlac; +} + +drflac* drflac_open_memory_with_metadata(const void* data, size_t dataSize, drflac_meta_proc onMeta, void* pUserData) +{ + drflac__memory_stream memoryStream; + memoryStream.data = (const unsigned char*)data; + memoryStream.dataSize = dataSize; + memoryStream.currentReadPos = 0; + drflac* pFlac = drflac_open_with_metadata_private(drflac__on_read_memory, drflac__on_seek_memory, onMeta, drflac_container_unknown, &memoryStream, pUserData); + if (pFlac == NULL) { + return NULL; + } + + pFlac->memoryStream = memoryStream; + + // This is an awful hack... +#ifndef DR_FLAC_NO_OGG + if (pFlac->container == drflac_container_ogg) + { + drflac_oggbs* oggbs = (drflac_oggbs*)pFlac->_oggbs; + oggbs->pUserData = &pFlac->memoryStream; + } + else +#endif + { + pFlac->bs.pUserData = &pFlac->memoryStream; + } + + return pFlac; +} + + + +drflac* drflac_open(drflac_read_proc onRead, drflac_seek_proc onSeek, void* pUserData) +{ + return drflac_open_with_metadata_private(onRead, onSeek, NULL, drflac_container_unknown, pUserData, pUserData); +} +drflac* drflac_open_relaxed(drflac_read_proc onRead, drflac_seek_proc onSeek, drflac_container container, void* pUserData) +{ + return drflac_open_with_metadata_private(onRead, onSeek, NULL, container, pUserData, pUserData); +} + +drflac* drflac_open_with_metadata(drflac_read_proc onRead, drflac_seek_proc onSeek, drflac_meta_proc onMeta, void* pUserData) +{ + return drflac_open_with_metadata_private(onRead, onSeek, onMeta, drflac_container_unknown, pUserData, pUserData); +} +drflac* drflac_open_with_metadata_relaxed(drflac_read_proc onRead, drflac_seek_proc onSeek, drflac_meta_proc onMeta, drflac_container container, void* pUserData) +{ + return drflac_open_with_metadata_private(onRead, onSeek, onMeta, container, pUserData, pUserData); +} + +void drflac_close(drflac* pFlac) +{ + if (pFlac == NULL) { + return; + } + +#ifndef DR_FLAC_NO_STDIO + // If we opened the file with drflac_open_file() we will want to close the file handle. We can know whether or not drflac_open_file() + // was used by looking at the callbacks. + if (pFlac->bs.onRead == drflac__on_read_stdio) { + fclose((FILE*)pFlac->bs.pUserData); + } + +#ifndef DR_FLAC_NO_OGG + // Need to clean up Ogg streams a bit differently due to the way the bit streaming is chained. + if (pFlac->container == drflac_container_ogg) { + drflac_assert(pFlac->bs.onRead == drflac__on_read_ogg); + drflac_oggbs* oggbs = (drflac_oggbs*)pFlac->_oggbs; + if (oggbs->onRead == drflac__on_read_stdio) { + fclose((FILE*)oggbs->pUserData); + } + } +#endif +#endif + + DRFLAC_FREE(pFlac); +} + +drflac_uint64 drflac__read_s32__misaligned(drflac* pFlac, drflac_uint64 samplesToRead, drflac_int32* bufferOut) +{ + unsigned int channelCount = drflac__get_channel_count_from_channel_assignment(pFlac->currentFrame.header.channelAssignment); + + // We should never be calling this when the number of samples to read is >= the sample count. + drflac_assert(samplesToRead < channelCount); + drflac_assert(pFlac->currentFrame.samplesRemaining > 0 && samplesToRead <= pFlac->currentFrame.samplesRemaining); + + + drflac_uint64 samplesRead = 0; + while (samplesToRead > 0) { + drflac_uint64 totalSamplesInFrame = pFlac->currentFrame.header.blockSize * channelCount; + drflac_uint64 samplesReadFromFrameSoFar = totalSamplesInFrame - pFlac->currentFrame.samplesRemaining; + drflac_uint64 channelIndex = samplesReadFromFrameSoFar % channelCount; + + drflac_uint64 nextSampleInFrame = samplesReadFromFrameSoFar / channelCount; + + int decodedSample = 0; + switch (pFlac->currentFrame.header.channelAssignment) + { + case DRFLAC_CHANNEL_ASSIGNMENT_LEFT_SIDE: + { + if (channelIndex == 0) { + decodedSample = pFlac->currentFrame.subframes[channelIndex + 0].pDecodedSamples[nextSampleInFrame] << pFlac->currentFrame.subframes[channelIndex + 0].wastedBitsPerSample; + } else { + int side = pFlac->currentFrame.subframes[channelIndex + 0].pDecodedSamples[nextSampleInFrame] << pFlac->currentFrame.subframes[channelIndex + 0].wastedBitsPerSample; + int left = pFlac->currentFrame.subframes[channelIndex - 1].pDecodedSamples[nextSampleInFrame] << pFlac->currentFrame.subframes[channelIndex - 1].wastedBitsPerSample; + decodedSample = left - side; + } + } break; + + case DRFLAC_CHANNEL_ASSIGNMENT_RIGHT_SIDE: + { + if (channelIndex == 0) { + int side = pFlac->currentFrame.subframes[channelIndex + 0].pDecodedSamples[nextSampleInFrame] << pFlac->currentFrame.subframes[channelIndex + 0].wastedBitsPerSample; + int right = pFlac->currentFrame.subframes[channelIndex + 1].pDecodedSamples[nextSampleInFrame] << pFlac->currentFrame.subframes[channelIndex + 1].wastedBitsPerSample; + decodedSample = side + right; + } else { + decodedSample = pFlac->currentFrame.subframes[channelIndex + 0].pDecodedSamples[nextSampleInFrame] << pFlac->currentFrame.subframes[channelIndex + 0].wastedBitsPerSample; + } + } break; + + case DRFLAC_CHANNEL_ASSIGNMENT_MID_SIDE: + { + int mid; + int side; + if (channelIndex == 0) { + mid = pFlac->currentFrame.subframes[channelIndex + 0].pDecodedSamples[nextSampleInFrame] << pFlac->currentFrame.subframes[channelIndex + 0].wastedBitsPerSample; + side = pFlac->currentFrame.subframes[channelIndex + 1].pDecodedSamples[nextSampleInFrame] << pFlac->currentFrame.subframes[channelIndex + 1].wastedBitsPerSample; + + mid = (((unsigned int)mid) << 1) | (side & 0x01); + decodedSample = (mid + side) >> 1; + } else { + mid = pFlac->currentFrame.subframes[channelIndex - 1].pDecodedSamples[nextSampleInFrame] << pFlac->currentFrame.subframes[channelIndex - 1].wastedBitsPerSample; + side = pFlac->currentFrame.subframes[channelIndex + 0].pDecodedSamples[nextSampleInFrame] << pFlac->currentFrame.subframes[channelIndex + 0].wastedBitsPerSample; + + mid = (((unsigned int)mid) << 1) | (side & 0x01); + decodedSample = (mid - side) >> 1; + } + } break; + + case DRFLAC_CHANNEL_ASSIGNMENT_INDEPENDENT: + default: + { + decodedSample = pFlac->currentFrame.subframes[channelIndex + 0].pDecodedSamples[nextSampleInFrame] << pFlac->currentFrame.subframes[channelIndex + 0].wastedBitsPerSample; + } break; + } + + + decodedSample <<= (32 - pFlac->bitsPerSample); + + if (bufferOut) { + *bufferOut++ = decodedSample; + } + + samplesRead += 1; + pFlac->currentFrame.samplesRemaining -= 1; + samplesToRead -= 1; + } + + return samplesRead; +} + +drflac_uint64 drflac_read_s32(drflac* pFlac, drflac_uint64 samplesToRead, drflac_int32* bufferOut) +{ + // Note that is allowed to be null, in which case this will act like a seek. + if (pFlac == NULL || samplesToRead == 0) { + return 0; + } + + if (bufferOut == NULL) { + return drflac__seek_forward_by_samples(pFlac, samplesToRead); + } + + + drflac_uint64 samplesRead = 0; + while (samplesToRead > 0) { + // If we've run out of samples in this frame, go to the next. + if (pFlac->currentFrame.samplesRemaining == 0) { + if (!drflac__read_and_decode_next_flac_frame(pFlac)) { + break; // Couldn't read the next frame, so just break from the loop and return. + } + } else { + // Here is where we grab the samples and interleave them. + + unsigned int channelCount = drflac__get_channel_count_from_channel_assignment(pFlac->currentFrame.header.channelAssignment); + drflac_uint64 totalSamplesInFrame = pFlac->currentFrame.header.blockSize * channelCount; + drflac_uint64 samplesReadFromFrameSoFar = totalSamplesInFrame - pFlac->currentFrame.samplesRemaining; + + drflac_uint64 misalignedSampleCount = samplesReadFromFrameSoFar % channelCount; + if (misalignedSampleCount > 0) { + drflac_uint64 misalignedSamplesRead = drflac__read_s32__misaligned(pFlac, misalignedSampleCount, bufferOut); + samplesRead += misalignedSamplesRead; + samplesReadFromFrameSoFar += misalignedSamplesRead; + bufferOut += misalignedSamplesRead; + samplesToRead -= misalignedSamplesRead; + pFlac->currentSample += misalignedSamplesRead; + } + + + drflac_uint64 alignedSampleCountPerChannel = samplesToRead / channelCount; + if (alignedSampleCountPerChannel > pFlac->currentFrame.samplesRemaining / channelCount) { + alignedSampleCountPerChannel = pFlac->currentFrame.samplesRemaining / channelCount; + } + + drflac_uint64 firstAlignedSampleInFrame = samplesReadFromFrameSoFar / channelCount; + unsigned int unusedBitsPerSample = 32 - pFlac->bitsPerSample; + + switch (pFlac->currentFrame.header.channelAssignment) + { + case DRFLAC_CHANNEL_ASSIGNMENT_LEFT_SIDE: + { + const drflac_int32* pDecodedSamples0 = pFlac->currentFrame.subframes[0].pDecodedSamples + firstAlignedSampleInFrame; + const drflac_int32* pDecodedSamples1 = pFlac->currentFrame.subframes[1].pDecodedSamples + firstAlignedSampleInFrame; + + for (drflac_uint64 i = 0; i < alignedSampleCountPerChannel; ++i) { + int left = pDecodedSamples0[i] << (unusedBitsPerSample + pFlac->currentFrame.subframes[0].wastedBitsPerSample); + int side = pDecodedSamples1[i] << (unusedBitsPerSample + pFlac->currentFrame.subframes[1].wastedBitsPerSample); + int right = left - side; + + bufferOut[i*2+0] = left; + bufferOut[i*2+1] = right; + } + } break; + + case DRFLAC_CHANNEL_ASSIGNMENT_RIGHT_SIDE: + { + const drflac_int32* pDecodedSamples0 = pFlac->currentFrame.subframes[0].pDecodedSamples + firstAlignedSampleInFrame; + const drflac_int32* pDecodedSamples1 = pFlac->currentFrame.subframes[1].pDecodedSamples + firstAlignedSampleInFrame; + + for (drflac_uint64 i = 0; i < alignedSampleCountPerChannel; ++i) { + int side = pDecodedSamples0[i] << (unusedBitsPerSample + pFlac->currentFrame.subframes[0].wastedBitsPerSample); + int right = pDecodedSamples1[i] << (unusedBitsPerSample + pFlac->currentFrame.subframes[1].wastedBitsPerSample); + int left = right + side; + + bufferOut[i*2+0] = left; + bufferOut[i*2+1] = right; + } + } break; + + case DRFLAC_CHANNEL_ASSIGNMENT_MID_SIDE: + { + const drflac_int32* pDecodedSamples0 = pFlac->currentFrame.subframes[0].pDecodedSamples + firstAlignedSampleInFrame; + const drflac_int32* pDecodedSamples1 = pFlac->currentFrame.subframes[1].pDecodedSamples + firstAlignedSampleInFrame; + + for (drflac_uint64 i = 0; i < alignedSampleCountPerChannel; ++i) { + int mid = pDecodedSamples0[i] << pFlac->currentFrame.subframes[0].wastedBitsPerSample; + int side = pDecodedSamples1[i] << pFlac->currentFrame.subframes[1].wastedBitsPerSample; + + mid = (((drflac_uint32)mid) << 1) | (side & 0x01); + + bufferOut[i*2+0] = ((mid + side) >> 1) << (unusedBitsPerSample); + bufferOut[i*2+1] = ((mid - side) >> 1) << (unusedBitsPerSample); + } + } break; + + case DRFLAC_CHANNEL_ASSIGNMENT_INDEPENDENT: + default: + { + if (pFlac->currentFrame.header.channelAssignment == 1) // 1 = Stereo + { + // Stereo optimized inner loop unroll. + const drflac_int32* pDecodedSamples0 = pFlac->currentFrame.subframes[0].pDecodedSamples + firstAlignedSampleInFrame; + const drflac_int32* pDecodedSamples1 = pFlac->currentFrame.subframes[1].pDecodedSamples + firstAlignedSampleInFrame; + + for (drflac_uint64 i = 0; i < alignedSampleCountPerChannel; ++i) { + bufferOut[i*2+0] = pDecodedSamples0[i] << (unusedBitsPerSample + pFlac->currentFrame.subframes[0].wastedBitsPerSample); + bufferOut[i*2+1] = pDecodedSamples1[i] << (unusedBitsPerSample + pFlac->currentFrame.subframes[1].wastedBitsPerSample); + } + } + else + { + // Generic interleaving. + for (drflac_uint64 i = 0; i < alignedSampleCountPerChannel; ++i) { + for (unsigned int j = 0; j < channelCount; ++j) { + bufferOut[(i*channelCount)+j] = (pFlac->currentFrame.subframes[j].pDecodedSamples[firstAlignedSampleInFrame + i]) << (unusedBitsPerSample + pFlac->currentFrame.subframes[j].wastedBitsPerSample); + } + } + } + } break; + } + + drflac_uint64 alignedSamplesRead = alignedSampleCountPerChannel * channelCount; + samplesRead += alignedSamplesRead; + samplesReadFromFrameSoFar += alignedSamplesRead; + bufferOut += alignedSamplesRead; + samplesToRead -= alignedSamplesRead; + pFlac->currentSample += alignedSamplesRead; + pFlac->currentFrame.samplesRemaining -= (unsigned int)alignedSamplesRead; + + + // At this point we may still have some excess samples left to read. + if (samplesToRead > 0 && pFlac->currentFrame.samplesRemaining > 0) { + drflac_uint64 excessSamplesRead = 0; + if (samplesToRead < pFlac->currentFrame.samplesRemaining) { + excessSamplesRead = drflac__read_s32__misaligned(pFlac, samplesToRead, bufferOut); + } else { + excessSamplesRead = drflac__read_s32__misaligned(pFlac, pFlac->currentFrame.samplesRemaining, bufferOut); + } + + samplesRead += excessSamplesRead; + samplesReadFromFrameSoFar += excessSamplesRead; + bufferOut += excessSamplesRead; + samplesToRead -= excessSamplesRead; + pFlac->currentSample += excessSamplesRead; + } + } + } + + return samplesRead; +} + +drflac_uint64 drflac_read_pcm_frames_s32(drflac* pFlac, drflac_uint64 framesToRead, drflac_int32* pBufferOut) +{ +#if defined(_MSC_VER) && !defined(__clang__) + #pragma warning(push) + #pragma warning(disable:4996) // was declared deprecated +#elif defined(__GNUC__) || defined(__clang__) + #pragma GCC diagnostic push + #pragma GCC diagnostic ignored "-Wdeprecated-declarations" +#endif + return drflac_read_s32(pFlac, framesToRead*pFlac->channels, pBufferOut) / pFlac->channels; +#if defined(_MSC_VER) && !defined(__clang__) + #pragma warning(pop) +#elif defined(__GNUC__) || defined(__clang__) + #pragma GCC diagnostic pop +#endif +} + + +drflac_uint64 drflac_read_s16(drflac* pFlac, drflac_uint64 samplesToRead, drflac_int16* pBufferOut) +{ + // This reads samples in 2 passes and can probably be optimized. + drflac_uint64 totalSamplesRead = 0; + +#if defined(_MSC_VER) && !defined(__clang__) + #pragma warning(push) + #pragma warning(disable:4996) // was declared deprecated +#elif defined(__GNUC__) || defined(__clang__) + #pragma GCC diagnostic push + #pragma GCC diagnostic ignored "-Wdeprecated-declarations" +#endif + + while (samplesToRead > 0) { + drflac_int32 samples32[4096]; + drflac_uint64 samplesJustRead = drflac_read_s32(pFlac, (samplesToRead > 4096) ? 4096 : samplesToRead, samples32); + if (samplesJustRead == 0) { + break; // Reached the end. + } + + // s32 -> s16 + for (drflac_uint64 i = 0; i < samplesJustRead; ++i) { + pBufferOut[i] = (drflac_int16)(samples32[i] >> 16); + } + + totalSamplesRead += samplesJustRead; + samplesToRead -= samplesJustRead; + pBufferOut += samplesJustRead; + } + +#if defined(_MSC_VER) && !defined(__clang__) + #pragma warning(pop) +#elif defined(__GNUC__) || defined(__clang__) + #pragma GCC diagnostic pop +#endif + + return totalSamplesRead; +} + +drflac_uint64 drflac_read_pcm_frames_s16(drflac* pFlac, drflac_uint64 framesToRead, drflac_int16* pBufferOut) +{ + // This reads samples in 2 passes and can probably be optimized. + drflac_uint64 totalPCMFramesRead = 0; + + while (framesToRead > 0) { + drflac_int32 samples32[4096]; + drflac_uint64 framesJustRead = drflac_read_pcm_frames_s32(pFlac, (framesToRead > 4096/pFlac->channels) ? 4096/pFlac->channels : framesToRead, samples32); + if (framesJustRead == 0) { + break; // Reached the end. + } + + // s32 -> s16 + for (drflac_uint64 iFrame = 0; iFrame < framesJustRead; ++iFrame) { + for (drflac_uint32 iChannel = 0; iChannel < pFlac->channels; ++iChannel) { + drflac_uint64 iSample = iFrame*pFlac->channels + iChannel; + pBufferOut[iSample] = (drflac_int16)(samples32[iSample] >> 16); + } + } + + totalPCMFramesRead += framesJustRead; + framesToRead -= framesJustRead; + pBufferOut += framesJustRead * pFlac->channels; + } + + return totalPCMFramesRead; +} + + +drflac_uint64 drflac_read_f32(drflac* pFlac, drflac_uint64 samplesToRead, float* pBufferOut) +{ + // This reads samples in 2 passes and can probably be optimized. + drflac_uint64 totalSamplesRead = 0; + +#if defined(_MSC_VER) && !defined(__clang__) + #pragma warning(push) + #pragma warning(disable:4996) // was declared deprecated +#elif defined(__GNUC__) || defined(__clang__) + #pragma GCC diagnostic push + #pragma GCC diagnostic ignored "-Wdeprecated-declarations" +#endif + + while (samplesToRead > 0) { + drflac_int32 samples32[4096]; + drflac_uint64 samplesJustRead = drflac_read_s32(pFlac, (samplesToRead > 4096) ? 4096 : samplesToRead, samples32); + if (samplesJustRead == 0) { + break; // Reached the end. + } + + // s32 -> f32 + for (drflac_uint64 i = 0; i < samplesJustRead; ++i) { + pBufferOut[i] = (float)(samples32[i] / 2147483648.0); + } + + totalSamplesRead += samplesJustRead; + samplesToRead -= samplesJustRead; + pBufferOut += samplesJustRead; + } + +#if defined(_MSC_VER) && !defined(__clang__) + #pragma warning(pop) +#elif defined(__GNUC__) || defined(__clang__) + #pragma GCC diagnostic pop +#endif + + return totalSamplesRead; +} + +#if 0 +static DRFLAC_INLINE void drflac_read_pcm_frames_f32__decode_left_side__reference(drflac* pFlac, drflac_uint64 frameCount, drflac_int32 unusedBitsPerSample, const drflac_int32* pInputSamples0, const drflac_int32* pInputSamples1, float* pOutputSamples) +{ + for (drflac_uint64 i = 0; i < frameCount; ++i) { + int left = pInputSamples0[i] << (unusedBitsPerSample + pFlac->currentFrame.subframes[0].wastedBitsPerSample); + int side = pInputSamples1[i] << (unusedBitsPerSample + pFlac->currentFrame.subframes[1].wastedBitsPerSample); + int right = left - side; + + pOutputSamples[i*2+0] = (float)(left / 2147483648.0); + pOutputSamples[i*2+1] = (float)(right / 2147483648.0); + } +} +#endif + +static DRFLAC_INLINE void drflac_read_pcm_frames_f32__decode_left_side__scalar(drflac* pFlac, drflac_uint64 frameCount, drflac_int32 unusedBitsPerSample, const drflac_int32* pInputSamples0, const drflac_int32* pInputSamples1, float* pOutputSamples) +{ + drflac_uint64 frameCount4 = frameCount >> 2; + + float factor = 1 / 2147483648.0; + + drflac_int32 shift0 = unusedBitsPerSample + pFlac->currentFrame.subframes[0].wastedBitsPerSample; + drflac_int32 shift1 = unusedBitsPerSample + pFlac->currentFrame.subframes[1].wastedBitsPerSample; + for (drflac_uint64 i = 0; i < frameCount4; ++i) { + drflac_int32 left0 = pInputSamples0[i*4+0] << shift0; + drflac_int32 left1 = pInputSamples0[i*4+1] << shift0; + drflac_int32 left2 = pInputSamples0[i*4+2] << shift0; + drflac_int32 left3 = pInputSamples0[i*4+3] << shift0; + + drflac_int32 side0 = pInputSamples1[i*4+0] << shift1; + drflac_int32 side1 = pInputSamples1[i*4+1] << shift1; + drflac_int32 side2 = pInputSamples1[i*4+2] << shift1; + drflac_int32 side3 = pInputSamples1[i*4+3] << shift1; + + drflac_int32 right0 = left0 - side0; + drflac_int32 right1 = left1 - side1; + drflac_int32 right2 = left2 - side2; + drflac_int32 right3 = left3 - side3; + + pOutputSamples[i*8+0] = left0 * factor; + pOutputSamples[i*8+1] = right0 * factor; + pOutputSamples[i*8+2] = left1 * factor; + pOutputSamples[i*8+3] = right1 * factor; + pOutputSamples[i*8+4] = left2 * factor; + pOutputSamples[i*8+5] = right2 * factor; + pOutputSamples[i*8+6] = left3 * factor; + pOutputSamples[i*8+7] = right3 * factor; + } + + for (drflac_uint64 i = (frameCount4 << 2); i < frameCount; ++i) { + int left = pInputSamples0[i] << shift0; + int side = pInputSamples1[i] << shift1; + int right = left - side; + + pOutputSamples[i*2+0] = (float)(left * factor); + pOutputSamples[i*2+1] = (float)(right * factor); + } +} + +#if defined(DRFLAC_SUPPORT_SSE2) +static DRFLAC_INLINE void drflac_read_pcm_frames_f32__decode_left_side__sse2(drflac* pFlac, drflac_uint64 frameCount, drflac_int32 unusedBitsPerSample, const drflac_int32* pInputSamples0, const drflac_int32* pInputSamples1, float* pOutputSamples) +{ + drflac_assert(pFlac->bitsPerSample <= 24); + + drflac_uint64 frameCount4 = frameCount >> 2; + + __m128 factor = _mm_set1_ps(1.0f / 8388608.0f); + int shift0 = (unusedBitsPerSample + pFlac->currentFrame.subframes[0].wastedBitsPerSample) - 8; + int shift1 = (unusedBitsPerSample + pFlac->currentFrame.subframes[1].wastedBitsPerSample) - 8; + + for (drflac_uint64 i = 0; i < frameCount4; ++i) { + __m128i inputSample0 = _mm_loadu_si128((const __m128i*)pInputSamples0 + i); + __m128i inputSample1 = _mm_loadu_si128((const __m128i*)pInputSamples1 + i); + + __m128i left = _mm_slli_epi32(inputSample0, shift0); + __m128i side = _mm_slli_epi32(inputSample1, shift1); + __m128i right = _mm_sub_epi32(left, side); + __m128 leftf = _mm_mul_ps(_mm_cvtepi32_ps(left), factor); + __m128 rightf = _mm_mul_ps(_mm_cvtepi32_ps(right), factor); + + pOutputSamples[i*8+0] = ((float*)&leftf)[0]; + pOutputSamples[i*8+1] = ((float*)&rightf)[0]; + pOutputSamples[i*8+2] = ((float*)&leftf)[1]; + pOutputSamples[i*8+3] = ((float*)&rightf)[1]; + pOutputSamples[i*8+4] = ((float*)&leftf)[2]; + pOutputSamples[i*8+5] = ((float*)&rightf)[2]; + pOutputSamples[i*8+6] = ((float*)&leftf)[3]; + pOutputSamples[i*8+7] = ((float*)&rightf)[3]; + } + + for (drflac_uint64 i = (frameCount4 << 2); i < frameCount; ++i) { + int left = pInputSamples0[i] << shift0; + int side = pInputSamples1[i] << shift1; + int right = left - side; + + pOutputSamples[i*2+0] = (float)(left / 8388608.0f); + pOutputSamples[i*2+1] = (float)(right / 8388608.0f); + } +} +#endif + +static DRFLAC_INLINE void drflac_read_pcm_frames_f32__decode_left_side(drflac* pFlac, drflac_uint64 frameCount, drflac_int32 unusedBitsPerSample, const drflac_int32* pInputSamples0, const drflac_int32* pInputSamples1, float* pOutputSamples) +{ +#if defined(DRFLAC_SUPPORT_SSE2) + if (drflac__gIsSSE2Supported && pFlac->bitsPerSample <= 24) { + drflac_read_pcm_frames_f32__decode_left_side__sse2(pFlac, frameCount, unusedBitsPerSample, pInputSamples0, pInputSamples1, pOutputSamples); + } else +#endif + { + // Scalar fallback. +#if 0 + drflac_read_pcm_frames_f32__decode_left_side__reference(pFlac, frameCount, unusedBitsPerSample, pInputSamples0, pInputSamples1, pOutputSamples); +#else + drflac_read_pcm_frames_f32__decode_left_side__scalar(pFlac, frameCount, unusedBitsPerSample, pInputSamples0, pInputSamples1, pOutputSamples); +#endif + } +} + + +#if 0 +static DRFLAC_INLINE void drflac_read_pcm_frames_f32__decode_right_side__reference(drflac* pFlac, drflac_uint64 frameCount, drflac_int32 unusedBitsPerSample, const drflac_int32* pInputSamples0, const drflac_int32* pInputSamples1, float* pOutputSamples) +{ + for (drflac_uint64 i = 0; i < frameCount; ++i) { + int side = pInputSamples0[i] << (unusedBitsPerSample + pFlac->currentFrame.subframes[0].wastedBitsPerSample); + int right = pInputSamples1[i] << (unusedBitsPerSample + pFlac->currentFrame.subframes[1].wastedBitsPerSample); + int left = right + side; + + pOutputSamples[i*2+0] = (float)(left / 2147483648.0); + pOutputSamples[i*2+1] = (float)(right / 2147483648.0); + } +} +#endif + +static DRFLAC_INLINE void drflac_read_pcm_frames_f32__decode_right_side__scalar(drflac* pFlac, drflac_uint64 frameCount, drflac_int32 unusedBitsPerSample, const drflac_int32* pInputSamples0, const drflac_int32* pInputSamples1, float* pOutputSamples) +{ + drflac_uint64 frameCount4 = frameCount >> 2; + + float factor = 1 / 2147483648.0; + + drflac_int32 shift0 = unusedBitsPerSample + pFlac->currentFrame.subframes[0].wastedBitsPerSample; + drflac_int32 shift1 = unusedBitsPerSample + pFlac->currentFrame.subframes[1].wastedBitsPerSample; + for (drflac_uint64 i = 0; i < frameCount4; ++i) { + drflac_int32 side0 = pInputSamples0[i*4+0] << shift1; + drflac_int32 side1 = pInputSamples0[i*4+1] << shift1; + drflac_int32 side2 = pInputSamples0[i*4+2] << shift1; + drflac_int32 side3 = pInputSamples0[i*4+3] << shift1; + + drflac_int32 right0 = pInputSamples1[i*4+0] << shift0; + drflac_int32 right1 = pInputSamples1[i*4+1] << shift0; + drflac_int32 right2 = pInputSamples1[i*4+2] << shift0; + drflac_int32 right3 = pInputSamples1[i*4+3] << shift0; + + drflac_int32 left0 = right0 + side0; + drflac_int32 left1 = right1 + side1; + drflac_int32 left2 = right2 + side2; + drflac_int32 left3 = right3 + side3; + + pOutputSamples[i*8+0] = left0 * factor; + pOutputSamples[i*8+1] = right0 * factor; + pOutputSamples[i*8+2] = left1 * factor; + pOutputSamples[i*8+3] = right1 * factor; + pOutputSamples[i*8+4] = left2 * factor; + pOutputSamples[i*8+5] = right2 * factor; + pOutputSamples[i*8+6] = left3 * factor; + pOutputSamples[i*8+7] = right3 * factor; + } + + for (drflac_uint64 i = (frameCount4 << 2); i < frameCount; ++i) { + int side = pInputSamples0[i] << shift0; + int right = pInputSamples1[i] << shift1; + int left = right + side; + + pOutputSamples[i*2+0] = (float)(left * factor); + pOutputSamples[i*2+1] = (float)(right * factor); + } +} + +#if defined(DRFLAC_SUPPORT_SSE2) +static DRFLAC_INLINE void drflac_read_pcm_frames_f32__decode_right_side__sse2(drflac* pFlac, drflac_uint64 frameCount, drflac_int32 unusedBitsPerSample, const drflac_int32* pInputSamples0, const drflac_int32* pInputSamples1, float* pOutputSamples) +{ + drflac_assert(pFlac->bitsPerSample <= 24); + + drflac_uint64 frameCount4 = frameCount >> 2; + + __m128 factor = _mm_set1_ps(1.0f / 8388608.0f); + int shift0 = (unusedBitsPerSample + pFlac->currentFrame.subframes[0].wastedBitsPerSample) - 8; + int shift1 = (unusedBitsPerSample + pFlac->currentFrame.subframes[1].wastedBitsPerSample) - 8; + + for (drflac_uint64 i = 0; i < frameCount4; ++i) { + __m128i inputSample0 = _mm_loadu_si128((const __m128i*)pInputSamples0 + i); + __m128i inputSample1 = _mm_loadu_si128((const __m128i*)pInputSamples1 + i); + + __m128i side = _mm_slli_epi32(inputSample0, shift0); + __m128i right = _mm_slli_epi32(inputSample1, shift1); + __m128i left = _mm_add_epi32(right, side); + __m128 leftf = _mm_mul_ps(_mm_cvtepi32_ps(left), factor); + __m128 rightf = _mm_mul_ps(_mm_cvtepi32_ps(right), factor); + + pOutputSamples[i*8+0] = ((float*)&leftf)[0]; + pOutputSamples[i*8+1] = ((float*)&rightf)[0]; + pOutputSamples[i*8+2] = ((float*)&leftf)[1]; + pOutputSamples[i*8+3] = ((float*)&rightf)[1]; + pOutputSamples[i*8+4] = ((float*)&leftf)[2]; + pOutputSamples[i*8+5] = ((float*)&rightf)[2]; + pOutputSamples[i*8+6] = ((float*)&leftf)[3]; + pOutputSamples[i*8+7] = ((float*)&rightf)[3]; + } + + for (drflac_uint64 i = (frameCount4 << 2); i < frameCount; ++i) { + int side = pInputSamples0[i] << shift0; + int right = pInputSamples1[i] << shift1; + int left = right + side; + + pOutputSamples[i*2+0] = (float)(left / 8388608.0f); + pOutputSamples[i*2+1] = (float)(right / 8388608.0f); + } +} +#endif + +static DRFLAC_INLINE void drflac_read_pcm_frames_f32__decode_right_side(drflac* pFlac, drflac_uint64 frameCount, drflac_int32 unusedBitsPerSample, const drflac_int32* pInputSamples0, const drflac_int32* pInputSamples1, float* pOutputSamples) +{ +#if defined(DRFLAC_SUPPORT_SSE2) + if (drflac__gIsSSE2Supported && pFlac->bitsPerSample <= 24) { + drflac_read_pcm_frames_f32__decode_right_side__sse2(pFlac, frameCount, unusedBitsPerSample, pInputSamples0, pInputSamples1, pOutputSamples); + } else +#endif + { + // Scalar fallback. +#if 0 + drflac_read_pcm_frames_f32__decode_right_side__reference(pFlac, frameCount, unusedBitsPerSample, pInputSamples0, pInputSamples1, pOutputSamples); +#else + drflac_read_pcm_frames_f32__decode_right_side__scalar(pFlac, frameCount, unusedBitsPerSample, pInputSamples0, pInputSamples1, pOutputSamples); +#endif + } +} + + +#if 0 +static DRFLAC_INLINE void drflac_read_pcm_frames_f32__decode_mid_side__reference(drflac* pFlac, drflac_uint64 frameCount, drflac_int32 unusedBitsPerSample, const drflac_int32* pInputSamples0, const drflac_int32* pInputSamples1, float* pOutputSamples) +{ + for (drflac_uint64 i = 0; i < frameCount; ++i) { + int mid = pInputSamples0[i] << pFlac->currentFrame.subframes[0].wastedBitsPerSample; + int side = pInputSamples1[i] << pFlac->currentFrame.subframes[1].wastedBitsPerSample; + + mid = (((drflac_uint32)mid) << 1) | (side & 0x01); + + pOutputSamples[i*2+0] = (float)((((mid + side) >> 1) << (unusedBitsPerSample)) / 2147483648.0); + pOutputSamples[i*2+1] = (float)((((mid - side) >> 1) << (unusedBitsPerSample)) / 2147483648.0); + } +} +#endif + +static DRFLAC_INLINE void drflac_read_pcm_frames_f32__decode_mid_side__scalar(drflac* pFlac, drflac_uint64 frameCount, drflac_int32 unusedBitsPerSample, const drflac_int32* pInputSamples0, const drflac_int32* pInputSamples1, float* pOutputSamples) +{ + drflac_uint64 frameCount4 = frameCount >> 2; + + float factor = 1 / 2147483648.0; + + int shift = unusedBitsPerSample; + if (shift > 0) { + shift -= 1; + for (drflac_uint64 i = 0; i < frameCount4; ++i) { + int mid0 = pInputSamples0[i*4+0] << pFlac->currentFrame.subframes[0].wastedBitsPerSample; + int mid1 = pInputSamples0[i*4+1] << pFlac->currentFrame.subframes[0].wastedBitsPerSample; + int mid2 = pInputSamples0[i*4+2] << pFlac->currentFrame.subframes[0].wastedBitsPerSample; + int mid3 = pInputSamples0[i*4+3] << pFlac->currentFrame.subframes[0].wastedBitsPerSample; + + int side0 = pInputSamples1[i*4+0] << pFlac->currentFrame.subframes[1].wastedBitsPerSample; + int side1 = pInputSamples1[i*4+1] << pFlac->currentFrame.subframes[1].wastedBitsPerSample; + int side2 = pInputSamples1[i*4+2] << pFlac->currentFrame.subframes[1].wastedBitsPerSample; + int side3 = pInputSamples1[i*4+3] << pFlac->currentFrame.subframes[1].wastedBitsPerSample; + + mid0 = (((drflac_uint32)mid0) << 1) | (side0 & 0x01); + mid1 = (((drflac_uint32)mid1) << 1) | (side1 & 0x01); + mid2 = (((drflac_uint32)mid2) << 1) | (side2 & 0x01); + mid3 = (((drflac_uint32)mid3) << 1) | (side3 & 0x01); + + int temp0L = ((mid0 + side0) << shift); + int temp1L = ((mid1 + side1) << shift); + int temp2L = ((mid2 + side2) << shift); + int temp3L = ((mid3 + side3) << shift); + + int temp0R = ((mid0 - side0) << shift); + int temp1R = ((mid1 - side1) << shift); + int temp2R = ((mid2 - side2) << shift); + int temp3R = ((mid3 - side3) << shift); + + pOutputSamples[i*8+0] = (float)(temp0L * factor); + pOutputSamples[i*8+1] = (float)(temp0R * factor); + pOutputSamples[i*8+2] = (float)(temp1L * factor); + pOutputSamples[i*8+3] = (float)(temp1R * factor); + pOutputSamples[i*8+4] = (float)(temp2L * factor); + pOutputSamples[i*8+5] = (float)(temp2R * factor); + pOutputSamples[i*8+6] = (float)(temp3L * factor); + pOutputSamples[i*8+7] = (float)(temp3R * factor); + } + } else { + for (drflac_uint64 i = 0; i < frameCount4; ++i) { + int mid0 = pInputSamples0[i*4+0] << pFlac->currentFrame.subframes[0].wastedBitsPerSample; + int mid1 = pInputSamples0[i*4+1] << pFlac->currentFrame.subframes[0].wastedBitsPerSample; + int mid2 = pInputSamples0[i*4+2] << pFlac->currentFrame.subframes[0].wastedBitsPerSample; + int mid3 = pInputSamples0[i*4+3] << pFlac->currentFrame.subframes[0].wastedBitsPerSample; + + int side0 = pInputSamples1[i*4+0] << pFlac->currentFrame.subframes[1].wastedBitsPerSample; + int side1 = pInputSamples1[i*4+1] << pFlac->currentFrame.subframes[1].wastedBitsPerSample; + int side2 = pInputSamples1[i*4+2] << pFlac->currentFrame.subframes[1].wastedBitsPerSample; + int side3 = pInputSamples1[i*4+3] << pFlac->currentFrame.subframes[1].wastedBitsPerSample; + + mid0 = (((drflac_uint32)mid0) << 1) | (side0 & 0x01); + mid1 = (((drflac_uint32)mid1) << 1) | (side1 & 0x01); + mid2 = (((drflac_uint32)mid2) << 1) | (side2 & 0x01); + mid3 = (((drflac_uint32)mid3) << 1) | (side3 & 0x01); + + int temp0L = ((mid0 + side0) >> 1); + int temp1L = ((mid1 + side1) >> 1); + int temp2L = ((mid2 + side2) >> 1); + int temp3L = ((mid3 + side3) >> 1); + + int temp0R = ((mid0 - side0) >> 1); + int temp1R = ((mid1 - side1) >> 1); + int temp2R = ((mid2 - side2) >> 1); + int temp3R = ((mid3 - side3) >> 1); + + pOutputSamples[i*8+0] = (float)(temp0L * factor); + pOutputSamples[i*8+1] = (float)(temp0R * factor); + pOutputSamples[i*8+2] = (float)(temp1L * factor); + pOutputSamples[i*8+3] = (float)(temp1R * factor); + pOutputSamples[i*8+4] = (float)(temp2L * factor); + pOutputSamples[i*8+5] = (float)(temp2R * factor); + pOutputSamples[i*8+6] = (float)(temp3L * factor); + pOutputSamples[i*8+7] = (float)(temp3R * factor); + } + } + + for (drflac_uint64 i = (frameCount4 << 2); i < frameCount; ++i) { + int mid = pInputSamples0[i] << pFlac->currentFrame.subframes[0].wastedBitsPerSample; + int side = pInputSamples1[i] << pFlac->currentFrame.subframes[1].wastedBitsPerSample; + + mid = (((drflac_uint32)mid) << 1) | (side & 0x01); + + pOutputSamples[i*2+0] = (float)((((mid + side) >> 1) << unusedBitsPerSample) * factor); + pOutputSamples[i*2+1] = (float)((((mid - side) >> 1) << unusedBitsPerSample) * factor); + } +} + +#if defined(DRFLAC_SUPPORT_SSE2) +static DRFLAC_INLINE void drflac_read_pcm_frames_f32__decode_mid_side__sse2(drflac* pFlac, drflac_uint64 frameCount, drflac_int32 unusedBitsPerSample, const drflac_int32* pInputSamples0, const drflac_int32* pInputSamples1, float* pOutputSamples) +{ + drflac_assert(pFlac->bitsPerSample <= 24); + + drflac_uint64 frameCount4 = frameCount >> 2; + + float factor = 1.0f / 8388608.0f; + __m128 factor128 = _mm_set1_ps(1.0f / 8388608.0f); + + int shift = unusedBitsPerSample - 8; + if (shift == 0) { + for (drflac_uint64 i = 0; i < frameCount4; ++i) { + __m128i inputSample0 = _mm_loadu_si128((const __m128i*)pInputSamples0 + i); + __m128i inputSample1 = _mm_loadu_si128((const __m128i*)pInputSamples1 + i); + + __m128i mid = _mm_slli_epi32(inputSample0, pFlac->currentFrame.subframes[0].wastedBitsPerSample); + __m128i side = _mm_slli_epi32(inputSample1, pFlac->currentFrame.subframes[1].wastedBitsPerSample); + + mid = _mm_or_si128(_mm_slli_epi32(mid, 1), _mm_and_si128(side, _mm_set1_epi32(0x01))); + + __m128i tempL = _mm_add_epi32(mid, side); + __m128i tempR = _mm_sub_epi32(mid, side); + + // Signed bit shift. + tempL = _mm_or_si128(_mm_srli_epi32(tempL, 1), _mm_and_si128(tempL, _mm_set1_epi32(0x80000000))); + tempR = _mm_or_si128(_mm_srli_epi32(tempR, 1), _mm_and_si128(tempR, _mm_set1_epi32(0x80000000))); + + __m128 leftf = _mm_mul_ps(_mm_cvtepi32_ps(tempL), factor128); + __m128 rightf = _mm_mul_ps(_mm_cvtepi32_ps(tempR), factor128); + + pOutputSamples[i*8+0] = ((float*)&leftf)[0]; + pOutputSamples[i*8+1] = ((float*)&rightf)[0]; + pOutputSamples[i*8+2] = ((float*)&leftf)[1]; + pOutputSamples[i*8+3] = ((float*)&rightf)[1]; + pOutputSamples[i*8+4] = ((float*)&leftf)[2]; + pOutputSamples[i*8+5] = ((float*)&rightf)[2]; + pOutputSamples[i*8+6] = ((float*)&leftf)[3]; + pOutputSamples[i*8+7] = ((float*)&rightf)[3]; + } + + for (drflac_uint64 i = (frameCount4 << 2); i < frameCount; ++i) { + int mid = pInputSamples0[i] << pFlac->currentFrame.subframes[0].wastedBitsPerSample; + int side = pInputSamples1[i] << pFlac->currentFrame.subframes[1].wastedBitsPerSample; + + mid = (((drflac_uint32)mid) << 1) | (side & 0x01); + + pOutputSamples[i*2+0] = (float)(((mid + side) >> 1) * factor); + pOutputSamples[i*2+1] = (float)(((mid - side) >> 1) * factor); + } + } else { + for (drflac_uint64 i = 0; i < frameCount4; ++i) { + __m128i inputSample0 = _mm_loadu_si128((const __m128i*)pInputSamples0 + i); + __m128i inputSample1 = _mm_loadu_si128((const __m128i*)pInputSamples1 + i); + + __m128i mid = _mm_slli_epi32(inputSample0, pFlac->currentFrame.subframes[0].wastedBitsPerSample); + __m128i side = _mm_slli_epi32(inputSample1, pFlac->currentFrame.subframes[1].wastedBitsPerSample); + + mid = _mm_or_si128(_mm_slli_epi32(mid, 1), _mm_and_si128(side, _mm_set1_epi32(0x01))); + + __m128i tempL = _mm_slli_epi32(_mm_srli_epi32(_mm_add_epi32(mid, side), 1), shift); + __m128i tempR = _mm_slli_epi32(_mm_srli_epi32(_mm_sub_epi32(mid, side), 1), shift); + + __m128 leftf = _mm_mul_ps(_mm_cvtepi32_ps(tempL), factor128); + __m128 rightf = _mm_mul_ps(_mm_cvtepi32_ps(tempR), factor128); + + pOutputSamples[i*8+0] = ((float*)&leftf)[0]; + pOutputSamples[i*8+1] = ((float*)&rightf)[0]; + pOutputSamples[i*8+2] = ((float*)&leftf)[1]; + pOutputSamples[i*8+3] = ((float*)&rightf)[1]; + pOutputSamples[i*8+4] = ((float*)&leftf)[2]; + pOutputSamples[i*8+5] = ((float*)&rightf)[2]; + pOutputSamples[i*8+6] = ((float*)&leftf)[3]; + pOutputSamples[i*8+7] = ((float*)&rightf)[3]; + } + + for (drflac_uint64 i = (frameCount4 << 2); i < frameCount; ++i) { + int mid = pInputSamples0[i] << pFlac->currentFrame.subframes[0].wastedBitsPerSample; + int side = pInputSamples1[i] << pFlac->currentFrame.subframes[1].wastedBitsPerSample; + + mid = (((drflac_uint32)mid) << 1) | (side & 0x01); + + pOutputSamples[i*2+0] = (float)((((mid + side) >> 1) << shift) * factor); + pOutputSamples[i*2+1] = (float)((((mid - side) >> 1) << shift) * factor); + } + } +} +#endif + + +static DRFLAC_INLINE void drflac_read_pcm_frames_f32__decode_mid_side(drflac* pFlac, drflac_uint64 frameCount, drflac_int32 unusedBitsPerSample, const drflac_int32* pInputSamples0, const drflac_int32* pInputSamples1, float* pOutputSamples) +{ +#if defined(DRFLAC_SUPPORT_SSE2) + if (drflac__gIsSSE2Supported && pFlac->bitsPerSample <= 24) { + drflac_read_pcm_frames_f32__decode_mid_side__sse2(pFlac, frameCount, unusedBitsPerSample, pInputSamples0, pInputSamples1, pOutputSamples); + } else +#endif + { + // Scalar fallback. +#if 0 + drflac_read_pcm_frames_f32__decode_mid_side__reference(pFlac, frameCount, unusedBitsPerSample, pInputSamples0, pInputSamples1, pOutputSamples); +#else + drflac_read_pcm_frames_f32__decode_mid_side__scalar(pFlac, frameCount, unusedBitsPerSample, pInputSamples0, pInputSamples1, pOutputSamples); +#endif + } +} + +#if 0 +static DRFLAC_INLINE void drflac_read_pcm_frames_f32__decode_independent_stereo__reference(drflac* pFlac, drflac_uint64 frameCount, drflac_int32 unusedBitsPerSample, const drflac_int32* pInputSamples0, const drflac_int32* pInputSamples1, float* pOutputSamples) +{ + for (drflac_uint64 i = 0; i < frameCount; ++i) { + pOutputSamples[i*2+0] = (float)((pInputSamples0[i] << (unusedBitsPerSample + pFlac->currentFrame.subframes[0].wastedBitsPerSample)) / 2147483648.0); + pOutputSamples[i*2+1] = (float)((pInputSamples1[i] << (unusedBitsPerSample + pFlac->currentFrame.subframes[1].wastedBitsPerSample)) / 2147483648.0); + } +} +#endif + +static DRFLAC_INLINE void drflac_read_pcm_frames_f32__decode_independent_stereo__scalar(drflac* pFlac, drflac_uint64 frameCount, drflac_int32 unusedBitsPerSample, const drflac_int32* pInputSamples0, const drflac_int32* pInputSamples1, float* pOutputSamples) +{ + drflac_uint64 frameCount4 = frameCount >> 2; + + float factor = 1 / 2147483648.0; + + int shift0 = (unusedBitsPerSample + pFlac->currentFrame.subframes[0].wastedBitsPerSample); + int shift1 = (unusedBitsPerSample + pFlac->currentFrame.subframes[1].wastedBitsPerSample); + + for (drflac_uint64 i = 0; i < frameCount4; ++i) { + int tempL0 = pInputSamples0[i*4+0] << shift0; + int tempL1 = pInputSamples0[i*4+1] << shift0; + int tempL2 = pInputSamples0[i*4+2] << shift0; + int tempL3 = pInputSamples0[i*4+3] << shift0; + + int tempR0 = pInputSamples1[i*4+0] << shift1; + int tempR1 = pInputSamples1[i*4+1] << shift1; + int tempR2 = pInputSamples1[i*4+2] << shift1; + int tempR3 = pInputSamples1[i*4+3] << shift1; + + pOutputSamples[i*8+0] = (float)(tempL0 * factor); + pOutputSamples[i*8+1] = (float)(tempR0 * factor); + pOutputSamples[i*8+2] = (float)(tempL1 * factor); + pOutputSamples[i*8+3] = (float)(tempR1 * factor); + pOutputSamples[i*8+4] = (float)(tempL2 * factor); + pOutputSamples[i*8+5] = (float)(tempR2 * factor); + pOutputSamples[i*8+6] = (float)(tempL3 * factor); + pOutputSamples[i*8+7] = (float)(tempR3 * factor); + } + + for (drflac_uint64 i = (frameCount4 << 2); i < frameCount; ++i) { + pOutputSamples[i*2+0] = (float)((pInputSamples0[i] << shift0) * factor); + pOutputSamples[i*2+1] = (float)((pInputSamples1[i] << shift1) * factor); + } +} + +#if defined(DRFLAC_SUPPORT_SSE2) +static DRFLAC_INLINE void drflac_read_pcm_frames_f32__decode_independent_stereo__sse2(drflac* pFlac, drflac_uint64 frameCount, drflac_int32 unusedBitsPerSample, const drflac_int32* pInputSamples0, const drflac_int32* pInputSamples1, float* pOutputSamples) +{ + drflac_uint64 frameCount4 = frameCount >> 2; + + float factor = 1.0f / 8388608.0f; + __m128 factor128 = _mm_set1_ps(1.0f / 8388608.0f); + + int shift0 = (unusedBitsPerSample + pFlac->currentFrame.subframes[0].wastedBitsPerSample) - 8; + int shift1 = (unusedBitsPerSample + pFlac->currentFrame.subframes[1].wastedBitsPerSample) - 8; + + for (drflac_uint64 i = 0; i < frameCount4; ++i) { + __m128i inputSample0 = _mm_loadu_si128((const __m128i*)pInputSamples0 + i); + __m128i inputSample1 = _mm_loadu_si128((const __m128i*)pInputSamples1 + i); + + __m128i i32L = _mm_slli_epi32(inputSample0, shift0); + __m128i i32R = _mm_slli_epi32(inputSample1, shift1); + + __m128 f32L = _mm_mul_ps(_mm_cvtepi32_ps(i32L), factor128); + __m128 f32R = _mm_mul_ps(_mm_cvtepi32_ps(i32R), factor128); + + pOutputSamples[i*8+0] = ((float*)&f32L)[0]; + pOutputSamples[i*8+1] = ((float*)&f32R)[0]; + pOutputSamples[i*8+2] = ((float*)&f32L)[1]; + pOutputSamples[i*8+3] = ((float*)&f32R)[1]; + pOutputSamples[i*8+4] = ((float*)&f32L)[2]; + pOutputSamples[i*8+5] = ((float*)&f32R)[2]; + pOutputSamples[i*8+6] = ((float*)&f32L)[3]; + pOutputSamples[i*8+7] = ((float*)&f32R)[3]; + } + + for (drflac_uint64 i = (frameCount4 << 2); i < frameCount; ++i) { + pOutputSamples[i*2+0] = (float)((pInputSamples0[i] << shift0) * factor); + pOutputSamples[i*2+1] = (float)((pInputSamples1[i] << shift1) * factor); + } +} +#endif + +static DRFLAC_INLINE void drflac_read_pcm_frames_f32__decode_independent_stereo(drflac* pFlac, drflac_uint64 frameCount, drflac_int32 unusedBitsPerSample, const drflac_int32* pInputSamples0, const drflac_int32* pInputSamples1, float* pOutputSamples) +{ +#if defined(DRFLAC_SUPPORT_SSE2) + if (drflac__gIsSSE2Supported && pFlac->bitsPerSample <= 24) { + drflac_read_pcm_frames_f32__decode_independent_stereo__sse2(pFlac, frameCount, unusedBitsPerSample, pInputSamples0, pInputSamples1, pOutputSamples); + } else +#endif + { + // Scalar fallback. +#if 0 + drflac_read_pcm_frames_f32__decode_independent_stereo__reference(pFlac, frameCount, unusedBitsPerSample, pInputSamples0, pInputSamples1, pOutputSamples); +#else + drflac_read_pcm_frames_f32__decode_independent_stereo__scalar(pFlac, frameCount, unusedBitsPerSample, pInputSamples0, pInputSamples1, pOutputSamples); +#endif + } +} + +drflac_uint64 drflac_read_pcm_frames_f32(drflac* pFlac, drflac_uint64 framesToRead, float* pBufferOut) +{ + if (pFlac == NULL || framesToRead == 0) { + return 0; + } + + if (pBufferOut == NULL) { + return drflac__seek_forward_by_pcm_frames(pFlac, framesToRead); + } + + drflac_uint64 framesRead = 0; + while (framesToRead > 0) { + // If we've run out of samples in this frame, go to the next. + if (pFlac->currentFrame.samplesRemaining == 0) { + if (!drflac__read_and_decode_next_flac_frame(pFlac)) { + break; // Couldn't read the next frame, so just break from the loop and return. + } + } else { + unsigned int channelCount = drflac__get_channel_count_from_channel_assignment(pFlac->currentFrame.header.channelAssignment); + drflac_uint64 totalFramesInPacket = pFlac->currentFrame.header.blockSize; + drflac_uint64 framesReadFromPacketSoFar = totalFramesInPacket - (pFlac->currentFrame.samplesRemaining/channelCount); + drflac_uint64 iFirstPCMFrame = framesReadFromPacketSoFar; + drflac_int32 unusedBitsPerSample = 32 - pFlac->bitsPerSample; + + drflac_uint64 frameCountThisIteration = framesToRead; + if (frameCountThisIteration > pFlac->currentFrame.samplesRemaining / channelCount) { + frameCountThisIteration = pFlac->currentFrame.samplesRemaining / channelCount; + } + + if (channelCount == 2) { + const drflac_int32* pDecodedSamples0 = pFlac->currentFrame.subframes[0].pDecodedSamples + iFirstPCMFrame; + const drflac_int32* pDecodedSamples1 = pFlac->currentFrame.subframes[1].pDecodedSamples + iFirstPCMFrame; + + switch (pFlac->currentFrame.header.channelAssignment) + { + case DRFLAC_CHANNEL_ASSIGNMENT_LEFT_SIDE: + { + drflac_read_pcm_frames_f32__decode_left_side(pFlac, frameCountThisIteration, unusedBitsPerSample, pDecodedSamples0, pDecodedSamples1, pBufferOut); + } break; + + case DRFLAC_CHANNEL_ASSIGNMENT_RIGHT_SIDE: + { + drflac_read_pcm_frames_f32__decode_right_side(pFlac, frameCountThisIteration, unusedBitsPerSample, pDecodedSamples0, pDecodedSamples1, pBufferOut); + } break; + + case DRFLAC_CHANNEL_ASSIGNMENT_MID_SIDE: + { + drflac_read_pcm_frames_f32__decode_mid_side(pFlac, frameCountThisIteration, unusedBitsPerSample, pDecodedSamples0, pDecodedSamples1, pBufferOut); + } break; + + case DRFLAC_CHANNEL_ASSIGNMENT_INDEPENDENT: + default: + { + drflac_read_pcm_frames_f32__decode_independent_stereo(pFlac, frameCountThisIteration, unusedBitsPerSample, pDecodedSamples0, pDecodedSamples1, pBufferOut); + } break; + } + } else { + // Generic interleaving. + for (drflac_uint64 i = 0; i < frameCountThisIteration; ++i) { + for (unsigned int j = 0; j < channelCount; ++j) { + pBufferOut[(i*channelCount)+j] = (float)(((pFlac->currentFrame.subframes[j].pDecodedSamples[iFirstPCMFrame + i]) << (unusedBitsPerSample + pFlac->currentFrame.subframes[j].wastedBitsPerSample)) / 2147483648.0); + } + } + } + + drflac_uint64 samplesReadThisIteration = frameCountThisIteration * channelCount; + framesRead += frameCountThisIteration; + framesReadFromPacketSoFar += frameCountThisIteration; + pBufferOut += samplesReadThisIteration; + framesToRead -= frameCountThisIteration; + pFlac->currentSample += samplesReadThisIteration; + pFlac->currentFrame.samplesRemaining -= (unsigned int)samplesReadThisIteration; + } + } + + return framesRead; +} + +drflac_bool32 drflac_seek_to_sample(drflac* pFlac, drflac_uint64 sampleIndex) +{ + if (pFlac == NULL) { + return DRFLAC_FALSE; + } + + // If we don't know where the first frame begins then we can't seek. This will happen when the STREAMINFO block was not present + // when the decoder was opened. + if (pFlac->firstFramePos == 0) { + return DRFLAC_FALSE; + } + + if (sampleIndex == 0) { + pFlac->currentSample = 0; + return drflac__seek_to_first_frame(pFlac); + } else { + drflac_bool32 wasSuccessful = DRFLAC_FALSE; + + // Clamp the sample to the end. + if (sampleIndex >= pFlac->totalSampleCount) { + sampleIndex = pFlac->totalSampleCount - 1; + } + + // If the target sample and the current sample are in the same frame we just move the position forward. + if (sampleIndex > pFlac->currentSample) { + // Forward. + drflac_uint32 offset = (drflac_uint32)(sampleIndex - pFlac->currentSample); + if (pFlac->currentFrame.samplesRemaining > offset) { + pFlac->currentFrame.samplesRemaining -= offset; + pFlac->currentSample = sampleIndex; + return DRFLAC_TRUE; + } + } else { + // Backward. + drflac_uint32 offsetAbs = (drflac_uint32)(pFlac->currentSample - sampleIndex); + drflac_uint32 currentFrameSampleCount = pFlac->currentFrame.header.blockSize * drflac__get_channel_count_from_channel_assignment(pFlac->currentFrame.header.channelAssignment); + drflac_uint32 currentFrameSamplesConsumed = (drflac_uint32)(currentFrameSampleCount - pFlac->currentFrame.samplesRemaining); + if (currentFrameSamplesConsumed > offsetAbs) { + pFlac->currentFrame.samplesRemaining += offsetAbs; + pFlac->currentSample = sampleIndex; + return DRFLAC_TRUE; + } + } + + // Different techniques depending on encapsulation. Using the native FLAC seektable with Ogg encapsulation is a bit awkward so + // we'll instead use Ogg's natural seeking facility. +#ifndef DR_FLAC_NO_OGG + if (pFlac->container == drflac_container_ogg) + { + wasSuccessful = drflac_ogg__seek_to_sample(pFlac, sampleIndex); + } + else +#endif + { + // First try seeking via the seek table. If this fails, fall back to a brute force seek which is much slower. + wasSuccessful = drflac__seek_to_sample__seek_table(pFlac, sampleIndex); + if (!wasSuccessful) { + wasSuccessful = drflac__seek_to_sample__brute_force(pFlac, sampleIndex); + } + } + + pFlac->currentSample = sampleIndex; + return wasSuccessful; + } +} + +drflac_bool32 drflac_seek_to_pcm_frame(drflac* pFlac, drflac_uint64 pcmFrameIndex) +{ + if (pFlac == NULL) { + return DRFLAC_FALSE; + } + + // If we don't know where the first frame begins then we can't seek. This will happen when the STREAMINFO block was not present + // when the decoder was opened. + if (pFlac->firstFramePos == 0) { + return DRFLAC_FALSE; + } + + if (pcmFrameIndex == 0) { + pFlac->currentSample = 0; + return drflac__seek_to_first_frame(pFlac); + } else { + drflac_bool32 wasSuccessful = DRFLAC_FALSE; + + // Clamp the sample to the end. + if (pcmFrameIndex >= pFlac->totalPCMFrameCount) { + pcmFrameIndex = pFlac->totalPCMFrameCount - 1; + } + + // If the target sample and the current sample are in the same frame we just move the position forward. + if (pcmFrameIndex*pFlac->channels > pFlac->currentSample) { + // Forward. + drflac_uint32 offset = (drflac_uint32)(pcmFrameIndex*pFlac->channels - pFlac->currentSample); + if (pFlac->currentFrame.samplesRemaining > offset) { + pFlac->currentFrame.samplesRemaining -= offset; + pFlac->currentSample = pcmFrameIndex*pFlac->channels; + return DRFLAC_TRUE; + } + } else { + // Backward. + drflac_uint32 offsetAbs = (drflac_uint32)(pFlac->currentSample - pcmFrameIndex*pFlac->channels); + drflac_uint32 currentFrameSampleCount = pFlac->currentFrame.header.blockSize * drflac__get_channel_count_from_channel_assignment(pFlac->currentFrame.header.channelAssignment); + drflac_uint32 currentFrameSamplesConsumed = (drflac_uint32)(currentFrameSampleCount - pFlac->currentFrame.samplesRemaining); + if (currentFrameSamplesConsumed > offsetAbs) { + pFlac->currentFrame.samplesRemaining += offsetAbs; + pFlac->currentSample = pcmFrameIndex*pFlac->channels; + return DRFLAC_TRUE; + } + } + + // Different techniques depending on encapsulation. Using the native FLAC seektable with Ogg encapsulation is a bit awkward so + // we'll instead use Ogg's natural seeking facility. +#ifndef DR_FLAC_NO_OGG + if (pFlac->container == drflac_container_ogg) + { + wasSuccessful = drflac_ogg__seek_to_sample(pFlac, pcmFrameIndex*pFlac->channels); + } + else +#endif + { + // First try seeking via the seek table. If this fails, fall back to a brute force seek which is much slower. + wasSuccessful = drflac__seek_to_sample__seek_table(pFlac, pcmFrameIndex*pFlac->channels); + if (!wasSuccessful) { + wasSuccessful = drflac__seek_to_sample__brute_force(pFlac, pcmFrameIndex*pFlac->channels); + } + } + + pFlac->currentSample = pcmFrameIndex*pFlac->channels; + return wasSuccessful; + } +} + + + +//// High Level APIs //// + +#if defined(SIZE_MAX) + #define DRFLAC_SIZE_MAX SIZE_MAX +#else + #if defined(DRFLAC_64BIT) + #define DRFLAC_SIZE_MAX ((drflac_uint64)0xFFFFFFFFFFFFFFFF) + #else + #define DRFLAC_SIZE_MAX 0xFFFFFFFF + #endif +#endif + + +// Using a macro as the definition of the drflac__full_decode_and_close_*() API family. Sue me. +#define DRFLAC_DEFINE_FULL_READ_AND_CLOSE(extension, type) \ +static type* drflac__full_read_and_close_ ## extension (drflac* pFlac, unsigned int* channelsOut, unsigned int* sampleRateOut, drflac_uint64* totalPCMFrameCountOut)\ +{ \ + drflac_assert(pFlac != NULL); \ + \ + type* pSampleData = NULL; \ + drflac_uint64 totalPCMFrameCount = pFlac->totalPCMFrameCount; \ + \ + if (totalPCMFrameCount == 0) { \ + type buffer[4096]; \ + \ + size_t sampleDataBufferSize = sizeof(buffer); \ + pSampleData = (type*)DRFLAC_MALLOC(sampleDataBufferSize); \ + if (pSampleData == NULL) { \ + goto on_error; \ + } \ + \ + drflac_uint64 pcmFramesRead; \ + while ((pcmFramesRead = (drflac_uint64)drflac_read_pcm_frames_##extension(pFlac, sizeof(buffer)/sizeof(buffer[0])/pFlac->channels, buffer)) > 0) { \ + if (((totalPCMFrameCount + pcmFramesRead) * pFlac->channels * sizeof(type)) > sampleDataBufferSize) { \ + sampleDataBufferSize *= 2; \ + type* pNewSampleData = (type*)DRFLAC_REALLOC(pSampleData, sampleDataBufferSize); \ + if (pNewSampleData == NULL) { \ + DRFLAC_FREE(pSampleData); \ + goto on_error; \ + } \ + \ + pSampleData = pNewSampleData; \ + } \ + \ + drflac_copy_memory(pSampleData + (totalPCMFrameCount*pFlac->channels), buffer, (size_t)(pcmFramesRead*pFlac->channels*sizeof(type))); \ + totalPCMFrameCount += pcmFramesRead; \ + } \ + \ + /* At this point everything should be decoded, but we just want to fill the unused part buffer with silence - need to \ + protect those ears from random noise! */ \ + drflac_zero_memory(pSampleData + (totalPCMFrameCount*pFlac->channels), (size_t)(sampleDataBufferSize - totalPCMFrameCount*pFlac->channels*sizeof(type))); \ + } else { \ + drflac_uint64 dataSize = totalPCMFrameCount*pFlac->channels*sizeof(type); \ + if (dataSize > DRFLAC_SIZE_MAX) { \ + goto on_error; /* The decoded data is too big. */ \ + } \ + \ + pSampleData = (type*)DRFLAC_MALLOC((size_t)dataSize); /* <-- Safe cast as per the check above. */ \ + if (pSampleData == NULL) { \ + goto on_error; \ + } \ + \ + totalPCMFrameCount = drflac_read_pcm_frames_##extension(pFlac, pFlac->totalPCMFrameCount, pSampleData); \ + } \ + \ + if (sampleRateOut) *sampleRateOut = pFlac->sampleRate; \ + if (channelsOut) *channelsOut = pFlac->channels; \ + if (totalPCMFrameCountOut) *totalPCMFrameCountOut = totalPCMFrameCount; \ + \ + drflac_close(pFlac); \ + return pSampleData; \ + \ +on_error: \ + drflac_close(pFlac); \ + return NULL; \ +} + +DRFLAC_DEFINE_FULL_READ_AND_CLOSE(s32, drflac_int32) +DRFLAC_DEFINE_FULL_READ_AND_CLOSE(s16, drflac_int16) +DRFLAC_DEFINE_FULL_READ_AND_CLOSE(f32, float) + +drflac_int32* drflac_open_and_read_pcm_frames_s32(drflac_read_proc onRead, drflac_seek_proc onSeek, void* pUserData, unsigned int* channelsOut, unsigned int* sampleRateOut, drflac_uint64* totalPCMFrameCountOut) +{ + // Safety. + if (channelsOut) *channelsOut = 0; + if (sampleRateOut) *sampleRateOut = 0; + if (totalPCMFrameCountOut) *totalPCMFrameCountOut = 0; + + drflac* pFlac = drflac_open(onRead, onSeek, pUserData); + if (pFlac == NULL) { + return NULL; + } + + return drflac__full_read_and_close_s32(pFlac, channelsOut, sampleRateOut, totalPCMFrameCountOut); +} + +drflac_int32* drflac_open_and_decode_s32(drflac_read_proc onRead, drflac_seek_proc onSeek, void* pUserData, unsigned int* channelsOut, unsigned int* sampleRateOut, drflac_uint64* totalSampleCountOut) +{ + // Safety. + if (channelsOut) *channelsOut = 0; + if (sampleRateOut) *sampleRateOut = 0; + if (totalSampleCountOut) *totalSampleCountOut = 0; + + unsigned int channels; + unsigned int sampleRate; + drflac_uint64 totalPCMFrameCount; + + drflac_int32* pResult = drflac_open_and_read_pcm_frames_s32(onRead, onSeek, pUserData, &channels, &sampleRate, &totalPCMFrameCount); + if (pResult == NULL) { + return NULL; + } + + if (channelsOut) *channelsOut = channels; + if (sampleRateOut) *sampleRateOut = sampleRate; + if (totalSampleCountOut) *totalSampleCountOut = totalPCMFrameCount * channels; + + return pResult; +} + + + +drflac_int16* drflac_open_and_read_pcm_frames_s16(drflac_read_proc onRead, drflac_seek_proc onSeek, void* pUserData, unsigned int* channelsOut, unsigned int* sampleRateOut, drflac_uint64* totalPCMFrameCountOut) +{ + // Safety. + if (channelsOut) *channelsOut = 0; + if (sampleRateOut) *sampleRateOut = 0; + if (totalPCMFrameCountOut) *totalPCMFrameCountOut = 0; + + drflac* pFlac = drflac_open(onRead, onSeek, pUserData); + if (pFlac == NULL) { + return NULL; + } + + return drflac__full_read_and_close_s16(pFlac, channelsOut, sampleRateOut, totalPCMFrameCountOut); +} + +drflac_int16* drflac_open_and_decode_s16(drflac_read_proc onRead, drflac_seek_proc onSeek, void* pUserData, unsigned int* channelsOut, unsigned int* sampleRateOut, drflac_uint64* totalSampleCountOut) +{ + // Safety. + if (channelsOut) *channelsOut = 0; + if (sampleRateOut) *sampleRateOut = 0; + if (totalSampleCountOut) *totalSampleCountOut = 0; + + unsigned int channels; + unsigned int sampleRate; + drflac_uint64 totalPCMFrameCount; + + drflac_int16* pResult = drflac_open_and_read_pcm_frames_s16(onRead, onSeek, pUserData, &channels, &sampleRate, &totalPCMFrameCount); + if (pResult == NULL) { + return NULL; + } + + if (channelsOut) *channelsOut = channels; + if (sampleRateOut) *sampleRateOut = sampleRate; + if (totalSampleCountOut) *totalSampleCountOut = totalPCMFrameCount * channels; + + return pResult; +} + + +float* drflac_open_and_read_pcm_frames_f32(drflac_read_proc onRead, drflac_seek_proc onSeek, void* pUserData, unsigned int* channelsOut, unsigned int* sampleRateOut, drflac_uint64* totalPCMFrameCountOut) +{ + // Safety. + if (channelsOut) *channelsOut = 0; + if (sampleRateOut) *sampleRateOut = 0; + if (totalPCMFrameCountOut) *totalPCMFrameCountOut = 0; + + drflac* pFlac = drflac_open(onRead, onSeek, pUserData); + if (pFlac == NULL) { + return NULL; + } + + return drflac__full_read_and_close_f32(pFlac, channelsOut, sampleRateOut, totalPCMFrameCountOut); +} + +float* drflac_open_and_decode_f32(drflac_read_proc onRead, drflac_seek_proc onSeek, void* pUserData, unsigned int* channelsOut, unsigned int* sampleRateOut, drflac_uint64* totalSampleCountOut) +{ + // Safety. + if (channelsOut) *channelsOut = 0; + if (sampleRateOut) *sampleRateOut = 0; + if (totalSampleCountOut) *totalSampleCountOut = 0; + + unsigned int channels; + unsigned int sampleRate; + drflac_uint64 totalPCMFrameCount; + + float* pResult = drflac_open_and_read_pcm_frames_f32(onRead, onSeek, pUserData, &channels, &sampleRate, &totalPCMFrameCount); + if (pResult == NULL) { + return NULL; + } + + if (channelsOut) *channelsOut = channels; + if (sampleRateOut) *sampleRateOut = sampleRate; + if (totalSampleCountOut) *totalSampleCountOut = totalPCMFrameCount * channels; + + return pResult; +} + +#ifndef DR_FLAC_NO_STDIO +drflac_int32* drflac_open_file_and_read_pcm_frames_s32(const char* filename, unsigned int* channels, unsigned int* sampleRate, drflac_uint64* totalPCMFrameCount) +{ + if (sampleRate) *sampleRate = 0; + if (channels) *channels = 0; + if (totalPCMFrameCount) *totalPCMFrameCount = 0; + + drflac* pFlac = drflac_open_file(filename); + if (pFlac == NULL) { + return NULL; + } + + return drflac__full_read_and_close_s32(pFlac, channels, sampleRate, totalPCMFrameCount); +} + +drflac_int32* drflac_open_and_decode_file_s32(const char* filename, unsigned int* channelsOut, unsigned int* sampleRateOut, drflac_uint64* totalSampleCountOut) +{ + // Safety. + if (channelsOut) *channelsOut = 0; + if (sampleRateOut) *sampleRateOut = 0; + if (totalSampleCountOut) *totalSampleCountOut = 0; + + unsigned int channels; + unsigned int sampleRate; + drflac_uint64 totalPCMFrameCount; + + drflac_int32* pResult = drflac_open_file_and_read_pcm_frames_s32(filename, &channels, &sampleRate, &totalPCMFrameCount); + if (pResult == NULL) { + return NULL; + } + + if (channelsOut) *channelsOut = channels; + if (sampleRateOut) *sampleRateOut = sampleRate; + if (totalSampleCountOut) *totalSampleCountOut = totalPCMFrameCount * channels; + + return pResult; +} + + +drflac_int16* drflac_open_file_and_read_pcm_frames_s16(const char* filename, unsigned int* channels, unsigned int* sampleRate, drflac_uint64* totalPCMFrameCount) +{ + if (sampleRate) *sampleRate = 0; + if (channels) *channels = 0; + if (totalPCMFrameCount) *totalPCMFrameCount = 0; + + drflac* pFlac = drflac_open_file(filename); + if (pFlac == NULL) { + return NULL; + } + + return drflac__full_read_and_close_s16(pFlac, channels, sampleRate, totalPCMFrameCount); +} + +drflac_int16* drflac_open_and_decode_file_s16(const char* filename, unsigned int* channelsOut, unsigned int* sampleRateOut, drflac_uint64* totalSampleCountOut) +{ + // Safety. + if (channelsOut) *channelsOut = 0; + if (sampleRateOut) *sampleRateOut = 0; + if (totalSampleCountOut) *totalSampleCountOut = 0; + + unsigned int channels; + unsigned int sampleRate; + drflac_uint64 totalPCMFrameCount; + + drflac_int16* pResult = drflac_open_file_and_read_pcm_frames_s16(filename, &channels, &sampleRate, &totalPCMFrameCount); + if (pResult == NULL) { + return NULL; + } + + if (channelsOut) *channelsOut = channels; + if (sampleRateOut) *sampleRateOut = sampleRate; + if (totalSampleCountOut) *totalSampleCountOut = totalPCMFrameCount * channels; + + return pResult; +} + + +float* drflac_open_file_and_read_pcm_frames_f32(const char* filename, unsigned int* channels, unsigned int* sampleRate, drflac_uint64* totalPCMFrameCount) +{ + if (sampleRate) *sampleRate = 0; + if (channels) *channels = 0; + if (totalPCMFrameCount) *totalPCMFrameCount = 0; + + drflac* pFlac = drflac_open_file(filename); + if (pFlac == NULL) { + return NULL; + } + + return drflac__full_read_and_close_f32(pFlac, channels, sampleRate, totalPCMFrameCount); +} + +float* drflac_open_and_decode_file_f32(const char* filename, unsigned int* channelsOut, unsigned int* sampleRateOut, drflac_uint64* totalSampleCountOut) +{ + // Safety. + if (channelsOut) *channelsOut = 0; + if (sampleRateOut) *sampleRateOut = 0; + if (totalSampleCountOut) *totalSampleCountOut = 0; + + unsigned int channels; + unsigned int sampleRate; + drflac_uint64 totalPCMFrameCount; + + float* pResult = drflac_open_file_and_read_pcm_frames_f32(filename, &channels, &sampleRate, &totalPCMFrameCount); + if (pResult == NULL) { + return NULL; + } + + if (channelsOut) *channelsOut = channels; + if (sampleRateOut) *sampleRateOut = sampleRate; + if (totalSampleCountOut) *totalSampleCountOut = totalPCMFrameCount * channels; + + return pResult; +} +#endif + +drflac_int32* drflac_open_memory_and_read_pcm_frames_s32(const void* data, size_t dataSize, unsigned int* channels, unsigned int* sampleRate, drflac_uint64* totalPCMFrameCount) +{ + if (sampleRate) *sampleRate = 0; + if (channels) *channels = 0; + if (totalPCMFrameCount) *totalPCMFrameCount = 0; + + drflac* pFlac = drflac_open_memory(data, dataSize); + if (pFlac == NULL) { + return NULL; + } + + return drflac__full_read_and_close_s32(pFlac, channels, sampleRate, totalPCMFrameCount); +} + +drflac_int32* drflac_open_and_decode_memory_s32(const void* data, size_t dataSize, unsigned int* channelsOut, unsigned int* sampleRateOut, drflac_uint64* totalSampleCountOut) +{ + // Safety. + if (channelsOut) *channelsOut = 0; + if (sampleRateOut) *sampleRateOut = 0; + if (totalSampleCountOut) *totalSampleCountOut = 0; + + unsigned int channels; + unsigned int sampleRate; + drflac_uint64 totalPCMFrameCount; + + drflac_int32* pResult = drflac_open_memory_and_read_pcm_frames_s32(data, dataSize, &channels, &sampleRate, &totalPCMFrameCount); + if (pResult == NULL) { + return NULL; + } + + if (channelsOut) *channelsOut = channels; + if (sampleRateOut) *sampleRateOut = sampleRate; + if (totalSampleCountOut) *totalSampleCountOut = totalPCMFrameCount * channels; + + return pResult; +} + + +drflac_int16* drflac_open_memory_and_read_pcm_frames_s16(const void* data, size_t dataSize, unsigned int* channels, unsigned int* sampleRate, drflac_uint64* totalPCMFrameCount) +{ + if (sampleRate) *sampleRate = 0; + if (channels) *channels = 0; + if (totalPCMFrameCount) *totalPCMFrameCount = 0; + + drflac* pFlac = drflac_open_memory(data, dataSize); + if (pFlac == NULL) { + return NULL; + } + + return drflac__full_read_and_close_s16(pFlac, channels, sampleRate, totalPCMFrameCount); +} + +drflac_int16* drflac_open_and_decode_memory_s16(const void* data, size_t dataSize, unsigned int* channelsOut, unsigned int* sampleRateOut, drflac_uint64* totalSampleCountOut) +{ + // Safety. + if (channelsOut) *channelsOut = 0; + if (sampleRateOut) *sampleRateOut = 0; + if (totalSampleCountOut) *totalSampleCountOut = 0; + + unsigned int channels; + unsigned int sampleRate; + drflac_uint64 totalPCMFrameCount; + + drflac_int16* pResult = drflac_open_memory_and_read_pcm_frames_s16(data, dataSize, &channels, &sampleRate, &totalPCMFrameCount); + if (pResult == NULL) { + return NULL; + } + + if (channelsOut) *channelsOut = channels; + if (sampleRateOut) *sampleRateOut = sampleRate; + if (totalSampleCountOut) *totalSampleCountOut = totalPCMFrameCount * channels; + + return pResult; +} + + +float* drflac_open_memory_and_read_pcm_frames_f32(const void* data, size_t dataSize, unsigned int* channels, unsigned int* sampleRate, drflac_uint64* totalPCMFrameCount) +{ + if (sampleRate) *sampleRate = 0; + if (channels) *channels = 0; + if (totalPCMFrameCount) *totalPCMFrameCount = 0; + + drflac* pFlac = drflac_open_memory(data, dataSize); + if (pFlac == NULL) { + return NULL; + } + + return drflac__full_read_and_close_f32(pFlac, channels, sampleRate, totalPCMFrameCount); +} + +float* drflac_open_and_decode_memory_f32(const void* data, size_t dataSize, unsigned int* channelsOut, unsigned int* sampleRateOut, drflac_uint64* totalSampleCountOut) +{ + // Safety. + if (channelsOut) *channelsOut = 0; + if (sampleRateOut) *sampleRateOut = 0; + if (totalSampleCountOut) *totalSampleCountOut = 0; + + unsigned int channels; + unsigned int sampleRate; + drflac_uint64 totalPCMFrameCount; + + float* pResult = drflac_open_memory_and_read_pcm_frames_f32(data, dataSize, &channels, &sampleRate, &totalPCMFrameCount); + if (pResult == NULL) { + return NULL; + } + + if (channelsOut) *channelsOut = channels; + if (sampleRateOut) *sampleRateOut = sampleRate; + if (totalSampleCountOut) *totalSampleCountOut = totalPCMFrameCount * channels; + + return pResult; +} + + +void drflac_free(void* pSampleDataReturnedByOpenAndDecode) +{ + DRFLAC_FREE(pSampleDataReturnedByOpenAndDecode); +} + + + + +void drflac_init_vorbis_comment_iterator(drflac_vorbis_comment_iterator* pIter, drflac_uint32 commentCount, const void* pComments) +{ + if (pIter == NULL) { + return; + } + + pIter->countRemaining = commentCount; + pIter->pRunningData = (const char*)pComments; +} + +const char* drflac_next_vorbis_comment(drflac_vorbis_comment_iterator* pIter, drflac_uint32* pCommentLengthOut) +{ + // Safety. + if (pCommentLengthOut) *pCommentLengthOut = 0; + + if (pIter == NULL || pIter->countRemaining == 0 || pIter->pRunningData == NULL) { + return NULL; + } + + drflac_uint32 length = drflac__le2host_32(*(const drflac_uint32*)pIter->pRunningData); + pIter->pRunningData += 4; + + const char* pComment = pIter->pRunningData; + pIter->pRunningData += length; + pIter->countRemaining -= 1; + + if (pCommentLengthOut) *pCommentLengthOut = length; + return pComment; +} + + + + +void drflac_init_cuesheet_track_iterator(drflac_cuesheet_track_iterator* pIter, drflac_uint32 trackCount, const void* pTrackData) +{ + if (pIter == NULL) { + return; + } + + pIter->countRemaining = trackCount; + pIter->pRunningData = (const char*)pTrackData; +} + +drflac_bool32 drflac_next_cuesheet_track(drflac_cuesheet_track_iterator* pIter, drflac_cuesheet_track* pCuesheetTrack) +{ + if (pIter == NULL || pIter->countRemaining == 0 || pIter->pRunningData == NULL) { + return DRFLAC_FALSE; + } + + drflac_cuesheet_track cuesheetTrack; + + const char* pRunningData = pIter->pRunningData; + + drflac_uint64 offsetHi = drflac__be2host_32(*(const drflac_uint32*)pRunningData); pRunningData += 4; + drflac_uint64 offsetLo = drflac__be2host_32(*(const drflac_uint32*)pRunningData); pRunningData += 4; + cuesheetTrack.offset = offsetLo | (offsetHi << 32); + cuesheetTrack.trackNumber = pRunningData[0]; pRunningData += 1; + drflac_copy_memory(cuesheetTrack.ISRC, pRunningData, sizeof(cuesheetTrack.ISRC)); pRunningData += 12; + cuesheetTrack.isAudio = (pRunningData[0] & 0x80) != 0; + cuesheetTrack.preEmphasis = (pRunningData[0] & 0x40) != 0; pRunningData += 14; + cuesheetTrack.indexCount = pRunningData[0]; pRunningData += 1; + cuesheetTrack.pIndexPoints = (const drflac_cuesheet_track_index*)pRunningData; pRunningData += cuesheetTrack.indexCount * sizeof(drflac_cuesheet_track_index); + + pIter->pRunningData = pRunningData; + pIter->countRemaining -= 1; + + if (pCuesheetTrack) *pCuesheetTrack = cuesheetTrack; + return DRFLAC_TRUE; +} +#endif //DR_FLAC_IMPLEMENTATION + + +// REVISION HISTORY +// +// v0.10.0 - 2018-09-11 +// - Remove the DR_FLAC_NO_WIN32_IO option and the Win32 file IO functionality. If you need to use Win32 file IO you +// need to do it yourself via the callback API. +// - Fix the clang build. +// - Fix undefined behavior. +// - Fix errors with CUESHEET metdata blocks. +// - Add an API for iterating over each cuesheet track in the CUESHEET metadata block. This works the same way as the +// Vorbis comment API. +// - Other miscellaneous bug fixes, mostly relating to invalid FLAC streams. +// - Minor optimizations. +// +// v0.9.11 - 2018-08-29 +// - Fix a bug with sample reconstruction. +// +// v0.9.10 - 2018-08-07 +// - Improve 64-bit detection. +// +// v0.9.9 - 2018-08-05 +// - Fix C++ build on older versions of GCC. +// +// v0.9.8 - 2018-07-24 +// - Fix compilation errors. +// +// v0.9.7 - 2018-07-05 +// - Fix a warning. +// +// v0.9.6 - 2018-06-29 +// - Fix some typos. +// +// v0.9.5 - 2018-06-23 +// - Fix some warnings. +// +// v0.9.4 - 2018-06-14 +// - Optimizations to seeking. +// - Clean up. +// +// v0.9.3 - 2018-05-22 +// - Bug fix. +// +// v0.9.2 - 2018-05-12 +// - Fix a compilation error due to a missing break statement. +// +// v0.9.1 - 2018-04-29 +// - Fix compilation error with Clang. +// +// v0.9 - 2018-04-24 +// - Fix Clang build. +// - Start using major.minor.revision versioning. +// +// v0.8g - 2018-04-19 +// - Fix build on non-x86/x64 architectures. +// +// v0.8f - 2018-02-02 +// - Stop pretending to support changing rate/channels mid stream. +// +// v0.8e - 2018-02-01 +// - Fix a crash when the block size of a frame is larger than the maximum block size defined by the FLAC stream. +// - Fix a crash the the Rice partition order is invalid. +// +// v0.8d - 2017-09-22 +// - Add support for decoding streams with ID3 tags. ID3 tags are just skipped. +// +// v0.8c - 2017-09-07 +// - Fix warning on non-x86/x64 architectures. +// +// v0.8b - 2017-08-19 +// - Fix build on non-x86/x64 architectures. +// +// v0.8a - 2017-08-13 +// - A small optimization for the Clang build. +// +// v0.8 - 2017-08-12 +// - API CHANGE: Rename dr_* types to drflac_*. +// - Optimizations. This brings dr_flac back to about the same class of efficiency as the reference implementation. +// - Add support for custom implementations of malloc(), realloc(), etc. +// - Add CRC checking to Ogg encapsulated streams. +// - Fix VC++ 6 build. This is only for the C++ compiler. The C compiler is not currently supported. +// - Bug fixes. +// +// v0.7 - 2017-07-23 +// - Add support for opening a stream without a header block. To do this, use drflac_open_relaxed() / drflac_open_with_metadata_relaxed(). +// +// v0.6 - 2017-07-22 +// - Add support for recovering from invalid frames. With this change, dr_flac will simply skip over invalid frames as if they +// never existed. Frames are checked against their sync code, the CRC-8 of the frame header and the CRC-16 of the whole frame. +// +// v0.5 - 2017-07-16 +// - Fix typos. +// - Change drflac_bool* types to unsigned. +// - Add CRC checking. This makes dr_flac slower, but can be disabled with #define DR_FLAC_NO_CRC. +// +// v0.4f - 2017-03-10 +// - Fix a couple of bugs with the bitstreaming code. +// +// v0.4e - 2017-02-17 +// - Fix some warnings. +// +// v0.4d - 2016-12-26 +// - Add support for 32-bit floating-point PCM decoding. +// - Use drflac_int*/drflac_uint* sized types to improve compiler support. +// - Minor improvements to documentation. +// +// v0.4c - 2016-12-26 +// - Add support for signed 16-bit integer PCM decoding. +// +// v0.4b - 2016-10-23 +// - A minor change to drflac_bool8 and drflac_bool32 types. +// +// v0.4a - 2016-10-11 +// - Rename drBool32 to drflac_bool32 for styling consistency. +// +// v0.4 - 2016-09-29 +// - API/ABI CHANGE: Use fixed size 32-bit booleans instead of the built-in bool type. +// - API CHANGE: Rename drflac_open_and_decode*() to drflac_open_and_decode*_s32(). +// - API CHANGE: Swap the order of "channels" and "sampleRate" parameters in drflac_open_and_decode*(). Rationale for this is to +// keep it consistent with drflac_audio. +// +// v0.3f - 2016-09-21 +// - Fix a warning with GCC. +// +// v0.3e - 2016-09-18 +// - Fixed a bug where GCC 4.3+ was not getting properly identified. +// - Fixed a few typos. +// - Changed date formats to ISO 8601 (YYYY-MM-DD). +// +// v0.3d - 2016-06-11 +// - Minor clean up. +// +// v0.3c - 2016-05-28 +// - Fixed compilation error. +// +// v0.3b - 2016-05-16 +// - Fixed Linux/GCC build. +// - Updated documentation. +// +// v0.3a - 2016-05-15 +// - Minor fixes to documentation. +// +// v0.3 - 2016-05-11 +// - Optimizations. Now at about parity with the reference implementation on 32-bit builds. +// - Lots of clean up. +// +// v0.2b - 2016-05-10 +// - Bug fixes. +// +// v0.2a - 2016-05-10 +// - Made drflac_open_and_decode() more robust. +// - Removed an unused debugging variable +// +// v0.2 - 2016-05-09 +// - Added support for Ogg encapsulation. +// - API CHANGE. Have the onSeek callback take a third argument which specifies whether or not the seek +// should be relative to the start or the current position. Also changes the seeking rules such that +// seeking offsets will never be negative. +// - Have drflac_open_and_decode() fail gracefully if the stream has an unknown total sample count. +// +// v0.1b - 2016-05-07 +// - Properly close the file handle in drflac_open_file() and family when the decoder fails to initialize. +// - Removed a stale comment. +// +// v0.1a - 2016-05-05 +// - Minor formatting changes. +// - Fixed a warning on the GCC build. +// +// v0.1 - 2016-05-03 +// - Initial versioned release. + + +/* +This is free and unencumbered software released into the public domain. + +Anyone is free to copy, modify, publish, use, compile, sell, or +distribute this software, either in source code form or as a compiled +binary, for any purpose, commercial or non-commercial, and by any +means. + +In jurisdictions that recognize copyright laws, the author or authors +of this software dedicate any and all copyright interest in the +software to the public domain. We make this dedication for the benefit +of the public at large and to the detriment of our heirs and +successors. We intend this dedication to be an overt act of +relinquishment in perpetuity of all present and future rights to this +software under copyright law. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, +EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF +MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. +IN NO EVENT SHALL THE AUTHORS BE LIABLE FOR ANY CLAIM, DAMAGES OR +OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, +ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR +OTHER DEALINGS IN THE SOFTWARE. + +For more information, please refer to +*/ diff --git a/src/soloud/src/audiosource/wav/dr_impl.cpp b/src/soloud/src/audiosource/wav/dr_impl.cpp new file mode 100644 index 0000000..fa152e1 --- /dev/null +++ b/src/soloud/src/audiosource/wav/dr_impl.cpp @@ -0,0 +1,13 @@ +#define DR_MP3_IMPLEMENTATION +#define DR_MP3_NO_STDIO +#define DR_MP3_FLOAT_OUTPUT +#include "dr_mp3.h" + +#define DR_WAV_IMPLEMENTATION +#define DR_WAV_NO_STDIO +#include "dr_wav.h" + +#define DR_FLAC_IMPLEMENTATION +#define DR_FLAC_NO_STDIO +#define DR_FLAC_NO_CRC +#include "dr_flac.h" diff --git a/src/soloud/src/audiosource/wav/dr_mp3.h b/src/soloud/src/audiosource/wav/dr_mp3.h new file mode 100644 index 0000000..070f0c1 --- /dev/null +++ b/src/soloud/src/audiosource/wav/dr_mp3.h @@ -0,0 +1,3200 @@ +// MP3 audio decoder. Public domain. See "unlicense" statement at the end of this file. +// dr_mp3 - v0.4.0 - 2018-xx-xx +// +// David Reid - mackron@gmail.com +// +// Based off minimp3 (https://github.com/lieff/minimp3) which is where the real work was done. See the bottom of this file for +// differences between minimp3 and dr_mp3. + +// USAGE +// ===== +// dr_mp3 is a single-file library. To use it, do something like the following in one .c file. +// #define DR_MP3_IMPLEMENTATION +// #include "dr_mp3.h" +// +// You can then #include this file in other parts of the program as you would with any other header file. To decode audio data, +// do something like the following: +// +// drmp3 mp3; +// if (!drmp3_init_file(&mp3, "MySong.mp3", NULL)) { +// // Failed to open file +// } +// +// ... +// +// drmp3_uint64 framesRead = drmp3_read_f32(pMP3, framesToRead, pFrames); +// +// The drmp3 object is transparent so you can get access to the channel count and sample rate like so: +// +// drmp3_uint32 channels = mp3.channels; +// drmp3_uint32 sampleRate = mp3.sampleRate; +// +// The third parameter of drmp3_init_file() in the example above allows you to control the output channel count and sample rate. It +// is a pointer to a drmp3_config object. Setting any of the variables of this object to 0 will cause dr_mp3 to use defaults. +// +// The example above initializes a decoder from a file, but you can also initialize it from a block of memory and read and seek +// callbacks with drmp3_init_memory() and drmp3_init() respectively. +// +// You do need to do any annoying memory management when reading PCM frames - this is all managed internally. You can request +// any number of PCM frames in each call to drmp3_read_f32() and it will return as many PCM frames as it can, up to the requested +// amount. +// +// You can also decode an entire file in one go with drmp3_open_and_decode_f32(), drmp3_open_and_decode_memory_f32() and +// drmp3_open_and_decode_file_f32(). +// +// +// OPTIONS +// ======= +// #define these options before including this file. +// +// #define DR_MP3_NO_STDIO +// Disable drmp3_init_file(), etc. +// +// #define DR_MP3_NO_SIMD +// Disable SIMD optimizations. + +#ifndef dr_mp3_h +#define dr_mp3_h + +#ifdef __cplusplus +extern "C" { +#endif + +#include + +#if defined(_MSC_VER) && _MSC_VER < 1600 +typedef signed char drmp3_int8; +typedef unsigned char drmp3_uint8; +typedef signed short drmp3_int16; +typedef unsigned short drmp3_uint16; +typedef signed int drmp3_int32; +typedef unsigned int drmp3_uint32; +typedef signed __int64 drmp3_int64; +typedef unsigned __int64 drmp3_uint64; +#else +#include +typedef int8_t drmp3_int8; +typedef uint8_t drmp3_uint8; +typedef int16_t drmp3_int16; +typedef uint16_t drmp3_uint16; +typedef int32_t drmp3_int32; +typedef uint32_t drmp3_uint32; +typedef int64_t drmp3_int64; +typedef uint64_t drmp3_uint64; +#endif +typedef drmp3_uint8 drmp3_bool8; +typedef drmp3_uint32 drmp3_bool32; +#define DRMP3_TRUE 1 +#define DRMP3_FALSE 0 + +#define DRMP3_MAX_PCM_FRAMES_PER_MP3_FRAME 1152 +#define DRMP3_MAX_SAMPLES_PER_FRAME (DRMP3_MAX_PCM_FRAMES_PER_MP3_FRAME*2) + + +// Low Level Push API +// ================== +typedef struct +{ + int frame_bytes, channels, hz, layer, bitrate_kbps; +} drmp3dec_frame_info; + +typedef struct +{ + float mdct_overlap[2][9*32], qmf_state[15*2*32]; + int reserv, free_format_bytes; + unsigned char header[4], reserv_buf[511]; +} drmp3dec; + +// Initializes a low level decoder. +void drmp3dec_init(drmp3dec *dec); + +// Reads a frame from a low level decoder. +int drmp3dec_decode_frame(drmp3dec *dec, const unsigned char *mp3, int mp3_bytes, void *pcm, drmp3dec_frame_info *info); + +// Helper for converting between f32 and s16. +void drmp3dec_f32_to_s16(const float *in, drmp3_int16 *out, int num_samples); + + + + +// Main API (Pull API) +// =================== + +typedef struct drmp3_src drmp3_src; +typedef drmp3_uint64 (* drmp3_src_read_proc)(drmp3_src* pSRC, drmp3_uint64 frameCount, void* pFramesOut, void* pUserData); // Returns the number of frames that were read. + +typedef enum +{ + drmp3_src_algorithm_none, + drmp3_src_algorithm_linear +} drmp3_src_algorithm; + +#define DRMP3_SRC_CACHE_SIZE_IN_FRAMES 512 +typedef struct +{ + drmp3_src* pSRC; + float pCachedFrames[2 * DRMP3_SRC_CACHE_SIZE_IN_FRAMES]; + drmp3_uint32 cachedFrameCount; + drmp3_uint32 iNextFrame; +} drmp3_src_cache; + +typedef struct +{ + drmp3_uint32 sampleRateIn; + drmp3_uint32 sampleRateOut; + drmp3_uint32 channels; + drmp3_src_algorithm algorithm; + drmp3_uint32 cacheSizeInFrames; // The number of frames to read from the client at a time. +} drmp3_src_config; + +struct drmp3_src +{ + drmp3_src_config config; + drmp3_src_read_proc onRead; + void* pUserData; + float bin[256]; + drmp3_src_cache cache; // <-- For simplifying and optimizing client -> memory reading. + union + { + struct + { + float alpha; + drmp3_bool32 isPrevFramesLoaded : 1; + drmp3_bool32 isNextFramesLoaded : 1; + } linear; + } algo; +}; + +typedef enum +{ + drmp3_seek_origin_start, + drmp3_seek_origin_current +} drmp3_seek_origin; + +// Callback for when data is read. Return value is the number of bytes actually read. +// +// pUserData [in] The user data that was passed to drmp3_init(), drmp3_open() and family. +// pBufferOut [out] The output buffer. +// bytesToRead [in] The number of bytes to read. +// +// Returns the number of bytes actually read. +// +// A return value of less than bytesToRead indicates the end of the stream. Do _not_ return from this callback until +// either the entire bytesToRead is filled or you have reached the end of the stream. +typedef size_t (* drmp3_read_proc)(void* pUserData, void* pBufferOut, size_t bytesToRead); + +// Callback for when data needs to be seeked. +// +// pUserData [in] The user data that was passed to drmp3_init(), drmp3_open() and family. +// offset [in] The number of bytes to move, relative to the origin. Will never be negative. +// origin [in] The origin of the seek - the current position or the start of the stream. +// +// Returns whether or not the seek was successful. +// +// Whether or not it is relative to the beginning or current position is determined by the "origin" parameter which +// will be either drmp3_seek_origin_start or drmp3_seek_origin_current. +typedef drmp3_bool32 (* drmp3_seek_proc)(void* pUserData, int offset, drmp3_seek_origin origin); + +typedef struct +{ + drmp3_uint32 outputChannels; + drmp3_uint32 outputSampleRate; +} drmp3_config; + +typedef struct +{ + drmp3dec decoder; + drmp3dec_frame_info frameInfo; + drmp3_uint32 channels; + drmp3_uint32 sampleRate; + drmp3_read_proc onRead; + drmp3_seek_proc onSeek; + void* pUserData; + drmp3_uint32 mp3FrameChannels; // The number of channels in the currently loaded MP3 frame. Internal use only. + drmp3_uint32 mp3FrameSampleRate; // The sample rate of the currently loaded MP3 frame. Internal use only. + drmp3_uint32 pcmFramesConsumedInMP3Frame; + drmp3_uint32 pcmFramesRemainingInMP3Frame; + drmp3_uint8 pcmFrames[sizeof(float)*DRMP3_MAX_SAMPLES_PER_FRAME]; // <-- Multipled by sizeof(float) to ensure there's enough room for DR_MP3_FLOAT_OUTPUT. + drmp3_uint64 currentPCMFrame; // The current PCM frame, globally, based on the output sample rate. Mainly used for seeking. + drmp3_src src; + size_t dataSize; + size_t dataCapacity; + drmp3_uint8* pData; + drmp3_bool32 atEnd : 1; + struct + { + const drmp3_uint8* pData; + size_t dataSize; + size_t currentReadPos; + } memory; // Only used for decoders that were opened against a block of memory. +} drmp3; + +// Initializes an MP3 decoder. +// +// onRead [in] The function to call when data needs to be read from the client. +// onSeek [in] The function to call when the read position of the client data needs to move. +// pUserData [in, optional] A pointer to application defined data that will be passed to onRead and onSeek. +// +// Returns true if successful; false otherwise. +// +// Close the loader with drmp3_uninit(). +// +// See also: drmp3_init_file(), drmp3_init_memory(), drmp3_uninit() +drmp3_bool32 drmp3_init(drmp3* pMP3, drmp3_read_proc onRead, drmp3_seek_proc onSeek, void* pUserData, const drmp3_config* pConfig); + +// Initializes an MP3 decoder from a block of memory. +// +// This does not create a copy of the data. It is up to the application to ensure the buffer remains valid for +// the lifetime of the drmp3 object. +// +// The buffer should contain the contents of the entire MP3 file. +drmp3_bool32 drmp3_init_memory(drmp3* pMP3, const void* pData, size_t dataSize, const drmp3_config* pConfig); + +#ifndef DR_MP3_NO_STDIO +// Initializes an MP3 decoder from a file. +// +// This holds the internal FILE object until drmp3_uninit() is called. Keep this in mind if you're caching drmp3 +// objects because the operating system may restrict the number of file handles an application can have open at +// any given time. +drmp3_bool32 drmp3_init_file(drmp3* pMP3, const char* filePath, const drmp3_config* pConfig); +#endif + +// Uninitializes an MP3 decoder. +void drmp3_uninit(drmp3* pMP3); + +// Reads PCM frames as interleaved 32-bit IEEE floating point PCM. +// +// Note that framesToRead specifies the number of PCM frames to read, _not_ the number of MP3 frames. +drmp3_uint64 drmp3_read_pcm_frames_f32(drmp3* pMP3, drmp3_uint64 framesToRead, float* pBufferOut); + +// Seeks to a specific frame. +// +// Note that this is _not_ an MP3 frame, but rather a PCM frame. +drmp3_bool32 drmp3_seek_to_pcm_frame(drmp3* pMP3, drmp3_uint64 frameIndex); + +// Calculates the total number of PCM frames in the MP3 stream. Cannot be used for infinite streams such as internet +// radio. Runs in linear time. Returns 0 on error. +drmp3_uint64 drmp3_get_pcm_frame_count(drmp3* pMP3); + +// Calculates the total number of MP3 frames in the MP3 stream. Cannot be used for infinite streams such as internet +// radio. Runs in linear time. Returns 0 on error. +drmp3_uint64 drmp3_get_mp3_frame_count(drmp3* pMP3); + + + +// Opens an decodes an entire MP3 stream as a single operation. +// +// pConfig is both an input and output. On input it contains what you want. On output it contains what you got. +// +// Free the returned pointer with drmp3_free(). +float* drmp3_open_and_read_f32(drmp3_read_proc onRead, drmp3_seek_proc onSeek, void* pUserData, drmp3_config* pConfig, drmp3_uint64* pTotalFrameCount); +float* drmp3_open_memory_and_read_f32(const void* pData, size_t dataSize, drmp3_config* pConfig, drmp3_uint64* pTotalFrameCount); +#ifndef DR_MP3_NO_STDIO +float* drmp3_open_file_and_read_f32(const char* filePath, drmp3_config* pConfig, drmp3_uint64* pTotalFrameCount); +#endif + +// Frees any memory that was allocated by a public drmp3 API. +void drmp3_free(void* p); + +#ifdef __cplusplus +} +#endif +#endif // dr_mp3_h + + +///////////////////////////////////////////////////// +// +// IMPLEMENTATION +// +///////////////////////////////////////////////////// +#ifdef DR_MP3_IMPLEMENTATION +#include +#include +#include +#include // For INT_MAX + +// Disable SIMD when compiling with TCC for now. +#if defined(__TINYC__) +#define DR_MP3_NO_SIMD +#endif + +#define DRMP3_OFFSET_PTR(p, offset) ((void*)((drmp3_uint8*)(p) + (offset))) + +#define DRMP3_MAX_FREE_FORMAT_FRAME_SIZE 2304 /* more than ISO spec's */ +#ifndef DRMP3_MAX_FRAME_SYNC_MATCHES +#define DRMP3_MAX_FRAME_SYNC_MATCHES 10 +#endif + +#define DRMP3_MAX_L3_FRAME_PAYLOAD_BYTES DRMP3_MAX_FREE_FORMAT_FRAME_SIZE /* MUST be >= 320000/8/32000*1152 = 1440 */ + +#define DRMP3_MAX_BITRESERVOIR_BYTES 511 +#define DRMP3_SHORT_BLOCK_TYPE 2 +#define DRMP3_STOP_BLOCK_TYPE 3 +#define DRMP3_MODE_MONO 3 +#define DRMP3_MODE_JOINT_STEREO 1 +#define DRMP3_HDR_SIZE 4 +#define DRMP3_HDR_IS_MONO(h) (((h[3]) & 0xC0) == 0xC0) +#define DRMP3_HDR_IS_MS_STEREO(h) (((h[3]) & 0xE0) == 0x60) +#define DRMP3_HDR_IS_FREE_FORMAT(h) (((h[2]) & 0xF0) == 0) +#define DRMP3_HDR_IS_CRC(h) (!((h[1]) & 1)) +#define DRMP3_HDR_TEST_PADDING(h) ((h[2]) & 0x2) +#define DRMP3_HDR_TEST_MPEG1(h) ((h[1]) & 0x8) +#define DRMP3_HDR_TEST_NOT_MPEG25(h) ((h[1]) & 0x10) +#define DRMP3_HDR_TEST_I_STEREO(h) ((h[3]) & 0x10) +#define DRMP3_HDR_TEST_MS_STEREO(h) ((h[3]) & 0x20) +#define DRMP3_HDR_GET_STEREO_MODE(h) (((h[3]) >> 6) & 3) +#define DRMP3_HDR_GET_STEREO_MODE_EXT(h) (((h[3]) >> 4) & 3) +#define DRMP3_HDR_GET_LAYER(h) (((h[1]) >> 1) & 3) +#define DRMP3_HDR_GET_BITRATE(h) ((h[2]) >> 4) +#define DRMP3_HDR_GET_SAMPLE_RATE(h) (((h[2]) >> 2) & 3) +#define DRMP3_HDR_GET_MY_SAMPLE_RATE(h) (DRMP3_HDR_GET_SAMPLE_RATE(h) + (((h[1] >> 3) & 1) + ((h[1] >> 4) & 1))*3) +#define DRMP3_HDR_IS_FRAME_576(h) ((h[1] & 14) == 2) +#define DRMP3_HDR_IS_LAYER_1(h) ((h[1] & 6) == 6) + +#define DRMP3_BITS_DEQUANTIZER_OUT -1 +#define DRMP3_MAX_SCF (255 + DRMP3_BITS_DEQUANTIZER_OUT*4 - 210) +#define DRMP3_MAX_SCFI ((DRMP3_MAX_SCF + 3) & ~3) + +#define DRMP3_MIN(a, b) ((a) > (b) ? (b) : (a)) +#define DRMP3_MAX(a, b) ((a) < (b) ? (b) : (a)) + +#if !defined(DR_MP3_NO_SIMD) + +#if !defined(DR_MP3_ONLY_SIMD) && (defined(_M_X64) || defined(_M_ARM64) || defined(__x86_64__) || defined(__aarch64__)) +/* x64 always have SSE2, arm64 always have neon, no need for generic code */ +#define DR_MP3_ONLY_SIMD +#endif + +#if (defined(_MSC_VER) && (defined(_M_IX86) || defined(_M_X64))) || ((defined(__i386__) || defined(__x86_64__)) && defined(__SSE2__)) +#if defined(_MSC_VER) +#include +#endif +#include +#define DRMP3_HAVE_SSE 1 +#define DRMP3_HAVE_SIMD 1 +#define DRMP3_VSTORE _mm_storeu_ps +#define DRMP3_VLD _mm_loadu_ps +#define DRMP3_VSET _mm_set1_ps +#define DRMP3_VADD _mm_add_ps +#define DRMP3_VSUB _mm_sub_ps +#define DRMP3_VMUL _mm_mul_ps +#define DRMP3_VMAC(a, x, y) _mm_add_ps(a, _mm_mul_ps(x, y)) +#define DRMP3_VMSB(a, x, y) _mm_sub_ps(a, _mm_mul_ps(x, y)) +#define DRMP3_VMUL_S(x, s) _mm_mul_ps(x, _mm_set1_ps(s)) +#define DRMP3_VREV(x) _mm_shuffle_ps(x, x, _MM_SHUFFLE(0, 1, 2, 3)) +typedef __m128 drmp3_f4; +#if defined(_MSC_VER) || defined(DR_MP3_ONLY_SIMD) +#define drmp3_cpuid __cpuid +#else +static __inline__ __attribute__((always_inline)) void drmp3_cpuid(int CPUInfo[], const int InfoType) +{ +#if defined(__PIC__) + __asm__ __volatile__( +#if defined(__x86_64__) + "push %%rbx\n" + "cpuid\n" + "xchgl %%ebx, %1\n" + "pop %%rbx\n" +#else + "xchgl %%ebx, %1\n" + "cpuid\n" + "xchgl %%ebx, %1\n" +#endif + : "=a" (CPUInfo[0]), "=r" (CPUInfo[1]), "=c" (CPUInfo[2]), "=d" (CPUInfo[3]) + : "a" (InfoType)); +#else + __asm__ __volatile__( + "cpuid" + : "=a" (CPUInfo[0]), "=b" (CPUInfo[1]), "=c" (CPUInfo[2]), "=d" (CPUInfo[3]) + : "a" (InfoType)); +#endif +} +#endif +static int drmp3_have_simd() +{ +#ifdef DR_MP3_ONLY_SIMD + return 1; +#else + static int g_have_simd; + int CPUInfo[4]; +#ifdef MINIMP3_TEST + static int g_counter; + if (g_counter++ > 100) + return 0; +#endif + if (g_have_simd) + goto end; + drmp3_cpuid(CPUInfo, 0); + if (CPUInfo[0] > 0) + { + drmp3_cpuid(CPUInfo, 1); + g_have_simd = (CPUInfo[3] & (1 << 26)) + 1; /* SSE2 */ + return g_have_simd - 1; + } + +end: + return g_have_simd - 1; +#endif +} +#elif defined(__ARM_NEON) || defined(__aarch64__) +#include +#define DRMP3_HAVE_SIMD 1 +#define DRMP3_VSTORE vst1q_f32 +#define DRMP3_VLD vld1q_f32 +#define DRMP3_VSET vmovq_n_f32 +#define DRMP3_VADD vaddq_f32 +#define DRMP3_VSUB vsubq_f32 +#define DRMP3_VMUL vmulq_f32 +#define DRMP3_VMAC(a, x, y) vmlaq_f32(a, x, y) +#define DRMP3_VMSB(a, x, y) vmlsq_f32(a, x, y) +#define DRMP3_VMUL_S(x, s) vmulq_f32(x, vmovq_n_f32(s)) +#define DRMP3_VREV(x) vcombine_f32(vget_high_f32(vrev64q_f32(x)), vget_low_f32(vrev64q_f32(x))) +typedef float32x4_t drmp3_f4; +static int drmp3_have_simd() +{ /* TODO: detect neon for !DR_MP3_ONLY_SIMD */ + return 1; +} +#else +#define DRMP3_HAVE_SIMD 0 +#ifdef DR_MP3_ONLY_SIMD +#error DR_MP3_ONLY_SIMD used, but SSE/NEON not enabled +#endif +#endif + +#else + +#define DRMP3_HAVE_SIMD 0 + +#endif + +typedef struct +{ + const drmp3_uint8 *buf; + int pos, limit; +} drmp3_bs; + +typedef struct +{ + float scf[3*64]; + drmp3_uint8 total_bands, stereo_bands, bitalloc[64], scfcod[64]; +} drmp3_L12_scale_info; + +typedef struct +{ + drmp3_uint8 tab_offset, code_tab_width, band_count; +} drmp3_L12_subband_alloc; + +typedef struct +{ + const drmp3_uint8 *sfbtab; + drmp3_uint16 part_23_length, big_values, scalefac_compress; + drmp3_uint8 global_gain, block_type, mixed_block_flag, n_long_sfb, n_short_sfb; + drmp3_uint8 table_select[3], region_count[3], subblock_gain[3]; + drmp3_uint8 preflag, scalefac_scale, count1_table, scfsi; +} drmp3_L3_gr_info; + +typedef struct +{ + drmp3_bs bs; + drmp3_uint8 maindata[DRMP3_MAX_BITRESERVOIR_BYTES + DRMP3_MAX_L3_FRAME_PAYLOAD_BYTES]; + drmp3_L3_gr_info gr_info[4]; + float grbuf[2][576], scf[40], syn[18 + 15][2*32]; + drmp3_uint8 ist_pos[2][39]; +} drmp3dec_scratch; + +static void drmp3_bs_init(drmp3_bs *bs, const drmp3_uint8 *data, int bytes) +{ + bs->buf = data; + bs->pos = 0; + bs->limit = bytes*8; +} + +static drmp3_uint32 drmp3_bs_get_bits(drmp3_bs *bs, int n) +{ + drmp3_uint32 next, cache = 0, s = bs->pos & 7; + int shl = n + s; + const drmp3_uint8 *p = bs->buf + (bs->pos >> 3); + if ((bs->pos += n) > bs->limit) + return 0; + next = *p++ & (255 >> s); + while ((shl -= 8) > 0) + { + cache |= next << shl; + next = *p++; + } + return cache | (next >> -shl); +} + +static int drmp3_hdr_valid(const drmp3_uint8 *h) +{ + return h[0] == 0xff && + ((h[1] & 0xF0) == 0xf0 || (h[1] & 0xFE) == 0xe2) && + (DRMP3_HDR_GET_LAYER(h) != 0) && + (DRMP3_HDR_GET_BITRATE(h) != 15) && + (DRMP3_HDR_GET_SAMPLE_RATE(h) != 3); +} + +static int drmp3_hdr_compare(const drmp3_uint8 *h1, const drmp3_uint8 *h2) +{ + return drmp3_hdr_valid(h2) && + ((h1[1] ^ h2[1]) & 0xFE) == 0 && + ((h1[2] ^ h2[2]) & 0x0C) == 0 && + !(DRMP3_HDR_IS_FREE_FORMAT(h1) ^ DRMP3_HDR_IS_FREE_FORMAT(h2)); +} + +static unsigned drmp3_hdr_bitrate_kbps(const drmp3_uint8 *h) +{ + static const drmp3_uint8 halfrate[2][3][15] = { + { { 0,4,8,12,16,20,24,28,32,40,48,56,64,72,80 }, { 0,4,8,12,16,20,24,28,32,40,48,56,64,72,80 }, { 0,16,24,28,32,40,48,56,64,72,80,88,96,112,128 } }, + { { 0,16,20,24,28,32,40,48,56,64,80,96,112,128,160 }, { 0,16,24,28,32,40,48,56,64,80,96,112,128,160,192 }, { 0,16,32,48,64,80,96,112,128,144,160,176,192,208,224 } }, + }; + return 2*halfrate[!!DRMP3_HDR_TEST_MPEG1(h)][DRMP3_HDR_GET_LAYER(h) - 1][DRMP3_HDR_GET_BITRATE(h)]; +} + +static unsigned drmp3_hdr_sample_rate_hz(const drmp3_uint8 *h) +{ + static const unsigned g_hz[3] = { 44100, 48000, 32000 }; + return g_hz[DRMP3_HDR_GET_SAMPLE_RATE(h)] >> (int)!DRMP3_HDR_TEST_MPEG1(h) >> (int)!DRMP3_HDR_TEST_NOT_MPEG25(h); +} + +static unsigned drmp3_hdr_frame_samples(const drmp3_uint8 *h) +{ + return DRMP3_HDR_IS_LAYER_1(h) ? 384 : (1152 >> (int)DRMP3_HDR_IS_FRAME_576(h)); +} + +static int drmp3_hdr_frame_bytes(const drmp3_uint8 *h, int free_format_size) +{ + int frame_bytes = drmp3_hdr_frame_samples(h)*drmp3_hdr_bitrate_kbps(h)*125/drmp3_hdr_sample_rate_hz(h); + if (DRMP3_HDR_IS_LAYER_1(h)) + { + frame_bytes &= ~3; /* slot align */ + } + return frame_bytes ? frame_bytes : free_format_size; +} + +static int drmp3_hdr_padding(const drmp3_uint8 *h) +{ + return DRMP3_HDR_TEST_PADDING(h) ? (DRMP3_HDR_IS_LAYER_1(h) ? 4 : 1) : 0; +} + +#ifndef DR_MP3_ONLY_MP3 +static const drmp3_L12_subband_alloc *drmp3_L12_subband_alloc_table(const drmp3_uint8 *hdr, drmp3_L12_scale_info *sci) +{ + const drmp3_L12_subband_alloc *alloc; + int mode = DRMP3_HDR_GET_STEREO_MODE(hdr); + int nbands, stereo_bands = (mode == DRMP3_MODE_MONO) ? 0 : (mode == DRMP3_MODE_JOINT_STEREO) ? (DRMP3_HDR_GET_STEREO_MODE_EXT(hdr) << 2) + 4 : 32; + + if (DRMP3_HDR_IS_LAYER_1(hdr)) + { + static const drmp3_L12_subband_alloc g_alloc_L1[] = { { 76, 4, 32 } }; + alloc = g_alloc_L1; + nbands = 32; + } else if (!DRMP3_HDR_TEST_MPEG1(hdr)) + { + static const drmp3_L12_subband_alloc g_alloc_L2M2[] = { { 60, 4, 4 }, { 44, 3, 7 }, { 44, 2, 19 } }; + alloc = g_alloc_L2M2; + nbands = 30; + } else + { + static const drmp3_L12_subband_alloc g_alloc_L2M1[] = { { 0, 4, 3 }, { 16, 4, 8 }, { 32, 3, 12 }, { 40, 2, 7 } }; + int sample_rate_idx = DRMP3_HDR_GET_SAMPLE_RATE(hdr); + unsigned kbps = drmp3_hdr_bitrate_kbps(hdr) >> (int)(mode != DRMP3_MODE_MONO); + if (!kbps) /* free-format */ + { + kbps = 192; + } + + alloc = g_alloc_L2M1; + nbands = 27; + if (kbps < 56) + { + static const drmp3_L12_subband_alloc g_alloc_L2M1_lowrate[] = { { 44, 4, 2 }, { 44, 3, 10 } }; + alloc = g_alloc_L2M1_lowrate; + nbands = sample_rate_idx == 2 ? 12 : 8; + } else if (kbps >= 96 && sample_rate_idx != 1) + { + nbands = 30; + } + } + + sci->total_bands = (drmp3_uint8)nbands; + sci->stereo_bands = (drmp3_uint8)DRMP3_MIN(stereo_bands, nbands); + + return alloc; +} + +static void drmp3_L12_read_scalefactors(drmp3_bs *bs, drmp3_uint8 *pba, drmp3_uint8 *scfcod, int bands, float *scf) +{ + static const float g_deq_L12[18*3] = { +#define DRMP3_DQ(x) 9.53674316e-07f/x, 7.56931807e-07f/x, 6.00777173e-07f/x + DRMP3_DQ(3),DRMP3_DQ(7),DRMP3_DQ(15),DRMP3_DQ(31),DRMP3_DQ(63),DRMP3_DQ(127),DRMP3_DQ(255),DRMP3_DQ(511),DRMP3_DQ(1023),DRMP3_DQ(2047),DRMP3_DQ(4095),DRMP3_DQ(8191),DRMP3_DQ(16383),DRMP3_DQ(32767),DRMP3_DQ(65535),DRMP3_DQ(3),DRMP3_DQ(5),DRMP3_DQ(9) + }; + int i, m; + for (i = 0; i < bands; i++) + { + float s = 0; + int ba = *pba++; + int mask = ba ? 4 + ((19 >> scfcod[i]) & 3) : 0; + for (m = 4; m; m >>= 1) + { + if (mask & m) + { + int b = drmp3_bs_get_bits(bs, 6); + s = g_deq_L12[ba*3 - 6 + b % 3]*(1 << 21 >> b/3); + } + *scf++ = s; + } + } +} + +static void drmp3_L12_read_scale_info(const drmp3_uint8 *hdr, drmp3_bs *bs, drmp3_L12_scale_info *sci) +{ + static const drmp3_uint8 g_bitalloc_code_tab[] = { + 0,17, 3, 4, 5,6,7, 8,9,10,11,12,13,14,15,16, + 0,17,18, 3,19,4,5, 6,7, 8, 9,10,11,12,13,16, + 0,17,18, 3,19,4,5,16, + 0,17,18,16, + 0,17,18,19, 4,5,6, 7,8, 9,10,11,12,13,14,15, + 0,17,18, 3,19,4,5, 6,7, 8, 9,10,11,12,13,14, + 0, 2, 3, 4, 5,6,7, 8,9,10,11,12,13,14,15,16 + }; + const drmp3_L12_subband_alloc *subband_alloc = drmp3_L12_subband_alloc_table(hdr, sci); + + int i, k = 0, ba_bits = 0; + const drmp3_uint8 *ba_code_tab = g_bitalloc_code_tab; + + for (i = 0; i < sci->total_bands; i++) + { + drmp3_uint8 ba; + if (i == k) + { + k += subband_alloc->band_count; + ba_bits = subband_alloc->code_tab_width; + ba_code_tab = g_bitalloc_code_tab + subband_alloc->tab_offset; + subband_alloc++; + } + ba = ba_code_tab[drmp3_bs_get_bits(bs, ba_bits)]; + sci->bitalloc[2*i] = ba; + if (i < sci->stereo_bands) + { + ba = ba_code_tab[drmp3_bs_get_bits(bs, ba_bits)]; + } + sci->bitalloc[2*i + 1] = sci->stereo_bands ? ba : 0; + } + + for (i = 0; i < 2*sci->total_bands; i++) + { + sci->scfcod[i] = (drmp3_uint8)(sci->bitalloc[i] ? DRMP3_HDR_IS_LAYER_1(hdr) ? 2 : drmp3_bs_get_bits(bs, 2) : 6); + } + + drmp3_L12_read_scalefactors(bs, sci->bitalloc, sci->scfcod, sci->total_bands*2, sci->scf); + + for (i = sci->stereo_bands; i < sci->total_bands; i++) + { + sci->bitalloc[2*i + 1] = 0; + } +} + +static int drmp3_L12_dequantize_granule(float *grbuf, drmp3_bs *bs, drmp3_L12_scale_info *sci, int group_size) +{ + int i, j, k, choff = 576; + for (j = 0; j < 4; j++) + { + float *dst = grbuf + group_size*j; + for (i = 0; i < 2*sci->total_bands; i++) + { + int ba = sci->bitalloc[i]; + if (ba != 0) + { + if (ba < 17) + { + int half = (1 << (ba - 1)) - 1; + for (k = 0; k < group_size; k++) + { + dst[k] = (float)((int)drmp3_bs_get_bits(bs, ba) - half); + } + } else + { + unsigned mod = (2 << (ba - 17)) + 1; /* 3, 5, 9 */ + unsigned code = drmp3_bs_get_bits(bs, mod + 2 - (mod >> 3)); /* 5, 7, 10 */ + for (k = 0; k < group_size; k++, code /= mod) + { + dst[k] = (float)((int)(code % mod - mod/2)); + } + } + } + dst += choff; + choff = 18 - choff; + } + } + return group_size*4; +} + +static void drmp3_L12_apply_scf_384(drmp3_L12_scale_info *sci, const float *scf, float *dst) +{ + int i, k; + memcpy(dst + 576 + sci->stereo_bands*18, dst + sci->stereo_bands*18, (sci->total_bands - sci->stereo_bands)*18*sizeof(float)); + for (i = 0; i < sci->total_bands; i++, dst += 18, scf += 6) + { + for (k = 0; k < 12; k++) + { + dst[k + 0] *= scf[0]; + dst[k + 576] *= scf[3]; + } + } +} +#endif + +static int drmp3_L3_read_side_info(drmp3_bs *bs, drmp3_L3_gr_info *gr, const drmp3_uint8 *hdr) +{ + static const drmp3_uint8 g_scf_long[8][23] = { + { 6,6,6,6,6,6,8,10,12,14,16,20,24,28,32,38,46,52,60,68,58,54,0 }, + { 12,12,12,12,12,12,16,20,24,28,32,40,48,56,64,76,90,2,2,2,2,2,0 }, + { 6,6,6,6,6,6,8,10,12,14,16,20,24,28,32,38,46,52,60,68,58,54,0 }, + { 6,6,6,6,6,6,8,10,12,14,16,18,22,26,32,38,46,54,62,70,76,36,0 }, + { 6,6,6,6,6,6,8,10,12,14,16,20,24,28,32,38,46,52,60,68,58,54,0 }, + { 4,4,4,4,4,4,6,6,8,8,10,12,16,20,24,28,34,42,50,54,76,158,0 }, + { 4,4,4,4,4,4,6,6,6,8,10,12,16,18,22,28,34,40,46,54,54,192,0 }, + { 4,4,4,4,4,4,6,6,8,10,12,16,20,24,30,38,46,56,68,84,102,26,0 } + }; + static const drmp3_uint8 g_scf_short[8][40] = { + { 4,4,4,4,4,4,4,4,4,6,6,6,8,8,8,10,10,10,12,12,12,14,14,14,18,18,18,24,24,24,30,30,30,40,40,40,18,18,18,0 }, + { 8,8,8,8,8,8,8,8,8,12,12,12,16,16,16,20,20,20,24,24,24,28,28,28,36,36,36,2,2,2,2,2,2,2,2,2,26,26,26,0 }, + { 4,4,4,4,4,4,4,4,4,6,6,6,6,6,6,8,8,8,10,10,10,14,14,14,18,18,18,26,26,26,32,32,32,42,42,42,18,18,18,0 }, + { 4,4,4,4,4,4,4,4,4,6,6,6,8,8,8,10,10,10,12,12,12,14,14,14,18,18,18,24,24,24,32,32,32,44,44,44,12,12,12,0 }, + { 4,4,4,4,4,4,4,4,4,6,6,6,8,8,8,10,10,10,12,12,12,14,14,14,18,18,18,24,24,24,30,30,30,40,40,40,18,18,18,0 }, + { 4,4,4,4,4,4,4,4,4,4,4,4,6,6,6,8,8,8,10,10,10,12,12,12,14,14,14,18,18,18,22,22,22,30,30,30,56,56,56,0 }, + { 4,4,4,4,4,4,4,4,4,4,4,4,6,6,6,6,6,6,10,10,10,12,12,12,14,14,14,16,16,16,20,20,20,26,26,26,66,66,66,0 }, + { 4,4,4,4,4,4,4,4,4,4,4,4,6,6,6,8,8,8,12,12,12,16,16,16,20,20,20,26,26,26,34,34,34,42,42,42,12,12,12,0 } + }; + static const drmp3_uint8 g_scf_mixed[8][40] = { + { 6,6,6,6,6,6,6,6,6,8,8,8,10,10,10,12,12,12,14,14,14,18,18,18,24,24,24,30,30,30,40,40,40,18,18,18,0 }, + { 12,12,12,4,4,4,8,8,8,12,12,12,16,16,16,20,20,20,24,24,24,28,28,28,36,36,36,2,2,2,2,2,2,2,2,2,26,26,26,0 }, + { 6,6,6,6,6,6,6,6,6,6,6,6,8,8,8,10,10,10,14,14,14,18,18,18,26,26,26,32,32,32,42,42,42,18,18,18,0 }, + { 6,6,6,6,6,6,6,6,6,8,8,8,10,10,10,12,12,12,14,14,14,18,18,18,24,24,24,32,32,32,44,44,44,12,12,12,0 }, + { 6,6,6,6,6,6,6,6,6,8,8,8,10,10,10,12,12,12,14,14,14,18,18,18,24,24,24,30,30,30,40,40,40,18,18,18,0 }, + { 4,4,4,4,4,4,6,6,4,4,4,6,6,6,8,8,8,10,10,10,12,12,12,14,14,14,18,18,18,22,22,22,30,30,30,56,56,56,0 }, + { 4,4,4,4,4,4,6,6,4,4,4,6,6,6,6,6,6,10,10,10,12,12,12,14,14,14,16,16,16,20,20,20,26,26,26,66,66,66,0 }, + { 4,4,4,4,4,4,6,6,4,4,4,6,6,6,8,8,8,12,12,12,16,16,16,20,20,20,26,26,26,34,34,34,42,42,42,12,12,12,0 } + }; + + unsigned tables, scfsi = 0; + int main_data_begin, part_23_sum = 0; + int sr_idx = DRMP3_HDR_GET_MY_SAMPLE_RATE(hdr); sr_idx -= (sr_idx != 0); + int gr_count = DRMP3_HDR_IS_MONO(hdr) ? 1 : 2; + + if (DRMP3_HDR_TEST_MPEG1(hdr)) + { + gr_count *= 2; + main_data_begin = drmp3_bs_get_bits(bs, 9); + scfsi = drmp3_bs_get_bits(bs, 7 + gr_count); + } else + { + main_data_begin = drmp3_bs_get_bits(bs, 8 + gr_count) >> gr_count; + } + + do + { + if (DRMP3_HDR_IS_MONO(hdr)) + { + scfsi <<= 4; + } + gr->part_23_length = (drmp3_uint16)drmp3_bs_get_bits(bs, 12); + part_23_sum += gr->part_23_length; + gr->big_values = (drmp3_uint16)drmp3_bs_get_bits(bs, 9); + if (gr->big_values > 288) + { + return -1; + } + gr->global_gain = (drmp3_uint8)drmp3_bs_get_bits(bs, 8); + gr->scalefac_compress = (drmp3_uint16)drmp3_bs_get_bits(bs, DRMP3_HDR_TEST_MPEG1(hdr) ? 4 : 9); + gr->sfbtab = g_scf_long[sr_idx]; + gr->n_long_sfb = 22; + gr->n_short_sfb = 0; + if (drmp3_bs_get_bits(bs, 1)) + { + gr->block_type = (drmp3_uint8)drmp3_bs_get_bits(bs, 2); + if (!gr->block_type) + { + return -1; + } + gr->mixed_block_flag = (drmp3_uint8)drmp3_bs_get_bits(bs, 1); + gr->region_count[0] = 7; + gr->region_count[1] = 255; + if (gr->block_type == DRMP3_SHORT_BLOCK_TYPE) + { + scfsi &= 0x0F0F; + if (!gr->mixed_block_flag) + { + gr->region_count[0] = 8; + gr->sfbtab = g_scf_short[sr_idx]; + gr->n_long_sfb = 0; + gr->n_short_sfb = 39; + } else + { + gr->sfbtab = g_scf_mixed[sr_idx]; + gr->n_long_sfb = DRMP3_HDR_TEST_MPEG1(hdr) ? 8 : 6; + gr->n_short_sfb = 30; + } + } + tables = drmp3_bs_get_bits(bs, 10); + tables <<= 5; + gr->subblock_gain[0] = (drmp3_uint8)drmp3_bs_get_bits(bs, 3); + gr->subblock_gain[1] = (drmp3_uint8)drmp3_bs_get_bits(bs, 3); + gr->subblock_gain[2] = (drmp3_uint8)drmp3_bs_get_bits(bs, 3); + } else + { + gr->block_type = 0; + gr->mixed_block_flag = 0; + tables = drmp3_bs_get_bits(bs, 15); + gr->region_count[0] = (drmp3_uint8)drmp3_bs_get_bits(bs, 4); + gr->region_count[1] = (drmp3_uint8)drmp3_bs_get_bits(bs, 3); + gr->region_count[2] = 255; + } + gr->table_select[0] = (drmp3_uint8)(tables >> 10); + gr->table_select[1] = (drmp3_uint8)((tables >> 5) & 31); + gr->table_select[2] = (drmp3_uint8)((tables) & 31); + gr->preflag = (drmp3_uint8)(DRMP3_HDR_TEST_MPEG1(hdr) ? drmp3_bs_get_bits(bs, 1) : (gr->scalefac_compress >= 500)); + gr->scalefac_scale = (drmp3_uint8)drmp3_bs_get_bits(bs, 1); + gr->count1_table = (drmp3_uint8)drmp3_bs_get_bits(bs, 1); + gr->scfsi = (drmp3_uint8)((scfsi >> 12) & 15); + scfsi <<= 4; + gr++; + } while(--gr_count); + + if (part_23_sum + bs->pos > bs->limit + main_data_begin*8) + { + return -1; + } + + return main_data_begin; +} + +static void drmp3_L3_read_scalefactors(drmp3_uint8 *scf, drmp3_uint8 *ist_pos, const drmp3_uint8 *scf_size, const drmp3_uint8 *scf_count, drmp3_bs *bitbuf, int scfsi) +{ + int i, k; + for (i = 0; i < 4 && scf_count[i]; i++, scfsi *= 2) + { + int cnt = scf_count[i]; + if (scfsi & 8) + { + memcpy(scf, ist_pos, cnt); + } else + { + int bits = scf_size[i]; + if (!bits) + { + memset(scf, 0, cnt); + memset(ist_pos, 0, cnt); + } else + { + int max_scf = (scfsi < 0) ? (1 << bits) - 1 : -1; + for (k = 0; k < cnt; k++) + { + int s = drmp3_bs_get_bits(bitbuf, bits); + ist_pos[k] = (drmp3_uint8)(s == max_scf ? -1 : s); + scf[k] = (drmp3_uint8)s; + } + } + } + ist_pos += cnt; + scf += cnt; + } + scf[0] = scf[1] = scf[2] = 0; +} + +static float drmp3_L3_ldexp_q2(float y, int exp_q2) +{ + static const float g_expfrac[4] = { 9.31322575e-10f,7.83145814e-10f,6.58544508e-10f,5.53767716e-10f }; + int e; + do + { + e = DRMP3_MIN(30*4, exp_q2); + y *= g_expfrac[e & 3]*(1 << 30 >> (e >> 2)); + } while ((exp_q2 -= e) > 0); + return y; +} + +static void drmp3_L3_decode_scalefactors(const drmp3_uint8 *hdr, drmp3_uint8 *ist_pos, drmp3_bs *bs, const drmp3_L3_gr_info *gr, float *scf, int ch) +{ + static const drmp3_uint8 g_scf_partitions[3][28] = { + { 6,5,5, 5,6,5,5,5,6,5, 7,3,11,10,0,0, 7, 7, 7,0, 6, 6,6,3, 8, 8,5,0 }, + { 8,9,6,12,6,9,9,9,6,9,12,6,15,18,0,0, 6,15,12,0, 6,12,9,6, 6,18,9,0 }, + { 9,9,6,12,9,9,9,9,9,9,12,6,18,18,0,0,12,12,12,0,12, 9,9,6,15,12,9,0 } + }; + const drmp3_uint8 *scf_partition = g_scf_partitions[!!gr->n_short_sfb + !gr->n_long_sfb]; + drmp3_uint8 scf_size[4], iscf[40]; + int i, scf_shift = gr->scalefac_scale + 1, gain_exp, scfsi = gr->scfsi; + float gain; + + if (DRMP3_HDR_TEST_MPEG1(hdr)) + { + static const drmp3_uint8 g_scfc_decode[16] = { 0,1,2,3, 12,5,6,7, 9,10,11,13, 14,15,18,19 }; + int part = g_scfc_decode[gr->scalefac_compress]; + scf_size[1] = scf_size[0] = (drmp3_uint8)(part >> 2); + scf_size[3] = scf_size[2] = (drmp3_uint8)(part & 3); + } else + { + static const drmp3_uint8 g_mod[6*4] = { 5,5,4,4,5,5,4,1,4,3,1,1,5,6,6,1,4,4,4,1,4,3,1,1 }; + int k, modprod, sfc, ist = DRMP3_HDR_TEST_I_STEREO(hdr) && ch; + sfc = gr->scalefac_compress >> ist; + for (k = ist*3*4; sfc >= 0; sfc -= modprod, k += 4) + { + for (modprod = 1, i = 3; i >= 0; i--) + { + scf_size[i] = (drmp3_uint8)(sfc / modprod % g_mod[k + i]); + modprod *= g_mod[k + i]; + } + } + scf_partition += k; + scfsi = -16; + } + drmp3_L3_read_scalefactors(iscf, ist_pos, scf_size, scf_partition, bs, scfsi); + + if (gr->n_short_sfb) + { + int sh = 3 - scf_shift; + for (i = 0; i < gr->n_short_sfb; i += 3) + { + iscf[gr->n_long_sfb + i + 0] += gr->subblock_gain[0] << sh; + iscf[gr->n_long_sfb + i + 1] += gr->subblock_gain[1] << sh; + iscf[gr->n_long_sfb + i + 2] += gr->subblock_gain[2] << sh; + } + } else if (gr->preflag) + { + static const drmp3_uint8 g_preamp[10] = { 1,1,1,1,2,2,3,3,3,2 }; + for (i = 0; i < 10; i++) + { + iscf[11 + i] += g_preamp[i]; + } + } + + gain_exp = gr->global_gain + DRMP3_BITS_DEQUANTIZER_OUT*4 - 210 - (DRMP3_HDR_IS_MS_STEREO(hdr) ? 2 : 0); + gain = drmp3_L3_ldexp_q2(1 << (DRMP3_MAX_SCFI/4), DRMP3_MAX_SCFI - gain_exp); + for (i = 0; i < (int)(gr->n_long_sfb + gr->n_short_sfb); i++) + { + scf[i] = drmp3_L3_ldexp_q2(gain, iscf[i] << scf_shift); + } +} + +static const float g_drmp3_pow43[129 + 16] = { + 0,-1,-2.519842f,-4.326749f,-6.349604f,-8.549880f,-10.902724f,-13.390518f,-16.000000f,-18.720754f,-21.544347f,-24.463781f,-27.473142f,-30.567351f,-33.741992f,-36.993181f, + 0,1,2.519842f,4.326749f,6.349604f,8.549880f,10.902724f,13.390518f,16.000000f,18.720754f,21.544347f,24.463781f,27.473142f,30.567351f,33.741992f,36.993181f,40.317474f,43.711787f,47.173345f,50.699631f,54.288352f,57.937408f,61.644865f,65.408941f,69.227979f,73.100443f,77.024898f,81.000000f,85.024491f,89.097188f,93.216975f,97.382800f,101.593667f,105.848633f,110.146801f,114.487321f,118.869381f,123.292209f,127.755065f,132.257246f,136.798076f,141.376907f,145.993119f,150.646117f,155.335327f,160.060199f,164.820202f,169.614826f,174.443577f,179.305980f,184.201575f,189.129918f,194.090580f,199.083145f,204.107210f,209.162385f,214.248292f,219.364564f,224.510845f,229.686789f,234.892058f,240.126328f,245.389280f,250.680604f,256.000000f,261.347174f,266.721841f,272.123723f,277.552547f,283.008049f,288.489971f,293.998060f,299.532071f,305.091761f,310.676898f,316.287249f,321.922592f,327.582707f,333.267377f,338.976394f,344.709550f,350.466646f,356.247482f,362.051866f,367.879608f,373.730522f,379.604427f,385.501143f,391.420496f,397.362314f,403.326427f,409.312672f,415.320884f,421.350905f,427.402579f,433.475750f,439.570269f,445.685987f,451.822757f,457.980436f,464.158883f,470.357960f,476.577530f,482.817459f,489.077615f,495.357868f,501.658090f,507.978156f,514.317941f,520.677324f,527.056184f,533.454404f,539.871867f,546.308458f,552.764065f,559.238575f,565.731879f,572.243870f,578.774440f,585.323483f,591.890898f,598.476581f,605.080431f,611.702349f,618.342238f,625.000000f,631.675540f,638.368763f,645.079578f +}; + +static float drmp3_L3_pow_43(int x) +{ + float frac; + int sign, mult = 256; + + if (x < 129) + { + return g_drmp3_pow43[16 + x]; + } + + if (x < 1024) + { + mult = 16; + x <<= 3; + } + + sign = 2*x & 64; + frac = (float)((x & 63) - sign) / ((x & ~63) + sign); + return g_drmp3_pow43[16 + ((x + sign) >> 6)]*(1.f + frac*((4.f/3) + frac*(2.f/9)))*mult; +} + +static void drmp3_L3_huffman(float *dst, drmp3_bs *bs, const drmp3_L3_gr_info *gr_info, const float *scf, int layer3gr_limit) +{ + static const drmp3_int16 tabs[] = { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 785,785,785,785,784,784,784,784,513,513,513,513,513,513,513,513,256,256,256,256,256,256,256,256,256,256,256,256,256,256,256,256, + -255,1313,1298,1282,785,785,785,785,784,784,784,784,769,769,769,769,256,256,256,256,256,256,256,256,256,256,256,256,256,256,256,256,290,288, + -255,1313,1298,1282,769,769,769,769,529,529,529,529,529,529,529,529,528,528,528,528,528,528,528,528,512,512,512,512,512,512,512,512,290,288, + -253,-318,-351,-367,785,785,785,785,784,784,784,784,769,769,769,769,256,256,256,256,256,256,256,256,256,256,256,256,256,256,256,256,819,818,547,547,275,275,275,275,561,560,515,546,289,274,288,258, + -254,-287,1329,1299,1314,1312,1057,1057,1042,1042,1026,1026,784,784,784,784,529,529,529,529,529,529,529,529,769,769,769,769,768,768,768,768,563,560,306,306,291,259, + -252,-413,-477,-542,1298,-575,1041,1041,784,784,784,784,769,769,769,769,256,256,256,256,256,256,256,256,256,256,256,256,256,256,256,256,-383,-399,1107,1092,1106,1061,849,849,789,789,1104,1091,773,773,1076,1075,341,340,325,309,834,804,577,577,532,532,516,516,832,818,803,816,561,561,531,531,515,546,289,289,288,258, + -252,-429,-493,-559,1057,1057,1042,1042,529,529,529,529,529,529,529,529,784,784,784,784,769,769,769,769,512,512,512,512,512,512,512,512,-382,1077,-415,1106,1061,1104,849,849,789,789,1091,1076,1029,1075,834,834,597,581,340,340,339,324,804,833,532,532,832,772,818,803,817,787,816,771,290,290,290,290,288,258, + -253,-349,-414,-447,-463,1329,1299,-479,1314,1312,1057,1057,1042,1042,1026,1026,785,785,785,785,784,784,784,784,769,769,769,769,768,768,768,768,-319,851,821,-335,836,850,805,849,341,340,325,336,533,533,579,579,564,564,773,832,578,548,563,516,321,276,306,291,304,259, + -251,-572,-733,-830,-863,-879,1041,1041,784,784,784,784,769,769,769,769,256,256,256,256,256,256,256,256,256,256,256,256,256,256,256,256,-511,-527,-543,1396,1351,1381,1366,1395,1335,1380,-559,1334,1138,1138,1063,1063,1350,1392,1031,1031,1062,1062,1364,1363,1120,1120,1333,1348,881,881,881,881,375,374,359,373,343,358,341,325,791,791,1123,1122,-703,1105,1045,-719,865,865,790,790,774,774,1104,1029,338,293,323,308,-799,-815,833,788,772,818,803,816,322,292,307,320,561,531,515,546,289,274,288,258, + -251,-525,-605,-685,-765,-831,-846,1298,1057,1057,1312,1282,785,785,785,785,784,784,784,784,769,769,769,769,512,512,512,512,512,512,512,512,1399,1398,1383,1367,1382,1396,1351,-511,1381,1366,1139,1139,1079,1079,1124,1124,1364,1349,1363,1333,882,882,882,882,807,807,807,807,1094,1094,1136,1136,373,341,535,535,881,775,867,822,774,-591,324,338,-671,849,550,550,866,864,609,609,293,336,534,534,789,835,773,-751,834,804,308,307,833,788,832,772,562,562,547,547,305,275,560,515,290,290, + -252,-397,-477,-557,-622,-653,-719,-735,-750,1329,1299,1314,1057,1057,1042,1042,1312,1282,1024,1024,785,785,785,785,784,784,784,784,769,769,769,769,-383,1127,1141,1111,1126,1140,1095,1110,869,869,883,883,1079,1109,882,882,375,374,807,868,838,881,791,-463,867,822,368,263,852,837,836,-543,610,610,550,550,352,336,534,534,865,774,851,821,850,805,593,533,579,564,773,832,578,578,548,548,577,577,307,276,306,291,516,560,259,259, + -250,-2107,-2507,-2764,-2909,-2974,-3007,-3023,1041,1041,1040,1040,769,769,769,769,256,256,256,256,256,256,256,256,256,256,256,256,256,256,256,256,-767,-1052,-1213,-1277,-1358,-1405,-1469,-1535,-1550,-1582,-1614,-1647,-1662,-1694,-1726,-1759,-1774,-1807,-1822,-1854,-1886,1565,-1919,-1935,-1951,-1967,1731,1730,1580,1717,-1983,1729,1564,-1999,1548,-2015,-2031,1715,1595,-2047,1714,-2063,1610,-2079,1609,-2095,1323,1323,1457,1457,1307,1307,1712,1547,1641,1700,1699,1594,1685,1625,1442,1442,1322,1322,-780,-973,-910,1279,1278,1277,1262,1276,1261,1275,1215,1260,1229,-959,974,974,989,989,-943,735,478,478,495,463,506,414,-1039,1003,958,1017,927,942,987,957,431,476,1272,1167,1228,-1183,1256,-1199,895,895,941,941,1242,1227,1212,1135,1014,1014,490,489,503,487,910,1013,985,925,863,894,970,955,1012,847,-1343,831,755,755,984,909,428,366,754,559,-1391,752,486,457,924,997,698,698,983,893,740,740,908,877,739,739,667,667,953,938,497,287,271,271,683,606,590,712,726,574,302,302,738,736,481,286,526,725,605,711,636,724,696,651,589,681,666,710,364,467,573,695,466,466,301,465,379,379,709,604,665,679,316,316,634,633,436,436,464,269,424,394,452,332,438,363,347,408,393,448,331,422,362,407,392,421,346,406,391,376,375,359,1441,1306,-2367,1290,-2383,1337,-2399,-2415,1426,1321,-2431,1411,1336,-2447,-2463,-2479,1169,1169,1049,1049,1424,1289,1412,1352,1319,-2495,1154,1154,1064,1064,1153,1153,416,390,360,404,403,389,344,374,373,343,358,372,327,357,342,311,356,326,1395,1394,1137,1137,1047,1047,1365,1392,1287,1379,1334,1364,1349,1378,1318,1363,792,792,792,792,1152,1152,1032,1032,1121,1121,1046,1046,1120,1120,1030,1030,-2895,1106,1061,1104,849,849,789,789,1091,1076,1029,1090,1060,1075,833,833,309,324,532,532,832,772,818,803,561,561,531,560,515,546,289,274,288,258, + -250,-1179,-1579,-1836,-1996,-2124,-2253,-2333,-2413,-2477,-2542,-2574,-2607,-2622,-2655,1314,1313,1298,1312,1282,785,785,785,785,1040,1040,1025,1025,768,768,768,768,-766,-798,-830,-862,-895,-911,-927,-943,-959,-975,-991,-1007,-1023,-1039,-1055,-1070,1724,1647,-1103,-1119,1631,1767,1662,1738,1708,1723,-1135,1780,1615,1779,1599,1677,1646,1778,1583,-1151,1777,1567,1737,1692,1765,1722,1707,1630,1751,1661,1764,1614,1736,1676,1763,1750,1645,1598,1721,1691,1762,1706,1582,1761,1566,-1167,1749,1629,767,766,751,765,494,494,735,764,719,749,734,763,447,447,748,718,477,506,431,491,446,476,461,505,415,430,475,445,504,399,460,489,414,503,383,474,429,459,502,502,746,752,488,398,501,473,413,472,486,271,480,270,-1439,-1455,1357,-1471,-1487,-1503,1341,1325,-1519,1489,1463,1403,1309,-1535,1372,1448,1418,1476,1356,1462,1387,-1551,1475,1340,1447,1402,1386,-1567,1068,1068,1474,1461,455,380,468,440,395,425,410,454,364,467,466,464,453,269,409,448,268,432,1371,1473,1432,1417,1308,1460,1355,1446,1459,1431,1083,1083,1401,1416,1458,1445,1067,1067,1370,1457,1051,1051,1291,1430,1385,1444,1354,1415,1400,1443,1082,1082,1173,1113,1186,1066,1185,1050,-1967,1158,1128,1172,1097,1171,1081,-1983,1157,1112,416,266,375,400,1170,1142,1127,1065,793,793,1169,1033,1156,1096,1141,1111,1155,1080,1126,1140,898,898,808,808,897,897,792,792,1095,1152,1032,1125,1110,1139,1079,1124,882,807,838,881,853,791,-2319,867,368,263,822,852,837,866,806,865,-2399,851,352,262,534,534,821,836,594,594,549,549,593,593,533,533,848,773,579,579,564,578,548,563,276,276,577,576,306,291,516,560,305,305,275,259, + -251,-892,-2058,-2620,-2828,-2957,-3023,-3039,1041,1041,1040,1040,769,769,769,769,256,256,256,256,256,256,256,256,256,256,256,256,256,256,256,256,-511,-527,-543,-559,1530,-575,-591,1528,1527,1407,1526,1391,1023,1023,1023,1023,1525,1375,1268,1268,1103,1103,1087,1087,1039,1039,1523,-604,815,815,815,815,510,495,509,479,508,463,507,447,431,505,415,399,-734,-782,1262,-815,1259,1244,-831,1258,1228,-847,-863,1196,-879,1253,987,987,748,-767,493,493,462,477,414,414,686,669,478,446,461,445,474,429,487,458,412,471,1266,1264,1009,1009,799,799,-1019,-1276,-1452,-1581,-1677,-1757,-1821,-1886,-1933,-1997,1257,1257,1483,1468,1512,1422,1497,1406,1467,1496,1421,1510,1134,1134,1225,1225,1466,1451,1374,1405,1252,1252,1358,1480,1164,1164,1251,1251,1238,1238,1389,1465,-1407,1054,1101,-1423,1207,-1439,830,830,1248,1038,1237,1117,1223,1148,1236,1208,411,426,395,410,379,269,1193,1222,1132,1235,1221,1116,976,976,1192,1162,1177,1220,1131,1191,963,963,-1647,961,780,-1663,558,558,994,993,437,408,393,407,829,978,813,797,947,-1743,721,721,377,392,844,950,828,890,706,706,812,859,796,960,948,843,934,874,571,571,-1919,690,555,689,421,346,539,539,944,779,918,873,932,842,903,888,570,570,931,917,674,674,-2575,1562,-2591,1609,-2607,1654,1322,1322,1441,1441,1696,1546,1683,1593,1669,1624,1426,1426,1321,1321,1639,1680,1425,1425,1305,1305,1545,1668,1608,1623,1667,1592,1638,1666,1320,1320,1652,1607,1409,1409,1304,1304,1288,1288,1664,1637,1395,1395,1335,1335,1622,1636,1394,1394,1319,1319,1606,1621,1392,1392,1137,1137,1137,1137,345,390,360,375,404,373,1047,-2751,-2767,-2783,1062,1121,1046,-2799,1077,-2815,1106,1061,789,789,1105,1104,263,355,310,340,325,354,352,262,339,324,1091,1076,1029,1090,1060,1075,833,833,788,788,1088,1028,818,818,803,803,561,561,531,531,816,771,546,546,289,274,288,258, + -253,-317,-381,-446,-478,-509,1279,1279,-811,-1179,-1451,-1756,-1900,-2028,-2189,-2253,-2333,-2414,-2445,-2511,-2526,1313,1298,-2559,1041,1041,1040,1040,1025,1025,1024,1024,1022,1007,1021,991,1020,975,1019,959,687,687,1018,1017,671,671,655,655,1016,1015,639,639,758,758,623,623,757,607,756,591,755,575,754,559,543,543,1009,783,-575,-621,-685,-749,496,-590,750,749,734,748,974,989,1003,958,988,973,1002,942,987,957,972,1001,926,986,941,971,956,1000,910,985,925,999,894,970,-1071,-1087,-1102,1390,-1135,1436,1509,1451,1374,-1151,1405,1358,1480,1420,-1167,1507,1494,1389,1342,1465,1435,1450,1326,1505,1310,1493,1373,1479,1404,1492,1464,1419,428,443,472,397,736,526,464,464,486,457,442,471,484,482,1357,1449,1434,1478,1388,1491,1341,1490,1325,1489,1463,1403,1309,1477,1372,1448,1418,1433,1476,1356,1462,1387,-1439,1475,1340,1447,1402,1474,1324,1461,1371,1473,269,448,1432,1417,1308,1460,-1711,1459,-1727,1441,1099,1099,1446,1386,1431,1401,-1743,1289,1083,1083,1160,1160,1458,1445,1067,1067,1370,1457,1307,1430,1129,1129,1098,1098,268,432,267,416,266,400,-1887,1144,1187,1082,1173,1113,1186,1066,1050,1158,1128,1143,1172,1097,1171,1081,420,391,1157,1112,1170,1142,1127,1065,1169,1049,1156,1096,1141,1111,1155,1080,1126,1154,1064,1153,1140,1095,1048,-2159,1125,1110,1137,-2175,823,823,1139,1138,807,807,384,264,368,263,868,838,853,791,867,822,852,837,866,806,865,790,-2319,851,821,836,352,262,850,805,849,-2399,533,533,835,820,336,261,578,548,563,577,532,532,832,772,562,562,547,547,305,275,560,515,290,290,288,258 }; + static const drmp3_uint8 tab32[] = { 130,162,193,209,44,28,76,140,9,9,9,9,9,9,9,9,190,254,222,238,126,94,157,157,109,61,173,205}; + static const drmp3_uint8 tab33[] = { 252,236,220,204,188,172,156,140,124,108,92,76,60,44,28,12 }; + static const drmp3_int16 tabindex[2*16] = { 0,32,64,98,0,132,180,218,292,364,426,538,648,746,0,1126,1460,1460,1460,1460,1460,1460,1460,1460,1842,1842,1842,1842,1842,1842,1842,1842 }; + static const drmp3_uint8 g_linbits[] = { 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,2,3,4,6,8,10,13,4,5,6,7,8,9,11,13 }; + +#define DRMP3_PEEK_BITS(n) (bs_cache >> (32 - n)) +#define DRMP3_FLUSH_BITS(n) { bs_cache <<= (n); bs_sh += (n); } +#define DRMP3_CHECK_BITS while (bs_sh >= 0) { bs_cache |= (drmp3_uint32)*bs_next_ptr++ << bs_sh; bs_sh -= 8; } +#define DRMP3_BSPOS ((bs_next_ptr - bs->buf)*8 - 24 + bs_sh) + + float one = 0.0f; + int ireg = 0, big_val_cnt = gr_info->big_values; + const drmp3_uint8 *sfb = gr_info->sfbtab; + const drmp3_uint8 *bs_next_ptr = bs->buf + bs->pos/8; + drmp3_uint32 bs_cache = (((bs_next_ptr[0]*256u + bs_next_ptr[1])*256u + bs_next_ptr[2])*256u + bs_next_ptr[3]) << (bs->pos & 7); + int pairs_to_decode, np, bs_sh = (bs->pos & 7) - 8; + bs_next_ptr += 4; + + while (big_val_cnt > 0) + { + int tab_num = gr_info->table_select[ireg]; + int sfb_cnt = gr_info->region_count[ireg++]; + const drmp3_int16 *codebook = tabs + tabindex[tab_num]; + int linbits = g_linbits[tab_num]; + do + { + np = *sfb++ / 2; + pairs_to_decode = DRMP3_MIN(big_val_cnt, np); + one = *scf++; + do + { + int j, w = 5; + int leaf = codebook[DRMP3_PEEK_BITS(w)]; + while (leaf < 0) + { + DRMP3_FLUSH_BITS(w); + w = leaf & 7; + leaf = codebook[DRMP3_PEEK_BITS(w) - (leaf >> 3)]; + } + DRMP3_FLUSH_BITS(leaf >> 8); + + for (j = 0; j < 2; j++, dst++, leaf >>= 4) + { + int lsb = leaf & 0x0F; + if (lsb == 15 && linbits) + { + lsb += DRMP3_PEEK_BITS(linbits); + DRMP3_FLUSH_BITS(linbits); + DRMP3_CHECK_BITS; + *dst = one*drmp3_L3_pow_43(lsb)*((int32_t)bs_cache < 0 ? -1: 1); + } else + { + *dst = g_drmp3_pow43[16 + lsb - 16*(bs_cache >> 31)]*one; + } + DRMP3_FLUSH_BITS(lsb ? 1 : 0); + } + DRMP3_CHECK_BITS; + } while (--pairs_to_decode); + } while ((big_val_cnt -= np) > 0 && --sfb_cnt >= 0); + } + + for (np = 1 - big_val_cnt;; dst += 4) + { + const drmp3_uint8 *codebook_count1 = (gr_info->count1_table) ? tab33 : tab32; + int leaf = codebook_count1[DRMP3_PEEK_BITS(4)]; + if (!(leaf & 8)) + { + leaf = codebook_count1[(leaf >> 3) + (bs_cache << 4 >> (32 - (leaf & 3)))]; + } + DRMP3_FLUSH_BITS(leaf & 7); + if (DRMP3_BSPOS > layer3gr_limit) + { + break; + } +#define DRMP3_RELOAD_SCALEFACTOR if (!--np) { np = *sfb++/2; if (!np) break; one = *scf++; } +#define DRMP3_DEQ_COUNT1(s) if (leaf & (128 >> s)) { dst[s] = ((drmp3_int32)bs_cache < 0) ? -one : one; DRMP3_FLUSH_BITS(1) } + DRMP3_RELOAD_SCALEFACTOR; + DRMP3_DEQ_COUNT1(0); + DRMP3_DEQ_COUNT1(1); + DRMP3_RELOAD_SCALEFACTOR; + DRMP3_DEQ_COUNT1(2); + DRMP3_DEQ_COUNT1(3); + DRMP3_CHECK_BITS; + } + + bs->pos = layer3gr_limit; +} + +static void drmp3_L3_midside_stereo(float *left, int n) +{ + int i = 0; + float *right = left + 576; +#if DRMP3_HAVE_SIMD + if (drmp3_have_simd()) for (; i < n - 3; i += 4) + { + drmp3_f4 vl = DRMP3_VLD(left + i); + drmp3_f4 vr = DRMP3_VLD(right + i); + DRMP3_VSTORE(left + i, DRMP3_VADD(vl, vr)); + DRMP3_VSTORE(right + i, DRMP3_VSUB(vl, vr)); + } +#endif + for (; i < n; i++) + { + float a = left[i]; + float b = right[i]; + left[i] = a + b; + right[i] = a - b; + } +} + +static void drmp3_L3_intensity_stereo_band(float *left, int n, float kl, float kr) +{ + int i; + for (i = 0; i < n; i++) + { + left[i + 576] = left[i]*kr; + left[i] = left[i]*kl; + } +} + +static void drmp3_L3_stereo_top_band(const float *right, const drmp3_uint8 *sfb, int nbands, int max_band[3]) +{ + int i, k; + + max_band[0] = max_band[1] = max_band[2] = -1; + + for (i = 0; i < nbands; i++) + { + for (k = 0; k < sfb[i]; k += 2) + { + if (right[k] != 0 || right[k + 1] != 0) + { + max_band[i % 3] = i; + break; + } + } + right += sfb[i]; + } +} + +static void drmp3_L3_stereo_process(float *left, const drmp3_uint8 *ist_pos, const drmp3_uint8 *sfb, const drmp3_uint8 *hdr, int max_band[3], int mpeg2_sh) +{ + static const float g_pan[7*2] = { 0,1,0.21132487f,0.78867513f,0.36602540f,0.63397460f,0.5f,0.5f,0.63397460f,0.36602540f,0.78867513f,0.21132487f,1,0 }; + unsigned i, max_pos = DRMP3_HDR_TEST_MPEG1(hdr) ? 7 : 64; + + for (i = 0; sfb[i]; i++) + { + unsigned ipos = ist_pos[i]; + if ((int)i > max_band[i % 3] && ipos < max_pos) + { + float kl, kr, s = DRMP3_HDR_TEST_MS_STEREO(hdr) ? 1.41421356f : 1; + if (DRMP3_HDR_TEST_MPEG1(hdr)) + { + kl = g_pan[2*ipos]; + kr = g_pan[2*ipos + 1]; + } else + { + kl = 1; + kr = drmp3_L3_ldexp_q2(1, (ipos + 1) >> 1 << mpeg2_sh); + if (ipos & 1) + { + kl = kr; + kr = 1; + } + } + drmp3_L3_intensity_stereo_band(left, sfb[i], kl*s, kr*s); + } else if (DRMP3_HDR_TEST_MS_STEREO(hdr)) + { + drmp3_L3_midside_stereo(left, sfb[i]); + } + left += sfb[i]; + } +} + +static void drmp3_L3_intensity_stereo(float *left, drmp3_uint8 *ist_pos, const drmp3_L3_gr_info *gr, const drmp3_uint8 *hdr) +{ + int max_band[3], n_sfb = gr->n_long_sfb + gr->n_short_sfb; + int i, max_blocks = gr->n_short_sfb ? 3 : 1; + + drmp3_L3_stereo_top_band(left + 576, gr->sfbtab, n_sfb, max_band); + if (gr->n_long_sfb) + { + max_band[0] = max_band[1] = max_band[2] = DRMP3_MAX(DRMP3_MAX(max_band[0], max_band[1]), max_band[2]); + } + for (i = 0; i < max_blocks; i++) + { + int default_pos = DRMP3_HDR_TEST_MPEG1(hdr) ? 3 : 0; + int itop = n_sfb - max_blocks + i; + int prev = itop - max_blocks; + ist_pos[itop] = (drmp3_uint8)(max_band[i] >= prev ? default_pos : ist_pos[prev]); + } + drmp3_L3_stereo_process(left, ist_pos, gr->sfbtab, hdr, max_band, gr[1].scalefac_compress & 1); +} + +static void drmp3_L3_reorder(float *grbuf, float *scratch, const drmp3_uint8 *sfb) +{ + int i, len; + float *src = grbuf, *dst = scratch; + + for (;0 != (len = *sfb); sfb += 3, src += 2*len) + { + for (i = 0; i < len; i++, src++) + { + *dst++ = src[0*len]; + *dst++ = src[1*len]; + *dst++ = src[2*len]; + } + } + memcpy(grbuf, scratch, (dst - scratch)*sizeof(float)); +} + +static void drmp3_L3_antialias(float *grbuf, int nbands) +{ + static const float g_aa[2][8] = { + {0.85749293f,0.88174200f,0.94962865f,0.98331459f,0.99551782f,0.99916056f,0.99989920f,0.99999316f}, + {0.51449576f,0.47173197f,0.31337745f,0.18191320f,0.09457419f,0.04096558f,0.01419856f,0.00369997f} + }; + + for (; nbands > 0; nbands--, grbuf += 18) + { + int i = 0; +#if DRMP3_HAVE_SIMD + if (drmp3_have_simd()) for (; i < 8; i += 4) + { + drmp3_f4 vu = DRMP3_VLD(grbuf + 18 + i); + drmp3_f4 vd = DRMP3_VLD(grbuf + 14 - i); + drmp3_f4 vc0 = DRMP3_VLD(g_aa[0] + i); + drmp3_f4 vc1 = DRMP3_VLD(g_aa[1] + i); + vd = DRMP3_VREV(vd); + DRMP3_VSTORE(grbuf + 18 + i, DRMP3_VSUB(DRMP3_VMUL(vu, vc0), DRMP3_VMUL(vd, vc1))); + vd = DRMP3_VADD(DRMP3_VMUL(vu, vc1), DRMP3_VMUL(vd, vc0)); + DRMP3_VSTORE(grbuf + 14 - i, DRMP3_VREV(vd)); + } +#endif +#ifndef DR_MP3_ONLY_SIMD + for(; i < 8; i++) + { + float u = grbuf[18 + i]; + float d = grbuf[17 - i]; + grbuf[18 + i] = u*g_aa[0][i] - d*g_aa[1][i]; + grbuf[17 - i] = u*g_aa[1][i] + d*g_aa[0][i]; + } +#endif + } +} + +static void drmp3_L3_dct3_9(float *y) +{ + float s0, s1, s2, s3, s4, s5, s6, s7, s8, t0, t2, t4; + + s0 = y[0]; s2 = y[2]; s4 = y[4]; s6 = y[6]; s8 = y[8]; + t0 = s0 + s6*0.5f; + s0 -= s6; + t4 = (s4 + s2)*0.93969262f; + t2 = (s8 + s2)*0.76604444f; + s6 = (s4 - s8)*0.17364818f; + s4 += s8 - s2; + + s2 = s0 - s4*0.5f; + y[4] = s4 + s0; + s8 = t0 - t2 + s6; + s0 = t0 - t4 + t2; + s4 = t0 + t4 - s6; + + s1 = y[1]; s3 = y[3]; s5 = y[5]; s7 = y[7]; + + s3 *= 0.86602540f; + t0 = (s5 + s1)*0.98480775f; + t4 = (s5 - s7)*0.34202014f; + t2 = (s1 + s7)*0.64278761f; + s1 = (s1 - s5 - s7)*0.86602540f; + + s5 = t0 - s3 - t2; + s7 = t4 - s3 - t0; + s3 = t4 + s3 - t2; + + y[0] = s4 - s7; + y[1] = s2 + s1; + y[2] = s0 - s3; + y[3] = s8 + s5; + y[5] = s8 - s5; + y[6] = s0 + s3; + y[7] = s2 - s1; + y[8] = s4 + s7; +} + +static void drmp3_L3_imdct36(float *grbuf, float *overlap, const float *window, int nbands) +{ + int i, j; + static const float g_twid9[18] = { + 0.73727734f,0.79335334f,0.84339145f,0.88701083f,0.92387953f,0.95371695f,0.97629601f,0.99144486f,0.99904822f,0.67559021f,0.60876143f,0.53729961f,0.46174861f,0.38268343f,0.30070580f,0.21643961f,0.13052619f,0.04361938f + }; + + for (j = 0; j < nbands; j++, grbuf += 18, overlap += 9) + { + float co[9], si[9]; + co[0] = -grbuf[0]; + si[0] = grbuf[17]; + for (i = 0; i < 4; i++) + { + si[8 - 2*i] = grbuf[4*i + 1] - grbuf[4*i + 2]; + co[1 + 2*i] = grbuf[4*i + 1] + grbuf[4*i + 2]; + si[7 - 2*i] = grbuf[4*i + 4] - grbuf[4*i + 3]; + co[2 + 2*i] = -(grbuf[4*i + 3] + grbuf[4*i + 4]); + } + drmp3_L3_dct3_9(co); + drmp3_L3_dct3_9(si); + + si[1] = -si[1]; + si[3] = -si[3]; + si[5] = -si[5]; + si[7] = -si[7]; + + i = 0; + +#if DRMP3_HAVE_SIMD + if (drmp3_have_simd()) for (; i < 8; i += 4) + { + drmp3_f4 vovl = DRMP3_VLD(overlap + i); + drmp3_f4 vc = DRMP3_VLD(co + i); + drmp3_f4 vs = DRMP3_VLD(si + i); + drmp3_f4 vr0 = DRMP3_VLD(g_twid9 + i); + drmp3_f4 vr1 = DRMP3_VLD(g_twid9 + 9 + i); + drmp3_f4 vw0 = DRMP3_VLD(window + i); + drmp3_f4 vw1 = DRMP3_VLD(window + 9 + i); + drmp3_f4 vsum = DRMP3_VADD(DRMP3_VMUL(vc, vr1), DRMP3_VMUL(vs, vr0)); + DRMP3_VSTORE(overlap + i, DRMP3_VSUB(DRMP3_VMUL(vc, vr0), DRMP3_VMUL(vs, vr1))); + DRMP3_VSTORE(grbuf + i, DRMP3_VSUB(DRMP3_VMUL(vovl, vw0), DRMP3_VMUL(vsum, vw1))); + vsum = DRMP3_VADD(DRMP3_VMUL(vovl, vw1), DRMP3_VMUL(vsum, vw0)); + DRMP3_VSTORE(grbuf + 14 - i, DRMP3_VREV(vsum)); + } +#endif + for (; i < 9; i++) + { + float ovl = overlap[i]; + float sum = co[i]*g_twid9[9 + i] + si[i]*g_twid9[0 + i]; + overlap[i] = co[i]*g_twid9[0 + i] - si[i]*g_twid9[9 + i]; + grbuf[i] = ovl*window[0 + i] - sum*window[9 + i]; + grbuf[17 - i] = ovl*window[9 + i] + sum*window[0 + i]; + } + } +} + +static void drmp3_L3_idct3(float x0, float x1, float x2, float *dst) +{ + float m1 = x1*0.86602540f; + float a1 = x0 - x2*0.5f; + dst[1] = x0 + x2; + dst[0] = a1 + m1; + dst[2] = a1 - m1; +} + +static void drmp3_L3_imdct12(float *x, float *dst, float *overlap) +{ + static const float g_twid3[6] = { 0.79335334f,0.92387953f,0.99144486f, 0.60876143f,0.38268343f,0.13052619f }; + float co[3], si[3]; + int i; + + drmp3_L3_idct3(-x[0], x[6] + x[3], x[12] + x[9], co); + drmp3_L3_idct3(x[15], x[12] - x[9], x[6] - x[3], si); + si[1] = -si[1]; + + for (i = 0; i < 3; i++) + { + float ovl = overlap[i]; + float sum = co[i]*g_twid3[3 + i] + si[i]*g_twid3[0 + i]; + overlap[i] = co[i]*g_twid3[0 + i] - si[i]*g_twid3[3 + i]; + dst[i] = ovl*g_twid3[2 - i] - sum*g_twid3[5 - i]; + dst[5 - i] = ovl*g_twid3[5 - i] + sum*g_twid3[2 - i]; + } +} + +static void drmp3_L3_imdct_short(float *grbuf, float *overlap, int nbands) +{ + for (;nbands > 0; nbands--, overlap += 9, grbuf += 18) + { + float tmp[18]; + memcpy(tmp, grbuf, sizeof(tmp)); + memcpy(grbuf, overlap, 6*sizeof(float)); + drmp3_L3_imdct12(tmp, grbuf + 6, overlap + 6); + drmp3_L3_imdct12(tmp + 1, grbuf + 12, overlap + 6); + drmp3_L3_imdct12(tmp + 2, overlap, overlap + 6); + } +} + +static void drmp3_L3_change_sign(float *grbuf) +{ + int b, i; + for (b = 0, grbuf += 18; b < 32; b += 2, grbuf += 36) + for (i = 1; i < 18; i += 2) + grbuf[i] = -grbuf[i]; +} + +static void drmp3_L3_imdct_gr(float *grbuf, float *overlap, unsigned block_type, unsigned n_long_bands) +{ + static const float g_mdct_window[2][18] = { + { 0.99904822f,0.99144486f,0.97629601f,0.95371695f,0.92387953f,0.88701083f,0.84339145f,0.79335334f,0.73727734f,0.04361938f,0.13052619f,0.21643961f,0.30070580f,0.38268343f,0.46174861f,0.53729961f,0.60876143f,0.67559021f }, + { 1,1,1,1,1,1,0.99144486f,0.92387953f,0.79335334f,0,0,0,0,0,0,0.13052619f,0.38268343f,0.60876143f } + }; + if (n_long_bands) + { + drmp3_L3_imdct36(grbuf, overlap, g_mdct_window[0], n_long_bands); + grbuf += 18*n_long_bands; + overlap += 9*n_long_bands; + } + if (block_type == DRMP3_SHORT_BLOCK_TYPE) + drmp3_L3_imdct_short(grbuf, overlap, 32 - n_long_bands); + else + drmp3_L3_imdct36(grbuf, overlap, g_mdct_window[block_type == DRMP3_STOP_BLOCK_TYPE], 32 - n_long_bands); +} + +static void drmp3_L3_save_reservoir(drmp3dec *h, drmp3dec_scratch *s) +{ + int pos = (s->bs.pos + 7)/8u; + int remains = s->bs.limit/8u - pos; + if (remains > DRMP3_MAX_BITRESERVOIR_BYTES) + { + pos += remains - DRMP3_MAX_BITRESERVOIR_BYTES; + remains = DRMP3_MAX_BITRESERVOIR_BYTES; + } + if (remains > 0) + { + memmove(h->reserv_buf, s->maindata + pos, remains); + } + h->reserv = remains; +} + +static int drmp3_L3_restore_reservoir(drmp3dec *h, drmp3_bs *bs, drmp3dec_scratch *s, int main_data_begin) +{ + int frame_bytes = (bs->limit - bs->pos)/8; + int bytes_have = DRMP3_MIN(h->reserv, main_data_begin); + memcpy(s->maindata, h->reserv_buf + DRMP3_MAX(0, h->reserv - main_data_begin), DRMP3_MIN(h->reserv, main_data_begin)); + memcpy(s->maindata + bytes_have, bs->buf + bs->pos/8, frame_bytes); + drmp3_bs_init(&s->bs, s->maindata, bytes_have + frame_bytes); + return h->reserv >= main_data_begin; +} + +static void drmp3_L3_decode(drmp3dec *h, drmp3dec_scratch *s, drmp3_L3_gr_info *gr_info, int nch) +{ + int ch; + + for (ch = 0; ch < nch; ch++) + { + int layer3gr_limit = s->bs.pos + gr_info[ch].part_23_length; + drmp3_L3_decode_scalefactors(h->header, s->ist_pos[ch], &s->bs, gr_info + ch, s->scf, ch); + drmp3_L3_huffman(s->grbuf[ch], &s->bs, gr_info + ch, s->scf, layer3gr_limit); + } + + if (DRMP3_HDR_TEST_I_STEREO(h->header)) + { + drmp3_L3_intensity_stereo(s->grbuf[0], s->ist_pos[1], gr_info, h->header); + } else if (DRMP3_HDR_IS_MS_STEREO(h->header)) + { + drmp3_L3_midside_stereo(s->grbuf[0], 576); + } + + for (ch = 0; ch < nch; ch++, gr_info++) + { + int aa_bands = 31; + int n_long_bands = (gr_info->mixed_block_flag ? 2 : 0) << (int)(DRMP3_HDR_GET_MY_SAMPLE_RATE(h->header) == 2); + + if (gr_info->n_short_sfb) + { + aa_bands = n_long_bands - 1; + drmp3_L3_reorder(s->grbuf[ch] + n_long_bands*18, s->syn[0], gr_info->sfbtab + gr_info->n_long_sfb); + } + + drmp3_L3_antialias(s->grbuf[ch], aa_bands); + drmp3_L3_imdct_gr(s->grbuf[ch], h->mdct_overlap[ch], gr_info->block_type, n_long_bands); + drmp3_L3_change_sign(s->grbuf[ch]); + } +} + +static void drmp3d_DCT_II(float *grbuf, int n) +{ + static const float g_sec[24] = { + 10.19000816f,0.50060302f,0.50241929f,3.40760851f,0.50547093f,0.52249861f,2.05778098f,0.51544732f,0.56694406f,1.48416460f,0.53104258f,0.64682180f,1.16943991f,0.55310392f,0.78815460f,0.97256821f,0.58293498f,1.06067765f,0.83934963f,0.62250412f,1.72244716f,0.74453628f,0.67480832f,5.10114861f + }; + int i, k = 0; +#if DRMP3_HAVE_SIMD + if (drmp3_have_simd()) for (; k < n; k += 4) + { + drmp3_f4 t[4][8], *x; + float *y = grbuf + k; + + for (x = t[0], i = 0; i < 8; i++, x++) + { + drmp3_f4 x0 = DRMP3_VLD(&y[i*18]); + drmp3_f4 x1 = DRMP3_VLD(&y[(15 - i)*18]); + drmp3_f4 x2 = DRMP3_VLD(&y[(16 + i)*18]); + drmp3_f4 x3 = DRMP3_VLD(&y[(31 - i)*18]); + drmp3_f4 t0 = DRMP3_VADD(x0, x3); + drmp3_f4 t1 = DRMP3_VADD(x1, x2); + drmp3_f4 t2 = DRMP3_VMUL_S(DRMP3_VSUB(x1, x2), g_sec[3*i + 0]); + drmp3_f4 t3 = DRMP3_VMUL_S(DRMP3_VSUB(x0, x3), g_sec[3*i + 1]); + x[0] = DRMP3_VADD(t0, t1); + x[8] = DRMP3_VMUL_S(DRMP3_VSUB(t0, t1), g_sec[3*i + 2]); + x[16] = DRMP3_VADD(t3, t2); + x[24] = DRMP3_VMUL_S(DRMP3_VSUB(t3, t2), g_sec[3*i + 2]); + } + for (x = t[0], i = 0; i < 4; i++, x += 8) + { + drmp3_f4 x0 = x[0], x1 = x[1], x2 = x[2], x3 = x[3], x4 = x[4], x5 = x[5], x6 = x[6], x7 = x[7], xt; + xt = DRMP3_VSUB(x0, x7); x0 = DRMP3_VADD(x0, x7); + x7 = DRMP3_VSUB(x1, x6); x1 = DRMP3_VADD(x1, x6); + x6 = DRMP3_VSUB(x2, x5); x2 = DRMP3_VADD(x2, x5); + x5 = DRMP3_VSUB(x3, x4); x3 = DRMP3_VADD(x3, x4); + x4 = DRMP3_VSUB(x0, x3); x0 = DRMP3_VADD(x0, x3); + x3 = DRMP3_VSUB(x1, x2); x1 = DRMP3_VADD(x1, x2); + x[0] = DRMP3_VADD(x0, x1); + x[4] = DRMP3_VMUL_S(DRMP3_VSUB(x0, x1), 0.70710677f); + x5 = DRMP3_VADD(x5, x6); + x6 = DRMP3_VMUL_S(DRMP3_VADD(x6, x7), 0.70710677f); + x7 = DRMP3_VADD(x7, xt); + x3 = DRMP3_VMUL_S(DRMP3_VADD(x3, x4), 0.70710677f); + x5 = DRMP3_VSUB(x5, DRMP3_VMUL_S(x7, 0.198912367f)); /* rotate by PI/8 */ + x7 = DRMP3_VADD(x7, DRMP3_VMUL_S(x5, 0.382683432f)); + x5 = DRMP3_VSUB(x5, DRMP3_VMUL_S(x7, 0.198912367f)); + x0 = DRMP3_VSUB(xt, x6); xt = DRMP3_VADD(xt, x6); + x[1] = DRMP3_VMUL_S(DRMP3_VADD(xt, x7), 0.50979561f); + x[2] = DRMP3_VMUL_S(DRMP3_VADD(x4, x3), 0.54119611f); + x[3] = DRMP3_VMUL_S(DRMP3_VSUB(x0, x5), 0.60134488f); + x[5] = DRMP3_VMUL_S(DRMP3_VADD(x0, x5), 0.89997619f); + x[6] = DRMP3_VMUL_S(DRMP3_VSUB(x4, x3), 1.30656302f); + x[7] = DRMP3_VMUL_S(DRMP3_VSUB(xt, x7), 2.56291556f); + } + + if (k > n - 3) + { +#if DRMP3_HAVE_SSE +#define DRMP3_VSAVE2(i, v) _mm_storel_pi((__m64 *)(void*)&y[i*18], v) +#else +#define DRMP3_VSAVE2(i, v) vst1_f32((float32_t *)&y[i*18], vget_low_f32(v)) +#endif + for (i = 0; i < 7; i++, y += 4*18) + { + drmp3_f4 s = DRMP3_VADD(t[3][i], t[3][i + 1]); + DRMP3_VSAVE2(0, t[0][i]); + DRMP3_VSAVE2(1, DRMP3_VADD(t[2][i], s)); + DRMP3_VSAVE2(2, DRMP3_VADD(t[1][i], t[1][i + 1])); + DRMP3_VSAVE2(3, DRMP3_VADD(t[2][1 + i], s)); + } + DRMP3_VSAVE2(0, t[0][7]); + DRMP3_VSAVE2(1, DRMP3_VADD(t[2][7], t[3][7])); + DRMP3_VSAVE2(2, t[1][7]); + DRMP3_VSAVE2(3, t[3][7]); + } else + { +#define DRMP3_VSAVE4(i, v) DRMP3_VSTORE(&y[i*18], v) + for (i = 0; i < 7; i++, y += 4*18) + { + drmp3_f4 s = DRMP3_VADD(t[3][i], t[3][i + 1]); + DRMP3_VSAVE4(0, t[0][i]); + DRMP3_VSAVE4(1, DRMP3_VADD(t[2][i], s)); + DRMP3_VSAVE4(2, DRMP3_VADD(t[1][i], t[1][i + 1])); + DRMP3_VSAVE4(3, DRMP3_VADD(t[2][1 + i], s)); + } + DRMP3_VSAVE4(0, t[0][7]); + DRMP3_VSAVE4(1, DRMP3_VADD(t[2][7], t[3][7])); + DRMP3_VSAVE4(2, t[1][7]); + DRMP3_VSAVE4(3, t[3][7]); + } + } else +#endif +#ifdef DR_MP3_ONLY_SIMD + {} +#else + for (; k < n; k++) + { + float t[4][8], *x, *y = grbuf + k; + + for (x = t[0], i = 0; i < 8; i++, x++) + { + float x0 = y[i*18]; + float x1 = y[(15 - i)*18]; + float x2 = y[(16 + i)*18]; + float x3 = y[(31 - i)*18]; + float t0 = x0 + x3; + float t1 = x1 + x2; + float t2 = (x1 - x2)*g_sec[3*i + 0]; + float t3 = (x0 - x3)*g_sec[3*i + 1]; + x[0] = t0 + t1; + x[8] = (t0 - t1)*g_sec[3*i + 2]; + x[16] = t3 + t2; + x[24] = (t3 - t2)*g_sec[3*i + 2]; + } + for (x = t[0], i = 0; i < 4; i++, x += 8) + { + float x0 = x[0], x1 = x[1], x2 = x[2], x3 = x[3], x4 = x[4], x5 = x[5], x6 = x[6], x7 = x[7], xt; + xt = x0 - x7; x0 += x7; + x7 = x1 - x6; x1 += x6; + x6 = x2 - x5; x2 += x5; + x5 = x3 - x4; x3 += x4; + x4 = x0 - x3; x0 += x3; + x3 = x1 - x2; x1 += x2; + x[0] = x0 + x1; + x[4] = (x0 - x1)*0.70710677f; + x5 = x5 + x6; + x6 = (x6 + x7)*0.70710677f; + x7 = x7 + xt; + x3 = (x3 + x4)*0.70710677f; + x5 -= x7*0.198912367f; /* rotate by PI/8 */ + x7 += x5*0.382683432f; + x5 -= x7*0.198912367f; + x0 = xt - x6; xt += x6; + x[1] = (xt + x7)*0.50979561f; + x[2] = (x4 + x3)*0.54119611f; + x[3] = (x0 - x5)*0.60134488f; + x[5] = (x0 + x5)*0.89997619f; + x[6] = (x4 - x3)*1.30656302f; + x[7] = (xt - x7)*2.56291556f; + + } + for (i = 0; i < 7; i++, y += 4*18) + { + y[0*18] = t[0][i]; + y[1*18] = t[2][i] + t[3][i] + t[3][i + 1]; + y[2*18] = t[1][i] + t[1][i + 1]; + y[3*18] = t[2][i + 1] + t[3][i] + t[3][i + 1]; + } + y[0*18] = t[0][7]; + y[1*18] = t[2][7] + t[3][7]; + y[2*18] = t[1][7]; + y[3*18] = t[3][7]; + } +#endif +} + +#ifndef DR_MP3_FLOAT_OUTPUT +typedef drmp3_int16 drmp3d_sample_t; + +static drmp3_int16 drmp3d_scale_pcm(float sample) +{ + if (sample >= 32766.5) return (drmp3_int16) 32767; + if (sample <= -32767.5) return (drmp3_int16)-32768; + drmp3_int16 s = (drmp3_int16)(sample + .5f); + s -= (s < 0); /* away from zero, to be compliant */ + return (drmp3_int16)s; +} +#else +typedef float drmp3d_sample_t; + +static float drmp3d_scale_pcm(float sample) +{ + return sample*(1.f/32768.f); +} +#endif + +static void drmp3d_synth_pair(drmp3d_sample_t *pcm, int nch, const float *z) +{ + float a; + a = (z[14*64] - z[ 0]) * 29; + a += (z[ 1*64] + z[13*64]) * 213; + a += (z[12*64] - z[ 2*64]) * 459; + a += (z[ 3*64] + z[11*64]) * 2037; + a += (z[10*64] - z[ 4*64]) * 5153; + a += (z[ 5*64] + z[ 9*64]) * 6574; + a += (z[ 8*64] - z[ 6*64]) * 37489; + a += z[ 7*64] * 75038; + pcm[0] = drmp3d_scale_pcm(a); + + z += 2; + a = z[14*64] * 104; + a += z[12*64] * 1567; + a += z[10*64] * 9727; + a += z[ 8*64] * 64019; + a += z[ 6*64] * -9975; + a += z[ 4*64] * -45; + a += z[ 2*64] * 146; + a += z[ 0*64] * -5; + pcm[16*nch] = drmp3d_scale_pcm(a); +} + +static void drmp3d_synth(float *xl, drmp3d_sample_t *dstl, int nch, float *lins) +{ + int i; + float *xr = xl + 576*(nch - 1); + drmp3d_sample_t *dstr = dstl + (nch - 1); + + static const float g_win[] = { + -1,26,-31,208,218,401,-519,2063,2000,4788,-5517,7134,5959,35640,-39336,74992, + -1,24,-35,202,222,347,-581,2080,1952,4425,-5879,7640,5288,33791,-41176,74856, + -1,21,-38,196,225,294,-645,2087,1893,4063,-6237,8092,4561,31947,-43006,74630, + -1,19,-41,190,227,244,-711,2085,1822,3705,-6589,8492,3776,30112,-44821,74313, + -1,17,-45,183,228,197,-779,2075,1739,3351,-6935,8840,2935,28289,-46617,73908, + -1,16,-49,176,228,153,-848,2057,1644,3004,-7271,9139,2037,26482,-48390,73415, + -2,14,-53,169,227,111,-919,2032,1535,2663,-7597,9389,1082,24694,-50137,72835, + -2,13,-58,161,224,72,-991,2001,1414,2330,-7910,9592,70,22929,-51853,72169, + -2,11,-63,154,221,36,-1064,1962,1280,2006,-8209,9750,-998,21189,-53534,71420, + -2,10,-68,147,215,2,-1137,1919,1131,1692,-8491,9863,-2122,19478,-55178,70590, + -3,9,-73,139,208,-29,-1210,1870,970,1388,-8755,9935,-3300,17799,-56778,69679, + -3,8,-79,132,200,-57,-1283,1817,794,1095,-8998,9966,-4533,16155,-58333,68692, + -4,7,-85,125,189,-83,-1356,1759,605,814,-9219,9959,-5818,14548,-59838,67629, + -4,7,-91,117,177,-106,-1428,1698,402,545,-9416,9916,-7154,12980,-61289,66494, + -5,6,-97,111,163,-127,-1498,1634,185,288,-9585,9838,-8540,11455,-62684,65290 + }; + float *zlin = lins + 15*64; + const float *w = g_win; + + zlin[4*15] = xl[18*16]; + zlin[4*15 + 1] = xr[18*16]; + zlin[4*15 + 2] = xl[0]; + zlin[4*15 + 3] = xr[0]; + + zlin[4*31] = xl[1 + 18*16]; + zlin[4*31 + 1] = xr[1 + 18*16]; + zlin[4*31 + 2] = xl[1]; + zlin[4*31 + 3] = xr[1]; + + drmp3d_synth_pair(dstr, nch, lins + 4*15 + 1); + drmp3d_synth_pair(dstr + 32*nch, nch, lins + 4*15 + 64 + 1); + drmp3d_synth_pair(dstl, nch, lins + 4*15); + drmp3d_synth_pair(dstl + 32*nch, nch, lins + 4*15 + 64); + +#if DRMP3_HAVE_SIMD + if (drmp3_have_simd()) for (i = 14; i >= 0; i--) + { +#define DRMP3_VLOAD(k) drmp3_f4 w0 = DRMP3_VSET(*w++); drmp3_f4 w1 = DRMP3_VSET(*w++); drmp3_f4 vz = DRMP3_VLD(&zlin[4*i - 64*k]); drmp3_f4 vy = DRMP3_VLD(&zlin[4*i - 64*(15 - k)]); +#define DRMP3_V0(k) { DRMP3_VLOAD(k) b = DRMP3_VADD(DRMP3_VMUL(vz, w1), DRMP3_VMUL(vy, w0)) ; a = DRMP3_VSUB(DRMP3_VMUL(vz, w0), DRMP3_VMUL(vy, w1)); } +#define DRMP3_V1(k) { DRMP3_VLOAD(k) b = DRMP3_VADD(b, DRMP3_VADD(DRMP3_VMUL(vz, w1), DRMP3_VMUL(vy, w0))); a = DRMP3_VADD(a, DRMP3_VSUB(DRMP3_VMUL(vz, w0), DRMP3_VMUL(vy, w1))); } +#define DRMP3_V2(k) { DRMP3_VLOAD(k) b = DRMP3_VADD(b, DRMP3_VADD(DRMP3_VMUL(vz, w1), DRMP3_VMUL(vy, w0))); a = DRMP3_VADD(a, DRMP3_VSUB(DRMP3_VMUL(vy, w1), DRMP3_VMUL(vz, w0))); } + drmp3_f4 a, b; + zlin[4*i] = xl[18*(31 - i)]; + zlin[4*i + 1] = xr[18*(31 - i)]; + zlin[4*i + 2] = xl[1 + 18*(31 - i)]; + zlin[4*i + 3] = xr[1 + 18*(31 - i)]; + zlin[4*i + 64] = xl[1 + 18*(1 + i)]; + zlin[4*i + 64 + 1] = xr[1 + 18*(1 + i)]; + zlin[4*i - 64 + 2] = xl[18*(1 + i)]; + zlin[4*i - 64 + 3] = xr[18*(1 + i)]; + + DRMP3_V0(0) DRMP3_V2(1) DRMP3_V1(2) DRMP3_V2(3) DRMP3_V1(4) DRMP3_V2(5) DRMP3_V1(6) DRMP3_V2(7) + + { +#ifndef DR_MP3_FLOAT_OUTPUT +#if DRMP3_HAVE_SSE + static const drmp3_f4 g_max = { 32767.0f, 32767.0f, 32767.0f, 32767.0f }; + static const drmp3_f4 g_min = { -32768.0f, -32768.0f, -32768.0f, -32768.0f }; + __m128i pcm8 = _mm_packs_epi32(_mm_cvtps_epi32(_mm_max_ps(_mm_min_ps(a, g_max), g_min)), + _mm_cvtps_epi32(_mm_max_ps(_mm_min_ps(b, g_max), g_min))); + dstr[(15 - i)*nch] = (drmp3_int16)_mm_extract_epi16(pcm8, 1); + dstr[(17 + i)*nch] = (drmp3_int16)_mm_extract_epi16(pcm8, 5); + dstl[(15 - i)*nch] = (drmp3_int16)_mm_extract_epi16(pcm8, 0); + dstl[(17 + i)*nch] = (drmp3_int16)_mm_extract_epi16(pcm8, 4); + dstr[(47 - i)*nch] = (drmp3_int16)_mm_extract_epi16(pcm8, 3); + dstr[(49 + i)*nch] = (drmp3_int16)_mm_extract_epi16(pcm8, 7); + dstl[(47 - i)*nch] = (drmp3_int16)_mm_extract_epi16(pcm8, 2); + dstl[(49 + i)*nch] = (drmp3_int16)_mm_extract_epi16(pcm8, 6); +#else + int16x4_t pcma, pcmb; + a = DRMP3_VADD(a, DRMP3_VSET(0.5f)); + b = DRMP3_VADD(b, DRMP3_VSET(0.5f)); + pcma = vqmovn_s32(vqaddq_s32(vcvtq_s32_f32(a), vreinterpretq_s32_u32(vcltq_f32(a, DRMP3_VSET(0))))); + pcmb = vqmovn_s32(vqaddq_s32(vcvtq_s32_f32(b), vreinterpretq_s32_u32(vcltq_f32(b, DRMP3_VSET(0))))); + vst1_lane_s16(dstr + (15 - i)*nch, pcma, 1); + vst1_lane_s16(dstr + (17 + i)*nch, pcmb, 1); + vst1_lane_s16(dstl + (15 - i)*nch, pcma, 0); + vst1_lane_s16(dstl + (17 + i)*nch, pcmb, 0); + vst1_lane_s16(dstr + (47 - i)*nch, pcma, 3); + vst1_lane_s16(dstr + (49 + i)*nch, pcmb, 3); + vst1_lane_s16(dstl + (47 - i)*nch, pcma, 2); + vst1_lane_s16(dstl + (49 + i)*nch, pcmb, 2); +#endif +#else + static const drmp3_f4 g_scale = { 1.0f/32768.0f, 1.0f/32768.0f, 1.0f/32768.0f, 1.0f/32768.0f }; + a = DRMP3_VMUL(a, g_scale); + b = DRMP3_VMUL(b, g_scale); +#if DRMP3_HAVE_SSE + _mm_store_ss(dstr + (15 - i)*nch, _mm_shuffle_ps(a, a, _MM_SHUFFLE(1, 1, 1, 1))); + _mm_store_ss(dstr + (17 + i)*nch, _mm_shuffle_ps(b, b, _MM_SHUFFLE(1, 1, 1, 1))); + _mm_store_ss(dstl + (15 - i)*nch, _mm_shuffle_ps(a, a, _MM_SHUFFLE(0, 0, 0, 0))); + _mm_store_ss(dstl + (17 + i)*nch, _mm_shuffle_ps(b, b, _MM_SHUFFLE(0, 0, 0, 0))); + _mm_store_ss(dstr + (47 - i)*nch, _mm_shuffle_ps(a, a, _MM_SHUFFLE(3, 3, 3, 3))); + _mm_store_ss(dstr + (49 + i)*nch, _mm_shuffle_ps(b, b, _MM_SHUFFLE(3, 3, 3, 3))); + _mm_store_ss(dstl + (47 - i)*nch, _mm_shuffle_ps(a, a, _MM_SHUFFLE(2, 2, 2, 2))); + _mm_store_ss(dstl + (49 + i)*nch, _mm_shuffle_ps(b, b, _MM_SHUFFLE(2, 2, 2, 2))); +#else + vst1q_lane_f32(dstr + (15 - i)*nch, a, 1); + vst1q_lane_f32(dstr + (17 + i)*nch, b, 1); + vst1q_lane_f32(dstl + (15 - i)*nch, a, 0); + vst1q_lane_f32(dstl + (17 + i)*nch, b, 0); + vst1q_lane_f32(dstr + (47 - i)*nch, a, 3); + vst1q_lane_f32(dstr + (49 + i)*nch, b, 3); + vst1q_lane_f32(dstl + (47 - i)*nch, a, 2); + vst1q_lane_f32(dstl + (49 + i)*nch, b, 2); +#endif +#endif /* DR_MP3_FLOAT_OUTPUT */ + } + } else +#endif +#ifdef DR_MP3_ONLY_SIMD + {} +#else + for (i = 14; i >= 0; i--) + { +#define DRMP3_LOAD(k) float w0 = *w++; float w1 = *w++; float *vz = &zlin[4*i - k*64]; float *vy = &zlin[4*i - (15 - k)*64]; +#define DRMP3_S0(k) { int j; DRMP3_LOAD(k); for (j = 0; j < 4; j++) b[j] = vz[j]*w1 + vy[j]*w0, a[j] = vz[j]*w0 - vy[j]*w1; } +#define DRMP3_S1(k) { int j; DRMP3_LOAD(k); for (j = 0; j < 4; j++) b[j] += vz[j]*w1 + vy[j]*w0, a[j] += vz[j]*w0 - vy[j]*w1; } +#define DRMP3_S2(k) { int j; DRMP3_LOAD(k); for (j = 0; j < 4; j++) b[j] += vz[j]*w1 + vy[j]*w0, a[j] += vy[j]*w1 - vz[j]*w0; } + float a[4], b[4]; + + zlin[4*i] = xl[18*(31 - i)]; + zlin[4*i + 1] = xr[18*(31 - i)]; + zlin[4*i + 2] = xl[1 + 18*(31 - i)]; + zlin[4*i + 3] = xr[1 + 18*(31 - i)]; + zlin[4*(i + 16)] = xl[1 + 18*(1 + i)]; + zlin[4*(i + 16) + 1] = xr[1 + 18*(1 + i)]; + zlin[4*(i - 16) + 2] = xl[18*(1 + i)]; + zlin[4*(i - 16) + 3] = xr[18*(1 + i)]; + + DRMP3_S0(0) DRMP3_S2(1) DRMP3_S1(2) DRMP3_S2(3) DRMP3_S1(4) DRMP3_S2(5) DRMP3_S1(6) DRMP3_S2(7) + + dstr[(15 - i)*nch] = drmp3d_scale_pcm(a[1]); + dstr[(17 + i)*nch] = drmp3d_scale_pcm(b[1]); + dstl[(15 - i)*nch] = drmp3d_scale_pcm(a[0]); + dstl[(17 + i)*nch] = drmp3d_scale_pcm(b[0]); + dstr[(47 - i)*nch] = drmp3d_scale_pcm(a[3]); + dstr[(49 + i)*nch] = drmp3d_scale_pcm(b[3]); + dstl[(47 - i)*nch] = drmp3d_scale_pcm(a[2]); + dstl[(49 + i)*nch] = drmp3d_scale_pcm(b[2]); + } +#endif +} + +static void drmp3d_synth_granule(float *qmf_state, float *grbuf, int nbands, int nch, drmp3d_sample_t *pcm, float *lins) +{ + int i; + for (i = 0; i < nch; i++) + { + drmp3d_DCT_II(grbuf + 576*i, nbands); + } + + memcpy(lins, qmf_state, sizeof(float)*15*64); + + for (i = 0; i < nbands; i += 2) + { + drmp3d_synth(grbuf + i, pcm + 32*nch*i, nch, lins + i*64); + } +#ifndef DR_MP3_NONSTANDARD_BUT_LOGICAL + if (nch == 1) + { + for (i = 0; i < 15*64; i += 2) + { + qmf_state[i] = lins[nbands*64 + i]; + } + } else +#endif + { + memcpy(qmf_state, lins + nbands*64, sizeof(float)*15*64); + } +} + +static int drmp3d_match_frame(const drmp3_uint8 *hdr, int mp3_bytes, int frame_bytes) +{ + int i, nmatch; + for (i = 0, nmatch = 0; nmatch < DRMP3_MAX_FRAME_SYNC_MATCHES; nmatch++) + { + i += drmp3_hdr_frame_bytes(hdr + i, frame_bytes) + drmp3_hdr_padding(hdr + i); + if (i + DRMP3_HDR_SIZE > mp3_bytes) + return nmatch > 0; + if (!drmp3_hdr_compare(hdr, hdr + i)) + return 0; + } + return 1; +} + +static int drmp3d_find_frame(const drmp3_uint8 *mp3, int mp3_bytes, int *free_format_bytes, int *ptr_frame_bytes) +{ + int i, k; + for (i = 0; i < mp3_bytes - DRMP3_HDR_SIZE; i++, mp3++) + { + if (drmp3_hdr_valid(mp3)) + { + int frame_bytes = drmp3_hdr_frame_bytes(mp3, *free_format_bytes); + int frame_and_padding = frame_bytes + drmp3_hdr_padding(mp3); + + for (k = DRMP3_HDR_SIZE; !frame_bytes && k < DRMP3_MAX_FREE_FORMAT_FRAME_SIZE && i + 2*k < mp3_bytes - DRMP3_HDR_SIZE; k++) + { + if (drmp3_hdr_compare(mp3, mp3 + k)) + { + int fb = k - drmp3_hdr_padding(mp3); + int nextfb = fb + drmp3_hdr_padding(mp3 + k); + if (i + k + nextfb + DRMP3_HDR_SIZE > mp3_bytes || !drmp3_hdr_compare(mp3, mp3 + k + nextfb)) + continue; + frame_and_padding = k; + frame_bytes = fb; + *free_format_bytes = fb; + } + } + + if ((frame_bytes && i + frame_and_padding <= mp3_bytes && + drmp3d_match_frame(mp3, mp3_bytes - i, frame_bytes)) || + (!i && frame_and_padding == mp3_bytes)) + { + *ptr_frame_bytes = frame_and_padding; + return i; + } + *free_format_bytes = 0; + } + } + *ptr_frame_bytes = 0; + return i; +} + +void drmp3dec_init(drmp3dec *dec) +{ + dec->header[0] = 0; +} + +int drmp3dec_decode_frame(drmp3dec *dec, const unsigned char *mp3, int mp3_bytes, void *pcm, drmp3dec_frame_info *info) +{ + int i = 0, igr, frame_size = 0, success = 1; + const drmp3_uint8 *hdr; + drmp3_bs bs_frame[1]; + drmp3dec_scratch scratch; + + if (mp3_bytes > 4 && dec->header[0] == 0xff && drmp3_hdr_compare(dec->header, mp3)) + { + frame_size = drmp3_hdr_frame_bytes(mp3, dec->free_format_bytes) + drmp3_hdr_padding(mp3); + if (frame_size != mp3_bytes && (frame_size + DRMP3_HDR_SIZE > mp3_bytes || !drmp3_hdr_compare(mp3, mp3 + frame_size))) + { + frame_size = 0; + } + } + if (!frame_size) + { + memset(dec, 0, sizeof(drmp3dec)); + i = drmp3d_find_frame(mp3, mp3_bytes, &dec->free_format_bytes, &frame_size); + if (!frame_size || i + frame_size > mp3_bytes) + { + info->frame_bytes = i; + return 0; + } + } + + hdr = mp3 + i; + memcpy(dec->header, hdr, DRMP3_HDR_SIZE); + info->frame_bytes = i + frame_size; + info->channels = DRMP3_HDR_IS_MONO(hdr) ? 1 : 2; + info->hz = drmp3_hdr_sample_rate_hz(hdr); + info->layer = 4 - DRMP3_HDR_GET_LAYER(hdr); + info->bitrate_kbps = drmp3_hdr_bitrate_kbps(hdr); + + if (!pcm) + { + return drmp3_hdr_frame_samples(hdr); + } + + drmp3_bs_init(bs_frame, hdr + DRMP3_HDR_SIZE, frame_size - DRMP3_HDR_SIZE); + if (DRMP3_HDR_IS_CRC(hdr)) + { + drmp3_bs_get_bits(bs_frame, 16); + } + + if (info->layer == 3) + { + int main_data_begin = drmp3_L3_read_side_info(bs_frame, scratch.gr_info, hdr); + if (main_data_begin < 0 || bs_frame->pos > bs_frame->limit) + { + drmp3dec_init(dec); + return 0; + } + success = drmp3_L3_restore_reservoir(dec, bs_frame, &scratch, main_data_begin); + if (success) + { + for (igr = 0; igr < (DRMP3_HDR_TEST_MPEG1(hdr) ? 2 : 1); igr++, pcm = DRMP3_OFFSET_PTR(pcm, sizeof(drmp3d_sample_t)*576*info->channels)) + { + memset(scratch.grbuf[0], 0, 576*2*sizeof(float)); + drmp3_L3_decode(dec, &scratch, scratch.gr_info + igr*info->channels, info->channels); + drmp3d_synth_granule(dec->qmf_state, scratch.grbuf[0], 18, info->channels, (drmp3d_sample_t*)pcm, scratch.syn[0]); + } + } + drmp3_L3_save_reservoir(dec, &scratch); + } else + { +#ifdef DR_MP3_ONLY_MP3 + return 0; +#else + drmp3_L12_scale_info sci[1]; + drmp3_L12_read_scale_info(hdr, bs_frame, sci); + + memset(scratch.grbuf[0], 0, 576*2*sizeof(float)); + for (i = 0, igr = 0; igr < 3; igr++) + { + if (12 == (i += drmp3_L12_dequantize_granule(scratch.grbuf[0] + i, bs_frame, sci, info->layer | 1))) + { + i = 0; + drmp3_L12_apply_scf_384(sci, sci->scf + igr, scratch.grbuf[0]); + drmp3d_synth_granule(dec->qmf_state, scratch.grbuf[0], 12, info->channels, (drmp3d_sample_t*)pcm, scratch.syn[0]); + memset(scratch.grbuf[0], 0, 576*2*sizeof(float)); + pcm = DRMP3_OFFSET_PTR(pcm, sizeof(drmp3d_sample_t)*384*info->channels); + } + if (bs_frame->pos > bs_frame->limit) + { + drmp3dec_init(dec); + return 0; + } + } +#endif + } + return success*drmp3_hdr_frame_samples(dec->header); +} + +void drmp3dec_f32_to_s16(const float *in, drmp3_int16 *out, int num_samples) +{ + if(num_samples > 0) + { + int i = 0; +#if DRMP3_HAVE_SIMD + int aligned_count = num_samples & ~7; + for(; i < aligned_count; i+=8) + { + static const drmp3_f4 g_scale = { 32768.0f, 32768.0f, 32768.0f, 32768.0f }; + drmp3_f4 a = DRMP3_VMUL(DRMP3_VLD(&in[i ]), g_scale); + drmp3_f4 b = DRMP3_VMUL(DRMP3_VLD(&in[i+4]), g_scale); +#if DRMP3_HAVE_SSE + static const drmp3_f4 g_max = { 32767.0f, 32767.0f, 32767.0f, 32767.0f }; + static const drmp3_f4 g_min = { -32768.0f, -32768.0f, -32768.0f, -32768.0f }; + __m128i pcm8 = _mm_packs_epi32(_mm_cvtps_epi32(_mm_max_ps(_mm_min_ps(a, g_max), g_min)), + _mm_cvtps_epi32(_mm_max_ps(_mm_min_ps(b, g_max), g_min))); + out[i ] = (drmp3_int16)_mm_extract_epi16(pcm8, 0); + out[i+1] = (drmp3_int16)_mm_extract_epi16(pcm8, 1); + out[i+2] = (drmp3_int16)_mm_extract_epi16(pcm8, 2); + out[i+3] = (drmp3_int16)_mm_extract_epi16(pcm8, 3); + out[i+4] = (drmp3_int16)_mm_extract_epi16(pcm8, 4); + out[i+5] = (drmp3_int16)_mm_extract_epi16(pcm8, 5); + out[i+6] = (drmp3_int16)_mm_extract_epi16(pcm8, 6); + out[i+7] = (drmp3_int16)_mm_extract_epi16(pcm8, 7); +#else + int16x4_t pcma, pcmb; + a = DRMP3_VADD(a, DRMP3_VSET(0.5f)); + b = DRMP3_VADD(b, DRMP3_VSET(0.5f)); + pcma = vqmovn_s32(vqaddq_s32(vcvtq_s32_f32(a), vreinterpretq_s32_u32(vcltq_f32(a, DRMP3_VSET(0))))); + pcmb = vqmovn_s32(vqaddq_s32(vcvtq_s32_f32(b), vreinterpretq_s32_u32(vcltq_f32(b, DRMP3_VSET(0))))); + vst1_lane_s16(out+i , pcma, 0); + vst1_lane_s16(out+i+1, pcma, 1); + vst1_lane_s16(out+i+2, pcma, 2); + vst1_lane_s16(out+i+3, pcma, 3); + vst1_lane_s16(out+i+4, pcmb, 0); + vst1_lane_s16(out+i+5, pcmb, 1); + vst1_lane_s16(out+i+6, pcmb, 2); + vst1_lane_s16(out+i+7, pcmb, 3); +#endif + } +#endif + for(; i < num_samples; i++) + { + float sample = in[i] * 32768.0f; + if (sample >= 32766.5) + out[i] = (drmp3_int16) 32767; + else if (sample <= -32767.5) + out[i] = (drmp3_int16)-32768; + else + { + short s = (drmp3_int16)(sample + .5f); + s -= (s < 0); /* away from zero, to be compliant */ + out[i] = s; + } + } + } +} + + + +/////////////////////////////////////////////////////////////////////////////// +// +// Main Public API +// +/////////////////////////////////////////////////////////////////////////////// + +#if defined(SIZE_MAX) + #define DRMP3_SIZE_MAX SIZE_MAX +#else + #if defined(_WIN64) || defined(_LP64) || defined(__LP64__) + #define DRMP3_SIZE_MAX ((drmp3_uint64)0xFFFFFFFFFFFFFFFF) + #else + #define DRMP3_SIZE_MAX 0xFFFFFFFF + #endif +#endif + +// Options. +#ifndef DR_MP3_DEFAULT_CHANNELS +#define DR_MP3_DEFAULT_CHANNELS 2 +#endif +#ifndef DR_MP3_DEFAULT_SAMPLE_RATE +#define DR_MP3_DEFAULT_SAMPLE_RATE 44100 +#endif + + +// Standard library stuff. +#ifndef DRMP3_ASSERT +#include +#define DRMP3_ASSERT(expression) assert(expression) +#endif +#ifndef DRMP3_COPY_MEMORY +#define DRMP3_COPY_MEMORY(dst, src, sz) memcpy((dst), (src), (sz)) +#endif +#ifndef DRMP3_ZERO_MEMORY +#define DRMP3_ZERO_MEMORY(p, sz) memset((p), 0, (sz)) +#endif +#define DRMP3_ZERO_OBJECT(p) DRMP3_ZERO_MEMORY((p), sizeof(*(p))) +#ifndef DRMP3_MALLOC +#define DRMP3_MALLOC(sz) malloc((sz)) +#endif +#ifndef DRMP3_REALLOC +#define DRMP3_REALLOC(p, sz) realloc((p), (sz)) +#endif +#ifndef DRMP3_FREE +#define DRMP3_FREE(p) free((p)) +#endif + +#define drmp3_assert DRMP3_ASSERT +#define drmp3_copy_memory DRMP3_COPY_MEMORY +#define drmp3_zero_memory DRMP3_ZERO_MEMORY +#define drmp3_zero_object DRMP3_ZERO_OBJECT +#define drmp3_malloc DRMP3_MALLOC +#define drmp3_realloc DRMP3_REALLOC + +#define drmp3_countof(x) (sizeof(x) / sizeof(x[0])) +#define drmp3_max(x, y) (((x) > (y)) ? (x) : (y)) +#define drmp3_min(x, y) (((x) < (y)) ? (x) : (y)) + +#define DRMP3_DATA_CHUNK_SIZE 16384 // The size in bytes of each chunk of data to read from the MP3 stream. minimp3 recommends 16K. + +static inline float drmp3_mix_f32(float x, float y, float a) +{ + return x*(1-a) + y*a; +} + +static void drmp3_blend_f32(float* pOut, float* pInA, float* pInB, float factor, drmp3_uint32 channels) +{ + for (drmp3_uint32 i = 0; i < channels; ++i) { + pOut[i] = drmp3_mix_f32(pInA[i], pInB[i], factor); + } +} + +void drmp3_src_cache_init(drmp3_src* pSRC, drmp3_src_cache* pCache) +{ + drmp3_assert(pSRC != NULL); + drmp3_assert(pCache != NULL); + + pCache->pSRC = pSRC; + pCache->cachedFrameCount = 0; + pCache->iNextFrame = 0; +} + +drmp3_uint64 drmp3_src_cache_read_frames(drmp3_src_cache* pCache, drmp3_uint64 frameCount, float* pFramesOut) +{ + drmp3_assert(pCache != NULL); + drmp3_assert(pCache->pSRC != NULL); + drmp3_assert(pCache->pSRC->onRead != NULL); + drmp3_assert(frameCount > 0); + drmp3_assert(pFramesOut != NULL); + + drmp3_uint32 channels = pCache->pSRC->config.channels; + + drmp3_uint64 totalFramesRead = 0; + while (frameCount > 0) { + // If there's anything in memory go ahead and copy that over first. + drmp3_uint64 framesRemainingInMemory = pCache->cachedFrameCount - pCache->iNextFrame; + drmp3_uint64 framesToReadFromMemory = frameCount; + if (framesToReadFromMemory > framesRemainingInMemory) { + framesToReadFromMemory = framesRemainingInMemory; + } + + drmp3_copy_memory(pFramesOut, pCache->pCachedFrames + pCache->iNextFrame*channels, (drmp3_uint32)(framesToReadFromMemory * channels * sizeof(float))); + pCache->iNextFrame += (drmp3_uint32)framesToReadFromMemory; + + totalFramesRead += framesToReadFromMemory; + frameCount -= framesToReadFromMemory; + if (frameCount == 0) { + break; + } + + + // At this point there are still more frames to read from the client, so we'll need to reload the cache with fresh data. + drmp3_assert(frameCount > 0); + pFramesOut += framesToReadFromMemory * channels; + + pCache->iNextFrame = 0; + pCache->cachedFrameCount = 0; + + drmp3_uint32 framesToReadFromClient = drmp3_countof(pCache->pCachedFrames) / pCache->pSRC->config.channels; + if (framesToReadFromClient > pCache->pSRC->config.cacheSizeInFrames) { + framesToReadFromClient = pCache->pSRC->config.cacheSizeInFrames; + } + + pCache->cachedFrameCount = (drmp3_uint32)pCache->pSRC->onRead(pCache->pSRC, framesToReadFromClient, pCache->pCachedFrames, pCache->pSRC->pUserData); + + + // Get out of this loop if nothing was able to be retrieved. + if (pCache->cachedFrameCount == 0) { + break; + } + } + + return totalFramesRead; +} + + +drmp3_uint64 drmp3_src_read_frames_passthrough(drmp3_src* pSRC, drmp3_uint64 frameCount, void* pFramesOut, drmp3_bool32 flush); +drmp3_uint64 drmp3_src_read_frames_linear(drmp3_src* pSRC, drmp3_uint64 frameCount, void* pFramesOut, drmp3_bool32 flush); + +drmp3_bool32 drmp3_src_init(const drmp3_src_config* pConfig, drmp3_src_read_proc onRead, void* pUserData, drmp3_src* pSRC) +{ + if (pSRC == NULL) return DRMP3_FALSE; + drmp3_zero_object(pSRC); + + if (pConfig == NULL || onRead == NULL) return DRMP3_FALSE; + if (pConfig->channels == 0 || pConfig->channels > 2) return DRMP3_FALSE; + + pSRC->config = *pConfig; + pSRC->onRead = onRead; + pSRC->pUserData = pUserData; + + if (pSRC->config.cacheSizeInFrames > DRMP3_SRC_CACHE_SIZE_IN_FRAMES || pSRC->config.cacheSizeInFrames == 0) { + pSRC->config.cacheSizeInFrames = DRMP3_SRC_CACHE_SIZE_IN_FRAMES; + } + + drmp3_src_cache_init(pSRC, &pSRC->cache); + return DRMP3_TRUE; +} + +drmp3_bool32 drmp3_src_set_input_sample_rate(drmp3_src* pSRC, drmp3_uint32 sampleRateIn) +{ + if (pSRC == NULL) return DRMP3_FALSE; + + // Must have a sample rate of > 0. + if (sampleRateIn == 0) { + return DRMP3_FALSE; + } + + pSRC->config.sampleRateIn = sampleRateIn; + return DRMP3_TRUE; +} + +drmp3_bool32 drmp3_src_set_output_sample_rate(drmp3_src* pSRC, drmp3_uint32 sampleRateOut) +{ + if (pSRC == NULL) return DRMP3_FALSE; + + // Must have a sample rate of > 0. + if (sampleRateOut == 0) { + return DRMP3_FALSE; + } + + pSRC->config.sampleRateOut = sampleRateOut; + return DRMP3_TRUE; +} + +drmp3_uint64 drmp3_src_read_frames_ex(drmp3_src* pSRC, drmp3_uint64 frameCount, void* pFramesOut, drmp3_bool32 flush) +{ + if (pSRC == NULL || frameCount == 0 || pFramesOut == NULL) return 0; + + drmp3_src_algorithm algorithm = pSRC->config.algorithm; + + // Always use passthrough if the sample rates are the same. + if (pSRC->config.sampleRateIn == pSRC->config.sampleRateOut) { + algorithm = drmp3_src_algorithm_none; + } + + // Could just use a function pointer instead of a switch for this... + switch (algorithm) + { + case drmp3_src_algorithm_none: return drmp3_src_read_frames_passthrough(pSRC, frameCount, pFramesOut, flush); + case drmp3_src_algorithm_linear: return drmp3_src_read_frames_linear(pSRC, frameCount, pFramesOut, flush); + default: return 0; + } +} + +drmp3_uint64 drmp3_src_read_frames(drmp3_src* pSRC, drmp3_uint64 frameCount, void* pFramesOut) +{ + return drmp3_src_read_frames_ex(pSRC, frameCount, pFramesOut, DRMP3_FALSE); +} + +drmp3_uint64 drmp3_src_read_frames_passthrough(drmp3_src* pSRC, drmp3_uint64 frameCount, void* pFramesOut, drmp3_bool32 flush) +{ + drmp3_assert(pSRC != NULL); + drmp3_assert(frameCount > 0); + drmp3_assert(pFramesOut != NULL); + + (void)flush; // Passthrough need not care about flushing. + return pSRC->onRead(pSRC, frameCount, pFramesOut, pSRC->pUserData); +} + +drmp3_uint64 drmp3_src_read_frames_linear(drmp3_src* pSRC, drmp3_uint64 frameCount, void* pFramesOut, drmp3_bool32 flush) +{ + drmp3_assert(pSRC != NULL); + drmp3_assert(frameCount > 0); + drmp3_assert(pFramesOut != NULL); + + // For linear SRC, the bin is only 2 frames: 1 prior, 1 future. + + // Load the bin if necessary. + if (!pSRC->algo.linear.isPrevFramesLoaded) { + drmp3_uint64 framesRead = drmp3_src_cache_read_frames(&pSRC->cache, 1, pSRC->bin); + if (framesRead == 0) { + return 0; + } + pSRC->algo.linear.isPrevFramesLoaded = DRMP3_TRUE; + } + if (!pSRC->algo.linear.isNextFramesLoaded) { + drmp3_uint64 framesRead = drmp3_src_cache_read_frames(&pSRC->cache, 1, pSRC->bin + pSRC->config.channels); + if (framesRead == 0) { + return 0; + } + pSRC->algo.linear.isNextFramesLoaded = DRMP3_TRUE; + } + + float factor = (float)pSRC->config.sampleRateIn / pSRC->config.sampleRateOut; + + drmp3_uint64 totalFramesRead = 0; + while (frameCount > 0) { + // The bin is where the previous and next frames are located. + float* pPrevFrame = pSRC->bin; + float* pNextFrame = pSRC->bin + pSRC->config.channels; + + drmp3_blend_f32((float*)pFramesOut, pPrevFrame, pNextFrame, pSRC->algo.linear.alpha, pSRC->config.channels); + + pSRC->algo.linear.alpha += factor; + + // The new alpha value is how we determine whether or not we need to read fresh frames. + drmp3_uint32 framesToReadFromClient = (drmp3_uint32)pSRC->algo.linear.alpha; + pSRC->algo.linear.alpha = pSRC->algo.linear.alpha - framesToReadFromClient; + + for (drmp3_uint32 i = 0; i < framesToReadFromClient; ++i) { + for (drmp3_uint32 j = 0; j < pSRC->config.channels; ++j) { + pPrevFrame[j] = pNextFrame[j]; + } + + drmp3_uint64 framesRead = drmp3_src_cache_read_frames(&pSRC->cache, 1, pNextFrame); + if (framesRead == 0) { + for (drmp3_uint32 j = 0; j < pSRC->config.channels; ++j) { + pNextFrame[j] = 0; + } + + if (pSRC->algo.linear.isNextFramesLoaded) { + pSRC->algo.linear.isNextFramesLoaded = DRMP3_FALSE; + } else { + if (flush) { + pSRC->algo.linear.isPrevFramesLoaded = DRMP3_FALSE; + } + } + + break; + } + } + + pFramesOut = (drmp3_uint8*)pFramesOut + (1 * pSRC->config.channels * sizeof(float)); + frameCount -= 1; + totalFramesRead += 1; + + // If there's no frames available we need to get out of this loop. + if (!pSRC->algo.linear.isNextFramesLoaded && (!flush || !pSRC->algo.linear.isPrevFramesLoaded)) { + break; + } + } + + return totalFramesRead; +} + + +static size_t drmp3__on_read(drmp3* pMP3, void* pBufferOut, size_t bytesToRead) +{ + return pMP3->onRead(pMP3->pUserData, pBufferOut, bytesToRead); +} + +static drmp3_bool32 drmp3__on_seek(drmp3* pMP3, int offset, drmp3_seek_origin origin) +{ + drmp3_assert(offset >= 0); + return pMP3->onSeek(pMP3->pUserData, offset, origin); +} + + +static drmp3_uint32 drmp3_decode_next_frame_ex(drmp3* pMP3, drmp3d_sample_t* pPCMFrames) +{ + drmp3_assert(pMP3 != NULL); + drmp3_assert(pMP3->onRead != NULL); + + if (pMP3->atEnd) { + return 0; + } + + drmp3_uint32 pcmFramesRead = 0; + do { + // minimp3 recommends doing data submission in 16K chunks. If we don't have at least 16K bytes available, get more. + if (pMP3->dataSize < DRMP3_DATA_CHUNK_SIZE) { + if (pMP3->dataCapacity < DRMP3_DATA_CHUNK_SIZE) { + pMP3->dataCapacity = DRMP3_DATA_CHUNK_SIZE; + drmp3_uint8* pNewData = (drmp3_uint8*)drmp3_realloc(pMP3->pData, pMP3->dataCapacity); + if (pNewData == NULL) { + return 0; // Out of memory. + } + + pMP3->pData = pNewData; + } + + size_t bytesRead = drmp3__on_read(pMP3, pMP3->pData + pMP3->dataSize, (pMP3->dataCapacity - pMP3->dataSize)); + if (bytesRead == 0) { + if (pMP3->dataSize == 0) { + pMP3->atEnd = DRMP3_TRUE; + return 0; // No data. + } + } + + pMP3->dataSize += bytesRead; + } + + if (pMP3->dataSize > INT_MAX) { + pMP3->atEnd = DRMP3_TRUE; + return 0; // File too big. + } + + drmp3dec_frame_info info; + pcmFramesRead = drmp3dec_decode_frame(&pMP3->decoder, pMP3->pData, (int)pMP3->dataSize, pPCMFrames, &info); // <-- Safe size_t -> int conversion thanks to the check above. + if (pcmFramesRead != 0) { + size_t leftoverDataSize = (pMP3->dataSize - (size_t)info.frame_bytes); + for (size_t i = 0; i < leftoverDataSize; ++i) { + pMP3->pData[i] = pMP3->pData[i + (size_t)info.frame_bytes]; + } + + pMP3->dataSize = leftoverDataSize; + pMP3->pcmFramesConsumedInMP3Frame = 0; + pMP3->pcmFramesRemainingInMP3Frame = pcmFramesRead; + pMP3->mp3FrameChannels = info.channels; + pMP3->mp3FrameSampleRate = info.hz; + drmp3_src_set_input_sample_rate(&pMP3->src, pMP3->mp3FrameSampleRate); + break; + } else { + // Need more data. minimp3 recommends doing data submission in 16K chunks. + if (pMP3->dataCapacity == pMP3->dataSize) { + // No room. Expand. + pMP3->dataCapacity += DRMP3_DATA_CHUNK_SIZE; + drmp3_uint8* pNewData = (drmp3_uint8*)drmp3_realloc(pMP3->pData, pMP3->dataCapacity); + if (pNewData == NULL) { + return 0; // Out of memory. + } + + pMP3->pData = pNewData; + } + + // Fill in a chunk. + size_t bytesRead = drmp3__on_read(pMP3, pMP3->pData + pMP3->dataSize, (pMP3->dataCapacity - pMP3->dataSize)); + if (bytesRead == 0) { + pMP3->atEnd = DRMP3_TRUE; + return 0; // Error reading more data. + } + + pMP3->dataSize += bytesRead; + } + } while (DRMP3_TRUE); + + return pcmFramesRead; +} + +static drmp3_uint32 drmp3_decode_next_frame(drmp3* pMP3) +{ + drmp3_assert(pMP3 != NULL); + return drmp3_decode_next_frame_ex(pMP3, (drmp3d_sample_t*)pMP3->pcmFrames); +} + +static drmp3_uint32 drmp3_seek_next_frame(drmp3* pMP3) +{ + drmp3_assert(pMP3 != NULL); + + drmp3_uint32 pcmFrameCount = drmp3_decode_next_frame_ex(pMP3, NULL); + if (pcmFrameCount == 0) { + return 0; + } + + // We have essentially just skipped past the frame, so just set the remaining samples to 0. + pMP3->currentPCMFrame += pcmFrameCount; + pMP3->pcmFramesConsumedInMP3Frame = pcmFrameCount; + pMP3->pcmFramesRemainingInMP3Frame = 0; + + return pcmFrameCount; +} + +static drmp3_uint64 drmp3_read_src(drmp3_src* pSRC, drmp3_uint64 frameCount, void* pFramesOut, void* pUserData) +{ + drmp3* pMP3 = (drmp3*)pUserData; + drmp3_assert(pMP3 != NULL); + drmp3_assert(pMP3->onRead != NULL); + + float* pFramesOutF = (float*)pFramesOut; + drmp3_uint64 totalFramesRead = 0; + + while (frameCount > 0) { + // Read from the in-memory buffer first. + while (pMP3->pcmFramesRemainingInMP3Frame > 0 && frameCount > 0) { + drmp3d_sample_t* frames = (drmp3d_sample_t*)pMP3->pcmFrames; +#ifndef DR_MP3_FLOAT_OUTPUT + if (pMP3->mp3FrameChannels == 1) { + if (pMP3->channels == 1) { + // Mono -> Mono. + pFramesOutF[0] = frames[pMP3->pcmFramesConsumedInMP3Frame] / 32768.0f; + } else { + // Mono -> Stereo. + pFramesOutF[0] = frames[pMP3->pcmFramesConsumedInMP3Frame] / 32768.0f; + pFramesOutF[1] = frames[pMP3->pcmFramesConsumedInMP3Frame] / 32768.0f; + } + } else { + if (pMP3->channels == 1) { + // Stereo -> Mono + float sample = 0; + sample += frames[(pMP3->pcmFramesConsumedInMP3Frame*pMP3->mp3FrameChannels)+0] / 32768.0f; + sample += frames[(pMP3->pcmFramesConsumedInMP3Frame*pMP3->mp3FrameChannels)+1] / 32768.0f; + pFramesOutF[0] = sample * 0.5f; + } else { + // Stereo -> Stereo + pFramesOutF[0] = frames[(pMP3->pcmFramesConsumedInMP3Frame*pMP3->mp3FrameChannels)+0] / 32768.0f; + pFramesOutF[1] = frames[(pMP3->pcmFramesConsumedInMP3Frame*pMP3->mp3FrameChannels)+1] / 32768.0f; + } + } +#else + if (pMP3->mp3FrameChannels == 1) { + if (pMP3->channels == 1) { + // Mono -> Mono. + pFramesOutF[0] = frames[pMP3->pcmFramesConsumedInMP3Frame]; + } else { + // Mono -> Stereo. + pFramesOutF[0] = frames[pMP3->pcmFramesConsumedInMP3Frame]; + pFramesOutF[1] = frames[pMP3->pcmFramesConsumedInMP3Frame]; + } + } else { + if (pMP3->channels == 1) { + // Stereo -> Mono + float sample = 0; + sample += frames[(pMP3->pcmFramesConsumedInMP3Frame*pMP3->mp3FrameChannels)+0]; + sample += frames[(pMP3->pcmFramesConsumedInMP3Frame*pMP3->mp3FrameChannels)+1]; + pFramesOutF[0] = sample * 0.5f; + } else { + // Stereo -> Stereo + pFramesOutF[0] = frames[(pMP3->pcmFramesConsumedInMP3Frame*pMP3->mp3FrameChannels)+0]; + pFramesOutF[1] = frames[(pMP3->pcmFramesConsumedInMP3Frame*pMP3->mp3FrameChannels)+1]; + } + } +#endif + + pMP3->pcmFramesConsumedInMP3Frame += 1; + pMP3->pcmFramesRemainingInMP3Frame -= 1; + totalFramesRead += 1; + frameCount -= 1; + pFramesOutF += pSRC->config.channels; + } + + if (frameCount == 0) { + break; + } + + drmp3_assert(pMP3->pcmFramesRemainingInMP3Frame == 0); + + // At this point we have exhausted our in-memory buffer so we need to re-fill. Note that the sample rate may have changed + // at this point which means we'll also need to update our sample rate conversion pipeline. + if (drmp3_decode_next_frame(pMP3) == 0) { + break; + } + } + + return totalFramesRead; +} + +drmp3_bool32 drmp3_init_internal(drmp3* pMP3, drmp3_read_proc onRead, drmp3_seek_proc onSeek, void* pUserData, const drmp3_config* pConfig) +{ + drmp3_assert(pMP3 != NULL); + drmp3_assert(onRead != NULL); + + // This function assumes the output object has already been reset to 0. Do not do that here, otherwise things will break. + drmp3dec_init(&pMP3->decoder); + + // The config can be null in which case we use defaults. + drmp3_config config; + if (pConfig != NULL) { + config = *pConfig; + } else { + drmp3_zero_object(&config); + } + + pMP3->channels = config.outputChannels; + if (pMP3->channels == 0) { + pMP3->channels = DR_MP3_DEFAULT_CHANNELS; + } + + // Cannot have more than 2 channels. + if (pMP3->channels > 2) { + pMP3->channels = 2; + } + + pMP3->sampleRate = config.outputSampleRate; + if (pMP3->sampleRate == 0) { + pMP3->sampleRate = DR_MP3_DEFAULT_SAMPLE_RATE; + } + + pMP3->onRead = onRead; + pMP3->onSeek = onSeek; + pMP3->pUserData = pUserData; + + // We need a sample rate converter for converting the sample rate from the MP3 frames to the requested output sample rate. + drmp3_src_config srcConfig; + drmp3_zero_object(&srcConfig); + srcConfig.sampleRateIn = DR_MP3_DEFAULT_SAMPLE_RATE; + srcConfig.sampleRateOut = pMP3->sampleRate; + srcConfig.channels = pMP3->channels; + srcConfig.algorithm = drmp3_src_algorithm_linear; + if (!drmp3_src_init(&srcConfig, drmp3_read_src, pMP3, &pMP3->src)) { + drmp3_uninit(pMP3); + return DRMP3_FALSE; + } + + // Decode the first frame to confirm that it is indeed a valid MP3 stream. + if (!drmp3_decode_next_frame(pMP3)) { + drmp3_uninit(pMP3); + return DRMP3_FALSE; // Not a valid MP3 stream. + } + + return DRMP3_TRUE; +} + +drmp3_bool32 drmp3_init(drmp3* pMP3, drmp3_read_proc onRead, drmp3_seek_proc onSeek, void* pUserData, const drmp3_config* pConfig) +{ + if (pMP3 == NULL || onRead == NULL) { + return DRMP3_FALSE; + } + + drmp3_zero_object(pMP3); + return drmp3_init_internal(pMP3, onRead, onSeek, pUserData, pConfig); +} + + +static size_t drmp3__on_read_memory(void* pUserData, void* pBufferOut, size_t bytesToRead) +{ + drmp3* pMP3 = (drmp3*)pUserData; + drmp3_assert(pMP3 != NULL); + drmp3_assert(pMP3->memory.dataSize >= pMP3->memory.currentReadPos); + + size_t bytesRemaining = pMP3->memory.dataSize - pMP3->memory.currentReadPos; + if (bytesToRead > bytesRemaining) { + bytesToRead = bytesRemaining; + } + + if (bytesToRead > 0) { + drmp3_copy_memory(pBufferOut, pMP3->memory.pData + pMP3->memory.currentReadPos, bytesToRead); + pMP3->memory.currentReadPos += bytesToRead; + } + + return bytesToRead; +} + +static drmp3_bool32 drmp3__on_seek_memory(void* pUserData, int byteOffset, drmp3_seek_origin origin) +{ + drmp3* pMP3 = (drmp3*)pUserData; + drmp3_assert(pMP3 != NULL); + + if (origin == drmp3_seek_origin_current) { + if (byteOffset > 0) { + if (pMP3->memory.currentReadPos + byteOffset > pMP3->memory.dataSize) { + byteOffset = (int)(pMP3->memory.dataSize - pMP3->memory.currentReadPos); // Trying to seek too far forward. + } + } else { + if (pMP3->memory.currentReadPos < (size_t)-byteOffset) { + byteOffset = -(int)pMP3->memory.currentReadPos; // Trying to seek too far backwards. + } + } + + // This will never underflow thanks to the clamps above. + pMP3->memory.currentReadPos += byteOffset; + } else { + if ((drmp3_uint32)byteOffset <= pMP3->memory.dataSize) { + pMP3->memory.currentReadPos = byteOffset; + } else { + pMP3->memory.currentReadPos = pMP3->memory.dataSize; // Trying to seek too far forward. + } + } + + return DRMP3_TRUE; +} + +drmp3_bool32 drmp3_init_memory(drmp3* pMP3, const void* pData, size_t dataSize, const drmp3_config* pConfig) +{ + if (pMP3 == NULL) { + return DRMP3_FALSE; + } + + drmp3_zero_object(pMP3); + + if (pData == NULL || dataSize == 0) { + return DRMP3_FALSE; + } + + pMP3->memory.pData = (const drmp3_uint8*)pData; + pMP3->memory.dataSize = dataSize; + pMP3->memory.currentReadPos = 0; + + return drmp3_init_internal(pMP3, drmp3__on_read_memory, drmp3__on_seek_memory, pMP3, pConfig); +} + + +#ifndef DR_MP3_NO_STDIO +#include + +static size_t drmp3__on_read_stdio(void* pUserData, void* pBufferOut, size_t bytesToRead) +{ + return fread(pBufferOut, 1, bytesToRead, (FILE*)pUserData); +} + +static drmp3_bool32 drmp3__on_seek_stdio(void* pUserData, int offset, drmp3_seek_origin origin) +{ + return fseek((FILE*)pUserData, offset, (origin == drmp3_seek_origin_current) ? SEEK_CUR : SEEK_SET) == 0; +} + +drmp3_bool32 drmp3_init_file(drmp3* pMP3, const char* filePath, const drmp3_config* pConfig) +{ + FILE* pFile; +#if defined(_MSC_VER) && _MSC_VER >= 1400 + if (fopen_s(&pFile, filePath, "rb") != 0) { + return DRMP3_FALSE; + } +#else + pFile = fopen(filePath, "rb"); + if (pFile == NULL) { + return DRMP3_FALSE; + } +#endif + + return drmp3_init(pMP3, drmp3__on_read_stdio, drmp3__on_seek_stdio, (void*)pFile, pConfig); +} +#endif + +void drmp3_uninit(drmp3* pMP3) +{ + if (pMP3 == NULL) { + return; + } + +#ifndef DR_MP3_NO_STDIO + if (pMP3->onRead == drmp3__on_read_stdio) { + fclose((FILE*)pMP3->pUserData); + } +#endif + + drmp3_free(pMP3->pData); +} + +drmp3_uint64 drmp3_read_pcm_frames_f32(drmp3* pMP3, drmp3_uint64 framesToRead, float* pBufferOut) +{ + if (pMP3 == NULL || pMP3->onRead == NULL) { + return 0; + } + + drmp3_uint64 totalFramesRead = 0; + + if (pBufferOut == NULL) { + float temp[4096]; + while (framesToRead > 0) { + drmp3_uint64 framesToReadRightNow = sizeof(temp)/sizeof(temp[0]) / pMP3->channels; + if (framesToReadRightNow > framesToRead) { + framesToReadRightNow = framesToRead; + } + + drmp3_uint64 framesJustRead = drmp3_read_pcm_frames_f32(pMP3, framesToReadRightNow, temp); + if (framesJustRead == 0) { + break; + } + + framesToRead -= framesJustRead; + totalFramesRead += framesJustRead; + } + } else { + totalFramesRead = drmp3_src_read_frames_ex(&pMP3->src, framesToRead, pBufferOut, DRMP3_TRUE); + pMP3->currentPCMFrame += totalFramesRead; + } + + return totalFramesRead; +} + +drmp3_bool32 drmp3_seek_to_start_of_stream(drmp3* pMP3) +{ + drmp3_assert(pMP3 != NULL); + drmp3_assert(pMP3->onSeek != NULL); + + // Seek to the start of the stream to begin with. + if (!drmp3__on_seek(pMP3, 0, drmp3_seek_origin_start)) { + return DRMP3_FALSE; + } + + // Clear any cached data. + pMP3->pcmFramesConsumedInMP3Frame = 0; + pMP3->pcmFramesRemainingInMP3Frame = 0; + pMP3->currentPCMFrame = 0; + pMP3->dataSize = 0; + pMP3->atEnd = DRMP3_FALSE; + + return DRMP3_TRUE; +} + +drmp3_bool32 drmp3_seek_to_pcm_frame__brute_force(drmp3* pMP3, drmp3_uint64 frameIndex) +{ + drmp3_assert(pMP3 != NULL); + + if (frameIndex == pMP3->currentPCMFrame) { + return DRMP3_TRUE; + } + + // If we're moving foward we just read from where we're at. Otherwise we need to move back to the start of + // the stream and read from the beginning. + drmp3_uint64 framesToReadAndDiscard; + if (frameIndex >= pMP3->currentPCMFrame) { + // Moving foward. + framesToReadAndDiscard = frameIndex - pMP3->currentPCMFrame; + } else { + // Moving backward. Move to the start of the stream and then move forward. + framesToReadAndDiscard = frameIndex; + if (!drmp3_seek_to_start_of_stream(pMP3)) { + return DRMP3_FALSE; + } + } + + // MP3 is a bit annoying when it comes to seeking because of the bit reservoir. It basically means that an MP3 frame can possibly + // depend on some of the data of prior frames. This means it's not as simple as seeking to the first byte of the MP3 frame that + // contains the sample because that MP3 frame will need the data from the previous MP3 frame (which we just seeked past!). To + // resolve this we seek past a number of MP3 frames up to a point, and then read-and-discard the remainder. + drmp3_uint64 maxFramesToReadAndDiscard = DRMP3_MAX_PCM_FRAMES_PER_MP3_FRAME * 3; + + // First get rid of anything that's still sitting in the buffer. + if (framesToReadAndDiscard > maxFramesToReadAndDiscard && framesToReadAndDiscard > pMP3->pcmFramesRemainingInMP3Frame) { + framesToReadAndDiscard -= pMP3->pcmFramesRemainingInMP3Frame; + pMP3->currentPCMFrame += pMP3->pcmFramesRemainingInMP3Frame; + pMP3->pcmFramesConsumedInMP3Frame += pMP3->pcmFramesRemainingInMP3Frame; + pMP3->pcmFramesRemainingInMP3Frame = 0; + } + + // Now get rid of leading whole frames. + while (framesToReadAndDiscard > maxFramesToReadAndDiscard) { + drmp3_uint32 pcmFramesSeeked = drmp3_seek_next_frame(pMP3); + if (pcmFramesSeeked == 0) { + break; + } + + framesToReadAndDiscard -= pcmFramesSeeked; + } + + // The last step is to read-and-discard any remaining PCM frames to make it sample-exact. + drmp3_uint64 framesRead = drmp3_read_pcm_frames_f32(pMP3, framesToReadAndDiscard, NULL); + if (framesRead != framesToReadAndDiscard) { + return DRMP3_FALSE; + } + + return DRMP3_TRUE; +} + +drmp3_bool32 drmp3_seek_to_pcm_frame(drmp3* pMP3, drmp3_uint64 frameIndex) +{ + if (pMP3 == NULL || pMP3->onSeek == NULL) { + return DRMP3_FALSE; + } + + // We currently only support brute force seeking. + return drmp3_seek_to_pcm_frame__brute_force(pMP3, frameIndex); +} + +drmp3_uint64 drmp3_get_pcm_frame_count(drmp3* pMP3) +{ + if (pMP3 == NULL) { + return 0; + } + + // The way this works is we move back to the start of the stream, iterate over each MP3 frame and calculate the frame count based + // on our output sample rate, the seek back to the PCM frame we were sitting on before calling this function. + + // The stream must support seeking for this to work. + if (pMP3->onSeek == NULL) { + return 0; + } + + // We'll need to seek back to where we were, so grab the PCM frame we're currently sitting on so we can restore later. + drmp3_uint64 currentPCMFrame = pMP3->currentPCMFrame; + + if (!drmp3_seek_to_start_of_stream(pMP3)) { + return 0; + } + + drmp3_uint64 totalPCMFrameCount = 0; + float totalPCMFrameCountFractionalPart = 0; // <-- With resampling there will be a fractional part to each MP3 frame that we need to accumulate. + for (;;) { + drmp3_uint32 pcmFramesInCurrentMP3FrameIn = drmp3_decode_next_frame_ex(pMP3, NULL); // <-- Passing in NULL here will prevent decoding of the MP3 frame which should save time. + if (pcmFramesInCurrentMP3FrameIn == 0) { + break; + } + + float srcRatio = (float)pMP3->mp3FrameSampleRate / (float)pMP3->sampleRate; + drmp3_assert(srcRatio > 0); + + float pcmFramesInCurrentMP3FrameOutF = totalPCMFrameCountFractionalPart + (pcmFramesInCurrentMP3FrameIn / srcRatio); + drmp3_uint32 pcmFramesInCurrentMP3FrameOut = (drmp3_uint32)pcmFramesInCurrentMP3FrameOutF; + totalPCMFrameCountFractionalPart = pcmFramesInCurrentMP3FrameOutF - pcmFramesInCurrentMP3FrameOut; + totalPCMFrameCount += pcmFramesInCurrentMP3FrameOut; + } + + // Finally, we need to seek back to where we were. + if (!drmp3_seek_to_start_of_stream(pMP3)) { + return 0; + } + + if (!drmp3_seek_to_pcm_frame(pMP3, currentPCMFrame)) { + return 0; + } + + return totalPCMFrameCount; +} + +drmp3_uint64 drmp3_get_mp3_frame_count(drmp3* pMP3) +{ + if (pMP3 == NULL) { + return 0; + } + + // This works the same way as drmp3_get_pcm_frame_count() - move to the start, count MP3 frames, move back to the previous position. + + // The stream must support seeking for this to work. + if (pMP3->onSeek == NULL) { + return 0; + } + + // We'll need to seek back to where we were, so grab the PCM frame we're currently sitting on so we can restore later. + drmp3_uint64 currentPCMFrame = pMP3->currentPCMFrame; + + if (!drmp3_seek_to_start_of_stream(pMP3)) { + return 0; + } + + drmp3_uint64 totalMP3FrameCount = 0; + for (;;) { + drmp3_uint32 pcmFramesInCurrentMP3FrameIn = drmp3_decode_next_frame_ex(pMP3, NULL); + if (pcmFramesInCurrentMP3FrameIn == 0) { + break; + } + + totalMP3FrameCount += 1; + } + + // Finally, we need to seek back to where we were. + if (!drmp3_seek_to_start_of_stream(pMP3)) { + return 0; + } + + if (!drmp3_seek_to_pcm_frame(pMP3, currentPCMFrame)) { + return 0; + } + + return totalMP3FrameCount; +} + + +float* drmp3__full_read_and_close_f32(drmp3* pMP3, drmp3_config* pConfig, drmp3_uint64* pTotalFrameCount) +{ + drmp3_assert(pMP3 != NULL); + + drmp3_uint64 totalFramesRead = 0; + drmp3_uint64 framesCapacity = 0; + float* pFrames = NULL; + + float temp[4096]; + for (;;) { + drmp3_uint64 framesToReadRightNow = drmp3_countof(temp) / pMP3->channels; + drmp3_uint64 framesJustRead = drmp3_read_pcm_frames_f32(pMP3, framesToReadRightNow, temp); + if (framesJustRead == 0) { + break; + } + + // Reallocate the output buffer if there's not enough room. + if (framesCapacity < totalFramesRead + framesJustRead) { + framesCapacity *= 2; + if (framesCapacity < totalFramesRead + framesJustRead) { + framesCapacity = totalFramesRead + framesJustRead; + } + + drmp3_uint64 newFramesBufferSize = framesCapacity*pMP3->channels*sizeof(float); + if (newFramesBufferSize > DRMP3_SIZE_MAX) { + break; + } + + float* pNewFrames = (float*)drmp3_realloc(pFrames, (size_t)newFramesBufferSize); + if (pNewFrames == NULL) { + drmp3_free(pFrames); + break; + } + + pFrames = pNewFrames; + } + + drmp3_copy_memory(pFrames + totalFramesRead*pMP3->channels, temp, (size_t)(framesJustRead*pMP3->channels*sizeof(float))); + totalFramesRead += framesJustRead; + + // If the number of frames we asked for is less that what we actually read it means we've reached the end. + if (framesJustRead != framesToReadRightNow) { + break; + } + } + + if (pConfig != NULL) { + pConfig->outputChannels = pMP3->channels; + pConfig->outputSampleRate = pMP3->sampleRate; + } + + drmp3_uninit(pMP3); + + if (pTotalFrameCount) *pTotalFrameCount = totalFramesRead; + return pFrames; +} + +float* drmp3_open_and_read_f32(drmp3_read_proc onRead, drmp3_seek_proc onSeek, void* pUserData, drmp3_config* pConfig, drmp3_uint64* pTotalFrameCount) +{ + drmp3 mp3; + if (!drmp3_init(&mp3, onRead, onSeek, pUserData, pConfig)) { + return NULL; + } + + return drmp3__full_read_and_close_f32(&mp3, pConfig, pTotalFrameCount); +} + +float* drmp3_open_memory_and_read_f32(const void* pData, size_t dataSize, drmp3_config* pConfig, drmp3_uint64* pTotalFrameCount) +{ + drmp3 mp3; + if (!drmp3_init_memory(&mp3, pData, dataSize, pConfig)) { + return NULL; + } + + return drmp3__full_read_and_close_f32(&mp3, pConfig, pTotalFrameCount); +} + +#ifndef DR_MP3_NO_STDIO +float* drmp3_open_file_and_read_f32(const char* filePath, drmp3_config* pConfig, drmp3_uint64* pTotalFrameCount) +{ + drmp3 mp3; + if (!drmp3_init_file(&mp3, filePath, pConfig)) { + return NULL; + } + + return drmp3__full_read_and_close_f32(&mp3, pConfig, pTotalFrameCount); +} +#endif + +void drmp3_free(void* p) +{ + DRMP3_FREE(p); +} + +#endif /*DR_MP3_IMPLEMENTATION*/ + + +// DIFFERENCES BETWEEN minimp3 AND dr_mp3 +// ====================================== +// - First, keep in mind that minimp3 (https://github.com/lieff/minimp3) is where all the real work was done. All of the +// code relating to the actual decoding remains mostly unmodified, apart from some namespacing changes. +// - dr_mp3 adds a pulling style API which allows you to deliver raw data via callbacks. So, rather than pushing data +// to the decoder, the decoder _pulls_ data from your callbacks. +// - In addition to callbacks, a decoder can be initialized from a block of memory and a file. +// - The dr_mp3 pull API reads PCM frames rather than whole MP3 frames. +// - dr_mp3 adds convenience APIs for opening and decoding entire files in one go. +// - dr_mp3 is fully namespaced, including the implementation section, which is more suitable when compiling projects +// as a single translation unit (aka unity builds). At the time of writing this, a unity build is not possible when +// using minimp3 in conjunction with stb_vorbis. dr_mp3 addresses this. + + +// REVISION HISTORY +// ================ +// +// v0.4.0 - 2018-xx-xx +// - API CHANGE: Rename some APIs: +// - drmp3_read_f32 -> to drmp3_read_pcm_frames_f32 +// - drmp3_seek_to_frame -> drmp3_seek_to_pcm_frame +// - drmp3_open_and_decode_f32 -> drmp3_open_and_read_f32 +// - drmp3_open_and_decode_memory_f32 -> drmp3_open_memory_and_read_f32 +// - drmp3_open_and_decode_file_f32 -> drmp3_open_file_and_read_f32 +// - Add drmp3_get_pcm_frame_count(). +// - Add drmp3_get_mp3_frame_count(). +// - Improve seeking performance. +// +// v0.3.2 - 2018-09-11 +// - Fix a couple of memory leaks. +// - Bring up to date with minimp3. +// +// v0.3.1 - 2018-08-25 +// - Fix C++ build. +// +// v0.3.0 - 2018-08-25 +// - Bring up to date with minimp3. This has a minor API change: the "pcm" parameter of drmp3dec_decode_frame() has +// been changed from short* to void* because it can now output both s16 and f32 samples, depending on whether or +// not the DR_MP3_FLOAT_OUTPUT option is set. +// +// v0.2.11 - 2018-08-08 +// - Fix a bug where the last part of a file is not read. +// +// v0.2.10 - 2018-08-07 +// - Improve 64-bit detection. +// +// v0.2.9 - 2018-08-05 +// - Fix C++ build on older versions of GCC. +// - Bring up to date with minimp3. +// +// v0.2.8 - 2018-08-02 +// - Fix compilation errors with older versions of GCC. +// +// v0.2.7 - 2018-07-13 +// - Bring up to date with minimp3. +// +// v0.2.6 - 2018-07-12 +// - Bring up to date with minimp3. +// +// v0.2.5 - 2018-06-22 +// - Bring up to date with minimp3. +// +// v0.2.4 - 2018-05-12 +// - Bring up to date with minimp3. +// +// v0.2.3 - 2018-04-29 +// - Fix TCC build. +// +// v0.2.2 - 2018-04-28 +// - Fix bug when opening a decoder from memory. +// +// v0.2.1 - 2018-04-27 +// - Efficiency improvements when the decoder reaches the end of the stream. +// +// v0.2 - 2018-04-21 +// - Bring up to date with minimp3. +// - Start using major.minor.revision versioning. +// +// v0.1d - 2018-03-30 +// - Bring up to date with minimp3. +// +// v0.1c - 2018-03-11 +// - Fix C++ build error. +// +// v0.1b - 2018-03-07 +// - Bring up to date with minimp3. +// +// v0.1a - 2018-02-28 +// - Fix compilation error on GCC/Clang. +// - Fix some warnings. +// +// v0.1 - 2018-02-xx +// - Initial versioned release. + + +/* +This is free and unencumbered software released into the public domain. + +Anyone is free to copy, modify, publish, use, compile, sell, or +distribute this software, either in source code form or as a compiled +binary, for any purpose, commercial or non-commercial, and by any +means. + +In jurisdictions that recognize copyright laws, the author or authors +of this software dedicate any and all copyright interest in the +software to the public domain. We make this dedication for the benefit +of the public at large and to the detriment of our heirs and +successors. We intend this dedication to be an overt act of +relinquishment in perpetuity of all present and future rights to this +software under copyright law. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, +EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF +MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. +IN NO EVENT SHALL THE AUTHORS BE LIABLE FOR ANY CLAIM, DAMAGES OR +OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, +ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR +OTHER DEALINGS IN THE SOFTWARE. + +For more information, please refer to +*/ + +/* + https://github.com/lieff/minimp3 + To the extent possible under law, the author(s) have dedicated all copyright and related and neighboring rights to this software to the public domain worldwide. + This software is distributed without any warranty. + See . +*/ diff --git a/src/soloud/src/audiosource/wav/dr_wav.h b/src/soloud/src/audiosource/wav/dr_wav.h new file mode 100644 index 0000000..79aa382 --- /dev/null +++ b/src/soloud/src/audiosource/wav/dr_wav.h @@ -0,0 +1,4254 @@ +// WAV audio loader and writer. Public domain. See "unlicense" statement at the end of this file. +// dr_wav - v0.9.0-dev - 2018-xx-xx +// +// David Reid - mackron@gmail.com + +// USAGE +// +// This is a single-file library. To use it, do something like the following in one .c file. +// #define DR_WAV_IMPLEMENTATION +// #include "dr_wav.h" +// +// You can then #include this file in other parts of the program as you would with any other header file. Do something +// like the following to read audio data: +// +// drwav wav; +// if (!drwav_init_file(&wav, "my_song.wav")) { +// // Error opening WAV file. +// } +// +// drwav_int32* pDecodedInterleavedSamples = malloc(wav.totalSampleCount * sizeof(drwav_int32)); +// size_t numberOfSamplesActuallyDecoded = drwav_read_s32(&wav, wav.totalSampleCount, pDecodedInterleavedSamples); +// +// ... +// +// drwav_uninit(&wav); +// +// You can also use drwav_open() to allocate and initialize the loader for you: +// +// drwav* pWav = drwav_open_file("my_song.wav"); +// if (pWav == NULL) { +// // Error opening WAV file. +// } +// +// ... +// +// drwav_close(pWav); +// +// If you just want to quickly open and read the audio data in a single operation you can do something like this: +// +// unsigned int channels; +// unsigned int sampleRate; +// drwav_uint64 totalSampleCount; +// float* pSampleData = drwav_open_file_and_read_f32("my_song.wav", &channels, &sampleRate, &totalSampleCount); +// if (pSampleData == NULL) { +// // Error opening and reading WAV file. +// } +// +// ... +// +// drwav_free(pSampleData); +// +// The examples above use versions of the API that convert the audio data to a consistent format (32-bit signed PCM, in +// this case), but you can still output the audio data in its internal format (see notes below for supported formats): +// +// size_t samplesRead = drwav_read(&wav, wav.totalSampleCount, pDecodedInterleavedSamples); +// +// You can also read the raw bytes of audio data, which could be useful if dr_wav does not have native support for +// a particular data format: +// +// size_t bytesRead = drwav_read_raw(&wav, bytesToRead, pRawDataBuffer); +// +// +// dr_wav has seamless support the Sony Wave64 format. The decoder will automatically detect it and it should Just Work +// without any manual intervention. +// +// +// dr_wav can also be used to output WAV files. This does not currently support compressed formats. To use this, look at +// drwav_open_write(), drwav_open_file_write(), etc. Use drwav_write() to write samples, or drwav_write_raw() to write +// raw data in the "data" chunk. +// +// drwav_data_format format; +// format.container = drwav_container_riff; // <-- drwav_container_riff = normal WAV files, drwav_container_w64 = Sony Wave64. +// format.format = DR_WAVE_FORMAT_PCM; // <-- Any of the DR_WAVE_FORMAT_* codes. +// format.channels = 2; +// format.sampleRate = 44100; +// format.bitsPerSample = 16; +// drwav* pWav = drwav_open_file_write("data/recording.wav", &format); +// +// ... +// +// drwav_uint64 samplesWritten = drwav_write(pWav, sampleCount, pSamples); +// +// +// +// OPTIONS +// #define these options before including this file. +// +// #define DR_WAV_NO_CONVERSION_API +// Disables conversion APIs such as drwav_read_f32() and drwav_s16_to_f32(). +// +// #define DR_WAV_NO_STDIO +// Disables drwav_open_file(), drwav_open_file_write(), etc. +// +// +// +// QUICK NOTES +// - Samples are always interleaved. +// - The default read function does not do any data conversion. Use drwav_read_f32() to read and convert audio data +// to IEEE 32-bit floating point samples, drwav_read_s32() to read samples as signed 32-bit PCM and drwav_read_s16() +// to read samples as signed 16-bit PCM. Tested and supported internal formats include the following: +// - Unsigned 8-bit PCM +// - Signed 12-bit PCM +// - Signed 16-bit PCM +// - Signed 24-bit PCM +// - Signed 32-bit PCM +// - IEEE 32-bit floating point +// - IEEE 64-bit floating point +// - A-law and u-law +// - Microsoft ADPCM +// - IMA ADPCM (DVI, format code 0x11) +// - dr_wav will try to read the WAV file as best it can, even if it's not strictly conformant to the WAV format. + + +#ifndef dr_wav_h +#define dr_wav_h + +#include + +#if defined(_MSC_VER) && _MSC_VER < 1600 +typedef signed char drwav_int8; +typedef unsigned char drwav_uint8; +typedef signed short drwav_int16; +typedef unsigned short drwav_uint16; +typedef signed int drwav_int32; +typedef unsigned int drwav_uint32; +typedef signed __int64 drwav_int64; +typedef unsigned __int64 drwav_uint64; +#else +#include +typedef int8_t drwav_int8; +typedef uint8_t drwav_uint8; +typedef int16_t drwav_int16; +typedef uint16_t drwav_uint16; +typedef int32_t drwav_int32; +typedef uint32_t drwav_uint32; +typedef int64_t drwav_int64; +typedef uint64_t drwav_uint64; +#endif +typedef drwav_uint8 drwav_bool8; +typedef drwav_uint32 drwav_bool32; +#define DRWAV_TRUE 1 +#define DRWAV_FALSE 0 + +#ifdef __cplusplus +extern "C" { +#endif + +// Common data formats. +#define DR_WAVE_FORMAT_PCM 0x1 +#define DR_WAVE_FORMAT_ADPCM 0x2 +#define DR_WAVE_FORMAT_IEEE_FLOAT 0x3 +#define DR_WAVE_FORMAT_ALAW 0x6 +#define DR_WAVE_FORMAT_MULAW 0x7 +#define DR_WAVE_FORMAT_DVI_ADPCM 0x11 +#define DR_WAVE_FORMAT_EXTENSIBLE 0xFFFE + +// Constants. +#ifndef DRWAV_MAX_SMPL_LOOPS +#define DRWAV_MAX_SMPL_LOOPS 1 +#endif + +// Flags to pass into drwav_init_ex(), etc. +#define DRWAV_SEQUENTIAL 0x00000001 + +typedef enum +{ + drwav_seek_origin_start, + drwav_seek_origin_current +} drwav_seek_origin; + +typedef enum +{ + drwav_container_riff, + drwav_container_w64 +} drwav_container; + +typedef struct +{ + union + { + drwav_uint8 fourcc[4]; + drwav_uint8 guid[16]; + } id; + + // The size in bytes of the chunk. + drwav_uint64 sizeInBytes; + + // RIFF = 2 byte alignment. + // W64 = 8 byte alignment. + unsigned int paddingSize; +} drwav_chunk_header; + +// Callback for when data is read. Return value is the number of bytes actually read. +// +// pUserData [in] The user data that was passed to drwav_init(), drwav_open() and family. +// pBufferOut [out] The output buffer. +// bytesToRead [in] The number of bytes to read. +// +// Returns the number of bytes actually read. +// +// A return value of less than bytesToRead indicates the end of the stream. Do _not_ return from this callback until +// either the entire bytesToRead is filled or you have reached the end of the stream. +typedef size_t (* drwav_read_proc)(void* pUserData, void* pBufferOut, size_t bytesToRead); + +// Callback for when data is written. Returns value is the number of bytes actually written. +// +// pUserData [in] The user data that was passed to drwav_init_write(), drwav_open_write() and family. +// pData [out] A pointer to the data to write. +// bytesToWrite [in] The number of bytes to write. +// +// Returns the number of bytes actually written. +// +// If the return value differs from bytesToWrite, it indicates an error. +typedef size_t (* drwav_write_proc)(void* pUserData, const void* pData, size_t bytesToWrite); + +// Callback for when data needs to be seeked. +// +// pUserData [in] The user data that was passed to drwav_init(), drwav_open() and family. +// offset [in] The number of bytes to move, relative to the origin. Will never be negative. +// origin [in] The origin of the seek - the current position or the start of the stream. +// +// Returns whether or not the seek was successful. +// +// Whether or not it is relative to the beginning or current position is determined by the "origin" parameter which +// will be either drwav_seek_origin_start or drwav_seek_origin_current. +typedef drwav_bool32 (* drwav_seek_proc)(void* pUserData, int offset, drwav_seek_origin origin); + +// Callback for when drwav_init_ex/drwav_open_ex finds a chunk. +// +// pChunkUserData [in] The user data that was passed to the pChunkUserData parameter of drwav_init_ex(), drwav_open_ex() and family. +// onRead [in] A pointer to the function to call when reading. +// onSeek [in] A pointer to the function to call when seeking. +// pReadSeekUserData [in] The user data that was passed to the pReadSeekUserData parameter of drwav_init_ex(), drwav_open_ex() and family. +// pChunkHeader [in] A pointer to an object containing basic header information about the chunk. Use this to identify the chunk. +// +// Returns the number of bytes read + seeked. +// +// To read data from the chunk, call onRead(), passing in pReadSeekUserData as the first parameter. Do the same +// for seeking with onSeek(). The return value must be the total number of bytes you have read _plus_ seeked. +// +// You must not attempt to read beyond the boundary of the chunk. +typedef drwav_uint64 (* drwav_chunk_proc)(void* pChunkUserData, drwav_read_proc onRead, drwav_seek_proc onSeek, void* pReadSeekUserData, const drwav_chunk_header* pChunkHeader); + +// Structure for internal use. Only used for loaders opened with drwav_open_memory(). +typedef struct +{ + const drwav_uint8* data; + size_t dataSize; + size_t currentReadPos; +} drwav__memory_stream; + +// Structure for internal use. Only used for writers opened with drwav_open_memory_write(). +typedef struct +{ + void** ppData; + size_t* pDataSize; + size_t dataSize; + size_t dataCapacity; + size_t currentWritePos; +} drwav__memory_stream_write; + +typedef struct +{ + drwav_container container; // RIFF, W64. + drwav_uint32 format; // DR_WAVE_FORMAT_* + drwav_uint32 channels; + drwav_uint32 sampleRate; + drwav_uint32 bitsPerSample; +} drwav_data_format; + +typedef struct +{ + // The format tag exactly as specified in the wave file's "fmt" chunk. This can be used by applications + // that require support for data formats not natively supported by dr_wav. + drwav_uint16 formatTag; + + // The number of channels making up the audio data. When this is set to 1 it is mono, 2 is stereo, etc. + drwav_uint16 channels; + + // The sample rate. Usually set to something like 44100. + drwav_uint32 sampleRate; + + // Average bytes per second. You probably don't need this, but it's left here for informational purposes. + drwav_uint32 avgBytesPerSec; + + // Block align. This is equal to the number of channels * bytes per sample. + drwav_uint16 blockAlign; + + // Bits per sample. + drwav_uint16 bitsPerSample; + + // The size of the extended data. Only used internally for validation, but left here for informational purposes. + drwav_uint16 extendedSize; + + // The number of valid bits per sample. When is equal to WAVE_FORMAT_EXTENSIBLE, + // is always rounded up to the nearest multiple of 8. This variable contains information about exactly how + // many bits a valid per sample. Mainly used for informational purposes. + drwav_uint16 validBitsPerSample; + + // The channel mask. Not used at the moment. + drwav_uint32 channelMask; + + // The sub-format, exactly as specified by the wave file. + drwav_uint8 subFormat[16]; +} drwav_fmt; + +typedef struct +{ + drwav_uint32 cuePointId; + drwav_uint32 type; + drwav_uint32 start; + drwav_uint32 end; + drwav_uint32 fraction; + drwav_uint32 playCount; +} drwav_smpl_loop; + + typedef struct +{ + drwav_uint32 manufacturer; + drwav_uint32 product; + drwav_uint32 samplePeriod; + drwav_uint32 midiUnityNotes; + drwav_uint32 midiPitchFraction; + drwav_uint32 smpteFormat; + drwav_uint32 smpteOffset; + drwav_uint32 numSampleLoops; + drwav_uint32 samplerData; + drwav_smpl_loop loops[DRWAV_MAX_SMPL_LOOPS]; +} drwav_smpl; + +typedef struct +{ + // A pointer to the function to call when more data is needed. + drwav_read_proc onRead; + + // A pointer to the function to call when data needs to be written. Only used when the drwav object is opened in write mode. + drwav_write_proc onWrite; + + // A pointer to the function to call when the wav file needs to be seeked. + drwav_seek_proc onSeek; + + // The user data to pass to callbacks. + void* pUserData; + + + // Whether or not the WAV file is formatted as a standard RIFF file or W64. + drwav_container container; + + + // Structure containing format information exactly as specified by the wav file. + drwav_fmt fmt; + + // The sample rate. Will be set to something like 44100. + drwav_uint32 sampleRate; + + // The number of channels. This will be set to 1 for monaural streams, 2 for stereo, etc. + drwav_uint16 channels; + + // The bits per sample. Will be set to something like 16, 24, etc. + drwav_uint16 bitsPerSample; + + // The number of bytes per sample. + drwav_uint16 bytesPerSample; + + // Equal to fmt.formatTag, or the value specified by fmt.subFormat if fmt.formatTag is equal to 65534 (WAVE_FORMAT_EXTENSIBLE). + drwav_uint16 translatedFormatTag; + + // The total number of samples making up the audio data. Use * to calculate + // the required size of a buffer to hold the entire audio data. + drwav_uint64 totalSampleCount; + + + // The size in bytes of the data chunk. + drwav_uint64 dataChunkDataSize; + + // The position in the stream of the first byte of the data chunk. This is used for seeking. + drwav_uint64 dataChunkDataPos; + + // The number of bytes remaining in the data chunk. + drwav_uint64 bytesRemaining; + + + // Only used in sequential write mode. Keeps track of the desired size of the "data" chunk at the point of initialization time. Always + // set to 0 for non-sequential writes and when the drwav object is opened in read mode. Used for validation. + drwav_uint64 dataChunkDataSizeTargetWrite; + + // Keeps track of whether or not the wav writer was initialized in sequential mode. + drwav_bool32 isSequentialWrite; + + + // smpl chunk. + drwav_smpl smpl; + + + // A hack to avoid a DRWAV_MALLOC() when opening a decoder with drwav_open_memory(). + drwav__memory_stream memoryStream; + drwav__memory_stream_write memoryStreamWrite; + + // Generic data for compressed formats. This data is shared across all block-compressed formats. + struct + { + drwav_uint64 iCurrentSample; // The index of the next sample that will be read by drwav_read_*(). This is used with "totalSampleCount" to ensure we don't read excess samples at the end of the last block. + } compressed; + + // Microsoft ADPCM specific data. + struct + { + drwav_uint32 bytesRemainingInBlock; + drwav_uint16 predictor[2]; + drwav_int32 delta[2]; + drwav_int32 cachedSamples[4]; // Samples are stored in this cache during decoding. + drwav_uint32 cachedSampleCount; + drwav_int32 prevSamples[2][2]; // The previous 2 samples for each channel (2 channels at most). + } msadpcm; + + // IMA ADPCM specific data. + struct + { + drwav_uint32 bytesRemainingInBlock; + drwav_int32 predictor[2]; + drwav_int32 stepIndex[2]; + drwav_int32 cachedSamples[16]; // Samples are stored in this cache during decoding. + drwav_uint32 cachedSampleCount; + } ima; +} drwav; + + +// Initializes a pre-allocated drwav object. +// +// pWav [out] A pointer to the drwav object being initialized. +// onRead [in] The function to call when data needs to be read from the client. +// onSeek [in] The function to call when the read position of the client data needs to move. +// onChunk [in, optional] The function to call when a chunk is enumerated at initialized time. +// pUserData, pReadSeekUserData [in, optional] A pointer to application defined data that will be passed to onRead and onSeek. +// pChunkUserData [in, optional] A pointer to application defined data that will be passed to onChunk. +// flags [in, optional] A set of flags for controlling how things are loaded. +// +// Returns true if successful; false otherwise. +// +// Close the loader with drwav_uninit(). +// +// This is the lowest level function for initializing a WAV file. You can also use drwav_init_file() and drwav_init_memory() +// to open the stream from a file or from a block of memory respectively. +// +// If you want dr_wav to manage the memory allocation for you, consider using drwav_open() instead. This will allocate +// a drwav object on the heap and return a pointer to it. +// +// Possible values for flags: +// DRWAV_SEQUENTIAL: Never perform a backwards seek while loading. This disables the chunk callback and will cause this function +// to return as soon as the data chunk is found. Any chunks after the data chunk will be ignored. +// +// drwav_init() is equivalent to "drwav_init_ex(pWav, onRead, onSeek, NULL, pUserData, NULL, 0);". +// +// The onChunk is callback is not called for the WAVE or FMT chunks. The contents of the FMT chunk can be read from pWav->fmt +// after the function returns. +// +// See also: drwav_init_file(), drwav_init_memory(), drwav_uninit() +drwav_bool32 drwav_init(drwav* pWav, drwav_read_proc onRead, drwav_seek_proc onSeek, void* pUserData); +drwav_bool32 drwav_init_ex(drwav* pWav, drwav_read_proc onRead, drwav_seek_proc onSeek, drwav_chunk_proc onChunk, void* pReadSeekUserData, void* pChunkUserData, drwav_uint32 flags); + +// Initializes a pre-allocated drwav object for writing. +// +// onWrite [in] The function to call when data needs to be written. +// onSeek [in] The function to call when the write position needs to move. +// pUserData [in, optional] A pointer to application defined data that will be passed to onWrite and onSeek. +// +// Returns true if successful; false otherwise. +// +// Close the writer with drwav_uninit(). +// +// This is the lowest level function for initializing a WAV file. You can also use drwav_init_file() and drwav_init_memory() +// to open the stream from a file or from a block of memory respectively. +// +// If the total sample count is known, you can use drwav_init_write_sequential(). This avoids the need for dr_wav to perform +// a post-processing step for storing the total sample count and the size of the data chunk which requires a backwards seek. +// +// If you want dr_wav to manage the memory allocation for you, consider using drwav_open() instead. This will allocate +// a drwav object on the heap and return a pointer to it. +// +// See also: drwav_init_file_write(), drwav_init_memory_write(), drwav_uninit() +drwav_bool32 drwav_init_write(drwav* pWav, const drwav_data_format* pFormat, drwav_write_proc onWrite, drwav_seek_proc onSeek, void* pUserData); +drwav_bool32 drwav_init_write_sequential(drwav* pWav, const drwav_data_format* pFormat, drwav_uint64 totalSampleCount, drwav_write_proc onWrite, void* pUserData); + +// Uninitializes the given drwav object. +// +// Use this only for objects initialized with drwav_init(). +void drwav_uninit(drwav* pWav); + + +// Opens a wav file using the given callbacks. +// +// onRead [in] The function to call when data needs to be read from the client. +// onSeek [in] The function to call when the read position of the client data needs to move. +// pUserData [in, optional] A pointer to application defined data that will be passed to onRead and onSeek. +// +// Returns null on error. +// +// Close the loader with drwav_close(). +// +// You can also use drwav_open_file() and drwav_open_memory() to open the stream from a file or from a block of +// memory respectively. +// +// This is different from drwav_init() in that it will allocate the drwav object for you via DRWAV_MALLOC() before +// initializing it. +// +// See also: drwav_init(), drwav_open_file(), drwav_open_memory(), drwav_close() +drwav* drwav_open(drwav_read_proc onRead, drwav_seek_proc onSeek, void* pUserData); +drwav* drwav_open_ex(drwav_read_proc onRead, drwav_seek_proc onSeek, drwav_chunk_proc onChunk, void* pReadSeekUserData, void* pChunkUserData, drwav_uint32 flags); + +// Opens a wav file for writing using the given callbacks. +// +// onWrite [in] The function to call when data needs to be written. +// onSeek [in] The function to call when the write position needs to move. +// pUserData [in, optional] A pointer to application defined data that will be passed to onWrite and onSeek. +// +// Returns null on error. +// +// Close the loader with drwav_close(). +// +// You can also use drwav_open_file_write() and drwav_open_memory_write() to open the stream from a file or from a block +// of memory respectively. +// +// This is different from drwav_init_write() in that it will allocate the drwav object for you via DRWAV_MALLOC() before +// initializing it. +// +// See also: drwav_open_file_write(), drwav_open_memory_write(), drwav_close() +drwav* drwav_open_write(const drwav_data_format* pFormat, drwav_write_proc onWrite, drwav_seek_proc onSeek, void* pUserData); +drwav* drwav_open_write_sequential(const drwav_data_format* pFormat, drwav_uint64 totalSampleCount, drwav_write_proc onWrite, void* pUserData); + +// Uninitializes and deletes the the given drwav object. +// +// Use this only for objects created with drwav_open(). +void drwav_close(drwav* pWav); + + +// Reads raw audio data. +// +// This is the lowest level function for reading audio data. It simply reads the given number of +// bytes of the raw internal sample data. +// +// Consider using drwav_read_s16(), drwav_read_s32() or drwav_read_f32() for reading sample data in +// a consistent format. +// +// Returns the number of bytes actually read. +size_t drwav_read_raw(drwav* pWav, size_t bytesToRead, void* pBufferOut); + +// Reads a chunk of audio data in the native internal format. +// +// This is typically the most efficient way to retrieve audio data, but it does not do any format +// conversions which means you'll need to convert the data manually if required. +// +// If the return value is less than it means the end of the file has been reached or +// you have requested more samples than can possibly fit in the output buffer. +// +// This function will only work when sample data is of a fixed size and uncompressed. If you are +// using a compressed format consider using drwav_read_raw() or drwav_read_s16/s32/f32/etc(). +drwav_uint64 drwav_read(drwav* pWav, drwav_uint64 samplesToRead, void* pBufferOut); + +// Same as drwav_read(), except works on PCM frames instead of samples. Returns the number of PCM +// freames read. +drwav_uint64 drwav_read_pcm_frames(drwav* pWav, drwav_uint64 framesToRead, void* pBufferOut); + +// Seeks to the given sample. +// +// Returns true if successful; false otherwise. +drwav_bool32 drwav_seek_to_sample(drwav* pWav, drwav_uint64 sample); + +// Same as drwav_seek_to_sample() except workd on PCM frames. +drwav_bool32 drwav_seek_to_pcm_frame(drwav* pWav, drwav_uint64 targetFrameIndex); + + +// Writes raw audio data. +// +// Returns the number of bytes actually written. If this differs from bytesToWrite, it indicates an error. +size_t drwav_write_raw(drwav* pWav, size_t bytesToWrite, const void* pData); + +// Writes audio data based on sample counts. +// +// Returns the number of samples written. +drwav_uint64 drwav_write(drwav* pWav, drwav_uint64 samplesToWrite, const void* pData); + +// Same as drwav_write(), but works on PCM frames instead of samples. Returns the number of PCM frames written. +drwav_uint64 drwav_write_pcm_frames(drwav* pWav, drwav_uint64 framesToWrite, const void* pData); + + +//// Conversion Utilities //// +#ifndef DR_WAV_NO_CONVERSION_API + +// Reads a chunk of audio data and converts it to signed 16-bit PCM samples. +// +// Returns the number of samples actually read. +// +// If the return value is less than it means the end of the file has been reached. +drwav_uint64 drwav_read_s16(drwav* pWav, drwav_uint64 samplesToRead, drwav_int16* pBufferOut); + +// Same as drwav_read_s16(), except works on PCM frames instead of samples. +drwav_uint64 drwav_read_pcm_frames_s16(drwav* pWav, drwav_uint64 framesToRead, drwav_int16* pBufferOut); + +// Low-level function for converting unsigned 8-bit PCM samples to signed 16-bit PCM samples. +void drwav_u8_to_s16(drwav_int16* pOut, const drwav_uint8* pIn, size_t sampleCount); + +// Low-level function for converting signed 24-bit PCM samples to signed 16-bit PCM samples. +void drwav_s24_to_s16(drwav_int16* pOut, const drwav_uint8* pIn, size_t sampleCount); + +// Low-level function for converting signed 32-bit PCM samples to signed 16-bit PCM samples. +void drwav_s32_to_s16(drwav_int16* pOut, const drwav_int32* pIn, size_t sampleCount); + +// Low-level function for converting IEEE 32-bit floating point samples to signed 16-bit PCM samples. +void drwav_f32_to_s16(drwav_int16* pOut, const float* pIn, size_t sampleCount); + +// Low-level function for converting IEEE 64-bit floating point samples to signed 16-bit PCM samples. +void drwav_f64_to_s16(drwav_int16* pOut, const double* pIn, size_t sampleCount); + +// Low-level function for converting A-law samples to signed 16-bit PCM samples. +void drwav_alaw_to_s16(drwav_int16* pOut, const drwav_uint8* pIn, size_t sampleCount); + +// Low-level function for converting u-law samples to signed 16-bit PCM samples. +void drwav_mulaw_to_s16(drwav_int16* pOut, const drwav_uint8* pIn, size_t sampleCount); + + +// Reads a chunk of audio data and converts it to IEEE 32-bit floating point samples. +// +// Returns the number of samples actually read. +// +// If the return value is less than it means the end of the file has been reached. +drwav_uint64 drwav_read_f32(drwav* pWav, drwav_uint64 samplesToRead, float* pBufferOut); + +// Same as drwav_read_f32(), except works on PCM frames instead of samples. +drwav_uint64 drwav_read_pcm_frames_f32(drwav* pWav, drwav_uint64 framesToRead, float* pBufferOut); + +// Low-level function for converting unsigned 8-bit PCM samples to IEEE 32-bit floating point samples. +void drwav_u8_to_f32(float* pOut, const drwav_uint8* pIn, size_t sampleCount); + +// Low-level function for converting signed 16-bit PCM samples to IEEE 32-bit floating point samples. +void drwav_s16_to_f32(float* pOut, const drwav_int16* pIn, size_t sampleCount); + +// Low-level function for converting signed 24-bit PCM samples to IEEE 32-bit floating point samples. +void drwav_s24_to_f32(float* pOut, const drwav_uint8* pIn, size_t sampleCount); + +// Low-level function for converting signed 32-bit PCM samples to IEEE 32-bit floating point samples. +void drwav_s32_to_f32(float* pOut, const drwav_int32* pIn, size_t sampleCount); + +// Low-level function for converting IEEE 64-bit floating point samples to IEEE 32-bit floating point samples. +void drwav_f64_to_f32(float* pOut, const double* pIn, size_t sampleCount); + +// Low-level function for converting A-law samples to IEEE 32-bit floating point samples. +void drwav_alaw_to_f32(float* pOut, const drwav_uint8* pIn, size_t sampleCount); + +// Low-level function for converting u-law samples to IEEE 32-bit floating point samples. +void drwav_mulaw_to_f32(float* pOut, const drwav_uint8* pIn, size_t sampleCount); + + +// Reads a chunk of audio data and converts it to signed 32-bit PCM samples. +// +// Returns the number of samples actually read. +// +// If the return value is less than it means the end of the file has been reached. +drwav_uint64 drwav_read_s32(drwav* pWav, drwav_uint64 samplesToRead, drwav_int32* pBufferOut); + +// Same as drwav_read_s32(), except works on PCM frames instead of samples. +drwav_uint64 drwav_read_pcm_frames_s32(drwav* pWav, drwav_uint64 framesToRead, drwav_int32* pBufferOut); + +// Low-level function for converting unsigned 8-bit PCM samples to signed 32-bit PCM samples. +void drwav_u8_to_s32(drwav_int32* pOut, const drwav_uint8* pIn, size_t sampleCount); + +// Low-level function for converting signed 16-bit PCM samples to signed 32-bit PCM samples. +void drwav_s16_to_s32(drwav_int32* pOut, const drwav_int16* pIn, size_t sampleCount); + +// Low-level function for converting signed 24-bit PCM samples to signed 32-bit PCM samples. +void drwav_s24_to_s32(drwav_int32* pOut, const drwav_uint8* pIn, size_t sampleCount); + +// Low-level function for converting IEEE 32-bit floating point samples to signed 32-bit PCM samples. +void drwav_f32_to_s32(drwav_int32* pOut, const float* pIn, size_t sampleCount); + +// Low-level function for converting IEEE 64-bit floating point samples to signed 32-bit PCM samples. +void drwav_f64_to_s32(drwav_int32* pOut, const double* pIn, size_t sampleCount); + +// Low-level function for converting A-law samples to signed 32-bit PCM samples. +void drwav_alaw_to_s32(drwav_int32* pOut, const drwav_uint8* pIn, size_t sampleCount); + +// Low-level function for converting u-law samples to signed 32-bit PCM samples. +void drwav_mulaw_to_s32(drwav_int32* pOut, const drwav_uint8* pIn, size_t sampleCount); + +#endif //DR_WAV_NO_CONVERSION_API + + +//// High-Level Convenience Helpers //// + +#ifndef DR_WAV_NO_STDIO + +// Helper for initializing a wave file using stdio. +// +// This holds the internal FILE object until drwav_uninit() is called. Keep this in mind if you're caching drwav +// objects because the operating system may restrict the number of file handles an application can have open at +// any given time. +drwav_bool32 drwav_init_file(drwav* pWav, const char* filename); +drwav_bool32 drwav_init_file_ex(drwav* pWav, const char* filename, drwav_chunk_proc onChunk, void* pChunkUserData, drwav_uint32 flags); + +// Helper for initializing a wave file for writing using stdio. +// +// This holds the internal FILE object until drwav_uninit() is called. Keep this in mind if you're caching drwav +// objects because the operating system may restrict the number of file handles an application can have open at +// any given time. +drwav_bool32 drwav_init_file_write(drwav* pWav, const char* filename, const drwav_data_format* pFormat); +drwav_bool32 drwav_init_file_write_sequential(drwav* pWav, const char* filename, const drwav_data_format* pFormat, drwav_uint64 totalSampleCount); + +// Helper for opening a wave file using stdio. +// +// This holds the internal FILE object until drwav_close() is called. Keep this in mind if you're caching drwav +// objects because the operating system may restrict the number of file handles an application can have open at +// any given time. +drwav* drwav_open_file(const char* filename); +drwav* drwav_open_file_ex(const char* filename, drwav_chunk_proc onChunk, void* pChunkUserData, drwav_uint32 flags); + +// Helper for opening a wave file for writing using stdio. +// +// This holds the internal FILE object until drwav_close() is called. Keep this in mind if you're caching drwav +// objects because the operating system may restrict the number of file handles an application can have open at +// any given time. +drwav* drwav_open_file_write(const char* filename, const drwav_data_format* pFormat); +drwav* drwav_open_file_write_sequential(const char* filename, const drwav_data_format* pFormat, drwav_uint64 totalSampleCount); + +#endif //DR_WAV_NO_STDIO + +// Helper for initializing a loader from a pre-allocated memory buffer. +// +// This does not create a copy of the data. It is up to the application to ensure the buffer remains valid for +// the lifetime of the drwav object. +// +// The buffer should contain the contents of the entire wave file, not just the sample data. +drwav_bool32 drwav_init_memory(drwav* pWav, const void* data, size_t dataSize); +drwav_bool32 drwav_init_memory_ex(drwav* pWav, const void* data, size_t dataSize, drwav_chunk_proc onChunk, void* pChunkUserData, drwav_uint32 flags); + +// Helper for initializing a writer which outputs data to a memory buffer. +// +// dr_wav will manage the memory allocations, however it is up to the caller to free the data with drwav_free(). +// +// The buffer will remain allocated even after drwav_uninit() is called. Indeed, the buffer should not be +// considered valid until after drwav_uninit() has been called anyway. +drwav_bool32 drwav_init_memory_write(drwav* pWav, void** ppData, size_t* pDataSize, const drwav_data_format* pFormat); +drwav_bool32 drwav_init_memory_write_sequential(drwav* pWav, void** ppData, size_t* pDataSize, const drwav_data_format* pFormat, drwav_uint64 totalSampleCount); + +// Helper for opening a loader from a pre-allocated memory buffer. +// +// This does not create a copy of the data. It is up to the application to ensure the buffer remains valid for +// the lifetime of the drwav object. +// +// The buffer should contain the contents of the entire wave file, not just the sample data. +drwav* drwav_open_memory(const void* data, size_t dataSize); +drwav* drwav_open_memory_ex(const void* data, size_t dataSize, drwav_chunk_proc onChunk, void* pChunkUserData, drwav_uint32 flags); + +// Helper for opening a writer which outputs data to a memory buffer. +// +// dr_wav will manage the memory allocations, however it is up to the caller to free the data with drwav_free(). +// +// The buffer will remain allocated even after drwav_close() is called. Indeed, the buffer should not be +// considered valid until after drwav_close() has been called anyway. +drwav* drwav_open_memory_write(void** ppData, size_t* pDataSize, const drwav_data_format* pFormat); +drwav* drwav_open_memory_write_sequential(void** ppData, size_t* pDataSize, const drwav_data_format* pFormat, drwav_uint64 totalSampleCount); + + +#ifndef DR_WAV_NO_CONVERSION_API +// Opens and reads a wav file in a single operation. +drwav_int16* drwav_open_and_read_s16(drwav_read_proc onRead, drwav_seek_proc onSeek, void* pUserData, unsigned int* channels, unsigned int* sampleRate, drwav_uint64* totalSampleCount); +drwav_int16* drwav_open_and_read_pcm_frames_s16(drwav_read_proc onRead, drwav_seek_proc onSeek, void* pUserData, unsigned int* channels, unsigned int* sampleRate, drwav_uint64* totalFrameCount); +float* drwav_open_and_read_f32(drwav_read_proc onRead, drwav_seek_proc onSeek, void* pUserData, unsigned int* channels, unsigned int* sampleRate, drwav_uint64* totalSampleCount); +float* drwav_open_and_read_pcm_frames_f32(drwav_read_proc onRead, drwav_seek_proc onSeek, void* pUserData, unsigned int* channels, unsigned int* sampleRate, drwav_uint64* totalFrameCount); +drwav_int32* drwav_open_and_read_s32(drwav_read_proc onRead, drwav_seek_proc onSeek, void* pUserData, unsigned int* channels, unsigned int* sampleRate, drwav_uint64* totalSampleCount); +drwav_int32* drwav_open_and_read_pcm_frames_s32(drwav_read_proc onRead, drwav_seek_proc onSeek, void* pUserData, unsigned int* channels, unsigned int* sampleRate, drwav_uint64* totalFrameCount); +#ifndef DR_WAV_NO_STDIO +// Opens and decodes a wav file in a single operation. +drwav_int16* drwav_open_file_and_read_s16(const char* filename, unsigned int* channels, unsigned int* sampleRate, drwav_uint64* totalSampleCount); +drwav_int16* drwav_open_file_and_read_pcm_frames_s16(const char* filename, unsigned int* channels, unsigned int* sampleRate, drwav_uint64* totalFrameCount); +float* drwav_open_file_and_read_f32(const char* filename, unsigned int* channels, unsigned int* sampleRate, drwav_uint64* totalSampleCount); +float* drwav_open_file_and_read_pcm_frames_f32(const char* filename, unsigned int* channels, unsigned int* sampleRate, drwav_uint64* totalFrameCount); +drwav_int32* drwav_open_file_and_read_s32(const char* filename, unsigned int* channels, unsigned int* sampleRate, drwav_uint64* totalSampleCount); +drwav_int32* drwav_open_file_and_read_pcm_frames_s32(const char* filename, unsigned int* channels, unsigned int* sampleRate, drwav_uint64* totalFrameCount); +#endif + +// Opens and decodes a wav file from a block of memory in a single operation. +drwav_int16* drwav_open_memory_and_read_s16(const void* data, size_t dataSize, unsigned int* channels, unsigned int* sampleRate, drwav_uint64* totalSampleCount); +drwav_int16* drwav_open_memory_and_read_pcm_frames_s16(const void* data, size_t dataSize, unsigned int* channels, unsigned int* sampleRate, drwav_uint64* totalFrameCount); +float* drwav_open_memory_and_read_f32(const void* data, size_t dataSize, unsigned int* channels, unsigned int* sampleRate, drwav_uint64* totalSampleCount); +float* drwav_open_memory_and_read_pcm_frames_f32(const void* data, size_t dataSize, unsigned int* channels, unsigned int* sampleRate, drwav_uint64* totalFrameCount); +drwav_int32* drwav_open_memory_and_read_s32(const void* data, size_t dataSize, unsigned int* channels, unsigned int* sampleRate, drwav_uint64* totalSampleCount); +drwav_int32* drwav_open_memory_and_read_pcm_frames_s32(const void* data, size_t dataSize, unsigned int* channels, unsigned int* sampleRate, drwav_uint64* totalFrameCount); +#endif + +// Frees data that was allocated internally by dr_wav. +void drwav_free(void* pDataReturnedByOpenAndRead); + +#ifdef __cplusplus +} +#endif +#endif // dr_wav_h + + +///////////////////////////////////////////////////// +// +// IMPLEMENTATION +// +///////////////////////////////////////////////////// + +#ifdef DR_WAV_IMPLEMENTATION +#include +#include // For memcpy(), memset() +#include // For INT_MAX + +#ifndef DR_WAV_NO_STDIO +#include +#endif + +// Standard library stuff. +#ifndef DRWAV_ASSERT +#include +#define DRWAV_ASSERT(expression) assert(expression) +#endif +#ifndef DRWAV_MALLOC +#define DRWAV_MALLOC(sz) malloc((sz)) +#endif +#ifndef DRWAV_REALLOC +#define DRWAV_REALLOC(p, sz) realloc((p), (sz)) +#endif +#ifndef DRWAV_FREE +#define DRWAV_FREE(p) free((p)) +#endif +#ifndef DRWAV_COPY_MEMORY +#define DRWAV_COPY_MEMORY(dst, src, sz) memcpy((dst), (src), (sz)) +#endif +#ifndef DRWAV_ZERO_MEMORY +#define DRWAV_ZERO_MEMORY(p, sz) memset((p), 0, (sz)) +#endif + +#define drwav_countof(x) (sizeof(x) / sizeof(x[0])) +#define drwav_align(x, a) ((((x) + (a) - 1) / (a)) * (a)) +#define drwav_min(a, b) (((a) < (b)) ? (a) : (b)) +#define drwav_max(a, b) (((a) > (b)) ? (a) : (b)) +#define drwav_clamp(x, lo, hi) (drwav_max((lo), drwav_min((hi), (x)))) + +#define drwav_assert DRWAV_ASSERT +#define drwav_copy_memory DRWAV_COPY_MEMORY +#define drwav_zero_memory DRWAV_ZERO_MEMORY + +typedef drwav_int32 drwav_result; +#define DRWAV_SUCCESS 0 +#define DRWAV_ERROR -1 +#define DRWAV_INVALID_ARGS -2 +#define DRWAV_INVALID_OPERATION -3 +#define DRWAV_INVALID_FILE -100 +#define DRWAV_EOF -101 + +#define DRWAV_MAX_SIMD_VECTOR_SIZE 64 // 64 for AVX-512 in the future. + +#ifdef _MSC_VER +#define DRWAV_INLINE __forceinline +#else +#ifdef __GNUC__ +#define DRWAV_INLINE inline __attribute__((always_inline)) +#else +#define DRWAV_INLINE inline +#endif +#endif + +#if defined(SIZE_MAX) + #define DRWAV_SIZE_MAX SIZE_MAX +#else + #if defined(_WIN64) || defined(_LP64) || defined(__LP64__) + #define DRWAV_SIZE_MAX ((drwav_uint64)0xFFFFFFFFFFFFFFFF) + #else + #define DRWAV_SIZE_MAX 0xFFFFFFFF + #endif +#endif + +static const drwav_uint8 drwavGUID_W64_RIFF[16] = {0x72,0x69,0x66,0x66, 0x2E,0x91, 0xCF,0x11, 0xA5,0xD6, 0x28,0xDB,0x04,0xC1,0x00,0x00}; // 66666972-912E-11CF-A5D6-28DB04C10000 +static const drwav_uint8 drwavGUID_W64_WAVE[16] = {0x77,0x61,0x76,0x65, 0xF3,0xAC, 0xD3,0x11, 0x8C,0xD1, 0x00,0xC0,0x4F,0x8E,0xDB,0x8A}; // 65766177-ACF3-11D3-8CD1-00C04F8EDB8A +static const drwav_uint8 drwavGUID_W64_JUNK[16] = {0x6A,0x75,0x6E,0x6B, 0xF3,0xAC, 0xD3,0x11, 0x8C,0xD1, 0x00,0xC0,0x4F,0x8E,0xDB,0x8A}; // 6B6E756A-ACF3-11D3-8CD1-00C04F8EDB8A +static const drwav_uint8 drwavGUID_W64_FMT [16] = {0x66,0x6D,0x74,0x20, 0xF3,0xAC, 0xD3,0x11, 0x8C,0xD1, 0x00,0xC0,0x4F,0x8E,0xDB,0x8A}; // 20746D66-ACF3-11D3-8CD1-00C04F8EDB8A +static const drwav_uint8 drwavGUID_W64_FACT[16] = {0x66,0x61,0x63,0x74, 0xF3,0xAC, 0xD3,0x11, 0x8C,0xD1, 0x00,0xC0,0x4F,0x8E,0xDB,0x8A}; // 74636166-ACF3-11D3-8CD1-00C04F8EDB8A +static const drwav_uint8 drwavGUID_W64_DATA[16] = {0x64,0x61,0x74,0x61, 0xF3,0xAC, 0xD3,0x11, 0x8C,0xD1, 0x00,0xC0,0x4F,0x8E,0xDB,0x8A}; // 61746164-ACF3-11D3-8CD1-00C04F8EDB8A +static const drwav_uint8 drwavGUID_W64_SMPL[16] = {0x73,0x6D,0x70,0x6C, 0xF3,0xAC, 0xD3,0x11, 0x8C,0xD1, 0x00,0xC0,0x4F,0x8E,0xDB,0x8A}; // 6C706D73-ACF3-11D3-8CD1-00C04F8EDB8A + +static DRWAV_INLINE drwav_bool32 drwav__guid_equal(const drwav_uint8 a[16], const drwav_uint8 b[16]) +{ + const drwav_uint32* a32 = (const drwav_uint32*)a; + const drwav_uint32* b32 = (const drwav_uint32*)b; + + return + a32[0] == b32[0] && + a32[1] == b32[1] && + a32[2] == b32[2] && + a32[3] == b32[3]; +} + +static DRWAV_INLINE drwav_bool32 drwav__fourcc_equal(const unsigned char* a, const char* b) +{ + return + a[0] == b[0] && + a[1] == b[1] && + a[2] == b[2] && + a[3] == b[3]; +} + + + +static DRWAV_INLINE int drwav__is_little_endian() +{ + int n = 1; + return (*(char*)&n) == 1; +} + +static DRWAV_INLINE unsigned short drwav__bytes_to_u16(const unsigned char* data) +{ + return (data[0] << 0) | (data[1] << 8); +} + +static DRWAV_INLINE short drwav__bytes_to_s16(const unsigned char* data) +{ + return (short)drwav__bytes_to_u16(data); +} + +static DRWAV_INLINE unsigned int drwav__bytes_to_u32(const unsigned char* data) +{ + return (data[0] << 0) | (data[1] << 8) | (data[2] << 16) | (data[3] << 24); +} + +static DRWAV_INLINE drwav_uint64 drwav__bytes_to_u64(const unsigned char* data) +{ + return + ((drwav_uint64)data[0] << 0) | ((drwav_uint64)data[1] << 8) | ((drwav_uint64)data[2] << 16) | ((drwav_uint64)data[3] << 24) | + ((drwav_uint64)data[4] << 32) | ((drwav_uint64)data[5] << 40) | ((drwav_uint64)data[6] << 48) | ((drwav_uint64)data[7] << 56); +} + +static DRWAV_INLINE void drwav__bytes_to_guid(const unsigned char* data, drwav_uint8* guid) +{ + for (int i = 0; i < 16; ++i) { + guid[i] = data[i]; + } +} + + +static DRWAV_INLINE drwav_bool32 drwav__is_compressed_format_tag(drwav_uint16 formatTag) +{ + return + formatTag == DR_WAVE_FORMAT_ADPCM || + formatTag == DR_WAVE_FORMAT_DVI_ADPCM; +} + + +drwav_uint64 drwav_read_s16__msadpcm(drwav* pWav, drwav_uint64 samplesToRead, drwav_int16* pBufferOut); +drwav_uint64 drwav_read_s16__ima(drwav* pWav, drwav_uint64 samplesToRead, drwav_int16* pBufferOut); +drwav_bool32 drwav_init_write__internal(drwav* pWav, const drwav_data_format* pFormat, drwav_uint64 totalSampleCount, drwav_bool32 isSequential, drwav_write_proc onWrite, drwav_seek_proc onSeek, void* pUserData); +drwav* drwav_open_write__internal(const drwav_data_format* pFormat, drwav_uint64 totalSampleCount, drwav_bool32 isSequential, drwav_write_proc onWrite, drwav_seek_proc onSeek, void* pUserData); + +static drwav_result drwav__read_chunk_header(drwav_read_proc onRead, void* pUserData, drwav_container container, drwav_uint64* pRunningBytesReadOut, drwav_chunk_header* pHeaderOut) +{ + if (container == drwav_container_riff) { + if (onRead(pUserData, pHeaderOut->id.fourcc, 4) != 4) { + return DRWAV_EOF; + } + + unsigned char sizeInBytes[4]; + if (onRead(pUserData, sizeInBytes, 4) != 4) { + return DRWAV_INVALID_FILE; + } + + pHeaderOut->sizeInBytes = drwav__bytes_to_u32(sizeInBytes); + pHeaderOut->paddingSize = (unsigned int)(pHeaderOut->sizeInBytes % 2); + *pRunningBytesReadOut += 8; + } else { + if (onRead(pUserData, pHeaderOut->id.guid, 16) != 16) { + return DRWAV_EOF; + } + + unsigned char sizeInBytes[8]; + if (onRead(pUserData, sizeInBytes, 8) != 8) { + return DRWAV_INVALID_FILE; + } + + pHeaderOut->sizeInBytes = drwav__bytes_to_u64(sizeInBytes) - 24; // <-- Subtract 24 because w64 includes the size of the header. + pHeaderOut->paddingSize = (unsigned int)(pHeaderOut->sizeInBytes % 8); + *pRunningBytesReadOut += 24; + } + + return DRWAV_SUCCESS; +} + +static drwav_bool32 drwav__seek_forward(drwav_seek_proc onSeek, drwav_uint64 offset, void* pUserData) +{ + drwav_uint64 bytesRemainingToSeek = offset; + while (bytesRemainingToSeek > 0) { + if (bytesRemainingToSeek > 0x7FFFFFFF) { + if (!onSeek(pUserData, 0x7FFFFFFF, drwav_seek_origin_current)) { + return DRWAV_FALSE; + } + bytesRemainingToSeek -= 0x7FFFFFFF; + } else { + if (!onSeek(pUserData, (int)bytesRemainingToSeek, drwav_seek_origin_current)) { + return DRWAV_FALSE; + } + bytesRemainingToSeek = 0; + } + } + + return DRWAV_TRUE; +} + +static drwav_bool32 drwav__seek_from_start(drwav_seek_proc onSeek, drwav_uint64 offset, void* pUserData) +{ + if (offset <= 0x7FFFFFFF) { + return onSeek(pUserData, (int)offset, drwav_seek_origin_start); + } + + // Larger than 32-bit seek. + if (!onSeek(pUserData, 0x7FFFFFFF, drwav_seek_origin_start)) { + return DRWAV_FALSE; + } + offset -= 0x7FFFFFFF; + + for (;;) { + if (offset <= 0x7FFFFFFF) { + return onSeek(pUserData, (int)offset, drwav_seek_origin_current); + } + + if (!onSeek(pUserData, 0x7FFFFFFF, drwav_seek_origin_current)) { + return DRWAV_FALSE; + } + offset -= 0x7FFFFFFF; + } + + // Should never get here. + //return DRWAV_TRUE; +} + + +static drwav_bool32 drwav__read_fmt(drwav_read_proc onRead, drwav_seek_proc onSeek, void* pUserData, drwav_container container, drwav_uint64* pRunningBytesReadOut, drwav_fmt* fmtOut) +{ + drwav_chunk_header header; + if (drwav__read_chunk_header(onRead, pUserData, container, pRunningBytesReadOut, &header) != DRWAV_SUCCESS) { + return DRWAV_FALSE; + } + + + // Skip non-fmt chunks. + while ((container == drwav_container_riff && !drwav__fourcc_equal(header.id.fourcc, "fmt ")) || (container == drwav_container_w64 && !drwav__guid_equal(header.id.guid, drwavGUID_W64_FMT))) { + if (!drwav__seek_forward(onSeek, header.sizeInBytes + header.paddingSize, pUserData)) { + return DRWAV_FALSE; + } + *pRunningBytesReadOut += header.sizeInBytes + header.paddingSize; + + // Try the next header. + if (drwav__read_chunk_header(onRead, pUserData, container, pRunningBytesReadOut, &header) != DRWAV_SUCCESS) { + return DRWAV_FALSE; + } + } + + + // Validation. + if (container == drwav_container_riff) { + if (!drwav__fourcc_equal(header.id.fourcc, "fmt ")) { + return DRWAV_FALSE; + } + } else { + if (!drwav__guid_equal(header.id.guid, drwavGUID_W64_FMT)) { + return DRWAV_FALSE; + } + } + + + unsigned char fmt[16]; + if (onRead(pUserData, fmt, sizeof(fmt)) != sizeof(fmt)) { + return DRWAV_FALSE; + } + *pRunningBytesReadOut += sizeof(fmt); + + fmtOut->formatTag = drwav__bytes_to_u16(fmt + 0); + fmtOut->channels = drwav__bytes_to_u16(fmt + 2); + fmtOut->sampleRate = drwav__bytes_to_u32(fmt + 4); + fmtOut->avgBytesPerSec = drwav__bytes_to_u32(fmt + 8); + fmtOut->blockAlign = drwav__bytes_to_u16(fmt + 12); + fmtOut->bitsPerSample = drwav__bytes_to_u16(fmt + 14); + + fmtOut->extendedSize = 0; + fmtOut->validBitsPerSample = 0; + fmtOut->channelMask = 0; + memset(fmtOut->subFormat, 0, sizeof(fmtOut->subFormat)); + + if (header.sizeInBytes > 16) { + unsigned char fmt_cbSize[2]; + if (onRead(pUserData, fmt_cbSize, sizeof(fmt_cbSize)) != sizeof(fmt_cbSize)) { + return DRWAV_FALSE; // Expecting more data. + } + *pRunningBytesReadOut += sizeof(fmt_cbSize); + + int bytesReadSoFar = 18; + + fmtOut->extendedSize = drwav__bytes_to_u16(fmt_cbSize); + if (fmtOut->extendedSize > 0) { + // Simple validation. + if (fmtOut->formatTag == DR_WAVE_FORMAT_EXTENSIBLE) { + if (fmtOut->extendedSize != 22) { + return DRWAV_FALSE; + } + } + + if (fmtOut->formatTag == DR_WAVE_FORMAT_EXTENSIBLE) { + unsigned char fmtext[22]; + if (onRead(pUserData, fmtext, fmtOut->extendedSize) != fmtOut->extendedSize) { + return DRWAV_FALSE; // Expecting more data. + } + + fmtOut->validBitsPerSample = drwav__bytes_to_u16(fmtext + 0); + fmtOut->channelMask = drwav__bytes_to_u32(fmtext + 2); + drwav__bytes_to_guid(fmtext + 6, fmtOut->subFormat); + } else { + if (!onSeek(pUserData, fmtOut->extendedSize, drwav_seek_origin_current)) { + return DRWAV_FALSE; + } + } + *pRunningBytesReadOut += fmtOut->extendedSize; + + bytesReadSoFar += fmtOut->extendedSize; + } + + // Seek past any leftover bytes. For w64 the leftover will be defined based on the chunk size. + if (!onSeek(pUserData, (int)(header.sizeInBytes - bytesReadSoFar), drwav_seek_origin_current)) { + return DRWAV_FALSE; + } + *pRunningBytesReadOut += (header.sizeInBytes - bytesReadSoFar); + } + + if (header.paddingSize > 0) { + if (!onSeek(pUserData, header.paddingSize, drwav_seek_origin_current)) { + return DRWAV_FALSE; + } + *pRunningBytesReadOut += header.paddingSize; + } + + return DRWAV_TRUE; +} + + +#ifndef DR_WAV_NO_STDIO +FILE* drwav_fopen(const char* filePath, const char* openMode) +{ + FILE* pFile; +#if defined(_MSC_VER) && _MSC_VER >= 1400 + if (fopen_s(&pFile, filePath, openMode) != 0) { + return DRWAV_FALSE; + } +#else + pFile = fopen(filePath, openMode); + if (pFile == NULL) { + return DRWAV_FALSE; + } +#endif + + return pFile; +} + +static size_t drwav__on_read_stdio(void* pUserData, void* pBufferOut, size_t bytesToRead) +{ + return fread(pBufferOut, 1, bytesToRead, (FILE*)pUserData); +} + +static size_t drwav__on_write_stdio(void* pUserData, const void* pData, size_t bytesToWrite) +{ + return fwrite(pData, 1, bytesToWrite, (FILE*)pUserData); +} + +static drwav_bool32 drwav__on_seek_stdio(void* pUserData, int offset, drwav_seek_origin origin) +{ + return fseek((FILE*)pUserData, offset, (origin == drwav_seek_origin_current) ? SEEK_CUR : SEEK_SET) == 0; +} + +drwav_bool32 drwav_init_file(drwav* pWav, const char* filename) +{ + return drwav_init_file_ex(pWav, filename, NULL, NULL, 0); +} + +drwav_bool32 drwav_init_file_ex(drwav* pWav, const char* filename, drwav_chunk_proc onChunk, void* pChunkUserData, drwav_uint32 flags) +{ + FILE* pFile = drwav_fopen(filename, "rb"); + if (pFile == NULL) { + return DRWAV_FALSE; + } + + return drwav_init_ex(pWav, drwav__on_read_stdio, drwav__on_seek_stdio, onChunk, (void*)pFile, pChunkUserData, flags); +} + + +drwav_bool32 drwav_init_file_write__internal(drwav* pWav, const char* filename, const drwav_data_format* pFormat, drwav_uint64 totalSampleCount, drwav_bool32 isSequential) +{ + FILE* pFile = drwav_fopen(filename, "wb"); + if (pFile == NULL) { + return DRWAV_FALSE; + } + + return drwav_init_write__internal(pWav, pFormat, totalSampleCount, isSequential, drwav__on_write_stdio, drwav__on_seek_stdio, (void*)pFile); +} + +drwav_bool32 drwav_init_file_write(drwav* pWav, const char* filename, const drwav_data_format* pFormat) +{ + return drwav_init_file_write__internal(pWav, filename, pFormat, 0, DRWAV_FALSE); +} + +drwav_bool32 drwav_init_file_write_sequential(drwav* pWav, const char* filename, const drwav_data_format* pFormat, drwav_uint64 totalSampleCount) +{ + return drwav_init_file_write__internal(pWav, filename, pFormat, totalSampleCount, DRWAV_TRUE); +} + +drwav* drwav_open_file(const char* filename) +{ + return drwav_open_file_ex(filename, NULL, NULL, 0); +} + +drwav* drwav_open_file_ex(const char* filename, drwav_chunk_proc onChunk, void* pChunkUserData, drwav_uint32 flags) +{ + FILE* pFile = drwav_fopen(filename, "rb"); + if (pFile == NULL) { + return DRWAV_FALSE; + } + + drwav* pWav = drwav_open_ex(drwav__on_read_stdio, drwav__on_seek_stdio, onChunk, (void*)pFile, pChunkUserData, flags); + if (pWav == NULL) { + fclose(pFile); + return NULL; + } + + return pWav; +} + + +drwav* drwav_open_file_write__internal(const char* filename, const drwav_data_format* pFormat, drwav_uint64 totalSampleCount, drwav_bool32 isSequential) +{ + FILE* pFile = drwav_fopen(filename, "wb"); + if (pFile == NULL) { + return DRWAV_FALSE; + } + + drwav* pWav = drwav_open_write__internal(pFormat, totalSampleCount, isSequential, drwav__on_write_stdio, drwav__on_seek_stdio, (void*)pFile); + if (pWav == NULL) { + fclose(pFile); + return NULL; + } + + return pWav; +} + +drwav* drwav_open_file_write(const char* filename, const drwav_data_format* pFormat) +{ + return drwav_open_file_write__internal(filename, pFormat, 0, DRWAV_FALSE); +} + +drwav* drwav_open_file_write_sequential(const char* filename, const drwav_data_format* pFormat, drwav_uint64 totalSampleCount) +{ + return drwav_open_file_write__internal(filename, pFormat, totalSampleCount, DRWAV_TRUE); +} +#endif //DR_WAV_NO_STDIO + + +static size_t drwav__on_read_memory(void* pUserData, void* pBufferOut, size_t bytesToRead) +{ + drwav__memory_stream* memory = (drwav__memory_stream*)pUserData; + drwav_assert(memory != NULL); + drwav_assert(memory->dataSize >= memory->currentReadPos); + + size_t bytesRemaining = memory->dataSize - memory->currentReadPos; + if (bytesToRead > bytesRemaining) { + bytesToRead = bytesRemaining; + } + + if (bytesToRead > 0) { + DRWAV_COPY_MEMORY(pBufferOut, memory->data + memory->currentReadPos, bytesToRead); + memory->currentReadPos += bytesToRead; + } + + return bytesToRead; +} + +static drwav_bool32 drwav__on_seek_memory(void* pUserData, int offset, drwav_seek_origin origin) +{ + drwav__memory_stream* memory = (drwav__memory_stream*)pUserData; + drwav_assert(memory != NULL); + + if (origin == drwav_seek_origin_current) { + if (offset > 0) { + if (memory->currentReadPos + offset > memory->dataSize) { + return DRWAV_FALSE; // Trying to seek too far forward. + } + } else { + if (memory->currentReadPos < (size_t)-offset) { + return DRWAV_FALSE; // Trying to seek too far backwards. + } + } + + // This will never underflow thanks to the clamps above. + memory->currentReadPos += offset; + } else { + if ((drwav_uint32)offset <= memory->dataSize) { + memory->currentReadPos = offset; + } else { + return DRWAV_FALSE; // Trying to seek too far forward. + } + } + + return DRWAV_TRUE; +} + +static size_t drwav__on_write_memory(void* pUserData, const void* pDataIn, size_t bytesToWrite) +{ + drwav__memory_stream_write* memory = (drwav__memory_stream_write*)pUserData; + drwav_assert(memory != NULL); + drwav_assert(memory->dataCapacity >= memory->currentWritePos); + + size_t bytesRemaining = memory->dataCapacity - memory->currentWritePos; + if (bytesRemaining < bytesToWrite) { + // Need to reallocate. + size_t newDataCapacity = (memory->dataCapacity == 0) ? 256 : memory->dataCapacity * 2; + + // If doubling wasn't enough, just make it the minimum required size to write the data. + if ((newDataCapacity - memory->currentWritePos) < bytesToWrite) { + newDataCapacity = memory->currentWritePos + bytesToWrite; + } + + void* pNewData = DRWAV_REALLOC(*memory->ppData, newDataCapacity); + if (pNewData == NULL) { + return 0; + } + + *memory->ppData = pNewData; + memory->dataCapacity = newDataCapacity; + } + + drwav_uint8* pDataOut = (drwav_uint8*)(*memory->ppData); + DRWAV_COPY_MEMORY(pDataOut + memory->currentWritePos, pDataIn, bytesToWrite); + + memory->currentWritePos += bytesToWrite; + if (memory->dataSize < memory->currentWritePos) { + memory->dataSize = memory->currentWritePos; + } + + *memory->pDataSize = memory->dataSize; + + return bytesToWrite; +} + +static drwav_bool32 drwav__on_seek_memory_write(void* pUserData, int offset, drwav_seek_origin origin) +{ + drwav__memory_stream_write* memory = (drwav__memory_stream_write*)pUserData; + drwav_assert(memory != NULL); + + if (origin == drwav_seek_origin_current) { + if (offset > 0) { + if (memory->currentWritePos + offset > memory->dataSize) { + offset = (int)(memory->dataSize - memory->currentWritePos); // Trying to seek too far forward. + } + } else { + if (memory->currentWritePos < (size_t)-offset) { + offset = -(int)memory->currentWritePos; // Trying to seek too far backwards. + } + } + + // This will never underflow thanks to the clamps above. + memory->currentWritePos += offset; + } else { + if ((drwav_uint32)offset <= memory->dataSize) { + memory->currentWritePos = offset; + } else { + memory->currentWritePos = memory->dataSize; // Trying to seek too far forward. + } + } + + return DRWAV_TRUE; +} + +drwav_bool32 drwav_init_memory(drwav* pWav, const void* data, size_t dataSize) +{ + return drwav_init_memory_ex(pWav, data, dataSize, NULL, NULL, 0); +} + +drwav_bool32 drwav_init_memory_ex(drwav* pWav, const void* data, size_t dataSize, drwav_chunk_proc onChunk, void* pChunkUserData, drwav_uint32 flags) +{ + if (data == NULL || dataSize == 0) { + return DRWAV_FALSE; + } + + drwav__memory_stream memoryStream; + drwav_zero_memory(&memoryStream, sizeof(memoryStream)); + memoryStream.data = (const unsigned char*)data; + memoryStream.dataSize = dataSize; + memoryStream.currentReadPos = 0; + + if (!drwav_init_ex(pWav, drwav__on_read_memory, drwav__on_seek_memory, onChunk, (void*)&memoryStream, pChunkUserData, flags)) { + return DRWAV_FALSE; + } + + pWav->memoryStream = memoryStream; + pWav->pUserData = &pWav->memoryStream; + return DRWAV_TRUE; +} + + +drwav_bool32 drwav_init_memory_write__internal(drwav* pWav, void** ppData, size_t* pDataSize, const drwav_data_format* pFormat, drwav_uint64 totalSampleCount, drwav_bool32 isSequential) +{ + if (ppData == NULL) { + return DRWAV_FALSE; + } + + *ppData = NULL; // Important because we're using realloc()! + *pDataSize = 0; + + drwav__memory_stream_write memoryStreamWrite; + drwav_zero_memory(&memoryStreamWrite, sizeof(memoryStreamWrite)); + memoryStreamWrite.ppData = ppData; + memoryStreamWrite.pDataSize = pDataSize; + memoryStreamWrite.dataSize = 0; + memoryStreamWrite.dataCapacity = 0; + memoryStreamWrite.currentWritePos = 0; + + if (!drwav_init_write__internal(pWav, pFormat, totalSampleCount, isSequential, drwav__on_write_memory, drwav__on_seek_memory_write, (void*)&memoryStreamWrite)) { + return DRWAV_FALSE; + } + + pWav->memoryStreamWrite = memoryStreamWrite; + pWav->pUserData = &pWav->memoryStreamWrite; + return DRWAV_TRUE; +} + +drwav_bool32 drwav_init_memory_write(drwav* pWav, void** ppData, size_t* pDataSize, const drwav_data_format* pFormat) +{ + return drwav_init_memory_write__internal(pWav, ppData, pDataSize, pFormat, 0, DRWAV_FALSE); +} + +drwav_bool32 drwav_init_memory_write_sequential(drwav* pWav, void** ppData, size_t* pDataSize, const drwav_data_format* pFormat, drwav_uint64 totalSampleCount) +{ + return drwav_init_memory_write__internal(pWav, ppData, pDataSize, pFormat, totalSampleCount, DRWAV_TRUE); +} + + +drwav* drwav_open_memory(const void* data, size_t dataSize) +{ + return drwav_open_memory_ex(data, dataSize, NULL, NULL, 0); +} + +drwav* drwav_open_memory_ex(const void* data, size_t dataSize, drwav_chunk_proc onChunk, void* pChunkUserData, drwav_uint32 flags) +{ + if (data == NULL || dataSize == 0) { + return NULL; + } + + drwav__memory_stream memoryStream; + drwav_zero_memory(&memoryStream, sizeof(memoryStream)); + memoryStream.data = (const unsigned char*)data; + memoryStream.dataSize = dataSize; + memoryStream.currentReadPos = 0; + + drwav* pWav = drwav_open_ex(drwav__on_read_memory, drwav__on_seek_memory, onChunk, (void*)&memoryStream, pChunkUserData, flags); + if (pWav == NULL) { + return NULL; + } + + pWav->memoryStream = memoryStream; + pWav->pUserData = &pWav->memoryStream; + return pWav; +} + + +drwav* drwav_open_memory_write__internal(void** ppData, size_t* pDataSize, const drwav_data_format* pFormat, drwav_uint64 totalSampleCount, drwav_bool32 isSequential) +{ + if (ppData == NULL) { + return NULL; + } + + *ppData = NULL; // Important because we're using realloc()! + *pDataSize = 0; + + drwav__memory_stream_write memoryStreamWrite; + drwav_zero_memory(&memoryStreamWrite, sizeof(memoryStreamWrite)); + memoryStreamWrite.ppData = ppData; + memoryStreamWrite.pDataSize = pDataSize; + memoryStreamWrite.dataSize = 0; + memoryStreamWrite.dataCapacity = 0; + memoryStreamWrite.currentWritePos = 0; + + drwav* pWav = drwav_open_write__internal(pFormat, totalSampleCount, isSequential, drwav__on_write_memory, drwav__on_seek_memory_write, (void*)&memoryStreamWrite); + if (pWav == NULL) { + return NULL; + } + + pWav->memoryStreamWrite = memoryStreamWrite; + pWav->pUserData = &pWav->memoryStreamWrite; + return pWav; +} + +drwav* drwav_open_memory_write(void** ppData, size_t* pDataSize, const drwav_data_format* pFormat) +{ + return drwav_open_memory_write__internal(ppData, pDataSize, pFormat, 0, DRWAV_FALSE); +} + +drwav* drwav_open_memory_write_sequential(void** ppData, size_t* pDataSize, const drwav_data_format* pFormat, drwav_uint64 totalSampleCount) +{ + return drwav_open_memory_write__internal(ppData, pDataSize, pFormat, totalSampleCount, DRWAV_TRUE); +} + + +size_t drwav__on_read(drwav_read_proc onRead, void* pUserData, void* pBufferOut, size_t bytesToRead, drwav_uint64* pCursor) +{ + drwav_assert(onRead != NULL); + drwav_assert(pCursor != NULL); + + size_t bytesRead = onRead(pUserData, pBufferOut, bytesToRead); + *pCursor += bytesRead; + return bytesRead; +} + +drwav_bool32 drwav__on_seek(drwav_seek_proc onSeek, void* pUserData, int offset, drwav_seek_origin origin, drwav_uint64* pCursor) +{ + drwav_assert(onSeek != NULL); + drwav_assert(pCursor != NULL); + + if (!onSeek(pUserData, offset, origin)) { + return DRWAV_FALSE; + } + + if (origin == drwav_seek_origin_start) { + *pCursor = offset; + } else { + *pCursor += offset; + } + + return DRWAV_TRUE; +} + + +drwav_bool32 drwav_init(drwav* pWav, drwav_read_proc onRead, drwav_seek_proc onSeek, void* pUserData) +{ + return drwav_init_ex(pWav, onRead, onSeek, NULL, pUserData, NULL, 0); +} + +drwav_bool32 drwav_init_ex(drwav* pWav, drwav_read_proc onRead, drwav_seek_proc onSeek, drwav_chunk_proc onChunk, void* pReadSeekUserData, void* pChunkUserData, drwav_uint32 flags) +{ + if (onRead == NULL || onSeek == NULL) { + return DRWAV_FALSE; + } + + drwav_uint64 cursor = 0; // <-- Keeps track of the byte position so we can seek to specific locations. + drwav_bool32 sequential = (flags & DRWAV_SEQUENTIAL) != 0; + + drwav_zero_memory(pWav, sizeof(*pWav)); + pWav->onRead = onRead; + pWav->onSeek = onSeek; + pWav->pUserData = pReadSeekUserData; + + // The first 4 bytes should be the RIFF identifier. + unsigned char riff[4]; + if (drwav__on_read(onRead, pReadSeekUserData, riff, sizeof(riff), &cursor) != sizeof(riff)) { + return DRWAV_FALSE; + } + + // The first 4 bytes can be used to identify the container. For RIFF files it will start with "RIFF" and for + // w64 it will start with "riff". + if (drwav__fourcc_equal(riff, "RIFF")) { + pWav->container = drwav_container_riff; + } else if (drwav__fourcc_equal(riff, "riff")) { + pWav->container = drwav_container_w64; + + // Check the rest of the GUID for validity. + drwav_uint8 riff2[12]; + if (drwav__on_read(onRead, pReadSeekUserData, riff2, sizeof(riff2), &cursor) != sizeof(riff2)) { + return DRWAV_FALSE; + } + + for (int i = 0; i < 12; ++i) { + if (riff2[i] != drwavGUID_W64_RIFF[i+4]) { + return DRWAV_FALSE; + } + } + } else { + return DRWAV_FALSE; // Unknown or unsupported container. + } + + + if (pWav->container == drwav_container_riff) { + // RIFF/WAVE + unsigned char chunkSizeBytes[4]; + if (drwav__on_read(onRead, pReadSeekUserData, chunkSizeBytes, sizeof(chunkSizeBytes), &cursor) != sizeof(chunkSizeBytes)) { + return DRWAV_FALSE; + } + + unsigned int chunkSize = drwav__bytes_to_u32(chunkSizeBytes); + if (chunkSize < 36) { + return DRWAV_FALSE; // Chunk size should always be at least 36 bytes. + } + + unsigned char wave[4]; + if (drwav__on_read(onRead, pReadSeekUserData, wave, sizeof(wave), &cursor) != sizeof(wave)) { + return DRWAV_FALSE; + } + + if (!drwav__fourcc_equal(wave, "WAVE")) { + return DRWAV_FALSE; // Expecting "WAVE". + } + } else { + // W64 + unsigned char chunkSize[8]; + if (drwav__on_read(onRead, pReadSeekUserData, chunkSize, sizeof(chunkSize), &cursor) != sizeof(chunkSize)) { + return DRWAV_FALSE; + } + + if (drwav__bytes_to_u64(chunkSize) < 80) { + return DRWAV_FALSE; + } + + drwav_uint8 wave[16]; + if (drwav__on_read(onRead, pReadSeekUserData, wave, sizeof(wave), &cursor) != sizeof(wave)) { + return DRWAV_FALSE; + } + + if (!drwav__guid_equal(wave, drwavGUID_W64_WAVE)) { + return DRWAV_FALSE; + } + } + + + // The next bytes should be the "fmt " chunk. + drwav_fmt fmt; + if (!drwav__read_fmt(onRead, onSeek, pReadSeekUserData, pWav->container, &cursor, &fmt)) { + return DRWAV_FALSE; // Failed to read the "fmt " chunk. + } + + // Basic validation. + if (fmt.sampleRate == 0 || fmt.channels == 0 || fmt.bitsPerSample == 0 || fmt.blockAlign == 0) { + return DRWAV_FALSE; // Invalid channel count. Probably an invalid WAV file. + } + + + // Translate the internal format. + unsigned short translatedFormatTag = fmt.formatTag; + if (translatedFormatTag == DR_WAVE_FORMAT_EXTENSIBLE) { + translatedFormatTag = drwav__bytes_to_u16(fmt.subFormat + 0); + } + + + + drwav_uint64 sampleCountFromFactChunk = 0; + + // We need to enumerate over each chunk for two reasons: + // 1) The "data" chunk may not be the next one + // 2) We may want to report each chunk back to the client + // + // In order to correctly report each chunk back to the client we will need to keep looping until the end of the file. + drwav_bool32 foundDataChunk = DRWAV_FALSE; + drwav_uint64 dataChunkSize = 0; + + // The next chunk we care about is the "data" chunk. This is not necessarily the next chunk so we'll need to loop. + drwav_uint64 chunkSize = 0; + for (;;) + { + drwav_chunk_header header; + drwav_result result = drwav__read_chunk_header(onRead, pReadSeekUserData, pWav->container, &cursor, &header); + if (result != DRWAV_SUCCESS) { + if (!foundDataChunk) { + return DRWAV_FALSE; + } else { + break; // Probably at the end of the file. Get out of the loop. + } + } + + // Tell the client about this chunk. + if (!sequential && onChunk != NULL) { + drwav_uint64 callbackBytesRead = onChunk(pChunkUserData, onRead, onSeek, pReadSeekUserData, &header); + + // dr_wav may need to read the contents of the chunk, so we now need to seek back to the position before + // we called the callback. + if (callbackBytesRead > 0) { + if (!drwav__seek_from_start(onSeek, cursor, pReadSeekUserData)) { + return DRWAV_FALSE; + } + } + } + + + if (!foundDataChunk) { + pWav->dataChunkDataPos = cursor; + } + + chunkSize = header.sizeInBytes; + if (pWav->container == drwav_container_riff) { + if (drwav__fourcc_equal(header.id.fourcc, "data")) { + foundDataChunk = DRWAV_TRUE; + dataChunkSize = chunkSize; + } + } else { + if (drwav__guid_equal(header.id.guid, drwavGUID_W64_DATA)) { + foundDataChunk = DRWAV_TRUE; + dataChunkSize = chunkSize; + } + } + + // If at this point we have found the data chunk and we're running in sequential mode, we need to break out of this loop. The reason for + // this is that we would otherwise require a backwards seek which sequential mode forbids. + if (foundDataChunk && sequential) { + break; + } + + // Optional. Get the total sample count from the FACT chunk. This is useful for compressed formats. + if (pWav->container == drwav_container_riff) { + if (drwav__fourcc_equal(header.id.fourcc, "fact")) { + drwav_uint32 sampleCount; + if (drwav__on_read(onRead, pReadSeekUserData, &sampleCount, 4, &cursor) != 4) { + return DRWAV_FALSE; + } + chunkSize -= 4; + + if (!foundDataChunk) { + pWav->dataChunkDataPos = cursor; + } + + // The sample count in the "fact" chunk is either unreliable, or I'm not understanding it properly. For now I am only enabling this + // for Microsoft ADPCM formats. + if (pWav->translatedFormatTag == DR_WAVE_FORMAT_ADPCM) { + sampleCountFromFactChunk = sampleCount; + } else { + sampleCountFromFactChunk = 0; + } + } + } else { + if (drwav__guid_equal(header.id.guid, drwavGUID_W64_FACT)) { + if (drwav__on_read(onRead, pReadSeekUserData, &sampleCountFromFactChunk, 8, &cursor) != 8) { + return DRWAV_FALSE; + } + chunkSize -= 8; + + if (!foundDataChunk) { + pWav->dataChunkDataPos = cursor; + } + } + } + + // "smpl" chunk. + if (pWav->container == drwav_container_riff) { + if (drwav__fourcc_equal(header.id.fourcc, "smpl")) { + unsigned char smplHeaderData[36]; // 36 = size of the smpl header section, not including the loop data. + if (chunkSize >= sizeof(smplHeaderData)) { + drwav_uint64 bytesJustRead = drwav__on_read(onRead, pReadSeekUserData, smplHeaderData, sizeof(smplHeaderData), &cursor); + chunkSize -= bytesJustRead; + + if (bytesJustRead == sizeof(smplHeaderData)) { + pWav->smpl.manufacturer = drwav__bytes_to_u32(smplHeaderData+0); + pWav->smpl.product = drwav__bytes_to_u32(smplHeaderData+4); + pWav->smpl.samplePeriod = drwav__bytes_to_u32(smplHeaderData+8); + pWav->smpl.midiUnityNotes = drwav__bytes_to_u32(smplHeaderData+12); + pWav->smpl.midiPitchFraction = drwav__bytes_to_u32(smplHeaderData+16); + pWav->smpl.smpteFormat = drwav__bytes_to_u32(smplHeaderData+20); + pWav->smpl.smpteOffset = drwav__bytes_to_u32(smplHeaderData+24); + pWav->smpl.numSampleLoops = drwav__bytes_to_u32(smplHeaderData+28); + pWav->smpl.samplerData = drwav__bytes_to_u32(smplHeaderData+32); + + for (drwav_uint32 iLoop = 0; iLoop < pWav->smpl.numSampleLoops && iLoop < drwav_countof(pWav->smpl.loops); ++iLoop) { + unsigned char smplLoopData[24]; // 24 = size of a loop section in the smpl chunk. + bytesJustRead = drwav__on_read(onRead, pReadSeekUserData, smplLoopData, sizeof(smplLoopData), &cursor); + chunkSize -= bytesJustRead; + + if (bytesJustRead == sizeof(smplLoopData)) { + pWav->smpl.loops[iLoop].cuePointId = drwav__bytes_to_u32(smplLoopData+0); + pWav->smpl.loops[iLoop].type = drwav__bytes_to_u32(smplLoopData+4); + pWav->smpl.loops[iLoop].start = drwav__bytes_to_u32(smplLoopData+8); + pWav->smpl.loops[iLoop].end = drwav__bytes_to_u32(smplLoopData+12); + pWav->smpl.loops[iLoop].fraction = drwav__bytes_to_u32(smplLoopData+16); + pWav->smpl.loops[iLoop].playCount = drwav__bytes_to_u32(smplLoopData+20); + } else { + break; // Break from the smpl loop for loop. + } + } + } + } else { + // Looks like invalid data. Ignore the chunk. + } + } + } else { + if (drwav__guid_equal(header.id.guid, drwavGUID_W64_SMPL)) { + // This path will be hit when a W64 WAV file contains a smpl chunk. I don't have a sample file to test this path, so a contribution + // is welcome to add support for this. + } + } + + // Make sure we seek past the padding. + chunkSize += header.paddingSize; + if (!drwav__seek_forward(onSeek, chunkSize, pReadSeekUserData)) { + break; + } + cursor += chunkSize; + + if (!foundDataChunk) { + pWav->dataChunkDataPos = cursor; + } + } + + // If we haven't found a data chunk, return an error. + if (!foundDataChunk) { + return DRWAV_FALSE; + } + + // We may have moved passed the data chunk. If so we need to move back. If running in sequential mode we can assume we are already sitting on the data chunk. + if (!sequential) { + if (!drwav__seek_from_start(onSeek, pWav->dataChunkDataPos, pReadSeekUserData)) { + return DRWAV_FALSE; + } + cursor = pWav->dataChunkDataPos; + } + + + // At this point we should be sitting on the first byte of the raw audio data. + + pWav->fmt = fmt; + pWav->sampleRate = fmt.sampleRate; + pWav->channels = fmt.channels; + pWav->bitsPerSample = fmt.bitsPerSample; + pWav->bytesPerSample = fmt.blockAlign / fmt.channels; + pWav->bytesRemaining = dataChunkSize; + pWav->translatedFormatTag = translatedFormatTag; + pWav->dataChunkDataSize = dataChunkSize; + + // The bytes per sample should never be 0 at this point. This would indicate an invalid WAV file. + if (pWav->bytesPerSample == 0) { + return DRWAV_FALSE; + } + + if (sampleCountFromFactChunk != 0) { + pWav->totalSampleCount = sampleCountFromFactChunk * fmt.channels; + } else { + pWav->totalSampleCount = dataChunkSize / pWav->bytesPerSample; + + if (pWav->translatedFormatTag == DR_WAVE_FORMAT_ADPCM) { + drwav_uint64 blockCount = dataChunkSize / fmt.blockAlign; + pWav->totalSampleCount = (blockCount * (fmt.blockAlign - (6*pWav->channels))) * 2; // x2 because two samples per byte. + } + if (pWav->translatedFormatTag == DR_WAVE_FORMAT_DVI_ADPCM) { + drwav_uint64 blockCount = dataChunkSize / fmt.blockAlign; + pWav->totalSampleCount = ((blockCount * (fmt.blockAlign - (4*pWav->channels))) * 2) + (blockCount * pWav->channels); + } + } + + // The way we calculate the bytes per sample does not make sense for compressed formats so we just set it to 0. + if (drwav__is_compressed_format_tag(pWav->translatedFormatTag)) { + pWav->bytesPerSample = 0; + } + + // Some formats only support a certain number of channels. + if (pWav->translatedFormatTag == DR_WAVE_FORMAT_ADPCM || pWav->translatedFormatTag == DR_WAVE_FORMAT_DVI_ADPCM) { + if (pWav->channels > 2) { + return DRWAV_FALSE; + } + } + +#ifdef DR_WAV_LIBSNDFILE_COMPAT + // I use libsndfile as a benchmark for testing, however in the version I'm using (from the Windows installer on the libsndfile website), + // it appears the total sample count libsndfile uses for MS-ADPCM is incorrect. It would seem they are computing the total sample count + // from the number of blocks, however this results in the inclusion of extra silent samples at the end of the last block. The correct + // way to know the total sample count is to inspect the "fact" chunk, which should always be present for compressed formats, and should + // always include the sample count. This little block of code below is only used to emulate the libsndfile logic so I can properly run my + // correctness tests against libsndfile, and is disabled by default. + if (pWav->translatedFormatTag == DR_WAVE_FORMAT_ADPCM) { + drwav_uint64 blockCount = dataChunkSize / fmt.blockAlign; + pWav->totalSampleCount = (blockCount * (fmt.blockAlign - (6*pWav->channels))) * 2; // x2 because two samples per byte. + } + if (pWav->translatedFormatTag == DR_WAVE_FORMAT_DVI_ADPCM) { + drwav_uint64 blockCount = dataChunkSize / fmt.blockAlign; + pWav->totalSampleCount = ((blockCount * (fmt.blockAlign - (4*pWav->channels))) * 2) + (blockCount * pWav->channels); + } +#endif + + return DRWAV_TRUE; +} + + +drwav_uint32 drwav_riff_chunk_size_riff(drwav_uint64 dataChunkSize) +{ + if (dataChunkSize <= (0xFFFFFFFF - 36)) { + return 36 + (drwav_uint32)dataChunkSize; + } else { + return 0xFFFFFFFF; + } +} + +drwav_uint32 drwav_data_chunk_size_riff(drwav_uint64 dataChunkSize) +{ + if (dataChunkSize <= 0xFFFFFFFF) { + return (drwav_uint32)dataChunkSize; + } else { + return 0xFFFFFFFF; + } +} + +drwav_uint64 drwav_riff_chunk_size_w64(drwav_uint64 dataChunkSize) +{ + return 80 + 24 + dataChunkSize; // +24 because W64 includes the size of the GUID and size fields. +} + +drwav_uint64 drwav_data_chunk_size_w64(drwav_uint64 dataChunkSize) +{ + return 24 + dataChunkSize; // +24 because W64 includes the size of the GUID and size fields. +} + + +drwav_bool32 drwav_init_write__internal(drwav* pWav, const drwav_data_format* pFormat, drwav_uint64 totalSampleCount, drwav_bool32 isSequential, drwav_write_proc onWrite, drwav_seek_proc onSeek, void* pUserData) +{ + if (pWav == NULL) { + return DRWAV_FALSE; + } + + if (onWrite == NULL) { + return DRWAV_FALSE; + } + + if (!isSequential && onSeek == NULL) { + return DRWAV_FALSE; // <-- onSeek is required when in non-sequential mode. + } + + + // Not currently supporting compressed formats. Will need to add support for the "fact" chunk before we enable this. + if (pFormat->format == DR_WAVE_FORMAT_EXTENSIBLE) { + return DRWAV_FALSE; + } + if (pFormat->format == DR_WAVE_FORMAT_ADPCM || pFormat->format == DR_WAVE_FORMAT_DVI_ADPCM) { + return DRWAV_FALSE; + } + + + drwav_zero_memory(pWav, sizeof(*pWav)); + pWav->onWrite = onWrite; + pWav->onSeek = onSeek; + pWav->pUserData = pUserData; + pWav->fmt.formatTag = (drwav_uint16)pFormat->format; + pWav->fmt.channels = (drwav_uint16)pFormat->channels; + pWav->fmt.sampleRate = pFormat->sampleRate; + pWav->fmt.avgBytesPerSec = (drwav_uint32)((pFormat->bitsPerSample * pFormat->sampleRate * pFormat->channels) / 8); + pWav->fmt.blockAlign = (drwav_uint16)((pFormat->channels * pFormat->bitsPerSample) / 8); + pWav->fmt.bitsPerSample = (drwav_uint16)pFormat->bitsPerSample; + pWav->fmt.extendedSize = 0; + pWav->isSequentialWrite = isSequential; + + + size_t runningPos = 0; + + // The initial values for the "RIFF" and "data" chunks depends on whether or not we are initializing in sequential mode or not. In + // sequential mode we set this to its final values straight away since they can be calculated from the total sample count. In non- + // sequential mode we initialize it all to zero and fill it out in drwav_uninit() using a backwards seek. + drwav_uint64 initialDataChunkSize = 0; + if (isSequential) { + initialDataChunkSize = (totalSampleCount * pWav->fmt.bitsPerSample) / 8; + + // The RIFF container has a limit on the number of samples. drwav is not allowing this. There's no practical limits for Wave64 + // so for the sake of simplicity I'm not doing any validation for that. + if (pFormat->container == drwav_container_riff) { + if (initialDataChunkSize > (0xFFFFFFFF - 36)) { + return DRWAV_FALSE; // Not enough room to store every sample. + } + } + } + + pWav->dataChunkDataSizeTargetWrite = initialDataChunkSize; + + + // "RIFF" chunk. + if (pFormat->container == drwav_container_riff) { + drwav_uint32 chunkSizeRIFF = 36 + (drwav_uint32)initialDataChunkSize; // +36 = "RIFF"+[RIFF Chunk Size]+"WAVE" + [sizeof "fmt " chunk] + runningPos += pWav->onWrite(pUserData, "RIFF", 4); + runningPos += pWav->onWrite(pUserData, &chunkSizeRIFF, 4); + runningPos += pWav->onWrite(pUserData, "WAVE", 4); + } else { + drwav_uint64 chunkSizeRIFF = 80 + 24 + initialDataChunkSize; // +24 because W64 includes the size of the GUID and size fields. + runningPos += pWav->onWrite(pUserData, drwavGUID_W64_RIFF, 16); + runningPos += pWav->onWrite(pUserData, &chunkSizeRIFF, 8); + runningPos += pWav->onWrite(pUserData, drwavGUID_W64_WAVE, 16); + } + + // "fmt " chunk. + drwav_uint64 chunkSizeFMT; + if (pFormat->container == drwav_container_riff) { + chunkSizeFMT = 16; + runningPos += pWav->onWrite(pUserData, "fmt ", 4); + runningPos += pWav->onWrite(pUserData, &chunkSizeFMT, 4); + } else { + chunkSizeFMT = 40; + runningPos += pWav->onWrite(pUserData, drwavGUID_W64_FMT, 16); + runningPos += pWav->onWrite(pUserData, &chunkSizeFMT, 8); + } + + runningPos += pWav->onWrite(pUserData, &pWav->fmt.formatTag, 2); + runningPos += pWav->onWrite(pUserData, &pWav->fmt.channels, 2); + runningPos += pWav->onWrite(pUserData, &pWav->fmt.sampleRate, 4); + runningPos += pWav->onWrite(pUserData, &pWav->fmt.avgBytesPerSec, 4); + runningPos += pWav->onWrite(pUserData, &pWav->fmt.blockAlign, 2); + runningPos += pWav->onWrite(pUserData, &pWav->fmt.bitsPerSample, 2); + + pWav->dataChunkDataPos = runningPos; + + // "data" chunk. + if (pFormat->container == drwav_container_riff) { + drwav_uint32 chunkSizeDATA = (drwav_uint32)initialDataChunkSize; + runningPos += pWav->onWrite(pUserData, "data", 4); + runningPos += pWav->onWrite(pUserData, &chunkSizeDATA, 4); + } else { + drwav_uint64 chunkSizeDATA = 24 + initialDataChunkSize; // +24 because W64 includes the size of the GUID and size fields. + runningPos += pWav->onWrite(pUserData, drwavGUID_W64_DATA, 16); + runningPos += pWav->onWrite(pUserData, &chunkSizeDATA, 8); + } + + + // Simple validation. + if (pFormat->container == drwav_container_riff) { + if (runningPos != 20 + chunkSizeFMT + 8) { + return DRWAV_FALSE; + } + } else { + if (runningPos != 40 + chunkSizeFMT + 24) { + return DRWAV_FALSE; + } + } + + + + // Set some properties for the client's convenience. + pWav->container = pFormat->container; + pWav->channels = (drwav_uint16)pFormat->channels; + pWav->sampleRate = pFormat->sampleRate; + pWav->bitsPerSample = (drwav_uint16)pFormat->bitsPerSample; + pWav->bytesPerSample = (drwav_uint16)(pFormat->bitsPerSample >> 3); + pWav->translatedFormatTag = (drwav_uint16)pFormat->format; + + return DRWAV_TRUE; +} + + +drwav_bool32 drwav_init_write(drwav* pWav, const drwav_data_format* pFormat, drwav_write_proc onWrite, drwav_seek_proc onSeek, void* pUserData) +{ + return drwav_init_write__internal(pWav, pFormat, 0, DRWAV_FALSE, onWrite, onSeek, pUserData); // DRWAV_FALSE = Not Sequential +} + +drwav_bool32 drwav_init_write_sequential(drwav* pWav, const drwav_data_format* pFormat, drwav_uint64 totalSampleCount, drwav_write_proc onWrite, void* pUserData) +{ + return drwav_init_write__internal(pWav, pFormat, totalSampleCount, DRWAV_TRUE, onWrite, NULL, pUserData); // DRWAV_TRUE = Sequential +} + +void drwav_uninit(drwav* pWav) +{ + if (pWav == NULL) { + return; + } + + // If the drwav object was opened in write mode we'll need to finalize a few things: + // - Make sure the "data" chunk is aligned to 16-bits for RIFF containers, or 64 bits for W64 containers. + // - Set the size of the "data" chunk. + if (pWav->onWrite != NULL) { + // Validation for sequential mode. + if (pWav->isSequentialWrite) { + drwav_assert(pWav->dataChunkDataSize == pWav->dataChunkDataSizeTargetWrite); + } + + // Padding. Do not adjust pWav->dataChunkDataSize - this should not include the padding. + drwav_uint32 paddingSize = 0; + if (pWav->container == drwav_container_riff) { + paddingSize = (drwav_uint32)(pWav->dataChunkDataSize % 2); + } else { + paddingSize = (drwav_uint32)(pWav->dataChunkDataSize % 8); + } + + if (paddingSize > 0) { + drwav_uint64 paddingData = 0; + pWav->onWrite(pWav->pUserData, &paddingData, paddingSize); + } + + + // Chunk sizes. When using sequential mode, these will have been filled in at initialization time. We only need + // to do this when using non-sequential mode. + if (pWav->onSeek && !pWav->isSequentialWrite) { + if (pWav->container == drwav_container_riff) { + // The "RIFF" chunk size. + if (pWav->onSeek(pWav->pUserData, 4, drwav_seek_origin_start)) { + drwav_uint32 riffChunkSize = drwav_riff_chunk_size_riff(pWav->dataChunkDataSize); + pWav->onWrite(pWav->pUserData, &riffChunkSize, 4); + } + + // the "data" chunk size. + if (pWav->onSeek(pWav->pUserData, (int)pWav->dataChunkDataPos + 4, drwav_seek_origin_start)) { + drwav_uint32 dataChunkSize = drwav_data_chunk_size_riff(pWav->dataChunkDataSize); + pWav->onWrite(pWav->pUserData, &dataChunkSize, 4); + } + } else { + // The "RIFF" chunk size. + if (pWav->onSeek(pWav->pUserData, 16, drwav_seek_origin_start)) { + drwav_uint64 riffChunkSize = drwav_riff_chunk_size_w64(pWav->dataChunkDataSize); + pWav->onWrite(pWav->pUserData, &riffChunkSize, 8); + } + + // The "data" chunk size. + if (pWav->onSeek(pWav->pUserData, (int)pWav->dataChunkDataPos + 16, drwav_seek_origin_start)) { + drwav_uint64 dataChunkSize = drwav_data_chunk_size_w64(pWav->dataChunkDataSize); + pWav->onWrite(pWav->pUserData, &dataChunkSize, 8); + } + } + } + } + +#ifndef DR_WAV_NO_STDIO + // If we opened the file with drwav_open_file() we will want to close the file handle. We can know whether or not drwav_open_file() + // was used by looking at the onRead and onSeek callbacks. + if (pWav->onRead == drwav__on_read_stdio || pWav->onWrite == drwav__on_write_stdio) { + fclose((FILE*)pWav->pUserData); + } +#endif +} + + +drwav* drwav_open(drwav_read_proc onRead, drwav_seek_proc onSeek, void* pUserData) +{ + return drwav_open_ex(onRead, onSeek, NULL, pUserData, NULL, 0); +} + +drwav* drwav_open_ex(drwav_read_proc onRead, drwav_seek_proc onSeek, drwav_chunk_proc onChunk, void* pReadSeekUserData, void* pChunkUserData, drwav_uint32 flags) +{ + drwav* pWav = (drwav*)DRWAV_MALLOC(sizeof(*pWav)); + if (pWav == NULL) { + return NULL; + } + + if (!drwav_init_ex(pWav, onRead, onSeek, onChunk, pReadSeekUserData, pChunkUserData, flags)) { + DRWAV_FREE(pWav); + return NULL; + } + + return pWav; +} + + +drwav* drwav_open_write__internal(const drwav_data_format* pFormat, drwav_uint64 totalSampleCount, drwav_bool32 isSequential, drwav_write_proc onWrite, drwav_seek_proc onSeek, void* pUserData) +{ + drwav* pWav = (drwav*)DRWAV_MALLOC(sizeof(*pWav)); + if (pWav == NULL) { + return NULL; + } + + if (!drwav_init_write__internal(pWav, pFormat, totalSampleCount, isSequential, onWrite, onSeek, pUserData)) { + DRWAV_FREE(pWav); + return NULL; + } + + return pWav; +} + +drwav* drwav_open_write(const drwav_data_format* pFormat, drwav_write_proc onWrite, drwav_seek_proc onSeek, void* pUserData) +{ + return drwav_open_write__internal(pFormat, 0, DRWAV_FALSE, onWrite, onSeek, pUserData); +} + +drwav* drwav_open_write_sequential(const drwav_data_format* pFormat, drwav_uint64 totalSampleCount, drwav_write_proc onWrite, void* pUserData) +{ + return drwav_open_write__internal(pFormat, totalSampleCount, DRWAV_TRUE, onWrite, NULL, pUserData); +} + +void drwav_close(drwav* pWav) +{ + drwav_uninit(pWav); + DRWAV_FREE(pWav); +} + + +size_t drwav_read_raw(drwav* pWav, size_t bytesToRead, void* pBufferOut) +{ + if (pWav == NULL || bytesToRead == 0 || pBufferOut == NULL) { + return 0; + } + + if (bytesToRead > pWav->bytesRemaining) { + bytesToRead = (size_t)pWav->bytesRemaining; + } + + size_t bytesRead = pWav->onRead(pWav->pUserData, pBufferOut, bytesToRead); + + pWav->bytesRemaining -= bytesRead; + return bytesRead; +} + +drwav_uint64 drwav_read(drwav* pWav, drwav_uint64 samplesToRead, void* pBufferOut) +{ + if (pWav == NULL || samplesToRead == 0 || pBufferOut == NULL) { + return 0; + } + + // Cannot use this function for compressed formats. + if (drwav__is_compressed_format_tag(pWav->translatedFormatTag)) { + return 0; + } + + // Don't try to read more samples than can potentially fit in the output buffer. + if (samplesToRead * pWav->bytesPerSample > DRWAV_SIZE_MAX) { + samplesToRead = DRWAV_SIZE_MAX / pWav->bytesPerSample; + } + + size_t bytesRead = drwav_read_raw(pWav, (size_t)(samplesToRead * pWav->bytesPerSample), pBufferOut); + return bytesRead / pWav->bytesPerSample; +} + +drwav_uint64 drwav_read_pcm_frames(drwav* pWav, drwav_uint64 framesToRead, void* pBufferOut) +{ + return drwav_read(pWav, framesToRead * pWav->channels, pBufferOut) / pWav->channels; +} + +drwav_bool32 drwav_seek_to_first_sample(drwav* pWav) +{ + if (pWav->onWrite != NULL) { + return DRWAV_FALSE; // No seeking in write mode. + } + + if (!pWav->onSeek(pWav->pUserData, (int)pWav->dataChunkDataPos, drwav_seek_origin_start)) { + return DRWAV_FALSE; + } + + if (drwav__is_compressed_format_tag(pWav->translatedFormatTag)) { + pWav->compressed.iCurrentSample = 0; + } + + pWav->bytesRemaining = pWav->dataChunkDataSize; + return DRWAV_TRUE; +} + +drwav_bool32 drwav_seek_to_sample(drwav* pWav, drwav_uint64 sample) +{ + // Seeking should be compatible with wave files > 2GB. + + if (pWav->onWrite != NULL) { + return DRWAV_FALSE; // No seeking in write mode. + } + + if (pWav == NULL || pWav->onSeek == NULL) { + return DRWAV_FALSE; + } + + // If there are no samples, just return DRWAV_TRUE without doing anything. + if (pWav->totalSampleCount == 0) { + return DRWAV_TRUE; + } + + // Make sure the sample is clamped. + if (sample >= pWav->totalSampleCount) { + sample = pWav->totalSampleCount - 1; + } + + + // For compressed formats we just use a slow generic seek. If we are seeking forward we just seek forward. If we are going backwards we need + // to seek back to the start. + if (drwav__is_compressed_format_tag(pWav->translatedFormatTag)) { + // TODO: This can be optimized. + + // If we're seeking forward it's simple - just keep reading samples until we hit the sample we're requesting. If we're seeking backwards, + // we first need to seek back to the start and then just do the same thing as a forward seek. + if (sample < pWav->compressed.iCurrentSample) { + if (!drwav_seek_to_first_sample(pWav)) { + return DRWAV_FALSE; + } + } + + if (sample > pWav->compressed.iCurrentSample) { + drwav_uint64 offset = sample - pWav->compressed.iCurrentSample; + + drwav_int16 devnull[2048]; + while (offset > 0) { + drwav_uint64 samplesToRead = offset; + if (samplesToRead > 2048) { + samplesToRead = 2048; + } + + drwav_uint64 samplesRead = 0; + if (pWav->translatedFormatTag == DR_WAVE_FORMAT_ADPCM) { + samplesRead = drwav_read_s16__msadpcm(pWav, samplesToRead, devnull); + } else if (pWav->translatedFormatTag == DR_WAVE_FORMAT_DVI_ADPCM) { + samplesRead = drwav_read_s16__ima(pWav, samplesToRead, devnull); + } else { + assert(DRWAV_FALSE); // If this assertion is triggered it means I've implemented a new compressed format but forgot to add a branch for it here. + } + + if (samplesRead != samplesToRead) { + return DRWAV_FALSE; + } + + offset -= samplesRead; + } + } + } else { + drwav_uint64 totalSizeInBytes = pWav->totalSampleCount * pWav->bytesPerSample; + drwav_assert(totalSizeInBytes >= pWav->bytesRemaining); + + drwav_uint64 currentBytePos = totalSizeInBytes - pWav->bytesRemaining; + drwav_uint64 targetBytePos = sample * pWav->bytesPerSample; + + drwav_uint64 offset; + if (currentBytePos < targetBytePos) { + // Offset forwards. + offset = (targetBytePos - currentBytePos); + } else { + // Offset backwards. + if (!drwav_seek_to_first_sample(pWav)) { + return DRWAV_FALSE; + } + offset = targetBytePos; + } + + while (offset > 0) { + int offset32 = ((offset > INT_MAX) ? INT_MAX : (int)offset); + if (!pWav->onSeek(pWav->pUserData, offset32, drwav_seek_origin_current)) { + return DRWAV_FALSE; + } + + pWav->bytesRemaining -= offset32; + offset -= offset32; + } + } + + return DRWAV_TRUE; +} + +drwav_bool32 drwav_seek_to_pcm_frame(drwav* pWav, drwav_uint64 targetFrameIndex) +{ + return drwav_seek_to_sample(pWav, targetFrameIndex * pWav->channels); +} + + +size_t drwav_write_raw(drwav* pWav, size_t bytesToWrite, const void* pData) +{ + if (pWav == NULL || bytesToWrite == 0 || pData == NULL) { + return 0; + } + + size_t bytesWritten = pWav->onWrite(pWav->pUserData, pData, bytesToWrite); + pWav->dataChunkDataSize += bytesWritten; + + return bytesWritten; +} + +drwav_uint64 drwav_write(drwav* pWav, drwav_uint64 samplesToWrite, const void* pData) +{ + if (pWav == NULL || samplesToWrite == 0 || pData == NULL) { + return 0; + } + + drwav_uint64 bytesToWrite = ((samplesToWrite * pWav->bitsPerSample) / 8); + if (bytesToWrite > DRWAV_SIZE_MAX) { + return 0; + } + + drwav_uint64 bytesWritten = 0; + const drwav_uint8* pRunningData = (const drwav_uint8*)pData; + while (bytesToWrite > 0) { + drwav_uint64 bytesToWriteThisIteration = bytesToWrite; + if (bytesToWriteThisIteration > DRWAV_SIZE_MAX) { + bytesToWriteThisIteration = DRWAV_SIZE_MAX; + } + + size_t bytesJustWritten = drwav_write_raw(pWav, (size_t)bytesToWriteThisIteration, pRunningData); + if (bytesJustWritten == 0) { + break; + } + + bytesToWrite -= bytesJustWritten; + bytesWritten += bytesJustWritten; + pRunningData += bytesJustWritten; + } + + return (bytesWritten * 8) / pWav->bitsPerSample; +} + +drwav_uint64 drwav_write_pcm_frames(drwav* pWav, drwav_uint64 framesToWrite, const void* pData) +{ + return drwav_write(pWav, framesToWrite * pWav->channels, pData) / pWav->channels; +} + + + +drwav_uint64 drwav_read_s16__msadpcm(drwav* pWav, drwav_uint64 samplesToRead, drwav_int16* pBufferOut) +{ + drwav_assert(pWav != NULL); + drwav_assert(samplesToRead > 0); + drwav_assert(pBufferOut != NULL); + + // TODO: Lots of room for optimization here. + + drwav_uint64 totalSamplesRead = 0; + + while (samplesToRead > 0 && pWav->compressed.iCurrentSample < pWav->totalSampleCount) { + // If there are no cached samples we need to load a new block. + if (pWav->msadpcm.cachedSampleCount == 0 && pWav->msadpcm.bytesRemainingInBlock == 0) { + if (pWav->channels == 1) { + // Mono. + drwav_uint8 header[7]; + if (pWav->onRead(pWav->pUserData, header, sizeof(header)) != sizeof(header)) { + return totalSamplesRead; + } + pWav->msadpcm.bytesRemainingInBlock = pWav->fmt.blockAlign - sizeof(header); + + pWav->msadpcm.predictor[0] = header[0]; + pWav->msadpcm.delta[0] = drwav__bytes_to_s16(header + 1); + pWav->msadpcm.prevSamples[0][1] = (drwav_int32)drwav__bytes_to_s16(header + 3); + pWav->msadpcm.prevSamples[0][0] = (drwav_int32)drwav__bytes_to_s16(header + 5); + pWav->msadpcm.cachedSamples[2] = pWav->msadpcm.prevSamples[0][0]; + pWav->msadpcm.cachedSamples[3] = pWav->msadpcm.prevSamples[0][1]; + pWav->msadpcm.cachedSampleCount = 2; + } else { + // Stereo. + drwav_uint8 header[14]; + if (pWav->onRead(pWav->pUserData, header, sizeof(header)) != sizeof(header)) { + return totalSamplesRead; + } + pWav->msadpcm.bytesRemainingInBlock = pWav->fmt.blockAlign - sizeof(header); + + pWav->msadpcm.predictor[0] = header[0]; + pWav->msadpcm.predictor[1] = header[1]; + pWav->msadpcm.delta[0] = drwav__bytes_to_s16(header + 2); + pWav->msadpcm.delta[1] = drwav__bytes_to_s16(header + 4); + pWav->msadpcm.prevSamples[0][1] = (drwav_int32)drwav__bytes_to_s16(header + 6); + pWav->msadpcm.prevSamples[1][1] = (drwav_int32)drwav__bytes_to_s16(header + 8); + pWav->msadpcm.prevSamples[0][0] = (drwav_int32)drwav__bytes_to_s16(header + 10); + pWav->msadpcm.prevSamples[1][0] = (drwav_int32)drwav__bytes_to_s16(header + 12); + + pWav->msadpcm.cachedSamples[0] = pWav->msadpcm.prevSamples[0][0]; + pWav->msadpcm.cachedSamples[1] = pWav->msadpcm.prevSamples[1][0]; + pWav->msadpcm.cachedSamples[2] = pWav->msadpcm.prevSamples[0][1]; + pWav->msadpcm.cachedSamples[3] = pWav->msadpcm.prevSamples[1][1]; + pWav->msadpcm.cachedSampleCount = 4; + } + } + + // Output anything that's cached. + while (samplesToRead > 0 && pWav->msadpcm.cachedSampleCount > 0 && pWav->compressed.iCurrentSample < pWav->totalSampleCount) { + pBufferOut[0] = (drwav_int16)pWav->msadpcm.cachedSamples[drwav_countof(pWav->msadpcm.cachedSamples) - pWav->msadpcm.cachedSampleCount]; + pWav->msadpcm.cachedSampleCount -= 1; + + pBufferOut += 1; + samplesToRead -= 1; + totalSamplesRead += 1; + pWav->compressed.iCurrentSample += 1; + } + + if (samplesToRead == 0) { + return totalSamplesRead; + } + + + // If there's nothing left in the cache, just go ahead and load more. If there's nothing left to load in the current block we just continue to the next + // loop iteration which will trigger the loading of a new block. + if (pWav->msadpcm.cachedSampleCount == 0) { + if (pWav->msadpcm.bytesRemainingInBlock == 0) { + continue; + } else { + drwav_uint8 nibbles; + if (pWav->onRead(pWav->pUserData, &nibbles, 1) != 1) { + return totalSamplesRead; + } + pWav->msadpcm.bytesRemainingInBlock -= 1; + + // TODO: Optimize away these if statements. + drwav_int32 nibble0 = ((nibbles & 0xF0) >> 4); if ((nibbles & 0x80)) { nibble0 |= 0xFFFFFFF0UL; } + drwav_int32 nibble1 = ((nibbles & 0x0F) >> 0); if ((nibbles & 0x08)) { nibble1 |= 0xFFFFFFF0UL; } + + static drwav_int32 adaptationTable[] = { + 230, 230, 230, 230, 307, 409, 512, 614, + 768, 614, 512, 409, 307, 230, 230, 230 + }; + static drwav_int32 coeff1Table[] = { 256, 512, 0, 192, 240, 460, 392 }; + static drwav_int32 coeff2Table[] = { 0, -256, 0, 64, 0, -208, -232 }; + + if (pWav->channels == 1) { + // Mono. + drwav_int32 newSample0; + newSample0 = ((pWav->msadpcm.prevSamples[0][1] * coeff1Table[pWav->msadpcm.predictor[0]]) + (pWav->msadpcm.prevSamples[0][0] * coeff2Table[pWav->msadpcm.predictor[0]])) >> 8; + newSample0 += nibble0 * pWav->msadpcm.delta[0]; + newSample0 = drwav_clamp(newSample0, -32768, 32767); + + pWav->msadpcm.delta[0] = (adaptationTable[((nibbles & 0xF0) >> 4)] * pWav->msadpcm.delta[0]) >> 8; + if (pWav->msadpcm.delta[0] < 16) { + pWav->msadpcm.delta[0] = 16; + } + + pWav->msadpcm.prevSamples[0][0] = pWav->msadpcm.prevSamples[0][1]; + pWav->msadpcm.prevSamples[0][1] = newSample0; + + + drwav_int32 newSample1; + newSample1 = ((pWav->msadpcm.prevSamples[0][1] * coeff1Table[pWav->msadpcm.predictor[0]]) + (pWav->msadpcm.prevSamples[0][0] * coeff2Table[pWav->msadpcm.predictor[0]])) >> 8; + newSample1 += nibble1 * pWav->msadpcm.delta[0]; + newSample1 = drwav_clamp(newSample1, -32768, 32767); + + pWav->msadpcm.delta[0] = (adaptationTable[((nibbles & 0x0F) >> 0)] * pWav->msadpcm.delta[0]) >> 8; + if (pWav->msadpcm.delta[0] < 16) { + pWav->msadpcm.delta[0] = 16; + } + + pWav->msadpcm.prevSamples[0][0] = pWav->msadpcm.prevSamples[0][1]; + pWav->msadpcm.prevSamples[0][1] = newSample1; + + + pWav->msadpcm.cachedSamples[2] = newSample0; + pWav->msadpcm.cachedSamples[3] = newSample1; + pWav->msadpcm.cachedSampleCount = 2; + } else { + // Stereo. + + // Left. + drwav_int32 newSample0; + newSample0 = ((pWav->msadpcm.prevSamples[0][1] * coeff1Table[pWav->msadpcm.predictor[0]]) + (pWav->msadpcm.prevSamples[0][0] * coeff2Table[pWav->msadpcm.predictor[0]])) >> 8; + newSample0 += nibble0 * pWav->msadpcm.delta[0]; + newSample0 = drwav_clamp(newSample0, -32768, 32767); + + pWav->msadpcm.delta[0] = (adaptationTable[((nibbles & 0xF0) >> 4)] * pWav->msadpcm.delta[0]) >> 8; + if (pWav->msadpcm.delta[0] < 16) { + pWav->msadpcm.delta[0] = 16; + } + + pWav->msadpcm.prevSamples[0][0] = pWav->msadpcm.prevSamples[0][1]; + pWav->msadpcm.prevSamples[0][1] = newSample0; + + + // Right. + drwav_int32 newSample1; + newSample1 = ((pWav->msadpcm.prevSamples[1][1] * coeff1Table[pWav->msadpcm.predictor[1]]) + (pWav->msadpcm.prevSamples[1][0] * coeff2Table[pWav->msadpcm.predictor[1]])) >> 8; + newSample1 += nibble1 * pWav->msadpcm.delta[1]; + newSample1 = drwav_clamp(newSample1, -32768, 32767); + + pWav->msadpcm.delta[1] = (adaptationTable[((nibbles & 0x0F) >> 0)] * pWav->msadpcm.delta[1]) >> 8; + if (pWav->msadpcm.delta[1] < 16) { + pWav->msadpcm.delta[1] = 16; + } + + pWav->msadpcm.prevSamples[1][0] = pWav->msadpcm.prevSamples[1][1]; + pWav->msadpcm.prevSamples[1][1] = newSample1; + + pWav->msadpcm.cachedSamples[2] = newSample0; + pWav->msadpcm.cachedSamples[3] = newSample1; + pWav->msadpcm.cachedSampleCount = 2; + } + } + } + } + + return totalSamplesRead; +} + +drwav_uint64 drwav_read_s16__ima(drwav* pWav, drwav_uint64 samplesToRead, drwav_int16* pBufferOut) +{ + drwav_assert(pWav != NULL); + drwav_assert(samplesToRead > 0); + drwav_assert(pBufferOut != NULL); + + // TODO: Lots of room for optimization here. + + drwav_uint64 totalSamplesRead = 0; + + while (samplesToRead > 0 && pWav->compressed.iCurrentSample < pWav->totalSampleCount) { + // If there are no cached samples we need to load a new block. + if (pWav->ima.cachedSampleCount == 0 && pWav->ima.bytesRemainingInBlock == 0) { + if (pWav->channels == 1) { + // Mono. + drwav_uint8 header[4]; + if (pWav->onRead(pWav->pUserData, header, sizeof(header)) != sizeof(header)) { + return totalSamplesRead; + } + pWav->ima.bytesRemainingInBlock = pWav->fmt.blockAlign - sizeof(header); + + pWav->ima.predictor[0] = drwav__bytes_to_s16(header + 0); + pWav->ima.stepIndex[0] = header[2]; + pWav->ima.cachedSamples[drwav_countof(pWav->ima.cachedSamples) - 1] = pWav->ima.predictor[0]; + pWav->ima.cachedSampleCount = 1; + } else { + // Stereo. + drwav_uint8 header[8]; + if (pWav->onRead(pWav->pUserData, header, sizeof(header)) != sizeof(header)) { + return totalSamplesRead; + } + pWav->ima.bytesRemainingInBlock = pWav->fmt.blockAlign - sizeof(header); + + pWav->ima.predictor[0] = drwav__bytes_to_s16(header + 0); + pWav->ima.stepIndex[0] = header[2]; + pWav->ima.predictor[1] = drwav__bytes_to_s16(header + 4); + pWav->ima.stepIndex[1] = header[6]; + + pWav->ima.cachedSamples[drwav_countof(pWav->ima.cachedSamples) - 2] = pWav->ima.predictor[0]; + pWav->ima.cachedSamples[drwav_countof(pWav->ima.cachedSamples) - 1] = pWav->ima.predictor[1]; + pWav->ima.cachedSampleCount = 2; + } + } + + // Output anything that's cached. + while (samplesToRead > 0 && pWav->ima.cachedSampleCount > 0 && pWav->compressed.iCurrentSample < pWav->totalSampleCount) { + pBufferOut[0] = (drwav_int16)pWav->ima.cachedSamples[drwav_countof(pWav->ima.cachedSamples) - pWav->ima.cachedSampleCount]; + pWav->ima.cachedSampleCount -= 1; + + pBufferOut += 1; + samplesToRead -= 1; + totalSamplesRead += 1; + pWav->compressed.iCurrentSample += 1; + } + + if (samplesToRead == 0) { + return totalSamplesRead; + } + + // If there's nothing left in the cache, just go ahead and load more. If there's nothing left to load in the current block we just continue to the next + // loop iteration which will trigger the loading of a new block. + if (pWav->ima.cachedSampleCount == 0) { + if (pWav->ima.bytesRemainingInBlock == 0) { + continue; + } else { + static drwav_int32 indexTable[16] = { + -1, -1, -1, -1, 2, 4, 6, 8, + -1, -1, -1, -1, 2, 4, 6, 8 + }; + + static drwav_int32 stepTable[89] = { + 7, 8, 9, 10, 11, 12, 13, 14, 16, 17, + 19, 21, 23, 25, 28, 31, 34, 37, 41, 45, + 50, 55, 60, 66, 73, 80, 88, 97, 107, 118, + 130, 143, 157, 173, 190, 209, 230, 253, 279, 307, + 337, 371, 408, 449, 494, 544, 598, 658, 724, 796, + 876, 963, 1060, 1166, 1282, 1411, 1552, 1707, 1878, 2066, + 2272, 2499, 2749, 3024, 3327, 3660, 4026, 4428, 4871, 5358, + 5894, 6484, 7132, 7845, 8630, 9493, 10442, 11487, 12635, 13899, + 15289, 16818, 18500, 20350, 22385, 24623, 27086, 29794, 32767 + }; + + // From what I can tell with stereo streams, it looks like every 4 bytes (8 samples) is for one channel. So it goes 4 bytes for the + // left channel, 4 bytes for the right channel. + pWav->ima.cachedSampleCount = 8 * pWav->channels; + for (drwav_uint32 iChannel = 0; iChannel < pWav->channels; ++iChannel) { + drwav_uint8 nibbles[4]; + if (pWav->onRead(pWav->pUserData, &nibbles, 4) != 4) { + return totalSamplesRead; + } + pWav->ima.bytesRemainingInBlock -= 4; + + for (drwav_uint32 iByte = 0; iByte < 4; ++iByte) { + drwav_uint8 nibble0 = ((nibbles[iByte] & 0x0F) >> 0); + drwav_uint8 nibble1 = ((nibbles[iByte] & 0xF0) >> 4); + + drwav_int32 step = stepTable[pWav->ima.stepIndex[iChannel]]; + drwav_int32 predictor = pWav->ima.predictor[iChannel]; + + drwav_int32 diff = step >> 3; + if (nibble0 & 1) diff += step >> 2; + if (nibble0 & 2) diff += step >> 1; + if (nibble0 & 4) diff += step; + if (nibble0 & 8) diff = -diff; + + predictor = drwav_clamp(predictor + diff, -32768, 32767); + pWav->ima.predictor[iChannel] = predictor; + pWav->ima.stepIndex[iChannel] = drwav_clamp(pWav->ima.stepIndex[iChannel] + indexTable[nibble0], 0, (drwav_int32)drwav_countof(stepTable)-1); + pWav->ima.cachedSamples[(drwav_countof(pWav->ima.cachedSamples) - pWav->ima.cachedSampleCount) + (iByte*2+0)*pWav->channels + iChannel] = predictor; + + + step = stepTable[pWav->ima.stepIndex[iChannel]]; + predictor = pWav->ima.predictor[iChannel]; + + diff = step >> 3; + if (nibble1 & 1) diff += step >> 2; + if (nibble1 & 2) diff += step >> 1; + if (nibble1 & 4) diff += step; + if (nibble1 & 8) diff = -diff; + + predictor = drwav_clamp(predictor + diff, -32768, 32767); + pWav->ima.predictor[iChannel] = predictor; + pWav->ima.stepIndex[iChannel] = drwav_clamp(pWav->ima.stepIndex[iChannel] + indexTable[nibble1], 0, (drwav_int32)drwav_countof(stepTable)-1); + pWav->ima.cachedSamples[(drwav_countof(pWav->ima.cachedSamples) - pWav->ima.cachedSampleCount) + (iByte*2+1)*pWav->channels + iChannel] = predictor; + } + } + } + } + } + + return totalSamplesRead; +} + + +#ifndef DR_WAV_NO_CONVERSION_API +static unsigned short g_drwavAlawTable[256] = { + 0xEA80, 0xEB80, 0xE880, 0xE980, 0xEE80, 0xEF80, 0xEC80, 0xED80, 0xE280, 0xE380, 0xE080, 0xE180, 0xE680, 0xE780, 0xE480, 0xE580, + 0xF540, 0xF5C0, 0xF440, 0xF4C0, 0xF740, 0xF7C0, 0xF640, 0xF6C0, 0xF140, 0xF1C0, 0xF040, 0xF0C0, 0xF340, 0xF3C0, 0xF240, 0xF2C0, + 0xAA00, 0xAE00, 0xA200, 0xA600, 0xBA00, 0xBE00, 0xB200, 0xB600, 0x8A00, 0x8E00, 0x8200, 0x8600, 0x9A00, 0x9E00, 0x9200, 0x9600, + 0xD500, 0xD700, 0xD100, 0xD300, 0xDD00, 0xDF00, 0xD900, 0xDB00, 0xC500, 0xC700, 0xC100, 0xC300, 0xCD00, 0xCF00, 0xC900, 0xCB00, + 0xFEA8, 0xFEB8, 0xFE88, 0xFE98, 0xFEE8, 0xFEF8, 0xFEC8, 0xFED8, 0xFE28, 0xFE38, 0xFE08, 0xFE18, 0xFE68, 0xFE78, 0xFE48, 0xFE58, + 0xFFA8, 0xFFB8, 0xFF88, 0xFF98, 0xFFE8, 0xFFF8, 0xFFC8, 0xFFD8, 0xFF28, 0xFF38, 0xFF08, 0xFF18, 0xFF68, 0xFF78, 0xFF48, 0xFF58, + 0xFAA0, 0xFAE0, 0xFA20, 0xFA60, 0xFBA0, 0xFBE0, 0xFB20, 0xFB60, 0xF8A0, 0xF8E0, 0xF820, 0xF860, 0xF9A0, 0xF9E0, 0xF920, 0xF960, + 0xFD50, 0xFD70, 0xFD10, 0xFD30, 0xFDD0, 0xFDF0, 0xFD90, 0xFDB0, 0xFC50, 0xFC70, 0xFC10, 0xFC30, 0xFCD0, 0xFCF0, 0xFC90, 0xFCB0, + 0x1580, 0x1480, 0x1780, 0x1680, 0x1180, 0x1080, 0x1380, 0x1280, 0x1D80, 0x1C80, 0x1F80, 0x1E80, 0x1980, 0x1880, 0x1B80, 0x1A80, + 0x0AC0, 0x0A40, 0x0BC0, 0x0B40, 0x08C0, 0x0840, 0x09C0, 0x0940, 0x0EC0, 0x0E40, 0x0FC0, 0x0F40, 0x0CC0, 0x0C40, 0x0DC0, 0x0D40, + 0x5600, 0x5200, 0x5E00, 0x5A00, 0x4600, 0x4200, 0x4E00, 0x4A00, 0x7600, 0x7200, 0x7E00, 0x7A00, 0x6600, 0x6200, 0x6E00, 0x6A00, + 0x2B00, 0x2900, 0x2F00, 0x2D00, 0x2300, 0x2100, 0x2700, 0x2500, 0x3B00, 0x3900, 0x3F00, 0x3D00, 0x3300, 0x3100, 0x3700, 0x3500, + 0x0158, 0x0148, 0x0178, 0x0168, 0x0118, 0x0108, 0x0138, 0x0128, 0x01D8, 0x01C8, 0x01F8, 0x01E8, 0x0198, 0x0188, 0x01B8, 0x01A8, + 0x0058, 0x0048, 0x0078, 0x0068, 0x0018, 0x0008, 0x0038, 0x0028, 0x00D8, 0x00C8, 0x00F8, 0x00E8, 0x0098, 0x0088, 0x00B8, 0x00A8, + 0x0560, 0x0520, 0x05E0, 0x05A0, 0x0460, 0x0420, 0x04E0, 0x04A0, 0x0760, 0x0720, 0x07E0, 0x07A0, 0x0660, 0x0620, 0x06E0, 0x06A0, + 0x02B0, 0x0290, 0x02F0, 0x02D0, 0x0230, 0x0210, 0x0270, 0x0250, 0x03B0, 0x0390, 0x03F0, 0x03D0, 0x0330, 0x0310, 0x0370, 0x0350 +}; + +static unsigned short g_drwavMulawTable[256] = { + 0x8284, 0x8684, 0x8A84, 0x8E84, 0x9284, 0x9684, 0x9A84, 0x9E84, 0xA284, 0xA684, 0xAA84, 0xAE84, 0xB284, 0xB684, 0xBA84, 0xBE84, + 0xC184, 0xC384, 0xC584, 0xC784, 0xC984, 0xCB84, 0xCD84, 0xCF84, 0xD184, 0xD384, 0xD584, 0xD784, 0xD984, 0xDB84, 0xDD84, 0xDF84, + 0xE104, 0xE204, 0xE304, 0xE404, 0xE504, 0xE604, 0xE704, 0xE804, 0xE904, 0xEA04, 0xEB04, 0xEC04, 0xED04, 0xEE04, 0xEF04, 0xF004, + 0xF0C4, 0xF144, 0xF1C4, 0xF244, 0xF2C4, 0xF344, 0xF3C4, 0xF444, 0xF4C4, 0xF544, 0xF5C4, 0xF644, 0xF6C4, 0xF744, 0xF7C4, 0xF844, + 0xF8A4, 0xF8E4, 0xF924, 0xF964, 0xF9A4, 0xF9E4, 0xFA24, 0xFA64, 0xFAA4, 0xFAE4, 0xFB24, 0xFB64, 0xFBA4, 0xFBE4, 0xFC24, 0xFC64, + 0xFC94, 0xFCB4, 0xFCD4, 0xFCF4, 0xFD14, 0xFD34, 0xFD54, 0xFD74, 0xFD94, 0xFDB4, 0xFDD4, 0xFDF4, 0xFE14, 0xFE34, 0xFE54, 0xFE74, + 0xFE8C, 0xFE9C, 0xFEAC, 0xFEBC, 0xFECC, 0xFEDC, 0xFEEC, 0xFEFC, 0xFF0C, 0xFF1C, 0xFF2C, 0xFF3C, 0xFF4C, 0xFF5C, 0xFF6C, 0xFF7C, + 0xFF88, 0xFF90, 0xFF98, 0xFFA0, 0xFFA8, 0xFFB0, 0xFFB8, 0xFFC0, 0xFFC8, 0xFFD0, 0xFFD8, 0xFFE0, 0xFFE8, 0xFFF0, 0xFFF8, 0x0000, + 0x7D7C, 0x797C, 0x757C, 0x717C, 0x6D7C, 0x697C, 0x657C, 0x617C, 0x5D7C, 0x597C, 0x557C, 0x517C, 0x4D7C, 0x497C, 0x457C, 0x417C, + 0x3E7C, 0x3C7C, 0x3A7C, 0x387C, 0x367C, 0x347C, 0x327C, 0x307C, 0x2E7C, 0x2C7C, 0x2A7C, 0x287C, 0x267C, 0x247C, 0x227C, 0x207C, + 0x1EFC, 0x1DFC, 0x1CFC, 0x1BFC, 0x1AFC, 0x19FC, 0x18FC, 0x17FC, 0x16FC, 0x15FC, 0x14FC, 0x13FC, 0x12FC, 0x11FC, 0x10FC, 0x0FFC, + 0x0F3C, 0x0EBC, 0x0E3C, 0x0DBC, 0x0D3C, 0x0CBC, 0x0C3C, 0x0BBC, 0x0B3C, 0x0ABC, 0x0A3C, 0x09BC, 0x093C, 0x08BC, 0x083C, 0x07BC, + 0x075C, 0x071C, 0x06DC, 0x069C, 0x065C, 0x061C, 0x05DC, 0x059C, 0x055C, 0x051C, 0x04DC, 0x049C, 0x045C, 0x041C, 0x03DC, 0x039C, + 0x036C, 0x034C, 0x032C, 0x030C, 0x02EC, 0x02CC, 0x02AC, 0x028C, 0x026C, 0x024C, 0x022C, 0x020C, 0x01EC, 0x01CC, 0x01AC, 0x018C, + 0x0174, 0x0164, 0x0154, 0x0144, 0x0134, 0x0124, 0x0114, 0x0104, 0x00F4, 0x00E4, 0x00D4, 0x00C4, 0x00B4, 0x00A4, 0x0094, 0x0084, + 0x0078, 0x0070, 0x0068, 0x0060, 0x0058, 0x0050, 0x0048, 0x0040, 0x0038, 0x0030, 0x0028, 0x0020, 0x0018, 0x0010, 0x0008, 0x0000 +}; + +static DRWAV_INLINE drwav_int16 drwav__alaw_to_s16(drwav_uint8 sampleIn) +{ + return (short)g_drwavAlawTable[sampleIn]; +} + +static DRWAV_INLINE drwav_int16 drwav__mulaw_to_s16(drwav_uint8 sampleIn) +{ + return (short)g_drwavMulawTable[sampleIn]; +} + + + +static void drwav__pcm_to_s16(drwav_int16* pOut, const unsigned char* pIn, size_t totalSampleCount, unsigned short bytesPerSample) +{ + // Special case for 8-bit sample data because it's treated as unsigned. + if (bytesPerSample == 1) { + drwav_u8_to_s16(pOut, pIn, totalSampleCount); + return; + } + + + // Slightly more optimal implementation for common formats. + if (bytesPerSample == 2) { + for (unsigned int i = 0; i < totalSampleCount; ++i) { + *pOut++ = ((const drwav_int16*)pIn)[i]; + } + return; + } + if (bytesPerSample == 3) { + drwav_s24_to_s16(pOut, pIn, totalSampleCount); + return; + } + if (bytesPerSample == 4) { + drwav_s32_to_s16(pOut, (const drwav_int32*)pIn, totalSampleCount); + return; + } + + + // Anything more than 64 bits per sample is not supported. + if (bytesPerSample > 8) { + drwav_zero_memory(pOut, totalSampleCount * sizeof(*pOut)); + return; + } + + + // Generic, slow converter. + for (unsigned int i = 0; i < totalSampleCount; ++i) { + drwav_uint64 sample = 0; + unsigned int shift = (8 - bytesPerSample) * 8; + + unsigned int j; + for (j = 0; j < bytesPerSample && j < 8; j += 1) { + sample |= (drwav_uint64)(pIn[j]) << shift; + shift += 8; + } + + pIn += j; + *pOut++ = (drwav_int16)((drwav_int64)sample >> 48); + } +} + +static void drwav__ieee_to_s16(drwav_int16* pOut, const unsigned char* pIn, size_t totalSampleCount, unsigned short bytesPerSample) +{ + if (bytesPerSample == 4) { + drwav_f32_to_s16(pOut, (const float*)pIn, totalSampleCount); + return; + } else if (bytesPerSample == 8) { + drwav_f64_to_s16(pOut, (const double*)pIn, totalSampleCount); + return; + } else { + // Only supporting 32- and 64-bit float. Output silence in all other cases. Contributions welcome for 16-bit float. + drwav_zero_memory(pOut, totalSampleCount * sizeof(*pOut)); + return; + } +} + +drwav_uint64 drwav_read_s16__pcm(drwav* pWav, drwav_uint64 samplesToRead, drwav_int16* pBufferOut) +{ + // Fast path. + if (pWav->bytesPerSample == 2) { + return drwav_read(pWav, samplesToRead, pBufferOut); + } + + drwav_uint64 totalSamplesRead = 0; + unsigned char sampleData[4096]; + while (samplesToRead > 0) { + drwav_uint64 samplesRead = drwav_read(pWav, drwav_min(samplesToRead, sizeof(sampleData)/pWav->bytesPerSample), sampleData); + if (samplesRead == 0) { + break; + } + + drwav__pcm_to_s16(pBufferOut, sampleData, (size_t)samplesRead, pWav->bytesPerSample); + + pBufferOut += samplesRead; + samplesToRead -= samplesRead; + totalSamplesRead += samplesRead; + } + + return totalSamplesRead; +} + +drwav_uint64 drwav_read_s16__ieee(drwav* pWav, drwav_uint64 samplesToRead, drwav_int16* pBufferOut) +{ + drwav_uint64 totalSamplesRead = 0; + unsigned char sampleData[4096]; + while (samplesToRead > 0) { + drwav_uint64 samplesRead = drwav_read(pWav, drwav_min(samplesToRead, sizeof(sampleData)/pWav->bytesPerSample), sampleData); + if (samplesRead == 0) { + break; + } + + drwav__ieee_to_s16(pBufferOut, sampleData, (size_t)samplesRead, pWav->bytesPerSample); + + pBufferOut += samplesRead; + samplesToRead -= samplesRead; + totalSamplesRead += samplesRead; + } + + return totalSamplesRead; +} + +drwav_uint64 drwav_read_s16__alaw(drwav* pWav, drwav_uint64 samplesToRead, drwav_int16* pBufferOut) +{ + drwav_uint64 totalSamplesRead = 0; + unsigned char sampleData[4096]; + while (samplesToRead > 0) { + drwav_uint64 samplesRead = drwav_read(pWav, drwav_min(samplesToRead, sizeof(sampleData)/pWav->bytesPerSample), sampleData); + if (samplesRead == 0) { + break; + } + + drwav_alaw_to_s16(pBufferOut, sampleData, (size_t)samplesRead); + + pBufferOut += samplesRead; + samplesToRead -= samplesRead; + totalSamplesRead += samplesRead; + } + + return totalSamplesRead; +} + +drwav_uint64 drwav_read_s16__mulaw(drwav* pWav, drwav_uint64 samplesToRead, drwav_int16* pBufferOut) +{ + drwav_uint64 totalSamplesRead = 0; + unsigned char sampleData[4096]; + while (samplesToRead > 0) { + drwav_uint64 samplesRead = drwav_read(pWav, drwav_min(samplesToRead, sizeof(sampleData)/pWav->bytesPerSample), sampleData); + if (samplesRead == 0) { + break; + } + + drwav_mulaw_to_s16(pBufferOut, sampleData, (size_t)samplesRead); + + pBufferOut += samplesRead; + samplesToRead -= samplesRead; + totalSamplesRead += samplesRead; + } + + return totalSamplesRead; +} + +drwav_uint64 drwav_read_s16(drwav* pWav, drwav_uint64 samplesToRead, drwav_int16* pBufferOut) +{ + if (pWav == NULL || samplesToRead == 0 || pBufferOut == NULL) { + return 0; + } + + // Don't try to read more samples than can potentially fit in the output buffer. + if (samplesToRead * sizeof(drwav_int16) > DRWAV_SIZE_MAX) { + samplesToRead = DRWAV_SIZE_MAX / sizeof(drwav_int16); + } + + if (pWav->translatedFormatTag == DR_WAVE_FORMAT_PCM) { + return drwav_read_s16__pcm(pWav, samplesToRead, pBufferOut); + } + + if (pWav->translatedFormatTag == DR_WAVE_FORMAT_ADPCM) { + return drwav_read_s16__msadpcm(pWav, samplesToRead, pBufferOut); + } + + if (pWav->translatedFormatTag == DR_WAVE_FORMAT_IEEE_FLOAT) { + return drwav_read_s16__ieee(pWav, samplesToRead, pBufferOut); + } + + if (pWav->translatedFormatTag == DR_WAVE_FORMAT_ALAW) { + return drwav_read_s16__alaw(pWav, samplesToRead, pBufferOut); + } + + if (pWav->translatedFormatTag == DR_WAVE_FORMAT_MULAW) { + return drwav_read_s16__mulaw(pWav, samplesToRead, pBufferOut); + } + + if (pWav->translatedFormatTag == DR_WAVE_FORMAT_DVI_ADPCM) { + return drwav_read_s16__ima(pWav, samplesToRead, pBufferOut); + } + + return 0; +} + +drwav_uint64 drwav_read_pcm_frames_s16(drwav* pWav, drwav_uint64 framesToRead, drwav_int16* pBufferOut) +{ + return drwav_read_s16(pWav, framesToRead * pWav->channels, pBufferOut) / pWav->channels; +} + +void drwav_u8_to_s16(drwav_int16* pOut, const drwav_uint8* pIn, size_t sampleCount) +{ + int r; + for (size_t i = 0; i < sampleCount; ++i) { + int x = pIn[i]; + r = x - 128; + r = r << 8; + pOut[i] = (short)r; + } +} + +void drwav_s24_to_s16(drwav_int16* pOut, const drwav_uint8* pIn, size_t sampleCount) +{ + int r; + for (size_t i = 0; i < sampleCount; ++i) { + int x = ((int)(((unsigned int)(((const unsigned char*)pIn)[i*3+0]) << 8) | ((unsigned int)(((const unsigned char*)pIn)[i*3+1]) << 16) | ((unsigned int)(((const unsigned char*)pIn)[i*3+2])) << 24)) >> 8; + r = x >> 8; + pOut[i] = (short)r; + } +} + +void drwav_s32_to_s16(drwav_int16* pOut, const drwav_int32* pIn, size_t sampleCount) +{ + int r; + for (size_t i = 0; i < sampleCount; ++i) { + int x = pIn[i]; + r = x >> 16; + pOut[i] = (short)r; + } +} + +void drwav_f32_to_s16(drwav_int16* pOut, const float* pIn, size_t sampleCount) +{ + int r; + for (size_t i = 0; i < sampleCount; ++i) { + float x = pIn[i]; + float c; + c = ((x < -1) ? -1 : ((x > 1) ? 1 : x)); + c = c + 1; + r = (int)(c * 32767.5f); + r = r - 32768; + pOut[i] = (short)r; + } +} + +void drwav_f64_to_s16(drwav_int16* pOut, const double* pIn, size_t sampleCount) +{ + int r; + for (size_t i = 0; i < sampleCount; ++i) { + double x = pIn[i]; + double c; + c = ((x < -1) ? -1 : ((x > 1) ? 1 : x)); + c = c + 1; + r = (int)(c * 32767.5); + r = r - 32768; + pOut[i] = (short)r; + } +} + +void drwav_alaw_to_s16(drwav_int16* pOut, const drwav_uint8* pIn, size_t sampleCount) +{ + for (size_t i = 0; i < sampleCount; ++i) { + pOut[i] = drwav__alaw_to_s16(pIn[i]); + } +} + +void drwav_mulaw_to_s16(drwav_int16* pOut, const drwav_uint8* pIn, size_t sampleCount) +{ + for (size_t i = 0; i < sampleCount; ++i) { + pOut[i] = drwav__mulaw_to_s16(pIn[i]); + } +} + + + +static void drwav__pcm_to_f32(float* pOut, const unsigned char* pIn, size_t sampleCount, unsigned short bytesPerSample) +{ + // Special case for 8-bit sample data because it's treated as unsigned. + if (bytesPerSample == 1) { + drwav_u8_to_f32(pOut, pIn, sampleCount); + return; + } + + // Slightly more optimal implementation for common formats. + if (bytesPerSample == 2) { + drwav_s16_to_f32(pOut, (const drwav_int16*)pIn, sampleCount); + return; + } + if (bytesPerSample == 3) { + drwav_s24_to_f32(pOut, pIn, sampleCount); + return; + } + if (bytesPerSample == 4) { + drwav_s32_to_f32(pOut, (const drwav_int32*)pIn, sampleCount); + return; + } + + + // Anything more than 64 bits per sample is not supported. + if (bytesPerSample > 8) { + drwav_zero_memory(pOut, sampleCount * sizeof(*pOut)); + return; + } + + + // Generic, slow converter. + for (unsigned int i = 0; i < sampleCount; ++i) { + drwav_uint64 sample = 0; + unsigned int shift = (8 - bytesPerSample) * 8; + + unsigned int j; + for (j = 0; j < bytesPerSample && j < 8; j += 1) { + sample |= (drwav_uint64)(pIn[j]) << shift; + shift += 8; + } + + pIn += j; + *pOut++ = (float)((drwav_int64)sample / 9223372036854775807.0); + } +} + +static void drwav__ieee_to_f32(float* pOut, const unsigned char* pIn, size_t sampleCount, unsigned short bytesPerSample) +{ + if (bytesPerSample == 4) { + for (unsigned int i = 0; i < sampleCount; ++i) { + *pOut++ = ((const float*)pIn)[i]; + } + return; + } else if (bytesPerSample == 8) { + drwav_f64_to_f32(pOut, (const double*)pIn, sampleCount); + return; + } else { + // Only supporting 32- and 64-bit float. Output silence in all other cases. Contributions welcome for 16-bit float. + drwav_zero_memory(pOut, sampleCount * sizeof(*pOut)); + return; + } +} + + +drwav_uint64 drwav_read_f32__pcm(drwav* pWav, drwav_uint64 samplesToRead, float* pBufferOut) +{ + if (pWav->bytesPerSample == 0) { + return 0; + } + + drwav_uint64 totalSamplesRead = 0; + unsigned char sampleData[4096]; + while (samplesToRead > 0) { + drwav_uint64 samplesRead = drwav_read(pWav, drwav_min(samplesToRead, sizeof(sampleData)/pWav->bytesPerSample), sampleData); + if (samplesRead == 0) { + break; + } + + drwav__pcm_to_f32(pBufferOut, sampleData, (size_t)samplesRead, pWav->bytesPerSample); + pBufferOut += samplesRead; + + samplesToRead -= samplesRead; + totalSamplesRead += samplesRead; + } + + return totalSamplesRead; +} + +drwav_uint64 drwav_read_f32__msadpcm(drwav* pWav, drwav_uint64 samplesToRead, float* pBufferOut) +{ + // We're just going to borrow the implementation from the drwav_read_s16() since ADPCM is a little bit more complicated than other formats and I don't + // want to duplicate that code. + drwav_uint64 totalSamplesRead = 0; + drwav_int16 samples16[2048]; + while (samplesToRead > 0) { + drwav_uint64 samplesRead = drwav_read_s16(pWav, drwav_min(samplesToRead, 2048), samples16); + if (samplesRead == 0) { + break; + } + + drwav_s16_to_f32(pBufferOut, samples16, (size_t)samplesRead); // <-- Safe cast because we're clamping to 2048. + + pBufferOut += samplesRead; + samplesToRead -= samplesRead; + totalSamplesRead += samplesRead; + } + + return totalSamplesRead; +} + +drwav_uint64 drwav_read_f32__ima(drwav* pWav, drwav_uint64 samplesToRead, float* pBufferOut) +{ + // We're just going to borrow the implementation from the drwav_read_s16() since IMA-ADPCM is a little bit more complicated than other formats and I don't + // want to duplicate that code. + drwav_uint64 totalSamplesRead = 0; + drwav_int16 samples16[2048]; + while (samplesToRead > 0) { + drwav_uint64 samplesRead = drwav_read_s16(pWav, drwav_min(samplesToRead, 2048), samples16); + if (samplesRead == 0) { + break; + } + + drwav_s16_to_f32(pBufferOut, samples16, (size_t)samplesRead); // <-- Safe cast because we're clamping to 2048. + + pBufferOut += samplesRead; + samplesToRead -= samplesRead; + totalSamplesRead += samplesRead; + } + + return totalSamplesRead; +} + +drwav_uint64 drwav_read_f32__ieee(drwav* pWav, drwav_uint64 samplesToRead, float* pBufferOut) +{ + // Fast path. + if (pWav->translatedFormatTag == DR_WAVE_FORMAT_IEEE_FLOAT && pWav->bytesPerSample == 4) { + return drwav_read(pWav, samplesToRead, pBufferOut); + } + + if (pWav->bytesPerSample == 0) { + return 0; + } + + drwav_uint64 totalSamplesRead = 0; + unsigned char sampleData[4096]; + while (samplesToRead > 0) { + drwav_uint64 samplesRead = drwav_read(pWav, drwav_min(samplesToRead, sizeof(sampleData)/pWav->bytesPerSample), sampleData); + if (samplesRead == 0) { + break; + } + + drwav__ieee_to_f32(pBufferOut, sampleData, (size_t)samplesRead, pWav->bytesPerSample); + + pBufferOut += samplesRead; + samplesToRead -= samplesRead; + totalSamplesRead += samplesRead; + } + + return totalSamplesRead; +} + +drwav_uint64 drwav_read_f32__alaw(drwav* pWav, drwav_uint64 samplesToRead, float* pBufferOut) +{ + if (pWav->bytesPerSample == 0) { + return 0; + } + + drwav_uint64 totalSamplesRead = 0; + unsigned char sampleData[4096]; + while (samplesToRead > 0) { + drwav_uint64 samplesRead = drwav_read(pWav, drwav_min(samplesToRead, sizeof(sampleData)/pWav->bytesPerSample), sampleData); + if (samplesRead == 0) { + break; + } + + drwav_alaw_to_f32(pBufferOut, sampleData, (size_t)samplesRead); + + pBufferOut += samplesRead; + samplesToRead -= samplesRead; + totalSamplesRead += samplesRead; + } + + return totalSamplesRead; +} + +drwav_uint64 drwav_read_f32__mulaw(drwav* pWav, drwav_uint64 samplesToRead, float* pBufferOut) +{ + if (pWav->bytesPerSample == 0) { + return 0; + } + + drwav_uint64 totalSamplesRead = 0; + unsigned char sampleData[4096]; + while (samplesToRead > 0) { + drwav_uint64 samplesRead = drwav_read(pWav, drwav_min(samplesToRead, sizeof(sampleData)/pWav->bytesPerSample), sampleData); + if (samplesRead == 0) { + break; + } + + drwav_mulaw_to_f32(pBufferOut, sampleData, (size_t)samplesRead); + + pBufferOut += samplesRead; + samplesToRead -= samplesRead; + totalSamplesRead += samplesRead; + } + + return totalSamplesRead; +} + +drwav_uint64 drwav_read_f32(drwav* pWav, drwav_uint64 samplesToRead, float* pBufferOut) +{ + if (pWav == NULL || samplesToRead == 0 || pBufferOut == NULL) { + return 0; + } + + // Don't try to read more samples than can potentially fit in the output buffer. + if (samplesToRead * sizeof(float) > DRWAV_SIZE_MAX) { + samplesToRead = DRWAV_SIZE_MAX / sizeof(float); + } + + if (pWav->translatedFormatTag == DR_WAVE_FORMAT_PCM) { + return drwav_read_f32__pcm(pWav, samplesToRead, pBufferOut); + } + + if (pWav->translatedFormatTag == DR_WAVE_FORMAT_ADPCM) { + return drwav_read_f32__msadpcm(pWav, samplesToRead, pBufferOut); + } + + if (pWav->translatedFormatTag == DR_WAVE_FORMAT_IEEE_FLOAT) { + return drwav_read_f32__ieee(pWav, samplesToRead, pBufferOut); + } + + if (pWav->translatedFormatTag == DR_WAVE_FORMAT_ALAW) { + return drwav_read_f32__alaw(pWav, samplesToRead, pBufferOut); + } + + if (pWav->translatedFormatTag == DR_WAVE_FORMAT_MULAW) { + return drwav_read_f32__mulaw(pWav, samplesToRead, pBufferOut); + } + + if (pWav->translatedFormatTag == DR_WAVE_FORMAT_DVI_ADPCM) { + return drwav_read_f32__ima(pWav, samplesToRead, pBufferOut); + } + + return 0; +} + +drwav_uint64 drwav_read_pcm_frames_f32(drwav* pWav, drwav_uint64 framesToRead, float* pBufferOut) +{ + return drwav_read_f32(pWav, framesToRead * pWav->channels, pBufferOut) / pWav->channels; +} + +void drwav_u8_to_f32(float* pOut, const drwav_uint8* pIn, size_t sampleCount) +{ + if (pOut == NULL || pIn == NULL) { + return; + } + +#ifdef DR_WAV_LIBSNDFILE_COMPAT + // It appears libsndfile uses slightly different logic for the u8 -> f32 conversion to dr_wav, which in my opinion is incorrect. It appears + // libsndfile performs the conversion something like "f32 = (u8 / 256) * 2 - 1", however I think it should be "f32 = (u8 / 255) * 2 - 1" (note + // the divisor of 256 vs 255). I use libsndfile as a benchmark for testing, so I'm therefore leaving this block here just for my automated + // correctness testing. This is disabled by default. + for (size_t i = 0; i < sampleCount; ++i) { + *pOut++ = (pIn[i] / 256.0f) * 2 - 1; + } +#else + for (size_t i = 0; i < sampleCount; ++i) { + *pOut++ = (pIn[i] / 255.0f) * 2 - 1; + } +#endif +} + +void drwav_s16_to_f32(float* pOut, const drwav_int16* pIn, size_t sampleCount) +{ + if (pOut == NULL || pIn == NULL) { + return; + } + + for (size_t i = 0; i < sampleCount; ++i) { + *pOut++ = pIn[i] / 32768.0f; + } +} + +void drwav_s24_to_f32(float* pOut, const drwav_uint8* pIn, size_t sampleCount) +{ + if (pOut == NULL || pIn == NULL) { + return; + } + + for (size_t i = 0; i < sampleCount; ++i) { + unsigned int s0 = pIn[i*3 + 0]; + unsigned int s1 = pIn[i*3 + 1]; + unsigned int s2 = pIn[i*3 + 2]; + + int sample32 = (int)((s0 << 8) | (s1 << 16) | (s2 << 24)); + *pOut++ = (float)(sample32 / 2147483648.0); + } +} + +void drwav_s32_to_f32(float* pOut, const drwav_int32* pIn, size_t sampleCount) +{ + if (pOut == NULL || pIn == NULL) { + return; + } + + for (size_t i = 0; i < sampleCount; ++i) { + *pOut++ = (float)(pIn[i] / 2147483648.0); + } +} + +void drwav_f64_to_f32(float* pOut, const double* pIn, size_t sampleCount) +{ + if (pOut == NULL || pIn == NULL) { + return; + } + + for (size_t i = 0; i < sampleCount; ++i) { + *pOut++ = (float)pIn[i]; + } +} + +void drwav_alaw_to_f32(float* pOut, const drwav_uint8* pIn, size_t sampleCount) +{ + if (pOut == NULL || pIn == NULL) { + return; + } + + for (size_t i = 0; i < sampleCount; ++i) { + *pOut++ = drwav__alaw_to_s16(pIn[i]) / 32768.0f; + } +} + +void drwav_mulaw_to_f32(float* pOut, const drwav_uint8* pIn, size_t sampleCount) +{ + if (pOut == NULL || pIn == NULL) { + return; + } + + for (size_t i = 0; i < sampleCount; ++i) { + *pOut++ = drwav__mulaw_to_s16(pIn[i]) / 32768.0f; + } +} + + + +static void drwav__pcm_to_s32(drwav_int32* pOut, const unsigned char* pIn, size_t totalSampleCount, unsigned short bytesPerSample) +{ + // Special case for 8-bit sample data because it's treated as unsigned. + if (bytesPerSample == 1) { + drwav_u8_to_s32(pOut, pIn, totalSampleCount); + return; + } + + // Slightly more optimal implementation for common formats. + if (bytesPerSample == 2) { + drwav_s16_to_s32(pOut, (const drwav_int16*)pIn, totalSampleCount); + return; + } + if (bytesPerSample == 3) { + drwav_s24_to_s32(pOut, pIn, totalSampleCount); + return; + } + if (bytesPerSample == 4) { + for (unsigned int i = 0; i < totalSampleCount; ++i) { + *pOut++ = ((const drwav_int32*)pIn)[i]; + } + return; + } + + + // Anything more than 64 bits per sample is not supported. + if (bytesPerSample > 8) { + drwav_zero_memory(pOut, totalSampleCount * sizeof(*pOut)); + return; + } + + + // Generic, slow converter. + for (unsigned int i = 0; i < totalSampleCount; ++i) { + drwav_uint64 sample = 0; + unsigned int shift = (8 - bytesPerSample) * 8; + + unsigned int j; + for (j = 0; j < bytesPerSample && j < 8; j += 1) { + sample |= (drwav_uint64)(pIn[j]) << shift; + shift += 8; + } + + pIn += j; + *pOut++ = (drwav_int32)((drwav_int64)sample >> 32); + } +} + +static void drwav__ieee_to_s32(drwav_int32* pOut, const unsigned char* pIn, size_t totalSampleCount, unsigned short bytesPerSample) +{ + if (bytesPerSample == 4) { + drwav_f32_to_s32(pOut, (const float*)pIn, totalSampleCount); + return; + } else if (bytesPerSample == 8) { + drwav_f64_to_s32(pOut, (const double*)pIn, totalSampleCount); + return; + } else { + // Only supporting 32- and 64-bit float. Output silence in all other cases. Contributions welcome for 16-bit float. + drwav_zero_memory(pOut, totalSampleCount * sizeof(*pOut)); + return; + } +} + + +drwav_uint64 drwav_read_s32__pcm(drwav* pWav, drwav_uint64 samplesToRead, drwav_int32* pBufferOut) +{ + // Fast path. + if (pWav->translatedFormatTag == DR_WAVE_FORMAT_PCM && pWav->bytesPerSample == 4) { + return drwav_read(pWav, samplesToRead, pBufferOut); + } + + if (pWav->bytesPerSample == 0) { + return 0; + } + + drwav_uint64 totalSamplesRead = 0; + unsigned char sampleData[4096]; + while (samplesToRead > 0) { + drwav_uint64 samplesRead = drwav_read(pWav, drwav_min(samplesToRead, sizeof(sampleData)/pWav->bytesPerSample), sampleData); + if (samplesRead == 0) { + break; + } + + drwav__pcm_to_s32(pBufferOut, sampleData, (size_t)samplesRead, pWav->bytesPerSample); + + pBufferOut += samplesRead; + samplesToRead -= samplesRead; + totalSamplesRead += samplesRead; + } + + return totalSamplesRead; +} + +drwav_uint64 drwav_read_s32__msadpcm(drwav* pWav, drwav_uint64 samplesToRead, drwav_int32* pBufferOut) +{ + // We're just going to borrow the implementation from the drwav_read_s16() since ADPCM is a little bit more complicated than other formats and I don't + // want to duplicate that code. + drwav_uint64 totalSamplesRead = 0; + drwav_int16 samples16[2048]; + while (samplesToRead > 0) { + drwav_uint64 samplesRead = drwav_read_s16(pWav, drwav_min(samplesToRead, 2048), samples16); + if (samplesRead == 0) { + break; + } + + drwav_s16_to_s32(pBufferOut, samples16, (size_t)samplesRead); // <-- Safe cast because we're clamping to 2048. + + pBufferOut += samplesRead; + samplesToRead -= samplesRead; + totalSamplesRead += samplesRead; + } + + return totalSamplesRead; +} + +drwav_uint64 drwav_read_s32__ima(drwav* pWav, drwav_uint64 samplesToRead, drwav_int32* pBufferOut) +{ + // We're just going to borrow the implementation from the drwav_read_s16() since IMA-ADPCM is a little bit more complicated than other formats and I don't + // want to duplicate that code. + drwav_uint64 totalSamplesRead = 0; + drwav_int16 samples16[2048]; + while (samplesToRead > 0) { + drwav_uint64 samplesRead = drwav_read_s16(pWav, drwav_min(samplesToRead, 2048), samples16); + if (samplesRead == 0) { + break; + } + + drwav_s16_to_s32(pBufferOut, samples16, (size_t)samplesRead); // <-- Safe cast because we're clamping to 2048. + + pBufferOut += samplesRead; + samplesToRead -= samplesRead; + totalSamplesRead += samplesRead; + } + + return totalSamplesRead; +} + +drwav_uint64 drwav_read_s32__ieee(drwav* pWav, drwav_uint64 samplesToRead, drwav_int32* pBufferOut) +{ + if (pWav->bytesPerSample == 0) { + return 0; + } + + drwav_uint64 totalSamplesRead = 0; + unsigned char sampleData[4096]; + while (samplesToRead > 0) { + drwav_uint64 samplesRead = drwav_read(pWav, drwav_min(samplesToRead, sizeof(sampleData)/pWav->bytesPerSample), sampleData); + if (samplesRead == 0) { + break; + } + + drwav__ieee_to_s32(pBufferOut, sampleData, (size_t)samplesRead, pWav->bytesPerSample); + + pBufferOut += samplesRead; + samplesToRead -= samplesRead; + totalSamplesRead += samplesRead; + } + + return totalSamplesRead; +} + +drwav_uint64 drwav_read_s32__alaw(drwav* pWav, drwav_uint64 samplesToRead, drwav_int32* pBufferOut) +{ + if (pWav->bytesPerSample == 0) { + return 0; + } + + drwav_uint64 totalSamplesRead = 0; + unsigned char sampleData[4096]; + while (samplesToRead > 0) { + drwav_uint64 samplesRead = drwav_read(pWav, drwav_min(samplesToRead, sizeof(sampleData)/pWav->bytesPerSample), sampleData); + if (samplesRead == 0) { + break; + } + + drwav_alaw_to_s32(pBufferOut, sampleData, (size_t)samplesRead); + + pBufferOut += samplesRead; + samplesToRead -= samplesRead; + totalSamplesRead += samplesRead; + } + + return totalSamplesRead; +} + +drwav_uint64 drwav_read_s32__mulaw(drwav* pWav, drwav_uint64 samplesToRead, drwav_int32* pBufferOut) +{ + if (pWav->bytesPerSample == 0) { + return 0; + } + + drwav_uint64 totalSamplesRead = 0; + unsigned char sampleData[4096]; + while (samplesToRead > 0) { + drwav_uint64 samplesRead = drwav_read(pWav, drwav_min(samplesToRead, sizeof(sampleData)/pWav->bytesPerSample), sampleData); + if (samplesRead == 0) { + break; + } + + drwav_mulaw_to_s32(pBufferOut, sampleData, (size_t)samplesRead); + + pBufferOut += samplesRead; + samplesToRead -= samplesRead; + totalSamplesRead += samplesRead; + } + + return totalSamplesRead; +} + +drwav_uint64 drwav_read_s32(drwav* pWav, drwav_uint64 samplesToRead, drwav_int32* pBufferOut) +{ + if (pWav == NULL || samplesToRead == 0 || pBufferOut == NULL) { + return 0; + } + + // Don't try to read more samples than can potentially fit in the output buffer. + if (samplesToRead * sizeof(drwav_int32) > DRWAV_SIZE_MAX) { + samplesToRead = DRWAV_SIZE_MAX / sizeof(drwav_int32); + } + + + if (pWav->translatedFormatTag == DR_WAVE_FORMAT_PCM) { + return drwav_read_s32__pcm(pWav, samplesToRead, pBufferOut); + } + + if (pWav->translatedFormatTag == DR_WAVE_FORMAT_ADPCM) { + return drwav_read_s32__msadpcm(pWav, samplesToRead, pBufferOut); + } + + if (pWav->translatedFormatTag == DR_WAVE_FORMAT_IEEE_FLOAT) { + return drwav_read_s32__ieee(pWav, samplesToRead, pBufferOut); + } + + if (pWav->translatedFormatTag == DR_WAVE_FORMAT_ALAW) { + return drwav_read_s32__alaw(pWav, samplesToRead, pBufferOut); + } + + if (pWav->translatedFormatTag == DR_WAVE_FORMAT_MULAW) { + return drwav_read_s32__mulaw(pWav, samplesToRead, pBufferOut); + } + + if (pWav->translatedFormatTag == DR_WAVE_FORMAT_DVI_ADPCM) { + return drwav_read_s32__ima(pWav, samplesToRead, pBufferOut); + } + + return 0; +} + +drwav_uint64 drwav_read_pcm_frames_s32(drwav* pWav, drwav_uint64 framesToRead, drwav_int32* pBufferOut) +{ + return drwav_read_s32(pWav, framesToRead * pWav->channels, pBufferOut) / pWav->channels; +} + +void drwav_u8_to_s32(drwav_int32* pOut, const drwav_uint8* pIn, size_t sampleCount) +{ + if (pOut == NULL || pIn == NULL) { + return; + } + + for (size_t i = 0; i < sampleCount; ++i) { + *pOut++ = ((int)pIn[i] - 128) << 24; + } +} + +void drwav_s16_to_s32(drwav_int32* pOut, const drwav_int16* pIn, size_t sampleCount) +{ + if (pOut == NULL || pIn == NULL) { + return; + } + + for (size_t i = 0; i < sampleCount; ++i) { + *pOut++ = pIn[i] << 16; + } +} + +void drwav_s24_to_s32(drwav_int32* pOut, const drwav_uint8* pIn, size_t sampleCount) +{ + if (pOut == NULL || pIn == NULL) { + return; + } + + for (size_t i = 0; i < sampleCount; ++i) { + unsigned int s0 = pIn[i*3 + 0]; + unsigned int s1 = pIn[i*3 + 1]; + unsigned int s2 = pIn[i*3 + 2]; + + drwav_int32 sample32 = (drwav_int32)((s0 << 8) | (s1 << 16) | (s2 << 24)); + *pOut++ = sample32; + } +} + +void drwav_f32_to_s32(drwav_int32* pOut, const float* pIn, size_t sampleCount) +{ + if (pOut == NULL || pIn == NULL) { + return; + } + + for (size_t i = 0; i < sampleCount; ++i) { + *pOut++ = (drwav_int32)(2147483648.0 * pIn[i]); + } +} + +void drwav_f64_to_s32(drwav_int32* pOut, const double* pIn, size_t sampleCount) +{ + if (pOut == NULL || pIn == NULL) { + return; + } + + for (size_t i = 0; i < sampleCount; ++i) { + *pOut++ = (drwav_int32)(2147483648.0 * pIn[i]); + } +} + +void drwav_alaw_to_s32(drwav_int32* pOut, const drwav_uint8* pIn, size_t sampleCount) +{ + if (pOut == NULL || pIn == NULL) { + return; + } + + for (size_t i = 0; i < sampleCount; ++i) { + *pOut++ = ((drwav_int32)drwav__alaw_to_s16(pIn[i])) << 16; + } +} + +void drwav_mulaw_to_s32(drwav_int32* pOut, const drwav_uint8* pIn, size_t sampleCount) +{ + if (pOut == NULL || pIn == NULL) { + return; + } + + for (size_t i= 0; i < sampleCount; ++i) { + *pOut++ = ((drwav_int32)drwav__mulaw_to_s16(pIn[i])) << 16; + } +} + + + +drwav_int16* drwav__read_and_close_s16(drwav* pWav, unsigned int* channels, unsigned int* sampleRate, drwav_uint64* totalSampleCount) +{ + drwav_assert(pWav != NULL); + + drwav_uint64 sampleDataSize = pWav->totalSampleCount * sizeof(drwav_int16); + if (sampleDataSize > DRWAV_SIZE_MAX) { + drwav_uninit(pWav); + return NULL; // File's too big. + } + + drwav_int16* pSampleData = (drwav_int16*)DRWAV_MALLOC((size_t)sampleDataSize); // <-- Safe cast due to the check above. + if (pSampleData == NULL) { + drwav_uninit(pWav); + return NULL; // Failed to allocate memory. + } + + drwav_uint64 samplesRead = drwav_read_s16(pWav, (size_t)pWav->totalSampleCount, pSampleData); + if (samplesRead != pWav->totalSampleCount) { + DRWAV_FREE(pSampleData); + drwav_uninit(pWav); + return NULL; // There was an error reading the samples. + } + + drwav_uninit(pWav); + + if (sampleRate) *sampleRate = pWav->sampleRate; + if (channels) *channels = pWav->channels; + if (totalSampleCount) *totalSampleCount = pWav->totalSampleCount; + return pSampleData; +} + +float* drwav__read_and_close_f32(drwav* pWav, unsigned int* channels, unsigned int* sampleRate, drwav_uint64* totalSampleCount) +{ + drwav_assert(pWav != NULL); + + drwav_uint64 sampleDataSize = pWav->totalSampleCount * sizeof(float); + if (sampleDataSize > DRWAV_SIZE_MAX) { + drwav_uninit(pWav); + return NULL; // File's too big. + } + + float* pSampleData = (float*)DRWAV_MALLOC((size_t)sampleDataSize); // <-- Safe cast due to the check above. + if (pSampleData == NULL) { + drwav_uninit(pWav); + return NULL; // Failed to allocate memory. + } + + drwav_uint64 samplesRead = drwav_read_f32(pWav, (size_t)pWav->totalSampleCount, pSampleData); + if (samplesRead != pWav->totalSampleCount) { + DRWAV_FREE(pSampleData); + drwav_uninit(pWav); + return NULL; // There was an error reading the samples. + } + + drwav_uninit(pWav); + + if (sampleRate) *sampleRate = pWav->sampleRate; + if (channels) *channels = pWav->channels; + if (totalSampleCount) *totalSampleCount = pWav->totalSampleCount; + return pSampleData; +} + +drwav_int32* drwav__read_and_close_s32(drwav* pWav, unsigned int* channels, unsigned int* sampleRate, drwav_uint64* totalSampleCount) +{ + drwav_assert(pWav != NULL); + + drwav_uint64 sampleDataSize = pWav->totalSampleCount * sizeof(drwav_int32); + if (sampleDataSize > DRWAV_SIZE_MAX) { + drwav_uninit(pWav); + return NULL; // File's too big. + } + + drwav_int32* pSampleData = (drwav_int32*)DRWAV_MALLOC((size_t)sampleDataSize); // <-- Safe cast due to the check above. + if (pSampleData == NULL) { + drwav_uninit(pWav); + return NULL; // Failed to allocate memory. + } + + drwav_uint64 samplesRead = drwav_read_s32(pWav, (size_t)pWav->totalSampleCount, pSampleData); + if (samplesRead != pWav->totalSampleCount) { + DRWAV_FREE(pSampleData); + drwav_uninit(pWav); + return NULL; // There was an error reading the samples. + } + + drwav_uninit(pWav); + + if (sampleRate) *sampleRate = pWav->sampleRate; + if (channels) *channels = pWav->channels; + if (totalSampleCount) *totalSampleCount = pWav->totalSampleCount; + return pSampleData; +} + + +drwav_int16* drwav_open_and_read_s16(drwav_read_proc onRead, drwav_seek_proc onSeek, void* pUserData, unsigned int* channels, unsigned int* sampleRate, drwav_uint64* totalSampleCount) +{ + if (channels) *channels = 0; + if (sampleRate) *sampleRate = 0; + if (totalSampleCount) *totalSampleCount = 0; + + drwav wav; + if (!drwav_init(&wav, onRead, onSeek, pUserData)) { + return NULL; + } + + return drwav__read_and_close_s16(&wav, channels, sampleRate, totalSampleCount); +} + +drwav_int16* drwav_open_and_read_pcm_frames_s16(drwav_read_proc onRead, drwav_seek_proc onSeek, void* pUserData, unsigned int* channelsOut, unsigned int* sampleRateOut, drwav_uint64* totalFrameCountOut) +{ + if (channelsOut) *channelsOut = 0; + if (sampleRateOut) *sampleRateOut = 0; + if (totalFrameCountOut) *totalFrameCountOut = 0; + + unsigned int channels; + unsigned int sampleRate; + drwav_uint64 totalSampleCount; + drwav_int16* result = drwav_open_and_read_s16(onRead, onSeek, pUserData, &channels, &sampleRate, &totalSampleCount); + if (result == NULL) { + return NULL; + } + + if (channelsOut) *channelsOut = channels; + if (sampleRateOut) *sampleRateOut = sampleRate; + if (totalFrameCountOut) *totalFrameCountOut = totalSampleCount / channels; + + return result; +} + +float* drwav_open_and_read_f32(drwav_read_proc onRead, drwav_seek_proc onSeek, void* pUserData, unsigned int* channels, unsigned int* sampleRate, drwav_uint64* totalSampleCount) +{ + if (sampleRate) *sampleRate = 0; + if (channels) *channels = 0; + if (totalSampleCount) *totalSampleCount = 0; + + drwav wav; + if (!drwav_init(&wav, onRead, onSeek, pUserData)) { + return NULL; + } + + return drwav__read_and_close_f32(&wav, channels, sampleRate, totalSampleCount); +} + +float* drwav_open_and_read_pcm_frames_f32(drwav_read_proc onRead, drwav_seek_proc onSeek, void* pUserData, unsigned int* channelsOut, unsigned int* sampleRateOut, drwav_uint64* totalFrameCountOut) +{ + if (channelsOut) *channelsOut = 0; + if (sampleRateOut) *sampleRateOut = 0; + if (totalFrameCountOut) *totalFrameCountOut = 0; + + unsigned int channels; + unsigned int sampleRate; + drwav_uint64 totalSampleCount; + float* result = drwav_open_and_read_f32(onRead, onSeek, pUserData, &channels, &sampleRate, &totalSampleCount); + if (result == NULL) { + return NULL; + } + + if (channelsOut) *channelsOut = channels; + if (sampleRateOut) *sampleRateOut = sampleRate; + if (totalFrameCountOut) *totalFrameCountOut = totalSampleCount / channels; + + return result; +} + +drwav_int32* drwav_open_and_read_s32(drwav_read_proc onRead, drwav_seek_proc onSeek, void* pUserData, unsigned int* channels, unsigned int* sampleRate, drwav_uint64* totalSampleCount) +{ + if (sampleRate) *sampleRate = 0; + if (channels) *channels = 0; + if (totalSampleCount) *totalSampleCount = 0; + + drwav wav; + if (!drwav_init(&wav, onRead, onSeek, pUserData)) { + return NULL; + } + + return drwav__read_and_close_s32(&wav, channels, sampleRate, totalSampleCount); +} + +drwav_int32* drwav_open_and_read_pcm_frames_s32(drwav_read_proc onRead, drwav_seek_proc onSeek, void* pUserData, unsigned int* channelsOut, unsigned int* sampleRateOut, drwav_uint64* totalFrameCountOut) +{ + if (channelsOut) *channelsOut = 0; + if (sampleRateOut) *sampleRateOut = 0; + if (totalFrameCountOut) *totalFrameCountOut = 0; + + unsigned int channels; + unsigned int sampleRate; + drwav_uint64 totalSampleCount; + drwav_int32* result = drwav_open_and_read_s32(onRead, onSeek, pUserData, &channels, &sampleRate, &totalSampleCount); + if (result == NULL) { + return NULL; + } + + if (channelsOut) *channelsOut = channels; + if (sampleRateOut) *sampleRateOut = sampleRate; + if (totalFrameCountOut) *totalFrameCountOut = totalSampleCount / channels; + + return result; +} + +#ifndef DR_WAV_NO_STDIO +drwav_int16* drwav_open_file_and_read_s16(const char* filename, unsigned int* channels, unsigned int* sampleRate, drwav_uint64* totalSampleCount) +{ + if (sampleRate) *sampleRate = 0; + if (channels) *channels = 0; + if (totalSampleCount) *totalSampleCount = 0; + + drwav wav; + if (!drwav_init_file(&wav, filename)) { + return NULL; + } + + return drwav__read_and_close_s16(&wav, channels, sampleRate, totalSampleCount); +} + +drwav_int16* drwav_open_file_and_read_pcm_frames_s16(const char* filename, unsigned int* channelsOut, unsigned int* sampleRateOut, drwav_uint64* totalFrameCountOut) +{ + if (channelsOut) *channelsOut = 0; + if (sampleRateOut) *sampleRateOut = 0; + if (totalFrameCountOut) *totalFrameCountOut = 0; + + unsigned int channels; + unsigned int sampleRate; + drwav_uint64 totalSampleCount; + drwav_int16* result = drwav_open_file_and_read_s16(filename, &channels, &sampleRate, &totalSampleCount); + if (result == NULL) { + return NULL; + } + + if (channelsOut) *channelsOut = channels; + if (sampleRateOut) *sampleRateOut = sampleRate; + if (totalFrameCountOut) *totalFrameCountOut = totalSampleCount / channels; + + return result; +} + +float* drwav_open_file_and_read_f32(const char* filename, unsigned int* channels, unsigned int* sampleRate, drwav_uint64* totalSampleCount) +{ + if (sampleRate) *sampleRate = 0; + if (channels) *channels = 0; + if (totalSampleCount) *totalSampleCount = 0; + + drwav wav; + if (!drwav_init_file(&wav, filename)) { + return NULL; + } + + return drwav__read_and_close_f32(&wav, channels, sampleRate, totalSampleCount); +} + +float* drwav_open_file_and_read_pcm_frames_f32(const char* filename, unsigned int* channelsOut, unsigned int* sampleRateOut, drwav_uint64* totalFrameCountOut) +{ + if (channelsOut) *channelsOut = 0; + if (sampleRateOut) *sampleRateOut = 0; + if (totalFrameCountOut) *totalFrameCountOut = 0; + + unsigned int channels; + unsigned int sampleRate; + drwav_uint64 totalSampleCount; + float* result = drwav_open_file_and_read_f32(filename, &channels, &sampleRate, &totalSampleCount); + if (result == NULL) { + return NULL; + } + + if (channelsOut) *channelsOut = channels; + if (sampleRateOut) *sampleRateOut = sampleRate; + if (totalFrameCountOut) *totalFrameCountOut = totalSampleCount / channels; + + return result; +} + +drwav_int32* drwav_open_file_and_read_s32(const char* filename, unsigned int* channels, unsigned int* sampleRate, drwav_uint64* totalSampleCount) +{ + if (sampleRate) *sampleRate = 0; + if (channels) *channels = 0; + if (totalSampleCount) *totalSampleCount = 0; + + drwav wav; + if (!drwav_init_file(&wav, filename)) { + return NULL; + } + + return drwav__read_and_close_s32(&wav, channels, sampleRate, totalSampleCount); +} + +drwav_int32* drwav_open_file_and_read_pcm_frames_s32(const char* filename, unsigned int* channelsOut, unsigned int* sampleRateOut, drwav_uint64* totalFrameCountOut) +{ + if (channelsOut) *channelsOut = 0; + if (sampleRateOut) *sampleRateOut = 0; + if (totalFrameCountOut) *totalFrameCountOut = 0; + + unsigned int channels; + unsigned int sampleRate; + drwav_uint64 totalSampleCount; + drwav_int32* result = drwav_open_file_and_read_s32(filename, &channels, &sampleRate, &totalSampleCount); + if (result == NULL) { + return NULL; + } + + if (channelsOut) *channelsOut = channels; + if (sampleRateOut) *sampleRateOut = sampleRate; + if (totalFrameCountOut) *totalFrameCountOut = totalSampleCount / channels; + + return result; +} +#endif + +drwav_int16* drwav_open_memory_and_read_s16(const void* data, size_t dataSize, unsigned int* channels, unsigned int* sampleRate, drwav_uint64* totalSampleCount) +{ + if (sampleRate) *sampleRate = 0; + if (channels) *channels = 0; + if (totalSampleCount) *totalSampleCount = 0; + + drwav wav; + if (!drwav_init_memory(&wav, data, dataSize)) { + return NULL; + } + + return drwav__read_and_close_s16(&wav, channels, sampleRate, totalSampleCount); +} + +drwav_int16* drwav_open_memory_and_read_pcm_frames_s16(const void* data, size_t dataSize, unsigned int* channelsOut, unsigned int* sampleRateOut, drwav_uint64* totalFrameCountOut) +{ + if (channelsOut) *channelsOut = 0; + if (sampleRateOut) *sampleRateOut = 0; + if (totalFrameCountOut) *totalFrameCountOut = 0; + + unsigned int channels; + unsigned int sampleRate; + drwav_uint64 totalSampleCount; + drwav_int16* result = drwav_open_memory_and_read_s16(data, dataSize, &channels, &sampleRate, &totalSampleCount); + if (result == NULL) { + return NULL; + } + + if (channelsOut) *channelsOut = channels; + if (sampleRateOut) *sampleRateOut = sampleRate; + if (totalFrameCountOut) *totalFrameCountOut = totalSampleCount / channels; + + return result; +} + +float* drwav_open_memory_and_read_f32(const void* data, size_t dataSize, unsigned int* channels, unsigned int* sampleRate, drwav_uint64* totalSampleCount) +{ + if (sampleRate) *sampleRate = 0; + if (channels) *channels = 0; + if (totalSampleCount) *totalSampleCount = 0; + + drwav wav; + if (!drwav_init_memory(&wav, data, dataSize)) { + return NULL; + } + + return drwav__read_and_close_f32(&wav, channels, sampleRate, totalSampleCount); +} + +float* drwav_open_memory_and_read_pcm_frames_f32(const void* data, size_t dataSize, unsigned int* channelsOut, unsigned int* sampleRateOut, drwav_uint64* totalFrameCountOut) +{ + if (channelsOut) *channelsOut = 0; + if (sampleRateOut) *sampleRateOut = 0; + if (totalFrameCountOut) *totalFrameCountOut = 0; + + unsigned int channels; + unsigned int sampleRate; + drwav_uint64 totalSampleCount; + float* result = drwav_open_memory_and_read_f32(data, dataSize, &channels, &sampleRate, &totalSampleCount); + if (result == NULL) { + return NULL; + } + + if (channelsOut) *channelsOut = channels; + if (sampleRateOut) *sampleRateOut = sampleRate; + if (totalFrameCountOut) *totalFrameCountOut = totalSampleCount / channels; + + return result; +} + +drwav_int32* drwav_open_memory_and_read_s32(const void* data, size_t dataSize, unsigned int* channels, unsigned int* sampleRate, drwav_uint64* totalSampleCount) +{ + if (sampleRate) *sampleRate = 0; + if (channels) *channels = 0; + if (totalSampleCount) *totalSampleCount = 0; + + drwav wav; + if (!drwav_init_memory(&wav, data, dataSize)) { + return NULL; + } + + return drwav__read_and_close_s32(&wav, channels, sampleRate, totalSampleCount); +} + +drwav_int32* drwav_open_memory_and_read_pcm_frames_s32(const void* data, size_t dataSize, unsigned int* channelsOut, unsigned int* sampleRateOut, drwav_uint64* totalFrameCountOut) +{ + if (channelsOut) *channelsOut = 0; + if (sampleRateOut) *sampleRateOut = 0; + if (totalFrameCountOut) *totalFrameCountOut = 0; + + unsigned int channels; + unsigned int sampleRate; + drwav_uint64 totalSampleCount; + drwav_int32* result = drwav_open_memory_and_read_s32(data, dataSize, &channels, &sampleRate, &totalSampleCount); + if (result == NULL) { + return NULL; + } + + if (channelsOut) *channelsOut = channels; + if (sampleRateOut) *sampleRateOut = sampleRate; + if (totalFrameCountOut) *totalFrameCountOut = totalSampleCount / channels; + + return result; +} +#endif //DR_WAV_NO_CONVERSION_API + + +void drwav_free(void* pDataReturnedByOpenAndRead) +{ + DRWAV_FREE(pDataReturnedByOpenAndRead); +} + +#endif //DR_WAV_IMPLEMENTATION + + +// REVISION HISTORY +// +// v0.9.0 - 2018-xx-xx +// - API CHANGE: Rename drwav_open_and_read_file_*() to drwav_open_file_and_read_*(). +// - API CHANGE: Rename drwav_open_and_read_memory_*() to drwav_open_memory_and_read_*(). +// - Add built-in support for smpl chunks. +// - Add support for firing a callback for each chunk in the file at initialization time. +// - This is enabled through the drwav_init_ex(), etc. family of APIs. +// - Add new reading APIs for reading by PCM frames instead of samples. +// +// v0.8.5 - 2018-09-11 +// - Const correctness. +// - Fix a potential stack overflow. +// +// v0.8.4 - 2018-08-07 +// - Improve 64-bit detection. +// +// v0.8.3 - 2018-08-05 +// - Fix C++ build on older versions of GCC. +// +// v0.8.2 - 2018-08-02 +// - Fix some big-endian bugs. +// +// v0.8.1 - 2018-06-29 +// - Add support for sequential writing APIs. +// - Disable seeking in write mode. +// - Fix bugs with Wave64. +// - Fix typos. +// +// v0.8 - 2018-04-27 +// - Bug fix. +// - Start using major.minor.revision versioning. +// +// v0.7f - 2018-02-05 +// - Restrict ADPCM formats to a maximum of 2 channels. +// +// v0.7e - 2018-02-02 +// - Fix a crash. +// +// v0.7d - 2018-02-01 +// - Fix a crash. +// +// v0.7c - 2018-02-01 +// - Set drwav.bytesPerSample to 0 for all compressed formats. +// - Fix a crash when reading 16-bit floating point WAV files. In this case dr_wav will output silence for +// all format conversion reading APIs (*_s16, *_s32, *_f32 APIs). +// - Fix some divide-by-zero errors. +// +// v0.7b - 2018-01-22 +// - Fix errors with seeking of compressed formats. +// - Fix compilation error when DR_WAV_NO_CONVERSION_API +// +// v0.7a - 2017-11-17 +// - Fix some GCC warnings. +// +// v0.7 - 2017-11-04 +// - Add writing APIs. +// +// v0.6 - 2017-08-16 +// - API CHANGE: Rename dr_* types to drwav_*. +// - Add support for custom implementations of malloc(), realloc(), etc. +// - Add support for Microsoft ADPCM. +// - Add support for IMA ADPCM (DVI, format code 0x11). +// - Optimizations to drwav_read_s16(). +// - Bug fixes. +// +// v0.5g - 2017-07-16 +// - Change underlying type for booleans to unsigned. +// +// v0.5f - 2017-04-04 +// - Fix a minor bug with drwav_open_and_read_s16() and family. +// +// v0.5e - 2016-12-29 +// - Added support for reading samples as signed 16-bit integers. Use the _s16() family of APIs for this. +// - Minor fixes to documentation. +// +// v0.5d - 2016-12-28 +// - Use drwav_int*/drwav_uint* sized types to improve compiler support. +// +// v0.5c - 2016-11-11 +// - Properly handle JUNK chunks that come before the FMT chunk. +// +// v0.5b - 2016-10-23 +// - A minor change to drwav_bool8 and drwav_bool32 types. +// +// v0.5a - 2016-10-11 +// - Fixed a bug with drwav_open_and_read() and family due to incorrect argument ordering. +// - Improve A-law and mu-law efficiency. +// +// v0.5 - 2016-09-29 +// - API CHANGE. Swap the order of "channels" and "sampleRate" parameters in drwav_open_and_read*(). Rationale for this is to +// keep it consistent with dr_audio and dr_flac. +// +// v0.4b - 2016-09-18 +// - Fixed a typo in documentation. +// +// v0.4a - 2016-09-18 +// - Fixed a typo. +// - Change date format to ISO 8601 (YYYY-MM-DD) +// +// v0.4 - 2016-07-13 +// - API CHANGE. Make onSeek consistent with dr_flac. +// - API CHANGE. Rename drwav_seek() to drwav_seek_to_sample() for clarity and consistency with dr_flac. +// - Added support for Sony Wave64. +// +// v0.3a - 2016-05-28 +// - API CHANGE. Return drwav_bool32 instead of int in onSeek callback. +// - Fixed a memory leak. +// +// v0.3 - 2016-05-22 +// - Lots of API changes for consistency. +// +// v0.2a - 2016-05-16 +// - Fixed Linux/GCC build. +// +// v0.2 - 2016-05-11 +// - Added support for reading data as signed 32-bit PCM for consistency with dr_flac. +// +// v0.1a - 2016-05-07 +// - Fixed a bug in drwav_open_file() where the file handle would not be closed if the loader failed to initialize. +// +// v0.1 - 2016-05-04 +// - Initial versioned release. + + +/* +This is free and unencumbered software released into the public domain. + +Anyone is free to copy, modify, publish, use, compile, sell, or +distribute this software, either in source code form or as a compiled +binary, for any purpose, commercial or non-commercial, and by any +means. + +In jurisdictions that recognize copyright laws, the author or authors +of this software dedicate any and all copyright interest in the +software to the public domain. We make this dedication for the benefit +of the public at large and to the detriment of our heirs and +successors. We intend this dedication to be an overt act of +relinquishment in perpetuity of all present and future rights to this +software under copyright law. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, +EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF +MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. +IN NO EVENT SHALL THE AUTHORS BE LIABLE FOR ANY CLAIM, DAMAGES OR +OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, +ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR +OTHER DEALINGS IN THE SOFTWARE. + +For more information, please refer to +*/ diff --git a/src/soloud/src/audiosource/wav/soloud_wav.cpp b/src/soloud/src/audiosource/wav/soloud_wav.cpp new file mode 100644 index 0000000..fd9b257 --- /dev/null +++ b/src/soloud/src/audiosource/wav/soloud_wav.cpp @@ -0,0 +1,396 @@ +/* +SoLoud audio engine +Copyright (c) 2013-2018 Jari Komppa + +This software is provided 'as-is', without any express or implied +warranty. In no event will the authors be held liable for any damages +arising from the use of this software. + +Permission is granted to anyone to use this software for any purpose, +including commercial applications, and to alter it and redistribute it +freely, subject to the following restrictions: + + 1. The origin of this software must not be misrepresented; you must not + claim that you wrote the original software. If you use this software + in a product, an acknowledgment in the product documentation would be + appreciated but is not required. + + 2. Altered source versions must be plainly marked as such, and must not be + misrepresented as being the original software. + + 3. This notice may not be removed or altered from any source + distribution. +*/ + +#include +#include +#include +#include "soloud.h" +#include "soloud_wav.h" +#include "soloud_file.h" +#include "stb_vorbis.h" +#include "dr_mp3.h" +#include "dr_wav.h" +#include "dr_flac.h" + +namespace SoLoud +{ + WavInstance::WavInstance(Wav *aParent) + { + mParent = aParent; + mOffset = 0; + } + + unsigned int WavInstance::getAudio(float *aBuffer, unsigned int aSamplesToRead, unsigned int aBufferSize) + { + if (mParent->mData == NULL) + return 0; + + unsigned int dataleft = mParent->mSampleCount - mOffset; + unsigned int copylen = dataleft; + if (copylen > aSamplesToRead) + copylen = aSamplesToRead; + + unsigned int i; + for (i = 0; i < mChannels; i++) + { + memcpy(aBuffer + i * aBufferSize, mParent->mData + mOffset + i * mParent->mSampleCount, sizeof(float) * copylen); + } + + mOffset += copylen; + return copylen; + } + + result WavInstance::rewind() + { + mOffset = 0; + mStreamPosition = 0.0f; + return 0; + } + + bool WavInstance::hasEnded() + { + if (!(mFlags & AudioSourceInstance::LOOPING) && mOffset >= mParent->mSampleCount) + { + return 1; + } + return 0; + } + + Wav::Wav() + { + mData = NULL; + mSampleCount = 0; + } + + Wav::~Wav() + { + stop(); + delete[] mData; + } + +#define MAKEDWORD(a,b,c,d) (((d) << 24) | ((c) << 16) | ((b) << 8) | (a)) + + result Wav::loadwav(MemoryFile *aReader) + { + drwav decoder; + + if (!drwav_init_memory(&decoder, aReader->getMemPtr(), aReader->length())) + { + return FILE_LOAD_FAILED; + } + + drwav_uint64 samples = decoder.totalSampleCount / decoder.channels; + + if (!samples) + { + drwav_uninit(&decoder); + return FILE_LOAD_FAILED; + } + + mData = new float[(unsigned int)(samples * decoder.channels)]; + mBaseSamplerate = (float)decoder.sampleRate; + mSampleCount = (unsigned int)samples; + mChannels = decoder.channels; + + unsigned int i, j, k; + for (i = 0; i < mSampleCount; i += 512) + { + float tmp[512 * MAX_CHANNELS]; + unsigned int blockSize = (mSampleCount - i) > 512 ? 512 : mSampleCount - i; + drwav_read_pcm_frames_f32(&decoder, blockSize, tmp); + for (j = 0; j < blockSize; j++) + { + for (k = 0; k < decoder.channels; k++) + { + mData[k * mSampleCount + i + j] = tmp[j * decoder.channels + k]; + } + } + } + drwav_uninit(&decoder); + + return SO_NO_ERROR; + } + + result Wav::loadogg(MemoryFile *aReader) + { + int e = 0; + stb_vorbis *vorbis = 0; + vorbis = stb_vorbis_open_memory(aReader->getMemPtr(), aReader->length(), &e, 0); + + if (0 == vorbis) + { + return FILE_LOAD_FAILED; + } + + stb_vorbis_info info = stb_vorbis_get_info(vorbis); + mBaseSamplerate = (float)info.sample_rate; + int samples = stb_vorbis_stream_length_in_samples(vorbis); + + if (info.channels > MAX_CHANNELS) + { + mChannels = MAX_CHANNELS; + } + else + { + mChannels = info.channels; + } + mData = new float[samples * mChannels]; + mSampleCount = samples; + samples = 0; + while(1) + { + float **outputs; + int n = stb_vorbis_get_frame_float(vorbis, NULL, &outputs); + if (n == 0) + { + break; + } + + unsigned int ch; + for (ch = 0; ch < mChannels; ch++) + memcpy(mData + samples + mSampleCount * ch, outputs[ch], sizeof(float) * n); + + samples += n; + } + stb_vorbis_close(vorbis); + + return 0; + } + + result Wav::loadmp3(MemoryFile *aReader) + { + drmp3 decoder; + + if (!drmp3_init_memory(&decoder, aReader->getMemPtr(), aReader->length(), NULL)) + { + return FILE_LOAD_FAILED; + } + + drmp3_uint64 samples = drmp3_get_pcm_frame_count(&decoder); + + if (!samples) + { + drmp3_uninit(&decoder); + return FILE_LOAD_FAILED; + } + + mData = new float[(unsigned int)(samples * decoder.channels)]; + mBaseSamplerate = (float)decoder.sampleRate; + mSampleCount = (unsigned int)samples; + mChannels = decoder.channels; + drmp3_seek_to_pcm_frame(&decoder, 0); + + unsigned int i, j, k; + for (i = 0; i 512 ? 512 : mSampleCount - i; + drmp3_read_pcm_frames_f32(&decoder, blockSize, tmp); + for (j = 0; j < blockSize; j++) + { + for (k = 0; k < decoder.channels; k++) + { + mData[k * mSampleCount + i + j] = tmp[j * decoder.channels + k]; + } + } + } + drmp3_uninit(&decoder); + + return SO_NO_ERROR; + } + + result Wav::loadflac(MemoryFile *aReader) + { + drflac *decoder = drflac_open_memory(aReader->mDataPtr, aReader->mDataLength); + + if (!decoder) + { + return FILE_LOAD_FAILED; + } + + drflac_uint64 samples = decoder->totalSampleCount; + + if (!samples) + { + drflac_close(decoder); + return FILE_LOAD_FAILED; + } + + mData = new float[(unsigned int)(samples * decoder->channels)]; + mBaseSamplerate = (float)decoder->sampleRate; + mSampleCount = (unsigned int)samples; + mChannels = decoder->channels; + drflac_seek_to_pcm_frame(decoder, 0); + + unsigned int i, j, k; + for (i = 0; i < mSampleCount; i += 512) + { + float tmp[512 * MAX_CHANNELS]; + unsigned int blockSize = (mSampleCount - i) > 512 ? 512 : mSampleCount - i; + drflac_read_pcm_frames_f32(decoder, blockSize, tmp); + for (j = 0; j < blockSize; j++) + { + for (k = 0; k < decoder->channels; k++) + { + mData[k * mSampleCount + i + j] = tmp[j * decoder->channels + k]; + } + } + } + drflac_close(decoder); + + return SO_NO_ERROR; + } + + result Wav::testAndLoadFile(MemoryFile *aReader) + { + delete[] mData; + mData = 0; + mSampleCount = 0; + mChannels = 1; + int tag = aReader->read32(); + if (tag == MAKEDWORD('O','g','g','S')) + { + return loadogg(aReader); + + } + else if (tag == MAKEDWORD('R','I','F','F')) + { + return loadwav(aReader); + } + else if (tag == MAKEDWORD('f', 'L', 'a', 'C')) + { + return loadflac(aReader); + } + else if (loadmp3(aReader) == SO_NO_ERROR) + { + return SO_NO_ERROR; + } + + return FILE_LOAD_FAILED; + } + + result Wav::load(const char *aFilename) + { + if (aFilename == 0) + return INVALID_PARAMETER; + stop(); + DiskFile dr; + int res = dr.open(aFilename); + if (res == SO_NO_ERROR) + return loadFile(&dr); + return FILE_LOAD_FAILED; + } + + result Wav::loadMem(unsigned char *aMem, unsigned int aLength, bool aCopy, bool aTakeOwnership) + { + if (aMem == NULL || aLength == 0) + return INVALID_PARAMETER; + stop(); + + MemoryFile dr; + dr.openMem(aMem, aLength, aCopy, aTakeOwnership); + return testAndLoadFile(&dr); + } + + result Wav::loadFile(File *aFile) + { + if (!aFile) + return INVALID_PARAMETER; + stop(); + + MemoryFile mr; + result res = mr.openFileToMem(aFile); + + if (res != SO_NO_ERROR) + { + return res; + } + return testAndLoadFile(&mr); + } + + AudioSourceInstance *Wav::createInstance() + { + return new WavInstance(this); + } + + double Wav::getLength() + { + if (mBaseSamplerate == 0) + return 0; + return mSampleCount / mBaseSamplerate; + } + + result Wav::loadRawWave8(unsigned char *aMem, unsigned int aLength, float aSamplerate, unsigned int aChannels) + { + if (aMem == 0 || aLength == 0 || aSamplerate <= 0 || aChannels < 1) + return INVALID_PARAMETER; + stop(); + delete[] mData; + mData = new float[aLength]; + mSampleCount = aLength / aChannels; + mChannels = aChannels; + mBaseSamplerate = aSamplerate; + unsigned int i; + for (i = 0; i < aLength; i++) + mData[i] = ((signed)aMem[i] - 128) / (float)0x80; + return SO_NO_ERROR; + } + + result Wav::loadRawWave16(short *aMem, unsigned int aLength, float aSamplerate, unsigned int aChannels) + { + if (aMem == 0 || aLength == 0 || aSamplerate <= 0 || aChannels < 1) + return INVALID_PARAMETER; + stop(); + delete[] mData; + mData = new float[aLength]; + mSampleCount = aLength / aChannels; + mChannels = aChannels; + mBaseSamplerate = aSamplerate; + unsigned int i; + for (i = 0; i < aLength; i++) + mData[i] = ((signed short)aMem[i]) / (float)0x8000; + return SO_NO_ERROR; + } + + result Wav::loadRawWave(float *aMem, unsigned int aLength, float aSamplerate, unsigned int aChannels, bool aCopy, bool aTakeOwndership) + { + if (aMem == 0 || aLength == 0 || aSamplerate <= 0 || aChannels < 1) + return INVALID_PARAMETER; + stop(); + delete[] mData; + if (aCopy == true || aTakeOwndership == false) + { + mData = new float[aLength]; + memcpy(mData, aMem, sizeof(float) * aLength); + } + else + { + mData = aMem; + } + mSampleCount = aLength / aChannels; + mChannels = aChannels; + mBaseSamplerate = aSamplerate; + return SO_NO_ERROR; + } +}; diff --git a/src/soloud/src/audiosource/wav/soloud_wavstream.cpp b/src/soloud/src/audiosource/wav/soloud_wavstream.cpp new file mode 100644 index 0000000..bef887e --- /dev/null +++ b/src/soloud/src/audiosource/wav/soloud_wavstream.cpp @@ -0,0 +1,658 @@ +/* +SoLoud audio engine +Copyright (c) 2013-2018 Jari Komppa + +This software is provided 'as-is', without any express or implied +warranty. In no event will the authors be held liable for any damages +arising from the use of this software. + +Permission is granted to anyone to use this software for any purpose, +including commercial applications, and to alter it and redistribute it +freely, subject to the following restrictions: + + 1. The origin of this software must not be misrepresented; you must not + claim that you wrote the original software. If you use this software + in a product, an acknowledgment in the product documentation would be + appreciated but is not required. + + 2. Altered source versions must be plainly marked as such, and must not be + misrepresented as being the original software. + + 3. This notice may not be removed or altered from any source + distribution. +*/ + +#include +#include +#include +#include "soloud.h" +#include "dr_flac.h" +#include "dr_mp3.h" +#include "dr_wav.h" +#include "soloud_wavstream.h" +#include "soloud_file.h" +#include "stb_vorbis.h" + +namespace SoLoud +{ + size_t drflac_read_func(void* pUserData, void* pBufferOut, size_t bytesToRead) + { + File *fp = (File*)pUserData; + return fp->read((unsigned char*)pBufferOut, (unsigned int)bytesToRead); + } + + size_t drmp3_read_func(void* pUserData, void* pBufferOut, size_t bytesToRead) + { + File *fp = (File*)pUserData; + return fp->read((unsigned char*)pBufferOut, (unsigned int)bytesToRead); + } + + size_t drwav_read_func(void* pUserData, void* pBufferOut, size_t bytesToRead) + { + File *fp = (File*)pUserData; + return fp->read((unsigned char*)pBufferOut, (unsigned int)bytesToRead); + } + + drflac_bool32 drflac_seek_func(void* pUserData, int offset, drflac_seek_origin origin) + { + File *fp = (File*)pUserData; + if (origin != drflac_seek_origin_start) + offset += fp->pos(); + fp->seek(offset); + return 1; + } + + drmp3_bool32 drmp3_seek_func(void* pUserData, int offset, drmp3_seek_origin origin) + { + File *fp = (File*)pUserData; + if (origin != drmp3_seek_origin_start) + offset += fp->pos(); + fp->seek(offset); + return 1; + } + + drmp3_bool32 drwav_seek_func(void* pUserData, int offset, drwav_seek_origin origin) + { + File *fp = (File*)pUserData; + if (origin != drwav_seek_origin_start) + offset += fp->pos(); + fp->seek(offset); + return 1; + } + + WavStreamInstance::WavStreamInstance(WavStream *aParent) + { + mParent = aParent; + mOffset = 0; + mCodec.mOgg = 0; + mCodec.mFlac = 0; + mCodec.mMp3 = 0; + mCodec.mWav = 0; + mFile = 0; + if (aParent->mMemFile) + { + MemoryFile *mf = new MemoryFile(); + mFile = mf; + mf->openMem(aParent->mMemFile->getMemPtr(), aParent->mMemFile->length(), false, false); + } + else + if (aParent->mFilename) + { + DiskFile *df = new DiskFile; + mFile = df; + df->open(aParent->mFilename); + } + else + if (aParent->mStreamFile) + { + mFile = aParent->mStreamFile; + mFile->seek(0); // stb_vorbis assumes file offset to be at start of ogg + } + else + { + return; + } + + if (mFile) + { + if (mParent->mFiletype == WAVSTREAM_WAV) + { + mCodec.mWav = drwav_open(drwav_read_func, drwav_seek_func, (void*)mFile); + if (!mCodec.mWav) + { + if (mFile != mParent->mStreamFile) + delete mFile; + mFile = 0; + } + } + else + if (mParent->mFiletype == WAVSTREAM_OGG) + { + int e; + + mCodec.mOgg = stb_vorbis_open_file((Soloud_Filehack *)mFile, 0, &e, 0); + + if (!mCodec.mOgg) + { + if (mFile != mParent->mStreamFile) + delete mFile; + mFile = 0; + } + mOggFrameSize = 0; + mOggFrameOffset = 0; + mOggOutputs = 0; + } + else + if (mParent->mFiletype == WAVSTREAM_FLAC) + { + mCodec.mFlac = drflac_open(drflac_read_func, drflac_seek_func, (void*)mFile); + if (!mCodec.mFlac) + { + if (mFile != mParent->mStreamFile) + delete mFile; + mFile = 0; + } + } + else + if (mParent->mFiletype == WAVSTREAM_MP3) + { + mCodec.mMp3 = new drmp3; + if (!drmp3_init(mCodec.mMp3, drmp3_read_func, drmp3_seek_func, (void*)mFile, NULL)) + { + delete mCodec.mMp3; + mCodec.mMp3 = 0; + if (mFile != mParent->mStreamFile) + delete mFile; + mFile = 0; + } + } + else + { + if (mFile != mParent->mStreamFile) + delete mFile; + mFile = NULL; + return; + } + } + } + + WavStreamInstance::~WavStreamInstance() + { + switch (mParent->mFiletype) + { + case WAVSTREAM_OGG: + if (mCodec.mOgg) + { + stb_vorbis_close(mCodec.mOgg); + } + break; + case WAVSTREAM_FLAC: + if (mCodec.mFlac) + { + drflac_close(mCodec.mFlac); + } + break; + case WAVSTREAM_MP3: + if (mCodec.mMp3) + { + drmp3_uninit(mCodec.mMp3); + delete mCodec.mMp3; + } + break; + case WAVSTREAM_WAV: + if (mCodec.mWav) + { + drwav_close(mCodec.mWav); + } + } + if (mFile != mParent->mStreamFile) + { + delete mFile; + } + } + + static int getOggData(float **aOggOutputs, float *aBuffer, int aSamples, int aPitch, int aFrameSize, int aFrameOffset, int aChannels) + { + if (aFrameSize <= 0) + return 0; + + int samples = aSamples; + if (aFrameSize - aFrameOffset < samples) + { + samples = aFrameSize - aFrameOffset; + } + + int i; + for (i = 0; i < aChannels; i++) + { + memcpy(aBuffer + aPitch * i, aOggOutputs[i] + aFrameOffset, sizeof(float) * samples); + } + return samples; + } + + + + unsigned int WavStreamInstance::getAudio(float *aBuffer, unsigned int aSamplesToRead, unsigned int aBufferSize) + { + unsigned int offset = 0; + if (mFile == NULL) + return 0; + switch (mParent->mFiletype) + { + case WAVSTREAM_FLAC: + { + unsigned int i, j, k; + + for (i = 0; i < aSamplesToRead; i += 512) + { + float tmp[512 * MAX_CHANNELS]; + unsigned int blockSize = (aSamplesToRead - i) > 512 ? 512 : aSamplesToRead - i; + offset += (unsigned int)drflac_read_pcm_frames_f32(mCodec.mFlac, blockSize, tmp); + + for (j = 0; j < blockSize; j++) + { + for (k = 0; k < mChannels; k++) + { + aBuffer[k * aSamplesToRead + i + j] = tmp[j * mCodec.mFlac->channels + k]; + } + } + } + mOffset += offset; + return offset; + } + break; + case WAVSTREAM_MP3: + { + unsigned int i, j, k; + + for (i = 0; i < aSamplesToRead; i += 512) + { + float tmp[512 * MAX_CHANNELS]; + unsigned int blockSize = (aSamplesToRead - i) > 512 ? 512 : aSamplesToRead - i; + offset += (unsigned int)drmp3_read_pcm_frames_f32(mCodec.mMp3, blockSize, tmp); + + for (j = 0; j < blockSize; j++) + { + for (k = 0; k < mChannels; k++) + { + aBuffer[k * aSamplesToRead + i + j] = tmp[j * mCodec.mMp3->channels + k]; + } + } + } + mOffset += offset; + return offset; + } + break; + case WAVSTREAM_OGG: + { + if (mOggFrameOffset < mOggFrameSize) + { + int b = getOggData(mOggOutputs, aBuffer, aSamplesToRead, aBufferSize, mOggFrameSize, mOggFrameOffset, mChannels); + mOffset += b; + offset += b; + mOggFrameOffset += b; + } + + while (offset < aSamplesToRead) + { + mOggFrameSize = stb_vorbis_get_frame_float(mCodec.mOgg, NULL, &mOggOutputs); + mOggFrameOffset = 0; + int b = getOggData(mOggOutputs, aBuffer + offset, aSamplesToRead - offset, aBufferSize, mOggFrameSize, mOggFrameOffset, mChannels); + mOffset += b; + offset += b; + mOggFrameOffset += b; + + if (mOffset >= mParent->mSampleCount || b == 0) + { + mOffset += offset; + return offset; + } + } + } + break; + case WAVSTREAM_WAV: + { + unsigned int i, j, k; + + for (i = 0; i < aSamplesToRead; i += 512) + { + float tmp[512 * MAX_CHANNELS]; + unsigned int blockSize = (aSamplesToRead - i) > 512 ? 512 : aSamplesToRead - i; + offset += (unsigned int)drwav_read_pcm_frames_f32(mCodec.mWav, blockSize, tmp); + + for (j = 0; j < blockSize; j++) + { + for (k = 0; k < mChannels; k++) + { + aBuffer[k * aSamplesToRead + i + j] = tmp[j * mCodec.mWav->channels + k]; + } + } + } + mOffset += offset; + return offset; + } + break; + } + return aSamplesToRead; + } + + result WavStreamInstance::rewind() + { + switch (mParent->mFiletype) + { + case WAVSTREAM_OGG: + if (mCodec.mOgg) + { + stb_vorbis_seek_start(mCodec.mOgg); + } + break; + case WAVSTREAM_FLAC: + if (mCodec.mFlac) + { + drflac_seek_to_pcm_frame(mCodec.mFlac, 0); + } + break; + case WAVSTREAM_MP3: + if (mCodec.mMp3) + { + drmp3_seek_to_pcm_frame(mCodec.mMp3, 0); + } + break; + case WAVSTREAM_WAV: + if (mCodec.mWav) + { + drwav_seek_to_pcm_frame(mCodec.mWav, 0); + } + break; + } + mOffset = 0; + mStreamPosition = 0.0f; + return 0; + } + + bool WavStreamInstance::hasEnded() + { + if (mOffset >= mParent->mSampleCount) + { + return 1; + } + return 0; + } + + WavStream::WavStream() + { + mFilename = 0; + mSampleCount = 0; + mFiletype = WAVSTREAM_WAV; + mMemFile = 0; + mStreamFile = 0; + } + + WavStream::~WavStream() + { + stop(); + delete[] mFilename; + delete mMemFile; + } + +#define MAKEDWORD(a,b,c,d) (((d) << 24) | ((c) << 16) | ((b) << 8) | (a)) + + result WavStream::loadwav(File * fp) + { + fp->seek(0); + drwav* decoder = drwav_open(drwav_read_func, drwav_seek_func, (void*)fp); + + if (decoder == NULL) + return FILE_LOAD_FAILED; + + mChannels = decoder->channels; + if (mChannels > MAX_CHANNELS) + { + mChannels = MAX_CHANNELS; + } + + mBaseSamplerate = (float)decoder->sampleRate; + mSampleCount = (unsigned int)decoder->totalSampleCount; + mFiletype = WAVSTREAM_WAV; + drwav_close(decoder); + + return SO_NO_ERROR; + } + + result WavStream::loadogg(File * fp) + { + fp->seek(0); + int e; + stb_vorbis *v; + v = stb_vorbis_open_file((Soloud_Filehack *)fp, 0, &e, 0); + if (v == NULL) + return FILE_LOAD_FAILED; + stb_vorbis_info info = stb_vorbis_get_info(v); + mChannels = info.channels; + if (info.channels > MAX_CHANNELS) + { + mChannels = MAX_CHANNELS; + } + mBaseSamplerate = (float)info.sample_rate; + int samples = stb_vorbis_stream_length_in_samples(v); + stb_vorbis_close(v); + mFiletype = WAVSTREAM_OGG; + + mSampleCount = samples; + + return 0; + } + + result WavStream::loadflac(File * fp) + { + fp->seek(0); + drflac* decoder = drflac_open(drflac_read_func, drflac_seek_func, (void*)fp); + + if (decoder == NULL) + return FILE_LOAD_FAILED; + + mChannels = decoder->channels; + if (mChannels > MAX_CHANNELS) + { + mChannels = MAX_CHANNELS; + } + + mBaseSamplerate = (float)decoder->sampleRate; + mSampleCount = (unsigned int)decoder->totalPCMFrameCount; + mFiletype = WAVSTREAM_FLAC; + drflac_close(decoder); + + return SO_NO_ERROR; + } + + result WavStream::loadmp3(File * fp) + { + fp->seek(0); + drmp3 decoder; + if (!drmp3_init(&decoder, drmp3_read_func, drmp3_seek_func, (void*)fp, NULL)) + return FILE_LOAD_FAILED; + + + mChannels = decoder.channels; + if (mChannels > MAX_CHANNELS) + { + mChannels = MAX_CHANNELS; + } + + drmp3_uint64 samples = drmp3_get_pcm_frame_count(&decoder); + + mBaseSamplerate = (float)decoder.sampleRate; + mSampleCount = (unsigned int)samples; + mFiletype = WAVSTREAM_MP3; + drmp3_uninit(&decoder); + + return SO_NO_ERROR; + } + + result WavStream::load(const char *aFilename) + { + delete[] mFilename; + delete mMemFile; + mMemFile = 0; + mFilename = 0; + mSampleCount = 0; + DiskFile fp; + int res = fp.open(aFilename); + if (res != SO_NO_ERROR) + return res; + + int len = (int)strlen(aFilename); + mFilename = new char[len+1]; + memcpy(mFilename, aFilename, len); + mFilename[len] = 0; + + res = parse(&fp); + + if (res != SO_NO_ERROR) + { + delete[] mFilename; + mFilename = 0; + return res; + } + + return 0; + } + + result WavStream::loadMem(unsigned char *aData, unsigned int aDataLen, bool aCopy, bool aTakeOwnership) + { + delete[] mFilename; + delete mMemFile; + mStreamFile = 0; + mMemFile = 0; + mFilename = 0; + mSampleCount = 0; + + if (aData == NULL || aDataLen == 0) + return INVALID_PARAMETER; + + MemoryFile *mf = new MemoryFile(); + int res = mf->openMem(aData, aDataLen, aCopy, aTakeOwnership); + if (res != SO_NO_ERROR) + { + delete mf; + return res; + } + + res = parse(mf); + + if (res != SO_NO_ERROR) + { + delete mf; + return res; + } + + mMemFile = mf; + + return 0; + } + + result WavStream::loadToMem(const char *aFilename) + { + DiskFile df; + int res = df.open(aFilename); + if (res == SO_NO_ERROR) + { + res = loadFileToMem(&df); + } + return res; + } + + result WavStream::loadFile(File *aFile) + { + delete[] mFilename; + delete mMemFile; + mStreamFile = 0; + mMemFile = 0; + mFilename = 0; + mSampleCount = 0; + + int res = parse(aFile); + + if (res != SO_NO_ERROR) + { + return res; + } + + mStreamFile = aFile; + + return 0; + } + + result WavStream::loadFileToMem(File *aFile) + { + delete[] mFilename; + delete mMemFile; + mStreamFile = 0; + mMemFile = 0; + mFilename = 0; + mSampleCount = 0; + + MemoryFile *mf = new MemoryFile(); + int res = mf->openFileToMem(aFile); + if (res != SO_NO_ERROR) + { + delete mf; + return res; + } + + res = parse(mf); + + if (res != SO_NO_ERROR) + { + delete mf; + return res; + } + + mMemFile = mf; + + return res; + } + + + result WavStream::parse(File *aFile) + { + int tag = aFile->read32(); + int res = SO_NO_ERROR; + if (tag == MAKEDWORD('O', 'g', 'g', 'S')) + { + res = loadogg(aFile); + } + else + if (tag == MAKEDWORD('R', 'I', 'F', 'F')) + { + res = loadwav(aFile); + } + else + if (tag == MAKEDWORD('f', 'L', 'a', 'C')) + { + res = loadflac(aFile); + } + else + if (loadmp3(aFile) == SO_NO_ERROR) + { + res = SO_NO_ERROR; + } + else + { + res = FILE_LOAD_FAILED; + } + return res; + } + + AudioSourceInstance *WavStream::createInstance() + { + return new WavStreamInstance(this); + } + + double WavStream::getLength() + { + if (mBaseSamplerate == 0) + return 0; + return mSampleCount / mBaseSamplerate; + } +}; diff --git a/src/soloud/src/audiosource/wav/stb_vorbis.c b/src/soloud/src/audiosource/wav/stb_vorbis.c new file mode 100644 index 0000000..e7c92b1 --- /dev/null +++ b/src/soloud/src/audiosource/wav/stb_vorbis.c @@ -0,0 +1,5465 @@ +// Ogg Vorbis audio decoder - v1.14 - public domain +// http://nothings.org/stb_vorbis/ +// +// Original version written by Sean Barrett in 2007. +// +// Originally sponsored by RAD Game Tools. Seeking implementation +// sponsored by Phillip Bennefall, Marc Andersen, Aaron Baker, +// Elias Software, Aras Pranckevicius, and Sean Barrett. +// +// LICENSE +// +// See end of file for license information. +// +// Limitations: +// +// - floor 0 not supported (used in old ogg vorbis files pre-2004) +// - lossless sample-truncation at beginning ignored +// - cannot concatenate multiple vorbis streams +// - sample positions are 32-bit, limiting seekable 192Khz +// files to around 6 hours (Ogg supports 64-bit) +// +// Feature contributors: +// Dougall Johnson (sample-exact seeking) +// +// Bugfix/warning contributors: +// Terje Mathisen Niklas Frykholm Andy Hill +// Casey Muratori John Bolton Gargaj +// Laurent Gomila Marc LeBlanc Ronny Chevalier +// Bernhard Wodo Evan Balster alxprd@github +// Tom Beaumont Ingo Leitgeb Nicolas Guillemot +// Phillip Bennefall Rohit Thiago Goulart +// manxorist@github saga musix github:infatum +// Timur Gagiev +// +// Partial history: +// 1.14 - 2018-02-11 - delete bogus dealloca usage +// 1.13 - 2018-01-29 - fix truncation of last frame (hopefully) +// 1.12 - 2017-11-21 - limit residue begin/end to blocksize/2 to avoid large temp allocs in bad/corrupt files +// 1.11 - 2017-07-23 - fix MinGW compilation +// 1.10 - 2017-03-03 - more robust seeking; fix negative ilog(); clear error in open_memory +// 1.09 - 2016-04-04 - back out 'truncation of last frame' fix from previous version +// 1.08 - 2016-04-02 - warnings; setup memory leaks; truncation of last frame +// 1.07 - 2015-01-16 - fixes for crashes on invalid files; warning fixes; const +// 1.06 - 2015-08-31 - full, correct support for seeking API (Dougall Johnson) +// some crash fixes when out of memory or with corrupt files +// fix some inappropriately signed shifts +// 1.05 - 2015-04-19 - don't define __forceinline if it's redundant +// 1.04 - 2014-08-27 - fix missing const-correct case in API +// 1.03 - 2014-08-07 - warning fixes +// 1.02 - 2014-07-09 - declare qsort comparison as explicitly _cdecl in Windows +// 1.01 - 2014-06-18 - fix stb_vorbis_get_samples_float (interleaved was correct) +// 1.0 - 2014-05-26 - fix memory leaks; fix warnings; fix bugs in >2-channel; +// (API change) report sample rate for decode-full-file funcs +// +// See end of file for full version history. + + +////////////////////////////////////////////////////////////////////////////// +// +// HEADER BEGINS HERE +// + +#ifndef STB_VORBIS_INCLUDE_STB_VORBIS_H +#define STB_VORBIS_INCLUDE_STB_VORBIS_H + +#if defined(STB_VORBIS_NO_CRT) && !defined(STB_VORBIS_NO_STDIO) +#define STB_VORBIS_NO_STDIO 1 +#endif + +#ifndef STB_VORBIS_NO_STDIO +#include +#endif + +#include "soloud_file_hack_on.h" + +#ifdef __cplusplus +extern "C" { +#endif + +/////////// THREAD SAFETY + +// Individual stb_vorbis* handles are not thread-safe; you cannot decode from +// them from multiple threads at the same time. However, you can have multiple +// stb_vorbis* handles and decode from them independently in multiple thrads. + + +/////////// MEMORY ALLOCATION + +// normally stb_vorbis uses malloc() to allocate memory at startup, +// and alloca() to allocate temporary memory during a frame on the +// stack. (Memory consumption will depend on the amount of setup +// data in the file and how you set the compile flags for speed +// vs. size. In my test files the maximal-size usage is ~150KB.) +// +// You can modify the wrapper functions in the source (setup_malloc, +// setup_temp_malloc, temp_malloc) to change this behavior, or you +// can use a simpler allocation model: you pass in a buffer from +// which stb_vorbis will allocate _all_ its memory (including the +// temp memory). "open" may fail with a VORBIS_outofmem if you +// do not pass in enough data; there is no way to determine how +// much you do need except to succeed (at which point you can +// query get_info to find the exact amount required. yes I know +// this is lame). +// +// If you pass in a non-NULL buffer of the type below, allocation +// will occur from it as described above. Otherwise just pass NULL +// to use malloc()/alloca() + +typedef struct +{ + char *alloc_buffer; + int alloc_buffer_length_in_bytes; +} stb_vorbis_alloc; + + +/////////// FUNCTIONS USEABLE WITH ALL INPUT MODES + +typedef struct stb_vorbis stb_vorbis; + +typedef struct +{ + unsigned int sample_rate; + int channels; + + unsigned int setup_memory_required; + unsigned int setup_temp_memory_required; + unsigned int temp_memory_required; + + int max_frame_size; +} stb_vorbis_info; + +// get general information about the file +extern stb_vorbis_info stb_vorbis_get_info(stb_vorbis *f); + +// get the last error detected (clears it, too) +extern int stb_vorbis_get_error(stb_vorbis *f); + +// close an ogg vorbis file and free all memory in use +extern void stb_vorbis_close(stb_vorbis *f); + +// this function returns the offset (in samples) from the beginning of the +// file that will be returned by the next decode, if it is known, or -1 +// otherwise. after a flush_pushdata() call, this may take a while before +// it becomes valid again. +// NOT WORKING YET after a seek with PULLDATA API +extern int stb_vorbis_get_sample_offset(stb_vorbis *f); + +// returns the current seek point within the file, or offset from the beginning +// of the memory buffer. In pushdata mode it returns 0. +extern unsigned int stb_vorbis_get_file_offset(stb_vorbis *f); + +/////////// PUSHDATA API + +#ifndef STB_VORBIS_NO_PUSHDATA_API + +// this API allows you to get blocks of data from any source and hand +// them to stb_vorbis. you have to buffer them; stb_vorbis will tell +// you how much it used, and you have to give it the rest next time; +// and stb_vorbis may not have enough data to work with and you will +// need to give it the same data again PLUS more. Note that the Vorbis +// specification does not bound the size of an individual frame. + +extern stb_vorbis *stb_vorbis_open_pushdata( + const unsigned char * datablock, int datablock_length_in_bytes, + int *datablock_memory_consumed_in_bytes, + int *error, + const stb_vorbis_alloc *alloc_buffer); +// create a vorbis decoder by passing in the initial data block containing +// the ogg&vorbis headers (you don't need to do parse them, just provide +// the first N bytes of the file--you're told if it's not enough, see below) +// on success, returns an stb_vorbis *, does not set error, returns the amount of +// data parsed/consumed on this call in *datablock_memory_consumed_in_bytes; +// on failure, returns NULL on error and sets *error, does not change *datablock_memory_consumed +// if returns NULL and *error is VORBIS_need_more_data, then the input block was +// incomplete and you need to pass in a larger block from the start of the file + +extern int stb_vorbis_decode_frame_pushdata( + stb_vorbis *f, + const unsigned char *datablock, int datablock_length_in_bytes, + int *channels, // place to write number of float * buffers + float ***output, // place to write float ** array of float * buffers + int *samples // place to write number of output samples + ); +// decode a frame of audio sample data if possible from the passed-in data block +// +// return value: number of bytes we used from datablock +// +// possible cases: +// 0 bytes used, 0 samples output (need more data) +// N bytes used, 0 samples output (resynching the stream, keep going) +// N bytes used, M samples output (one frame of data) +// note that after opening a file, you will ALWAYS get one N-bytes,0-sample +// frame, because Vorbis always "discards" the first frame. +// +// Note that on resynch, stb_vorbis will rarely consume all of the buffer, +// instead only datablock_length_in_bytes-3 or less. This is because it wants +// to avoid missing parts of a page header if they cross a datablock boundary, +// without writing state-machiney code to record a partial detection. +// +// The number of channels returned are stored in *channels (which can be +// NULL--it is always the same as the number of channels reported by +// get_info). *output will contain an array of float* buffers, one per +// channel. In other words, (*output)[0][0] contains the first sample from +// the first channel, and (*output)[1][0] contains the first sample from +// the second channel. + +extern void stb_vorbis_flush_pushdata(stb_vorbis *f); +// inform stb_vorbis that your next datablock will not be contiguous with +// previous ones (e.g. you've seeked in the data); future attempts to decode +// frames will cause stb_vorbis to resynchronize (as noted above), and +// once it sees a valid Ogg page (typically 4-8KB, as large as 64KB), it +// will begin decoding the _next_ frame. +// +// if you want to seek using pushdata, you need to seek in your file, then +// call stb_vorbis_flush_pushdata(), then start calling decoding, then once +// decoding is returning you data, call stb_vorbis_get_sample_offset, and +// if you don't like the result, seek your file again and repeat. +#endif + + +////////// PULLING INPUT API + +#ifndef STB_VORBIS_NO_PULLDATA_API +// This API assumes stb_vorbis is allowed to pull data from a source-- +// either a block of memory containing the _entire_ vorbis stream, or a +// FILE * that you or it create, or possibly some other reading mechanism +// if you go modify the source to replace the FILE * case with some kind +// of callback to your code. (But if you don't support seeking, you may +// just want to go ahead and use pushdata.) + +#if !defined(STB_VORBIS_NO_STDIO) && !defined(STB_VORBIS_NO_INTEGER_CONVERSION) +extern int stb_vorbis_decode_filename(const char *filename, int *channels, int *sample_rate, short **output); +#endif +#if !defined(STB_VORBIS_NO_INTEGER_CONVERSION) +extern int stb_vorbis_decode_memory(const unsigned char *mem, int len, int *channels, int *sample_rate, short **output); +#endif +// decode an entire file and output the data interleaved into a malloc()ed +// buffer stored in *output. The return value is the number of samples +// decoded, or -1 if the file could not be opened or was not an ogg vorbis file. +// When you're done with it, just free() the pointer returned in *output. + +extern stb_vorbis * stb_vorbis_open_memory(const unsigned char *data, int len, + int *error, const stb_vorbis_alloc *alloc_buffer); +// create an ogg vorbis decoder from an ogg vorbis stream in memory (note +// this must be the entire stream!). on failure, returns NULL and sets *error + +#ifndef STB_VORBIS_NO_STDIO +extern stb_vorbis * stb_vorbis_open_filename(const char *filename, + int *error, const stb_vorbis_alloc *alloc_buffer); +// create an ogg vorbis decoder from a filename via fopen(). on failure, +// returns NULL and sets *error (possibly to VORBIS_file_open_failure). + +extern stb_vorbis * stb_vorbis_open_file(FILE *f, int close_handle_on_close, + int *error, const stb_vorbis_alloc *alloc_buffer); +// create an ogg vorbis decoder from an open FILE *, looking for a stream at +// the _current_ seek point (ftell). on failure, returns NULL and sets *error. +// note that stb_vorbis must "own" this stream; if you seek it in between +// calls to stb_vorbis, it will become confused. Morever, if you attempt to +// perform stb_vorbis_seek_*() operations on this file, it will assume it +// owns the _entire_ rest of the file after the start point. Use the next +// function, stb_vorbis_open_file_section(), to limit it. + +extern stb_vorbis * stb_vorbis_open_file_section(FILE *f, int close_handle_on_close, + int *error, const stb_vorbis_alloc *alloc_buffer, unsigned int len); +// create an ogg vorbis decoder from an open FILE *, looking for a stream at +// the _current_ seek point (ftell); the stream will be of length 'len' bytes. +// on failure, returns NULL and sets *error. note that stb_vorbis must "own" +// this stream; if you seek it in between calls to stb_vorbis, it will become +// confused. +#endif + +extern int stb_vorbis_seek_frame(stb_vorbis *f, unsigned int sample_number); +extern int stb_vorbis_seek(stb_vorbis *f, unsigned int sample_number); +// these functions seek in the Vorbis file to (approximately) 'sample_number'. +// after calling seek_frame(), the next call to get_frame_*() will include +// the specified sample. after calling stb_vorbis_seek(), the next call to +// stb_vorbis_get_samples_* will start with the specified sample. If you +// do not need to seek to EXACTLY the target sample when using get_samples_*, +// you can also use seek_frame(). + +extern int stb_vorbis_seek_start(stb_vorbis *f); +// this function is equivalent to stb_vorbis_seek(f,0) + +extern unsigned int stb_vorbis_stream_length_in_samples(stb_vorbis *f); +extern float stb_vorbis_stream_length_in_seconds(stb_vorbis *f); +// these functions return the total length of the vorbis stream + +extern int stb_vorbis_get_frame_float(stb_vorbis *f, int *channels, float ***output); +// decode the next frame and return the number of samples. the number of +// channels returned are stored in *channels (which can be NULL--it is always +// the same as the number of channels reported by get_info). *output will +// contain an array of float* buffers, one per channel. These outputs will +// be overwritten on the next call to stb_vorbis_get_frame_*. +// +// You generally should not intermix calls to stb_vorbis_get_frame_*() +// and stb_vorbis_get_samples_*(), since the latter calls the former. + +#ifndef STB_VORBIS_NO_INTEGER_CONVERSION +extern int stb_vorbis_get_frame_short_interleaved(stb_vorbis *f, int num_c, short *buffer, int num_shorts); +extern int stb_vorbis_get_frame_short (stb_vorbis *f, int num_c, short **buffer, int num_samples); +#endif +// decode the next frame and return the number of *samples* per channel. +// Note that for interleaved data, you pass in the number of shorts (the +// size of your array), but the return value is the number of samples per +// channel, not the total number of samples. +// +// The data is coerced to the number of channels you request according to the +// channel coercion rules (see below). You must pass in the size of your +// buffer(s) so that stb_vorbis will not overwrite the end of the buffer. +// The maximum buffer size needed can be gotten from get_info(); however, +// the Vorbis I specification implies an absolute maximum of 4096 samples +// per channel. + +// Channel coercion rules: +// Let M be the number of channels requested, and N the number of channels present, +// and Cn be the nth channel; let stereo L be the sum of all L and center channels, +// and stereo R be the sum of all R and center channels (channel assignment from the +// vorbis spec). +// M N output +// 1 k sum(Ck) for all k +// 2 * stereo L, stereo R +// k l k > l, the first l channels, then 0s +// k l k <= l, the first k channels +// Note that this is not _good_ surround etc. mixing at all! It's just so +// you get something useful. + +extern int stb_vorbis_get_samples_float_interleaved(stb_vorbis *f, int channels, float *buffer, int num_floats); +extern int stb_vorbis_get_samples_float(stb_vorbis *f, int channels, float **buffer, int num_samples); +// gets num_samples samples, not necessarily on a frame boundary--this requires +// buffering so you have to supply the buffers. DOES NOT APPLY THE COERCION RULES. +// Returns the number of samples stored per channel; it may be less than requested +// at the end of the file. If there are no more samples in the file, returns 0. + +#ifndef STB_VORBIS_NO_INTEGER_CONVERSION +extern int stb_vorbis_get_samples_short_interleaved(stb_vorbis *f, int channels, short *buffer, int num_shorts); +extern int stb_vorbis_get_samples_short(stb_vorbis *f, int channels, short **buffer, int num_samples); +#endif +// gets num_samples samples, not necessarily on a frame boundary--this requires +// buffering so you have to supply the buffers. Applies the coercion rules above +// to produce 'channels' channels. Returns the number of samples stored per channel; +// it may be less than requested at the end of the file. If there are no more +// samples in the file, returns 0. + +#endif + +//////// ERROR CODES + +enum STBVorbisError +{ + VORBIS__no_error, + + VORBIS_need_more_data=1, // not a real error + + VORBIS_invalid_api_mixing, // can't mix API modes + VORBIS_outofmem, // not enough memory + VORBIS_feature_not_supported, // uses floor 0 + VORBIS_too_many_channels, // STB_VORBIS_MAX_CHANNELS is too small + VORBIS_file_open_failure, // fopen() failed + VORBIS_seek_without_length, // can't seek in unknown-length file + + VORBIS_unexpected_eof=10, // file is truncated? + VORBIS_seek_invalid, // seek past EOF + + // decoding errors (corrupt/invalid stream) -- you probably + // don't care about the exact details of these + + // vorbis errors: + VORBIS_invalid_setup=20, + VORBIS_invalid_stream, + + // ogg errors: + VORBIS_missing_capture_pattern=30, + VORBIS_invalid_stream_structure_version, + VORBIS_continued_packet_flag_invalid, + VORBIS_incorrect_stream_serial_number, + VORBIS_invalid_first_page, + VORBIS_bad_packet_type, + VORBIS_cant_find_last_page, + VORBIS_seek_failed +}; + + +#ifdef __cplusplus +} +#endif + +#endif // STB_VORBIS_INCLUDE_STB_VORBIS_H +// +// HEADER ENDS HERE +// +////////////////////////////////////////////////////////////////////////////// + +#ifndef STB_VORBIS_HEADER_ONLY + +// global configuration settings (e.g. set these in the project/makefile), +// or just set them in this file at the top (although ideally the first few +// should be visible when the header file is compiled too, although it's not +// crucial) + +// STB_VORBIS_NO_PUSHDATA_API +// does not compile the code for the various stb_vorbis_*_pushdata() +// functions +// #define STB_VORBIS_NO_PUSHDATA_API + +// STB_VORBIS_NO_PULLDATA_API +// does not compile the code for the non-pushdata APIs +// #define STB_VORBIS_NO_PULLDATA_API + +// STB_VORBIS_NO_STDIO +// does not compile the code for the APIs that use FILE *s internally +// or externally (implied by STB_VORBIS_NO_PULLDATA_API) +// #define STB_VORBIS_NO_STDIO + +// STB_VORBIS_NO_INTEGER_CONVERSION +// does not compile the code for converting audio sample data from +// float to integer (implied by STB_VORBIS_NO_PULLDATA_API) +// #define STB_VORBIS_NO_INTEGER_CONVERSION + +// STB_VORBIS_NO_FAST_SCALED_FLOAT +// does not use a fast float-to-int trick to accelerate float-to-int on +// most platforms which requires endianness be defined correctly. +//#define STB_VORBIS_NO_FAST_SCALED_FLOAT + + +// STB_VORBIS_MAX_CHANNELS [number] +// globally define this to the maximum number of channels you need. +// The spec does not put a restriction on channels except that +// the count is stored in a byte, so 255 is the hard limit. +// Reducing this saves about 16 bytes per value, so using 16 saves +// (255-16)*16 or around 4KB. Plus anything other memory usage +// I forgot to account for. Can probably go as low as 8 (7.1 audio), +// 6 (5.1 audio), or 2 (stereo only). +#ifndef STB_VORBIS_MAX_CHANNELS +#define STB_VORBIS_MAX_CHANNELS 16 // enough for anyone? +#endif + +// STB_VORBIS_PUSHDATA_CRC_COUNT [number] +// after a flush_pushdata(), stb_vorbis begins scanning for the +// next valid page, without backtracking. when it finds something +// that looks like a page, it streams through it and verifies its +// CRC32. Should that validation fail, it keeps scanning. But it's +// possible that _while_ streaming through to check the CRC32 of +// one candidate page, it sees another candidate page. This #define +// determines how many "overlapping" candidate pages it can search +// at once. Note that "real" pages are typically ~4KB to ~8KB, whereas +// garbage pages could be as big as 64KB, but probably average ~16KB. +// So don't hose ourselves by scanning an apparent 64KB page and +// missing a ton of real ones in the interim; so minimum of 2 +#ifndef STB_VORBIS_PUSHDATA_CRC_COUNT +#define STB_VORBIS_PUSHDATA_CRC_COUNT 4 +#endif + +// STB_VORBIS_FAST_HUFFMAN_LENGTH [number] +// sets the log size of the huffman-acceleration table. Maximum +// supported value is 24. with larger numbers, more decodings are O(1), +// but the table size is larger so worse cache missing, so you'll have +// to probe (and try multiple ogg vorbis files) to find the sweet spot. +#ifndef STB_VORBIS_FAST_HUFFMAN_LENGTH +#define STB_VORBIS_FAST_HUFFMAN_LENGTH 10 +#endif + +// STB_VORBIS_FAST_BINARY_LENGTH [number] +// sets the log size of the binary-search acceleration table. this +// is used in similar fashion to the fast-huffman size to set initial +// parameters for the binary search + +// STB_VORBIS_FAST_HUFFMAN_INT +// The fast huffman tables are much more efficient if they can be +// stored as 16-bit results instead of 32-bit results. This restricts +// the codebooks to having only 65535 possible outcomes, though. +// (At least, accelerated by the huffman table.) +#ifndef STB_VORBIS_FAST_HUFFMAN_INT +#define STB_VORBIS_FAST_HUFFMAN_SHORT +#endif + +// STB_VORBIS_NO_HUFFMAN_BINARY_SEARCH +// If the 'fast huffman' search doesn't succeed, then stb_vorbis falls +// back on binary searching for the correct one. This requires storing +// extra tables with the huffman codes in sorted order. Defining this +// symbol trades off space for speed by forcing a linear search in the +// non-fast case, except for "sparse" codebooks. +// #define STB_VORBIS_NO_HUFFMAN_BINARY_SEARCH + +// STB_VORBIS_DIVIDES_IN_RESIDUE +// stb_vorbis precomputes the result of the scalar residue decoding +// that would otherwise require a divide per chunk. you can trade off +// space for time by defining this symbol. +// #define STB_VORBIS_DIVIDES_IN_RESIDUE + +// STB_VORBIS_DIVIDES_IN_CODEBOOK +// vorbis VQ codebooks can be encoded two ways: with every case explicitly +// stored, or with all elements being chosen from a small range of values, +// and all values possible in all elements. By default, stb_vorbis expands +// this latter kind out to look like the former kind for ease of decoding, +// because otherwise an integer divide-per-vector-element is required to +// unpack the index. If you define STB_VORBIS_DIVIDES_IN_CODEBOOK, you can +// trade off storage for speed. +//#define STB_VORBIS_DIVIDES_IN_CODEBOOK + +#ifdef STB_VORBIS_CODEBOOK_SHORTS +#error "STB_VORBIS_CODEBOOK_SHORTS is no longer supported as it produced incorrect results for some input formats" +#endif + +// STB_VORBIS_DIVIDE_TABLE +// this replaces small integer divides in the floor decode loop with +// table lookups. made less than 1% difference, so disabled by default. + +// STB_VORBIS_NO_INLINE_DECODE +// disables the inlining of the scalar codebook fast-huffman decode. +// might save a little codespace; useful for debugging +// #define STB_VORBIS_NO_INLINE_DECODE + +// STB_VORBIS_NO_DEFER_FLOOR +// Normally we only decode the floor without synthesizing the actual +// full curve. We can instead synthesize the curve immediately. This +// requires more memory and is very likely slower, so I don't think +// you'd ever want to do it except for debugging. +// #define STB_VORBIS_NO_DEFER_FLOOR + + + + +////////////////////////////////////////////////////////////////////////////// + +#ifdef STB_VORBIS_NO_PULLDATA_API + #define STB_VORBIS_NO_INTEGER_CONVERSION + #define STB_VORBIS_NO_STDIO +#endif + +#if defined(STB_VORBIS_NO_CRT) && !defined(STB_VORBIS_NO_STDIO) + #define STB_VORBIS_NO_STDIO 1 +#endif + +#ifndef STB_VORBIS_NO_INTEGER_CONVERSION +#ifndef STB_VORBIS_NO_FAST_SCALED_FLOAT + + // only need endianness for fast-float-to-int, which we don't + // use for pushdata + + #ifndef STB_VORBIS_BIG_ENDIAN + #define STB_VORBIS_ENDIAN 0 + #else + #define STB_VORBIS_ENDIAN 1 + #endif + +#endif +#endif + + +#ifndef STB_VORBIS_NO_STDIO +#include +#endif + +#ifndef STB_VORBIS_NO_CRT + #include + #include + #include + #include + + // find definition of alloca if it's not in stdlib.h: + #if defined(_MSC_VER) || defined(__MINGW32__) + #include + #endif + #if defined(__linux__) || defined(__linux) || defined(__EMSCRIPTEN__) + #include + #endif +#else // STB_VORBIS_NO_CRT + #define NULL 0 + #define malloc(s) 0 + #define free(s) ((void) 0) + #define realloc(s) 0 +#endif // STB_VORBIS_NO_CRT + +#include + +#ifdef __MINGW32__ + // eff you mingw: + // "fixed": + // http://sourceforge.net/p/mingw-w64/mailman/message/32882927/ + // "no that broke the build, reverted, who cares about C": + // http://sourceforge.net/p/mingw-w64/mailman/message/32890381/ + #ifdef __forceinline + #undef __forceinline + #endif + #define __forceinline + #define alloca __builtin_alloca +#elif !defined(_MSC_VER) + #if __GNUC__ + #define __forceinline inline + #else + #define __forceinline + #endif +#endif + +#if STB_VORBIS_MAX_CHANNELS > 256 +#error "Value of STB_VORBIS_MAX_CHANNELS outside of allowed range" +#endif + +#if STB_VORBIS_FAST_HUFFMAN_LENGTH > 24 +#error "Value of STB_VORBIS_FAST_HUFFMAN_LENGTH outside of allowed range" +#endif + + +#if 0 +#include +#define CHECK(f) _CrtIsValidHeapPointer(f->channel_buffers[1]) +#else +#define CHECK(f) ((void) 0) +#endif + +#define MAX_BLOCKSIZE_LOG 13 // from specification +#define MAX_BLOCKSIZE (1 << MAX_BLOCKSIZE_LOG) + + +typedef unsigned char uint8; +typedef signed char int8; +typedef unsigned short uint16; +typedef signed short int16; +typedef unsigned int uint32; +typedef signed int int32; + +#ifndef TRUE +#define TRUE 1 +#define FALSE 0 +#endif + +typedef float codetype; + +// @NOTE +// +// Some arrays below are tagged "//varies", which means it's actually +// a variable-sized piece of data, but rather than malloc I assume it's +// small enough it's better to just allocate it all together with the +// main thing +// +// Most of the variables are specified with the smallest size I could pack +// them into. It might give better performance to make them all full-sized +// integers. It should be safe to freely rearrange the structures or change +// the sizes larger--nothing relies on silently truncating etc., nor the +// order of variables. + +#define FAST_HUFFMAN_TABLE_SIZE (1 << STB_VORBIS_FAST_HUFFMAN_LENGTH) +#define FAST_HUFFMAN_TABLE_MASK (FAST_HUFFMAN_TABLE_SIZE - 1) + +typedef struct +{ + int dimensions, entries; + uint8 *codeword_lengths; + float minimum_value; + float delta_value; + uint8 value_bits; + uint8 lookup_type; + uint8 sequence_p; + uint8 sparse; + uint32 lookup_values; + codetype *multiplicands; + uint32 *codewords; + #ifdef STB_VORBIS_FAST_HUFFMAN_SHORT + int16 fast_huffman[FAST_HUFFMAN_TABLE_SIZE]; + #else + int32 fast_huffman[FAST_HUFFMAN_TABLE_SIZE]; + #endif + uint32 *sorted_codewords; + int *sorted_values; + int sorted_entries; +} Codebook; + +typedef struct +{ + uint8 order; + uint16 rate; + uint16 bark_map_size; + uint8 amplitude_bits; + uint8 amplitude_offset; + uint8 number_of_books; + uint8 book_list[16]; // varies +} Floor0; + +typedef struct +{ + uint8 partitions; + uint8 partition_class_list[32]; // varies + uint8 class_dimensions[16]; // varies + uint8 class_subclasses[16]; // varies + uint8 class_masterbooks[16]; // varies + int16 subclass_books[16][8]; // varies + uint16 Xlist[31*8+2]; // varies + uint8 sorted_order[31*8+2]; + uint8 neighbors[31*8+2][2]; + uint8 floor1_multiplier; + uint8 rangebits; + int values; +} Floor1; + +typedef union +{ + Floor0 floor0; + Floor1 floor1; +} Floor; + +typedef struct +{ + uint32 begin, end; + uint32 part_size; + uint8 classifications; + uint8 classbook; + uint8 **classdata; + int16 (*residue_books)[8]; +} Residue; + +typedef struct +{ + uint8 magnitude; + uint8 angle; + uint8 mux; +} MappingChannel; + +typedef struct +{ + uint16 coupling_steps; + MappingChannel *chan; + uint8 submaps; + uint8 submap_floor[15]; // varies + uint8 submap_residue[15]; // varies +} Mapping; + +typedef struct +{ + uint8 blockflag; + uint8 mapping; + uint16 windowtype; + uint16 transformtype; +} Mode; + +typedef struct +{ + uint32 goal_crc; // expected crc if match + int bytes_left; // bytes left in packet + uint32 crc_so_far; // running crc + int bytes_done; // bytes processed in _current_ chunk + uint32 sample_loc; // granule pos encoded in page +} CRCscan; + +typedef struct +{ + uint32 page_start, page_end; + uint32 last_decoded_sample; +} ProbedPage; + +struct stb_vorbis +{ + // user-accessible info + unsigned int sample_rate; + int channels; + + unsigned int setup_memory_required; + unsigned int temp_memory_required; + unsigned int setup_temp_memory_required; + + // input config +#ifndef STB_VORBIS_NO_STDIO + FILE *f; + uint32 f_start; + int close_on_free; +#endif + + uint8 *stream; + uint8 *stream_start; + uint8 *stream_end; + + uint32 stream_len; + + uint8 push_mode; + + uint32 first_audio_page_offset; + + ProbedPage p_first, p_last; + + // memory management + stb_vorbis_alloc alloc; + int setup_offset; + int temp_offset; + + // run-time results + int eof; + enum STBVorbisError error; + + // user-useful data + + // header info + int blocksize[2]; + int blocksize_0, blocksize_1; + int codebook_count; + Codebook *codebooks; + int floor_count; + uint16 floor_types[64]; // varies + Floor *floor_config; + int residue_count; + uint16 residue_types[64]; // varies + Residue *residue_config; + int mapping_count; + Mapping *mapping; + int mode_count; + Mode mode_config[64]; // varies + + uint32 total_samples; + + // decode buffer + float *channel_buffers[STB_VORBIS_MAX_CHANNELS]; + float *outputs [STB_VORBIS_MAX_CHANNELS]; + + float *previous_window[STB_VORBIS_MAX_CHANNELS]; + int previous_length; + + #ifndef STB_VORBIS_NO_DEFER_FLOOR + int16 *finalY[STB_VORBIS_MAX_CHANNELS]; + #else + float *floor_buffers[STB_VORBIS_MAX_CHANNELS]; + #endif + + uint32 current_loc; // sample location of next frame to decode + int current_loc_valid; + + // per-blocksize precomputed data + + // twiddle factors + float *A[2],*B[2],*C[2]; + float *window[2]; + uint16 *bit_reverse[2]; + + // current page/packet/segment streaming info + uint32 serial; // stream serial number for verification + int last_page; + int segment_count; + uint8 segments[255]; + uint8 page_flag; + uint8 bytes_in_seg; + uint8 first_decode; + int next_seg; + int last_seg; // flag that we're on the last segment + int last_seg_which; // what was the segment number of the last seg? + uint32 acc; + int valid_bits; + int packet_bytes; + int end_seg_with_known_loc; + uint32 known_loc_for_packet; + int discard_samples_deferred; + uint32 samples_output; + + // push mode scanning + int page_crc_tests; // only in push_mode: number of tests active; -1 if not searching +#ifndef STB_VORBIS_NO_PUSHDATA_API + CRCscan scan[STB_VORBIS_PUSHDATA_CRC_COUNT]; +#endif + + // sample-access + int channel_buffer_start; + int channel_buffer_end; +}; + +#if defined(STB_VORBIS_NO_PUSHDATA_API) + #define IS_PUSH_MODE(f) FALSE +#elif defined(STB_VORBIS_NO_PULLDATA_API) + #define IS_PUSH_MODE(f) TRUE +#else + #define IS_PUSH_MODE(f) ((f)->push_mode) +#endif + +typedef struct stb_vorbis vorb; + +static int error(vorb *f, enum STBVorbisError e) +{ + f->error = e; + if (!f->eof && e != VORBIS_need_more_data) { + f->error=e; // breakpoint for debugging + } + return 0; +} + + +// these functions are used for allocating temporary memory +// while decoding. if you can afford the stack space, use +// alloca(); otherwise, provide a temp buffer and it will +// allocate out of those. + +#define array_size_required(count,size) (count*(sizeof(void *)+(size))) + +#define temp_alloc(f,size) (f->alloc.alloc_buffer ? setup_temp_malloc(f,size) : alloca(size)) +#define temp_free(f,p) 0 +#define temp_alloc_save(f) ((f)->temp_offset) +#define temp_alloc_restore(f,p) ((f)->temp_offset = (p)) + +#define temp_block_array(f,count,size) make_block_array(temp_alloc(f,array_size_required(count,size)), count, size) + +// given a sufficiently large block of memory, make an array of pointers to subblocks of it +static void *make_block_array(void *mem, int count, int size) +{ + int i; + void ** p = (void **) mem; + char *q = (char *) (p + count); + for (i=0; i < count; ++i) { + p[i] = q; + q += size; + } + return p; +} + +static void *setup_malloc(vorb *f, int sz) +{ + sz = (sz+3) & ~3; + f->setup_memory_required += sz; + if (f->alloc.alloc_buffer) { + void *p = (char *) f->alloc.alloc_buffer + f->setup_offset; + if (f->setup_offset + sz > f->temp_offset) return NULL; + f->setup_offset += sz; + return p; + } + return sz ? malloc(sz) : NULL; +} + +static void setup_free(vorb *f, void *p) +{ + if (f->alloc.alloc_buffer) return; // do nothing; setup mem is a stack + free(p); +} + +static void *setup_temp_malloc(vorb *f, int sz) +{ + sz = (sz+3) & ~3; + if (f->alloc.alloc_buffer) { + if (f->temp_offset - sz < f->setup_offset) return NULL; + f->temp_offset -= sz; + return (char *) f->alloc.alloc_buffer + f->temp_offset; + } + return malloc(sz); +} + +static void setup_temp_free(vorb *f, void *p, int sz) +{ + if (f->alloc.alloc_buffer) { + f->temp_offset += (sz+3)&~3; + return; + } + free(p); +} + +#define CRC32_POLY 0x04c11db7 // from spec + +static uint32 crc_table[256]; +static void crc32_init(void) +{ + int i,j; + uint32 s; + for(i=0; i < 256; i++) { + for (s=(uint32) i << 24, j=0; j < 8; ++j) + s = (s << 1) ^ (s >= (1U<<31) ? CRC32_POLY : 0); + crc_table[i] = s; + } +} + +static __forceinline uint32 crc32_update(uint32 crc, uint8 byte) +{ + return (crc << 8) ^ crc_table[byte ^ (crc >> 24)]; +} + + +// used in setup, and for huffman that doesn't go fast path +static unsigned int bit_reverse(unsigned int n) +{ + n = ((n & 0xAAAAAAAA) >> 1) | ((n & 0x55555555) << 1); + n = ((n & 0xCCCCCCCC) >> 2) | ((n & 0x33333333) << 2); + n = ((n & 0xF0F0F0F0) >> 4) | ((n & 0x0F0F0F0F) << 4); + n = ((n & 0xFF00FF00) >> 8) | ((n & 0x00FF00FF) << 8); + return (n >> 16) | (n << 16); +} + +static float square(float x) +{ + return x*x; +} + +// this is a weird definition of log2() for which log2(1) = 1, log2(2) = 2, log2(4) = 3 +// as required by the specification. fast(?) implementation from stb.h +// @OPTIMIZE: called multiple times per-packet with "constants"; move to setup +static int ilog(int32 n) +{ + static signed char log2_4[16] = { 0,1,2,2,3,3,3,3,4,4,4,4,4,4,4,4 }; + + if (n < 0) return 0; // signed n returns 0 + + // 2 compares if n < 16, 3 compares otherwise (4 if signed or n > 1<<29) + if (n < (1 << 14)) + if (n < (1 << 4)) return 0 + log2_4[n ]; + else if (n < (1 << 9)) return 5 + log2_4[n >> 5]; + else return 10 + log2_4[n >> 10]; + else if (n < (1 << 24)) + if (n < (1 << 19)) return 15 + log2_4[n >> 15]; + else return 20 + log2_4[n >> 20]; + else if (n < (1 << 29)) return 25 + log2_4[n >> 25]; + else return 30 + log2_4[n >> 30]; +} + +#ifndef M_PI + #define M_PI 3.14159265358979323846264f // from CRC +#endif + +// code length assigned to a value with no huffman encoding +#define NO_CODE 255 + +/////////////////////// LEAF SETUP FUNCTIONS ////////////////////////// +// +// these functions are only called at setup, and only a few times +// per file + +static float float32_unpack(uint32 x) +{ + // from the specification + uint32 mantissa = x & 0x1fffff; + uint32 sign = x & 0x80000000; + uint32 exp = (x & 0x7fe00000) >> 21; + double res = sign ? -(double)mantissa : (double)mantissa; + return (float) ldexp((float)res, exp-788); +} + + +// zlib & jpeg huffman tables assume that the output symbols +// can either be arbitrarily arranged, or have monotonically +// increasing frequencies--they rely on the lengths being sorted; +// this makes for a very simple generation algorithm. +// vorbis allows a huffman table with non-sorted lengths. This +// requires a more sophisticated construction, since symbols in +// order do not map to huffman codes "in order". +static void add_entry(Codebook *c, uint32 huff_code, int symbol, int count, int len, uint32 *values) +{ + if (!c->sparse) { + c->codewords [symbol] = huff_code; + } else { + c->codewords [count] = huff_code; + c->codeword_lengths[count] = len; + values [count] = symbol; + } +} + +static int compute_codewords(Codebook *c, uint8 *len, int n, uint32 *values) +{ + int i,k,m=0; + uint32 available[32]; + + memset(available, 0, sizeof(available)); + // find the first entry + for (k=0; k < n; ++k) if (len[k] < NO_CODE) break; + if (k == n) { assert(c->sorted_entries == 0); return TRUE; } + // add to the list + add_entry(c, 0, k, m++, len[k], values); + // add all available leaves + for (i=1; i <= len[k]; ++i) + available[i] = 1U << (32-i); + // note that the above code treats the first case specially, + // but it's really the same as the following code, so they + // could probably be combined (except the initial code is 0, + // and I use 0 in available[] to mean 'empty') + for (i=k+1; i < n; ++i) { + uint32 res; + int z = len[i], y; + if (z == NO_CODE) continue; + // find lowest available leaf (should always be earliest, + // which is what the specification calls for) + // note that this property, and the fact we can never have + // more than one free leaf at a given level, isn't totally + // trivial to prove, but it seems true and the assert never + // fires, so! + while (z > 0 && !available[z]) --z; + if (z == 0) { return FALSE; } + res = available[z]; + assert(z >= 0 && z < 32); + available[z] = 0; + add_entry(c, bit_reverse(res), i, m++, len[i], values); + // propogate availability up the tree + if (z != len[i]) { + assert(len[i] >= 0 && len[i] < 32); + for (y=len[i]; y > z; --y) { + assert(available[y] == 0); + available[y] = res + (1 << (32-y)); + } + } + } + return TRUE; +} + +// accelerated huffman table allows fast O(1) match of all symbols +// of length <= STB_VORBIS_FAST_HUFFMAN_LENGTH +static void compute_accelerated_huffman(Codebook *c) +{ + int i, len; + for (i=0; i < FAST_HUFFMAN_TABLE_SIZE; ++i) + c->fast_huffman[i] = -1; + + len = c->sparse ? c->sorted_entries : c->entries; + #ifdef STB_VORBIS_FAST_HUFFMAN_SHORT + if (len > 32767) len = 32767; // largest possible value we can encode! + #endif + for (i=0; i < len; ++i) { + if (c->codeword_lengths[i] <= STB_VORBIS_FAST_HUFFMAN_LENGTH) { + uint32 z = c->sparse ? bit_reverse(c->sorted_codewords[i]) : c->codewords[i]; + // set table entries for all bit combinations in the higher bits + while (z < FAST_HUFFMAN_TABLE_SIZE) { + c->fast_huffman[z] = i; + z += 1 << c->codeword_lengths[i]; + } + } + } +} + +#ifdef _MSC_VER +#define STBV_CDECL __cdecl +#else +#define STBV_CDECL +#endif + +static int STBV_CDECL uint32_compare(const void *p, const void *q) +{ + uint32 x = * (uint32 *) p; + uint32 y = * (uint32 *) q; + return x < y ? -1 : x > y; +} + +static int include_in_sort(Codebook *c, uint8 len) +{ + if (c->sparse) { assert(len != NO_CODE); return TRUE; } + if (len == NO_CODE) return FALSE; + if (len > STB_VORBIS_FAST_HUFFMAN_LENGTH) return TRUE; + return FALSE; +} + +// if the fast table above doesn't work, we want to binary +// search them... need to reverse the bits +static void compute_sorted_huffman(Codebook *c, uint8 *lengths, uint32 *values) +{ + int i, len; + // build a list of all the entries + // OPTIMIZATION: don't include the short ones, since they'll be caught by FAST_HUFFMAN. + // this is kind of a frivolous optimization--I don't see any performance improvement, + // but it's like 4 extra lines of code, so. + if (!c->sparse) { + int k = 0; + for (i=0; i < c->entries; ++i) + if (include_in_sort(c, lengths[i])) + c->sorted_codewords[k++] = bit_reverse(c->codewords[i]); + assert(k == c->sorted_entries); + } else { + for (i=0; i < c->sorted_entries; ++i) + c->sorted_codewords[i] = bit_reverse(c->codewords[i]); + } + + qsort(c->sorted_codewords, c->sorted_entries, sizeof(c->sorted_codewords[0]), uint32_compare); + c->sorted_codewords[c->sorted_entries] = 0xffffffff; + + len = c->sparse ? c->sorted_entries : c->entries; + // now we need to indicate how they correspond; we could either + // #1: sort a different data structure that says who they correspond to + // #2: for each sorted entry, search the original list to find who corresponds + // #3: for each original entry, find the sorted entry + // #1 requires extra storage, #2 is slow, #3 can use binary search! + for (i=0; i < len; ++i) { + int huff_len = c->sparse ? lengths[values[i]] : lengths[i]; + if (include_in_sort(c,huff_len)) { + uint32 code = bit_reverse(c->codewords[i]); + int x=0, n=c->sorted_entries; + while (n > 1) { + // invariant: sc[x] <= code < sc[x+n] + int m = x + (n >> 1); + if (c->sorted_codewords[m] <= code) { + x = m; + n -= (n>>1); + } else { + n >>= 1; + } + } + assert(c->sorted_codewords[x] == code); + if (c->sparse) { + c->sorted_values[x] = values[i]; + c->codeword_lengths[x] = huff_len; + } else { + c->sorted_values[x] = i; + } + } + } +} + +// only run while parsing the header (3 times) +static int vorbis_validate(uint8 *data) +{ + static uint8 vorbis[6] = { 'v', 'o', 'r', 'b', 'i', 's' }; + return memcmp(data, vorbis, 6) == 0; +} + +// called from setup only, once per code book +// (formula implied by specification) +static int lookup1_values(int entries, int dim) +{ + int r = (int) floor(exp((float) log((float) entries) / dim)); + if ((int) floor(pow((float) r+1, dim)) <= entries) // (int) cast for MinGW warning; + ++r; // floor() to avoid _ftol() when non-CRT + assert(pow((float) r+1, dim) > entries); + assert((int) floor(pow((float) r, dim)) <= entries); // (int),floor() as above + return r; +} + +// called twice per file +static void compute_twiddle_factors(int n, float *A, float *B, float *C) +{ + int n4 = n >> 2, n8 = n >> 3; + int k,k2; + + for (k=k2=0; k < n4; ++k,k2+=2) { + A[k2 ] = (float) cos(4*k*M_PI/n); + A[k2+1] = (float) -sin(4*k*M_PI/n); + B[k2 ] = (float) cos((k2+1)*M_PI/n/2) * 0.5f; + B[k2+1] = (float) sin((k2+1)*M_PI/n/2) * 0.5f; + } + for (k=k2=0; k < n8; ++k,k2+=2) { + C[k2 ] = (float) cos(2*(k2+1)*M_PI/n); + C[k2+1] = (float) -sin(2*(k2+1)*M_PI/n); + } +} + +static void compute_window(int n, float *window) +{ + int n2 = n >> 1, i; + for (i=0; i < n2; ++i) + window[i] = (float) sin(0.5 * M_PI * square((float) sin((i - 0 + 0.5) / n2 * 0.5 * M_PI))); +} + +static void compute_bitreverse(int n, uint16 *rev) +{ + int ld = ilog(n) - 1; // ilog is off-by-one from normal definitions + int i, n8 = n >> 3; + for (i=0; i < n8; ++i) + rev[i] = (bit_reverse(i) >> (32-ld+3)) << 2; +} + +static int init_blocksize(vorb *f, int b, int n) +{ + int n2 = n >> 1, n4 = n >> 2, n8 = n >> 3; + f->A[b] = (float *) setup_malloc(f, sizeof(float) * n2); + f->B[b] = (float *) setup_malloc(f, sizeof(float) * n2); + f->C[b] = (float *) setup_malloc(f, sizeof(float) * n4); + if (!f->A[b] || !f->B[b] || !f->C[b]) return error(f, VORBIS_outofmem); + compute_twiddle_factors(n, f->A[b], f->B[b], f->C[b]); + f->window[b] = (float *) setup_malloc(f, sizeof(float) * n2); + if (!f->window[b]) return error(f, VORBIS_outofmem); + compute_window(n, f->window[b]); + f->bit_reverse[b] = (uint16 *) setup_malloc(f, sizeof(uint16) * n8); + if (!f->bit_reverse[b]) return error(f, VORBIS_outofmem); + compute_bitreverse(n, f->bit_reverse[b]); + return TRUE; +} + +static void neighbors(uint16 *x, int n, int *plow, int *phigh) +{ + int low = -1; + int high = 65536; + int i; + for (i=0; i < n; ++i) { + if (x[i] > low && x[i] < x[n]) { *plow = i; low = x[i]; } + if (x[i] < high && x[i] > x[n]) { *phigh = i; high = x[i]; } + } +} + +// this has been repurposed so y is now the original index instead of y +typedef struct +{ + uint16 x,id; +} stbv__floor_ordering; + +static int STBV_CDECL point_compare(const void *p, const void *q) +{ + stbv__floor_ordering *a = (stbv__floor_ordering *) p; + stbv__floor_ordering *b = (stbv__floor_ordering *) q; + return a->x < b->x ? -1 : a->x > b->x; +} + +// +/////////////////////// END LEAF SETUP FUNCTIONS ////////////////////////// + + +#if defined(STB_VORBIS_NO_STDIO) + #define USE_MEMORY(z) TRUE +#else + #define USE_MEMORY(z) ((z)->stream) +#endif + +static uint8 get8(vorb *z) +{ + if (USE_MEMORY(z)) { + if (z->stream >= z->stream_end) { z->eof = TRUE; return 0; } + return *z->stream++; + } + + #ifndef STB_VORBIS_NO_STDIO + { + int c = fgetc(z->f); + if (c == EOF) { z->eof = TRUE; return 0; } + return c; + } + #endif +} + +static uint32 get32(vorb *f) +{ + uint32 x; + x = get8(f); + x += get8(f) << 8; + x += get8(f) << 16; + x += (uint32) get8(f) << 24; + return x; +} + +static int getn(vorb *z, uint8 *data, int n) +{ + if (USE_MEMORY(z)) { + if (z->stream+n > z->stream_end) { z->eof = 1; return 0; } + memcpy(data, z->stream, n); + z->stream += n; + return 1; + } + + #ifndef STB_VORBIS_NO_STDIO + if (fread(data, n, 1, z->f) == 1) + return 1; + else { + z->eof = 1; + return 0; + } + #endif +} + +static void skip(vorb *z, int n) +{ + if (USE_MEMORY(z)) { + z->stream += n; + if (z->stream >= z->stream_end) z->eof = 1; + return; + } + #ifndef STB_VORBIS_NO_STDIO + { + long x = ftell(z->f); + fseek(z->f, x+n, SEEK_SET); + } + #endif +} + +static int set_file_offset(stb_vorbis *f, unsigned int loc) +{ + #ifndef STB_VORBIS_NO_PUSHDATA_API + if (f->push_mode) return 0; + #endif + f->eof = 0; + if (USE_MEMORY(f)) { + if (f->stream_start + loc >= f->stream_end || f->stream_start + loc < f->stream_start) { + f->stream = f->stream_end; + f->eof = 1; + return 0; + } else { + f->stream = f->stream_start + loc; + return 1; + } + } + #ifndef STB_VORBIS_NO_STDIO + if (loc + f->f_start < loc || loc >= 0x80000000) { + loc = 0x7fffffff; + f->eof = 1; + } else { + loc += f->f_start; + } + if (!fseek(f->f, loc, SEEK_SET)) + return 1; + f->eof = 1; + fseek(f->f, f->f_start, SEEK_END); + return 0; + #endif +} + + +static uint8 ogg_page_header[4] = { 0x4f, 0x67, 0x67, 0x53 }; + +static int capture_pattern(vorb *f) +{ + if (0x4f != get8(f)) return FALSE; + if (0x67 != get8(f)) return FALSE; + if (0x67 != get8(f)) return FALSE; + if (0x53 != get8(f)) return FALSE; + return TRUE; +} + +#define PAGEFLAG_continued_packet 1 +#define PAGEFLAG_first_page 2 +#define PAGEFLAG_last_page 4 + +static int start_page_no_capturepattern(vorb *f) +{ + uint32 loc0,loc1,n; + // stream structure version + if (0 != get8(f)) return error(f, VORBIS_invalid_stream_structure_version); + // header flag + f->page_flag = get8(f); + // absolute granule position + loc0 = get32(f); + loc1 = get32(f); + // @TODO: validate loc0,loc1 as valid positions? + // stream serial number -- vorbis doesn't interleave, so discard + get32(f); + //if (f->serial != get32(f)) return error(f, VORBIS_incorrect_stream_serial_number); + // page sequence number + n = get32(f); + f->last_page = n; + // CRC32 + get32(f); + // page_segments + f->segment_count = get8(f); + if (!getn(f, f->segments, f->segment_count)) + return error(f, VORBIS_unexpected_eof); + // assume we _don't_ know any the sample position of any segments + f->end_seg_with_known_loc = -2; + if (loc0 != ~0U || loc1 != ~0U) { + int i; + // determine which packet is the last one that will complete + for (i=f->segment_count-1; i >= 0; --i) + if (f->segments[i] < 255) + break; + // 'i' is now the index of the _last_ segment of a packet that ends + if (i >= 0) { + f->end_seg_with_known_loc = i; + f->known_loc_for_packet = loc0; + } + } + if (f->first_decode) { + int i,len; + ProbedPage p; + len = 0; + for (i=0; i < f->segment_count; ++i) + len += f->segments[i]; + len += 27 + f->segment_count; + p.page_start = f->first_audio_page_offset; + p.page_end = p.page_start + len; + p.last_decoded_sample = loc0; + f->p_first = p; + } + f->next_seg = 0; + return TRUE; +} + +static int start_page(vorb *f) +{ + if (!capture_pattern(f)) return error(f, VORBIS_missing_capture_pattern); + return start_page_no_capturepattern(f); +} + +static int start_packet(vorb *f) +{ + while (f->next_seg == -1) { + if (!start_page(f)) return FALSE; + if (f->page_flag & PAGEFLAG_continued_packet) + return error(f, VORBIS_continued_packet_flag_invalid); + } + f->last_seg = FALSE; + f->valid_bits = 0; + f->packet_bytes = 0; + f->bytes_in_seg = 0; + // f->next_seg is now valid + return TRUE; +} + +static int maybe_start_packet(vorb *f) +{ + if (f->next_seg == -1) { + int x = get8(f); + if (f->eof) return FALSE; // EOF at page boundary is not an error! + if (0x4f != x ) return error(f, VORBIS_missing_capture_pattern); + if (0x67 != get8(f)) return error(f, VORBIS_missing_capture_pattern); + if (0x67 != get8(f)) return error(f, VORBIS_missing_capture_pattern); + if (0x53 != get8(f)) return error(f, VORBIS_missing_capture_pattern); + if (!start_page_no_capturepattern(f)) return FALSE; + if (f->page_flag & PAGEFLAG_continued_packet) { + // set up enough state that we can read this packet if we want, + // e.g. during recovery + f->last_seg = FALSE; + f->bytes_in_seg = 0; + return error(f, VORBIS_continued_packet_flag_invalid); + } + } + return start_packet(f); +} + +static int next_segment(vorb *f) +{ + int len; + if (f->last_seg) return 0; + if (f->next_seg == -1) { + f->last_seg_which = f->segment_count-1; // in case start_page fails + if (!start_page(f)) { f->last_seg = 1; return 0; } + if (!(f->page_flag & PAGEFLAG_continued_packet)) return error(f, VORBIS_continued_packet_flag_invalid); + } + len = f->segments[f->next_seg++]; + if (len < 255) { + f->last_seg = TRUE; + f->last_seg_which = f->next_seg-1; + } + if (f->next_seg >= f->segment_count) + f->next_seg = -1; + assert(f->bytes_in_seg == 0); + f->bytes_in_seg = len; + return len; +} + +#define EOP (-1) +#define INVALID_BITS (-1) + +static int get8_packet_raw(vorb *f) +{ + if (!f->bytes_in_seg) { // CLANG! + if (f->last_seg) return EOP; + else if (!next_segment(f)) return EOP; + } + assert(f->bytes_in_seg > 0); + --f->bytes_in_seg; + ++f->packet_bytes; + return get8(f); +} + +static int get8_packet(vorb *f) +{ + int x = get8_packet_raw(f); + f->valid_bits = 0; + return x; +} + +static void flush_packet(vorb *f) +{ + while (get8_packet_raw(f) != EOP); +} + +// @OPTIMIZE: this is the secondary bit decoder, so it's probably not as important +// as the huffman decoder? +static uint32 get_bits(vorb *f, int n) +{ + uint32 z; + + if (f->valid_bits < 0) return 0; + if (f->valid_bits < n) { + if (n > 24) { + // the accumulator technique below would not work correctly in this case + z = get_bits(f, 24); + z += get_bits(f, n-24) << 24; + return z; + } + if (f->valid_bits == 0) f->acc = 0; + while (f->valid_bits < n) { + int z = get8_packet_raw(f); + if (z == EOP) { + f->valid_bits = INVALID_BITS; + return 0; + } + f->acc += z << f->valid_bits; + f->valid_bits += 8; + } + } + if (f->valid_bits < 0) return 0; + z = f->acc & ((1 << n)-1); + f->acc >>= n; + f->valid_bits -= n; + return z; +} + +// @OPTIMIZE: primary accumulator for huffman +// expand the buffer to as many bits as possible without reading off end of packet +// it might be nice to allow f->valid_bits and f->acc to be stored in registers, +// e.g. cache them locally and decode locally +static __forceinline void prep_huffman(vorb *f) +{ + if (f->valid_bits <= 24) { + if (f->valid_bits == 0) f->acc = 0; + do { + int z; + if (f->last_seg && !f->bytes_in_seg) return; + z = get8_packet_raw(f); + if (z == EOP) return; + f->acc += (unsigned) z << f->valid_bits; + f->valid_bits += 8; + } while (f->valid_bits <= 24); + } +} + +enum +{ + VORBIS_packet_id = 1, + VORBIS_packet_comment = 3, + VORBIS_packet_setup = 5 +}; + +static int codebook_decode_scalar_raw(vorb *f, Codebook *c) +{ + int i; + prep_huffman(f); + + if (c->codewords == NULL && c->sorted_codewords == NULL) + return -1; + + // cases to use binary search: sorted_codewords && !c->codewords + // sorted_codewords && c->entries > 8 + if (c->entries > 8 ? c->sorted_codewords!=NULL : !c->codewords) { + // binary search + uint32 code = bit_reverse(f->acc); + int x=0, n=c->sorted_entries, len; + + while (n > 1) { + // invariant: sc[x] <= code < sc[x+n] + int m = x + (n >> 1); + if (c->sorted_codewords[m] <= code) { + x = m; + n -= (n>>1); + } else { + n >>= 1; + } + } + // x is now the sorted index + if (!c->sparse) x = c->sorted_values[x]; + // x is now sorted index if sparse, or symbol otherwise + len = c->codeword_lengths[x]; + if (f->valid_bits >= len) { + f->acc >>= len; + f->valid_bits -= len; + return x; + } + + f->valid_bits = 0; + return -1; + } + + // if small, linear search + assert(!c->sparse); + for (i=0; i < c->entries; ++i) { + if (c->codeword_lengths[i] == NO_CODE) continue; + if (c->codewords[i] == (f->acc & ((1 << c->codeword_lengths[i])-1))) { + if (f->valid_bits >= c->codeword_lengths[i]) { + f->acc >>= c->codeword_lengths[i]; + f->valid_bits -= c->codeword_lengths[i]; + return i; + } + f->valid_bits = 0; + return -1; + } + } + + error(f, VORBIS_invalid_stream); + f->valid_bits = 0; + return -1; +} + +#ifndef STB_VORBIS_NO_INLINE_DECODE + +#define DECODE_RAW(var, f,c) \ + if (f->valid_bits < STB_VORBIS_FAST_HUFFMAN_LENGTH) \ + prep_huffman(f); \ + var = f->acc & FAST_HUFFMAN_TABLE_MASK; \ + var = c->fast_huffman[var]; \ + if (var >= 0) { \ + int n = c->codeword_lengths[var]; \ + f->acc >>= n; \ + f->valid_bits -= n; \ + if (f->valid_bits < 0) { f->valid_bits = 0; var = -1; } \ + } else { \ + var = codebook_decode_scalar_raw(f,c); \ + } + +#else + +static int codebook_decode_scalar(vorb *f, Codebook *c) +{ + int i; + if (f->valid_bits < STB_VORBIS_FAST_HUFFMAN_LENGTH) + prep_huffman(f); + // fast huffman table lookup + i = f->acc & FAST_HUFFMAN_TABLE_MASK; + i = c->fast_huffman[i]; + if (i >= 0) { + f->acc >>= c->codeword_lengths[i]; + f->valid_bits -= c->codeword_lengths[i]; + if (f->valid_bits < 0) { f->valid_bits = 0; return -1; } + return i; + } + return codebook_decode_scalar_raw(f,c); +} + +#define DECODE_RAW(var,f,c) var = codebook_decode_scalar(f,c); + +#endif + +#define DECODE(var,f,c) \ + DECODE_RAW(var,f,c) \ + if (c->sparse) var = c->sorted_values[var]; + +#ifndef STB_VORBIS_DIVIDES_IN_CODEBOOK + #define DECODE_VQ(var,f,c) DECODE_RAW(var,f,c) +#else + #define DECODE_VQ(var,f,c) DECODE(var,f,c) +#endif + + + + + + +// CODEBOOK_ELEMENT_FAST is an optimization for the CODEBOOK_FLOATS case +// where we avoid one addition +#define CODEBOOK_ELEMENT(c,off) (c->multiplicands[off]) +#define CODEBOOK_ELEMENT_FAST(c,off) (c->multiplicands[off]) +#define CODEBOOK_ELEMENT_BASE(c) (0) + +static int codebook_decode_start(vorb *f, Codebook *c) +{ + int z = -1; + + // type 0 is only legal in a scalar context + if (c->lookup_type == 0) + error(f, VORBIS_invalid_stream); + else { + DECODE_VQ(z,f,c); + if (c->sparse) assert(z < c->sorted_entries); + if (z < 0) { // check for EOP + if (!f->bytes_in_seg) + if (f->last_seg) + return z; + error(f, VORBIS_invalid_stream); + } + } + return z; +} + +static int codebook_decode(vorb *f, Codebook *c, float *output, int len) +{ + int i,z = codebook_decode_start(f,c); + if (z < 0) return FALSE; + if (len > c->dimensions) len = c->dimensions; + +#ifdef STB_VORBIS_DIVIDES_IN_CODEBOOK + if (c->lookup_type == 1) { + float last = CODEBOOK_ELEMENT_BASE(c); + int div = 1; + for (i=0; i < len; ++i) { + int off = (z / div) % c->lookup_values; + float val = CODEBOOK_ELEMENT_FAST(c,off) + last; + output[i] += val; + if (c->sequence_p) last = val + c->minimum_value; + div *= c->lookup_values; + } + return TRUE; + } +#endif + + z *= c->dimensions; + if (c->sequence_p) { + float last = CODEBOOK_ELEMENT_BASE(c); + for (i=0; i < len; ++i) { + float val = CODEBOOK_ELEMENT_FAST(c,z+i) + last; + output[i] += val; + last = val + c->minimum_value; + } + } else { + float last = CODEBOOK_ELEMENT_BASE(c); + for (i=0; i < len; ++i) { + output[i] += CODEBOOK_ELEMENT_FAST(c,z+i) + last; + } + } + + return TRUE; +} + +static int codebook_decode_step(vorb *f, Codebook *c, float *output, int len, int step) +{ + int i,z = codebook_decode_start(f,c); + float last = CODEBOOK_ELEMENT_BASE(c); + if (z < 0) return FALSE; + if (len > c->dimensions) len = c->dimensions; + +#ifdef STB_VORBIS_DIVIDES_IN_CODEBOOK + if (c->lookup_type == 1) { + int div = 1; + for (i=0; i < len; ++i) { + int off = (z / div) % c->lookup_values; + float val = CODEBOOK_ELEMENT_FAST(c,off) + last; + output[i*step] += val; + if (c->sequence_p) last = val; + div *= c->lookup_values; + } + return TRUE; + } +#endif + + z *= c->dimensions; + for (i=0; i < len; ++i) { + float val = CODEBOOK_ELEMENT_FAST(c,z+i) + last; + output[i*step] += val; + if (c->sequence_p) last = val; + } + + return TRUE; +} + +static int codebook_decode_deinterleave_repeat(vorb *f, Codebook *c, float **outputs, int ch, int *c_inter_p, int *p_inter_p, int len, int total_decode) +{ + int c_inter = *c_inter_p; + int p_inter = *p_inter_p; + int i,z, effective = c->dimensions; + + // type 0 is only legal in a scalar context + if (c->lookup_type == 0) return error(f, VORBIS_invalid_stream); + + while (total_decode > 0) { + float last = CODEBOOK_ELEMENT_BASE(c); + DECODE_VQ(z,f,c); + #ifndef STB_VORBIS_DIVIDES_IN_CODEBOOK + assert(!c->sparse || z < c->sorted_entries); + #endif + if (z < 0) { + if (!f->bytes_in_seg) + if (f->last_seg) return FALSE; + return error(f, VORBIS_invalid_stream); + } + + // if this will take us off the end of the buffers, stop short! + // we check by computing the length of the virtual interleaved + // buffer (len*ch), our current offset within it (p_inter*ch)+(c_inter), + // and the length we'll be using (effective) + if (c_inter + p_inter*ch + effective > len * ch) { + effective = len*ch - (p_inter*ch - c_inter); + } + + #ifdef STB_VORBIS_DIVIDES_IN_CODEBOOK + if (c->lookup_type == 1) { + int div = 1; + for (i=0; i < effective; ++i) { + int off = (z / div) % c->lookup_values; + float val = CODEBOOK_ELEMENT_FAST(c,off) + last; + if (outputs[c_inter]) + outputs[c_inter][p_inter] += val; + if (++c_inter == ch) { c_inter = 0; ++p_inter; } + if (c->sequence_p) last = val; + div *= c->lookup_values; + } + } else + #endif + { + z *= c->dimensions; + if (c->sequence_p) { + for (i=0; i < effective; ++i) { + float val = CODEBOOK_ELEMENT_FAST(c,z+i) + last; + if (outputs[c_inter]) + outputs[c_inter][p_inter] += val; + if (++c_inter == ch) { c_inter = 0; ++p_inter; } + last = val; + } + } else { + for (i=0; i < effective; ++i) { + float val = CODEBOOK_ELEMENT_FAST(c,z+i) + last; + if (outputs[c_inter]) + outputs[c_inter][p_inter] += val; + if (++c_inter == ch) { c_inter = 0; ++p_inter; } + } + } + } + + total_decode -= effective; + } + *c_inter_p = c_inter; + *p_inter_p = p_inter; + return TRUE; +} + +static int predict_point(int x, int x0, int x1, int y0, int y1) +{ + int dy = y1 - y0; + int adx = x1 - x0; + // @OPTIMIZE: force int division to round in the right direction... is this necessary on x86? + int err = abs(dy) * (x - x0); + int off = err / adx; + return dy < 0 ? y0 - off : y0 + off; +} + +// the following table is block-copied from the specification +static float inverse_db_table[256] = +{ + 1.0649863e-07f, 1.1341951e-07f, 1.2079015e-07f, 1.2863978e-07f, + 1.3699951e-07f, 1.4590251e-07f, 1.5538408e-07f, 1.6548181e-07f, + 1.7623575e-07f, 1.8768855e-07f, 1.9988561e-07f, 2.1287530e-07f, + 2.2670913e-07f, 2.4144197e-07f, 2.5713223e-07f, 2.7384213e-07f, + 2.9163793e-07f, 3.1059021e-07f, 3.3077411e-07f, 3.5226968e-07f, + 3.7516214e-07f, 3.9954229e-07f, 4.2550680e-07f, 4.5315863e-07f, + 4.8260743e-07f, 5.1396998e-07f, 5.4737065e-07f, 5.8294187e-07f, + 6.2082472e-07f, 6.6116941e-07f, 7.0413592e-07f, 7.4989464e-07f, + 7.9862701e-07f, 8.5052630e-07f, 9.0579828e-07f, 9.6466216e-07f, + 1.0273513e-06f, 1.0941144e-06f, 1.1652161e-06f, 1.2409384e-06f, + 1.3215816e-06f, 1.4074654e-06f, 1.4989305e-06f, 1.5963394e-06f, + 1.7000785e-06f, 1.8105592e-06f, 1.9282195e-06f, 2.0535261e-06f, + 2.1869758e-06f, 2.3290978e-06f, 2.4804557e-06f, 2.6416497e-06f, + 2.8133190e-06f, 2.9961443e-06f, 3.1908506e-06f, 3.3982101e-06f, + 3.6190449e-06f, 3.8542308e-06f, 4.1047004e-06f, 4.3714470e-06f, + 4.6555282e-06f, 4.9580707e-06f, 5.2802740e-06f, 5.6234160e-06f, + 5.9888572e-06f, 6.3780469e-06f, 6.7925283e-06f, 7.2339451e-06f, + 7.7040476e-06f, 8.2047000e-06f, 8.7378876e-06f, 9.3057248e-06f, + 9.9104632e-06f, 1.0554501e-05f, 1.1240392e-05f, 1.1970856e-05f, + 1.2748789e-05f, 1.3577278e-05f, 1.4459606e-05f, 1.5399272e-05f, + 1.6400004e-05f, 1.7465768e-05f, 1.8600792e-05f, 1.9809576e-05f, + 2.1096914e-05f, 2.2467911e-05f, 2.3928002e-05f, 2.5482978e-05f, + 2.7139006e-05f, 2.8902651e-05f, 3.0780908e-05f, 3.2781225e-05f, + 3.4911534e-05f, 3.7180282e-05f, 3.9596466e-05f, 4.2169667e-05f, + 4.4910090e-05f, 4.7828601e-05f, 5.0936773e-05f, 5.4246931e-05f, + 5.7772202e-05f, 6.1526565e-05f, 6.5524908e-05f, 6.9783085e-05f, + 7.4317983e-05f, 7.9147585e-05f, 8.4291040e-05f, 8.9768747e-05f, + 9.5602426e-05f, 0.00010181521f, 0.00010843174f, 0.00011547824f, + 0.00012298267f, 0.00013097477f, 0.00013948625f, 0.00014855085f, + 0.00015820453f, 0.00016848555f, 0.00017943469f, 0.00019109536f, + 0.00020351382f, 0.00021673929f, 0.00023082423f, 0.00024582449f, + 0.00026179955f, 0.00027881276f, 0.00029693158f, 0.00031622787f, + 0.00033677814f, 0.00035866388f, 0.00038197188f, 0.00040679456f, + 0.00043323036f, 0.00046138411f, 0.00049136745f, 0.00052329927f, + 0.00055730621f, 0.00059352311f, 0.00063209358f, 0.00067317058f, + 0.00071691700f, 0.00076350630f, 0.00081312324f, 0.00086596457f, + 0.00092223983f, 0.00098217216f, 0.0010459992f, 0.0011139742f, + 0.0011863665f, 0.0012634633f, 0.0013455702f, 0.0014330129f, + 0.0015261382f, 0.0016253153f, 0.0017309374f, 0.0018434235f, + 0.0019632195f, 0.0020908006f, 0.0022266726f, 0.0023713743f, + 0.0025254795f, 0.0026895994f, 0.0028643847f, 0.0030505286f, + 0.0032487691f, 0.0034598925f, 0.0036847358f, 0.0039241906f, + 0.0041792066f, 0.0044507950f, 0.0047400328f, 0.0050480668f, + 0.0053761186f, 0.0057254891f, 0.0060975636f, 0.0064938176f, + 0.0069158225f, 0.0073652516f, 0.0078438871f, 0.0083536271f, + 0.0088964928f, 0.009474637f, 0.010090352f, 0.010746080f, + 0.011444421f, 0.012188144f, 0.012980198f, 0.013823725f, + 0.014722068f, 0.015678791f, 0.016697687f, 0.017782797f, + 0.018938423f, 0.020169149f, 0.021479854f, 0.022875735f, + 0.024362330f, 0.025945531f, 0.027631618f, 0.029427276f, + 0.031339626f, 0.033376252f, 0.035545228f, 0.037855157f, + 0.040315199f, 0.042935108f, 0.045725273f, 0.048696758f, + 0.051861348f, 0.055231591f, 0.058820850f, 0.062643361f, + 0.066714279f, 0.071049749f, 0.075666962f, 0.080584227f, + 0.085821044f, 0.091398179f, 0.097337747f, 0.10366330f, + 0.11039993f, 0.11757434f, 0.12521498f, 0.13335215f, + 0.14201813f, 0.15124727f, 0.16107617f, 0.17154380f, + 0.18269168f, 0.19456402f, 0.20720788f, 0.22067342f, + 0.23501402f, 0.25028656f, 0.26655159f, 0.28387361f, + 0.30232132f, 0.32196786f, 0.34289114f, 0.36517414f, + 0.38890521f, 0.41417847f, 0.44109412f, 0.46975890f, + 0.50028648f, 0.53279791f, 0.56742212f, 0.60429640f, + 0.64356699f, 0.68538959f, 0.72993007f, 0.77736504f, + 0.82788260f, 0.88168307f, 0.9389798f, 1.0f +}; + + +// @OPTIMIZE: if you want to replace this bresenham line-drawing routine, +// note that you must produce bit-identical output to decode correctly; +// this specific sequence of operations is specified in the spec (it's +// drawing integer-quantized frequency-space lines that the encoder +// expects to be exactly the same) +// ... also, isn't the whole point of Bresenham's algorithm to NOT +// have to divide in the setup? sigh. +#ifndef STB_VORBIS_NO_DEFER_FLOOR +#define LINE_OP(a,b) a *= b +#else +#define LINE_OP(a,b) a = b +#endif + +#ifdef STB_VORBIS_DIVIDE_TABLE +#define DIVTAB_NUMER 32 +#define DIVTAB_DENOM 64 +int8 integer_divide_table[DIVTAB_NUMER][DIVTAB_DENOM]; // 2KB +#endif + +static __forceinline void draw_line(float *output, int x0, int y0, int x1, int y1, int n) +{ + int dy = y1 - y0; + int adx = x1 - x0; + int ady = abs(dy); + int base; + int x=x0,y=y0; + int err = 0; + int sy; + +#ifdef STB_VORBIS_DIVIDE_TABLE + if (adx < DIVTAB_DENOM && ady < DIVTAB_NUMER) { + if (dy < 0) { + base = -integer_divide_table[ady][adx]; + sy = base-1; + } else { + base = integer_divide_table[ady][adx]; + sy = base+1; + } + } else { + base = dy / adx; + if (dy < 0) + sy = base - 1; + else + sy = base+1; + } +#else + base = dy / adx; + if (dy < 0) + sy = base - 1; + else + sy = base+1; +#endif + ady -= abs(base) * adx; + if (x1 > n) x1 = n; + if (x < x1) { + LINE_OP(output[x], inverse_db_table[y]); + for (++x; x < x1; ++x) { + err += ady; + if (err >= adx) { + err -= adx; + y += sy; + } else + y += base; + LINE_OP(output[x], inverse_db_table[y]); + } + } +} + +static int residue_decode(vorb *f, Codebook *book, float *target, int offset, int n, int rtype) +{ + int k; + if (rtype == 0) { + int step = n / book->dimensions; + for (k=0; k < step; ++k) + if (!codebook_decode_step(f, book, target+offset+k, n-offset-k, step)) + return FALSE; + } else { + for (k=0; k < n; ) { + if (!codebook_decode(f, book, target+offset, n-k)) + return FALSE; + k += book->dimensions; + offset += book->dimensions; + } + } + return TRUE; +} + +// n is 1/2 of the blocksize -- +// specification: "Correct per-vector decode length is [n]/2" +static void decode_residue(vorb *f, float *residue_buffers[], int ch, int n, int rn, uint8 *do_not_decode) +{ + int i,j,pass; + Residue *r = f->residue_config + rn; + int rtype = f->residue_types[rn]; + int c = r->classbook; + int classwords = f->codebooks[c].dimensions; + unsigned int actual_size = rtype == 2 ? n*2 : n; + unsigned int limit_r_begin = (r->begin < actual_size ? r->begin : actual_size); + unsigned int limit_r_end = (r->end < actual_size ? r->end : actual_size); + int n_read = limit_r_end - limit_r_begin; + int part_read = n_read / r->part_size; + int temp_alloc_point = temp_alloc_save(f); + #ifndef STB_VORBIS_DIVIDES_IN_RESIDUE + uint8 ***part_classdata = (uint8 ***) temp_block_array(f,f->channels, part_read * sizeof(**part_classdata)); + #else + int **classifications = (int **) temp_block_array(f,f->channels, part_read * sizeof(**classifications)); + #endif + + CHECK(f); + + for (i=0; i < ch; ++i) + if (!do_not_decode[i]) + memset(residue_buffers[i], 0, sizeof(float) * n); + + if (rtype == 2 && ch != 1) { + for (j=0; j < ch; ++j) + if (!do_not_decode[j]) + break; + if (j == ch) + goto done; + + for (pass=0; pass < 8; ++pass) { + int pcount = 0, class_set = 0; + if (ch == 2) { + while (pcount < part_read) { + int z = r->begin + pcount*r->part_size; + int c_inter = (z & 1), p_inter = z>>1; + if (pass == 0) { + Codebook *c = f->codebooks+r->classbook; + int q; + DECODE(q,f,c); + if (q == EOP) goto done; + #ifndef STB_VORBIS_DIVIDES_IN_RESIDUE + part_classdata[0][class_set] = r->classdata[q]; + #else + for (i=classwords-1; i >= 0; --i) { + classifications[0][i+pcount] = q % r->classifications; + q /= r->classifications; + } + #endif + } + for (i=0; i < classwords && pcount < part_read; ++i, ++pcount) { + int z = r->begin + pcount*r->part_size; + #ifndef STB_VORBIS_DIVIDES_IN_RESIDUE + int c = part_classdata[0][class_set][i]; + #else + int c = classifications[0][pcount]; + #endif + int b = r->residue_books[c][pass]; + if (b >= 0) { + Codebook *book = f->codebooks + b; + #ifdef STB_VORBIS_DIVIDES_IN_CODEBOOK + if (!codebook_decode_deinterleave_repeat(f, book, residue_buffers, ch, &c_inter, &p_inter, n, r->part_size)) + goto done; + #else + // saves 1% + if (!codebook_decode_deinterleave_repeat(f, book, residue_buffers, ch, &c_inter, &p_inter, n, r->part_size)) + goto done; + #endif + } else { + z += r->part_size; + c_inter = z & 1; + p_inter = z >> 1; + } + } + #ifndef STB_VORBIS_DIVIDES_IN_RESIDUE + ++class_set; + #endif + } + } else if (ch == 1) { + while (pcount < part_read) { + int z = r->begin + pcount*r->part_size; + int c_inter = 0, p_inter = z; + if (pass == 0) { + Codebook *c = f->codebooks+r->classbook; + int q; + DECODE(q,f,c); + if (q == EOP) goto done; + #ifndef STB_VORBIS_DIVIDES_IN_RESIDUE + part_classdata[0][class_set] = r->classdata[q]; + #else + for (i=classwords-1; i >= 0; --i) { + classifications[0][i+pcount] = q % r->classifications; + q /= r->classifications; + } + #endif + } + for (i=0; i < classwords && pcount < part_read; ++i, ++pcount) { + int z = r->begin + pcount*r->part_size; + #ifndef STB_VORBIS_DIVIDES_IN_RESIDUE + int c = part_classdata[0][class_set][i]; + #else + int c = classifications[0][pcount]; + #endif + int b = r->residue_books[c][pass]; + if (b >= 0) { + Codebook *book = f->codebooks + b; + if (!codebook_decode_deinterleave_repeat(f, book, residue_buffers, ch, &c_inter, &p_inter, n, r->part_size)) + goto done; + } else { + z += r->part_size; + c_inter = 0; + p_inter = z; + } + } + #ifndef STB_VORBIS_DIVIDES_IN_RESIDUE + ++class_set; + #endif + } + } else { + while (pcount < part_read) { + int z = r->begin + pcount*r->part_size; + int c_inter = z % ch, p_inter = z/ch; + if (pass == 0) { + Codebook *c = f->codebooks+r->classbook; + int q; + DECODE(q,f,c); + if (q == EOP) goto done; + #ifndef STB_VORBIS_DIVIDES_IN_RESIDUE + part_classdata[0][class_set] = r->classdata[q]; + #else + for (i=classwords-1; i >= 0; --i) { + classifications[0][i+pcount] = q % r->classifications; + q /= r->classifications; + } + #endif + } + for (i=0; i < classwords && pcount < part_read; ++i, ++pcount) { + int z = r->begin + pcount*r->part_size; + #ifndef STB_VORBIS_DIVIDES_IN_RESIDUE + int c = part_classdata[0][class_set][i]; + #else + int c = classifications[0][pcount]; + #endif + int b = r->residue_books[c][pass]; + if (b >= 0) { + Codebook *book = f->codebooks + b; + if (!codebook_decode_deinterleave_repeat(f, book, residue_buffers, ch, &c_inter, &p_inter, n, r->part_size)) + goto done; + } else { + z += r->part_size; + c_inter = z % ch; + p_inter = z / ch; + } + } + #ifndef STB_VORBIS_DIVIDES_IN_RESIDUE + ++class_set; + #endif + } + } + } + goto done; + } + CHECK(f); + + for (pass=0; pass < 8; ++pass) { + int pcount = 0, class_set=0; + while (pcount < part_read) { + if (pass == 0) { + for (j=0; j < ch; ++j) { + if (!do_not_decode[j]) { + Codebook *c = f->codebooks+r->classbook; + int temp; + DECODE(temp,f,c); + if (temp == EOP) goto done; + #ifndef STB_VORBIS_DIVIDES_IN_RESIDUE + part_classdata[j][class_set] = r->classdata[temp]; + #else + for (i=classwords-1; i >= 0; --i) { + classifications[j][i+pcount] = temp % r->classifications; + temp /= r->classifications; + } + #endif + } + } + } + for (i=0; i < classwords && pcount < part_read; ++i, ++pcount) { + for (j=0; j < ch; ++j) { + if (!do_not_decode[j]) { + #ifndef STB_VORBIS_DIVIDES_IN_RESIDUE + int c = part_classdata[j][class_set][i]; + #else + int c = classifications[j][pcount]; + #endif + int b = r->residue_books[c][pass]; + if (b >= 0) { + float *target = residue_buffers[j]; + int offset = r->begin + pcount * r->part_size; + int n = r->part_size; + Codebook *book = f->codebooks + b; + if (!residue_decode(f, book, target, offset, n, rtype)) + goto done; + } + } + } + } + #ifndef STB_VORBIS_DIVIDES_IN_RESIDUE + ++class_set; + #endif + } + } + done: + CHECK(f); + #ifndef STB_VORBIS_DIVIDES_IN_RESIDUE + temp_free(f,part_classdata); + #else + temp_free(f,classifications); + #endif + temp_alloc_restore(f,temp_alloc_point); +} + + +#if 0 +// slow way for debugging +void inverse_mdct_slow(float *buffer, int n) +{ + int i,j; + int n2 = n >> 1; + float *x = (float *) malloc(sizeof(*x) * n2); + memcpy(x, buffer, sizeof(*x) * n2); + for (i=0; i < n; ++i) { + float acc = 0; + for (j=0; j < n2; ++j) + // formula from paper: + //acc += n/4.0f * x[j] * (float) cos(M_PI / 2 / n * (2 * i + 1 + n/2.0)*(2*j+1)); + // formula from wikipedia + //acc += 2.0f / n2 * x[j] * (float) cos(M_PI/n2 * (i + 0.5 + n2/2)*(j + 0.5)); + // these are equivalent, except the formula from the paper inverts the multiplier! + // however, what actually works is NO MULTIPLIER!?! + //acc += 64 * 2.0f / n2 * x[j] * (float) cos(M_PI/n2 * (i + 0.5 + n2/2)*(j + 0.5)); + acc += x[j] * (float) cos(M_PI / 2 / n * (2 * i + 1 + n/2.0)*(2*j+1)); + buffer[i] = acc; + } + free(x); +} +#elif 0 +// same as above, but just barely able to run in real time on modern machines +void inverse_mdct_slow(float *buffer, int n, vorb *f, int blocktype) +{ + float mcos[16384]; + int i,j; + int n2 = n >> 1, nmask = (n << 2) -1; + float *x = (float *) malloc(sizeof(*x) * n2); + memcpy(x, buffer, sizeof(*x) * n2); + for (i=0; i < 4*n; ++i) + mcos[i] = (float) cos(M_PI / 2 * i / n); + + for (i=0; i < n; ++i) { + float acc = 0; + for (j=0; j < n2; ++j) + acc += x[j] * mcos[(2 * i + 1 + n2)*(2*j+1) & nmask]; + buffer[i] = acc; + } + free(x); +} +#elif 0 +// transform to use a slow dct-iv; this is STILL basically trivial, +// but only requires half as many ops +void dct_iv_slow(float *buffer, int n) +{ + float mcos[16384]; + float x[2048]; + int i,j; + int n2 = n >> 1, nmask = (n << 3) - 1; + memcpy(x, buffer, sizeof(*x) * n); + for (i=0; i < 8*n; ++i) + mcos[i] = (float) cos(M_PI / 4 * i / n); + for (i=0; i < n; ++i) { + float acc = 0; + for (j=0; j < n; ++j) + acc += x[j] * mcos[((2 * i + 1)*(2*j+1)) & nmask]; + buffer[i] = acc; + } +} + +void inverse_mdct_slow(float *buffer, int n, vorb *f, int blocktype) +{ + int i, n4 = n >> 2, n2 = n >> 1, n3_4 = n - n4; + float temp[4096]; + + memcpy(temp, buffer, n2 * sizeof(float)); + dct_iv_slow(temp, n2); // returns -c'-d, a-b' + + for (i=0; i < n4 ; ++i) buffer[i] = temp[i+n4]; // a-b' + for ( ; i < n3_4; ++i) buffer[i] = -temp[n3_4 - i - 1]; // b-a', c+d' + for ( ; i < n ; ++i) buffer[i] = -temp[i - n3_4]; // c'+d +} +#endif + +#ifndef LIBVORBIS_MDCT +#define LIBVORBIS_MDCT 0 +#endif + +#if LIBVORBIS_MDCT +// directly call the vorbis MDCT using an interface documented +// by Jeff Roberts... useful for performance comparison +typedef struct +{ + int n; + int log2n; + + float *trig; + int *bitrev; + + float scale; +} mdct_lookup; + +extern void mdct_init(mdct_lookup *lookup, int n); +extern void mdct_clear(mdct_lookup *l); +extern void mdct_backward(mdct_lookup *init, float *in, float *out); + +mdct_lookup M1,M2; + +void inverse_mdct(float *buffer, int n, vorb *f, int blocktype) +{ + mdct_lookup *M; + if (M1.n == n) M = &M1; + else if (M2.n == n) M = &M2; + else if (M1.n == 0) { mdct_init(&M1, n); M = &M1; } + else { + if (M2.n) __asm int 3; + mdct_init(&M2, n); + M = &M2; + } + + mdct_backward(M, buffer, buffer); +} +#endif + + +// the following were split out into separate functions while optimizing; +// they could be pushed back up but eh. __forceinline showed no change; +// they're probably already being inlined. +static void imdct_step3_iter0_loop(int n, float *e, int i_off, int k_off, float *A) +{ + float *ee0 = e + i_off; + float *ee2 = ee0 + k_off; + int i; + + assert((n & 3) == 0); + for (i=(n>>2); i > 0; --i) { + float k00_20, k01_21; + k00_20 = ee0[ 0] - ee2[ 0]; + k01_21 = ee0[-1] - ee2[-1]; + ee0[ 0] += ee2[ 0];//ee0[ 0] = ee0[ 0] + ee2[ 0]; + ee0[-1] += ee2[-1];//ee0[-1] = ee0[-1] + ee2[-1]; + ee2[ 0] = k00_20 * A[0] - k01_21 * A[1]; + ee2[-1] = k01_21 * A[0] + k00_20 * A[1]; + A += 8; + + k00_20 = ee0[-2] - ee2[-2]; + k01_21 = ee0[-3] - ee2[-3]; + ee0[-2] += ee2[-2];//ee0[-2] = ee0[-2] + ee2[-2]; + ee0[-3] += ee2[-3];//ee0[-3] = ee0[-3] + ee2[-3]; + ee2[-2] = k00_20 * A[0] - k01_21 * A[1]; + ee2[-3] = k01_21 * A[0] + k00_20 * A[1]; + A += 8; + + k00_20 = ee0[-4] - ee2[-4]; + k01_21 = ee0[-5] - ee2[-5]; + ee0[-4] += ee2[-4];//ee0[-4] = ee0[-4] + ee2[-4]; + ee0[-5] += ee2[-5];//ee0[-5] = ee0[-5] + ee2[-5]; + ee2[-4] = k00_20 * A[0] - k01_21 * A[1]; + ee2[-5] = k01_21 * A[0] + k00_20 * A[1]; + A += 8; + + k00_20 = ee0[-6] - ee2[-6]; + k01_21 = ee0[-7] - ee2[-7]; + ee0[-6] += ee2[-6];//ee0[-6] = ee0[-6] + ee2[-6]; + ee0[-7] += ee2[-7];//ee0[-7] = ee0[-7] + ee2[-7]; + ee2[-6] = k00_20 * A[0] - k01_21 * A[1]; + ee2[-7] = k01_21 * A[0] + k00_20 * A[1]; + A += 8; + ee0 -= 8; + ee2 -= 8; + } +} + +static void imdct_step3_inner_r_loop(int lim, float *e, int d0, int k_off, float *A, int k1) +{ + int i; + float k00_20, k01_21; + + float *e0 = e + d0; + float *e2 = e0 + k_off; + + for (i=lim >> 2; i > 0; --i) { + k00_20 = e0[-0] - e2[-0]; + k01_21 = e0[-1] - e2[-1]; + e0[-0] += e2[-0];//e0[-0] = e0[-0] + e2[-0]; + e0[-1] += e2[-1];//e0[-1] = e0[-1] + e2[-1]; + e2[-0] = (k00_20)*A[0] - (k01_21) * A[1]; + e2[-1] = (k01_21)*A[0] + (k00_20) * A[1]; + + A += k1; + + k00_20 = e0[-2] - e2[-2]; + k01_21 = e0[-3] - e2[-3]; + e0[-2] += e2[-2];//e0[-2] = e0[-2] + e2[-2]; + e0[-3] += e2[-3];//e0[-3] = e0[-3] + e2[-3]; + e2[-2] = (k00_20)*A[0] - (k01_21) * A[1]; + e2[-3] = (k01_21)*A[0] + (k00_20) * A[1]; + + A += k1; + + k00_20 = e0[-4] - e2[-4]; + k01_21 = e0[-5] - e2[-5]; + e0[-4] += e2[-4];//e0[-4] = e0[-4] + e2[-4]; + e0[-5] += e2[-5];//e0[-5] = e0[-5] + e2[-5]; + e2[-4] = (k00_20)*A[0] - (k01_21) * A[1]; + e2[-5] = (k01_21)*A[0] + (k00_20) * A[1]; + + A += k1; + + k00_20 = e0[-6] - e2[-6]; + k01_21 = e0[-7] - e2[-7]; + e0[-6] += e2[-6];//e0[-6] = e0[-6] + e2[-6]; + e0[-7] += e2[-7];//e0[-7] = e0[-7] + e2[-7]; + e2[-6] = (k00_20)*A[0] - (k01_21) * A[1]; + e2[-7] = (k01_21)*A[0] + (k00_20) * A[1]; + + e0 -= 8; + e2 -= 8; + + A += k1; + } +} + +static void imdct_step3_inner_s_loop(int n, float *e, int i_off, int k_off, float *A, int a_off, int k0) +{ + int i; + float A0 = A[0]; + float A1 = A[0+1]; + float A2 = A[0+a_off]; + float A3 = A[0+a_off+1]; + float A4 = A[0+a_off*2+0]; + float A5 = A[0+a_off*2+1]; + float A6 = A[0+a_off*3+0]; + float A7 = A[0+a_off*3+1]; + + float k00,k11; + + float *ee0 = e +i_off; + float *ee2 = ee0+k_off; + + for (i=n; i > 0; --i) { + k00 = ee0[ 0] - ee2[ 0]; + k11 = ee0[-1] - ee2[-1]; + ee0[ 0] = ee0[ 0] + ee2[ 0]; + ee0[-1] = ee0[-1] + ee2[-1]; + ee2[ 0] = (k00) * A0 - (k11) * A1; + ee2[-1] = (k11) * A0 + (k00) * A1; + + k00 = ee0[-2] - ee2[-2]; + k11 = ee0[-3] - ee2[-3]; + ee0[-2] = ee0[-2] + ee2[-2]; + ee0[-3] = ee0[-3] + ee2[-3]; + ee2[-2] = (k00) * A2 - (k11) * A3; + ee2[-3] = (k11) * A2 + (k00) * A3; + + k00 = ee0[-4] - ee2[-4]; + k11 = ee0[-5] - ee2[-5]; + ee0[-4] = ee0[-4] + ee2[-4]; + ee0[-5] = ee0[-5] + ee2[-5]; + ee2[-4] = (k00) * A4 - (k11) * A5; + ee2[-5] = (k11) * A4 + (k00) * A5; + + k00 = ee0[-6] - ee2[-6]; + k11 = ee0[-7] - ee2[-7]; + ee0[-6] = ee0[-6] + ee2[-6]; + ee0[-7] = ee0[-7] + ee2[-7]; + ee2[-6] = (k00) * A6 - (k11) * A7; + ee2[-7] = (k11) * A6 + (k00) * A7; + + ee0 -= k0; + ee2 -= k0; + } +} + +static __forceinline void iter_54(float *z) +{ + float k00,k11,k22,k33; + float y0,y1,y2,y3; + + k00 = z[ 0] - z[-4]; + y0 = z[ 0] + z[-4]; + y2 = z[-2] + z[-6]; + k22 = z[-2] - z[-6]; + + z[-0] = y0 + y2; // z0 + z4 + z2 + z6 + z[-2] = y0 - y2; // z0 + z4 - z2 - z6 + + // done with y0,y2 + + k33 = z[-3] - z[-7]; + + z[-4] = k00 + k33; // z0 - z4 + z3 - z7 + z[-6] = k00 - k33; // z0 - z4 - z3 + z7 + + // done with k33 + + k11 = z[-1] - z[-5]; + y1 = z[-1] + z[-5]; + y3 = z[-3] + z[-7]; + + z[-1] = y1 + y3; // z1 + z5 + z3 + z7 + z[-3] = y1 - y3; // z1 + z5 - z3 - z7 + z[-5] = k11 - k22; // z1 - z5 + z2 - z6 + z[-7] = k11 + k22; // z1 - z5 - z2 + z6 +} + +static void imdct_step3_inner_s_loop_ld654(int n, float *e, int i_off, float *A, int base_n) +{ + int a_off = base_n >> 3; + float A2 = A[0+a_off]; + float *z = e + i_off; + float *base = z - 16 * n; + + while (z > base) { + float k00,k11; + + k00 = z[-0] - z[-8]; + k11 = z[-1] - z[-9]; + z[-0] = z[-0] + z[-8]; + z[-1] = z[-1] + z[-9]; + z[-8] = k00; + z[-9] = k11 ; + + k00 = z[ -2] - z[-10]; + k11 = z[ -3] - z[-11]; + z[ -2] = z[ -2] + z[-10]; + z[ -3] = z[ -3] + z[-11]; + z[-10] = (k00+k11) * A2; + z[-11] = (k11-k00) * A2; + + k00 = z[-12] - z[ -4]; // reverse to avoid a unary negation + k11 = z[ -5] - z[-13]; + z[ -4] = z[ -4] + z[-12]; + z[ -5] = z[ -5] + z[-13]; + z[-12] = k11; + z[-13] = k00; + + k00 = z[-14] - z[ -6]; // reverse to avoid a unary negation + k11 = z[ -7] - z[-15]; + z[ -6] = z[ -6] + z[-14]; + z[ -7] = z[ -7] + z[-15]; + z[-14] = (k00+k11) * A2; + z[-15] = (k00-k11) * A2; + + iter_54(z); + iter_54(z-8); + z -= 16; + } +} + +static void inverse_mdct(float *buffer, int n, vorb *f, int blocktype) +{ + int n2 = n >> 1, n4 = n >> 2, n8 = n >> 3, l; + int ld; + // @OPTIMIZE: reduce register pressure by using fewer variables? + int save_point = temp_alloc_save(f); + float *buf2 = (float *) temp_alloc(f, n2 * sizeof(*buf2)); + float *u=NULL,*v=NULL; + // twiddle factors + float *A = f->A[blocktype]; + + // IMDCT algorithm from "The use of multirate filter banks for coding of high quality digital audio" + // See notes about bugs in that paper in less-optimal implementation 'inverse_mdct_old' after this function. + + // kernel from paper + + + // merged: + // copy and reflect spectral data + // step 0 + + // note that it turns out that the items added together during + // this step are, in fact, being added to themselves (as reflected + // by step 0). inexplicable inefficiency! this became obvious + // once I combined the passes. + + // so there's a missing 'times 2' here (for adding X to itself). + // this propogates through linearly to the end, where the numbers + // are 1/2 too small, and need to be compensated for. + + { + float *d,*e, *AA, *e_stop; + d = &buf2[n2-2]; + AA = A; + e = &buffer[0]; + e_stop = &buffer[n2]; + while (e != e_stop) { + d[1] = (e[0] * AA[0] - e[2]*AA[1]); + d[0] = (e[0] * AA[1] + e[2]*AA[0]); + d -= 2; + AA += 2; + e += 4; + } + + e = &buffer[n2-3]; + while (d >= buf2) { + d[1] = (-e[2] * AA[0] - -e[0]*AA[1]); + d[0] = (-e[2] * AA[1] + -e[0]*AA[0]); + d -= 2; + AA += 2; + e -= 4; + } + } + + // now we use symbolic names for these, so that we can + // possibly swap their meaning as we change which operations + // are in place + + u = buffer; + v = buf2; + + // step 2 (paper output is w, now u) + // this could be in place, but the data ends up in the wrong + // place... _somebody_'s got to swap it, so this is nominated + { + float *AA = &A[n2-8]; + float *d0,*d1, *e0, *e1; + + e0 = &v[n4]; + e1 = &v[0]; + + d0 = &u[n4]; + d1 = &u[0]; + + while (AA >= A) { + float v40_20, v41_21; + + v41_21 = e0[1] - e1[1]; + v40_20 = e0[0] - e1[0]; + d0[1] = e0[1] + e1[1]; + d0[0] = e0[0] + e1[0]; + d1[1] = v41_21*AA[4] - v40_20*AA[5]; + d1[0] = v40_20*AA[4] + v41_21*AA[5]; + + v41_21 = e0[3] - e1[3]; + v40_20 = e0[2] - e1[2]; + d0[3] = e0[3] + e1[3]; + d0[2] = e0[2] + e1[2]; + d1[3] = v41_21*AA[0] - v40_20*AA[1]; + d1[2] = v40_20*AA[0] + v41_21*AA[1]; + + AA -= 8; + + d0 += 4; + d1 += 4; + e0 += 4; + e1 += 4; + } + } + + // step 3 + ld = ilog(n) - 1; // ilog is off-by-one from normal definitions + + // optimized step 3: + + // the original step3 loop can be nested r inside s or s inside r; + // it's written originally as s inside r, but this is dumb when r + // iterates many times, and s few. So I have two copies of it and + // switch between them halfway. + + // this is iteration 0 of step 3 + imdct_step3_iter0_loop(n >> 4, u, n2-1-n4*0, -(n >> 3), A); + imdct_step3_iter0_loop(n >> 4, u, n2-1-n4*1, -(n >> 3), A); + + // this is iteration 1 of step 3 + imdct_step3_inner_r_loop(n >> 5, u, n2-1 - n8*0, -(n >> 4), A, 16); + imdct_step3_inner_r_loop(n >> 5, u, n2-1 - n8*1, -(n >> 4), A, 16); + imdct_step3_inner_r_loop(n >> 5, u, n2-1 - n8*2, -(n >> 4), A, 16); + imdct_step3_inner_r_loop(n >> 5, u, n2-1 - n8*3, -(n >> 4), A, 16); + + l=2; + for (; l < (ld-3)>>1; ++l) { + int k0 = n >> (l+2), k0_2 = k0>>1; + int lim = 1 << (l+1); + int i; + for (i=0; i < lim; ++i) + imdct_step3_inner_r_loop(n >> (l+4), u, n2-1 - k0*i, -k0_2, A, 1 << (l+3)); + } + + for (; l < ld-6; ++l) { + int k0 = n >> (l+2), k1 = 1 << (l+3), k0_2 = k0>>1; + int rlim = n >> (l+6), r; + int lim = 1 << (l+1); + int i_off; + float *A0 = A; + i_off = n2-1; + for (r=rlim; r > 0; --r) { + imdct_step3_inner_s_loop(lim, u, i_off, -k0_2, A0, k1, k0); + A0 += k1*4; + i_off -= 8; + } + } + + // iterations with count: + // ld-6,-5,-4 all interleaved together + // the big win comes from getting rid of needless flops + // due to the constants on pass 5 & 4 being all 1 and 0; + // combining them to be simultaneous to improve cache made little difference + imdct_step3_inner_s_loop_ld654(n >> 5, u, n2-1, A, n); + + // output is u + + // step 4, 5, and 6 + // cannot be in-place because of step 5 + { + uint16 *bitrev = f->bit_reverse[blocktype]; + // weirdly, I'd have thought reading sequentially and writing + // erratically would have been better than vice-versa, but in + // fact that's not what my testing showed. (That is, with + // j = bitreverse(i), do you read i and write j, or read j and write i.) + + float *d0 = &v[n4-4]; + float *d1 = &v[n2-4]; + while (d0 >= v) { + int k4; + + k4 = bitrev[0]; + d1[3] = u[k4+0]; + d1[2] = u[k4+1]; + d0[3] = u[k4+2]; + d0[2] = u[k4+3]; + + k4 = bitrev[1]; + d1[1] = u[k4+0]; + d1[0] = u[k4+1]; + d0[1] = u[k4+2]; + d0[0] = u[k4+3]; + + d0 -= 4; + d1 -= 4; + bitrev += 2; + } + } + // (paper output is u, now v) + + + // data must be in buf2 + assert(v == buf2); + + // step 7 (paper output is v, now v) + // this is now in place + { + float *C = f->C[blocktype]; + float *d, *e; + + d = v; + e = v + n2 - 4; + + while (d < e) { + float a02,a11,b0,b1,b2,b3; + + a02 = d[0] - e[2]; + a11 = d[1] + e[3]; + + b0 = C[1]*a02 + C[0]*a11; + b1 = C[1]*a11 - C[0]*a02; + + b2 = d[0] + e[ 2]; + b3 = d[1] - e[ 3]; + + d[0] = b2 + b0; + d[1] = b3 + b1; + e[2] = b2 - b0; + e[3] = b1 - b3; + + a02 = d[2] - e[0]; + a11 = d[3] + e[1]; + + b0 = C[3]*a02 + C[2]*a11; + b1 = C[3]*a11 - C[2]*a02; + + b2 = d[2] + e[ 0]; + b3 = d[3] - e[ 1]; + + d[2] = b2 + b0; + d[3] = b3 + b1; + e[0] = b2 - b0; + e[1] = b1 - b3; + + C += 4; + d += 4; + e -= 4; + } + } + + // data must be in buf2 + + + // step 8+decode (paper output is X, now buffer) + // this generates pairs of data a la 8 and pushes them directly through + // the decode kernel (pushing rather than pulling) to avoid having + // to make another pass later + + // this cannot POSSIBLY be in place, so we refer to the buffers directly + + { + float *d0,*d1,*d2,*d3; + + float *B = f->B[blocktype] + n2 - 8; + float *e = buf2 + n2 - 8; + d0 = &buffer[0]; + d1 = &buffer[n2-4]; + d2 = &buffer[n2]; + d3 = &buffer[n-4]; + while (e >= v) { + float p0,p1,p2,p3; + + p3 = e[6]*B[7] - e[7]*B[6]; + p2 = -e[6]*B[6] - e[7]*B[7]; + + d0[0] = p3; + d1[3] = - p3; + d2[0] = p2; + d3[3] = p2; + + p1 = e[4]*B[5] - e[5]*B[4]; + p0 = -e[4]*B[4] - e[5]*B[5]; + + d0[1] = p1; + d1[2] = - p1; + d2[1] = p0; + d3[2] = p0; + + p3 = e[2]*B[3] - e[3]*B[2]; + p2 = -e[2]*B[2] - e[3]*B[3]; + + d0[2] = p3; + d1[1] = - p3; + d2[2] = p2; + d3[1] = p2; + + p1 = e[0]*B[1] - e[1]*B[0]; + p0 = -e[0]*B[0] - e[1]*B[1]; + + d0[3] = p1; + d1[0] = - p1; + d2[3] = p0; + d3[0] = p0; + + B -= 8; + e -= 8; + d0 += 4; + d2 += 4; + d1 -= 4; + d3 -= 4; + } + } + + temp_free(f,buf2); + temp_alloc_restore(f,save_point); +} + +#if 0 +// this is the original version of the above code, if you want to optimize it from scratch +void inverse_mdct_naive(float *buffer, int n) +{ + float s; + float A[1 << 12], B[1 << 12], C[1 << 11]; + int i,k,k2,k4, n2 = n >> 1, n4 = n >> 2, n8 = n >> 3, l; + int n3_4 = n - n4, ld; + // how can they claim this only uses N words?! + // oh, because they're only used sparsely, whoops + float u[1 << 13], X[1 << 13], v[1 << 13], w[1 << 13]; + // set up twiddle factors + + for (k=k2=0; k < n4; ++k,k2+=2) { + A[k2 ] = (float) cos(4*k*M_PI/n); + A[k2+1] = (float) -sin(4*k*M_PI/n); + B[k2 ] = (float) cos((k2+1)*M_PI/n/2); + B[k2+1] = (float) sin((k2+1)*M_PI/n/2); + } + for (k=k2=0; k < n8; ++k,k2+=2) { + C[k2 ] = (float) cos(2*(k2+1)*M_PI/n); + C[k2+1] = (float) -sin(2*(k2+1)*M_PI/n); + } + + // IMDCT algorithm from "The use of multirate filter banks for coding of high quality digital audio" + // Note there are bugs in that pseudocode, presumably due to them attempting + // to rename the arrays nicely rather than representing the way their actual + // implementation bounces buffers back and forth. As a result, even in the + // "some formulars corrected" version, a direct implementation fails. These + // are noted below as "paper bug". + + // copy and reflect spectral data + for (k=0; k < n2; ++k) u[k] = buffer[k]; + for ( ; k < n ; ++k) u[k] = -buffer[n - k - 1]; + // kernel from paper + // step 1 + for (k=k2=k4=0; k < n4; k+=1, k2+=2, k4+=4) { + v[n-k4-1] = (u[k4] - u[n-k4-1]) * A[k2] - (u[k4+2] - u[n-k4-3])*A[k2+1]; + v[n-k4-3] = (u[k4] - u[n-k4-1]) * A[k2+1] + (u[k4+2] - u[n-k4-3])*A[k2]; + } + // step 2 + for (k=k4=0; k < n8; k+=1, k4+=4) { + w[n2+3+k4] = v[n2+3+k4] + v[k4+3]; + w[n2+1+k4] = v[n2+1+k4] + v[k4+1]; + w[k4+3] = (v[n2+3+k4] - v[k4+3])*A[n2-4-k4] - (v[n2+1+k4]-v[k4+1])*A[n2-3-k4]; + w[k4+1] = (v[n2+1+k4] - v[k4+1])*A[n2-4-k4] + (v[n2+3+k4]-v[k4+3])*A[n2-3-k4]; + } + // step 3 + ld = ilog(n) - 1; // ilog is off-by-one from normal definitions + for (l=0; l < ld-3; ++l) { + int k0 = n >> (l+2), k1 = 1 << (l+3); + int rlim = n >> (l+4), r4, r; + int s2lim = 1 << (l+2), s2; + for (r=r4=0; r < rlim; r4+=4,++r) { + for (s2=0; s2 < s2lim; s2+=2) { + u[n-1-k0*s2-r4] = w[n-1-k0*s2-r4] + w[n-1-k0*(s2+1)-r4]; + u[n-3-k0*s2-r4] = w[n-3-k0*s2-r4] + w[n-3-k0*(s2+1)-r4]; + u[n-1-k0*(s2+1)-r4] = (w[n-1-k0*s2-r4] - w[n-1-k0*(s2+1)-r4]) * A[r*k1] + - (w[n-3-k0*s2-r4] - w[n-3-k0*(s2+1)-r4]) * A[r*k1+1]; + u[n-3-k0*(s2+1)-r4] = (w[n-3-k0*s2-r4] - w[n-3-k0*(s2+1)-r4]) * A[r*k1] + + (w[n-1-k0*s2-r4] - w[n-1-k0*(s2+1)-r4]) * A[r*k1+1]; + } + } + if (l+1 < ld-3) { + // paper bug: ping-ponging of u&w here is omitted + memcpy(w, u, sizeof(u)); + } + } + + // step 4 + for (i=0; i < n8; ++i) { + int j = bit_reverse(i) >> (32-ld+3); + assert(j < n8); + if (i == j) { + // paper bug: original code probably swapped in place; if copying, + // need to directly copy in this case + int i8 = i << 3; + v[i8+1] = u[i8+1]; + v[i8+3] = u[i8+3]; + v[i8+5] = u[i8+5]; + v[i8+7] = u[i8+7]; + } else if (i < j) { + int i8 = i << 3, j8 = j << 3; + v[j8+1] = u[i8+1], v[i8+1] = u[j8 + 1]; + v[j8+3] = u[i8+3], v[i8+3] = u[j8 + 3]; + v[j8+5] = u[i8+5], v[i8+5] = u[j8 + 5]; + v[j8+7] = u[i8+7], v[i8+7] = u[j8 + 7]; + } + } + // step 5 + for (k=0; k < n2; ++k) { + w[k] = v[k*2+1]; + } + // step 6 + for (k=k2=k4=0; k < n8; ++k, k2 += 2, k4 += 4) { + u[n-1-k2] = w[k4]; + u[n-2-k2] = w[k4+1]; + u[n3_4 - 1 - k2] = w[k4+2]; + u[n3_4 - 2 - k2] = w[k4+3]; + } + // step 7 + for (k=k2=0; k < n8; ++k, k2 += 2) { + v[n2 + k2 ] = ( u[n2 + k2] + u[n-2-k2] + C[k2+1]*(u[n2+k2]-u[n-2-k2]) + C[k2]*(u[n2+k2+1]+u[n-2-k2+1]))/2; + v[n-2 - k2] = ( u[n2 + k2] + u[n-2-k2] - C[k2+1]*(u[n2+k2]-u[n-2-k2]) - C[k2]*(u[n2+k2+1]+u[n-2-k2+1]))/2; + v[n2+1+ k2] = ( u[n2+1+k2] - u[n-1-k2] + C[k2+1]*(u[n2+1+k2]+u[n-1-k2]) - C[k2]*(u[n2+k2]-u[n-2-k2]))/2; + v[n-1 - k2] = (-u[n2+1+k2] + u[n-1-k2] + C[k2+1]*(u[n2+1+k2]+u[n-1-k2]) - C[k2]*(u[n2+k2]-u[n-2-k2]))/2; + } + // step 8 + for (k=k2=0; k < n4; ++k,k2 += 2) { + X[k] = v[k2+n2]*B[k2 ] + v[k2+1+n2]*B[k2+1]; + X[n2-1-k] = v[k2+n2]*B[k2+1] - v[k2+1+n2]*B[k2 ]; + } + + // decode kernel to output + // determined the following value experimentally + // (by first figuring out what made inverse_mdct_slow work); then matching that here + // (probably vorbis encoder premultiplies by n or n/2, to save it on the decoder?) + s = 0.5; // theoretically would be n4 + + // [[[ note! the s value of 0.5 is compensated for by the B[] in the current code, + // so it needs to use the "old" B values to behave correctly, or else + // set s to 1.0 ]]] + for (i=0; i < n4 ; ++i) buffer[i] = s * X[i+n4]; + for ( ; i < n3_4; ++i) buffer[i] = -s * X[n3_4 - i - 1]; + for ( ; i < n ; ++i) buffer[i] = -s * X[i - n3_4]; +} +#endif + +static float *get_window(vorb *f, int len) +{ + len <<= 1; + if (len == f->blocksize_0) return f->window[0]; + if (len == f->blocksize_1) return f->window[1]; + assert(0); + return NULL; +} + +#ifndef STB_VORBIS_NO_DEFER_FLOOR +typedef int16 YTYPE; +#else +typedef int YTYPE; +#endif +static int do_floor(vorb *f, Mapping *map, int i, int n, float *target, YTYPE *finalY, uint8 *step2_flag) +{ + int n2 = n >> 1; + int s = map->chan[i].mux, floor; + floor = map->submap_floor[s]; + if (f->floor_types[floor] == 0) { + return error(f, VORBIS_invalid_stream); + } else { + Floor1 *g = &f->floor_config[floor].floor1; + int j,q; + int lx = 0, ly = finalY[0] * g->floor1_multiplier; + for (q=1; q < g->values; ++q) { + j = g->sorted_order[q]; + #ifndef STB_VORBIS_NO_DEFER_FLOOR + if (finalY[j] >= 0) + #else + if (step2_flag[j]) + #endif + { + int hy = finalY[j] * g->floor1_multiplier; + int hx = g->Xlist[j]; + if (lx != hx) + draw_line(target, lx,ly, hx,hy, n2); + CHECK(f); + lx = hx, ly = hy; + } + } + if (lx < n2) { + // optimization of: draw_line(target, lx,ly, n,ly, n2); + for (j=lx; j < n2; ++j) + LINE_OP(target[j], inverse_db_table[ly]); + CHECK(f); + } + } + return TRUE; +} + +// The meaning of "left" and "right" +// +// For a given frame: +// we compute samples from 0..n +// window_center is n/2 +// we'll window and mix the samples from left_start to left_end with data from the previous frame +// all of the samples from left_end to right_start can be output without mixing; however, +// this interval is 0-length except when transitioning between short and long frames +// all of the samples from right_start to right_end need to be mixed with the next frame, +// which we don't have, so those get saved in a buffer +// frame N's right_end-right_start, the number of samples to mix with the next frame, +// has to be the same as frame N+1's left_end-left_start (which they are by +// construction) + +static int vorbis_decode_initial(vorb *f, int *p_left_start, int *p_left_end, int *p_right_start, int *p_right_end, int *mode) +{ + Mode *m; + int i, n, prev, next, window_center; + f->channel_buffer_start = f->channel_buffer_end = 0; + + retry: + if (f->eof) return FALSE; + if (!maybe_start_packet(f)) + return FALSE; + // check packet type + if (get_bits(f,1) != 0) { + if (IS_PUSH_MODE(f)) + return error(f,VORBIS_bad_packet_type); + while (EOP != get8_packet(f)); + goto retry; + } + + if (f->alloc.alloc_buffer) + assert(f->alloc.alloc_buffer_length_in_bytes == f->temp_offset); + + i = get_bits(f, ilog(f->mode_count-1)); + if (i == EOP) return FALSE; + if (i >= f->mode_count) return FALSE; + *mode = i; + m = f->mode_config + i; + if (m->blockflag) { + n = f->blocksize_1; + prev = get_bits(f,1); + next = get_bits(f,1); + } else { + prev = next = 0; + n = f->blocksize_0; + } + +// WINDOWING + + window_center = n >> 1; + if (m->blockflag && !prev) { + *p_left_start = (n - f->blocksize_0) >> 2; + *p_left_end = (n + f->blocksize_0) >> 2; + } else { + *p_left_start = 0; + *p_left_end = window_center; + } + if (m->blockflag && !next) { + *p_right_start = (n*3 - f->blocksize_0) >> 2; + *p_right_end = (n*3 + f->blocksize_0) >> 2; + } else { + *p_right_start = window_center; + *p_right_end = n; + } + + return TRUE; +} + +static int vorbis_decode_packet_rest(vorb *f, int *len, Mode *m, int left_start, int left_end, int right_start, int right_end, int *p_left) +{ + Mapping *map; + int i,j,k,n,n2; + int zero_channel[256]; + int really_zero_channel[256]; + +// WINDOWING + + n = f->blocksize[m->blockflag]; + map = &f->mapping[m->mapping]; + +// FLOORS + n2 = n >> 1; + + CHECK(f); + + for (i=0; i < f->channels; ++i) { + int s = map->chan[i].mux, floor; + zero_channel[i] = FALSE; + floor = map->submap_floor[s]; + if (f->floor_types[floor] == 0) { + return error(f, VORBIS_invalid_stream); + } else { + Floor1 *g = &f->floor_config[floor].floor1; + if (get_bits(f, 1)) { + short *finalY; + uint8 step2_flag[256]; + static int range_list[4] = { 256, 128, 86, 64 }; + int range = range_list[g->floor1_multiplier-1]; + int offset = 2; + finalY = f->finalY[i]; + finalY[0] = get_bits(f, ilog(range)-1); + finalY[1] = get_bits(f, ilog(range)-1); + for (j=0; j < g->partitions; ++j) { + int pclass = g->partition_class_list[j]; + int cdim = g->class_dimensions[pclass]; + int cbits = g->class_subclasses[pclass]; + int csub = (1 << cbits)-1; + int cval = 0; + if (cbits) { + Codebook *c = f->codebooks + g->class_masterbooks[pclass]; + DECODE(cval,f,c); + } + for (k=0; k < cdim; ++k) { + int book = g->subclass_books[pclass][cval & csub]; + cval = cval >> cbits; + if (book >= 0) { + int temp; + Codebook *c = f->codebooks + book; + DECODE(temp,f,c); + finalY[offset++] = temp; + } else + finalY[offset++] = 0; + } + } + if (f->valid_bits == INVALID_BITS) goto error; // behavior according to spec + step2_flag[0] = step2_flag[1] = 1; + for (j=2; j < g->values; ++j) { + int low, high, pred, highroom, lowroom, room, val; + low = g->neighbors[j][0]; + high = g->neighbors[j][1]; + //neighbors(g->Xlist, j, &low, &high); + pred = predict_point(g->Xlist[j], g->Xlist[low], g->Xlist[high], finalY[low], finalY[high]); + val = finalY[j]; + highroom = range - pred; + lowroom = pred; + if (highroom < lowroom) + room = highroom * 2; + else + room = lowroom * 2; + if (val) { + step2_flag[low] = step2_flag[high] = 1; + step2_flag[j] = 1; + if (val >= room) + if (highroom > lowroom) + finalY[j] = val - lowroom + pred; + else + finalY[j] = pred - val + highroom - 1; + else + if (val & 1) + finalY[j] = pred - ((val+1)>>1); + else + finalY[j] = pred + (val>>1); + } else { + step2_flag[j] = 0; + finalY[j] = pred; + } + } + +#ifdef STB_VORBIS_NO_DEFER_FLOOR + do_floor(f, map, i, n, f->floor_buffers[i], finalY, step2_flag); +#else + // defer final floor computation until _after_ residue + for (j=0; j < g->values; ++j) { + if (!step2_flag[j]) + finalY[j] = -1; + } +#endif + } else { + error: + zero_channel[i] = TRUE; + } + // So we just defer everything else to later + + // at this point we've decoded the floor into buffer + } + } + CHECK(f); + // at this point we've decoded all floors + + if (f->alloc.alloc_buffer) + assert(f->alloc.alloc_buffer_length_in_bytes == f->temp_offset); + + // re-enable coupled channels if necessary + memcpy(really_zero_channel, zero_channel, sizeof(really_zero_channel[0]) * f->channels); + for (i=0; i < map->coupling_steps; ++i) + if (!zero_channel[map->chan[i].magnitude] || !zero_channel[map->chan[i].angle]) { + zero_channel[map->chan[i].magnitude] = zero_channel[map->chan[i].angle] = FALSE; + } + + CHECK(f); +// RESIDUE DECODE + for (i=0; i < map->submaps; ++i) { + float *residue_buffers[STB_VORBIS_MAX_CHANNELS]; + int r; + uint8 do_not_decode[256]; + int ch = 0; + for (j=0; j < f->channels; ++j) { + if (map->chan[j].mux == i) { + if (zero_channel[j]) { + do_not_decode[ch] = TRUE; + residue_buffers[ch] = NULL; + } else { + do_not_decode[ch] = FALSE; + residue_buffers[ch] = f->channel_buffers[j]; + } + ++ch; + } + } + r = map->submap_residue[i]; + decode_residue(f, residue_buffers, ch, n2, r, do_not_decode); + } + + if (f->alloc.alloc_buffer) + assert(f->alloc.alloc_buffer_length_in_bytes == f->temp_offset); + CHECK(f); + +// INVERSE COUPLING + for (i = map->coupling_steps-1; i >= 0; --i) { + int n2 = n >> 1; + float *m = f->channel_buffers[map->chan[i].magnitude]; + float *a = f->channel_buffers[map->chan[i].angle ]; + for (j=0; j < n2; ++j) { + float a2,m2; + if (m[j] > 0) + if (a[j] > 0) + m2 = m[j], a2 = m[j] - a[j]; + else + a2 = m[j], m2 = m[j] + a[j]; + else + if (a[j] > 0) + m2 = m[j], a2 = m[j] + a[j]; + else + a2 = m[j], m2 = m[j] - a[j]; + m[j] = m2; + a[j] = a2; + } + } + CHECK(f); + + // finish decoding the floors +#ifndef STB_VORBIS_NO_DEFER_FLOOR + for (i=0; i < f->channels; ++i) { + if (really_zero_channel[i]) { + memset(f->channel_buffers[i], 0, sizeof(*f->channel_buffers[i]) * n2); + } else { + do_floor(f, map, i, n, f->channel_buffers[i], f->finalY[i], NULL); + } + } +#else + for (i=0; i < f->channels; ++i) { + if (really_zero_channel[i]) { + memset(f->channel_buffers[i], 0, sizeof(*f->channel_buffers[i]) * n2); + } else { + for (j=0; j < n2; ++j) + f->channel_buffers[i][j] *= f->floor_buffers[i][j]; + } + } +#endif + +// INVERSE MDCT + CHECK(f); + for (i=0; i < f->channels; ++i) + inverse_mdct(f->channel_buffers[i], n, f, m->blockflag); + CHECK(f); + + // this shouldn't be necessary, unless we exited on an error + // and want to flush to get to the next packet + flush_packet(f); + + if (f->first_decode) { + // assume we start so first non-discarded sample is sample 0 + // this isn't to spec, but spec would require us to read ahead + // and decode the size of all current frames--could be done, + // but presumably it's not a commonly used feature + f->current_loc = -n2; // start of first frame is positioned for discard + // we might have to discard samples "from" the next frame too, + // if we're lapping a large block then a small at the start? + f->discard_samples_deferred = n - right_end; + f->current_loc_valid = TRUE; + f->first_decode = FALSE; + } else if (f->discard_samples_deferred) { + if (f->discard_samples_deferred >= right_start - left_start) { + f->discard_samples_deferred -= (right_start - left_start); + left_start = right_start; + *p_left = left_start; + } else { + left_start += f->discard_samples_deferred; + *p_left = left_start; + f->discard_samples_deferred = 0; + } + } else if (f->previous_length == 0 && f->current_loc_valid) { + // we're recovering from a seek... that means we're going to discard + // the samples from this packet even though we know our position from + // the last page header, so we need to update the position based on + // the discarded samples here + // but wait, the code below is going to add this in itself even + // on a discard, so we don't need to do it here... + } + + // check if we have ogg information about the sample # for this packet + if (f->last_seg_which == f->end_seg_with_known_loc) { + // if we have a valid current loc, and this is final: + if (f->current_loc_valid && (f->page_flag & PAGEFLAG_last_page)) { + uint32 current_end = f->known_loc_for_packet; + // then let's infer the size of the (probably) short final frame + if (current_end < f->current_loc + (right_end-left_start)) { + if (current_end < f->current_loc) { + // negative truncation, that's impossible! + *len = 0; + } else { + *len = current_end - f->current_loc; + } + *len += left_start; // this doesn't seem right, but has no ill effect on my test files + if (*len > right_end) *len = right_end; // this should never happen + f->current_loc += *len; + return TRUE; + } + } + // otherwise, just set our sample loc + // guess that the ogg granule pos refers to the _middle_ of the + // last frame? + // set f->current_loc to the position of left_start + f->current_loc = f->known_loc_for_packet - (n2-left_start); + f->current_loc_valid = TRUE; + } + if (f->current_loc_valid) + f->current_loc += (right_start - left_start); + + if (f->alloc.alloc_buffer) + assert(f->alloc.alloc_buffer_length_in_bytes == f->temp_offset); + *len = right_end; // ignore samples after the window goes to 0 + CHECK(f); + + return TRUE; +} + +static int vorbis_decode_packet(vorb *f, int *len, int *p_left, int *p_right) +{ + int mode, left_end, right_end; + if (!vorbis_decode_initial(f, p_left, &left_end, p_right, &right_end, &mode)) return 0; + return vorbis_decode_packet_rest(f, len, f->mode_config + mode, *p_left, left_end, *p_right, right_end, p_left); +} + +static int vorbis_finish_frame(stb_vorbis *f, int len, int left, int right) +{ + int prev,i,j; + // we use right&left (the start of the right- and left-window sin()-regions) + // to determine how much to return, rather than inferring from the rules + // (same result, clearer code); 'left' indicates where our sin() window + // starts, therefore where the previous window's right edge starts, and + // therefore where to start mixing from the previous buffer. 'right' + // indicates where our sin() ending-window starts, therefore that's where + // we start saving, and where our returned-data ends. + + // mixin from previous window + if (f->previous_length) { + int i,j, n = f->previous_length; + float *w = get_window(f, n); + for (i=0; i < f->channels; ++i) { + for (j=0; j < n; ++j) + f->channel_buffers[i][left+j] = + f->channel_buffers[i][left+j]*w[ j] + + f->previous_window[i][ j]*w[n-1-j]; + } + } + + prev = f->previous_length; + + // last half of this data becomes previous window + f->previous_length = len - right; + + // @OPTIMIZE: could avoid this copy by double-buffering the + // output (flipping previous_window with channel_buffers), but + // then previous_window would have to be 2x as large, and + // channel_buffers couldn't be temp mem (although they're NOT + // currently temp mem, they could be (unless we want to level + // performance by spreading out the computation)) + for (i=0; i < f->channels; ++i) + for (j=0; right+j < len; ++j) + f->previous_window[i][j] = f->channel_buffers[i][right+j]; + + if (!prev) + // there was no previous packet, so this data isn't valid... + // this isn't entirely true, only the would-have-overlapped data + // isn't valid, but this seems to be what the spec requires + return 0; + + // truncate a short frame + if (len < right) right = len; + + f->samples_output += right-left; + + return right - left; +} + +static int vorbis_pump_first_frame(stb_vorbis *f) +{ + int len, right, left, res; + res = vorbis_decode_packet(f, &len, &left, &right); + if (res) + vorbis_finish_frame(f, len, left, right); + return res; +} + +#ifndef STB_VORBIS_NO_PUSHDATA_API +static int is_whole_packet_present(stb_vorbis *f, int end_page) +{ + // make sure that we have the packet available before continuing... + // this requires a full ogg parse, but we know we can fetch from f->stream + + // instead of coding this out explicitly, we could save the current read state, + // read the next packet with get8() until end-of-packet, check f->eof, then + // reset the state? but that would be slower, esp. since we'd have over 256 bytes + // of state to restore (primarily the page segment table) + + int s = f->next_seg, first = TRUE; + uint8 *p = f->stream; + + if (s != -1) { // if we're not starting the packet with a 'continue on next page' flag + for (; s < f->segment_count; ++s) { + p += f->segments[s]; + if (f->segments[s] < 255) // stop at first short segment + break; + } + // either this continues, or it ends it... + if (end_page) + if (s < f->segment_count-1) return error(f, VORBIS_invalid_stream); + if (s == f->segment_count) + s = -1; // set 'crosses page' flag + if (p > f->stream_end) return error(f, VORBIS_need_more_data); + first = FALSE; + } + for (; s == -1;) { + uint8 *q; + int n; + + // check that we have the page header ready + if (p + 26 >= f->stream_end) return error(f, VORBIS_need_more_data); + // validate the page + if (memcmp(p, ogg_page_header, 4)) return error(f, VORBIS_invalid_stream); + if (p[4] != 0) return error(f, VORBIS_invalid_stream); + if (first) { // the first segment must NOT have 'continued_packet', later ones MUST + if (f->previous_length) + if ((p[5] & PAGEFLAG_continued_packet)) return error(f, VORBIS_invalid_stream); + // if no previous length, we're resynching, so we can come in on a continued-packet, + // which we'll just drop + } else { + if (!(p[5] & PAGEFLAG_continued_packet)) return error(f, VORBIS_invalid_stream); + } + n = p[26]; // segment counts + q = p+27; // q points to segment table + p = q + n; // advance past header + // make sure we've read the segment table + if (p > f->stream_end) return error(f, VORBIS_need_more_data); + for (s=0; s < n; ++s) { + p += q[s]; + if (q[s] < 255) + break; + } + if (end_page) + if (s < n-1) return error(f, VORBIS_invalid_stream); + if (s == n) + s = -1; // set 'crosses page' flag + if (p > f->stream_end) return error(f, VORBIS_need_more_data); + first = FALSE; + } + return TRUE; +} +#endif // !STB_VORBIS_NO_PUSHDATA_API + +static int start_decoder(vorb *f) +{ + uint8 header[6], x,y; + int len,i,j,k, max_submaps = 0; + int longest_floorlist=0; + + // first page, first packet + + if (!start_page(f)) return FALSE; + // validate page flag + if (!(f->page_flag & PAGEFLAG_first_page)) return error(f, VORBIS_invalid_first_page); + if (f->page_flag & PAGEFLAG_last_page) return error(f, VORBIS_invalid_first_page); + if (f->page_flag & PAGEFLAG_continued_packet) return error(f, VORBIS_invalid_first_page); + // check for expected packet length + if (f->segment_count != 1) return error(f, VORBIS_invalid_first_page); + if (f->segments[0] != 30) return error(f, VORBIS_invalid_first_page); + // read packet + // check packet header + if (get8(f) != VORBIS_packet_id) return error(f, VORBIS_invalid_first_page); + if (!getn(f, header, 6)) return error(f, VORBIS_unexpected_eof); + if (!vorbis_validate(header)) return error(f, VORBIS_invalid_first_page); + // vorbis_version + if (get32(f) != 0) return error(f, VORBIS_invalid_first_page); + f->channels = get8(f); if (!f->channels) return error(f, VORBIS_invalid_first_page); + if (f->channels > STB_VORBIS_MAX_CHANNELS) return error(f, VORBIS_too_many_channels); + f->sample_rate = get32(f); if (!f->sample_rate) return error(f, VORBIS_invalid_first_page); + get32(f); // bitrate_maximum + get32(f); // bitrate_nominal + get32(f); // bitrate_minimum + x = get8(f); + { + int log0,log1; + log0 = x & 15; + log1 = x >> 4; + f->blocksize_0 = 1 << log0; + f->blocksize_1 = 1 << log1; + if (log0 < 6 || log0 > 13) return error(f, VORBIS_invalid_setup); + if (log1 < 6 || log1 > 13) return error(f, VORBIS_invalid_setup); + if (log0 > log1) return error(f, VORBIS_invalid_setup); + } + + // framing_flag + x = get8(f); + if (!(x & 1)) return error(f, VORBIS_invalid_first_page); + + // second packet! + if (!start_page(f)) return FALSE; + + if (!start_packet(f)) return FALSE; + do { + len = next_segment(f); + skip(f, len); + f->bytes_in_seg = 0; + } while (len); + + // third packet! + if (!start_packet(f)) return FALSE; + + #ifndef STB_VORBIS_NO_PUSHDATA_API + if (IS_PUSH_MODE(f)) { + if (!is_whole_packet_present(f, TRUE)) { + // convert error in ogg header to write type + if (f->error == VORBIS_invalid_stream) + f->error = VORBIS_invalid_setup; + return FALSE; + } + } + #endif + + crc32_init(); // always init it, to avoid multithread race conditions + + if (get8_packet(f) != VORBIS_packet_setup) return error(f, VORBIS_invalid_setup); + for (i=0; i < 6; ++i) header[i] = get8_packet(f); + if (!vorbis_validate(header)) return error(f, VORBIS_invalid_setup); + + // codebooks + + f->codebook_count = get_bits(f,8) + 1; + f->codebooks = (Codebook *) setup_malloc(f, sizeof(*f->codebooks) * f->codebook_count); + if (f->codebooks == NULL) return error(f, VORBIS_outofmem); + memset(f->codebooks, 0, sizeof(*f->codebooks) * f->codebook_count); + for (i=0; i < f->codebook_count; ++i) { + uint32 *values; + int ordered, sorted_count; + int total=0; + uint8 *lengths; + Codebook *c = f->codebooks+i; + CHECK(f); + x = get_bits(f, 8); if (x != 0x42) return error(f, VORBIS_invalid_setup); + x = get_bits(f, 8); if (x != 0x43) return error(f, VORBIS_invalid_setup); + x = get_bits(f, 8); if (x != 0x56) return error(f, VORBIS_invalid_setup); + x = get_bits(f, 8); + c->dimensions = (get_bits(f, 8)<<8) + x; + x = get_bits(f, 8); + y = get_bits(f, 8); + c->entries = (get_bits(f, 8)<<16) + (y<<8) + x; + ordered = get_bits(f,1); + c->sparse = ordered ? 0 : get_bits(f,1); + + if (c->dimensions == 0 && c->entries != 0) return error(f, VORBIS_invalid_setup); + + if (c->sparse) + lengths = (uint8 *) setup_temp_malloc(f, c->entries); + else + lengths = c->codeword_lengths = (uint8 *) setup_malloc(f, c->entries); + + if (!lengths) return error(f, VORBIS_outofmem); + + if (ordered) { + int current_entry = 0; + int current_length = get_bits(f,5) + 1; + while (current_entry < c->entries) { + int limit = c->entries - current_entry; + int n = get_bits(f, ilog(limit)); + if (current_entry + n > (int) c->entries) { return error(f, VORBIS_invalid_setup); } + memset(lengths + current_entry, current_length, n); + current_entry += n; + ++current_length; + } + } else { + for (j=0; j < c->entries; ++j) { + int present = c->sparse ? get_bits(f,1) : 1; + if (present) { + lengths[j] = get_bits(f, 5) + 1; + ++total; + if (lengths[j] == 32) + return error(f, VORBIS_invalid_setup); + } else { + lengths[j] = NO_CODE; + } + } + } + + if (c->sparse && total >= c->entries >> 2) { + // convert sparse items to non-sparse! + if (c->entries > (int) f->setup_temp_memory_required) + f->setup_temp_memory_required = c->entries; + + c->codeword_lengths = (uint8 *) setup_malloc(f, c->entries); + if (c->codeword_lengths == NULL) return error(f, VORBIS_outofmem); + memcpy(c->codeword_lengths, lengths, c->entries); + setup_temp_free(f, lengths, c->entries); // note this is only safe if there have been no intervening temp mallocs! + lengths = c->codeword_lengths; + c->sparse = 0; + } + + // compute the size of the sorted tables + if (c->sparse) { + sorted_count = total; + } else { + sorted_count = 0; + #ifndef STB_VORBIS_NO_HUFFMAN_BINARY_SEARCH + for (j=0; j < c->entries; ++j) + if (lengths[j] > STB_VORBIS_FAST_HUFFMAN_LENGTH && lengths[j] != NO_CODE) + ++sorted_count; + #endif + } + + c->sorted_entries = sorted_count; + values = NULL; + + CHECK(f); + if (!c->sparse) { + c->codewords = (uint32 *) setup_malloc(f, sizeof(c->codewords[0]) * c->entries); + if (!c->codewords) return error(f, VORBIS_outofmem); + } else { + unsigned int size; + if (c->sorted_entries) { + c->codeword_lengths = (uint8 *) setup_malloc(f, c->sorted_entries); + if (!c->codeword_lengths) return error(f, VORBIS_outofmem); + c->codewords = (uint32 *) setup_temp_malloc(f, sizeof(*c->codewords) * c->sorted_entries); + if (!c->codewords) return error(f, VORBIS_outofmem); + values = (uint32 *) setup_temp_malloc(f, sizeof(*values) * c->sorted_entries); + if (!values) return error(f, VORBIS_outofmem); + } + size = c->entries + (sizeof(*c->codewords) + sizeof(*values)) * c->sorted_entries; + if (size > f->setup_temp_memory_required) + f->setup_temp_memory_required = size; + } + + if (!compute_codewords(c, lengths, c->entries, values)) { + if (c->sparse) setup_temp_free(f, values, 0); + return error(f, VORBIS_invalid_setup); + } + + if (c->sorted_entries) { + // allocate an extra slot for sentinels + c->sorted_codewords = (uint32 *) setup_malloc(f, sizeof(*c->sorted_codewords) * (c->sorted_entries+1)); + if (c->sorted_codewords == NULL) return error(f, VORBIS_outofmem); + // allocate an extra slot at the front so that c->sorted_values[-1] is defined + // so that we can catch that case without an extra if + c->sorted_values = ( int *) setup_malloc(f, sizeof(*c->sorted_values ) * (c->sorted_entries+1)); + if (c->sorted_values == NULL) return error(f, VORBIS_outofmem); + ++c->sorted_values; + c->sorted_values[-1] = -1; + compute_sorted_huffman(c, lengths, values); + } + + if (c->sparse) { + setup_temp_free(f, values, sizeof(*values)*c->sorted_entries); + setup_temp_free(f, c->codewords, sizeof(*c->codewords)*c->sorted_entries); + setup_temp_free(f, lengths, c->entries); + c->codewords = NULL; + } + + compute_accelerated_huffman(c); + + CHECK(f); + c->lookup_type = get_bits(f, 4); + if (c->lookup_type > 2) return error(f, VORBIS_invalid_setup); + if (c->lookup_type > 0) { + uint16 *mults; + c->minimum_value = float32_unpack(get_bits(f, 32)); + c->delta_value = float32_unpack(get_bits(f, 32)); + c->value_bits = get_bits(f, 4)+1; + c->sequence_p = get_bits(f,1); + if (c->lookup_type == 1) { + c->lookup_values = lookup1_values(c->entries, c->dimensions); + } else { + c->lookup_values = c->entries * c->dimensions; + } + if (c->lookup_values == 0) return error(f, VORBIS_invalid_setup); + mults = (uint16 *) setup_temp_malloc(f, sizeof(mults[0]) * c->lookup_values); + if (mults == NULL) return error(f, VORBIS_outofmem); + for (j=0; j < (int) c->lookup_values; ++j) { + int q = get_bits(f, c->value_bits); + if (q == EOP) { setup_temp_free(f,mults,sizeof(mults[0])*c->lookup_values); return error(f, VORBIS_invalid_setup); } + mults[j] = q; + } + +#ifndef STB_VORBIS_DIVIDES_IN_CODEBOOK + if (c->lookup_type == 1) { + int len, sparse = c->sparse; + float last=0; + // pre-expand the lookup1-style multiplicands, to avoid a divide in the inner loop + if (sparse) { + if (c->sorted_entries == 0) goto skip; + c->multiplicands = (codetype *) setup_malloc(f, sizeof(c->multiplicands[0]) * c->sorted_entries * c->dimensions); + } else + c->multiplicands = (codetype *) setup_malloc(f, sizeof(c->multiplicands[0]) * c->entries * c->dimensions); + if (c->multiplicands == NULL) { setup_temp_free(f,mults,sizeof(mults[0])*c->lookup_values); return error(f, VORBIS_outofmem); } + len = sparse ? c->sorted_entries : c->entries; + for (j=0; j < len; ++j) { + unsigned int z = sparse ? c->sorted_values[j] : j; + unsigned int div=1; + for (k=0; k < c->dimensions; ++k) { + int off = (z / div) % c->lookup_values; + float val = mults[off]; + val = mults[off]*c->delta_value + c->minimum_value + last; + c->multiplicands[j*c->dimensions + k] = val; + if (c->sequence_p) + last = val; + if (k+1 < c->dimensions) { + if (div > UINT_MAX / (unsigned int) c->lookup_values) { + setup_temp_free(f, mults,sizeof(mults[0])*c->lookup_values); + return error(f, VORBIS_invalid_setup); + } + div *= c->lookup_values; + } + } + } + c->lookup_type = 2; + } + else +#endif + { + float last=0; + CHECK(f); + c->multiplicands = (codetype *) setup_malloc(f, sizeof(c->multiplicands[0]) * c->lookup_values); + if (c->multiplicands == NULL) { setup_temp_free(f, mults,sizeof(mults[0])*c->lookup_values); return error(f, VORBIS_outofmem); } + for (j=0; j < (int) c->lookup_values; ++j) { + float val = mults[j] * c->delta_value + c->minimum_value + last; + c->multiplicands[j] = val; + if (c->sequence_p) + last = val; + } + } +#ifndef STB_VORBIS_DIVIDES_IN_CODEBOOK + skip:; +#endif + setup_temp_free(f, mults, sizeof(mults[0])*c->lookup_values); + + CHECK(f); + } + CHECK(f); + } + + // time domain transfers (notused) + + x = get_bits(f, 6) + 1; + for (i=0; i < x; ++i) { + uint32 z = get_bits(f, 16); + if (z != 0) return error(f, VORBIS_invalid_setup); + } + + // Floors + f->floor_count = get_bits(f, 6)+1; + f->floor_config = (Floor *) setup_malloc(f, f->floor_count * sizeof(*f->floor_config)); + if (f->floor_config == NULL) return error(f, VORBIS_outofmem); + for (i=0; i < f->floor_count; ++i) { + f->floor_types[i] = get_bits(f, 16); + if (f->floor_types[i] > 1) return error(f, VORBIS_invalid_setup); + if (f->floor_types[i] == 0) { + Floor0 *g = &f->floor_config[i].floor0; + g->order = get_bits(f,8); + g->rate = get_bits(f,16); + g->bark_map_size = get_bits(f,16); + g->amplitude_bits = get_bits(f,6); + g->amplitude_offset = get_bits(f,8); + g->number_of_books = get_bits(f,4) + 1; + for (j=0; j < g->number_of_books; ++j) + g->book_list[j] = get_bits(f,8); + return error(f, VORBIS_feature_not_supported); + } else { + stbv__floor_ordering p[31*8+2]; + Floor1 *g = &f->floor_config[i].floor1; + int max_class = -1; + g->partitions = get_bits(f, 5); + for (j=0; j < g->partitions; ++j) { + g->partition_class_list[j] = get_bits(f, 4); + if (g->partition_class_list[j] > max_class) + max_class = g->partition_class_list[j]; + } + for (j=0; j <= max_class; ++j) { + g->class_dimensions[j] = get_bits(f, 3)+1; + g->class_subclasses[j] = get_bits(f, 2); + if (g->class_subclasses[j]) { + g->class_masterbooks[j] = get_bits(f, 8); + if (g->class_masterbooks[j] >= f->codebook_count) return error(f, VORBIS_invalid_setup); + } + for (k=0; k < 1 << g->class_subclasses[j]; ++k) { + g->subclass_books[j][k] = get_bits(f,8)-1; + if (g->subclass_books[j][k] >= f->codebook_count) return error(f, VORBIS_invalid_setup); + } + } + g->floor1_multiplier = get_bits(f,2)+1; + g->rangebits = get_bits(f,4); + g->Xlist[0] = 0; + g->Xlist[1] = 1 << g->rangebits; + g->values = 2; + for (j=0; j < g->partitions; ++j) { + int c = g->partition_class_list[j]; + for (k=0; k < g->class_dimensions[c]; ++k) { + g->Xlist[g->values] = get_bits(f, g->rangebits); + ++g->values; + } + } + // precompute the sorting + for (j=0; j < g->values; ++j) { + p[j].x = g->Xlist[j]; + p[j].id = j; + } + qsort(p, g->values, sizeof(p[0]), point_compare); + for (j=0; j < g->values; ++j) + g->sorted_order[j] = (uint8) p[j].id; + // precompute the neighbors + for (j=2; j < g->values; ++j) { + int low,hi; + neighbors(g->Xlist, j, &low,&hi); + g->neighbors[j][0] = low; + g->neighbors[j][1] = hi; + } + + if (g->values > longest_floorlist) + longest_floorlist = g->values; + } + } + + // Residue + f->residue_count = get_bits(f, 6)+1; + f->residue_config = (Residue *) setup_malloc(f, f->residue_count * sizeof(f->residue_config[0])); + if (f->residue_config == NULL) return error(f, VORBIS_outofmem); + memset(f->residue_config, 0, f->residue_count * sizeof(f->residue_config[0])); + for (i=0; i < f->residue_count; ++i) { + uint8 residue_cascade[64]; + Residue *r = f->residue_config+i; + f->residue_types[i] = get_bits(f, 16); + if (f->residue_types[i] > 2) return error(f, VORBIS_invalid_setup); + r->begin = get_bits(f, 24); + r->end = get_bits(f, 24); + if (r->end < r->begin) return error(f, VORBIS_invalid_setup); + r->part_size = get_bits(f,24)+1; + r->classifications = get_bits(f,6)+1; + r->classbook = get_bits(f,8); + if (r->classbook >= f->codebook_count) return error(f, VORBIS_invalid_setup); + for (j=0; j < r->classifications; ++j) { + uint8 high_bits=0; + uint8 low_bits=get_bits(f,3); + if (get_bits(f,1)) + high_bits = get_bits(f,5); + residue_cascade[j] = high_bits*8 + low_bits; + } + r->residue_books = (short (*)[8]) setup_malloc(f, sizeof(r->residue_books[0]) * r->classifications); + if (r->residue_books == NULL) return error(f, VORBIS_outofmem); + for (j=0; j < r->classifications; ++j) { + for (k=0; k < 8; ++k) { + if (residue_cascade[j] & (1 << k)) { + r->residue_books[j][k] = get_bits(f, 8); + if (r->residue_books[j][k] >= f->codebook_count) return error(f, VORBIS_invalid_setup); + } else { + r->residue_books[j][k] = -1; + } + } + } + // precompute the classifications[] array to avoid inner-loop mod/divide + // call it 'classdata' since we already have r->classifications + r->classdata = (uint8 **) setup_malloc(f, sizeof(*r->classdata) * f->codebooks[r->classbook].entries); + if (!r->classdata) return error(f, VORBIS_outofmem); + memset(r->classdata, 0, sizeof(*r->classdata) * f->codebooks[r->classbook].entries); + for (j=0; j < f->codebooks[r->classbook].entries; ++j) { + int classwords = f->codebooks[r->classbook].dimensions; + int temp = j; + r->classdata[j] = (uint8 *) setup_malloc(f, sizeof(r->classdata[j][0]) * classwords); + if (r->classdata[j] == NULL) return error(f, VORBIS_outofmem); + for (k=classwords-1; k >= 0; --k) { + r->classdata[j][k] = temp % r->classifications; + temp /= r->classifications; + } + } + } + + f->mapping_count = get_bits(f,6)+1; + f->mapping = (Mapping *) setup_malloc(f, f->mapping_count * sizeof(*f->mapping)); + if (f->mapping == NULL) return error(f, VORBIS_outofmem); + memset(f->mapping, 0, f->mapping_count * sizeof(*f->mapping)); + for (i=0; i < f->mapping_count; ++i) { + Mapping *m = f->mapping + i; + int mapping_type = get_bits(f,16); + if (mapping_type != 0) return error(f, VORBIS_invalid_setup); + m->chan = (MappingChannel *) setup_malloc(f, f->channels * sizeof(*m->chan)); + if (m->chan == NULL) return error(f, VORBIS_outofmem); + if (get_bits(f,1)) + m->submaps = get_bits(f,4)+1; + else + m->submaps = 1; + if (m->submaps > max_submaps) + max_submaps = m->submaps; + if (get_bits(f,1)) { + m->coupling_steps = get_bits(f,8)+1; + for (k=0; k < m->coupling_steps; ++k) { + m->chan[k].magnitude = get_bits(f, ilog(f->channels-1)); + m->chan[k].angle = get_bits(f, ilog(f->channels-1)); + if (m->chan[k].magnitude >= f->channels) return error(f, VORBIS_invalid_setup); + if (m->chan[k].angle >= f->channels) return error(f, VORBIS_invalid_setup); + if (m->chan[k].magnitude == m->chan[k].angle) return error(f, VORBIS_invalid_setup); + } + } else + m->coupling_steps = 0; + + // reserved field + if (get_bits(f,2)) return error(f, VORBIS_invalid_setup); + if (m->submaps > 1) { + for (j=0; j < f->channels; ++j) { + m->chan[j].mux = get_bits(f, 4); + if (m->chan[j].mux >= m->submaps) return error(f, VORBIS_invalid_setup); + } + } else + // @SPECIFICATION: this case is missing from the spec + for (j=0; j < f->channels; ++j) + m->chan[j].mux = 0; + + for (j=0; j < m->submaps; ++j) { + get_bits(f,8); // discard + m->submap_floor[j] = get_bits(f,8); + m->submap_residue[j] = get_bits(f,8); + if (m->submap_floor[j] >= f->floor_count) return error(f, VORBIS_invalid_setup); + if (m->submap_residue[j] >= f->residue_count) return error(f, VORBIS_invalid_setup); + } + } + + // Modes + f->mode_count = get_bits(f, 6)+1; + for (i=0; i < f->mode_count; ++i) { + Mode *m = f->mode_config+i; + m->blockflag = get_bits(f,1); + m->windowtype = get_bits(f,16); + m->transformtype = get_bits(f,16); + m->mapping = get_bits(f,8); + if (m->windowtype != 0) return error(f, VORBIS_invalid_setup); + if (m->transformtype != 0) return error(f, VORBIS_invalid_setup); + if (m->mapping >= f->mapping_count) return error(f, VORBIS_invalid_setup); + } + + flush_packet(f); + + f->previous_length = 0; + + for (i=0; i < f->channels; ++i) { + f->channel_buffers[i] = (float *) setup_malloc(f, sizeof(float) * f->blocksize_1); + f->previous_window[i] = (float *) setup_malloc(f, sizeof(float) * f->blocksize_1/2); + f->finalY[i] = (int16 *) setup_malloc(f, sizeof(int16) * longest_floorlist); + if (f->channel_buffers[i] == NULL || f->previous_window[i] == NULL || f->finalY[i] == NULL) return error(f, VORBIS_outofmem); + memset(f->channel_buffers[i], 0, sizeof(float) * f->blocksize_1); + #ifdef STB_VORBIS_NO_DEFER_FLOOR + f->floor_buffers[i] = (float *) setup_malloc(f, sizeof(float) * f->blocksize_1/2); + if (f->floor_buffers[i] == NULL) return error(f, VORBIS_outofmem); + #endif + } + + if (!init_blocksize(f, 0, f->blocksize_0)) return FALSE; + if (!init_blocksize(f, 1, f->blocksize_1)) return FALSE; + f->blocksize[0] = f->blocksize_0; + f->blocksize[1] = f->blocksize_1; + +#ifdef STB_VORBIS_DIVIDE_TABLE + if (integer_divide_table[1][1]==0) + for (i=0; i < DIVTAB_NUMER; ++i) + for (j=1; j < DIVTAB_DENOM; ++j) + integer_divide_table[i][j] = i / j; +#endif + + // compute how much temporary memory is needed + + // 1. + { + uint32 imdct_mem = (f->blocksize_1 * sizeof(float) >> 1); + uint32 classify_mem; + int i,max_part_read=0; + for (i=0; i < f->residue_count; ++i) { + Residue *r = f->residue_config + i; + unsigned int actual_size = f->blocksize_1 / 2; + unsigned int limit_r_begin = r->begin < actual_size ? r->begin : actual_size; + unsigned int limit_r_end = r->end < actual_size ? r->end : actual_size; + int n_read = limit_r_end - limit_r_begin; + int part_read = n_read / r->part_size; + if (part_read > max_part_read) + max_part_read = part_read; + } + #ifndef STB_VORBIS_DIVIDES_IN_RESIDUE + classify_mem = f->channels * (sizeof(void*) + max_part_read * sizeof(uint8 *)); + #else + classify_mem = f->channels * (sizeof(void*) + max_part_read * sizeof(int *)); + #endif + + // maximum reasonable partition size is f->blocksize_1 + + f->temp_memory_required = classify_mem; + if (imdct_mem > f->temp_memory_required) + f->temp_memory_required = imdct_mem; + } + + f->first_decode = TRUE; + + if (f->alloc.alloc_buffer) { + assert(f->temp_offset == f->alloc.alloc_buffer_length_in_bytes); + // check if there's enough temp memory so we don't error later + if (f->setup_offset + sizeof(*f) + f->temp_memory_required > (unsigned) f->temp_offset) + return error(f, VORBIS_outofmem); + } + + f->first_audio_page_offset = stb_vorbis_get_file_offset(f); + + return TRUE; +} + +static void vorbis_deinit(stb_vorbis *p) +{ + int i,j; + if (p->residue_config) { + for (i=0; i < p->residue_count; ++i) { + Residue *r = p->residue_config+i; + if (r->classdata) { + for (j=0; j < p->codebooks[r->classbook].entries; ++j) + setup_free(p, r->classdata[j]); + setup_free(p, r->classdata); + } + setup_free(p, r->residue_books); + } + } + + if (p->codebooks) { + CHECK(p); + for (i=0; i < p->codebook_count; ++i) { + Codebook *c = p->codebooks + i; + setup_free(p, c->codeword_lengths); + setup_free(p, c->multiplicands); + setup_free(p, c->codewords); + setup_free(p, c->sorted_codewords); + // c->sorted_values[-1] is the first entry in the array + setup_free(p, c->sorted_values ? c->sorted_values-1 : NULL); + } + setup_free(p, p->codebooks); + } + setup_free(p, p->floor_config); + setup_free(p, p->residue_config); + if (p->mapping) { + for (i=0; i < p->mapping_count; ++i) + setup_free(p, p->mapping[i].chan); + setup_free(p, p->mapping); + } + CHECK(p); + for (i=0; i < p->channels && i < STB_VORBIS_MAX_CHANNELS; ++i) { + setup_free(p, p->channel_buffers[i]); + setup_free(p, p->previous_window[i]); + #ifdef STB_VORBIS_NO_DEFER_FLOOR + setup_free(p, p->floor_buffers[i]); + #endif + setup_free(p, p->finalY[i]); + } + for (i=0; i < 2; ++i) { + setup_free(p, p->A[i]); + setup_free(p, p->B[i]); + setup_free(p, p->C[i]); + setup_free(p, p->window[i]); + setup_free(p, p->bit_reverse[i]); + } + #ifndef STB_VORBIS_NO_STDIO + if (p->close_on_free) fclose(p->f); + #endif +} + +void stb_vorbis_close(stb_vorbis *p) +{ + if (p == NULL) return; + vorbis_deinit(p); + setup_free(p,p); +} + +static void vorbis_init(stb_vorbis *p, const stb_vorbis_alloc *z) +{ + memset(p, 0, sizeof(*p)); // NULL out all malloc'd pointers to start + if (z) { + p->alloc = *z; + p->alloc.alloc_buffer_length_in_bytes = (p->alloc.alloc_buffer_length_in_bytes+3) & ~3; + p->temp_offset = p->alloc.alloc_buffer_length_in_bytes; + } + p->eof = 0; + p->error = VORBIS__no_error; + p->stream = NULL; + p->codebooks = NULL; + p->page_crc_tests = -1; + #ifndef STB_VORBIS_NO_STDIO + p->close_on_free = FALSE; + p->f = NULL; + #endif +} + +int stb_vorbis_get_sample_offset(stb_vorbis *f) +{ + if (f->current_loc_valid) + return f->current_loc; + else + return -1; +} + +stb_vorbis_info stb_vorbis_get_info(stb_vorbis *f) +{ + stb_vorbis_info d; + d.channels = f->channels; + d.sample_rate = f->sample_rate; + d.setup_memory_required = f->setup_memory_required; + d.setup_temp_memory_required = f->setup_temp_memory_required; + d.temp_memory_required = f->temp_memory_required; + d.max_frame_size = f->blocksize_1 >> 1; + return d; +} + +int stb_vorbis_get_error(stb_vorbis *f) +{ + int e = f->error; + f->error = VORBIS__no_error; + return e; +} + +static stb_vorbis * vorbis_alloc(stb_vorbis *f) +{ + stb_vorbis *p = (stb_vorbis *) setup_malloc(f, sizeof(*p)); + return p; +} + +#ifndef STB_VORBIS_NO_PUSHDATA_API + +void stb_vorbis_flush_pushdata(stb_vorbis *f) +{ + f->previous_length = 0; + f->page_crc_tests = 0; + f->discard_samples_deferred = 0; + f->current_loc_valid = FALSE; + f->first_decode = FALSE; + f->samples_output = 0; + f->channel_buffer_start = 0; + f->channel_buffer_end = 0; +} + +static int vorbis_search_for_page_pushdata(vorb *f, uint8 *data, int data_len) +{ + int i,n; + for (i=0; i < f->page_crc_tests; ++i) + f->scan[i].bytes_done = 0; + + // if we have room for more scans, search for them first, because + // they may cause us to stop early if their header is incomplete + if (f->page_crc_tests < STB_VORBIS_PUSHDATA_CRC_COUNT) { + if (data_len < 4) return 0; + data_len -= 3; // need to look for 4-byte sequence, so don't miss + // one that straddles a boundary + for (i=0; i < data_len; ++i) { + if (data[i] == 0x4f) { + if (0==memcmp(data+i, ogg_page_header, 4)) { + int j,len; + uint32 crc; + // make sure we have the whole page header + if (i+26 >= data_len || i+27+data[i+26] >= data_len) { + // only read up to this page start, so hopefully we'll + // have the whole page header start next time + data_len = i; + break; + } + // ok, we have it all; compute the length of the page + len = 27 + data[i+26]; + for (j=0; j < data[i+26]; ++j) + len += data[i+27+j]; + // scan everything up to the embedded crc (which we must 0) + crc = 0; + for (j=0; j < 22; ++j) + crc = crc32_update(crc, data[i+j]); + // now process 4 0-bytes + for ( ; j < 26; ++j) + crc = crc32_update(crc, 0); + // len is the total number of bytes we need to scan + n = f->page_crc_tests++; + f->scan[n].bytes_left = len-j; + f->scan[n].crc_so_far = crc; + f->scan[n].goal_crc = data[i+22] + (data[i+23] << 8) + (data[i+24]<<16) + (data[i+25]<<24); + // if the last frame on a page is continued to the next, then + // we can't recover the sample_loc immediately + if (data[i+27+data[i+26]-1] == 255) + f->scan[n].sample_loc = ~0; + else + f->scan[n].sample_loc = data[i+6] + (data[i+7] << 8) + (data[i+ 8]<<16) + (data[i+ 9]<<24); + f->scan[n].bytes_done = i+j; + if (f->page_crc_tests == STB_VORBIS_PUSHDATA_CRC_COUNT) + break; + // keep going if we still have room for more + } + } + } + } + + for (i=0; i < f->page_crc_tests;) { + uint32 crc; + int j; + int n = f->scan[i].bytes_done; + int m = f->scan[i].bytes_left; + if (m > data_len - n) m = data_len - n; + // m is the bytes to scan in the current chunk + crc = f->scan[i].crc_so_far; + for (j=0; j < m; ++j) + crc = crc32_update(crc, data[n+j]); + f->scan[i].bytes_left -= m; + f->scan[i].crc_so_far = crc; + if (f->scan[i].bytes_left == 0) { + // does it match? + if (f->scan[i].crc_so_far == f->scan[i].goal_crc) { + // Houston, we have page + data_len = n+m; // consumption amount is wherever that scan ended + f->page_crc_tests = -1; // drop out of page scan mode + f->previous_length = 0; // decode-but-don't-output one frame + f->next_seg = -1; // start a new page + f->current_loc = f->scan[i].sample_loc; // set the current sample location + // to the amount we'd have decoded had we decoded this page + f->current_loc_valid = f->current_loc != ~0U; + return data_len; + } + // delete entry + f->scan[i] = f->scan[--f->page_crc_tests]; + } else { + ++i; + } + } + + return data_len; +} + +// return value: number of bytes we used +int stb_vorbis_decode_frame_pushdata( + stb_vorbis *f, // the file we're decoding + const uint8 *data, int data_len, // the memory available for decoding + int *channels, // place to write number of float * buffers + float ***output, // place to write float ** array of float * buffers + int *samples // place to write number of output samples + ) +{ + int i; + int len,right,left; + + if (!IS_PUSH_MODE(f)) return error(f, VORBIS_invalid_api_mixing); + + if (f->page_crc_tests >= 0) { + *samples = 0; + return vorbis_search_for_page_pushdata(f, (uint8 *) data, data_len); + } + + f->stream = (uint8 *) data; + f->stream_end = (uint8 *) data + data_len; + f->error = VORBIS__no_error; + + // check that we have the entire packet in memory + if (!is_whole_packet_present(f, FALSE)) { + *samples = 0; + return 0; + } + + if (!vorbis_decode_packet(f, &len, &left, &right)) { + // save the actual error we encountered + enum STBVorbisError error = f->error; + if (error == VORBIS_bad_packet_type) { + // flush and resynch + f->error = VORBIS__no_error; + while (get8_packet(f) != EOP) + if (f->eof) break; + *samples = 0; + return (int) (f->stream - data); + } + if (error == VORBIS_continued_packet_flag_invalid) { + if (f->previous_length == 0) { + // we may be resynching, in which case it's ok to hit one + // of these; just discard the packet + f->error = VORBIS__no_error; + while (get8_packet(f) != EOP) + if (f->eof) break; + *samples = 0; + return (int) (f->stream - data); + } + } + // if we get an error while parsing, what to do? + // well, it DEFINITELY won't work to continue from where we are! + stb_vorbis_flush_pushdata(f); + // restore the error that actually made us bail + f->error = error; + *samples = 0; + return 1; + } + + // success! + len = vorbis_finish_frame(f, len, left, right); + for (i=0; i < f->channels; ++i) + f->outputs[i] = f->channel_buffers[i] + left; + + if (channels) *channels = f->channels; + *samples = len; + *output = f->outputs; + return (int) (f->stream - data); +} + +stb_vorbis *stb_vorbis_open_pushdata( + const unsigned char *data, int data_len, // the memory available for decoding + int *data_used, // only defined if result is not NULL + int *error, const stb_vorbis_alloc *alloc) +{ + stb_vorbis *f, p; + vorbis_init(&p, alloc); + p.stream = (uint8 *) data; + p.stream_end = (uint8 *) data + data_len; + p.push_mode = TRUE; + if (!start_decoder(&p)) { + if (p.eof) + *error = VORBIS_need_more_data; + else + *error = p.error; + return NULL; + } + f = vorbis_alloc(&p); + if (f) { + *f = p; + *data_used = (int) (f->stream - data); + *error = 0; + return f; + } else { + vorbis_deinit(&p); + return NULL; + } +} +#endif // STB_VORBIS_NO_PUSHDATA_API + +unsigned int stb_vorbis_get_file_offset(stb_vorbis *f) +{ + #ifndef STB_VORBIS_NO_PUSHDATA_API + if (f->push_mode) return 0; + #endif + if (USE_MEMORY(f)) return (unsigned int) (f->stream - f->stream_start); + #ifndef STB_VORBIS_NO_STDIO + return (unsigned int) (ftell(f->f) - f->f_start); + #endif +} + +#ifndef STB_VORBIS_NO_PULLDATA_API +// +// DATA-PULLING API +// + +static uint32 vorbis_find_page(stb_vorbis *f, uint32 *end, uint32 *last) +{ + for(;;) { + int n; + if (f->eof) return 0; + n = get8(f); + if (n == 0x4f) { // page header candidate + unsigned int retry_loc = stb_vorbis_get_file_offset(f); + int i; + // check if we're off the end of a file_section stream + if (retry_loc - 25 > f->stream_len) + return 0; + // check the rest of the header + for (i=1; i < 4; ++i) + if (get8(f) != ogg_page_header[i]) + break; + if (f->eof) return 0; + if (i == 4) { + uint8 header[27]; + uint32 i, crc, goal, len; + for (i=0; i < 4; ++i) + header[i] = ogg_page_header[i]; + for (; i < 27; ++i) + header[i] = get8(f); + if (f->eof) return 0; + if (header[4] != 0) goto invalid; + goal = header[22] + (header[23] << 8) + (header[24]<<16) + (header[25]<<24); + for (i=22; i < 26; ++i) + header[i] = 0; + crc = 0; + for (i=0; i < 27; ++i) + crc = crc32_update(crc, header[i]); + len = 0; + for (i=0; i < header[26]; ++i) { + int s = get8(f); + crc = crc32_update(crc, s); + len += s; + } + if (len && f->eof) return 0; + for (i=0; i < len; ++i) + crc = crc32_update(crc, get8(f)); + // finished parsing probable page + if (crc == goal) { + // we could now check that it's either got the last + // page flag set, OR it's followed by the capture + // pattern, but I guess TECHNICALLY you could have + // a file with garbage between each ogg page and recover + // from it automatically? So even though that paranoia + // might decrease the chance of an invalid decode by + // another 2^32, not worth it since it would hose those + // invalid-but-useful files? + if (end) + *end = stb_vorbis_get_file_offset(f); + if (last) { + if (header[5] & 0x04) + *last = 1; + else + *last = 0; + } + set_file_offset(f, retry_loc-1); + return 1; + } + } + invalid: + // not a valid page, so rewind and look for next one + set_file_offset(f, retry_loc); + } + } +} + + +#define SAMPLE_unknown 0xffffffff + +// seeking is implemented with a binary search, which narrows down the range to +// 64K, before using a linear search (because finding the synchronization +// pattern can be expensive, and the chance we'd find the end page again is +// relatively high for small ranges) +// +// two initial interpolation-style probes are used at the start of the search +// to try to bound either side of the binary search sensibly, while still +// working in O(log n) time if they fail. + +static int get_seek_page_info(stb_vorbis *f, ProbedPage *z) +{ + uint8 header[27], lacing[255]; + int i,len; + + // record where the page starts + z->page_start = stb_vorbis_get_file_offset(f); + + // parse the header + getn(f, header, 27); + if (header[0] != 'O' || header[1] != 'g' || header[2] != 'g' || header[3] != 'S') + return 0; + getn(f, lacing, header[26]); + + // determine the length of the payload + len = 0; + for (i=0; i < header[26]; ++i) + len += lacing[i]; + + // this implies where the page ends + z->page_end = z->page_start + 27 + header[26] + len; + + // read the last-decoded sample out of the data + z->last_decoded_sample = header[6] + (header[7] << 8) + (header[8] << 16) + (header[9] << 24); + + // restore file state to where we were + set_file_offset(f, z->page_start); + return 1; +} + +// rarely used function to seek back to the preceeding page while finding the +// start of a packet +static int go_to_page_before(stb_vorbis *f, unsigned int limit_offset) +{ + unsigned int previous_safe, end; + + // now we want to seek back 64K from the limit + if (limit_offset >= 65536 && limit_offset-65536 >= f->first_audio_page_offset) + previous_safe = limit_offset - 65536; + else + previous_safe = f->first_audio_page_offset; + + set_file_offset(f, previous_safe); + + while (vorbis_find_page(f, &end, NULL)) { + if (end >= limit_offset && stb_vorbis_get_file_offset(f) < limit_offset) + return 1; + set_file_offset(f, end); + } + + return 0; +} + +// implements the search logic for finding a page and starting decoding. if +// the function succeeds, current_loc_valid will be true and current_loc will +// be less than or equal to the provided sample number (the closer the +// better). +static int seek_to_sample_coarse(stb_vorbis *f, uint32 sample_number) +{ + ProbedPage left, right, mid; + int i, start_seg_with_known_loc, end_pos, page_start; + uint32 delta, stream_length, padding; + double offset, bytes_per_sample; + int probe = 0; + + // find the last page and validate the target sample + stream_length = stb_vorbis_stream_length_in_samples(f); + if (stream_length == 0) return error(f, VORBIS_seek_without_length); + if (sample_number > stream_length) return error(f, VORBIS_seek_invalid); + + // this is the maximum difference between the window-center (which is the + // actual granule position value), and the right-start (which the spec + // indicates should be the granule position (give or take one)). + padding = ((f->blocksize_1 - f->blocksize_0) >> 2); + if (sample_number < padding) + sample_number = 0; + else + sample_number -= padding; + + left = f->p_first; + while (left.last_decoded_sample == ~0U) { + // (untested) the first page does not have a 'last_decoded_sample' + set_file_offset(f, left.page_end); + if (!get_seek_page_info(f, &left)) goto error; + } + + right = f->p_last; + assert(right.last_decoded_sample != ~0U); + + // starting from the start is handled differently + if (sample_number <= left.last_decoded_sample) { + if (stb_vorbis_seek_start(f)) + return 1; + return 0; + } + + while (left.page_end != right.page_start) { + assert(left.page_end < right.page_start); + // search range in bytes + delta = right.page_start - left.page_end; + if (delta <= 65536) { + // there's only 64K left to search - handle it linearly + set_file_offset(f, left.page_end); + } else { + if (probe < 2) { + if (probe == 0) { + // first probe (interpolate) + double data_bytes = right.page_end - left.page_start; + bytes_per_sample = data_bytes / right.last_decoded_sample; + offset = left.page_start + bytes_per_sample * (sample_number - left.last_decoded_sample); + } else { + // second probe (try to bound the other side) + double error = ((double) sample_number - mid.last_decoded_sample) * bytes_per_sample; + if (error >= 0 && error < 8000) error = 8000; + if (error < 0 && error > -8000) error = -8000; + offset += error * 2; + } + + // ensure the offset is valid + if (offset < left.page_end) + offset = left.page_end; + if (offset > right.page_start - 65536) + offset = right.page_start - 65536; + + set_file_offset(f, (unsigned int) offset); + } else { + // binary search for large ranges (offset by 32K to ensure + // we don't hit the right page) + set_file_offset(f, left.page_end + (delta / 2) - 32768); + } + + if (!vorbis_find_page(f, NULL, NULL)) goto error; + } + + for (;;) { + if (!get_seek_page_info(f, &mid)) goto error; + if (mid.last_decoded_sample != ~0U) break; + // (untested) no frames end on this page + set_file_offset(f, mid.page_end); + assert(mid.page_start < right.page_start); + } + + // if we've just found the last page again then we're in a tricky file, + // and we're close enough. + if (mid.page_start == right.page_start) + break; + + if (sample_number < mid.last_decoded_sample) + right = mid; + else + left = mid; + + ++probe; + } + + // seek back to start of the last packet + page_start = left.page_start; + set_file_offset(f, page_start); + if (!start_page(f)) return error(f, VORBIS_seek_failed); + end_pos = f->end_seg_with_known_loc; + assert(end_pos >= 0); + + for (;;) { + for (i = end_pos; i > 0; --i) + if (f->segments[i-1] != 255) + break; + + start_seg_with_known_loc = i; + + if (start_seg_with_known_loc > 0 || !(f->page_flag & PAGEFLAG_continued_packet)) + break; + + // (untested) the final packet begins on an earlier page + if (!go_to_page_before(f, page_start)) + goto error; + + page_start = stb_vorbis_get_file_offset(f); + if (!start_page(f)) goto error; + end_pos = f->segment_count - 1; + } + + // prepare to start decoding + f->current_loc_valid = FALSE; + f->last_seg = FALSE; + f->valid_bits = 0; + f->packet_bytes = 0; + f->bytes_in_seg = 0; + f->previous_length = 0; + f->next_seg = start_seg_with_known_loc; + + for (i = 0; i < start_seg_with_known_loc; i++) + skip(f, f->segments[i]); + + // start decoding (optimizable - this frame is generally discarded) + if (!vorbis_pump_first_frame(f)) + return 0; + if (f->current_loc > sample_number) + return error(f, VORBIS_seek_failed); + return 1; + +error: + // try to restore the file to a valid state + stb_vorbis_seek_start(f); + return error(f, VORBIS_seek_failed); +} + +// the same as vorbis_decode_initial, but without advancing +static int peek_decode_initial(vorb *f, int *p_left_start, int *p_left_end, int *p_right_start, int *p_right_end, int *mode) +{ + int bits_read, bytes_read; + + if (!vorbis_decode_initial(f, p_left_start, p_left_end, p_right_start, p_right_end, mode)) + return 0; + + // either 1 or 2 bytes were read, figure out which so we can rewind + bits_read = 1 + ilog(f->mode_count-1); + if (f->mode_config[*mode].blockflag) + bits_read += 2; + bytes_read = (bits_read + 7) / 8; + + f->bytes_in_seg += bytes_read; + f->packet_bytes -= bytes_read; + skip(f, -bytes_read); + if (f->next_seg == -1) + f->next_seg = f->segment_count - 1; + else + f->next_seg--; + f->valid_bits = 0; + + return 1; +} + +int stb_vorbis_seek_frame(stb_vorbis *f, unsigned int sample_number) +{ + uint32 max_frame_samples; + + if (IS_PUSH_MODE(f)) return error(f, VORBIS_invalid_api_mixing); + + // fast page-level search + if (!seek_to_sample_coarse(f, sample_number)) + return 0; + + assert(f->current_loc_valid); + assert(f->current_loc <= sample_number); + + // linear search for the relevant packet + max_frame_samples = (f->blocksize_1*3 - f->blocksize_0) >> 2; + while (f->current_loc < sample_number) { + int left_start, left_end, right_start, right_end, mode, frame_samples; + if (!peek_decode_initial(f, &left_start, &left_end, &right_start, &right_end, &mode)) + return error(f, VORBIS_seek_failed); + // calculate the number of samples returned by the next frame + frame_samples = right_start - left_start; + if (f->current_loc + frame_samples > sample_number) { + return 1; // the next frame will contain the sample + } else if (f->current_loc + frame_samples + max_frame_samples > sample_number) { + // there's a chance the frame after this could contain the sample + vorbis_pump_first_frame(f); + } else { + // this frame is too early to be relevant + f->current_loc += frame_samples; + f->previous_length = 0; + maybe_start_packet(f); + flush_packet(f); + } + } + // the next frame will start with the sample + assert(f->current_loc == sample_number); + return 1; +} + +int stb_vorbis_seek(stb_vorbis *f, unsigned int sample_number) +{ + if (!stb_vorbis_seek_frame(f, sample_number)) + return 0; + + if (sample_number != f->current_loc) { + int n; + uint32 frame_start = f->current_loc; + stb_vorbis_get_frame_float(f, &n, NULL); + assert(sample_number > frame_start); + assert(f->channel_buffer_start + (int) (sample_number-frame_start) <= f->channel_buffer_end); + f->channel_buffer_start += (sample_number - frame_start); + } + + return 1; +} + +int stb_vorbis_seek_start(stb_vorbis *f) +{ + if (IS_PUSH_MODE(f)) { return error(f, VORBIS_invalid_api_mixing); } + set_file_offset(f, f->first_audio_page_offset); + f->previous_length = 0; + f->first_decode = TRUE; + f->next_seg = -1; + return vorbis_pump_first_frame(f); +} + +unsigned int stb_vorbis_stream_length_in_samples(stb_vorbis *f) +{ + unsigned int restore_offset, previous_safe; + unsigned int end, last_page_loc; + + if (IS_PUSH_MODE(f)) return error(f, VORBIS_invalid_api_mixing); + if (!f->total_samples) { + unsigned int last; + uint32 lo,hi; + char header[6]; + + // first, store the current decode position so we can restore it + restore_offset = stb_vorbis_get_file_offset(f); + + // now we want to seek back 64K from the end (the last page must + // be at most a little less than 64K, but let's allow a little slop) + if (f->stream_len >= 65536 && f->stream_len-65536 >= f->first_audio_page_offset) + previous_safe = f->stream_len - 65536; + else + previous_safe = f->first_audio_page_offset; + + set_file_offset(f, previous_safe); + // previous_safe is now our candidate 'earliest known place that seeking + // to will lead to the final page' + + if (!vorbis_find_page(f, &end, &last)) { + // if we can't find a page, we're hosed! + f->error = VORBIS_cant_find_last_page; + f->total_samples = 0xffffffff; + goto done; + } + + // check if there are more pages + last_page_loc = stb_vorbis_get_file_offset(f); + + // stop when the last_page flag is set, not when we reach eof; + // this allows us to stop short of a 'file_section' end without + // explicitly checking the length of the section + while (!last) { + set_file_offset(f, end); + if (!vorbis_find_page(f, &end, &last)) { + // the last page we found didn't have the 'last page' flag + // set. whoops! + break; + } + previous_safe = last_page_loc+1; + last_page_loc = stb_vorbis_get_file_offset(f); + } + + set_file_offset(f, last_page_loc); + + // parse the header + getn(f, (unsigned char *)header, 6); + // extract the absolute granule position + lo = get32(f); + hi = get32(f); + if (lo == 0xffffffff && hi == 0xffffffff) { + f->error = VORBIS_cant_find_last_page; + f->total_samples = SAMPLE_unknown; + goto done; + } + if (hi) + lo = 0xfffffffe; // saturate + f->total_samples = lo; + + f->p_last.page_start = last_page_loc; + f->p_last.page_end = end; + f->p_last.last_decoded_sample = lo; + + done: + set_file_offset(f, restore_offset); + } + return f->total_samples == SAMPLE_unknown ? 0 : f->total_samples; +} + +float stb_vorbis_stream_length_in_seconds(stb_vorbis *f) +{ + return stb_vorbis_stream_length_in_samples(f) / (float) f->sample_rate; +} + + + +int stb_vorbis_get_frame_float(stb_vorbis *f, int *channels, float ***output) +{ + int len, right,left,i; + if (IS_PUSH_MODE(f)) return error(f, VORBIS_invalid_api_mixing); + + if (!vorbis_decode_packet(f, &len, &left, &right)) { + f->channel_buffer_start = f->channel_buffer_end = 0; + return 0; + } + + len = vorbis_finish_frame(f, len, left, right); + for (i=0; i < f->channels; ++i) + f->outputs[i] = f->channel_buffers[i] + left; + + f->channel_buffer_start = left; + f->channel_buffer_end = left+len; + + if (channels) *channels = f->channels; + if (output) *output = f->outputs; + return len; +} + +#ifndef STB_VORBIS_NO_STDIO + +stb_vorbis * stb_vorbis_open_file_section(FILE *file, int close_on_free, int *error, const stb_vorbis_alloc *alloc, unsigned int length) +{ + stb_vorbis *f, p; + vorbis_init(&p, alloc); + p.f = file; + p.f_start = (uint32) ftell(file); + p.stream_len = length; + p.close_on_free = close_on_free; + if (start_decoder(&p)) { + f = vorbis_alloc(&p); + if (f) { + *f = p; + vorbis_pump_first_frame(f); + return f; + } + } + if (error) *error = p.error; + vorbis_deinit(&p); + return NULL; +} + +stb_vorbis * stb_vorbis_open_file(FILE *file, int close_on_free, int *error, const stb_vorbis_alloc *alloc) +{ + unsigned int len, start; + start = (unsigned int) ftell(file); + fseek(file, 0, SEEK_END); + len = (unsigned int) (ftell(file) - start); + fseek(file, start, SEEK_SET); + return stb_vorbis_open_file_section(file, close_on_free, error, alloc, len); +} + +stb_vorbis * stb_vorbis_open_filename(const char *filename, int *error, const stb_vorbis_alloc *alloc) +{ + FILE *f = fopen(filename, "rb"); + if (f) + return stb_vorbis_open_file(f, TRUE, error, alloc); + if (error) *error = VORBIS_file_open_failure; + return NULL; +} +#endif // STB_VORBIS_NO_STDIO + +stb_vorbis * stb_vorbis_open_memory(const unsigned char *data, int len, int *error, const stb_vorbis_alloc *alloc) +{ + stb_vorbis *f, p; + if (data == NULL) return NULL; + vorbis_init(&p, alloc); + p.stream = (uint8 *) data; + p.stream_end = (uint8 *) data + len; + p.stream_start = (uint8 *) p.stream; + p.stream_len = len; + p.push_mode = FALSE; + if (start_decoder(&p)) { + f = vorbis_alloc(&p); + if (f) { + *f = p; + vorbis_pump_first_frame(f); + if (error) *error = VORBIS__no_error; + return f; + } + } + if (error) *error = p.error; + vorbis_deinit(&p); + return NULL; +} + +#ifndef STB_VORBIS_NO_INTEGER_CONVERSION +#define PLAYBACK_MONO 1 +#define PLAYBACK_LEFT 2 +#define PLAYBACK_RIGHT 4 + +#define L (PLAYBACK_LEFT | PLAYBACK_MONO) +#define C (PLAYBACK_LEFT | PLAYBACK_RIGHT | PLAYBACK_MONO) +#define R (PLAYBACK_RIGHT | PLAYBACK_MONO) + +static int8 channel_position[7][6] = +{ + { 0 }, + { C }, + { L, R }, + { L, C, R }, + { L, R, L, R }, + { L, C, R, L, R }, + { L, C, R, L, R, C }, +}; + + +#ifndef STB_VORBIS_NO_FAST_SCALED_FLOAT + typedef union { + float f; + int i; + } float_conv; + typedef char stb_vorbis_float_size_test[sizeof(float)==4 && sizeof(int) == 4]; + #define FASTDEF(x) float_conv x + // add (1<<23) to convert to int, then divide by 2^SHIFT, then add 0.5/2^SHIFT to round + #define MAGIC(SHIFT) (1.5f * (1 << (23-SHIFT)) + 0.5f/(1 << SHIFT)) + #define ADDEND(SHIFT) (((150-SHIFT) << 23) + (1 << 22)) + #define FAST_SCALED_FLOAT_TO_INT(temp,x,s) (temp.f = (x) + MAGIC(s), temp.i - ADDEND(s)) + #define check_endianness() +#else + #define FAST_SCALED_FLOAT_TO_INT(temp,x,s) ((int) ((x) * (1 << (s)))) + #define check_endianness() + #define FASTDEF(x) +#endif + +static void copy_samples(short *dest, float *src, int len) +{ + int i; + check_endianness(); + for (i=0; i < len; ++i) { + FASTDEF(temp); + int v = FAST_SCALED_FLOAT_TO_INT(temp, src[i],15); + if ((unsigned int) (v + 32768) > 65535) + v = v < 0 ? -32768 : 32767; + dest[i] = v; + } +} + +static void compute_samples(int mask, short *output, int num_c, float **data, int d_offset, int len) +{ + #define BUFFER_SIZE 32 + float buffer[BUFFER_SIZE]; + int i,j,o,n = BUFFER_SIZE; + check_endianness(); + for (o = 0; o < len; o += BUFFER_SIZE) { + memset(buffer, 0, sizeof(buffer)); + if (o + n > len) n = len - o; + for (j=0; j < num_c; ++j) { + if (channel_position[num_c][j] & mask) { + for (i=0; i < n; ++i) + buffer[i] += data[j][d_offset+o+i]; + } + } + for (i=0; i < n; ++i) { + FASTDEF(temp); + int v = FAST_SCALED_FLOAT_TO_INT(temp,buffer[i],15); + if ((unsigned int) (v + 32768) > 65535) + v = v < 0 ? -32768 : 32767; + output[o+i] = v; + } + } +} + +static void compute_stereo_samples(short *output, int num_c, float **data, int d_offset, int len) +{ + #define BUFFER_SIZE 32 + float buffer[BUFFER_SIZE]; + int i,j,o,n = BUFFER_SIZE >> 1; + // o is the offset in the source data + check_endianness(); + for (o = 0; o < len; o += BUFFER_SIZE >> 1) { + // o2 is the offset in the output data + int o2 = o << 1; + memset(buffer, 0, sizeof(buffer)); + if (o + n > len) n = len - o; + for (j=0; j < num_c; ++j) { + int m = channel_position[num_c][j] & (PLAYBACK_LEFT | PLAYBACK_RIGHT); + if (m == (PLAYBACK_LEFT | PLAYBACK_RIGHT)) { + for (i=0; i < n; ++i) { + buffer[i*2+0] += data[j][d_offset+o+i]; + buffer[i*2+1] += data[j][d_offset+o+i]; + } + } else if (m == PLAYBACK_LEFT) { + for (i=0; i < n; ++i) { + buffer[i*2+0] += data[j][d_offset+o+i]; + } + } else if (m == PLAYBACK_RIGHT) { + for (i=0; i < n; ++i) { + buffer[i*2+1] += data[j][d_offset+o+i]; + } + } + } + for (i=0; i < (n<<1); ++i) { + FASTDEF(temp); + int v = FAST_SCALED_FLOAT_TO_INT(temp,buffer[i],15); + if ((unsigned int) (v + 32768) > 65535) + v = v < 0 ? -32768 : 32767; + output[o2+i] = v; + } + } +} + +static void convert_samples_short(int buf_c, short **buffer, int b_offset, int data_c, float **data, int d_offset, int samples) +{ + int i; + if (buf_c != data_c && buf_c <= 2 && data_c <= 6) { + static int channel_selector[3][2] = { {0}, {PLAYBACK_MONO}, {PLAYBACK_LEFT, PLAYBACK_RIGHT} }; + for (i=0; i < buf_c; ++i) + compute_samples(channel_selector[buf_c][i], buffer[i]+b_offset, data_c, data, d_offset, samples); + } else { + int limit = buf_c < data_c ? buf_c : data_c; + for (i=0; i < limit; ++i) + copy_samples(buffer[i]+b_offset, data[i]+d_offset, samples); + for ( ; i < buf_c; ++i) + memset(buffer[i]+b_offset, 0, sizeof(short) * samples); + } +} + +int stb_vorbis_get_frame_short(stb_vorbis *f, int num_c, short **buffer, int num_samples) +{ + float **output; + int len = stb_vorbis_get_frame_float(f, NULL, &output); + if (len > num_samples) len = num_samples; + if (len) + convert_samples_short(num_c, buffer, 0, f->channels, output, 0, len); + return len; +} + +static void convert_channels_short_interleaved(int buf_c, short *buffer, int data_c, float **data, int d_offset, int len) +{ + int i; + check_endianness(); + if (buf_c != data_c && buf_c <= 2 && data_c <= 6) { + assert(buf_c == 2); + for (i=0; i < buf_c; ++i) + compute_stereo_samples(buffer, data_c, data, d_offset, len); + } else { + int limit = buf_c < data_c ? buf_c : data_c; + int j; + for (j=0; j < len; ++j) { + for (i=0; i < limit; ++i) { + FASTDEF(temp); + float f = data[i][d_offset+j]; + int v = FAST_SCALED_FLOAT_TO_INT(temp, f,15);//data[i][d_offset+j],15); + if ((unsigned int) (v + 32768) > 65535) + v = v < 0 ? -32768 : 32767; + *buffer++ = v; + } + for ( ; i < buf_c; ++i) + *buffer++ = 0; + } + } +} + +int stb_vorbis_get_frame_short_interleaved(stb_vorbis *f, int num_c, short *buffer, int num_shorts) +{ + float **output; + int len; + if (num_c == 1) return stb_vorbis_get_frame_short(f,num_c,&buffer, num_shorts); + len = stb_vorbis_get_frame_float(f, NULL, &output); + if (len) { + if (len*num_c > num_shorts) len = num_shorts / num_c; + convert_channels_short_interleaved(num_c, buffer, f->channels, output, 0, len); + } + return len; +} + +int stb_vorbis_get_samples_short_interleaved(stb_vorbis *f, int channels, short *buffer, int num_shorts) +{ + float **outputs; + int len = num_shorts / channels; + int n=0; + int z = f->channels; + if (z > channels) z = channels; + while (n < len) { + int k = f->channel_buffer_end - f->channel_buffer_start; + if (n+k >= len) k = len - n; + if (k) + convert_channels_short_interleaved(channels, buffer, f->channels, f->channel_buffers, f->channel_buffer_start, k); + buffer += k*channels; + n += k; + f->channel_buffer_start += k; + if (n == len) break; + if (!stb_vorbis_get_frame_float(f, NULL, &outputs)) break; + } + return n; +} + +int stb_vorbis_get_samples_short(stb_vorbis *f, int channels, short **buffer, int len) +{ + float **outputs; + int n=0; + int z = f->channels; + if (z > channels) z = channels; + while (n < len) { + int k = f->channel_buffer_end - f->channel_buffer_start; + if (n+k >= len) k = len - n; + if (k) + convert_samples_short(channels, buffer, n, f->channels, f->channel_buffers, f->channel_buffer_start, k); + n += k; + f->channel_buffer_start += k; + if (n == len) break; + if (!stb_vorbis_get_frame_float(f, NULL, &outputs)) break; + } + return n; +} + +#ifndef STB_VORBIS_NO_STDIO +int stb_vorbis_decode_filename(const char *filename, int *channels, int *sample_rate, short **output) +{ + int data_len, offset, total, limit, error; + short *data; + stb_vorbis *v = stb_vorbis_open_filename(filename, &error, NULL); + if (v == NULL) return -1; + limit = v->channels * 4096; + *channels = v->channels; + if (sample_rate) + *sample_rate = v->sample_rate; + offset = data_len = 0; + total = limit; + data = (short *) malloc(total * sizeof(*data)); + if (data == NULL) { + stb_vorbis_close(v); + return -2; + } + for (;;) { + int n = stb_vorbis_get_frame_short_interleaved(v, v->channels, data+offset, total-offset); + if (n == 0) break; + data_len += n; + offset += n * v->channels; + if (offset + limit > total) { + short *data2; + total *= 2; + data2 = (short *) realloc(data, total * sizeof(*data)); + if (data2 == NULL) { + free(data); + stb_vorbis_close(v); + return -2; + } + data = data2; + } + } + *output = data; + stb_vorbis_close(v); + return data_len; +} +#endif // NO_STDIO + +int stb_vorbis_decode_memory(const uint8 *mem, int len, int *channels, int *sample_rate, short **output) +{ + int data_len, offset, total, limit, error; + short *data; + stb_vorbis *v = stb_vorbis_open_memory(mem, len, &error, NULL); + if (v == NULL) return -1; + limit = v->channels * 4096; + *channels = v->channels; + if (sample_rate) + *sample_rate = v->sample_rate; + offset = data_len = 0; + total = limit; + data = (short *) malloc(total * sizeof(*data)); + if (data == NULL) { + stb_vorbis_close(v); + return -2; + } + for (;;) { + int n = stb_vorbis_get_frame_short_interleaved(v, v->channels, data+offset, total-offset); + if (n == 0) break; + data_len += n; + offset += n * v->channels; + if (offset + limit > total) { + short *data2; + total *= 2; + data2 = (short *) realloc(data, total * sizeof(*data)); + if (data2 == NULL) { + free(data); + stb_vorbis_close(v); + return -2; + } + data = data2; + } + } + *output = data; + stb_vorbis_close(v); + return data_len; +} +#endif // STB_VORBIS_NO_INTEGER_CONVERSION + +int stb_vorbis_get_samples_float_interleaved(stb_vorbis *f, int channels, float *buffer, int num_floats) +{ + float **outputs; + int len = num_floats / channels; + int n=0; + int z = f->channels; + if (z > channels) z = channels; + while (n < len) { + int i,j; + int k = f->channel_buffer_end - f->channel_buffer_start; + if (n+k >= len) k = len - n; + for (j=0; j < k; ++j) { + for (i=0; i < z; ++i) + *buffer++ = f->channel_buffers[i][f->channel_buffer_start+j]; + for ( ; i < channels; ++i) + *buffer++ = 0; + } + n += k; + f->channel_buffer_start += k; + if (n == len) + break; + if (!stb_vorbis_get_frame_float(f, NULL, &outputs)) + break; + } + return n; +} + +int stb_vorbis_get_samples_float(stb_vorbis *f, int channels, float **buffer, int num_samples) +{ + float **outputs; + int n=0; + int z = f->channels; + if (z > channels) z = channels; + while (n < num_samples) { + int i; + int k = f->channel_buffer_end - f->channel_buffer_start; + if (n+k >= num_samples) k = num_samples - n; + if (k) { + for (i=0; i < z; ++i) + memcpy(buffer[i]+n, f->channel_buffers[i]+f->channel_buffer_start, sizeof(float)*k); + for ( ; i < channels; ++i) + memset(buffer[i]+n, 0, sizeof(float) * k); + } + n += k; + f->channel_buffer_start += k; + if (n == num_samples) + break; + if (!stb_vorbis_get_frame_float(f, NULL, &outputs)) + break; + } + return n; +} +#endif // STB_VORBIS_NO_PULLDATA_API + +/* Version history + 1.12 - 2017-11-21 - limit residue begin/end to blocksize/2 to avoid large temp allocs in bad/corrupt files + 1.11 - 2017-07-23 - fix MinGW compilation + 1.10 - 2017-03-03 - more robust seeking; fix negative ilog(); clear error in open_memory + 1.09 - 2016-04-04 - back out 'avoid discarding last frame' fix from previous version + 1.08 - 2016-04-02 - fixed multiple warnings; fix setup memory leaks; + avoid discarding last frame of audio data + 1.07 - 2015-01-16 - fixed some warnings, fix mingw, const-correct API + some more crash fixes when out of memory or with corrupt files + 1.06 - 2015-08-31 - full, correct support for seeking API (Dougall Johnson) + some crash fixes when out of memory or with corrupt files + 1.05 - 2015-04-19 - don't define __forceinline if it's redundant + 1.04 - 2014-08-27 - fix missing const-correct case in API + 1.03 - 2014-08-07 - Warning fixes + 1.02 - 2014-07-09 - Declare qsort compare function _cdecl on windows + 1.01 - 2014-06-18 - fix stb_vorbis_get_samples_float + 1.0 - 2014-05-26 - fix memory leaks; fix warnings; fix bugs in multichannel + (API change) report sample rate for decode-full-file funcs + 0.99996 - bracket #include for macintosh compilation by Laurent Gomila + 0.99995 - use union instead of pointer-cast for fast-float-to-int to avoid alias-optimization problem + 0.99994 - change fast-float-to-int to work in single-precision FPU mode, remove endian-dependence + 0.99993 - remove assert that fired on legal files with empty tables + 0.99992 - rewind-to-start + 0.99991 - bugfix to stb_vorbis_get_samples_short by Bernhard Wodo + 0.9999 - (should have been 0.99990) fix no-CRT support, compiling as C++ + 0.9998 - add a full-decode function with a memory source + 0.9997 - fix a bug in the read-from-FILE case in 0.9996 addition + 0.9996 - query length of vorbis stream in samples/seconds + 0.9995 - bugfix to another optimization that only happened in certain files + 0.9994 - bugfix to one of the optimizations that caused significant (but inaudible?) errors + 0.9993 - performance improvements; runs in 99% to 104% of time of reference implementation + 0.9992 - performance improvement of IMDCT; now performs close to reference implementation + 0.9991 - performance improvement of IMDCT + 0.999 - (should have been 0.9990) performance improvement of IMDCT + 0.998 - no-CRT support from Casey Muratori + 0.997 - bugfixes for bugs found by Terje Mathisen + 0.996 - bugfix: fast-huffman decode initialized incorrectly for sparse codebooks; fixing gives 10% speedup - found by Terje Mathisen + 0.995 - bugfix: fix to 'effective' overrun detection - found by Terje Mathisen + 0.994 - bugfix: garbage decode on final VQ symbol of a non-multiple - found by Terje Mathisen + 0.993 - bugfix: pushdata API required 1 extra byte for empty page (failed to consume final page if empty) - found by Terje Mathisen + 0.992 - fixes for MinGW warning + 0.991 - turn fast-float-conversion on by default + 0.990 - fix push-mode seek recovery if you seek into the headers + 0.98b - fix to bad release of 0.98 + 0.98 - fix push-mode seek recovery; robustify float-to-int and support non-fast mode + 0.97 - builds under c++ (typecasting, don't use 'class' keyword) + 0.96 - somehow MY 0.95 was right, but the web one was wrong, so here's my 0.95 rereleased as 0.96, fixes a typo in the clamping code + 0.95 - clamping code for 16-bit functions + 0.94 - not publically released + 0.93 - fixed all-zero-floor case (was decoding garbage) + 0.92 - fixed a memory leak + 0.91 - conditional compiles to omit parts of the API and the infrastructure to support them: STB_VORBIS_NO_PULLDATA_API, STB_VORBIS_NO_PUSHDATA_API, STB_VORBIS_NO_STDIO, STB_VORBIS_NO_INTEGER_CONVERSION + 0.90 - first public release +*/ + +#endif // STB_VORBIS_HEADER_ONLY + + +/* +------------------------------------------------------------------------------ +This software is available under 2 licenses -- choose whichever you prefer. +------------------------------------------------------------------------------ +ALTERNATIVE A - MIT License +Copyright (c) 2017 Sean Barrett +Permission is hereby granted, free of charge, to any person obtaining a copy of +this software and associated documentation files (the "Software"), to deal in +the Software without restriction, including without limitation the rights to +use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies +of the Software, and to permit persons to whom the Software is furnished to do +so, subject to the following conditions: +The above copyright notice and this permission notice shall be included in all +copies or substantial portions of the Software. +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE +SOFTWARE. +------------------------------------------------------------------------------ +ALTERNATIVE B - Public Domain (www.unlicense.org) +This is free and unencumbered software released into the public domain. +Anyone is free to copy, modify, publish, use, compile, sell, or distribute this +software, either in source code form or as a compiled binary, for any purpose, +commercial or non-commercial, and by any means. +In jurisdictions that recognize copyright laws, the author or authors of this +software dedicate any and all copyright interest in the software to the public +domain. We make this dedication for the benefit of the public at large and to +the detriment of our heirs and successors. We intend this dedication to be an +overt act of relinquishment in perpetuity of all present and future rights to +this software under copyright law. +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN +ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION +WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. +------------------------------------------------------------------------------ +*/ +#include "soloud_file_hack_off.h" \ No newline at end of file diff --git a/src/soloud/src/audiosource/wav/stb_vorbis.h b/src/soloud/src/audiosource/wav/stb_vorbis.h new file mode 100644 index 0000000..90a1570 --- /dev/null +++ b/src/soloud/src/audiosource/wav/stb_vorbis.h @@ -0,0 +1,2 @@ +#define STB_VORBIS_HEADER_ONLY +#include "stb_vorbis.c" \ No newline at end of file diff --git a/src/soloud/src/backend/alsa/soloud_alsa.cpp b/src/soloud/src/backend/alsa/soloud_alsa.cpp new file mode 100644 index 0000000..cc8609a --- /dev/null +++ b/src/soloud/src/backend/alsa/soloud_alsa.cpp @@ -0,0 +1,168 @@ +/* +SoLoud audio engine +Copyright (c) 2013-2015 Jari Komppa + +This software is provided 'as-is', without any express or implied +warranty. In no event will the authors be held liable for any damages +arising from the use of this software. + +Permission is granted to anyone to use this software for any purpose, +including commercial applications, and to alter it and redistribute it +freely, subject to the following restrictions: + + 1. The origin of this software must not be misrepresented; you must not + claim that you wrote the original software. If you use this software + in a product, an acknowledgment in the product documentation would be + appreciated but is not required. + + 2. Altered source versions must be plainly marked as such, and must not be + misrepresented as being the original software. + + 3. This notice may not be removed or altered from any source + distribution. +*/ + +#include "soloud.h" +#include "soloud_thread.h" + +#if !defined(WITH_ALSA) + +namespace SoLoud +{ + result alsa_init(Soloud *aSoloud, unsigned int aFlags, unsigned int aSamplerate, unsigned int aBuffer) + { + return NOT_IMPLEMENTED; + } +}; + +#else + +#define ALSA_PCM_NEW_HW_PARAMS_API +#include + +#include +#include +#include + +namespace SoLoud +{ + struct ALSAData + { + float *buffer; + short *sampleBuffer; + snd_pcm_t *alsaDeviceHandle; + Soloud *soloud; + int samples; + int channels; + bool audioProcessingDone; + Thread::ThreadHandle threadHandle; + }; + + + static void alsaThread(void *aParam) + { + + ALSAData *data = static_cast(aParam); + while (!data->audioProcessingDone) + { + data->soloud->mix(data->buffer, data->samples); + for (int i=0;isamples*data->channels;++i) + { + data->sampleBuffer[i] = static_cast(floor(data->buffer[i] + * static_cast(0x7fff))); + } + if (snd_pcm_writei(data->alsaDeviceHandle, data->sampleBuffer, data->samples) == -EPIPE) + snd_pcm_prepare(data->alsaDeviceHandle); + + } + + } + + static void alsaCleanup(Soloud *aSoloud) + { + if (0 == aSoloud->mBackendData) + { + return; + } + ALSAData *data = static_cast(aSoloud->mBackendData); + data->audioProcessingDone = true; + if (data->threadHandle) + { + Thread::wait(data->threadHandle); + Thread::release(data->threadHandle); + } + snd_pcm_drain(data->alsaDeviceHandle); + snd_pcm_close(data->alsaDeviceHandle); + if (0 != data->sampleBuffer) + { + delete[] data->sampleBuffer; + } + if (0 != data->buffer) + { + delete[] data->buffer; + } + delete data; + aSoloud->mBackendData = 0; + } + + result alsa_init(Soloud *aSoloud, unsigned int aFlags, unsigned int aSamplerate, unsigned int aBuffer, unsigned int aChannels) + { + ALSAData *data = new ALSAData; + memset(data, 0, sizeof(ALSAData)); + aSoloud->mBackendData = data; + aSoloud->mBackendCleanupFunc = alsaCleanup; + data->samples = aBuffer; + data->channels = 2; + data->soloud = aSoloud; + + int rc; + snd_pcm_t *handle; + rc = snd_pcm_open(&handle, "default", SND_PCM_STREAM_PLAYBACK, 0); + if (rc < 0) + { + return UNKNOWN_ERROR; + } + + data->alsaDeviceHandle = handle; + + snd_pcm_hw_params_t *params; + snd_pcm_hw_params_alloca(¶ms); + snd_pcm_hw_params_any(handle, params); + + snd_pcm_hw_params_set_access(handle, params, SND_PCM_ACCESS_RW_INTERLEAVED); + snd_pcm_hw_params_set_format(handle, params, SND_PCM_FORMAT_S16_LE); + snd_pcm_hw_params_set_channels(handle, params, 2); + snd_pcm_hw_params_set_buffer_size(handle, params, aBuffer); + + unsigned int val = aSamplerate; + int dir = 0; + rc = snd_pcm_hw_params_set_rate_near(handle, params, &val, &dir); + if (rc < 0) + { + return UNKNOWN_ERROR; + } + + rc = snd_pcm_hw_params(handle, params); + if (rc < 0) + { + return UNKNOWN_ERROR; + } + + snd_pcm_hw_params_get_rate(params, &val, &dir); + aSamplerate = val; + snd_pcm_hw_params_get_channels(params, &val); + data->channels = val; + + data->buffer = new float[data->samples*data->channels]; + data->sampleBuffer = new short[data->samples*data->channels]; + aSoloud->postinit(aSamplerate, data->samples * data->channels, aFlags, 2); + data->threadHandle = Thread::createThread(alsaThread, data); + if (0 == data->threadHandle) + { + return UNKNOWN_ERROR; + } + aSoloud->mBackendString = "ALSA"; + return 0; + } +}; +#endif \ No newline at end of file diff --git a/src/soloud/src/backend/coreaudio/soloud_coreaudio.cpp b/src/soloud/src/backend/coreaudio/soloud_coreaudio.cpp new file mode 100644 index 0000000..158a4d7 --- /dev/null +++ b/src/soloud/src/backend/coreaudio/soloud_coreaudio.cpp @@ -0,0 +1,127 @@ +/* +SoLoud audio engine +Copyright (c) 2015 Jari Komppa + +Core Audio backend for Mac OS X +Copyright (c) 2015 Petri Häkkinen + +This software is provided 'as-is', without any express or implied +warranty. In no event will the authors be held liable for any damages +arising from the use of this software. + +Permission is granted to anyone to use this software for any purpose, +including commercial applications, and to alter it and redistribute it +freely, subject to the following restrictions: + + 1. The origin of this software must not be misrepresented; you must not + claim that you wrote the original software. If you use this software + in a product, an acknowledgment in the product documentation would be + appreciated but is not required. + + 2. Altered source versions must be plainly marked as such, and must not be + misrepresented as being the original software. + + 3. This notice may not be removed or altered from any source + distribution. +*/ + +#include +#include + +#include "soloud.h" +#include "soloud_thread.h" + +#if !defined(WITH_COREAUDIO) + +namespace SoLoud +{ + result coreaudio_init(SoLoud::Soloud *aSoloud, unsigned int aFlags, unsigned int aSamplerate, unsigned int aBuffer) + { + return NOT_IMPLEMENTED; + } +} +#else + +#include + +#define NUM_BUFFERS 2 + +static AudioQueueRef audioQueue = 0; + +namespace SoLoud +{ + void soloud_coreaudio_deinit(SoLoud::Soloud *aSoloud) + { + AudioQueueStop(audioQueue, true); + AudioQueueDispose(audioQueue, false); + } + + static void coreaudio_mutex_lock(void *mutex) + { + Thread::lockMutex(mutex); + } + + static void coreaudio_mutex_unlock(void *mutex) + { + Thread::unlockMutex(mutex); + } + + static void coreaudio_fill_buffer(void *context, AudioQueueRef queue, AudioQueueBufferRef buffer) + { + SoLoud::Soloud *aSoloud = (SoLoud::Soloud*)context; + aSoloud->mixSigned16((short*)buffer->mAudioData, buffer->mAudioDataByteSize / 4); + AudioQueueEnqueueBuffer(queue, buffer, 0, NULL); + } + + result coreaudio_init(SoLoud::Soloud *aSoloud, unsigned int aFlags, unsigned int aSamplerate, unsigned int aBuffer, unsigned int aChannels) + { + aSoloud->postinit(aSamplerate, aBuffer, aFlags, 2); + aSoloud->mBackendCleanupFunc = soloud_coreaudio_deinit; + + AudioStreamBasicDescription audioFormat; + audioFormat.mSampleRate = aSamplerate; + audioFormat.mFormatID = kAudioFormatLinearPCM; + audioFormat.mFormatFlags = kLinearPCMFormatFlagIsSignedInteger | kAudioFormatFlagIsPacked; + audioFormat.mBytesPerPacket = 4; + audioFormat.mFramesPerPacket = 1; + audioFormat.mBytesPerFrame = 4; + audioFormat.mChannelsPerFrame = 2; + audioFormat.mBitsPerChannel = 16; + audioFormat.mReserved = 0; + + // create the audio queue + OSStatus result = AudioQueueNewOutput(&audioFormat, coreaudio_fill_buffer, aSoloud, NULL, NULL, 0, &audioQueue); + if(result) + { + //printf("AudioQueueNewOutput failed (%d)\n", result); + return UNKNOWN_ERROR; + } + + // allocate and prime audio buffers + for(int i = 0; i < NUM_BUFFERS; ++i) + { + AudioQueueBufferRef buffer; + result = AudioQueueAllocateBuffer(audioQueue, aBuffer * 4, &buffer); + if(result) + { + //printf("AudioQueueAllocateBuffer failed (%d)\n", result); + return UNKNOWN_ERROR; + } + buffer->mAudioDataByteSize = aBuffer * 4; + memset(buffer->mAudioData, 0, buffer->mAudioDataByteSize); + AudioQueueEnqueueBuffer(audioQueue, buffer, 0, NULL); + } + + // start playback + result = AudioQueueStart(audioQueue, NULL); + if(result) + { + //printf("AudioQueueStart failed (%d)\n", result); + return UNKNOWN_ERROR; + } + + aSoloud->mBackendString = "CoreAudio"; + return 0; + } +}; +#endif diff --git a/src/soloud/src/backend/null/soloud_null.cpp b/src/soloud/src/backend/null/soloud_null.cpp new file mode 100644 index 0000000..330d077 --- /dev/null +++ b/src/soloud/src/backend/null/soloud_null.cpp @@ -0,0 +1,57 @@ +/* +SoLoud audio engine +Copyright (c) 2013-2015 Jari Komppa + +This software is provided 'as-is', without any express or implied +warranty. In no event will the authors be held liable for any damages +arising from the use of this software. + +Permission is granted to anyone to use this software for any purpose, +including commercial applications, and to alter it and redistribute it +freely, subject to the following restrictions: + + 1. The origin of this software must not be misrepresented; you must not + claim that you wrote the original software. If you use this software + in a product, an acknowledgment in the product documentation would be + appreciated but is not required. + + 2. Altered source versions must be plainly marked as such, and must not be + misrepresented as being the original software. + + 3. This notice may not be removed or altered from any source + distribution. +*/ + +#include "soloud.h" + +#if !defined(WITH_NULL) + +namespace SoLoud +{ + result null_init(Soloud *aSoloud, unsigned int aFlags, unsigned int aSamplerate, unsigned int aBuffer) + { + return NOT_IMPLEMENTED; + } +}; + +#else + +namespace SoLoud +{ + static void nullCleanup(Soloud *aSoloud) + { + } + + result null_init(Soloud *aSoloud, unsigned int aFlags, unsigned int aSamplerate, unsigned int aBuffer, unsigned int aChannels) + { + if (aChannels == 0 || aChannels == 3 || aChannels == 5 || aChannels == 7 || aChannels > MAX_CHANNELS || aBuffer < SAMPLE_GRANULARITY) + return INVALID_PARAMETER; + aSoloud->mBackendData = 0; + aSoloud->mBackendCleanupFunc = nullCleanup; + + aSoloud->postinit(aSamplerate, aBuffer, aFlags, aChannels); + aSoloud->mBackendString = "null driver"; + return SO_NO_ERROR; + } +}; +#endif \ No newline at end of file diff --git a/src/soloud/src/backend/opensles/soloud_opensles.cpp b/src/soloud/src/backend/opensles/soloud_opensles.cpp new file mode 100644 index 0000000..e3bf9fe --- /dev/null +++ b/src/soloud/src/backend/opensles/soloud_opensles.cpp @@ -0,0 +1,301 @@ +/* +SoLoud audio engine +Copyright (c) 2013-2015 Jari Komppa + +This software is provided 'as-is', without any express or implied +warranty. In no event will the authors be held liable for any damages +arising from the use of this software. + +Permission is granted to anyone to use this software for any purpose, +including commercial applications, and to alter it and redistribute it +freely, subject to the following restrictions: + + 1. The origin of this software must not be misrepresented; you must not + claim that you wrote the original software. If you use this software + in a product, an acknowledgment in the product documentation would be + appreciated but is not required. + + 2. Altered source versions must be plainly marked as such, and must not be + misrepresented as being the original software. + + 3. This notice may not be removed or altered from any source + distribution. +*/ +#include +#include +#include + +#include "soloud.h" +#include "soloud_thread.h" + +#if !defined(WITH_OPENSLES) +namespace SoLoud +{ + result opensles_init(SoLoud::Soloud *aSoloud, unsigned int aFlags, unsigned int aSamplerate, unsigned int aBuffer) + { + return NOT_IMPLEMENTED; + } +} +#else + +#include "SLES/OpenSLES.h" +#include "SLES/OpenSLES_Platform.h" + +#if defined( __ANDROID__ ) +#include "SLES/OpenSLES_Android.h" +#endif + +// Error logging. +#if defined( __ANDROID__ ) +# include +# define LOG_ERROR( _msg ) \ + __android_log_print( ANDROID_LOG_ERROR, "SoLoud", _msg ) +# define LOG_INFO( _msg ) \ + __android_log_print( ANDROID_LOG_INFO, "SoLoud", _msg ) + +#else + printf( _msg ) +#endif + +#define NUM_BUFFERS 2 + +namespace SoLoud +{ + struct BackendData + { + BackendData() + { + memset(this, 0, sizeof(BackendData)); + } + + ~BackendData() + { + // Wait until thread is done. + threadrun++; + while (threadrun == 1) + { + Thread::sleep(10); + } + + if(playerObj) + { + (*playerObj)->Destroy(playerObj); + } + + if(outputMixObj) + { + (*outputMixObj)->Destroy(outputMixObj); + } + + if(engineObj) + { + (*engineObj)->Destroy(engineObj); + } + + for(int idx = 0; idx < NUM_BUFFERS; ++idx) + { + delete [] outputBuffers[idx]; + } + } + + // Engine. + SLObjectItf engineObj; + SLEngineItf engine; + + // Output mix. + SLObjectItf outputMixObj; + SLVolumeItf outputMixVol; + + // Data. + SLDataLocator_OutputMix outLocator; + SLDataSink dstDataSink; + + // Player. + SLObjectItf playerObj; + SLPlayItf player; + SLVolumeItf playerVol; + SLAndroidSimpleBufferQueueItf playerBufferQueue; + + unsigned int bufferSize; + unsigned int channels; + short *outputBuffers[ NUM_BUFFERS ]; + int buffersQueued; + int activeBuffer; + volatile int threadrun; + + SLDataLocator_AndroidSimpleBufferQueue inLocator; + }; + + void soloud_opensles_deinit(SoLoud::Soloud *aSoloud) + { + BackendData *data = static_cast(aSoloud->mBackendData); + delete data; + aSoloud->mBackendData = NULL; + } + + static void opensles_iterate(SoLoud::Soloud *aSoloud) + { + BackendData *data = static_cast(aSoloud->mBackendData); + + // If we have no buffered queued, queue one up for playback. + if(data->buffersQueued == 0) + { + // Get next output buffer, advance, next buffer. + short * outputBuffer = data->outputBuffers[data->activeBuffer]; + data->activeBuffer = (data->activeBuffer + 1) % NUM_BUFFERS; + short * nextBuffer = data->outputBuffers[data->activeBuffer]; + + // Mix this buffer. + const int bufferSizeBytes = data->bufferSize * data->channels * sizeof(short); + (*data->playerBufferQueue)->Enqueue(data->playerBufferQueue, outputBuffer, bufferSizeBytes); + ++data->buffersQueued; + + aSoloud->mixSigned16(nextBuffer,data->bufferSize); + } + } + + static void opensles_thread(void *aParam) + { + Soloud *soloud = static_cast(aParam); + BackendData *data = static_cast(soloud->mBackendData); + while (data->threadrun == 0) + { + opensles_iterate(soloud); + + // TODO: Condition var? + Thread::sleep(1); + } + data->threadrun++; + } + + static void SLAPIENTRY soloud_opensles_play_callback(SLPlayItf player, void *context, SLuint32 event) + { + Soloud *soloud = static_cast(context); + BackendData *data = static_cast(soloud->mBackendData); + if( event & SL_PLAYEVENT_HEADATEND ) + { + data->buffersQueued--; + } + } + + result opensles_init(SoLoud::Soloud *aSoloud, unsigned int aFlags, unsigned int aSamplerate, unsigned int aBuffer, unsigned int aChannels) + { + BackendData *data = new BackendData(); + + // Allocate output buffer to mix into. + data->bufferSize = aBuffer; + data->channels = aChannels; + const int bufferSizeBytes = data->bufferSize * data->channels * sizeof(short); + for(int idx = 0; idx < NUM_BUFFERS; ++idx) + { + data->outputBuffers[idx] = new short[ data->bufferSize * data->channels ]; + memset(data->outputBuffers[idx], 0, bufferSizeBytes); + } + + // Create engine. + const SLEngineOption opts[] = { SL_ENGINEOPTION_THREADSAFE, SL_BOOLEAN_TRUE }; + if(slCreateEngine( &data->engineObj, 1, opts, 0, NULL, NULL ) != SL_RESULT_SUCCESS) + { + LOG_ERROR( "Failed to create engine." ); + return UNKNOWN_ERROR; + } + + // Realize and get engine interfaxce. + (*data->engineObj)->Realize(data->engineObj, SL_BOOLEAN_FALSE); + if((*data->engineObj)->GetInterface(data->engineObj, SL_IID_ENGINE, &data->engine) != SL_RESULT_SUCCESS) + { + LOG_ERROR( "Failed to get engine interface." ); + return UNKNOWN_ERROR; + } + + // Create output mix. + const SLInterfaceID ids[] = { SL_IID_VOLUME }; + const SLboolean req[] = { SL_BOOLEAN_FALSE }; + + if((*data->engine)->CreateOutputMix(data->engine, &data->outputMixObj, 1, ids, req) != SL_RESULT_SUCCESS) + { + LOG_ERROR( "Failed to create output mix object." ); + return UNKNOWN_ERROR; + } + (*data->outputMixObj)->Realize(data->outputMixObj, SL_BOOLEAN_FALSE); + + if((*data->outputMixObj)->GetInterface(data->outputMixObj, SL_IID_VOLUME, &data->outputMixVol) != SL_RESULT_SUCCESS) + { + LOG_INFO( "Failed to get output mix volume interface." ); + } + + // Create android buffer queue. + data->inLocator.locatorType = SL_DATALOCATOR_ANDROIDSIMPLEBUFFERQUEUE; + data->inLocator.numBuffers = NUM_BUFFERS; + + // Setup data format. + SLDataFormat_PCM format; + format.formatType = SL_DATAFORMAT_PCM; + format.numChannels = data->channels; + format.samplesPerSec = aSamplerate * 1000; //mHz + format.bitsPerSample = SL_PCMSAMPLEFORMAT_FIXED_16; + format.containerSize = 16; + format.endianness = SL_BYTEORDER_LITTLEENDIAN; + + // Determine channel mask. + if(data->channels == 2) + { + format.channelMask = SL_SPEAKER_FRONT_LEFT | SL_SPEAKER_FRONT_RIGHT; + } + else + { + format.channelMask = SL_SPEAKER_FRONT_CENTER; + } + + SLDataSource src; + src.pLocator = &data->inLocator; + src.pFormat = &format; + + // Output mix. + data->outLocator.locatorType = SL_DATALOCATOR_OUTPUTMIX; + data->outLocator.outputMix = data->outputMixObj; + + data->dstDataSink.pLocator = &data->outLocator; + data->dstDataSink.pFormat = NULL; + + // Setup player. + { + const SLInterfaceID ids[] = { SL_IID_VOLUME, SL_IID_ANDROIDSIMPLEBUFFERQUEUE }; + const SLboolean req[] = { SL_BOOLEAN_TRUE, SL_BOOLEAN_TRUE }; + + (*data->engine)->CreateAudioPlayer(data->engine, &data->playerObj, &src, &data->dstDataSink, sizeof(ids) / sizeof(ids[0]), ids, req); + + (*data->playerObj)->Realize(data->playerObj, SL_BOOLEAN_FALSE); + + (*data->playerObj)->GetInterface(data->playerObj, SL_IID_PLAY, &data->player); + (*data->playerObj)->GetInterface(data->playerObj, SL_IID_VOLUME, &data->playerVol); + + (*data->playerObj)->GetInterface(data->playerObj, SL_IID_ANDROIDSIMPLEBUFFERQUEUE, &data->playerBufferQueue); + } + + aSoloud->mBackendData = data; // Must be set before callback + + // Begin playing. + { + const int bufferSizeBytes = data->bufferSize * data->channels * sizeof(short); + (*data->playerBufferQueue)->Enqueue(data->playerBufferQueue, data->outputBuffers[0], bufferSizeBytes); + data->activeBuffer = (data->activeBuffer + 1) % NUM_BUFFERS; + + (*data->player)->RegisterCallback(data->player, soloud_opensles_play_callback, aSoloud); + (*data->player)->SetCallbackEventsMask(data->player, SL_PLAYEVENT_HEADATEND); + (*data->player)->SetPlayState(data->player, SL_PLAYSTATE_PLAYING); + + } + + // + aSoloud->postinit(aSamplerate,data->bufferSize,aFlags,2); + aSoloud->mBackendCleanupFunc = soloud_opensles_deinit; + + LOG_INFO( "Creating audio thread." ); + Thread::createThread(opensles_thread, (void*)aSoloud); + + aSoloud->mBackendString = "OpenSL ES"; + return SO_NO_ERROR; + } +}; +#endif diff --git a/src/soloud/src/backend/oss/soloud_oss.cpp b/src/soloud/src/backend/oss/soloud_oss.cpp new file mode 100644 index 0000000..66495f5 --- /dev/null +++ b/src/soloud/src/backend/oss/soloud_oss.cpp @@ -0,0 +1,179 @@ +/* +SoLoud audio engine +Copyright (c) 2013-2014 Jari Komppa + +This software is provided 'as-is', without any express or implied +warranty. In no event will the authors be held liable for any damages +arising from the use of this software. + +Permission is granted to anyone to use this software for any purpose, +including commercial applications, and to alter it and redistribute it +freely, subject to the following restrictions: + + 1. The origin of this software must not be misrepresented; you must not + claim that you wrote the original software. If you use this software + in a product, an acknowledgment in the product documentation would be + appreciated but is not required. + + 2. Altered source versions must be plainly marked as such, and must not be + misrepresented as being the original software. + + 3. This notice may not be removed or altered from any source + distribution. +*/ + +#include "soloud.h" +#include "soloud_thread.h" + +#if !defined(WITH_OSS) + +namespace SoLoud +{ + result oss_init(Soloud *aSoloud, unsigned int aFlags, unsigned int aSamplerate, unsigned int aBuffer) + { + return NOT_IMPLEMENTED; + } +}; + +#else +#include +#include +#include +#include +#include + +namespace SoLoud +{ + static const int OSS_DEVICE_COUNT = 4; + static const char *OSS_DEVICES[OSS_DEVICE_COUNT] = + { + "/dev/dsp", + "/dev/dsp0.0", + "/dev/dsp1.0", + "/dev/dsp2.0" + }; + + struct OSSData + { + float *buffer; + short *sampleBuffer; + int ossDeviceHandle; + Soloud *soloud; + int samples; + int channels; + bool audioProcessingDone; + Thread::ThreadHandle threadHandle; + }; + + static void ossThread(void *aParam) + { + OSSData *data = static_cast(aParam); + while (!data->audioProcessingDone) + { + data->soloud->mix(data->buffer, data->samples); + for (int i=0;isamples*data->channels;++i) + { + data->sampleBuffer[i] = static_cast(floor(data->buffer[i] + * static_cast(0x7fff))); + } + write(data->ossDeviceHandle, data->sampleBuffer, + sizeof(short)*data->samples*data->channels); + } + } + + static void ossCleanup(Soloud *aSoloud) + { + if (0 == aSoloud->mBackendData) + { + return; + } + OSSData *data = static_cast(aSoloud->mBackendData); + data->audioProcessingDone = true; + if (data->threadHandle) + { + Thread::wait(data->threadHandle); + Thread::release(data->threadHandle); + } + ioctl(data->ossDeviceHandle, SNDCTL_DSP_RESET, 0); + if (0 != data->sampleBuffer) + { + delete[] data->sampleBuffer; + } + if (0 != data->buffer) + { + delete[] data->buffer; + } + close(data->ossDeviceHandle); + delete data; + aSoloud->mBackendData = 0; + } + + result oss_init(Soloud *aSoloud, unsigned int aFlags, unsigned int aSamplerate, unsigned int aBuffer, unsigned int aChannels) + { + OSSData *data = new OSSData; + memset(data, 0, sizeof(OSSData)); + aSoloud->mBackendData = data; + aSoloud->mBackendCleanupFunc = ossCleanup; + data->samples = aBuffer; + data->soloud = aSoloud; + bool deviceIsOpen = false; + for (int i=0;iossDeviceHandle = open(OSS_DEVICES[i], O_WRONLY, 0); + if (-1 != data->ossDeviceHandle) + { + deviceIsOpen = true; + break; + } + } + if (!deviceIsOpen) + { + return UNKNOWN_ERROR; + } + int flags = fcntl(data->ossDeviceHandle, F_GETFL); + flags &= ~O_NONBLOCK; + if (-1 == fcntl(data->ossDeviceHandle, F_SETFL, flags)) + { + return UNKNOWN_ERROR; + } + int format = AFMT_S16_NE; + if (-1 == ioctl(data->ossDeviceHandle, SNDCTL_DSP_SETFMT, &format)) + { + return UNKNOWN_ERROR; + } + if (format != AFMT_S16_NE) + { + return UNKNOWN_ERROR; + } + int channels = 2; + data->channels = channels; + if (-1 == ioctl(data->ossDeviceHandle, SNDCTL_DSP_CHANNELS, &data->channels)) + { + return UNKNOWN_ERROR; + } + if (channels != data->channels) + { + return UNKNOWN_ERROR; + } + int speed = aSamplerate; + if (-1 == ioctl(data->ossDeviceHandle, SNDCTL_DSP_SPEED, &speed)) + { + return UNKNOWN_ERROR; + } + if (speed != aSamplerate) + { + return UNKNOWN_ERROR; + } + data->buffer = new float[data->samples*data->channels]; + data->sampleBuffer = new short[data->samples*data->channels]; + aSoloud->postinit(aSamplerate, data->samples * data->channels, aFlags, 2); + data->threadHandle = Thread::createThread(ossThread, data); + if (0 == data->threadHandle) + { + return UNKNOWN_ERROR; + } + aSoloud->mBackendString = "OSS"; + return 0; + } +}; +#endif \ No newline at end of file diff --git a/src/soloud/src/backend/sdl/soloud_sdl1.cpp b/src/soloud/src/backend/sdl/soloud_sdl1.cpp new file mode 100644 index 0000000..1d74a74 --- /dev/null +++ b/src/soloud/src/backend/sdl/soloud_sdl1.cpp @@ -0,0 +1,102 @@ +/* +SoLoud audio engine +Copyright (c) 2013-2014 Jari Komppa + +This software is provided 'as-is', without any express or implied +warranty. In no event will the authors be held liable for any damages +arising from the use of this software. + +Permission is granted to anyone to use this software for any purpose, +including commercial applications, and to alter it and redistribute it +freely, subject to the following restrictions: + + 1. The origin of this software must not be misrepresented; you must not + claim that you wrote the original software. If you use this software + in a product, an acknowledgment in the product documentation would be + appreciated but is not required. + + 2. Altered source versions must be plainly marked as such, and must not be + misrepresented as being the original software. + + 3. This notice may not be removed or altered from any source + distribution. +*/ +#include + +#include "soloud.h" + +#if !defined(WITH_SDL1) + +namespace SoLoud +{ + result sdl1_init(SoLoud::Soloud *aSoloud, unsigned int aFlags, unsigned int aSamplerate, unsigned int aBuffer) + { + return NOT_IMPLEMENTED; + } +} + +#else + +#if defined(_MSC_VER) +#include +#else +#include +#endif +#include + + +extern "C" +{ + int dll_SDL1_found(); + int dll_SDL1_OpenAudio(SDL_AudioSpec *desired, SDL_AudioSpec *obtained); + void dll_SDL1_CloseAudio(); + void dll_SDL1_PauseAudio(int pause_on); +}; + + +namespace SoLoud +{ + static SDL_AudioSpec gActiveAudioSpec; + + void soloud_sdl1_audiomixer(void *userdata, Uint8 *stream, int len) + { + short *buf = (short*)stream; + SoLoud::Soloud *soloud = (SoLoud::Soloud *)userdata; + int samples = len / (gActiveAudioSpec.channels * sizeof(short)); + soloud->mixSigned16(buf, samples); + } + + static void soloud_sdl1_deinit(SoLoud::Soloud *aSoloud) + { + dll_SDL1_CloseAudio(); + } + + result sdl1_init(SoLoud::Soloud *aSoloud, unsigned int aFlags, unsigned int aSamplerate, unsigned int aBuffer, unsigned int aChannels) + { + if (!dll_SDL1_found()) + return DLL_NOT_FOUND; + + SDL_AudioSpec as; + as.freq = aSamplerate; + as.format = AUDIO_S16; + as.channels = aChannels; + as.samples = aBuffer; + as.callback = soloud_sdl1_audiomixer; + as.userdata = (void*)aSoloud; + + if (dll_SDL1_OpenAudio(&as, &gActiveAudioSpec) < 0) + { + return UNKNOWN_ERROR; + } + + aSoloud->postinit(gActiveAudioSpec.freq, gActiveAudioSpec.samples, aFlags, gActiveAudioSpec.channels); + + aSoloud->mBackendCleanupFunc = soloud_sdl1_deinit; + + dll_SDL1_PauseAudio(0); + aSoloud->mBackendString = "SDL (dynamic)"; + return 0; + } + +}; +#endif \ No newline at end of file diff --git a/src/soloud/src/backend/sdl/soloud_sdl1_dll.c b/src/soloud/src/backend/sdl/soloud_sdl1_dll.c new file mode 100644 index 0000000..7f0d2cb --- /dev/null +++ b/src/soloud/src/backend/sdl/soloud_sdl1_dll.c @@ -0,0 +1,128 @@ +/* +SoLoud audio engine +Copyright (c) 2013-2014 Jari Komppa + +This software is provided 'as-is', without any express or implied +warranty. In no event will the authors be held liable for any damages +arising from the use of this software. + +Permission is granted to anyone to use this software for any purpose, +including commercial applications, and to alter it and redistribute it +freely, subject to the following restrictions: + + 1. The origin of this software must not be misrepresented; you must not + claim that you wrote the original software. If you use this software + in a product, an acknowledgment in the product documentation would be + appreciated but is not required. + + 2. Altered source versions must be plainly marked as such, and must not be + misrepresented as being the original software. + + 3. This notice may not be removed or altered from any source + distribution. +*/ +#include +#if defined(_MSC_VER) +#define WINDOWS_VERSION +#include +#else +#include +#endif +#include + +typedef int (*SDLOpenAudio)(SDL_AudioSpec *desired, SDL_AudioSpec *obtained); +typedef void (*SDLCloseAudio)(); +typedef void (*SDLPauseAudio)(int pause_on); + +static SDLOpenAudio dSDL1_OpenAudio = NULL; +static SDLCloseAudio dSDL1_CloseAudio = NULL; +static SDLPauseAudio dSDL1_PauseAudio = NULL; + +#ifdef WINDOWS_VERSION +#include + +static HMODULE openDll() +{ + HMODULE res = LoadLibraryA("SDL.dll"); + return res; +} + +static void* getDllProc(HMODULE aDllHandle, const char *aProcName) +{ + return GetProcAddress(aDllHandle, aProcName); +} + +#else +#include // dll functions + +static void * openDll() +{ + void * res; + res = dlopen("/Library/Frameworks/SDL.framework/SDL", RTLD_LAZY); + if (!res) res = dlopen("SDL.so", RTLD_LAZY); + return res; +} + +static void* getDllProc(void * aLibrary, const char *aProcName) +{ + return dlsym(aLibrary, aProcName); +} + +#endif + +static int load_dll() +{ +#ifdef WINDOWS_VERSION + HMODULE dll = NULL; +#else + void * dll = NULL; +#endif + + if (dSDL1_OpenAudio != NULL) + { + return 1; + } + + dll = openDll(); + + if (dll) + { + dSDL1_OpenAudio = (SDLOpenAudio)getDllProc(dll, "SDL_OpenAudio"); + dSDL1_CloseAudio = (SDLCloseAudio)getDllProc(dll, "SDL_CloseAudio"); + dSDL1_PauseAudio = (SDLPauseAudio)getDllProc(dll, "SDL_PauseAudio"); + + + if (dSDL1_OpenAudio && + dSDL1_CloseAudio && + dSDL1_PauseAudio) + { + return 1; + } + } + dSDL1_OpenAudio = NULL; + return 0; +} + +int dll_SDL1_found() +{ + return load_dll(); +} + +int dll_SDL1_OpenAudio(SDL_AudioSpec *desired, SDL_AudioSpec *obtained) +{ + if (load_dll()) + return dSDL1_OpenAudio(desired, obtained); + return 0; +} + +void dll_SDL1_CloseAudio() +{ + if (load_dll()) + dSDL1_CloseAudio(); +} + +void dll_SDL1_PauseAudio(int pause_on) +{ + if (load_dll()) + dSDL1_PauseAudio(pause_on); +} diff --git a/src/soloud/src/backend/sdl/soloud_sdl2.cpp b/src/soloud/src/backend/sdl/soloud_sdl2.cpp new file mode 100644 index 0000000..1ff1414 --- /dev/null +++ b/src/soloud/src/backend/sdl/soloud_sdl2.cpp @@ -0,0 +1,133 @@ +/* +SoLoud audio engine +Copyright (c) 2013-2018 Jari Komppa + +This software is provided 'as-is', without any express or implied +warranty. In no event will the authors be held liable for any damages +arising from the use of this software. + +Permission is granted to anyone to use this software for any purpose, +including commercial applications, and to alter it and redistribute it +freely, subject to the following restrictions: + + 1. The origin of this software must not be misrepresented; you must not + claim that you wrote the original software. If you use this software + in a product, an acknowledgment in the product documentation would be + appreciated but is not required. + + 2. Altered source versions must be plainly marked as such, and must not be + misrepresented as being the original software. + + 3. This notice may not be removed or altered from any source + distribution. +*/ +#include + +#include "soloud.h" + +#if !defined(WITH_SDL2) + +namespace SoLoud +{ + result sdl2_init(SoLoud::Soloud *aSoloud, unsigned int aFlags, unsigned int aSamplerate, unsigned int aBuffer) + { + return NOT_IMPLEMENTED; + } +} + +#else + +#if defined(_MSC_VER) +#include +#else +#include +#endif +#include + + +extern "C" +{ + int dll_SDL2_found(); + + Uint32 dll_SDL2_WasInit(Uint32 flags); + int dll_SDL2_InitSubSystem(Uint32 flags); + SDL_AudioDeviceID dll_SDL2_OpenAudioDevice(const char* device, + int iscapture, + const SDL_AudioSpec* desired, + SDL_AudioSpec* obtained, + int allowed_changes); + void dll_SDL2_CloseAudioDevice(SDL_AudioDeviceID dev); + void dll_SDL2_PauseAudioDevice(SDL_AudioDeviceID dev, + int pause_on); +}; + + +namespace SoLoud +{ + static SDL_AudioSpec gActiveAudioSpec; + static SDL_AudioDeviceID gAudioDeviceID; + + void soloud_sdl2_audiomixer(void *userdata, Uint8 *stream, int len) + { + short *buf = (short*)stream; + SoLoud::Soloud *soloud = (SoLoud::Soloud *)userdata; + if (gActiveAudioSpec.format == AUDIO_F32) + { + int samples = len / (gActiveAudioSpec.channels * sizeof(float)); + soloud->mix((float *)buf, samples); + } + else // assume s16 if not float + { + int samples = len / (gActiveAudioSpec.channels * sizeof(short)); + soloud->mixSigned16(buf, samples); + } + } + + static void soloud_sdl2_deinit(SoLoud::Soloud *aSoloud) + { + dll_SDL2_CloseAudioDevice(gAudioDeviceID); + } + + result sdl2_init(SoLoud::Soloud *aSoloud, unsigned int aFlags, unsigned int aSamplerate, unsigned int aBuffer, unsigned int aChannels) + { + if (!dll_SDL2_found()) + return DLL_NOT_FOUND; + + if (!dll_SDL2_WasInit(SDL_INIT_AUDIO)) + { + if (dll_SDL2_InitSubSystem(SDL_INIT_AUDIO) < 0) + { + return UNKNOWN_ERROR; + } + } + + SDL_AudioSpec as; + as.freq = aSamplerate; + as.format = AUDIO_F32; + as.channels = aChannels; + as.samples = aBuffer; + as.callback = soloud_sdl2_audiomixer; + as.userdata = (void*)aSoloud; + + gAudioDeviceID = dll_SDL2_OpenAudioDevice(NULL, 0, &as, &gActiveAudioSpec, SDL_AUDIO_ALLOW_ANY_CHANGE & ~(SDL_AUDIO_ALLOW_FORMAT_CHANGE | SDL_AUDIO_ALLOW_CHANNELS_CHANGE)); + if (gAudioDeviceID == 0) + { + as.format = AUDIO_S16; + gAudioDeviceID = dll_SDL2_OpenAudioDevice(NULL, 0, &as, &gActiveAudioSpec, SDL_AUDIO_ALLOW_ANY_CHANGE & ~(SDL_AUDIO_ALLOW_FORMAT_CHANGE | SDL_AUDIO_ALLOW_CHANNELS_CHANGE)); + if (gAudioDeviceID == 0) + { + return UNKNOWN_ERROR; + } + } + + aSoloud->postinit(gActiveAudioSpec.freq, gActiveAudioSpec.samples, aFlags, gActiveAudioSpec.channels); + + aSoloud->mBackendCleanupFunc = soloud_sdl2_deinit; + + dll_SDL2_PauseAudioDevice(gAudioDeviceID, 0); + aSoloud->mBackendString = "SDL2 (dynamic)"; + return 0; + } + +}; +#endif \ No newline at end of file diff --git a/src/soloud/src/backend/sdl/soloud_sdl2_dll.c b/src/soloud/src/backend/sdl/soloud_sdl2_dll.c new file mode 100644 index 0000000..d67ba66 --- /dev/null +++ b/src/soloud/src/backend/sdl/soloud_sdl2_dll.c @@ -0,0 +1,160 @@ +/* +SoLoud audio engine +Copyright (c) 2013-2018 Jari Komppa + +This software is provided 'as-is', without any express or implied +warranty. In no event will the authors be held liable for any damages +arising from the use of this software. + +Permission is granted to anyone to use this software for any purpose, +including commercial applications, and to alter it and redistribute it +freely, subject to the following restrictions: + + 1. The origin of this software must not be misrepresented; you must not + claim that you wrote the original software. If you use this software + in a product, an acknowledgment in the product documentation would be + appreciated but is not required. + + 2. Altered source versions must be plainly marked as such, and must not be + misrepresented as being the original software. + + 3. This notice may not be removed or altered from any source + distribution. +*/ +#include +#if defined(_MSC_VER) +#define WINDOWS_VERSION +#include +#else +#include +#endif +#include + + +typedef Uint32 (*SDL2_WasInit_t)(Uint32 flags); +typedef int (*SDL2_InitSubSystem_t)(Uint32 flags); +typedef SDL_AudioDeviceID (*SDL2_OpenAudioDevice_t)(const char* device, + int iscapture, + const SDL_AudioSpec* desired, + SDL_AudioSpec* obtained, + int allowed_changes); +typedef void (*SDL2_CloseAudioDevice_t)(SDL_AudioDeviceID dev); +typedef void (*SDL2_PauseAudioDevice_t)(SDL_AudioDeviceID dev, + int pause_on); + +static SDL2_WasInit_t SDL2_WasInit = NULL; +static SDL2_InitSubSystem_t SDL2_InitSubSystem = NULL; +static SDL2_OpenAudioDevice_t SDL2_OpenAudioDevice = NULL; +static SDL2_CloseAudioDevice_t SDL2_CloseAudioDevice = NULL; +static SDL2_PauseAudioDevice_t SDL2_PauseAudioDevice = NULL; + +#ifdef WINDOWS_VERSION +#include + +static HMODULE openDll() +{ + HMODULE res = LoadLibraryA("SDL2.dll"); + return res; +} + +static void* getDllProc(HMODULE aDllHandle, const char *aProcName) +{ + return GetProcAddress(aDllHandle, aProcName); +} + +#else +#include // dll functions + +static void * openDll() +{ + void * res; + res = dlopen("/Library/Frameworks/SDL2.framework/SDL2", RTLD_LAZY); + if (!res) res = dlopen("SDL2.so", RTLD_LAZY); + return res; +} + +static void* getDllProc(void * aLibrary, const char *aProcName) +{ + return dlsym(aLibrary, aProcName); +} + +#endif + +static int load_dll() +{ +#ifdef WINDOWS_VERSION + HMODULE dll = NULL; +#else + void * dll = NULL; +#endif + + if (SDL2_OpenAudioDevice != NULL) + { + return 1; + } + + dll = openDll(); + + if (dll) + { + SDL2_WasInit = (SDL2_WasInit_t)getDllProc(dll, "SDL_WasInit"); + SDL2_InitSubSystem = (SDL2_InitSubSystem_t)getDllProc(dll, "SDL_InitSubSystem"); + SDL2_OpenAudioDevice = (SDL2_OpenAudioDevice_t)getDllProc(dll, "SDL_OpenAudioDevice"); + SDL2_CloseAudioDevice = (SDL2_CloseAudioDevice_t)getDllProc(dll, "SDL_CloseAudioDevice"); + SDL2_PauseAudioDevice = (SDL2_PauseAudioDevice_t)getDllProc(dll, "SDL_PauseAudioDevice"); + + if (SDL2_WasInit && + SDL2_InitSubSystem && + SDL2_OpenAudioDevice && + SDL2_CloseAudioDevice && + SDL2_PauseAudioDevice) + { + return 1; + } + } + SDL2_OpenAudioDevice = NULL; + return 0; +} + +int dll_SDL2_found() +{ + return load_dll(); +} + +Uint32 dll_SDL2_WasInit(Uint32 flags) +{ + if (SDL2_WasInit) + return SDL2_WasInit(flags); + return 0; +} + +int dll_SDL2_InitSubSystem(Uint32 flags) +{ + if (SDL2_InitSubSystem) + return SDL2_InitSubSystem(flags); + return -1; +} + +SDL_AudioDeviceID dll_SDL2_OpenAudioDevice(const char* device, + int iscapture, + const SDL_AudioSpec* desired, + SDL_AudioSpec* obtained, + int allowed_changes) +{ + if (SDL2_OpenAudioDevice) + return SDL2_OpenAudioDevice(device, iscapture, desired, obtained, allowed_changes); + return 0; +} + +void dll_SDL2_CloseAudioDevice(SDL_AudioDeviceID dev) +{ + if (SDL2_CloseAudioDevice) + SDL2_CloseAudioDevice(dev); +} + +void dll_SDL2_PauseAudioDevice(SDL_AudioDeviceID dev, + int pause_on) +{ + if (SDL2_PauseAudioDevice) + SDL2_PauseAudioDevice(dev, pause_on); +} diff --git a/src/soloud/src/backend/sdl2_static/soloud_sdl2_static.cpp b/src/soloud/src/backend/sdl2_static/soloud_sdl2_static.cpp new file mode 100644 index 0000000..25744f3 --- /dev/null +++ b/src/soloud/src/backend/sdl2_static/soloud_sdl2_static.cpp @@ -0,0 +1,111 @@ +/* +SoLoud audio engine +Copyright (c) 2013-2015 Jari Komppa + +This software is provided 'as-is', without any express or implied +warranty. In no event will the authors be held liable for any damages +arising from the use of this software. + +Permission is granted to anyone to use this software for any purpose, +including commercial applications, and to alter it and redistribute it +freely, subject to the following restrictions: + + 1. The origin of this software must not be misrepresented; you must not + claim that you wrote the original software. If you use this software + in a product, an acknowledgment in the product documentation would be + appreciated but is not required. + + 2. Altered source versions must be plainly marked as such, and must not be + misrepresented as being the original software. + + 3. This notice may not be removed or altered from any source + distribution. +*/ +#include + +#include "soloud.h" + +#if !defined(WITH_SDL2_STATIC) + +namespace SoLoud +{ + result sdl2static_init(SoLoud::Soloud *aSoloud, unsigned int aFlags, unsigned int aSamplerate, unsigned int aBuffer) + { + return NOT_IMPLEMENTED; + } +} + +#else + +#if defined(_MSC_VER) +#include +#else +#include +#endif +#include + +namespace SoLoud +{ + static SDL_AudioSpec gActiveAudioSpec; + static SDL_AudioDeviceID gAudioDeviceID; + + void soloud_sdl2static_audiomixer(void *userdata, Uint8 *stream, int len) + { + short *buf = (short*)stream; + SoLoud::Soloud *soloud = (SoLoud::Soloud *)userdata; + if (gActiveAudioSpec.format == AUDIO_F32) + { + int samples = len / (gActiveAudioSpec.channels * sizeof(float)); + soloud->mix((float *)buf, samples); + } + else // assume s16 if not float + { + int samples = len / (gActiveAudioSpec.channels * sizeof(short)); + soloud->mixSigned16(buf, samples); + } + } + + static void soloud_sdl2static_deinit(SoLoud::Soloud *aSoloud) + { + SDL_CloseAudioDevice(gAudioDeviceID); + } + + result sdl2static_init(SoLoud::Soloud *aSoloud, unsigned int aFlags, unsigned int aSamplerate, unsigned int aBuffer, unsigned int aChannels) + { + if (!SDL_WasInit(SDL_INIT_AUDIO)) + { + if (SDL_InitSubSystem(SDL_INIT_AUDIO) < 0) + { + return UNKNOWN_ERROR; + } + } + + SDL_AudioSpec as; + as.freq = aSamplerate; + as.format = AUDIO_F32; + as.channels = aChannels; + as.samples = aBuffer; + as.callback = soloud_sdl2static_audiomixer; + as.userdata = (void*)aSoloud; + + gAudioDeviceID = SDL_OpenAudioDevice(NULL, 0, &as, &gActiveAudioSpec, SDL_AUDIO_ALLOW_ANY_CHANGE & ~(SDL_AUDIO_ALLOW_FORMAT_CHANGE | SDL_AUDIO_ALLOW_CHANNELS_CHANGE)); + if (gAudioDeviceID == 0) + { + as.format = AUDIO_S16; + gAudioDeviceID = SDL_OpenAudioDevice(NULL, 0, &as, &gActiveAudioSpec, SDL_AUDIO_ALLOW_ANY_CHANGE & ~(SDL_AUDIO_ALLOW_FORMAT_CHANGE | SDL_AUDIO_ALLOW_CHANNELS_CHANGE)); + if (gAudioDeviceID == 0) + { + return UNKNOWN_ERROR; + } + } + + aSoloud->postinit(gActiveAudioSpec.freq, gActiveAudioSpec.samples, aFlags, gActiveAudioSpec.channels); + + aSoloud->mBackendCleanupFunc = soloud_sdl2static_deinit; + + SDL_PauseAudioDevice(gAudioDeviceID, 0); + aSoloud->mBackendString = "SDL2 (static)"; + return 0; + } +}; +#endif \ No newline at end of file diff --git a/src/soloud/src/backend/sdl_static/soloud_sdl_static.cpp b/src/soloud/src/backend/sdl_static/soloud_sdl_static.cpp new file mode 100644 index 0000000..f7d9408 --- /dev/null +++ b/src/soloud/src/backend/sdl_static/soloud_sdl_static.cpp @@ -0,0 +1,89 @@ +/* +SoLoud audio engine +Copyright (c) 2013-2014 Jari Komppa + +This software is provided 'as-is', without any express or implied +warranty. In no event will the authors be held liable for any damages +arising from the use of this software. + +Permission is granted to anyone to use this software for any purpose, +including commercial applications, and to alter it and redistribute it +freely, subject to the following restrictions: + + 1. The origin of this software must not be misrepresented; you must not + claim that you wrote the original software. If you use this software + in a product, an acknowledgment in the product documentation would be + appreciated but is not required. + + 2. Altered source versions must be plainly marked as such, and must not be + misrepresented as being the original software. + + 3. This notice may not be removed or altered from any source + distribution. +*/ +#include + +#include "soloud.h" + +#if !defined(WITH_SDL_STATIC) + +namespace SoLoud +{ + result sdlstatic_init(SoLoud::Soloud *aSoloud, unsigned int aFlags, unsigned int aSamplerate, unsigned int aBuffer) + { + return NOT_IMPLEMENTED; + } +} + +#else + +#if defined(_MSC_VER) +#include +#else +#include +#endif +#include + + +namespace SoLoud +{ + static SDL_AudioSpec gActiveAudioSpec; + void soloud_sdlstatic_audiomixer(void *userdata, Uint8 *stream, int len) + { + short *buf = (short*)stream; + SoLoud::Soloud *soloud = (SoLoud::Soloud *)userdata; + int samples = len / (gActiveAudioSpec.channels * sizeof(short)); + soloud->mixSigned16(buf, samples); + } + + static void soloud_sdlstatic_deinit(SoLoud::Soloud *aSoloud) + { + SDL_CloseAudio(); + } + + result sdlstatic_init(SoLoud::Soloud *aSoloud, unsigned int aFlags, unsigned int aSamplerate, unsigned int aBuffer, unsigned int aChannels) + { + SDL_AudioSpec as; + as.freq = aSamplerate; + as.format = AUDIO_S16; + as.channels = aChannels; + as.samples = aBuffer; + as.callback = soloud_sdlstatic_audiomixer; + as.userdata = (void*)aSoloud; + + if (SDL_OpenAudio(&as, &gActiveAudioSpec) < 0) + { + return UNKNOWN_ERROR; + } + + aSoloud->postinit(gActiveAudioSpec.freq, gActiveAudioSpec.samples, aFlags, gActiveAudioSpec.channels); + + aSoloud->mBackendCleanupFunc = soloud_sdlstatic_deinit; + + SDL_PauseAudio(0); + aSoloud->mBackendString = "SDL1 (static)"; + return 0; + } + +}; +#endif \ No newline at end of file diff --git a/src/soloud/src/backend/wasapi/soloud_wasapi.cpp b/src/soloud/src/backend/wasapi/soloud_wasapi.cpp new file mode 100644 index 0000000..5e87844 --- /dev/null +++ b/src/soloud/src/backend/wasapi/soloud_wasapi.cpp @@ -0,0 +1,203 @@ +/* +SoLoud audio engine +Copyright (c) 2013-2014 Jari Komppa + +This software is provided 'as-is', without any express or implied +warranty. In no event will the authors be held liable for any damages +arising from the use of this software. + +Permission is granted to anyone to use this software for any purpose, +including commercial applications, and to alter it and redistribute it +freely, subject to the following restrictions: + + 1. The origin of this software must not be misrepresented; you must not + claim that you wrote the original software. If you use this software + in a product, an acknowledgment in the product documentation would be + appreciated but is not required. + + 2. Altered source versions must be plainly marked as such, and must not be + misrepresented as being the original software. + + 3. This notice may not be removed or altered from any source + distribution. +*/ + +#include "soloud.h" +#include "soloud_thread.h" + +#if !defined(WITH_WASAPI) + +namespace SoLoud +{ + result wasapi_init(Soloud *aSoloud, unsigned int aFlags, unsigned int aSamplerate, unsigned int aBuffer) + { + return NOT_IMPLEMENTED; + } +}; + +#else + +#include +#include +#include + +#define SAFE_RELEASE(x) \ + if (0 != (x)) \ + { \ + (x)->Release(); \ + (x) = 0; \ + } + +namespace SoLoud +{ + struct WASAPIData + { + IMMDeviceEnumerator *deviceEnumerator; + IMMDevice *device; + IAudioClient *audioClient; + IAudioRenderClient *renderClient; + HANDLE bufferEndEvent; + HANDLE audioProcessingDoneEvent; + Thread::ThreadHandle thread; + Soloud *soloud; + UINT32 bufferFrames; + int channels; + }; + + static void wasapiSubmitBuffer(WASAPIData *aData, UINT32 aFrames) + { + BYTE *buffer = 0; + if (FAILED(aData->renderClient->GetBuffer(aFrames, &buffer))) + { + return; + } + aData->soloud->mixSigned16((short *)buffer, aFrames); + aData->renderClient->ReleaseBuffer(aFrames, 0); + } + + static void wasapiThread(LPVOID aParam) + { + WASAPIData *data = static_cast(aParam); + wasapiSubmitBuffer(data, data->bufferFrames); + data->audioClient->Start(); + while (WAIT_OBJECT_0 != WaitForSingleObject(data->audioProcessingDoneEvent, 0)) + { + WaitForSingleObject(data->bufferEndEvent, INFINITE); + UINT32 padding = 0; + if (FAILED(data->audioClient->GetCurrentPadding(&padding))) + { + continue; + } + UINT32 frames = data->bufferFrames - padding; + wasapiSubmitBuffer(data, frames); + } + } + + static void wasapiCleanup(Soloud *aSoloud) + { + if (0 == aSoloud->mBackendData) + { + return; + } + WASAPIData *data = static_cast(aSoloud->mBackendData); + SetEvent(data->audioProcessingDoneEvent); + SetEvent(data->bufferEndEvent); + if (data->thread) + { + Thread::wait(data->thread); + Thread::release(data->thread); + } + CloseHandle(data->bufferEndEvent); + CloseHandle(data->audioProcessingDoneEvent); + if (0 != data->audioClient) + { + data->audioClient->Stop(); + } + SAFE_RELEASE(data->renderClient); + SAFE_RELEASE(data->audioClient); + SAFE_RELEASE(data->device); + SAFE_RELEASE(data->deviceEnumerator); + delete data; + aSoloud->mBackendData = 0; + CoUninitialize(); + } + + result wasapi_init(Soloud *aSoloud, unsigned int aFlags, unsigned int aSamplerate, unsigned int aBuffer, unsigned int aChannels) + { + return UNKNOWN_ERROR; + CoInitializeEx(0, COINIT_MULTITHREADED); + WASAPIData *data = new WASAPIData; + ZeroMemory(data, sizeof(WASAPIData)); + aSoloud->mBackendData = data; + aSoloud->mBackendCleanupFunc = wasapiCleanup; + + data->bufferEndEvent = CreateEvent(0, FALSE, FALSE, 0); + if (0 == data->bufferEndEvent) + { + return UNKNOWN_ERROR; + } + data->audioProcessingDoneEvent = CreateEvent(0, FALSE, FALSE, 0); + if (0 == data->audioProcessingDoneEvent) + { + return UNKNOWN_ERROR; + } + if (FAILED(CoCreateInstance(__uuidof(MMDeviceEnumerator), 0, CLSCTX_ALL, + __uuidof(IMMDeviceEnumerator), + reinterpret_cast(&data->deviceEnumerator)))) + { + return UNKNOWN_ERROR; + } + if (FAILED(data->deviceEnumerator->GetDefaultAudioEndpoint(eRender, eConsole, + &data->device))) + { + return UNKNOWN_ERROR; + } + if (FAILED(data->device->Activate(__uuidof(IAudioClient), CLSCTX_ALL, 0, + reinterpret_cast(&data->audioClient)))) + { + return UNKNOWN_ERROR; + } + WAVEFORMATEX format; + ZeroMemory(&format, sizeof(WAVEFORMATEX)); + format.nChannels = aChannels; + format.nSamplesPerSec = aSamplerate; + format.wFormatTag = WAVE_FORMAT_PCM; + format.wBitsPerSample = sizeof(short)*8; + format.nBlockAlign = (format.nChannels*format.wBitsPerSample)/8; + format.nAvgBytesPerSec = format.nSamplesPerSec*format.nBlockAlign; + REFERENCE_TIME dur = static_cast(static_cast(aBuffer) + / (static_cast(aSamplerate)*(1.0/10000000.0))); + HRESULT res = data->audioClient->Initialize(AUDCLNT_SHAREMODE_SHARED, + AUDCLNT_STREAMFLAGS_EVENTCALLBACK, + dur, 0, &format, 0); + if (FAILED(res)) + { + return UNKNOWN_ERROR; + } + data->bufferFrames = 0; + if (FAILED(data->audioClient->GetBufferSize(&data->bufferFrames))) + { + return UNKNOWN_ERROR; + } + if (FAILED(data->audioClient->GetService(__uuidof(IAudioRenderClient), + reinterpret_cast(&data->renderClient)))) + { + return UNKNOWN_ERROR; + } + if (FAILED(data->audioClient->SetEventHandle(data->bufferEndEvent))) + { + return UNKNOWN_ERROR; + } + data->channels = format.nChannels; + data->soloud = aSoloud; + aSoloud->postinit(aSamplerate, data->bufferFrames * format.nChannels, aFlags, 2); + data->thread = Thread::createThread(wasapiThread, data); + if (0 == data->thread) + { + return UNKNOWN_ERROR; + } + aSoloud->mBackendString = "WASAPI"; + return 0; + } +}; +#endif \ No newline at end of file diff --git a/src/soloud/src/backend/winmm/soloud_winmm.cpp b/src/soloud/src/backend/winmm/soloud_winmm.cpp new file mode 100644 index 0000000..dd78134 --- /dev/null +++ b/src/soloud/src/backend/winmm/soloud_winmm.cpp @@ -0,0 +1,174 @@ +/* +SoLoud audio engine +Copyright (c) 2013-2014 Jari Komppa + +This software is provided 'as-is', without any express or implied +warranty. In no event will the authors be held liable for any damages +arising from the use of this software. + +Permission is granted to anyone to use this software for any purpose, +including commercial applications, and to alter it and redistribute it +freely, subject to the following restrictions: + + 1. The origin of this software must not be misrepresented; you must not + claim that you wrote the original software. If you use this software + in a product, an acknowledgment in the product documentation would be + appreciated but is not required. + + 2. Altered source versions must be plainly marked as such, and must not be + misrepresented as being the original software. + + 3. This notice may not be removed or altered from any source + distribution. +*/ + +#include "soloud.h" +#include "soloud_thread.h" + +#if !defined(WITH_WINMM) + +namespace SoLoud +{ + result winmm_init(Soloud *aSoloud, unsigned int aFlags, unsigned int aSamplerate, unsigned int aBuffer) + { + return NOT_IMPLEMENTED; + } +}; + +#else + +#include +#include + +#ifdef _MSC_VER +#pragma comment(lib, "winmm.lib") +#endif + +namespace SoLoud +{ + static const int BUFFER_COUNT = 2; + + struct SoLoudWinMMData + { + AlignedFloatBuffer buffer; + short *sampleBuffer[BUFFER_COUNT]; + WAVEHDR header[BUFFER_COUNT]; + HWAVEOUT waveOut; + HANDLE bufferEndEvent; + HANDLE audioProcessingDoneEvent; + Soloud *soloud; + int samples; + Thread::ThreadHandle threadHandle; + }; + + static void winMMThread(LPVOID aParam) + { + SoLoudWinMMData *data = static_cast(aParam); + while (WAIT_OBJECT_0 != WaitForSingleObject(data->audioProcessingDoneEvent, 0)) + { + for (int i=0;iheader[i].dwFlags & WHDR_INQUEUE)) + { + continue; + } + short *tgtBuf = data->sampleBuffer[i]; + + data->soloud->mixSigned16(tgtBuf, data->samples); + + if (MMSYSERR_NOERROR != waveOutWrite(data->waveOut, &data->header[i], + sizeof(WAVEHDR))) + { + return; + } + } + WaitForSingleObject(data->bufferEndEvent, INFINITE); + } + } + + static void winMMCleanup(Soloud *aSoloud) + { + if (0 == aSoloud->mBackendData) + { + return; + } + SoLoudWinMMData *data = static_cast(aSoloud->mBackendData); + SetEvent(data->audioProcessingDoneEvent); + SetEvent(data->bufferEndEvent); + if (data->threadHandle) + { + Thread::wait(data->threadHandle); + Thread::release(data->threadHandle); + } + waveOutReset(data->waveOut); + for (int i=0;iwaveOut, &data->header[i], sizeof(WAVEHDR)); + if (0 != data->sampleBuffer[i]) + { + delete[] data->sampleBuffer[i]; + } + } + waveOutClose(data->waveOut); + CloseHandle(data->audioProcessingDoneEvent); + CloseHandle(data->bufferEndEvent); + delete data; + aSoloud->mBackendData = 0; + } + + result winmm_init(Soloud *aSoloud, unsigned int aFlags, unsigned int aSamplerate, unsigned int aBuffer, unsigned int aChannels) + { + SoLoudWinMMData *data = new SoLoudWinMMData; + ZeroMemory(data, sizeof(SoLoudWinMMData)); + aSoloud->mBackendData = data; + aSoloud->mBackendCleanupFunc = winMMCleanup; + data->samples = aBuffer; + data->soloud = aSoloud; + data->bufferEndEvent = CreateEvent(0, FALSE, FALSE, 0); + if (0 == data->bufferEndEvent) + { + return UNKNOWN_ERROR; + } + data->audioProcessingDoneEvent = CreateEvent(0, FALSE, FALSE, 0); + if (0 == data->audioProcessingDoneEvent) + { + return UNKNOWN_ERROR; + } + WAVEFORMATEX format; + ZeroMemory(&format, sizeof(WAVEFORMATEX)); + format.nChannels = aChannels; + format.nSamplesPerSec = aSamplerate; + format.wFormatTag = WAVE_FORMAT_PCM; + format.wBitsPerSample = sizeof(short)*8; + format.nBlockAlign = (format.nChannels*format.wBitsPerSample)/8; + format.nAvgBytesPerSec = format.nSamplesPerSec*format.nBlockAlign; + if (MMSYSERR_NOERROR != waveOutOpen(&data->waveOut, WAVE_MAPPER, &format, + reinterpret_cast(data->bufferEndEvent), 0, CALLBACK_EVENT)) + { + return UNKNOWN_ERROR; + } + data->buffer.init(data->samples*format.nChannels); + for (int i=0;isampleBuffer[i] = new short[data->samples*format.nChannels]; + ZeroMemory(&data->header[i], sizeof(WAVEHDR)); + data->header[i].dwBufferLength = data->samples*sizeof(short)*format.nChannels; + data->header[i].lpData = reinterpret_cast(data->sampleBuffer[i]); + if (MMSYSERR_NOERROR != waveOutPrepareHeader(data->waveOut, &data->header[i], + sizeof(WAVEHDR))) + { + return UNKNOWN_ERROR; + } + } + aSoloud->postinit(aSamplerate, data->samples * format.nChannels, aFlags, aChannels); + data->threadHandle = Thread::createThread(winMMThread, data); + if (0 == data->threadHandle) + { + return UNKNOWN_ERROR; + } + aSoloud->mBackendString = "WinMM"; + return 0; + } +}; + +#endif \ No newline at end of file diff --git a/src/soloud/src/backend/xaudio2/soloud_xaudio2.cpp b/src/soloud/src/backend/xaudio2/soloud_xaudio2.cpp new file mode 100644 index 0000000..1dd1ed9 --- /dev/null +++ b/src/soloud/src/backend/xaudio2/soloud_xaudio2.cpp @@ -0,0 +1,247 @@ +/* +SoLoud audio engine +Copyright (c) 2013-2014 Jari Komppa + +This software is provided 'as-is', without any express or implied +warranty. In no event will the authors be held liable for any damages +arising from the use of this software. + +Permission is granted to anyone to use this software for any purpose, +including commercial applications, and to alter it and redistribute it +freely, subject to the following restrictions: + + 1. The origin of this software must not be misrepresented; you must not + claim that you wrote the original software. If you use this software + in a product, an acknowledgment in the product documentation would be + appreciated but is not required. + + 2. Altered source versions must be plainly marked as such, and must not be + misrepresented as being the original software. + + 3. This notice may not be removed or altered from any source + distribution. +*/ + +#include "soloud.h" +#include "soloud_thread.h" + +#if !defined(WITH_XAUDIO2) + +namespace SoLoud +{ + result xaudio2_init(Soloud *aSoloud, unsigned int aFlags, unsigned int aSamplerate, unsigned int aBuffer) + { + return NOT_IMPLEMENTED; + } +}; + +#else + +#include + +#ifdef _MSC_VER +#include +#pragma comment(lib, "xaudio2.lib") +#else +#include "backend/xaudio2/xaudio2.h" +#endif + +namespace SoLoud +{ + static const int BUFFER_COUNT = 2; + + struct XAudio2Data + { + float *buffer[BUFFER_COUNT]; + IXAudio2 *xaudio2; + IXAudio2MasteringVoice *masteringVoice; + IXAudio2SourceVoice *sourceVoice; + HANDLE bufferEndEvent; + HANDLE audioProcessingDoneEvent; + class VoiceCallback *voiceCb; + Thread::ThreadHandle thread; + Soloud *soloud; + int samples; + UINT32 bufferLengthBytes; + }; + + class VoiceCallback : public IXAudio2VoiceCallback + { + public: + VoiceCallback(HANDLE aBufferEndEvent) + : IXAudio2VoiceCallback(), mBufferEndEvent(aBufferEndEvent) {} + virtual ~VoiceCallback() {} + + private: + // Called just before this voice's processing pass begins. + void __stdcall OnVoiceProcessingPassStart(UINT32 aBytesRequired) {} + + // Called just after this voice's processing pass ends. + void __stdcall OnVoiceProcessingPassEnd() {} + + // Called when this voice has just finished playing a buffer stream + // (as marked with the XAUDIO2_END_OF_STREAM flag on the last buffer). + void __stdcall OnStreamEnd() {} + + // Called when this voice is about to start processing a new buffer. + void __stdcall OnBufferStart(void *aBufferContext) {} + + // Called when this voice has just finished processing a buffer. + // The buffer can now be reused or destroyed. + void __stdcall OnBufferEnd(void *aBufferContext) + { + SetEvent(mBufferEndEvent); + } + + // Called when this voice has just reached the end position of a loop. + void __stdcall OnLoopEnd(void *aBufferContext) {} + + // Called in the event of a critical error during voice processing, + // such as a failing xAPO or an error from the hardware XMA decoder. + // The voice may have to be destroyed and re-created to recover from + // the error. The callback arguments report which buffer was being + // processed when the error occurred, and its HRESULT code. + void __stdcall OnVoiceError(void *aBufferContext, HRESULT aError) {} + + HANDLE mBufferEndEvent; + }; + + static void xaudio2Thread(LPVOID aParam) + { + XAudio2Data *data = static_cast(aParam); + int bufferIndex = 0; + while (WAIT_OBJECT_0 != WaitForSingleObject(data->audioProcessingDoneEvent, 0)) + { + XAUDIO2_VOICE_STATE state; + data->sourceVoice->GetState(&state); + while (state.BuffersQueued < BUFFER_COUNT) + { + data->soloud->mix(data->buffer[bufferIndex], data->samples); + XAUDIO2_BUFFER info = {0}; + info.AudioBytes = data->bufferLengthBytes; + info.pAudioData = reinterpret_cast(data->buffer[bufferIndex]); + data->sourceVoice->SubmitSourceBuffer(&info); + ++bufferIndex; + if (bufferIndex >= BUFFER_COUNT) + { + bufferIndex = 0; + } + data->sourceVoice->GetState(&state); + } + WaitForSingleObject(data->bufferEndEvent, INFINITE); + } + } + + static void xaudio2Cleanup(Soloud *aSoloud) + { + if (0 == aSoloud->mBackendData) + { + return; + } + XAudio2Data *data = static_cast(aSoloud->mBackendData); + SetEvent(data->audioProcessingDoneEvent); + SetEvent(data->bufferEndEvent); + Thread::wait(data->thread); + Thread::release(data->thread); + if (0 != data->sourceVoice) + { + data->sourceVoice->Stop(); + data->sourceVoice->FlushSourceBuffers(); + } + if (0 != data->xaudio2) + { + data->xaudio2->StopEngine(); + } + if (0 != data->sourceVoice) + { + data->sourceVoice->DestroyVoice(); + } + if (0 != data->voiceCb) + { + delete data->voiceCb; + } + if (0 != data->masteringVoice) + { + data->masteringVoice->DestroyVoice(); + } + if (0 != data->xaudio2) + { + data->xaudio2->Release(); + } + for (int i=0;ibuffer[i]) + { + delete[] data->buffer[i]; + } + } + CloseHandle(data->bufferEndEvent); + CloseHandle(data->audioProcessingDoneEvent); + delete data; + aSoloud->mBackendData = 0; + CoUninitialize(); + } + + result xaudio2_init(Soloud *aSoloud, unsigned int aFlags, unsigned int aSamplerate, unsigned int aBuffer, unsigned int aChannels) + { + if (FAILED(CoInitializeEx(0, COINIT_MULTITHREADED))) + { + return UNKNOWN_ERROR; + } + XAudio2Data *data = new XAudio2Data; + ZeroMemory(data, sizeof(XAudio2Data)); + aSoloud->mBackendData = data; + aSoloud->mBackendCleanupFunc = xaudio2Cleanup; + data->bufferEndEvent = CreateEvent(0, FALSE, FALSE, 0); + if (0 == data->bufferEndEvent) + { + return UNKNOWN_ERROR; + } + data->audioProcessingDoneEvent = CreateEvent(0, FALSE, FALSE, 0); + if (0 == data->audioProcessingDoneEvent) + { + return UNKNOWN_ERROR; + } + WAVEFORMATEX format; + ZeroMemory(&format, sizeof(WAVEFORMATEX)); + format.nChannels = 2; + format.nSamplesPerSec = aSamplerate; + format.wFormatTag = WAVE_FORMAT_IEEE_FLOAT; + format.nAvgBytesPerSec = aSamplerate*sizeof(float)*format.nChannels; + format.nBlockAlign = sizeof(float)*format.nChannels; + format.wBitsPerSample = sizeof(float)*8; + if (FAILED(XAudio2Create(&data->xaudio2))) + { + return UNKNOWN_ERROR; + } + if (FAILED(data->xaudio2->CreateMasteringVoice(&data->masteringVoice, + format.nChannels, aSamplerate))) + { + return UNKNOWN_ERROR; + } + data->voiceCb = new VoiceCallback(data->bufferEndEvent); + if (FAILED(data->xaudio2->CreateSourceVoice(&data->sourceVoice, + &format, XAUDIO2_VOICE_NOSRC|XAUDIO2_VOICE_NOPITCH, 2.f, data->voiceCb))) + { + return UNKNOWN_ERROR; + } + data->bufferLengthBytes = aBuffer * format.nChannels * sizeof(float); + for (int i=0;ibuffer[i] = new float[aBuffer * format.nChannels]; + } + data->samples = aBuffer; + data->soloud = aSoloud; + aSoloud->postinit(aSamplerate, aBuffer * format.nChannels, aFlags, 2); + data->thread = Thread::createThread(xaudio2Thread, data); + if (0 == data->thread) + { + return UNKNOWN_ERROR; + } + data->sourceVoice->Start(); + aSoloud->mBackendString = "XAudio2"; + return 0; + } +}; + +#endif \ No newline at end of file diff --git a/src/soloud/src/c_api/soloud.def b/src/soloud/src/c_api/soloud.def new file mode 100644 index 0000000..490fc3f --- /dev/null +++ b/src/soloud/src/c_api/soloud.def @@ -0,0 +1,395 @@ +EXPORTS + Soloud_destroy + Soloud_create + Soloud_init + Soloud_initEx + Soloud_deinit + Soloud_getVersion + Soloud_getErrorString + Soloud_getBackendId + Soloud_getBackendString + Soloud_getBackendChannels + Soloud_getBackendSamplerate + Soloud_getBackendBufferSize + Soloud_setSpeakerPosition + Soloud_getSpeakerPosition + Soloud_play + Soloud_playEx + Soloud_playClocked + Soloud_playClockedEx + Soloud_play3d + Soloud_play3dEx + Soloud_play3dClocked + Soloud_play3dClockedEx + Soloud_playBackground + Soloud_playBackgroundEx + Soloud_seek + Soloud_stop + Soloud_stopAll + Soloud_stopAudioSource + Soloud_countAudioSource + Soloud_setFilterParameter + Soloud_getFilterParameter + Soloud_fadeFilterParameter + Soloud_oscillateFilterParameter + Soloud_getStreamTime + Soloud_getStreamPosition + Soloud_getPause + Soloud_getVolume + Soloud_getOverallVolume + Soloud_getPan + Soloud_getSamplerate + Soloud_getProtectVoice + Soloud_getActiveVoiceCount + Soloud_getVoiceCount + Soloud_isValidVoiceHandle + Soloud_getRelativePlaySpeed + Soloud_getPostClipScaler + Soloud_getGlobalVolume + Soloud_getMaxActiveVoiceCount + Soloud_getLooping + Soloud_getLoopPoint + Soloud_setLoopPoint + Soloud_setLooping + Soloud_setMaxActiveVoiceCount + Soloud_setInaudibleBehavior + Soloud_setGlobalVolume + Soloud_setPostClipScaler + Soloud_setPause + Soloud_setPauseAll + Soloud_setRelativePlaySpeed + Soloud_setProtectVoice + Soloud_setSamplerate + Soloud_setPan + Soloud_setPanAbsolute + Soloud_setPanAbsoluteEx + Soloud_setVolume + Soloud_setDelaySamples + Soloud_fadeVolume + Soloud_fadePan + Soloud_fadeRelativePlaySpeed + Soloud_fadeGlobalVolume + Soloud_schedulePause + Soloud_scheduleStop + Soloud_oscillateVolume + Soloud_oscillatePan + Soloud_oscillateRelativePlaySpeed + Soloud_oscillateGlobalVolume + Soloud_setGlobalFilter + Soloud_setVisualizationEnable + Soloud_calcFFT + Soloud_getWave + Soloud_getApproximateVolume + Soloud_getLoopCount + Soloud_getInfo + Soloud_createVoiceGroup + Soloud_destroyVoiceGroup + Soloud_addVoiceToGroup + Soloud_isVoiceGroup + Soloud_isVoiceGroupEmpty + Soloud_update3dAudio + Soloud_set3dSoundSpeed + Soloud_get3dSoundSpeed + Soloud_set3dListenerParameters + Soloud_set3dListenerParametersEx + Soloud_set3dListenerPosition + Soloud_set3dListenerAt + Soloud_set3dListenerUp + Soloud_set3dListenerVelocity + Soloud_set3dSourceParameters + Soloud_set3dSourceParametersEx + Soloud_set3dSourcePosition + Soloud_set3dSourceVelocity + Soloud_set3dSourceMinMaxDistance + Soloud_set3dSourceAttenuation + Soloud_set3dSourceDopplerFactor + Soloud_mix + Soloud_mixSigned16 + AudioAttenuator_destroy + AudioAttenuator_attenuate + BassboostFilter_destroy + BassboostFilter_setParams + BassboostFilter_create + BiquadResonantFilter_destroy + BiquadResonantFilter_create + BiquadResonantFilter_setParams + Bus_destroy + Bus_create + Bus_setFilter + Bus_play + Bus_playEx + Bus_playClocked + Bus_playClockedEx + Bus_play3d + Bus_play3dEx + Bus_play3dClocked + Bus_play3dClockedEx + Bus_setChannels + Bus_setVisualizationEnable + Bus_calcFFT + Bus_getWave + Bus_getApproximateVolume + Bus_setVolume + Bus_setLooping + Bus_set3dMinMaxDistance + Bus_set3dAttenuation + Bus_set3dDopplerFactor + Bus_set3dListenerRelative + Bus_set3dDistanceDelay + Bus_set3dCollider + Bus_set3dColliderEx + Bus_set3dAttenuator + Bus_setInaudibleBehavior + Bus_setLoopPoint + Bus_getLoopPoint + Bus_stop + DCRemovalFilter_destroy + DCRemovalFilter_create + DCRemovalFilter_setParams + DCRemovalFilter_setParamsEx + EchoFilter_destroy + EchoFilter_create + EchoFilter_setParams + EchoFilter_setParamsEx + FFTFilter_destroy + FFTFilter_create + FlangerFilter_destroy + FlangerFilter_create + FlangerFilter_setParams + LofiFilter_destroy + LofiFilter_create + LofiFilter_setParams + Monotone_destroy + Monotone_create + Monotone_setParams + Monotone_setParamsEx + Monotone_load + Monotone_loadMem + Monotone_loadMemEx + Monotone_loadFile + Monotone_setVolume + Monotone_setLooping + Monotone_set3dMinMaxDistance + Monotone_set3dAttenuation + Monotone_set3dDopplerFactor + Monotone_set3dListenerRelative + Monotone_set3dDistanceDelay + Monotone_set3dCollider + Monotone_set3dColliderEx + Monotone_set3dAttenuator + Monotone_setInaudibleBehavior + Monotone_setLoopPoint + Monotone_getLoopPoint + Monotone_setFilter + Monotone_stop + Openmpt_destroy + Openmpt_create + Openmpt_load + Openmpt_loadMem + Openmpt_loadMemEx + Openmpt_loadFile + Openmpt_setVolume + Openmpt_setLooping + Openmpt_set3dMinMaxDistance + Openmpt_set3dAttenuation + Openmpt_set3dDopplerFactor + Openmpt_set3dListenerRelative + Openmpt_set3dDistanceDelay + Openmpt_set3dCollider + Openmpt_set3dColliderEx + Openmpt_set3dAttenuator + Openmpt_setInaudibleBehavior + Openmpt_setLoopPoint + Openmpt_getLoopPoint + Openmpt_setFilter + Openmpt_stop + Queue_destroy + Queue_create + Queue_play + Queue_getQueueCount + Queue_isCurrentlyPlaying + Queue_setParamsFromAudioSource + Queue_setParams + Queue_setParamsEx + Queue_setVolume + Queue_setLooping + Queue_set3dMinMaxDistance + Queue_set3dAttenuation + Queue_set3dDopplerFactor + Queue_set3dListenerRelative + Queue_set3dDistanceDelay + Queue_set3dCollider + Queue_set3dColliderEx + Queue_set3dAttenuator + Queue_setInaudibleBehavior + Queue_setLoopPoint + Queue_getLoopPoint + Queue_setFilter + Queue_stop + RobotizeFilter_destroy + RobotizeFilter_create + Prg_destroy + Prg_create + Prg_rand + Prg_srand + Sfxr_destroy + Sfxr_create + Sfxr_resetParams + Sfxr_loadParams + Sfxr_loadParamsMem + Sfxr_loadParamsMemEx + Sfxr_loadParamsFile + Sfxr_loadPreset + Sfxr_setVolume + Sfxr_setLooping + Sfxr_set3dMinMaxDistance + Sfxr_set3dAttenuation + Sfxr_set3dDopplerFactor + Sfxr_set3dListenerRelative + Sfxr_set3dDistanceDelay + Sfxr_set3dCollider + Sfxr_set3dColliderEx + Sfxr_set3dAttenuator + Sfxr_setInaudibleBehavior + Sfxr_setLoopPoint + Sfxr_getLoopPoint + Sfxr_setFilter + Sfxr_stop + Speech_destroy + Speech_create + Speech_setText + Speech_setParams + Speech_setParamsEx + Speech_setVolume + Speech_setLooping + Speech_set3dMinMaxDistance + Speech_set3dAttenuation + Speech_set3dDopplerFactor + Speech_set3dListenerRelative + Speech_set3dDistanceDelay + Speech_set3dCollider + Speech_set3dColliderEx + Speech_set3dAttenuator + Speech_setInaudibleBehavior + Speech_setLoopPoint + Speech_getLoopPoint + Speech_setFilter + Speech_stop + TedSid_destroy + TedSid_create + TedSid_load + TedSid_loadToMem + TedSid_loadMem + TedSid_loadMemEx + TedSid_loadFileToMem + TedSid_loadFile + TedSid_setVolume + TedSid_setLooping + TedSid_set3dMinMaxDistance + TedSid_set3dAttenuation + TedSid_set3dDopplerFactor + TedSid_set3dListenerRelative + TedSid_set3dDistanceDelay + TedSid_set3dCollider + TedSid_set3dColliderEx + TedSid_set3dAttenuator + TedSid_setInaudibleBehavior + TedSid_setLoopPoint + TedSid_getLoopPoint + TedSid_setFilter + TedSid_stop + Vic_destroy + Vic_create + Vic_setModel + Vic_getModel + Vic_setRegister + Vic_getRegister + Vic_setVolume + Vic_setLooping + Vic_set3dMinMaxDistance + Vic_set3dAttenuation + Vic_set3dDopplerFactor + Vic_set3dListenerRelative + Vic_set3dDistanceDelay + Vic_set3dCollider + Vic_set3dColliderEx + Vic_set3dAttenuator + Vic_setInaudibleBehavior + Vic_setLoopPoint + Vic_getLoopPoint + Vic_setFilter + Vic_stop + Vizsn_destroy + Vizsn_create + Vizsn_setText + Vizsn_setVolume + Vizsn_setLooping + Vizsn_set3dMinMaxDistance + Vizsn_set3dAttenuation + Vizsn_set3dDopplerFactor + Vizsn_set3dListenerRelative + Vizsn_set3dDistanceDelay + Vizsn_set3dCollider + Vizsn_set3dColliderEx + Vizsn_set3dAttenuator + Vizsn_setInaudibleBehavior + Vizsn_setLoopPoint + Vizsn_getLoopPoint + Vizsn_setFilter + Vizsn_stop + Wav_destroy + Wav_create + Wav_load + Wav_loadMem + Wav_loadMemEx + Wav_loadFile + Wav_loadRawWave8 + Wav_loadRawWave8Ex + Wav_loadRawWave16 + Wav_loadRawWave16Ex + Wav_loadRawWave + Wav_loadRawWaveEx + Wav_getLength + Wav_setVolume + Wav_setLooping + Wav_set3dMinMaxDistance + Wav_set3dAttenuation + Wav_set3dDopplerFactor + Wav_set3dListenerRelative + Wav_set3dDistanceDelay + Wav_set3dCollider + Wav_set3dColliderEx + Wav_set3dAttenuator + Wav_setInaudibleBehavior + Wav_setLoopPoint + Wav_getLoopPoint + Wav_setFilter + Wav_stop + WaveShaperFilter_destroy + WaveShaperFilter_setParams + WaveShaperFilter_setParamsEx + WaveShaperFilter_create + WavStream_destroy + WavStream_create + WavStream_load + WavStream_loadMem + WavStream_loadMemEx + WavStream_loadToMem + WavStream_loadFile + WavStream_loadFileToMem + WavStream_getLength + WavStream_setVolume + WavStream_setLooping + WavStream_set3dMinMaxDistance + WavStream_set3dAttenuation + WavStream_set3dDopplerFactor + WavStream_set3dListenerRelative + WavStream_set3dDistanceDelay + WavStream_set3dCollider + WavStream_set3dColliderEx + WavStream_set3dAttenuator + WavStream_setInaudibleBehavior + WavStream_setLoopPoint + WavStream_getLoopPoint + WavStream_setFilter + WavStream_stop diff --git a/src/soloud/src/c_api/soloud_c.cpp b/src/soloud/src/c_api/soloud_c.cpp new file mode 100644 index 0000000..068c1c1 --- /dev/null +++ b/src/soloud/src/c_api/soloud_c.cpp @@ -0,0 +1,2383 @@ +/* ************************************************** + * WARNING: this is a generated file. Do not edit. * + * Any edits will be overwritten by the generator. * + ************************************************** */ + +/* +SoLoud audio engine +Copyright (c) 2013-2016 Jari Komppa + +This software is provided 'as-is', without any express or implied +warranty. In no event will the authors be held liable for any damages +arising from the use of this software. + +Permission is granted to anyone to use this software for any purpose, +including commercial applications, and to alter it and redistribute it +freely, subject to the following restrictions: + + 1. The origin of this software must not be misrepresented; you must not + claim that you wrote the original software. If you use this software + in a product, an acknowledgment in the product documentation would be + appreciated but is not required. + + 2. Altered source versions must be plainly marked as such, and must not be + misrepresented as being the original software. + + 3. This notice may not be removed or altered from any source + distribution. +*/ + +/* SoLoud C-Api Code Generator (c)2013-2018 Jari Komppa http://iki.fi/sol/ */ + +#include "../include/soloud.h" +#include "../include/soloud_audiosource.h" +#include "../include/soloud_bassboostfilter.h" +#include "../include/soloud_biquadresonantfilter.h" +#include "../include/soloud_bus.h" +#include "../include/soloud_dcremovalfilter.h" +#include "../include/soloud_echofilter.h" +#include "../include/soloud_fader.h" +#include "../include/soloud_fft.h" +#include "../include/soloud_fftfilter.h" +#include "../include/soloud_filter.h" +#include "../include/soloud_flangerfilter.h" +#include "../include/soloud_lofifilter.h" +#include "../include/soloud_monotone.h" +#include "../include/soloud_openmpt.h" +#include "../include/soloud_queue.h" +#include "../include/soloud_robotizefilter.h" +#include "../include/soloud_sfxr.h" +#include "../include/soloud_speech.h" +#include "../include/soloud_tedsid.h" +#include "../include/soloud_vic.h" +#include "../include/soloud_vizsn.h" +#include "../include/soloud_wav.h" +#include "../include/soloud_waveshaperfilter.h" +#include "../include/soloud_wavstream.h" + +using namespace SoLoud; + +extern "C" +{ + +void Soloud_destroy(void * aClassPtr) +{ + delete (Soloud *)aClassPtr; +} + +void * Soloud_create() +{ + return (void *)new Soloud; +} + +int Soloud_init(void * aClassPtr) +{ + Soloud * cl = (Soloud *)aClassPtr; + return cl->init(); +} + +int Soloud_initEx(void * aClassPtr, unsigned int aFlags, unsigned int aBackend, unsigned int aSamplerate, unsigned int aBufferSize, unsigned int aChannels) +{ + Soloud * cl = (Soloud *)aClassPtr; + return cl->init(aFlags, aBackend, aSamplerate, aBufferSize, aChannels); +} + +void Soloud_deinit(void * aClassPtr) +{ + Soloud * cl = (Soloud *)aClassPtr; + cl->deinit(); +} + +unsigned int Soloud_getVersion(void * aClassPtr) +{ + Soloud * cl = (Soloud *)aClassPtr; + return cl->getVersion(); +} + +const char * Soloud_getErrorString(void * aClassPtr, int aErrorCode) +{ + Soloud * cl = (Soloud *)aClassPtr; + return cl->getErrorString(aErrorCode); +} + +unsigned int Soloud_getBackendId(void * aClassPtr) +{ + Soloud * cl = (Soloud *)aClassPtr; + return cl->getBackendId(); +} + +const char * Soloud_getBackendString(void * aClassPtr) +{ + Soloud * cl = (Soloud *)aClassPtr; + return cl->getBackendString(); +} + +unsigned int Soloud_getBackendChannels(void * aClassPtr) +{ + Soloud * cl = (Soloud *)aClassPtr; + return cl->getBackendChannels(); +} + +unsigned int Soloud_getBackendSamplerate(void * aClassPtr) +{ + Soloud * cl = (Soloud *)aClassPtr; + return cl->getBackendSamplerate(); +} + +unsigned int Soloud_getBackendBufferSize(void * aClassPtr) +{ + Soloud * cl = (Soloud *)aClassPtr; + return cl->getBackendBufferSize(); +} + +int Soloud_setSpeakerPosition(void * aClassPtr, unsigned int aChannel, float aX, float aY, float aZ) +{ + Soloud * cl = (Soloud *)aClassPtr; + return cl->setSpeakerPosition(aChannel, aX, aY, aZ); +} + +int Soloud_getSpeakerPosition(void * aClassPtr, unsigned int aChannel, float * aX, float * aY, float * aZ) +{ + Soloud * cl = (Soloud *)aClassPtr; + return cl->getSpeakerPosition(aChannel, *aX, *aY, *aZ); +} + +unsigned int Soloud_play(void * aClassPtr, AudioSource * aSound) +{ + Soloud * cl = (Soloud *)aClassPtr; + return cl->play(*aSound); +} + +unsigned int Soloud_playEx(void * aClassPtr, AudioSource * aSound, float aVolume, float aPan, int aPaused, unsigned int aBus) +{ + Soloud * cl = (Soloud *)aClassPtr; + return cl->play(*aSound, aVolume, aPan, !!aPaused, aBus); +} + +unsigned int Soloud_playClocked(void * aClassPtr, double aSoundTime, AudioSource * aSound) +{ + Soloud * cl = (Soloud *)aClassPtr; + return cl->playClocked(aSoundTime, *aSound); +} + +unsigned int Soloud_playClockedEx(void * aClassPtr, double aSoundTime, AudioSource * aSound, float aVolume, float aPan, unsigned int aBus) +{ + Soloud * cl = (Soloud *)aClassPtr; + return cl->playClocked(aSoundTime, *aSound, aVolume, aPan, aBus); +} + +unsigned int Soloud_play3d(void * aClassPtr, AudioSource * aSound, float aPosX, float aPosY, float aPosZ) +{ + Soloud * cl = (Soloud *)aClassPtr; + return cl->play3d(*aSound, aPosX, aPosY, aPosZ); +} + +unsigned int Soloud_play3dEx(void * aClassPtr, AudioSource * aSound, float aPosX, float aPosY, float aPosZ, float aVelX, float aVelY, float aVelZ, float aVolume, int aPaused, unsigned int aBus) +{ + Soloud * cl = (Soloud *)aClassPtr; + return cl->play3d(*aSound, aPosX, aPosY, aPosZ, aVelX, aVelY, aVelZ, aVolume, !!aPaused, aBus); +} + +unsigned int Soloud_play3dClocked(void * aClassPtr, double aSoundTime, AudioSource * aSound, float aPosX, float aPosY, float aPosZ) +{ + Soloud * cl = (Soloud *)aClassPtr; + return cl->play3dClocked(aSoundTime, *aSound, aPosX, aPosY, aPosZ); +} + +unsigned int Soloud_play3dClockedEx(void * aClassPtr, double aSoundTime, AudioSource * aSound, float aPosX, float aPosY, float aPosZ, float aVelX, float aVelY, float aVelZ, float aVolume, unsigned int aBus) +{ + Soloud * cl = (Soloud *)aClassPtr; + return cl->play3dClocked(aSoundTime, *aSound, aPosX, aPosY, aPosZ, aVelX, aVelY, aVelZ, aVolume, aBus); +} + +unsigned int Soloud_playBackground(void * aClassPtr, AudioSource * aSound) +{ + Soloud * cl = (Soloud *)aClassPtr; + return cl->playBackground(*aSound); +} + +unsigned int Soloud_playBackgroundEx(void * aClassPtr, AudioSource * aSound, float aVolume, int aPaused, unsigned int aBus) +{ + Soloud * cl = (Soloud *)aClassPtr; + return cl->playBackground(*aSound, aVolume, !!aPaused, aBus); +} + +int Soloud_seek(void * aClassPtr, unsigned int aVoiceHandle, double aSeconds) +{ + Soloud * cl = (Soloud *)aClassPtr; + return cl->seek(aVoiceHandle, aSeconds); +} + +void Soloud_stop(void * aClassPtr, unsigned int aVoiceHandle) +{ + Soloud * cl = (Soloud *)aClassPtr; + cl->stop(aVoiceHandle); +} + +void Soloud_stopAll(void * aClassPtr) +{ + Soloud * cl = (Soloud *)aClassPtr; + cl->stopAll(); +} + +void Soloud_stopAudioSource(void * aClassPtr, AudioSource * aSound) +{ + Soloud * cl = (Soloud *)aClassPtr; + cl->stopAudioSource(*aSound); +} + +int Soloud_countAudioSource(void * aClassPtr, AudioSource * aSound) +{ + Soloud * cl = (Soloud *)aClassPtr; + return cl->countAudioSource(*aSound); +} + +void Soloud_setFilterParameter(void * aClassPtr, unsigned int aVoiceHandle, unsigned int aFilterId, unsigned int aAttributeId, float aValue) +{ + Soloud * cl = (Soloud *)aClassPtr; + cl->setFilterParameter(aVoiceHandle, aFilterId, aAttributeId, aValue); +} + +float Soloud_getFilterParameter(void * aClassPtr, unsigned int aVoiceHandle, unsigned int aFilterId, unsigned int aAttributeId) +{ + Soloud * cl = (Soloud *)aClassPtr; + return cl->getFilterParameter(aVoiceHandle, aFilterId, aAttributeId); +} + +void Soloud_fadeFilterParameter(void * aClassPtr, unsigned int aVoiceHandle, unsigned int aFilterId, unsigned int aAttributeId, float aTo, double aTime) +{ + Soloud * cl = (Soloud *)aClassPtr; + cl->fadeFilterParameter(aVoiceHandle, aFilterId, aAttributeId, aTo, aTime); +} + +void Soloud_oscillateFilterParameter(void * aClassPtr, unsigned int aVoiceHandle, unsigned int aFilterId, unsigned int aAttributeId, float aFrom, float aTo, double aTime) +{ + Soloud * cl = (Soloud *)aClassPtr; + cl->oscillateFilterParameter(aVoiceHandle, aFilterId, aAttributeId, aFrom, aTo, aTime); +} + +double Soloud_getStreamTime(void * aClassPtr, unsigned int aVoiceHandle) +{ + Soloud * cl = (Soloud *)aClassPtr; + return cl->getStreamTime(aVoiceHandle); +} + +double Soloud_getStreamPosition(void * aClassPtr, unsigned int aVoiceHandle) +{ + Soloud * cl = (Soloud *)aClassPtr; + return cl->getStreamPosition(aVoiceHandle); +} + +int Soloud_getPause(void * aClassPtr, unsigned int aVoiceHandle) +{ + Soloud * cl = (Soloud *)aClassPtr; + return cl->getPause(aVoiceHandle); +} + +float Soloud_getVolume(void * aClassPtr, unsigned int aVoiceHandle) +{ + Soloud * cl = (Soloud *)aClassPtr; + return cl->getVolume(aVoiceHandle); +} + +float Soloud_getOverallVolume(void * aClassPtr, unsigned int aVoiceHandle) +{ + Soloud * cl = (Soloud *)aClassPtr; + return cl->getOverallVolume(aVoiceHandle); +} + +float Soloud_getPan(void * aClassPtr, unsigned int aVoiceHandle) +{ + Soloud * cl = (Soloud *)aClassPtr; + return cl->getPan(aVoiceHandle); +} + +float Soloud_getSamplerate(void * aClassPtr, unsigned int aVoiceHandle) +{ + Soloud * cl = (Soloud *)aClassPtr; + return cl->getSamplerate(aVoiceHandle); +} + +int Soloud_getProtectVoice(void * aClassPtr, unsigned int aVoiceHandle) +{ + Soloud * cl = (Soloud *)aClassPtr; + return cl->getProtectVoice(aVoiceHandle); +} + +unsigned int Soloud_getActiveVoiceCount(void * aClassPtr) +{ + Soloud * cl = (Soloud *)aClassPtr; + return cl->getActiveVoiceCount(); +} + +unsigned int Soloud_getVoiceCount(void * aClassPtr) +{ + Soloud * cl = (Soloud *)aClassPtr; + return cl->getVoiceCount(); +} + +int Soloud_isValidVoiceHandle(void * aClassPtr, unsigned int aVoiceHandle) +{ + Soloud * cl = (Soloud *)aClassPtr; + return cl->isValidVoiceHandle(aVoiceHandle); +} + +float Soloud_getRelativePlaySpeed(void * aClassPtr, unsigned int aVoiceHandle) +{ + Soloud * cl = (Soloud *)aClassPtr; + return cl->getRelativePlaySpeed(aVoiceHandle); +} + +float Soloud_getPostClipScaler(void * aClassPtr) +{ + Soloud * cl = (Soloud *)aClassPtr; + return cl->getPostClipScaler(); +} + +float Soloud_getGlobalVolume(void * aClassPtr) +{ + Soloud * cl = (Soloud *)aClassPtr; + return cl->getGlobalVolume(); +} + +unsigned int Soloud_getMaxActiveVoiceCount(void * aClassPtr) +{ + Soloud * cl = (Soloud *)aClassPtr; + return cl->getMaxActiveVoiceCount(); +} + +int Soloud_getLooping(void * aClassPtr, unsigned int aVoiceHandle) +{ + Soloud * cl = (Soloud *)aClassPtr; + return cl->getLooping(aVoiceHandle); +} + +double Soloud_getLoopPoint(void * aClassPtr, unsigned int aVoiceHandle) +{ + Soloud * cl = (Soloud *)aClassPtr; + return cl->getLoopPoint(aVoiceHandle); +} + +void Soloud_setLoopPoint(void * aClassPtr, unsigned int aVoiceHandle, double aLoopPoint) +{ + Soloud * cl = (Soloud *)aClassPtr; + cl->setLoopPoint(aVoiceHandle, aLoopPoint); +} + +void Soloud_setLooping(void * aClassPtr, unsigned int aVoiceHandle, int aLooping) +{ + Soloud * cl = (Soloud *)aClassPtr; + cl->setLooping(aVoiceHandle, !!aLooping); +} + +int Soloud_setMaxActiveVoiceCount(void * aClassPtr, unsigned int aVoiceCount) +{ + Soloud * cl = (Soloud *)aClassPtr; + return cl->setMaxActiveVoiceCount(aVoiceCount); +} + +void Soloud_setInaudibleBehavior(void * aClassPtr, unsigned int aVoiceHandle, int aMustTick, int aKill) +{ + Soloud * cl = (Soloud *)aClassPtr; + cl->setInaudibleBehavior(aVoiceHandle, !!aMustTick, !!aKill); +} + +void Soloud_setGlobalVolume(void * aClassPtr, float aVolume) +{ + Soloud * cl = (Soloud *)aClassPtr; + cl->setGlobalVolume(aVolume); +} + +void Soloud_setPostClipScaler(void * aClassPtr, float aScaler) +{ + Soloud * cl = (Soloud *)aClassPtr; + cl->setPostClipScaler(aScaler); +} + +void Soloud_setPause(void * aClassPtr, unsigned int aVoiceHandle, int aPause) +{ + Soloud * cl = (Soloud *)aClassPtr; + cl->setPause(aVoiceHandle, !!aPause); +} + +void Soloud_setPauseAll(void * aClassPtr, int aPause) +{ + Soloud * cl = (Soloud *)aClassPtr; + cl->setPauseAll(!!aPause); +} + +int Soloud_setRelativePlaySpeed(void * aClassPtr, unsigned int aVoiceHandle, float aSpeed) +{ + Soloud * cl = (Soloud *)aClassPtr; + return cl->setRelativePlaySpeed(aVoiceHandle, aSpeed); +} + +void Soloud_setProtectVoice(void * aClassPtr, unsigned int aVoiceHandle, int aProtect) +{ + Soloud * cl = (Soloud *)aClassPtr; + cl->setProtectVoice(aVoiceHandle, !!aProtect); +} + +void Soloud_setSamplerate(void * aClassPtr, unsigned int aVoiceHandle, float aSamplerate) +{ + Soloud * cl = (Soloud *)aClassPtr; + cl->setSamplerate(aVoiceHandle, aSamplerate); +} + +void Soloud_setPan(void * aClassPtr, unsigned int aVoiceHandle, float aPan) +{ + Soloud * cl = (Soloud *)aClassPtr; + cl->setPan(aVoiceHandle, aPan); +} + +void Soloud_setPanAbsolute(void * aClassPtr, unsigned int aVoiceHandle, float aLVolume, float aRVolume) +{ + Soloud * cl = (Soloud *)aClassPtr; + cl->setPanAbsolute(aVoiceHandle, aLVolume, aRVolume); +} + +void Soloud_setPanAbsoluteEx(void * aClassPtr, unsigned int aVoiceHandle, float aLVolume, float aRVolume, float aLBVolume, float aRBVolume, float aCVolume, float aSVolume) +{ + Soloud * cl = (Soloud *)aClassPtr; + cl->setPanAbsolute(aVoiceHandle, aLVolume, aRVolume, aLBVolume, aRBVolume, aCVolume, aSVolume); +} + +void Soloud_setVolume(void * aClassPtr, unsigned int aVoiceHandle, float aVolume) +{ + Soloud * cl = (Soloud *)aClassPtr; + cl->setVolume(aVoiceHandle, aVolume); +} + +void Soloud_setDelaySamples(void * aClassPtr, unsigned int aVoiceHandle, unsigned int aSamples) +{ + Soloud * cl = (Soloud *)aClassPtr; + cl->setDelaySamples(aVoiceHandle, aSamples); +} + +void Soloud_fadeVolume(void * aClassPtr, unsigned int aVoiceHandle, float aTo, double aTime) +{ + Soloud * cl = (Soloud *)aClassPtr; + cl->fadeVolume(aVoiceHandle, aTo, aTime); +} + +void Soloud_fadePan(void * aClassPtr, unsigned int aVoiceHandle, float aTo, double aTime) +{ + Soloud * cl = (Soloud *)aClassPtr; + cl->fadePan(aVoiceHandle, aTo, aTime); +} + +void Soloud_fadeRelativePlaySpeed(void * aClassPtr, unsigned int aVoiceHandle, float aTo, double aTime) +{ + Soloud * cl = (Soloud *)aClassPtr; + cl->fadeRelativePlaySpeed(aVoiceHandle, aTo, aTime); +} + +void Soloud_fadeGlobalVolume(void * aClassPtr, float aTo, double aTime) +{ + Soloud * cl = (Soloud *)aClassPtr; + cl->fadeGlobalVolume(aTo, aTime); +} + +void Soloud_schedulePause(void * aClassPtr, unsigned int aVoiceHandle, double aTime) +{ + Soloud * cl = (Soloud *)aClassPtr; + cl->schedulePause(aVoiceHandle, aTime); +} + +void Soloud_scheduleStop(void * aClassPtr, unsigned int aVoiceHandle, double aTime) +{ + Soloud * cl = (Soloud *)aClassPtr; + cl->scheduleStop(aVoiceHandle, aTime); +} + +void Soloud_oscillateVolume(void * aClassPtr, unsigned int aVoiceHandle, float aFrom, float aTo, double aTime) +{ + Soloud * cl = (Soloud *)aClassPtr; + cl->oscillateVolume(aVoiceHandle, aFrom, aTo, aTime); +} + +void Soloud_oscillatePan(void * aClassPtr, unsigned int aVoiceHandle, float aFrom, float aTo, double aTime) +{ + Soloud * cl = (Soloud *)aClassPtr; + cl->oscillatePan(aVoiceHandle, aFrom, aTo, aTime); +} + +void Soloud_oscillateRelativePlaySpeed(void * aClassPtr, unsigned int aVoiceHandle, float aFrom, float aTo, double aTime) +{ + Soloud * cl = (Soloud *)aClassPtr; + cl->oscillateRelativePlaySpeed(aVoiceHandle, aFrom, aTo, aTime); +} + +void Soloud_oscillateGlobalVolume(void * aClassPtr, float aFrom, float aTo, double aTime) +{ + Soloud * cl = (Soloud *)aClassPtr; + cl->oscillateGlobalVolume(aFrom, aTo, aTime); +} + +void Soloud_setGlobalFilter(void * aClassPtr, unsigned int aFilterId, Filter * aFilter) +{ + Soloud * cl = (Soloud *)aClassPtr; + cl->setGlobalFilter(aFilterId, aFilter); +} + +void Soloud_setVisualizationEnable(void * aClassPtr, int aEnable) +{ + Soloud * cl = (Soloud *)aClassPtr; + cl->setVisualizationEnable(!!aEnable); +} + +float * Soloud_calcFFT(void * aClassPtr) +{ + Soloud * cl = (Soloud *)aClassPtr; + return cl->calcFFT(); +} + +float * Soloud_getWave(void * aClassPtr) +{ + Soloud * cl = (Soloud *)aClassPtr; + return cl->getWave(); +} + +float Soloud_getApproximateVolume(void * aClassPtr, unsigned int aChannel) +{ + Soloud * cl = (Soloud *)aClassPtr; + return cl->getApproximateVolume(aChannel); +} + +unsigned int Soloud_getLoopCount(void * aClassPtr, unsigned int aVoiceHandle) +{ + Soloud * cl = (Soloud *)aClassPtr; + return cl->getLoopCount(aVoiceHandle); +} + +float Soloud_getInfo(void * aClassPtr, unsigned int aVoiceHandle, unsigned int aInfoKey) +{ + Soloud * cl = (Soloud *)aClassPtr; + return cl->getInfo(aVoiceHandle, aInfoKey); +} + +unsigned int Soloud_createVoiceGroup(void * aClassPtr) +{ + Soloud * cl = (Soloud *)aClassPtr; + return cl->createVoiceGroup(); +} + +int Soloud_destroyVoiceGroup(void * aClassPtr, unsigned int aVoiceGroupHandle) +{ + Soloud * cl = (Soloud *)aClassPtr; + return cl->destroyVoiceGroup(aVoiceGroupHandle); +} + +int Soloud_addVoiceToGroup(void * aClassPtr, unsigned int aVoiceGroupHandle, unsigned int aVoiceHandle) +{ + Soloud * cl = (Soloud *)aClassPtr; + return cl->addVoiceToGroup(aVoiceGroupHandle, aVoiceHandle); +} + +int Soloud_isVoiceGroup(void * aClassPtr, unsigned int aVoiceGroupHandle) +{ + Soloud * cl = (Soloud *)aClassPtr; + return cl->isVoiceGroup(aVoiceGroupHandle); +} + +int Soloud_isVoiceGroupEmpty(void * aClassPtr, unsigned int aVoiceGroupHandle) +{ + Soloud * cl = (Soloud *)aClassPtr; + return cl->isVoiceGroupEmpty(aVoiceGroupHandle); +} + +void Soloud_update3dAudio(void * aClassPtr) +{ + Soloud * cl = (Soloud *)aClassPtr; + cl->update3dAudio(); +} + +int Soloud_set3dSoundSpeed(void * aClassPtr, float aSpeed) +{ + Soloud * cl = (Soloud *)aClassPtr; + return cl->set3dSoundSpeed(aSpeed); +} + +float Soloud_get3dSoundSpeed(void * aClassPtr) +{ + Soloud * cl = (Soloud *)aClassPtr; + return cl->get3dSoundSpeed(); +} + +void Soloud_set3dListenerParameters(void * aClassPtr, float aPosX, float aPosY, float aPosZ, float aAtX, float aAtY, float aAtZ, float aUpX, float aUpY, float aUpZ) +{ + Soloud * cl = (Soloud *)aClassPtr; + cl->set3dListenerParameters(aPosX, aPosY, aPosZ, aAtX, aAtY, aAtZ, aUpX, aUpY, aUpZ); +} + +void Soloud_set3dListenerParametersEx(void * aClassPtr, float aPosX, float aPosY, float aPosZ, float aAtX, float aAtY, float aAtZ, float aUpX, float aUpY, float aUpZ, float aVelocityX, float aVelocityY, float aVelocityZ) +{ + Soloud * cl = (Soloud *)aClassPtr; + cl->set3dListenerParameters(aPosX, aPosY, aPosZ, aAtX, aAtY, aAtZ, aUpX, aUpY, aUpZ, aVelocityX, aVelocityY, aVelocityZ); +} + +void Soloud_set3dListenerPosition(void * aClassPtr, float aPosX, float aPosY, float aPosZ) +{ + Soloud * cl = (Soloud *)aClassPtr; + cl->set3dListenerPosition(aPosX, aPosY, aPosZ); +} + +void Soloud_set3dListenerAt(void * aClassPtr, float aAtX, float aAtY, float aAtZ) +{ + Soloud * cl = (Soloud *)aClassPtr; + cl->set3dListenerAt(aAtX, aAtY, aAtZ); +} + +void Soloud_set3dListenerUp(void * aClassPtr, float aUpX, float aUpY, float aUpZ) +{ + Soloud * cl = (Soloud *)aClassPtr; + cl->set3dListenerUp(aUpX, aUpY, aUpZ); +} + +void Soloud_set3dListenerVelocity(void * aClassPtr, float aVelocityX, float aVelocityY, float aVelocityZ) +{ + Soloud * cl = (Soloud *)aClassPtr; + cl->set3dListenerVelocity(aVelocityX, aVelocityY, aVelocityZ); +} + +void Soloud_set3dSourceParameters(void * aClassPtr, unsigned int aVoiceHandle, float aPosX, float aPosY, float aPosZ) +{ + Soloud * cl = (Soloud *)aClassPtr; + cl->set3dSourceParameters(aVoiceHandle, aPosX, aPosY, aPosZ); +} + +void Soloud_set3dSourceParametersEx(void * aClassPtr, unsigned int aVoiceHandle, float aPosX, float aPosY, float aPosZ, float aVelocityX, float aVelocityY, float aVelocityZ) +{ + Soloud * cl = (Soloud *)aClassPtr; + cl->set3dSourceParameters(aVoiceHandle, aPosX, aPosY, aPosZ, aVelocityX, aVelocityY, aVelocityZ); +} + +void Soloud_set3dSourcePosition(void * aClassPtr, unsigned int aVoiceHandle, float aPosX, float aPosY, float aPosZ) +{ + Soloud * cl = (Soloud *)aClassPtr; + cl->set3dSourcePosition(aVoiceHandle, aPosX, aPosY, aPosZ); +} + +void Soloud_set3dSourceVelocity(void * aClassPtr, unsigned int aVoiceHandle, float aVelocityX, float aVelocityY, float aVelocityZ) +{ + Soloud * cl = (Soloud *)aClassPtr; + cl->set3dSourceVelocity(aVoiceHandle, aVelocityX, aVelocityY, aVelocityZ); +} + +void Soloud_set3dSourceMinMaxDistance(void * aClassPtr, unsigned int aVoiceHandle, float aMinDistance, float aMaxDistance) +{ + Soloud * cl = (Soloud *)aClassPtr; + cl->set3dSourceMinMaxDistance(aVoiceHandle, aMinDistance, aMaxDistance); +} + +void Soloud_set3dSourceAttenuation(void * aClassPtr, unsigned int aVoiceHandle, unsigned int aAttenuationModel, float aAttenuationRolloffFactor) +{ + Soloud * cl = (Soloud *)aClassPtr; + cl->set3dSourceAttenuation(aVoiceHandle, aAttenuationModel, aAttenuationRolloffFactor); +} + +void Soloud_set3dSourceDopplerFactor(void * aClassPtr, unsigned int aVoiceHandle, float aDopplerFactor) +{ + Soloud * cl = (Soloud *)aClassPtr; + cl->set3dSourceDopplerFactor(aVoiceHandle, aDopplerFactor); +} + +void Soloud_mix(void * aClassPtr, float * aBuffer, unsigned int aSamples) +{ + Soloud * cl = (Soloud *)aClassPtr; + cl->mix(aBuffer, aSamples); +} + +void Soloud_mixSigned16(void * aClassPtr, short * aBuffer, unsigned int aSamples) +{ + Soloud * cl = (Soloud *)aClassPtr; + cl->mixSigned16(aBuffer, aSamples); +} + +void AudioAttenuator_destroy(void * aClassPtr) +{ + delete (AudioAttenuator *)aClassPtr; +} + +float AudioAttenuator_attenuate(void * aClassPtr, float aDistance, float aMinDistance, float aMaxDistance, float aRolloffFactor) +{ + AudioAttenuator * cl = (AudioAttenuator *)aClassPtr; + return cl->attenuate(aDistance, aMinDistance, aMaxDistance, aRolloffFactor); +} + +void BassboostFilter_destroy(void * aClassPtr) +{ + delete (BassboostFilter *)aClassPtr; +} + +int BassboostFilter_setParams(void * aClassPtr, float aBoost) +{ + BassboostFilter * cl = (BassboostFilter *)aClassPtr; + return cl->setParams(aBoost); +} + +void * BassboostFilter_create() +{ + return (void *)new BassboostFilter; +} + +void BiquadResonantFilter_destroy(void * aClassPtr) +{ + delete (BiquadResonantFilter *)aClassPtr; +} + +void * BiquadResonantFilter_create() +{ + return (void *)new BiquadResonantFilter; +} + +int BiquadResonantFilter_setParams(void * aClassPtr, int aType, float aSampleRate, float aFrequency, float aResonance) +{ + BiquadResonantFilter * cl = (BiquadResonantFilter *)aClassPtr; + return cl->setParams(aType, aSampleRate, aFrequency, aResonance); +} + +void Bus_destroy(void * aClassPtr) +{ + delete (Bus *)aClassPtr; +} + +void * Bus_create() +{ + return (void *)new Bus; +} + +void Bus_setFilter(void * aClassPtr, unsigned int aFilterId, Filter * aFilter) +{ + Bus * cl = (Bus *)aClassPtr; + cl->setFilter(aFilterId, aFilter); +} + +unsigned int Bus_play(void * aClassPtr, AudioSource * aSound) +{ + Bus * cl = (Bus *)aClassPtr; + return cl->play(*aSound); +} + +unsigned int Bus_playEx(void * aClassPtr, AudioSource * aSound, float aVolume, float aPan, int aPaused) +{ + Bus * cl = (Bus *)aClassPtr; + return cl->play(*aSound, aVolume, aPan, !!aPaused); +} + +unsigned int Bus_playClocked(void * aClassPtr, double aSoundTime, AudioSource * aSound) +{ + Bus * cl = (Bus *)aClassPtr; + return cl->playClocked(aSoundTime, *aSound); +} + +unsigned int Bus_playClockedEx(void * aClassPtr, double aSoundTime, AudioSource * aSound, float aVolume, float aPan) +{ + Bus * cl = (Bus *)aClassPtr; + return cl->playClocked(aSoundTime, *aSound, aVolume, aPan); +} + +unsigned int Bus_play3d(void * aClassPtr, AudioSource * aSound, float aPosX, float aPosY, float aPosZ) +{ + Bus * cl = (Bus *)aClassPtr; + return cl->play3d(*aSound, aPosX, aPosY, aPosZ); +} + +unsigned int Bus_play3dEx(void * aClassPtr, AudioSource * aSound, float aPosX, float aPosY, float aPosZ, float aVelX, float aVelY, float aVelZ, float aVolume, int aPaused) +{ + Bus * cl = (Bus *)aClassPtr; + return cl->play3d(*aSound, aPosX, aPosY, aPosZ, aVelX, aVelY, aVelZ, aVolume, !!aPaused); +} + +unsigned int Bus_play3dClocked(void * aClassPtr, double aSoundTime, AudioSource * aSound, float aPosX, float aPosY, float aPosZ) +{ + Bus * cl = (Bus *)aClassPtr; + return cl->play3dClocked(aSoundTime, *aSound, aPosX, aPosY, aPosZ); +} + +unsigned int Bus_play3dClockedEx(void * aClassPtr, double aSoundTime, AudioSource * aSound, float aPosX, float aPosY, float aPosZ, float aVelX, float aVelY, float aVelZ, float aVolume) +{ + Bus * cl = (Bus *)aClassPtr; + return cl->play3dClocked(aSoundTime, *aSound, aPosX, aPosY, aPosZ, aVelX, aVelY, aVelZ, aVolume); +} + +int Bus_setChannels(void * aClassPtr, unsigned int aChannels) +{ + Bus * cl = (Bus *)aClassPtr; + return cl->setChannels(aChannels); +} + +void Bus_setVisualizationEnable(void * aClassPtr, int aEnable) +{ + Bus * cl = (Bus *)aClassPtr; + cl->setVisualizationEnable(!!aEnable); +} + +float * Bus_calcFFT(void * aClassPtr) +{ + Bus * cl = (Bus *)aClassPtr; + return cl->calcFFT(); +} + +float * Bus_getWave(void * aClassPtr) +{ + Bus * cl = (Bus *)aClassPtr; + return cl->getWave(); +} + +float Bus_getApproximateVolume(void * aClassPtr, unsigned int aChannel) +{ + Bus * cl = (Bus *)aClassPtr; + return cl->getApproximateVolume(aChannel); +} + +void Bus_setVolume(void * aClassPtr, float aVolume) +{ + Bus * cl = (Bus *)aClassPtr; + cl->setVolume(aVolume); +} + +void Bus_setLooping(void * aClassPtr, int aLoop) +{ + Bus * cl = (Bus *)aClassPtr; + cl->setLooping(!!aLoop); +} + +void Bus_set3dMinMaxDistance(void * aClassPtr, float aMinDistance, float aMaxDistance) +{ + Bus * cl = (Bus *)aClassPtr; + cl->set3dMinMaxDistance(aMinDistance, aMaxDistance); +} + +void Bus_set3dAttenuation(void * aClassPtr, unsigned int aAttenuationModel, float aAttenuationRolloffFactor) +{ + Bus * cl = (Bus *)aClassPtr; + cl->set3dAttenuation(aAttenuationModel, aAttenuationRolloffFactor); +} + +void Bus_set3dDopplerFactor(void * aClassPtr, float aDopplerFactor) +{ + Bus * cl = (Bus *)aClassPtr; + cl->set3dDopplerFactor(aDopplerFactor); +} + +void Bus_set3dListenerRelative(void * aClassPtr, int aListenerRelative) +{ + Bus * cl = (Bus *)aClassPtr; + cl->set3dListenerRelative(!!aListenerRelative); +} + +void Bus_set3dDistanceDelay(void * aClassPtr, int aDistanceDelay) +{ + Bus * cl = (Bus *)aClassPtr; + cl->set3dDistanceDelay(!!aDistanceDelay); +} + +void Bus_set3dCollider(void * aClassPtr, AudioCollider * aCollider) +{ + Bus * cl = (Bus *)aClassPtr; + cl->set3dCollider(aCollider); +} + +void Bus_set3dColliderEx(void * aClassPtr, AudioCollider * aCollider, int aUserData) +{ + Bus * cl = (Bus *)aClassPtr; + cl->set3dCollider(aCollider, aUserData); +} + +void Bus_set3dAttenuator(void * aClassPtr, AudioAttenuator * aAttenuator) +{ + Bus * cl = (Bus *)aClassPtr; + cl->set3dAttenuator(aAttenuator); +} + +void Bus_setInaudibleBehavior(void * aClassPtr, int aMustTick, int aKill) +{ + Bus * cl = (Bus *)aClassPtr; + cl->setInaudibleBehavior(!!aMustTick, !!aKill); +} + +void Bus_setLoopPoint(void * aClassPtr, double aLoopPoint) +{ + Bus * cl = (Bus *)aClassPtr; + cl->setLoopPoint(aLoopPoint); +} + +double Bus_getLoopPoint(void * aClassPtr) +{ + Bus * cl = (Bus *)aClassPtr; + return cl->getLoopPoint(); +} + +void Bus_stop(void * aClassPtr) +{ + Bus * cl = (Bus *)aClassPtr; + cl->stop(); +} + +void DCRemovalFilter_destroy(void * aClassPtr) +{ + delete (DCRemovalFilter *)aClassPtr; +} + +void * DCRemovalFilter_create() +{ + return (void *)new DCRemovalFilter; +} + +int DCRemovalFilter_setParams(void * aClassPtr) +{ + DCRemovalFilter * cl = (DCRemovalFilter *)aClassPtr; + return cl->setParams(); +} + +int DCRemovalFilter_setParamsEx(void * aClassPtr, float aLength) +{ + DCRemovalFilter * cl = (DCRemovalFilter *)aClassPtr; + return cl->setParams(aLength); +} + +void EchoFilter_destroy(void * aClassPtr) +{ + delete (EchoFilter *)aClassPtr; +} + +void * EchoFilter_create() +{ + return (void *)new EchoFilter; +} + +int EchoFilter_setParams(void * aClassPtr, float aDelay) +{ + EchoFilter * cl = (EchoFilter *)aClassPtr; + return cl->setParams(aDelay); +} + +int EchoFilter_setParamsEx(void * aClassPtr, float aDelay, float aDecay, float aFilter) +{ + EchoFilter * cl = (EchoFilter *)aClassPtr; + return cl->setParams(aDelay, aDecay, aFilter); +} + +void FFTFilter_destroy(void * aClassPtr) +{ + delete (FFTFilter *)aClassPtr; +} + +void * FFTFilter_create() +{ + return (void *)new FFTFilter; +} + +void FlangerFilter_destroy(void * aClassPtr) +{ + delete (FlangerFilter *)aClassPtr; +} + +void * FlangerFilter_create() +{ + return (void *)new FlangerFilter; +} + +int FlangerFilter_setParams(void * aClassPtr, float aDelay, float aFreq) +{ + FlangerFilter * cl = (FlangerFilter *)aClassPtr; + return cl->setParams(aDelay, aFreq); +} + +void LofiFilter_destroy(void * aClassPtr) +{ + delete (LofiFilter *)aClassPtr; +} + +void * LofiFilter_create() +{ + return (void *)new LofiFilter; +} + +int LofiFilter_setParams(void * aClassPtr, float aSampleRate, float aBitdepth) +{ + LofiFilter * cl = (LofiFilter *)aClassPtr; + return cl->setParams(aSampleRate, aBitdepth); +} + +void Monotone_destroy(void * aClassPtr) +{ + delete (Monotone *)aClassPtr; +} + +void * Monotone_create() +{ + return (void *)new Monotone; +} + +int Monotone_setParams(void * aClassPtr, int aHardwareChannels) +{ + Monotone * cl = (Monotone *)aClassPtr; + return cl->setParams(aHardwareChannels); +} + +int Monotone_setParamsEx(void * aClassPtr, int aHardwareChannels, int aWaveform) +{ + Monotone * cl = (Monotone *)aClassPtr; + return cl->setParams(aHardwareChannels, aWaveform); +} + +int Monotone_load(void * aClassPtr, const char * aFilename) +{ + Monotone * cl = (Monotone *)aClassPtr; + return cl->load(aFilename); +} + +int Monotone_loadMem(void * aClassPtr, unsigned char * aMem, unsigned int aLength) +{ + Monotone * cl = (Monotone *)aClassPtr; + return cl->loadMem(aMem, aLength); +} + +int Monotone_loadMemEx(void * aClassPtr, unsigned char * aMem, unsigned int aLength, int aCopy, int aTakeOwnership) +{ + Monotone * cl = (Monotone *)aClassPtr; + return cl->loadMem(aMem, aLength, !!aCopy, !!aTakeOwnership); +} + +int Monotone_loadFile(void * aClassPtr, File * aFile) +{ + Monotone * cl = (Monotone *)aClassPtr; + return cl->loadFile(aFile); +} + +void Monotone_setVolume(void * aClassPtr, float aVolume) +{ + Monotone * cl = (Monotone *)aClassPtr; + cl->setVolume(aVolume); +} + +void Monotone_setLooping(void * aClassPtr, int aLoop) +{ + Monotone * cl = (Monotone *)aClassPtr; + cl->setLooping(!!aLoop); +} + +void Monotone_set3dMinMaxDistance(void * aClassPtr, float aMinDistance, float aMaxDistance) +{ + Monotone * cl = (Monotone *)aClassPtr; + cl->set3dMinMaxDistance(aMinDistance, aMaxDistance); +} + +void Monotone_set3dAttenuation(void * aClassPtr, unsigned int aAttenuationModel, float aAttenuationRolloffFactor) +{ + Monotone * cl = (Monotone *)aClassPtr; + cl->set3dAttenuation(aAttenuationModel, aAttenuationRolloffFactor); +} + +void Monotone_set3dDopplerFactor(void * aClassPtr, float aDopplerFactor) +{ + Monotone * cl = (Monotone *)aClassPtr; + cl->set3dDopplerFactor(aDopplerFactor); +} + +void Monotone_set3dListenerRelative(void * aClassPtr, int aListenerRelative) +{ + Monotone * cl = (Monotone *)aClassPtr; + cl->set3dListenerRelative(!!aListenerRelative); +} + +void Monotone_set3dDistanceDelay(void * aClassPtr, int aDistanceDelay) +{ + Monotone * cl = (Monotone *)aClassPtr; + cl->set3dDistanceDelay(!!aDistanceDelay); +} + +void Monotone_set3dCollider(void * aClassPtr, AudioCollider * aCollider) +{ + Monotone * cl = (Monotone *)aClassPtr; + cl->set3dCollider(aCollider); +} + +void Monotone_set3dColliderEx(void * aClassPtr, AudioCollider * aCollider, int aUserData) +{ + Monotone * cl = (Monotone *)aClassPtr; + cl->set3dCollider(aCollider, aUserData); +} + +void Monotone_set3dAttenuator(void * aClassPtr, AudioAttenuator * aAttenuator) +{ + Monotone * cl = (Monotone *)aClassPtr; + cl->set3dAttenuator(aAttenuator); +} + +void Monotone_setInaudibleBehavior(void * aClassPtr, int aMustTick, int aKill) +{ + Monotone * cl = (Monotone *)aClassPtr; + cl->setInaudibleBehavior(!!aMustTick, !!aKill); +} + +void Monotone_setLoopPoint(void * aClassPtr, double aLoopPoint) +{ + Monotone * cl = (Monotone *)aClassPtr; + cl->setLoopPoint(aLoopPoint); +} + +double Monotone_getLoopPoint(void * aClassPtr) +{ + Monotone * cl = (Monotone *)aClassPtr; + return cl->getLoopPoint(); +} + +void Monotone_setFilter(void * aClassPtr, unsigned int aFilterId, Filter * aFilter) +{ + Monotone * cl = (Monotone *)aClassPtr; + cl->setFilter(aFilterId, aFilter); +} + +void Monotone_stop(void * aClassPtr) +{ + Monotone * cl = (Monotone *)aClassPtr; + cl->stop(); +} + +void Openmpt_destroy(void * aClassPtr) +{ + delete (Openmpt *)aClassPtr; +} + +void * Openmpt_create() +{ + return (void *)new Openmpt; +} + +int Openmpt_load(void * aClassPtr, const char * aFilename) +{ + Openmpt * cl = (Openmpt *)aClassPtr; + return cl->load(aFilename); +} + +int Openmpt_loadMem(void * aClassPtr, unsigned char * aMem, unsigned int aLength) +{ + Openmpt * cl = (Openmpt *)aClassPtr; + return cl->loadMem(aMem, aLength); +} + +int Openmpt_loadMemEx(void * aClassPtr, unsigned char * aMem, unsigned int aLength, int aCopy, int aTakeOwnership) +{ + Openmpt * cl = (Openmpt *)aClassPtr; + return cl->loadMem(aMem, aLength, !!aCopy, !!aTakeOwnership); +} + +int Openmpt_loadFile(void * aClassPtr, File * aFile) +{ + Openmpt * cl = (Openmpt *)aClassPtr; + return cl->loadFile(aFile); +} + +void Openmpt_setVolume(void * aClassPtr, float aVolume) +{ + Openmpt * cl = (Openmpt *)aClassPtr; + cl->setVolume(aVolume); +} + +void Openmpt_setLooping(void * aClassPtr, int aLoop) +{ + Openmpt * cl = (Openmpt *)aClassPtr; + cl->setLooping(!!aLoop); +} + +void Openmpt_set3dMinMaxDistance(void * aClassPtr, float aMinDistance, float aMaxDistance) +{ + Openmpt * cl = (Openmpt *)aClassPtr; + cl->set3dMinMaxDistance(aMinDistance, aMaxDistance); +} + +void Openmpt_set3dAttenuation(void * aClassPtr, unsigned int aAttenuationModel, float aAttenuationRolloffFactor) +{ + Openmpt * cl = (Openmpt *)aClassPtr; + cl->set3dAttenuation(aAttenuationModel, aAttenuationRolloffFactor); +} + +void Openmpt_set3dDopplerFactor(void * aClassPtr, float aDopplerFactor) +{ + Openmpt * cl = (Openmpt *)aClassPtr; + cl->set3dDopplerFactor(aDopplerFactor); +} + +void Openmpt_set3dListenerRelative(void * aClassPtr, int aListenerRelative) +{ + Openmpt * cl = (Openmpt *)aClassPtr; + cl->set3dListenerRelative(!!aListenerRelative); +} + +void Openmpt_set3dDistanceDelay(void * aClassPtr, int aDistanceDelay) +{ + Openmpt * cl = (Openmpt *)aClassPtr; + cl->set3dDistanceDelay(!!aDistanceDelay); +} + +void Openmpt_set3dCollider(void * aClassPtr, AudioCollider * aCollider) +{ + Openmpt * cl = (Openmpt *)aClassPtr; + cl->set3dCollider(aCollider); +} + +void Openmpt_set3dColliderEx(void * aClassPtr, AudioCollider * aCollider, int aUserData) +{ + Openmpt * cl = (Openmpt *)aClassPtr; + cl->set3dCollider(aCollider, aUserData); +} + +void Openmpt_set3dAttenuator(void * aClassPtr, AudioAttenuator * aAttenuator) +{ + Openmpt * cl = (Openmpt *)aClassPtr; + cl->set3dAttenuator(aAttenuator); +} + +void Openmpt_setInaudibleBehavior(void * aClassPtr, int aMustTick, int aKill) +{ + Openmpt * cl = (Openmpt *)aClassPtr; + cl->setInaudibleBehavior(!!aMustTick, !!aKill); +} + +void Openmpt_setLoopPoint(void * aClassPtr, double aLoopPoint) +{ + Openmpt * cl = (Openmpt *)aClassPtr; + cl->setLoopPoint(aLoopPoint); +} + +double Openmpt_getLoopPoint(void * aClassPtr) +{ + Openmpt * cl = (Openmpt *)aClassPtr; + return cl->getLoopPoint(); +} + +void Openmpt_setFilter(void * aClassPtr, unsigned int aFilterId, Filter * aFilter) +{ + Openmpt * cl = (Openmpt *)aClassPtr; + cl->setFilter(aFilterId, aFilter); +} + +void Openmpt_stop(void * aClassPtr) +{ + Openmpt * cl = (Openmpt *)aClassPtr; + cl->stop(); +} + +void Queue_destroy(void * aClassPtr) +{ + delete (Queue *)aClassPtr; +} + +void * Queue_create() +{ + return (void *)new Queue; +} + +int Queue_play(void * aClassPtr, AudioSource * aSound) +{ + Queue * cl = (Queue *)aClassPtr; + return cl->play(*aSound); +} + +unsigned int Queue_getQueueCount(void * aClassPtr) +{ + Queue * cl = (Queue *)aClassPtr; + return cl->getQueueCount(); +} + +int Queue_isCurrentlyPlaying(void * aClassPtr, AudioSource * aSound) +{ + Queue * cl = (Queue *)aClassPtr; + return cl->isCurrentlyPlaying(*aSound); +} + +int Queue_setParamsFromAudioSource(void * aClassPtr, AudioSource * aSound) +{ + Queue * cl = (Queue *)aClassPtr; + return cl->setParamsFromAudioSource(*aSound); +} + +int Queue_setParams(void * aClassPtr, float aSamplerate) +{ + Queue * cl = (Queue *)aClassPtr; + return cl->setParams(aSamplerate); +} + +int Queue_setParamsEx(void * aClassPtr, float aSamplerate, unsigned int aChannels) +{ + Queue * cl = (Queue *)aClassPtr; + return cl->setParams(aSamplerate, aChannels); +} + +void Queue_setVolume(void * aClassPtr, float aVolume) +{ + Queue * cl = (Queue *)aClassPtr; + cl->setVolume(aVolume); +} + +void Queue_setLooping(void * aClassPtr, int aLoop) +{ + Queue * cl = (Queue *)aClassPtr; + cl->setLooping(!!aLoop); +} + +void Queue_set3dMinMaxDistance(void * aClassPtr, float aMinDistance, float aMaxDistance) +{ + Queue * cl = (Queue *)aClassPtr; + cl->set3dMinMaxDistance(aMinDistance, aMaxDistance); +} + +void Queue_set3dAttenuation(void * aClassPtr, unsigned int aAttenuationModel, float aAttenuationRolloffFactor) +{ + Queue * cl = (Queue *)aClassPtr; + cl->set3dAttenuation(aAttenuationModel, aAttenuationRolloffFactor); +} + +void Queue_set3dDopplerFactor(void * aClassPtr, float aDopplerFactor) +{ + Queue * cl = (Queue *)aClassPtr; + cl->set3dDopplerFactor(aDopplerFactor); +} + +void Queue_set3dListenerRelative(void * aClassPtr, int aListenerRelative) +{ + Queue * cl = (Queue *)aClassPtr; + cl->set3dListenerRelative(!!aListenerRelative); +} + +void Queue_set3dDistanceDelay(void * aClassPtr, int aDistanceDelay) +{ + Queue * cl = (Queue *)aClassPtr; + cl->set3dDistanceDelay(!!aDistanceDelay); +} + +void Queue_set3dCollider(void * aClassPtr, AudioCollider * aCollider) +{ + Queue * cl = (Queue *)aClassPtr; + cl->set3dCollider(aCollider); +} + +void Queue_set3dColliderEx(void * aClassPtr, AudioCollider * aCollider, int aUserData) +{ + Queue * cl = (Queue *)aClassPtr; + cl->set3dCollider(aCollider, aUserData); +} + +void Queue_set3dAttenuator(void * aClassPtr, AudioAttenuator * aAttenuator) +{ + Queue * cl = (Queue *)aClassPtr; + cl->set3dAttenuator(aAttenuator); +} + +void Queue_setInaudibleBehavior(void * aClassPtr, int aMustTick, int aKill) +{ + Queue * cl = (Queue *)aClassPtr; + cl->setInaudibleBehavior(!!aMustTick, !!aKill); +} + +void Queue_setLoopPoint(void * aClassPtr, double aLoopPoint) +{ + Queue * cl = (Queue *)aClassPtr; + cl->setLoopPoint(aLoopPoint); +} + +double Queue_getLoopPoint(void * aClassPtr) +{ + Queue * cl = (Queue *)aClassPtr; + return cl->getLoopPoint(); +} + +void Queue_setFilter(void * aClassPtr, unsigned int aFilterId, Filter * aFilter) +{ + Queue * cl = (Queue *)aClassPtr; + cl->setFilter(aFilterId, aFilter); +} + +void Queue_stop(void * aClassPtr) +{ + Queue * cl = (Queue *)aClassPtr; + cl->stop(); +} + +void RobotizeFilter_destroy(void * aClassPtr) +{ + delete (RobotizeFilter *)aClassPtr; +} + +void * RobotizeFilter_create() +{ + return (void *)new RobotizeFilter; +} + +void Prg_destroy(void * aClassPtr) +{ + delete (Prg *)aClassPtr; +} + +void * Prg_create() +{ + return (void *)new Prg; +} + +unsigned int Prg_rand(void * aClassPtr) +{ + Prg * cl = (Prg *)aClassPtr; + return cl->rand(); +} + +void Prg_srand(void * aClassPtr, int aSeed) +{ + Prg * cl = (Prg *)aClassPtr; + cl->srand(aSeed); +} + +void Sfxr_destroy(void * aClassPtr) +{ + delete (Sfxr *)aClassPtr; +} + +void * Sfxr_create() +{ + return (void *)new Sfxr; +} + +void Sfxr_resetParams(void * aClassPtr) +{ + Sfxr * cl = (Sfxr *)aClassPtr; + cl->resetParams(); +} + +int Sfxr_loadParams(void * aClassPtr, const char * aFilename) +{ + Sfxr * cl = (Sfxr *)aClassPtr; + return cl->loadParams(aFilename); +} + +int Sfxr_loadParamsMem(void * aClassPtr, unsigned char * aMem, unsigned int aLength) +{ + Sfxr * cl = (Sfxr *)aClassPtr; + return cl->loadParamsMem(aMem, aLength); +} + +int Sfxr_loadParamsMemEx(void * aClassPtr, unsigned char * aMem, unsigned int aLength, int aCopy, int aTakeOwnership) +{ + Sfxr * cl = (Sfxr *)aClassPtr; + return cl->loadParamsMem(aMem, aLength, !!aCopy, !!aTakeOwnership); +} + +int Sfxr_loadParamsFile(void * aClassPtr, File * aFile) +{ + Sfxr * cl = (Sfxr *)aClassPtr; + return cl->loadParamsFile(aFile); +} + +int Sfxr_loadPreset(void * aClassPtr, int aPresetNo, int aRandSeed) +{ + Sfxr * cl = (Sfxr *)aClassPtr; + return cl->loadPreset(aPresetNo, aRandSeed); +} + +void Sfxr_setVolume(void * aClassPtr, float aVolume) +{ + Sfxr * cl = (Sfxr *)aClassPtr; + cl->setVolume(aVolume); +} + +void Sfxr_setLooping(void * aClassPtr, int aLoop) +{ + Sfxr * cl = (Sfxr *)aClassPtr; + cl->setLooping(!!aLoop); +} + +void Sfxr_set3dMinMaxDistance(void * aClassPtr, float aMinDistance, float aMaxDistance) +{ + Sfxr * cl = (Sfxr *)aClassPtr; + cl->set3dMinMaxDistance(aMinDistance, aMaxDistance); +} + +void Sfxr_set3dAttenuation(void * aClassPtr, unsigned int aAttenuationModel, float aAttenuationRolloffFactor) +{ + Sfxr * cl = (Sfxr *)aClassPtr; + cl->set3dAttenuation(aAttenuationModel, aAttenuationRolloffFactor); +} + +void Sfxr_set3dDopplerFactor(void * aClassPtr, float aDopplerFactor) +{ + Sfxr * cl = (Sfxr *)aClassPtr; + cl->set3dDopplerFactor(aDopplerFactor); +} + +void Sfxr_set3dListenerRelative(void * aClassPtr, int aListenerRelative) +{ + Sfxr * cl = (Sfxr *)aClassPtr; + cl->set3dListenerRelative(!!aListenerRelative); +} + +void Sfxr_set3dDistanceDelay(void * aClassPtr, int aDistanceDelay) +{ + Sfxr * cl = (Sfxr *)aClassPtr; + cl->set3dDistanceDelay(!!aDistanceDelay); +} + +void Sfxr_set3dCollider(void * aClassPtr, AudioCollider * aCollider) +{ + Sfxr * cl = (Sfxr *)aClassPtr; + cl->set3dCollider(aCollider); +} + +void Sfxr_set3dColliderEx(void * aClassPtr, AudioCollider * aCollider, int aUserData) +{ + Sfxr * cl = (Sfxr *)aClassPtr; + cl->set3dCollider(aCollider, aUserData); +} + +void Sfxr_set3dAttenuator(void * aClassPtr, AudioAttenuator * aAttenuator) +{ + Sfxr * cl = (Sfxr *)aClassPtr; + cl->set3dAttenuator(aAttenuator); +} + +void Sfxr_setInaudibleBehavior(void * aClassPtr, int aMustTick, int aKill) +{ + Sfxr * cl = (Sfxr *)aClassPtr; + cl->setInaudibleBehavior(!!aMustTick, !!aKill); +} + +void Sfxr_setLoopPoint(void * aClassPtr, double aLoopPoint) +{ + Sfxr * cl = (Sfxr *)aClassPtr; + cl->setLoopPoint(aLoopPoint); +} + +double Sfxr_getLoopPoint(void * aClassPtr) +{ + Sfxr * cl = (Sfxr *)aClassPtr; + return cl->getLoopPoint(); +} + +void Sfxr_setFilter(void * aClassPtr, unsigned int aFilterId, Filter * aFilter) +{ + Sfxr * cl = (Sfxr *)aClassPtr; + cl->setFilter(aFilterId, aFilter); +} + +void Sfxr_stop(void * aClassPtr) +{ + Sfxr * cl = (Sfxr *)aClassPtr; + cl->stop(); +} + +void Speech_destroy(void * aClassPtr) +{ + delete (Speech *)aClassPtr; +} + +void * Speech_create() +{ + return (void *)new Speech; +} + +int Speech_setText(void * aClassPtr, const char * aText) +{ + Speech * cl = (Speech *)aClassPtr; + return cl->setText(aText); +} + +int Speech_setParams(void * aClassPtr) +{ + Speech * cl = (Speech *)aClassPtr; + return cl->setParams(); +} + +int Speech_setParamsEx(void * aClassPtr, unsigned int aBaseFrequency, float aBaseSpeed, float aBaseDeclination, int aBaseWaveform) +{ + Speech * cl = (Speech *)aClassPtr; + return cl->setParams(aBaseFrequency, aBaseSpeed, aBaseDeclination, aBaseWaveform); +} + +void Speech_setVolume(void * aClassPtr, float aVolume) +{ + Speech * cl = (Speech *)aClassPtr; + cl->setVolume(aVolume); +} + +void Speech_setLooping(void * aClassPtr, int aLoop) +{ + Speech * cl = (Speech *)aClassPtr; + cl->setLooping(!!aLoop); +} + +void Speech_set3dMinMaxDistance(void * aClassPtr, float aMinDistance, float aMaxDistance) +{ + Speech * cl = (Speech *)aClassPtr; + cl->set3dMinMaxDistance(aMinDistance, aMaxDistance); +} + +void Speech_set3dAttenuation(void * aClassPtr, unsigned int aAttenuationModel, float aAttenuationRolloffFactor) +{ + Speech * cl = (Speech *)aClassPtr; + cl->set3dAttenuation(aAttenuationModel, aAttenuationRolloffFactor); +} + +void Speech_set3dDopplerFactor(void * aClassPtr, float aDopplerFactor) +{ + Speech * cl = (Speech *)aClassPtr; + cl->set3dDopplerFactor(aDopplerFactor); +} + +void Speech_set3dListenerRelative(void * aClassPtr, int aListenerRelative) +{ + Speech * cl = (Speech *)aClassPtr; + cl->set3dListenerRelative(!!aListenerRelative); +} + +void Speech_set3dDistanceDelay(void * aClassPtr, int aDistanceDelay) +{ + Speech * cl = (Speech *)aClassPtr; + cl->set3dDistanceDelay(!!aDistanceDelay); +} + +void Speech_set3dCollider(void * aClassPtr, AudioCollider * aCollider) +{ + Speech * cl = (Speech *)aClassPtr; + cl->set3dCollider(aCollider); +} + +void Speech_set3dColliderEx(void * aClassPtr, AudioCollider * aCollider, int aUserData) +{ + Speech * cl = (Speech *)aClassPtr; + cl->set3dCollider(aCollider, aUserData); +} + +void Speech_set3dAttenuator(void * aClassPtr, AudioAttenuator * aAttenuator) +{ + Speech * cl = (Speech *)aClassPtr; + cl->set3dAttenuator(aAttenuator); +} + +void Speech_setInaudibleBehavior(void * aClassPtr, int aMustTick, int aKill) +{ + Speech * cl = (Speech *)aClassPtr; + cl->setInaudibleBehavior(!!aMustTick, !!aKill); +} + +void Speech_setLoopPoint(void * aClassPtr, double aLoopPoint) +{ + Speech * cl = (Speech *)aClassPtr; + cl->setLoopPoint(aLoopPoint); +} + +double Speech_getLoopPoint(void * aClassPtr) +{ + Speech * cl = (Speech *)aClassPtr; + return cl->getLoopPoint(); +} + +void Speech_setFilter(void * aClassPtr, unsigned int aFilterId, Filter * aFilter) +{ + Speech * cl = (Speech *)aClassPtr; + cl->setFilter(aFilterId, aFilter); +} + +void Speech_stop(void * aClassPtr) +{ + Speech * cl = (Speech *)aClassPtr; + cl->stop(); +} + +void TedSid_destroy(void * aClassPtr) +{ + delete (TedSid *)aClassPtr; +} + +void * TedSid_create() +{ + return (void *)new TedSid; +} + +int TedSid_load(void * aClassPtr, const char * aFilename) +{ + TedSid * cl = (TedSid *)aClassPtr; + return cl->load(aFilename); +} + +int TedSid_loadToMem(void * aClassPtr, const char * aFilename) +{ + TedSid * cl = (TedSid *)aClassPtr; + return cl->loadToMem(aFilename); +} + +int TedSid_loadMem(void * aClassPtr, unsigned char * aMem, unsigned int aLength) +{ + TedSid * cl = (TedSid *)aClassPtr; + return cl->loadMem(aMem, aLength); +} + +int TedSid_loadMemEx(void * aClassPtr, unsigned char * aMem, unsigned int aLength, int aCopy, int aTakeOwnership) +{ + TedSid * cl = (TedSid *)aClassPtr; + return cl->loadMem(aMem, aLength, !!aCopy, !!aTakeOwnership); +} + +int TedSid_loadFileToMem(void * aClassPtr, File * aFile) +{ + TedSid * cl = (TedSid *)aClassPtr; + return cl->loadFileToMem(aFile); +} + +int TedSid_loadFile(void * aClassPtr, File * aFile) +{ + TedSid * cl = (TedSid *)aClassPtr; + return cl->loadFile(aFile); +} + +void TedSid_setVolume(void * aClassPtr, float aVolume) +{ + TedSid * cl = (TedSid *)aClassPtr; + cl->setVolume(aVolume); +} + +void TedSid_setLooping(void * aClassPtr, int aLoop) +{ + TedSid * cl = (TedSid *)aClassPtr; + cl->setLooping(!!aLoop); +} + +void TedSid_set3dMinMaxDistance(void * aClassPtr, float aMinDistance, float aMaxDistance) +{ + TedSid * cl = (TedSid *)aClassPtr; + cl->set3dMinMaxDistance(aMinDistance, aMaxDistance); +} + +void TedSid_set3dAttenuation(void * aClassPtr, unsigned int aAttenuationModel, float aAttenuationRolloffFactor) +{ + TedSid * cl = (TedSid *)aClassPtr; + cl->set3dAttenuation(aAttenuationModel, aAttenuationRolloffFactor); +} + +void TedSid_set3dDopplerFactor(void * aClassPtr, float aDopplerFactor) +{ + TedSid * cl = (TedSid *)aClassPtr; + cl->set3dDopplerFactor(aDopplerFactor); +} + +void TedSid_set3dListenerRelative(void * aClassPtr, int aListenerRelative) +{ + TedSid * cl = (TedSid *)aClassPtr; + cl->set3dListenerRelative(!!aListenerRelative); +} + +void TedSid_set3dDistanceDelay(void * aClassPtr, int aDistanceDelay) +{ + TedSid * cl = (TedSid *)aClassPtr; + cl->set3dDistanceDelay(!!aDistanceDelay); +} + +void TedSid_set3dCollider(void * aClassPtr, AudioCollider * aCollider) +{ + TedSid * cl = (TedSid *)aClassPtr; + cl->set3dCollider(aCollider); +} + +void TedSid_set3dColliderEx(void * aClassPtr, AudioCollider * aCollider, int aUserData) +{ + TedSid * cl = (TedSid *)aClassPtr; + cl->set3dCollider(aCollider, aUserData); +} + +void TedSid_set3dAttenuator(void * aClassPtr, AudioAttenuator * aAttenuator) +{ + TedSid * cl = (TedSid *)aClassPtr; + cl->set3dAttenuator(aAttenuator); +} + +void TedSid_setInaudibleBehavior(void * aClassPtr, int aMustTick, int aKill) +{ + TedSid * cl = (TedSid *)aClassPtr; + cl->setInaudibleBehavior(!!aMustTick, !!aKill); +} + +void TedSid_setLoopPoint(void * aClassPtr, double aLoopPoint) +{ + TedSid * cl = (TedSid *)aClassPtr; + cl->setLoopPoint(aLoopPoint); +} + +double TedSid_getLoopPoint(void * aClassPtr) +{ + TedSid * cl = (TedSid *)aClassPtr; + return cl->getLoopPoint(); +} + +void TedSid_setFilter(void * aClassPtr, unsigned int aFilterId, Filter * aFilter) +{ + TedSid * cl = (TedSid *)aClassPtr; + cl->setFilter(aFilterId, aFilter); +} + +void TedSid_stop(void * aClassPtr) +{ + TedSid * cl = (TedSid *)aClassPtr; + cl->stop(); +} + +void Vic_destroy(void * aClassPtr) +{ + delete (Vic *)aClassPtr; +} + +void * Vic_create() +{ + return (void *)new Vic; +} + +void Vic_setModel(void * aClassPtr, int model) +{ + Vic * cl = (Vic *)aClassPtr; + cl->setModel(model); +} + +int Vic_getModel(void * aClassPtr) +{ + Vic * cl = (Vic *)aClassPtr; + return cl->getModel(); +} + +void Vic_setRegister(void * aClassPtr, int reg, unsigned char value) +{ + Vic * cl = (Vic *)aClassPtr; + cl->setRegister(reg, value); +} + +unsigned char Vic_getRegister(void * aClassPtr, int reg) +{ + Vic * cl = (Vic *)aClassPtr; + return cl->getRegister(reg); +} + +void Vic_setVolume(void * aClassPtr, float aVolume) +{ + Vic * cl = (Vic *)aClassPtr; + cl->setVolume(aVolume); +} + +void Vic_setLooping(void * aClassPtr, int aLoop) +{ + Vic * cl = (Vic *)aClassPtr; + cl->setLooping(!!aLoop); +} + +void Vic_set3dMinMaxDistance(void * aClassPtr, float aMinDistance, float aMaxDistance) +{ + Vic * cl = (Vic *)aClassPtr; + cl->set3dMinMaxDistance(aMinDistance, aMaxDistance); +} + +void Vic_set3dAttenuation(void * aClassPtr, unsigned int aAttenuationModel, float aAttenuationRolloffFactor) +{ + Vic * cl = (Vic *)aClassPtr; + cl->set3dAttenuation(aAttenuationModel, aAttenuationRolloffFactor); +} + +void Vic_set3dDopplerFactor(void * aClassPtr, float aDopplerFactor) +{ + Vic * cl = (Vic *)aClassPtr; + cl->set3dDopplerFactor(aDopplerFactor); +} + +void Vic_set3dListenerRelative(void * aClassPtr, int aListenerRelative) +{ + Vic * cl = (Vic *)aClassPtr; + cl->set3dListenerRelative(!!aListenerRelative); +} + +void Vic_set3dDistanceDelay(void * aClassPtr, int aDistanceDelay) +{ + Vic * cl = (Vic *)aClassPtr; + cl->set3dDistanceDelay(!!aDistanceDelay); +} + +void Vic_set3dCollider(void * aClassPtr, AudioCollider * aCollider) +{ + Vic * cl = (Vic *)aClassPtr; + cl->set3dCollider(aCollider); +} + +void Vic_set3dColliderEx(void * aClassPtr, AudioCollider * aCollider, int aUserData) +{ + Vic * cl = (Vic *)aClassPtr; + cl->set3dCollider(aCollider, aUserData); +} + +void Vic_set3dAttenuator(void * aClassPtr, AudioAttenuator * aAttenuator) +{ + Vic * cl = (Vic *)aClassPtr; + cl->set3dAttenuator(aAttenuator); +} + +void Vic_setInaudibleBehavior(void * aClassPtr, int aMustTick, int aKill) +{ + Vic * cl = (Vic *)aClassPtr; + cl->setInaudibleBehavior(!!aMustTick, !!aKill); +} + +void Vic_setLoopPoint(void * aClassPtr, double aLoopPoint) +{ + Vic * cl = (Vic *)aClassPtr; + cl->setLoopPoint(aLoopPoint); +} + +double Vic_getLoopPoint(void * aClassPtr) +{ + Vic * cl = (Vic *)aClassPtr; + return cl->getLoopPoint(); +} + +void Vic_setFilter(void * aClassPtr, unsigned int aFilterId, Filter * aFilter) +{ + Vic * cl = (Vic *)aClassPtr; + cl->setFilter(aFilterId, aFilter); +} + +void Vic_stop(void * aClassPtr) +{ + Vic * cl = (Vic *)aClassPtr; + cl->stop(); +} + +void Vizsn_destroy(void * aClassPtr) +{ + delete (Vizsn *)aClassPtr; +} + +void * Vizsn_create() +{ + return (void *)new Vizsn; +} + +void Vizsn_setText(void * aClassPtr, char * aText) +{ + Vizsn * cl = (Vizsn *)aClassPtr; + cl->setText(aText); +} + +void Vizsn_setVolume(void * aClassPtr, float aVolume) +{ + Vizsn * cl = (Vizsn *)aClassPtr; + cl->setVolume(aVolume); +} + +void Vizsn_setLooping(void * aClassPtr, int aLoop) +{ + Vizsn * cl = (Vizsn *)aClassPtr; + cl->setLooping(!!aLoop); +} + +void Vizsn_set3dMinMaxDistance(void * aClassPtr, float aMinDistance, float aMaxDistance) +{ + Vizsn * cl = (Vizsn *)aClassPtr; + cl->set3dMinMaxDistance(aMinDistance, aMaxDistance); +} + +void Vizsn_set3dAttenuation(void * aClassPtr, unsigned int aAttenuationModel, float aAttenuationRolloffFactor) +{ + Vizsn * cl = (Vizsn *)aClassPtr; + cl->set3dAttenuation(aAttenuationModel, aAttenuationRolloffFactor); +} + +void Vizsn_set3dDopplerFactor(void * aClassPtr, float aDopplerFactor) +{ + Vizsn * cl = (Vizsn *)aClassPtr; + cl->set3dDopplerFactor(aDopplerFactor); +} + +void Vizsn_set3dListenerRelative(void * aClassPtr, int aListenerRelative) +{ + Vizsn * cl = (Vizsn *)aClassPtr; + cl->set3dListenerRelative(!!aListenerRelative); +} + +void Vizsn_set3dDistanceDelay(void * aClassPtr, int aDistanceDelay) +{ + Vizsn * cl = (Vizsn *)aClassPtr; + cl->set3dDistanceDelay(!!aDistanceDelay); +} + +void Vizsn_set3dCollider(void * aClassPtr, AudioCollider * aCollider) +{ + Vizsn * cl = (Vizsn *)aClassPtr; + cl->set3dCollider(aCollider); +} + +void Vizsn_set3dColliderEx(void * aClassPtr, AudioCollider * aCollider, int aUserData) +{ + Vizsn * cl = (Vizsn *)aClassPtr; + cl->set3dCollider(aCollider, aUserData); +} + +void Vizsn_set3dAttenuator(void * aClassPtr, AudioAttenuator * aAttenuator) +{ + Vizsn * cl = (Vizsn *)aClassPtr; + cl->set3dAttenuator(aAttenuator); +} + +void Vizsn_setInaudibleBehavior(void * aClassPtr, int aMustTick, int aKill) +{ + Vizsn * cl = (Vizsn *)aClassPtr; + cl->setInaudibleBehavior(!!aMustTick, !!aKill); +} + +void Vizsn_setLoopPoint(void * aClassPtr, double aLoopPoint) +{ + Vizsn * cl = (Vizsn *)aClassPtr; + cl->setLoopPoint(aLoopPoint); +} + +double Vizsn_getLoopPoint(void * aClassPtr) +{ + Vizsn * cl = (Vizsn *)aClassPtr; + return cl->getLoopPoint(); +} + +void Vizsn_setFilter(void * aClassPtr, unsigned int aFilterId, Filter * aFilter) +{ + Vizsn * cl = (Vizsn *)aClassPtr; + cl->setFilter(aFilterId, aFilter); +} + +void Vizsn_stop(void * aClassPtr) +{ + Vizsn * cl = (Vizsn *)aClassPtr; + cl->stop(); +} + +void Wav_destroy(void * aClassPtr) +{ + delete (Wav *)aClassPtr; +} + +void * Wav_create() +{ + return (void *)new Wav; +} + +int Wav_load(void * aClassPtr, const char * aFilename) +{ + Wav * cl = (Wav *)aClassPtr; + return cl->load(aFilename); +} + +int Wav_loadMem(void * aClassPtr, unsigned char * aMem, unsigned int aLength) +{ + Wav * cl = (Wav *)aClassPtr; + return cl->loadMem(aMem, aLength); +} + +int Wav_loadMemEx(void * aClassPtr, unsigned char * aMem, unsigned int aLength, int aCopy, int aTakeOwnership) +{ + Wav * cl = (Wav *)aClassPtr; + return cl->loadMem(aMem, aLength, !!aCopy, !!aTakeOwnership); +} + +int Wav_loadFile(void * aClassPtr, File * aFile) +{ + Wav * cl = (Wav *)aClassPtr; + return cl->loadFile(aFile); +} + +int Wav_loadRawWave8(void * aClassPtr, unsigned char * aMem, unsigned int aLength) +{ + Wav * cl = (Wav *)aClassPtr; + return cl->loadRawWave8(aMem, aLength); +} + +int Wav_loadRawWave8Ex(void * aClassPtr, unsigned char * aMem, unsigned int aLength, float aSamplerate, unsigned int aChannels) +{ + Wav * cl = (Wav *)aClassPtr; + return cl->loadRawWave8(aMem, aLength, aSamplerate, aChannels); +} + +int Wav_loadRawWave16(void * aClassPtr, short * aMem, unsigned int aLength) +{ + Wav * cl = (Wav *)aClassPtr; + return cl->loadRawWave16(aMem, aLength); +} + +int Wav_loadRawWave16Ex(void * aClassPtr, short * aMem, unsigned int aLength, float aSamplerate, unsigned int aChannels) +{ + Wav * cl = (Wav *)aClassPtr; + return cl->loadRawWave16(aMem, aLength, aSamplerate, aChannels); +} + +int Wav_loadRawWave(void * aClassPtr, float * aMem, unsigned int aLength) +{ + Wav * cl = (Wav *)aClassPtr; + return cl->loadRawWave(aMem, aLength); +} + +int Wav_loadRawWaveEx(void * aClassPtr, float * aMem, unsigned int aLength, float aSamplerate, unsigned int aChannels, int aCopy, int aTakeOwnership) +{ + Wav * cl = (Wav *)aClassPtr; + return cl->loadRawWave(aMem, aLength, aSamplerate, aChannels, !!aCopy, !!aTakeOwnership); +} + +double Wav_getLength(void * aClassPtr) +{ + Wav * cl = (Wav *)aClassPtr; + return cl->getLength(); +} + +void Wav_setVolume(void * aClassPtr, float aVolume) +{ + Wav * cl = (Wav *)aClassPtr; + cl->setVolume(aVolume); +} + +void Wav_setLooping(void * aClassPtr, int aLoop) +{ + Wav * cl = (Wav *)aClassPtr; + cl->setLooping(!!aLoop); +} + +void Wav_set3dMinMaxDistance(void * aClassPtr, float aMinDistance, float aMaxDistance) +{ + Wav * cl = (Wav *)aClassPtr; + cl->set3dMinMaxDistance(aMinDistance, aMaxDistance); +} + +void Wav_set3dAttenuation(void * aClassPtr, unsigned int aAttenuationModel, float aAttenuationRolloffFactor) +{ + Wav * cl = (Wav *)aClassPtr; + cl->set3dAttenuation(aAttenuationModel, aAttenuationRolloffFactor); +} + +void Wav_set3dDopplerFactor(void * aClassPtr, float aDopplerFactor) +{ + Wav * cl = (Wav *)aClassPtr; + cl->set3dDopplerFactor(aDopplerFactor); +} + +void Wav_set3dListenerRelative(void * aClassPtr, int aListenerRelative) +{ + Wav * cl = (Wav *)aClassPtr; + cl->set3dListenerRelative(!!aListenerRelative); +} + +void Wav_set3dDistanceDelay(void * aClassPtr, int aDistanceDelay) +{ + Wav * cl = (Wav *)aClassPtr; + cl->set3dDistanceDelay(!!aDistanceDelay); +} + +void Wav_set3dCollider(void * aClassPtr, AudioCollider * aCollider) +{ + Wav * cl = (Wav *)aClassPtr; + cl->set3dCollider(aCollider); +} + +void Wav_set3dColliderEx(void * aClassPtr, AudioCollider * aCollider, int aUserData) +{ + Wav * cl = (Wav *)aClassPtr; + cl->set3dCollider(aCollider, aUserData); +} + +void Wav_set3dAttenuator(void * aClassPtr, AudioAttenuator * aAttenuator) +{ + Wav * cl = (Wav *)aClassPtr; + cl->set3dAttenuator(aAttenuator); +} + +void Wav_setInaudibleBehavior(void * aClassPtr, int aMustTick, int aKill) +{ + Wav * cl = (Wav *)aClassPtr; + cl->setInaudibleBehavior(!!aMustTick, !!aKill); +} + +void Wav_setLoopPoint(void * aClassPtr, double aLoopPoint) +{ + Wav * cl = (Wav *)aClassPtr; + cl->setLoopPoint(aLoopPoint); +} + +double Wav_getLoopPoint(void * aClassPtr) +{ + Wav * cl = (Wav *)aClassPtr; + return cl->getLoopPoint(); +} + +void Wav_setFilter(void * aClassPtr, unsigned int aFilterId, Filter * aFilter) +{ + Wav * cl = (Wav *)aClassPtr; + cl->setFilter(aFilterId, aFilter); +} + +void Wav_stop(void * aClassPtr) +{ + Wav * cl = (Wav *)aClassPtr; + cl->stop(); +} + +void WaveShaperFilter_destroy(void * aClassPtr) +{ + delete (WaveShaperFilter *)aClassPtr; +} + +int WaveShaperFilter_setParams(void * aClassPtr, float aAmount) +{ + WaveShaperFilter * cl = (WaveShaperFilter *)aClassPtr; + return cl->setParams(aAmount); +} + +int WaveShaperFilter_setParamsEx(void * aClassPtr, float aAmount, float aWet) +{ + WaveShaperFilter * cl = (WaveShaperFilter *)aClassPtr; + return cl->setParams(aAmount, aWet); +} + +void * WaveShaperFilter_create() +{ + return (void *)new WaveShaperFilter; +} + +void WavStream_destroy(void * aClassPtr) +{ + delete (WavStream *)aClassPtr; +} + +void * WavStream_create() +{ + return (void *)new WavStream; +} + +int WavStream_load(void * aClassPtr, const char * aFilename) +{ + WavStream * cl = (WavStream *)aClassPtr; + return cl->load(aFilename); +} + +int WavStream_loadMem(void * aClassPtr, unsigned char * aData, unsigned int aDataLen) +{ + WavStream * cl = (WavStream *)aClassPtr; + return cl->loadMem(aData, aDataLen); +} + +int WavStream_loadMemEx(void * aClassPtr, unsigned char * aData, unsigned int aDataLen, int aCopy, int aTakeOwnership) +{ + WavStream * cl = (WavStream *)aClassPtr; + return cl->loadMem(aData, aDataLen, !!aCopy, !!aTakeOwnership); +} + +int WavStream_loadToMem(void * aClassPtr, const char * aFilename) +{ + WavStream * cl = (WavStream *)aClassPtr; + return cl->loadToMem(aFilename); +} + +int WavStream_loadFile(void * aClassPtr, File * aFile) +{ + WavStream * cl = (WavStream *)aClassPtr; + return cl->loadFile(aFile); +} + +int WavStream_loadFileToMem(void * aClassPtr, File * aFile) +{ + WavStream * cl = (WavStream *)aClassPtr; + return cl->loadFileToMem(aFile); +} + +double WavStream_getLength(void * aClassPtr) +{ + WavStream * cl = (WavStream *)aClassPtr; + return cl->getLength(); +} + +void WavStream_setVolume(void * aClassPtr, float aVolume) +{ + WavStream * cl = (WavStream *)aClassPtr; + cl->setVolume(aVolume); +} + +void WavStream_setLooping(void * aClassPtr, int aLoop) +{ + WavStream * cl = (WavStream *)aClassPtr; + cl->setLooping(!!aLoop); +} + +void WavStream_set3dMinMaxDistance(void * aClassPtr, float aMinDistance, float aMaxDistance) +{ + WavStream * cl = (WavStream *)aClassPtr; + cl->set3dMinMaxDistance(aMinDistance, aMaxDistance); +} + +void WavStream_set3dAttenuation(void * aClassPtr, unsigned int aAttenuationModel, float aAttenuationRolloffFactor) +{ + WavStream * cl = (WavStream *)aClassPtr; + cl->set3dAttenuation(aAttenuationModel, aAttenuationRolloffFactor); +} + +void WavStream_set3dDopplerFactor(void * aClassPtr, float aDopplerFactor) +{ + WavStream * cl = (WavStream *)aClassPtr; + cl->set3dDopplerFactor(aDopplerFactor); +} + +void WavStream_set3dListenerRelative(void * aClassPtr, int aListenerRelative) +{ + WavStream * cl = (WavStream *)aClassPtr; + cl->set3dListenerRelative(!!aListenerRelative); +} + +void WavStream_set3dDistanceDelay(void * aClassPtr, int aDistanceDelay) +{ + WavStream * cl = (WavStream *)aClassPtr; + cl->set3dDistanceDelay(!!aDistanceDelay); +} + +void WavStream_set3dCollider(void * aClassPtr, AudioCollider * aCollider) +{ + WavStream * cl = (WavStream *)aClassPtr; + cl->set3dCollider(aCollider); +} + +void WavStream_set3dColliderEx(void * aClassPtr, AudioCollider * aCollider, int aUserData) +{ + WavStream * cl = (WavStream *)aClassPtr; + cl->set3dCollider(aCollider, aUserData); +} + +void WavStream_set3dAttenuator(void * aClassPtr, AudioAttenuator * aAttenuator) +{ + WavStream * cl = (WavStream *)aClassPtr; + cl->set3dAttenuator(aAttenuator); +} + +void WavStream_setInaudibleBehavior(void * aClassPtr, int aMustTick, int aKill) +{ + WavStream * cl = (WavStream *)aClassPtr; + cl->setInaudibleBehavior(!!aMustTick, !!aKill); +} + +void WavStream_setLoopPoint(void * aClassPtr, double aLoopPoint) +{ + WavStream * cl = (WavStream *)aClassPtr; + cl->setLoopPoint(aLoopPoint); +} + +double WavStream_getLoopPoint(void * aClassPtr) +{ + WavStream * cl = (WavStream *)aClassPtr; + return cl->getLoopPoint(); +} + +void WavStream_setFilter(void * aClassPtr, unsigned int aFilterId, Filter * aFilter) +{ + WavStream * cl = (WavStream *)aClassPtr; + cl->setFilter(aFilterId, aFilter); +} + +void WavStream_stop(void * aClassPtr) +{ + WavStream * cl = (WavStream *)aClassPtr; + cl->stop(); +} + +} // extern "C" + diff --git a/src/soloud/src/core/soloud.cpp b/src/soloud/src/core/soloud.cpp new file mode 100644 index 0000000..8406368 --- /dev/null +++ b/src/soloud/src/core/soloud.cpp @@ -0,0 +1,2005 @@ +/* +SoLoud audio engine +Copyright (c) 2013-2018 Jari Komppa + +This software is provided 'as-is', without any express or implied +warranty. In no event will the authors be held liable for any damages +arising from the use of this software. + +Permission is granted to anyone to use this software for any purpose, +including commercial applications, and to alter it and redistribute it +freely, subject to the following restrictions: + + 1. The origin of this software must not be misrepresented; you must not + claim that you wrote the original software. If you use this software + in a product, an acknowledgment in the product documentation would be + appreciated but is not required. + + 2. Altered source versions must be plainly marked as such, and must not be + misrepresented as being the original software. + + 3. This notice may not be removed or altered from any source + distribution. +*/ + +#include +#include +#include // sin +#include "soloud_internal.h" +#include "soloud_thread.h" +#include "soloud_fft.h" + +#ifdef SOLOUD_SSE_INTRINSICS +#include +#endif + +//#define FLOATING_POINT_DEBUG + +#ifdef FLOATING_POINT_DEBUG +#include +#endif + + + +#if !defined(WITH_SDL2) && !defined(WITH_SDL1) && !defined(WITH_PORTAUDIO) && \ + !defined(WITH_OPENAL) && !defined(WITH_XAUDIO2) && !defined(WITH_WINMM) && \ + !defined(WITH_WASAPI) && !defined(WITH_OSS) && !defined(WITH_SDL1_STATIC) && \ + !defined(WITH_SDL2_STATIC) && !defined(WITH_ALSA) && !defined(WITH_OPENSLES) && \ + !defined(WITH_NULL) && !defined(WITH_COREAUDIO) && !defined(WITH_VITA_HOMEBREW) +#error It appears you haven't enabled any of the back-ends. Please #define one or more of the WITH_ defines (or use premake) ' +#endif + + +namespace SoLoud +{ + AlignedFloatBuffer::AlignedFloatBuffer() + { + mBasePtr = 0; + mData = 0; + } + + result AlignedFloatBuffer::init(unsigned int aFloats) + { + delete[] mBasePtr; + mBasePtr = 0; + mData = 0; + mFloats = aFloats; +#ifdef DISABLE_SIMD + mBasePtr = new unsigned char[aFloats * sizeof(float)]; + if (mBasePtr == NULL) + return OUT_OF_MEMORY; + mData = mBasePtr; +#else + mBasePtr = new unsigned char[aFloats * sizeof(float) + 16]; + if (mBasePtr == NULL) + return OUT_OF_MEMORY; + mData = (float *)(((size_t)mBasePtr + 15)&~15); +#endif + return SO_NO_ERROR; + } + + void AlignedFloatBuffer::clear() + { + memset(mData, 0, sizeof(float) * mFloats); + } + + AlignedFloatBuffer::~AlignedFloatBuffer() + { + delete[] mBasePtr; + } + + TinyAlignedFloatBuffer::TinyAlignedFloatBuffer() + { + unsigned char * basePtr = &mActualData[0]; + mData = (float *)(((size_t)basePtr + 15)&~15); + } + + Soloud::Soloud() + { +#ifdef FLOATING_POINT_DEBUG + unsigned int u; + u = _controlfp(0, 0); + u = u & ~(_EM_INVALID | /*_EM_DENORMAL |*/ _EM_ZERODIVIDE | _EM_OVERFLOW /*| _EM_UNDERFLOW | _EM_INEXACT*/); + _controlfp(u, _MCW_EM); +#endif + mInsideAudioThreadMutex = false; + mScratchSize = 0; + mScratchNeeded = 0; + mSamplerate = 0; + mBufferSize = 0; + mFlags = 0; + mGlobalVolume = 0; + mPlayIndex = 0; + mBackendData = NULL; + mAudioThreadMutex = NULL; + mPostClipScaler = 0; + mBackendCleanupFunc = NULL; + mChannels = 2; + mStreamTime = 0; + mLastClockedTime = 0; + mAudioSourceID = 1; + mBackendString = 0; + mBackendID = 0; + mActiveVoiceDirty = true; + mActiveVoiceCount = 0; + int i; + for (i = 0; i < VOICE_COUNT; i++) + mActiveVoice[i] = 0; + for (i = 0; i < FILTERS_PER_STREAM; i++) + { + mFilter[i] = NULL; + mFilterInstance[i] = NULL; + } + for (i = 0; i < 256; i++) + { + mFFTData[i] = 0; + mVisualizationWaveData[i] = 0; + mWaveData[i] = 0; + } + for (i = 0; i < MAX_CHANNELS; i++) + { + mVisualizationChannelVolume[i] = 0; + } + for (i = 0; i < VOICE_COUNT; i++) + { + mVoice[i] = 0; + } + mVoiceGroup = 0; + mVoiceGroupCount = 0; + + m3dPosition[0] = 0; + m3dPosition[1] = 0; + m3dPosition[2] = 0; + m3dAt[0] = 0; + m3dAt[1] = 0; + m3dAt[2] = -1; + m3dUp[0] = 0; + m3dUp[1] = 1; + m3dUp[2] = 0; + m3dVelocity[0] = 0; + m3dVelocity[1] = 0; + m3dVelocity[2] = 0; + m3dSoundSpeed = 343.3f; + mMaxActiveVoices = 16; + mHighestVoice = 0; + mActiveVoiceDirty = true; + mResampleData = NULL; + } + + Soloud::~Soloud() + { + // let's stop all sounds before deinit, so we don't mess up our mutexes + stopAll(); + deinit(); + unsigned int i; + for (i = 0; i < FILTERS_PER_STREAM; i++) + { + delete mFilterInstance[i]; + } + for (i = 0; i < mVoiceGroupCount; i++) + delete[] mVoiceGroup[i]; + delete[] mVoiceGroup; + delete[] mResampleData; + } + + void Soloud::deinit() + { + SOLOUD_ASSERT(!mInsideAudioThreadMutex); + if (mBackendCleanupFunc) + mBackendCleanupFunc(this); + mBackendCleanupFunc = 0; + if (mAudioThreadMutex) + Thread::destroyMutex(mAudioThreadMutex); + mAudioThreadMutex = NULL; + } + + result Soloud::init(unsigned int aFlags, unsigned int aBackend, unsigned int aSamplerate, unsigned int aBufferSize, unsigned int aChannels) + { + if (aBackend >= BACKEND_MAX || aChannels == 3 || aChannels == 5 || aChannels == 7 || aChannels > MAX_CHANNELS) + return INVALID_PARAMETER; + + deinit(); + + mAudioThreadMutex = Thread::createMutex(); + + mBackendID = 0; + mBackendString = 0; + + int samplerate = 44100; + int buffersize = 2048; + int inited = 0; + + if (aSamplerate != Soloud::AUTO) samplerate = aSamplerate; + if (aBufferSize != Soloud::AUTO) buffersize = aBufferSize; + +#if defined(WITH_SDL1_STATIC) + if (!inited && + (aBackend == Soloud::SDL1 || + aBackend == Soloud::AUTO)) + { + if (aBufferSize == Soloud::AUTO) buffersize = 2048; + + int ret = sdl1static_init(this, aFlags, samplerate, buffersize, aChannels); + if (ret == 0) + { + inited = 1; + mBackendID = Soloud::SDL1; + } + + if (ret != 0 && aBackend != Soloud::AUTO) + return ret; + } +#endif + +#if defined(WITH_SDL2_STATIC) + if (!inited && + (aBackend == Soloud::SDL2 || + aBackend == Soloud::AUTO)) + { + if (aBufferSize == Soloud::AUTO) buffersize = 2048; + + int ret = sdl2static_init(this, aFlags, samplerate, buffersize, aChannels); + if (ret == 0) + { + inited = 1; + mBackendID = Soloud::SDL2; + } + + if (ret != 0 && aBackend != Soloud::AUTO) + return ret; + } +#endif + +#if defined(WITH_SDL2) + if (!inited && + (aBackend == Soloud::SDL2 || + aBackend == Soloud::AUTO)) + { + if (aBufferSize == Soloud::AUTO) buffersize = 2048; + + int ret = sdl2_init(this, aFlags, samplerate, buffersize, aChannels); + if (ret == 0) + { + inited = 1; + mBackendID = Soloud::SDL2; + } + + if (ret != 0 && aBackend != Soloud::AUTO) + return ret; + } +#endif + +#if defined(WITH_SDL1) + if (!inited && + (aBackend == Soloud::SDL1 || + aBackend == Soloud::AUTO)) + { + if (aBufferSize == Soloud::AUTO) buffersize = 2048; + + int ret = sdl1_init(this, aFlags, samplerate, buffersize, aChannels); + if (ret == 0) + { + inited = 1; + mBackendID = Soloud::SDL1; + } + + if (ret != 0 && aBackend != Soloud::AUTO) + return ret; + } +#endif + +#if defined(WITH_PORTAUDIO) + if (!inited && + (aBackend == Soloud::PORTAUDIO || + aBackend == Soloud::AUTO)) + { + if (aBufferSize == Soloud::AUTO) buffersize = 2048; + + int ret = portaudio_init(this, aFlags, samplerate, buffersize, aChannels); + if (ret == 0) + { + inited = 1; + mBackendID = Soloud::PORTAUDIO; + } + + if (ret != 0 && aBackend != Soloud::AUTO) + return ret; + } +#endif + +#if defined(WITH_XAUDIO2) + if (!inited && + (aBackend == Soloud::XAUDIO2 || + aBackend == Soloud::AUTO)) + { + if (aBufferSize == Soloud::AUTO) buffersize = 4096; + + int ret = xaudio2_init(this, aFlags, samplerate, buffersize, aChannels); + if (ret == 0) + { + inited = 1; + mBackendID = Soloud::XAUDIO2; + } + + if (ret != 0 && aBackend != Soloud::AUTO) + return ret; + } +#endif + +#if defined(WITH_WINMM) + if (!inited && + (aBackend == Soloud::WINMM || + aBackend == Soloud::AUTO)) + { + if (aBufferSize == Soloud::AUTO) buffersize = 4096; + + int ret = winmm_init(this, aFlags, samplerate, buffersize, aChannels); + if (ret == 0) + { + inited = 1; + mBackendID = Soloud::WINMM; + } + + if (ret != 0 && aBackend != Soloud::AUTO) + return ret; + } +#endif + +#if defined(WITH_WASAPI) + if (!inited && + (aBackend == Soloud::WASAPI || + aBackend == Soloud::AUTO)) + { + if (aBufferSize == Soloud::AUTO) buffersize = 4096; + if (aSamplerate == Soloud::AUTO) samplerate = 48000; + + int ret = wasapi_init(this, aFlags, samplerate, buffersize, aChannels); + if (ret == 0) + { + inited = 1; + mBackendID = Soloud::WASAPI; + } + + if (ret != 0 && aBackend != Soloud::AUTO) + return ret; + } +#endif + +#if defined(WITH_ALSA) + if (!inited && + (aBackend == Soloud::ALSA || + aBackend == Soloud::AUTO)) + { + if (aBufferSize == Soloud::AUTO) buffersize = 2048; + + int ret = alsa_init(this, aFlags, samplerate, buffersize, aChannels); + if (ret == 0) + { + inited = 1; + mBackendID = Soloud::ALSA; + } + + if (ret != 0 && aBackend != Soloud::AUTO) + return ret; + } +#endif + +#if defined(WITH_OSS) + if (!inited && + (aBackend == Soloud::OSS || + aBackend == Soloud::AUTO)) + { + if (aBufferSize == Soloud::AUTO) buffersize = 2048; + + int ret = oss_init(this, aFlags, samplerate, buffersize, aChannels); + if (ret == 0) + { + inited = 1; + mBackendID = Soloud::OSS; + } + + if (ret != 0 && aBackend != Soloud::AUTO) + return ret; + } +#endif + +#if defined(WITH_OPENAL) + if (!inited && + (aBackend == Soloud::OPENAL || + aBackend == Soloud::AUTO)) + { + if (aBufferSize == Soloud::AUTO) buffersize = 4096; + + int ret = openal_init(this, aFlags, samplerate, buffersize, aChannels); + if (ret == 0) + { + inited = 1; + mBackendID = Soloud::OPENAL; + } + + if (ret != 0 && aBackend != Soloud::AUTO) + return ret; + } +#endif + +#if defined(WITH_COREAUDIO) + if (!inited && + (aBackend == Soloud::COREAUDIO || + aBackend == Soloud::AUTO)) + { + if (aBufferSize == Soloud::AUTO) buffersize = 2048; + + int ret = coreaudio_init(this, aFlags, samplerate, buffersize, aChannels); + if (ret == 0) + { + inited = 1; + mBackendID = Soloud::COREAUDIO; + } + + if (ret != 0 && aBackend != Soloud::AUTO) + return ret; + } +#endif + +#if defined(WITH_OPENSLES) + if (!inited && + (aBackend == Soloud::OPENSLES || + aBackend == Soloud::AUTO)) + { + if (aBufferSize == Soloud::AUTO) buffersize = 4096; + + int ret = opensles_init(this, aFlags, samplerate, buffersize, aChannels); + if (ret == 0) + { + inited = 1; + mBackendID = Soloud::OPENSLES; + } + + if (ret != 0 && aBackend != Soloud::AUTO) + return ret; + } +#endif + +#if defined(WITH_VITA_HOMEBREW) + if (!inited && + (aBackend == Soloud::VITA_HOMEBREW || + aBackend == Soloud::AUTO)) + { + int ret = vita_homebrew_init(this, aFlags, samplerate, buffersize, aChannels); + if (ret == 0) + { + inited = 1; + mBackendID = Soloud::VITA_HOMEBREW; + } + + if (ret != 0 && aBackend != Soloud::AUTO) + return ret; + } +#endif + +#if defined(WITH_NULL) + if (!inited && + (aBackend == Soloud::NULLDRIVER)) + { + if (aBufferSize == Soloud::AUTO) buffersize = 2048; + + int ret = null_init(this, aFlags, samplerate, buffersize, aChannels); + if (ret == 0) + { + inited = 1; + mBackendID = Soloud::NULLDRIVER; + } + + if (ret != 0) + return ret; + } +#endif + + if (!inited && aBackend != Soloud::AUTO) + return NOT_IMPLEMENTED; + if (!inited) + return UNKNOWN_ERROR; + return 0; + } + + void Soloud::postinit(unsigned int aSamplerate, unsigned int aBufferSize, unsigned int aFlags, unsigned int aChannels) + { + mGlobalVolume = 1; + mChannels = aChannels; + mSamplerate = aSamplerate; + mBufferSize = aBufferSize; + mScratchSize = aBufferSize; + if (mScratchSize < SAMPLE_GRANULARITY * 2) mScratchSize = SAMPLE_GRANULARITY * 2; + if (mScratchSize < 4096) mScratchSize = 4096; + mScratchNeeded = mScratchSize; + mScratch.init(mScratchSize * MAX_CHANNELS); + mOutputScratch.init(mScratchSize * MAX_CHANNELS); + mResampleData = new AlignedFloatBuffer[mMaxActiveVoices * 2]; + mResampleDataOwner = new AudioSourceInstance*[mMaxActiveVoices]; + unsigned int i; + for (i = 0; i < mMaxActiveVoices * 2; i++) + mResampleData[i].init(SAMPLE_GRANULARITY * MAX_CHANNELS); + for (i = 0; i < mMaxActiveVoices; i++) + mResampleDataOwner[i] = NULL; + mFlags = aFlags; + mPostClipScaler = 0.95f; + switch (mChannels) + { + case 1: + m3dSpeakerPosition[0 * 3 + 0] = 0; + m3dSpeakerPosition[0 * 3 + 1] = 0; + m3dSpeakerPosition[0 * 3 + 2] = 1; + break; + case 2: + m3dSpeakerPosition[0 * 3 + 0] = 2; + m3dSpeakerPosition[0 * 3 + 1] = 0; + m3dSpeakerPosition[0 * 3 + 2] = 1; + m3dSpeakerPosition[1 * 3 + 0] = -2; + m3dSpeakerPosition[1 * 3 + 1] = 0; + m3dSpeakerPosition[1 * 3 + 2] = 1; + break; + case 4: + m3dSpeakerPosition[0 * 3 + 0] = 2; + m3dSpeakerPosition[0 * 3 + 1] = 0; + m3dSpeakerPosition[0 * 3 + 2] = 1; + m3dSpeakerPosition[1 * 3 + 0] = -2; + m3dSpeakerPosition[1 * 3 + 1] = 0; + m3dSpeakerPosition[1 * 3 + 2] = 1; + // I suppose technically the second pair should be straight left & right, + // but I prefer moving them a bit back to mirror the front speakers. + m3dSpeakerPosition[2 * 3 + 0] = 2; + m3dSpeakerPosition[2 * 3 + 1] = 0; + m3dSpeakerPosition[2 * 3 + 2] = -1; + m3dSpeakerPosition[3 * 3 + 0] = -2; + m3dSpeakerPosition[3 * 3 + 1] = 0; + m3dSpeakerPosition[3 * 3 + 2] = -1; + break; + case 6: + m3dSpeakerPosition[0 * 3 + 0] = 2; + m3dSpeakerPosition[0 * 3 + 1] = 0; + m3dSpeakerPosition[0 * 3 + 2] = 1; + m3dSpeakerPosition[1 * 3 + 0] = -2; + m3dSpeakerPosition[1 * 3 + 1] = 0; + m3dSpeakerPosition[1 * 3 + 2] = 1; + + // center and subwoofer. + m3dSpeakerPosition[2 * 3 + 0] = 0; + m3dSpeakerPosition[2 * 3 + 1] = 0; + m3dSpeakerPosition[2 * 3 + 2] = 1; + // Sub should be "mix of everything". We'll handle it as a special case and make it a null vector. + m3dSpeakerPosition[3 * 3 + 0] = 0; + m3dSpeakerPosition[3 * 3 + 1] = 0; + m3dSpeakerPosition[3 * 3 + 2] = 0; + + // I suppose technically the second pair should be straight left & right, + // but I prefer moving them a bit back to mirror the front speakers. + m3dSpeakerPosition[4 * 3 + 0] = 2; + m3dSpeakerPosition[4 * 3 + 1] = 0; + m3dSpeakerPosition[4 * 3 + 2] = -1; + m3dSpeakerPosition[5 * 3 + 0] = -2; + m3dSpeakerPosition[5 * 3 + 1] = 0; + m3dSpeakerPosition[5 * 3 + 2] = -1; + break; + case 8: + m3dSpeakerPosition[0 * 3 + 0] = 2; + m3dSpeakerPosition[0 * 3 + 1] = 0; + m3dSpeakerPosition[0 * 3 + 2] = 1; + m3dSpeakerPosition[1 * 3 + 0] = -2; + m3dSpeakerPosition[1 * 3 + 1] = 0; + m3dSpeakerPosition[1 * 3 + 2] = 1; + + // center and subwoofer. + m3dSpeakerPosition[2 * 3 + 0] = 0; + m3dSpeakerPosition[2 * 3 + 1] = 0; + m3dSpeakerPosition[2 * 3 + 2] = 1; + // Sub should be "mix of everything". We'll handle it as a special case and make it a null vector. + m3dSpeakerPosition[3 * 3 + 0] = 0; + m3dSpeakerPosition[3 * 3 + 1] = 0; + m3dSpeakerPosition[3 * 3 + 2] = 0; + + // side + m3dSpeakerPosition[4 * 3 + 0] = 2; + m3dSpeakerPosition[4 * 3 + 1] = 0; + m3dSpeakerPosition[4 * 3 + 2] = 0; + m3dSpeakerPosition[5 * 3 + 0] = -2; + m3dSpeakerPosition[5 * 3 + 1] = 0; + m3dSpeakerPosition[5 * 3 + 2] = 0; + + // back + m3dSpeakerPosition[6 * 3 + 0] = 2; + m3dSpeakerPosition[6 * 3 + 1] = 0; + m3dSpeakerPosition[6 * 3 + 2] = -1; + m3dSpeakerPosition[7 * 3 + 0] = -2; + m3dSpeakerPosition[7 * 3 + 1] = 0; + m3dSpeakerPosition[7 * 3 + 2] = -1; + break; + } + } + + const char * Soloud::getErrorString(result aErrorCode) const + { + switch (aErrorCode) + { + case SO_NO_ERROR: return "No error"; + case INVALID_PARAMETER: return "Some parameter is invalid"; + case FILE_NOT_FOUND: return "File not found"; + case FILE_LOAD_FAILED: return "File found, but could not be loaded"; + case DLL_NOT_FOUND: return "DLL not found, or wrong DLL"; + case OUT_OF_MEMORY: return "Out of memory"; + case NOT_IMPLEMENTED: return "Feature not implemented"; + /*case UNKNOWN_ERROR: return "Other error";*/ + } + return "Other error"; + } + + + float * Soloud::getWave() + { + int i; + lockAudioMutex(); + for (i = 0; i < 256; i++) + mWaveData[i] = mVisualizationWaveData[i]; + unlockAudioMutex(); + return mWaveData; + } + + float Soloud::getApproximateVolume(unsigned int aChannel) + { + if (aChannel > mChannels) + return 0; + float vol = 0; + lockAudioMutex(); + vol = mVisualizationChannelVolume[aChannel]; + unlockAudioMutex(); + return vol; + } + + + float * Soloud::calcFFT() + { + lockAudioMutex(); + float temp[1024]; + int i; + for (i = 0; i < 256; i++) + { + temp[i*2] = mVisualizationWaveData[i]; + temp[i*2+1] = 0; + temp[i+512] = 0; + temp[i+768] = 0; + } + unlockAudioMutex(); + + SoLoud::FFT::fft1024(temp); + + for (i = 0; i < 256; i++) + { + float real = temp[i * 2]; + float imag = temp[i * 2 + 1]; + mFFTData[i] = (float)sqrt(real*real+imag*imag); + } + + return mFFTData; + } + +#ifdef SOLOUD_SSE_INTRINSICS + void Soloud::clip(AlignedFloatBuffer &aBuffer, AlignedFloatBuffer &aDestBuffer, unsigned int aSamples, float aVolume0, float aVolume1) + { + float vd = (aVolume1 - aVolume0) / aSamples; + float v = aVolume0; + unsigned int i, j, c, d; + unsigned int samplequads = (aSamples + 3) / 4; // rounded up + + // Clip + if (mFlags & CLIP_ROUNDOFF) + { + float nb = -1.65f; __m128 negbound = _mm_load_ps1(&nb); + float pb = 1.65f; __m128 posbound = _mm_load_ps1(&pb); + float ls = 0.87f; __m128 linearscale = _mm_load_ps1(&ls); + float cs = -0.1f; __m128 cubicscale = _mm_load_ps1(&cs); + float nw = -0.9862875f; __m128 negwall = _mm_load_ps1(&nw); + float pw = 0.9862875f; __m128 poswall = _mm_load_ps1(&pw); + __m128 postscale = _mm_load_ps1(&mPostClipScaler); + TinyAlignedFloatBuffer volumes; + volumes.mData[0] = v; + volumes.mData[1] = v + vd; + volumes.mData[2] = v + vd + vd; + volumes.mData[3] = v + vd + vd + vd; + vd *= 4; + __m128 vdelta = _mm_load_ps1(&vd); + c = 0; + d = 0; + for (j = 0; j < mChannels; j++) + { + __m128 vol = _mm_load_ps(volumes.mData); + + for (i = 0; i < samplequads; i++) + { + //float f1 = origdata[c] * v; c++; v += vd; + __m128 f = _mm_load_ps(&aBuffer.mData[c]); + c += 4; + f = _mm_mul_ps(f, vol); + vol = _mm_add_ps(vol, vdelta); + + //float u1 = (f1 > -1.65f); + __m128 u = _mm_cmpgt_ps(f, negbound); + + //float o1 = (f1 < 1.65f); + __m128 o = _mm_cmplt_ps(f, posbound); + + //f1 = (0.87f * f1 - 0.1f * f1 * f1 * f1) * u1 * o1; + __m128 lin = _mm_mul_ps(f, linearscale); + __m128 cubic = _mm_mul_ps(f, f); + cubic = _mm_mul_ps(cubic, f); + cubic = _mm_mul_ps(cubic, cubicscale); + f = _mm_add_ps(cubic, lin); + + //f1 = f1 * u1 + !u1 * -0.9862875f; + __m128 lowmask = _mm_andnot_ps(u, negwall); + __m128 ilowmask = _mm_and_ps(u, f); + f = _mm_add_ps(lowmask, ilowmask); + + //f1 = f1 * o1 + !o1 * 0.9862875f; + __m128 himask = _mm_andnot_ps(o, poswall); + __m128 ihimask = _mm_and_ps(o, f); + f = _mm_add_ps(himask, ihimask); + + // outdata[d] = f1 * postclip; d++; + f = _mm_mul_ps(f, postscale); + _mm_store_ps(&aDestBuffer.mData[d], f); + d += 4; + } + } + } + else + { + float nb = -1.0f; __m128 negbound = _mm_load_ps1(&nb); + float pb = 1.0f; __m128 posbound = _mm_load_ps1(&pb); + __m128 postscale = _mm_load_ps1(&mPostClipScaler); + TinyAlignedFloatBuffer volumes; + volumes.mData[0] = v; + volumes.mData[1] = v + vd; + volumes.mData[2] = v + vd + vd; + volumes.mData[3] = v + vd + vd + vd; + vd *= 4; + __m128 vdelta = _mm_load_ps1(&vd); + c = 0; + d = 0; + for (j = 0; j < mChannels; j++) + { + __m128 vol = _mm_load_ps(volumes.mData); + for (i = 0; i < samplequads; i++) + { + //float f1 = aBuffer.mData[c] * v; c++; v += vd; + __m128 f = _mm_load_ps(&aBuffer.mData[c]); + c += 4; + f = _mm_mul_ps(f, vol); + vol = _mm_add_ps(vol, vdelta); + + //f1 = (f1 <= -1) ? -1 : (f1 >= 1) ? 1 : f1; + f = _mm_max_ps(f, negbound); + f = _mm_min_ps(f, posbound); + + //aDestBuffer.mData[d] = f1 * mPostClipScaler; d++; + f = _mm_mul_ps(f, postscale); + _mm_store_ps(&aDestBuffer.mData[d], f); + d += 4; + } + } + } + } +#else // fallback code + void Soloud::clip(AlignedFloatBuffer &aBuffer, AlignedFloatBuffer &aDestBuffer, unsigned int aSamples, float aVolume0, float aVolume1) + { + float vd = (aVolume1 - aVolume0) / aSamples; + float v = aVolume0; + unsigned int i, j, c, d; + unsigned int samplequads = (aSamples + 3) / 4; // rounded up + // Clip + if (mFlags & CLIP_ROUNDOFF) + { + c = 0; + d = 0; + for (j = 0; j < mChannels; j++) + { + v = aVolume0; + for (i = 0; i < samplequads; i++) + { + float f1 = aBuffer.mData[c] * v; c++; v += vd; + float f2 = aBuffer.mData[c] * v; c++; v += vd; + float f3 = aBuffer.mData[c] * v; c++; v += vd; + float f4 = aBuffer.mData[c] * v; c++; v += vd; + + f1 = (f1 <= -1.65f) ? -0.9862875f : (f1 >= 1.65f) ? 0.9862875f : (0.87f * f1 - 0.1f * f1 * f1 * f1); + f2 = (f2 <= -1.65f) ? -0.9862875f : (f2 >= 1.65f) ? 0.9862875f : (0.87f * f2 - 0.1f * f2 * f2 * f2); + f3 = (f3 <= -1.65f) ? -0.9862875f : (f3 >= 1.65f) ? 0.9862875f : (0.87f * f3 - 0.1f * f3 * f3 * f3); + f4 = (f4 <= -1.65f) ? -0.9862875f : (f4 >= 1.65f) ? 0.9862875f : (0.87f * f4 - 0.1f * f4 * f4 * f4); + + aDestBuffer.mData[d] = f1 * mPostClipScaler; d++; + aDestBuffer.mData[d] = f2 * mPostClipScaler; d++; + aDestBuffer.mData[d] = f3 * mPostClipScaler; d++; + aDestBuffer.mData[d] = f4 * mPostClipScaler; d++; + } + } + } + else + { + c = 0; + d = 0; + for (j = 0; j < mChannels; j++) + { + v = aVolume0; + for (i = 0; i < samplequads; i++) + { + float f1 = aBuffer.mData[c] * v; c++; v += vd; + float f2 = aBuffer.mData[c] * v; c++; v += vd; + float f3 = aBuffer.mData[c] * v; c++; v += vd; + float f4 = aBuffer.mData[c] * v; c++; v += vd; + + f1 = (f1 <= -1) ? -1 : (f1 >= 1) ? 1 : f1; + f2 = (f2 <= -1) ? -1 : (f2 >= 1) ? 1 : f2; + f3 = (f3 <= -1) ? -1 : (f3 >= 1) ? 1 : f3; + f4 = (f4 <= -1) ? -1 : (f4 >= 1) ? 1 : f4; + + aDestBuffer.mData[d] = f1 * mPostClipScaler; d++; + aDestBuffer.mData[d] = f2 * mPostClipScaler; d++; + aDestBuffer.mData[d] = f3 * mPostClipScaler; d++; + aDestBuffer.mData[d] = f4 * mPostClipScaler; d++; + } + } + } +} +#endif + +#define FIXPOINT_FRAC_BITS 20 +#define FIXPOINT_FRAC_MUL (1 << FIXPOINT_FRAC_BITS) +#define FIXPOINT_FRAC_MASK ((1 << FIXPOINT_FRAC_BITS) - 1) + + void resample(float *aSrc, + float *aSrc1, + float *aDst, + int aSrcOffset, + int aDstSampleCount, + float aSrcSamplerate, + float aDstSamplerate, + int aStepFixed) + { +#if 0 + +#elif defined(RESAMPLER_LINEAR) + int i; + int pos = aSrcOffset; + + for (i = 0; i < aDstSampleCount; i++, pos += aStepFixed) + { + int p = pos >> FIXPOINT_FRAC_BITS; + int f = pos & FIXPOINT_FRAC_MASK; +#ifdef _DEBUG + if (p >= SAMPLE_GRANULARITY || p < 0) + { + // This should never actually happen + p = SAMPLE_GRANULARITY - 1; + } +#endif + float s1 = aSrc1[SAMPLE_GRANULARITY - 1]; + float s2 = aSrc[p]; + if (p != 0) + { + s1 = aSrc[p-1]; + } + aDst[i] = s1 + (s2 - s1) * f * (1 / (float)FIXPOINT_FRAC_MUL); + } +#else // Point sample + int i; + int pos = aSrcOffset; + + for (i = 0; i < aDstSampleCount; i++, pos += aStepFixed) + { + int p = pos >> FIXPOINT_FRAC_BITS; + aDst[i] = aSrc[p]; + } +#endif + } + + void panAndExpand(AudioSourceInstance *aVoice, float *aBuffer, unsigned int aSamplesToRead, unsigned int aBufferSize, float *aScratch, unsigned int aChannels) + { + float pan[MAX_CHANNELS]; // current speaker volume + float pand[MAX_CHANNELS]; // destination speaker volume + float pani[MAX_CHANNELS]; // speaker volume increment per sample + unsigned int j, k; + for (k = 0; k < aChannels; k++) + { + pan[k] = aVoice->mCurrentChannelVolume[k]; + pand[k] = aVoice->mChannelVolume[k] * aVoice->mOverallVolume; + pani[k] = (pand[k] - pan[k]) / aSamplesToRead; // TODO: this is a bit inconsistent.. but it's a hack to begin with + } + + int ofs = 0; + switch (aChannels) + { + case 1: // Target is mono. Sum everything. (1->1, 2->1, 4->1, 6->1, 8->1) + for (j = 0, ofs = 0; j < aVoice->mChannels; j++, ofs += aBufferSize) + { + pan[0] = aVoice->mCurrentChannelVolume[0]; + for (k = 0; k < aSamplesToRead; k++) + { + pan[0] += pani[0]; + aBuffer[k] += aScratch[ofs + k] * pan[0]; + } + } + break; + case 2: + switch (aVoice->mChannels) + { + case 8: // 8->2, just sum lefties and righties, add a bit of center and sub? + for (j = 0; j < aSamplesToRead; j++) + { + pan[0] += pani[0]; + pan[1] += pani[1]; + float s1 = aScratch[j]; + float s2 = aScratch[aBufferSize + j]; + float s3 = aScratch[aBufferSize * 2 + j]; + float s4 = aScratch[aBufferSize * 3 + j]; + float s5 = aScratch[aBufferSize * 4 + j]; + float s6 = aScratch[aBufferSize * 5 + j]; + float s7 = aScratch[aBufferSize * 6 + j]; + float s8 = aScratch[aBufferSize * 7 + j]; + aBuffer[j + 0] += 0.2f * (s1 + s3 + s4 + s5 + s7) * pan[0]; + aBuffer[j + aBufferSize] += 0.2f * (s2 + s3 + s4 + s6 + s8) * pan[1]; + } + break; + case 6: // 6->2, just sum lefties and righties, add a bit of center and sub? + for (j = 0; j < aSamplesToRead; j++) + { + pan[0] += pani[0]; + pan[1] += pani[1]; + float s1 = aScratch[j]; + float s2 = aScratch[aBufferSize + j]; + float s3 = aScratch[aBufferSize * 2 + j]; + float s4 = aScratch[aBufferSize * 3 + j]; + float s5 = aScratch[aBufferSize * 4 + j]; + float s6 = aScratch[aBufferSize * 5 + j]; + aBuffer[j + 0] += 0.3f * (s1 + s3 + s4 + s5) * pan[0]; + aBuffer[j + aBufferSize] += 0.3f * (s2 + s3 + s4 + s6) * pan[1]; + } + break; + case 4: // 4->2, just sum lefties and righties + for (j = 0; j < aSamplesToRead; j++) + { + pan[0] += pani[0]; + pan[1] += pani[1]; + float s1 = aScratch[j]; + float s2 = aScratch[aBufferSize + j]; + float s3 = aScratch[aBufferSize * 2 + j]; + float s4 = aScratch[aBufferSize * 3 + j]; + aBuffer[j + 0] += 0.5f * (s1 + s3) * pan[0]; + aBuffer[j + aBufferSize] += 0.5f * (s2 + s4) * pan[1]; + } + break; + case 2: // 2->2 + for (j = 0; j < aSamplesToRead; j++) + { + pan[0] += pani[0]; + pan[1] += pani[1]; + float s1 = aScratch[j]; + float s2 = aScratch[aBufferSize + j]; + aBuffer[j + 0] += s1 * pan[0]; + aBuffer[j + aBufferSize] += s2 * pan[1]; + } + break; + case 1: // 1->2 + for (j = 0; j < aSamplesToRead; j++) + { + pan[0] += pani[0]; + pan[1] += pani[1]; + float s = aScratch[j]; + aBuffer[j + 0] += s * pan[0]; + aBuffer[j + aBufferSize] += s * pan[1]; + } + break; + } + break; + case 4: + switch (aVoice->mChannels) + { + case 8: // 8->4, add a bit of center, sub? + for (j = 0; j < aSamplesToRead; j++) + { + pan[0] += pani[0]; + pan[1] += pani[1]; + pan[2] += pani[2]; + pan[3] += pani[3]; + float s1 = aScratch[j]; + float s2 = aScratch[aBufferSize + j]; + float s3 = aScratch[aBufferSize * 2 + j]; + float s4 = aScratch[aBufferSize * 3 + j]; + float s5 = aScratch[aBufferSize * 4 + j]; + float s6 = aScratch[aBufferSize * 5 + j]; + float s7 = aScratch[aBufferSize * 6 + j]; + float s8 = aScratch[aBufferSize * 7 + j]; + float c = (s3 + s4) * 0.7f; + aBuffer[j + 0] += s1 * pan[0] + c; + aBuffer[j + aBufferSize] += s2 * pan[1] + c; + aBuffer[j + aBufferSize * 2] += 0.5f * (s5 + s7) * pan[2]; + aBuffer[j + aBufferSize * 3] += 0.5f * (s6 + s8) * pan[3]; + } + break; + case 6: // 6->4, add a bit of center, sub? + for (j = 0; j < aSamplesToRead; j++) + { + pan[0] += pani[0]; + pan[1] += pani[1]; + pan[2] += pani[2]; + pan[3] += pani[3]; + float s1 = aScratch[j]; + float s2 = aScratch[aBufferSize + j]; + float s3 = aScratch[aBufferSize * 2 + j]; + float s4 = aScratch[aBufferSize * 3 + j]; + float s5 = aScratch[aBufferSize * 4 + j]; + float s6 = aScratch[aBufferSize * 5 + j]; + float c = (s3 + s4) * 0.7f; + aBuffer[j + 0] += s1 * pan[0] + c; + aBuffer[j + aBufferSize] += s2 * pan[1] + c; + aBuffer[j + aBufferSize * 2] += s5 * pan[2]; + aBuffer[j + aBufferSize * 3] += s6 * pan[3]; + } + break; + case 4: // 4->4 + for (j = 0; j < aSamplesToRead; j++) + { + pan[0] += pani[0]; + pan[1] += pani[1]; + pan[2] += pani[2]; + pan[3] += pani[3]; + float s1 = aScratch[j]; + float s2 = aScratch[aBufferSize + j]; + float s3 = aScratch[aBufferSize * 2 + j]; + float s4 = aScratch[aBufferSize * 3 + j]; + aBuffer[j + 0] += s1 * pan[0]; + aBuffer[j + aBufferSize] += s2 * pan[1]; + aBuffer[j + aBufferSize * 2] += s3 * pan[2]; + aBuffer[j + aBufferSize * 3] += s4 * pan[3]; + } + break; + case 2: // 2->4 + for (j = 0; j < aSamplesToRead; j++) + { + pan[0] += pani[0]; + pan[1] += pani[1]; + pan[2] += pani[2]; + pan[3] += pani[3]; + float s1 = aScratch[j]; + float s2 = aScratch[aBufferSize + j]; + aBuffer[j + 0] += s1 * pan[0]; + aBuffer[j + aBufferSize] += s2 * pan[1]; + aBuffer[j + aBufferSize * 2] += s1 * pan[2]; + aBuffer[j + aBufferSize * 3] += s2 * pan[3]; + } + break; + case 1: // 1->4 + for (j = 0; j < aSamplesToRead; j++) + { + pan[0] += pani[0]; + pan[1] += pani[1]; + pan[2] += pani[2]; + pan[3] += pani[3]; + float s = aScratch[j]; + aBuffer[j + 0] += s * pan[0]; + aBuffer[j + aBufferSize] += s * pan[1]; + aBuffer[j + aBufferSize * 2] += s * pan[2]; + aBuffer[j + aBufferSize * 3] += s * pan[3]; + } + break; + } + break; + case 6: + switch (aVoice->mChannels) + { + case 8: // 8->6 + for (j = 0; j < aSamplesToRead; j++) + { + pan[0] += pani[0]; + pan[1] += pani[1]; + pan[2] += pani[2]; + pan[3] += pani[3]; + pan[4] += pani[4]; + pan[5] += pani[5]; + float s1 = aScratch[j]; + float s2 = aScratch[aBufferSize + j]; + float s3 = aScratch[aBufferSize * 2 + j]; + float s4 = aScratch[aBufferSize * 3 + j]; + float s5 = aScratch[aBufferSize * 4 + j]; + float s6 = aScratch[aBufferSize * 5 + j]; + float s7 = aScratch[aBufferSize * 6 + j]; + float s8 = aScratch[aBufferSize * 7 + j]; + aBuffer[j + 0] += s1 * pan[0]; + aBuffer[j + aBufferSize] += s2 * pan[1]; + aBuffer[j + aBufferSize * 2] += s3 * pan[2]; + aBuffer[j + aBufferSize * 3] += s4 * pan[3]; + aBuffer[j + aBufferSize * 4] += 0.5f * (s5 + s7) * pan[4]; + aBuffer[j + aBufferSize * 5] += 0.5f * (s6 + s8) * pan[5]; + } + break; + case 6: // 6->6 + for (j = 0; j < aSamplesToRead; j++) + { + pan[0] += pani[0]; + pan[1] += pani[1]; + pan[2] += pani[2]; + pan[3] += pani[3]; + pan[4] += pani[4]; + pan[5] += pani[5]; + float s1 = aScratch[j]; + float s2 = aScratch[aBufferSize + j]; + float s3 = aScratch[aBufferSize * 2 + j]; + float s4 = aScratch[aBufferSize * 3 + j]; + float s5 = aScratch[aBufferSize * 4 + j]; + float s6 = aScratch[aBufferSize * 5 + j]; + aBuffer[j + 0] += s1 * pan[0]; + aBuffer[j + aBufferSize] += s2 * pan[1]; + aBuffer[j + aBufferSize * 2] += s3 * pan[2]; + aBuffer[j + aBufferSize * 3] += s4 * pan[3]; + aBuffer[j + aBufferSize * 4] += s5 * pan[4]; + aBuffer[j + aBufferSize * 5] += s6 * pan[5]; + } + break; + case 4: // 4->6 + for (j = 0; j < aSamplesToRead; j++) + { + pan[0] += pani[0]; + pan[1] += pani[1]; + pan[2] += pani[2]; + pan[3] += pani[3]; + pan[4] += pani[4]; + pan[5] += pani[5]; + float s1 = aScratch[j]; + float s2 = aScratch[aBufferSize + j]; + float s3 = aScratch[aBufferSize * 2 + j]; + float s4 = aScratch[aBufferSize * 3 + j]; + aBuffer[j + 0] += s1 * pan[0]; + aBuffer[j + aBufferSize] += s2 * pan[1]; + aBuffer[j + aBufferSize * 2] += 0.5f * (s1 + s2) * pan[2]; + aBuffer[j + aBufferSize * 3] += 0.25f * (s1 + s2 + s3 + s4) * pan[3]; + aBuffer[j + aBufferSize * 4] += s3 * pan[4]; + aBuffer[j + aBufferSize * 5] += s4 * pan[5]; + } + break; + case 2: // 2->6 + for (j = 0; j < aSamplesToRead; j++) + { + pan[0] += pani[0]; + pan[1] += pani[1]; + pan[2] += pani[2]; + pan[3] += pani[3]; + pan[4] += pani[4]; + pan[5] += pani[5]; + float s1 = aScratch[j]; + float s2 = aScratch[aBufferSize + j]; + aBuffer[j + 0] += s1 * pan[0]; + aBuffer[j + aBufferSize] += s2 * pan[1]; + aBuffer[j + aBufferSize * 2] += 0.5f * (s1 + s2) * pan[2]; + aBuffer[j + aBufferSize * 3] += 0.5f * (s1 + s2) * pan[3]; + aBuffer[j + aBufferSize * 4] += s1 * pan[4]; + aBuffer[j + aBufferSize * 5] += s2 * pan[5]; + } + break; + case 1: // 1->6 + for (j = 0; j < aSamplesToRead; j++) + { + pan[0] += pani[0]; + pan[1] += pani[1]; + pan[2] += pani[2]; + pan[3] += pani[3]; + pan[4] += pani[4]; + pan[5] += pani[5]; + float s = aScratch[j]; + aBuffer[j + 0] += s * pan[0]; + aBuffer[j + aBufferSize] += s * pan[1]; + aBuffer[j + aBufferSize * 2] += s * pan[2]; + aBuffer[j + aBufferSize * 3] += s * pan[3]; + aBuffer[j + aBufferSize * 4] += s * pan[4]; + aBuffer[j + aBufferSize * 5] += s * pan[5]; + } + break; + } + break; + case 8: + switch (aVoice->mChannels) + { + case 8: // 8->8 + for (j = 0; j < aSamplesToRead; j++) + { + pan[0] += pani[0]; + pan[1] += pani[1]; + pan[2] += pani[2]; + pan[3] += pani[3]; + pan[4] += pani[4]; + pan[5] += pani[5]; + pan[6] += pani[6]; + pan[7] += pani[7]; + float s1 = aScratch[j]; + float s2 = aScratch[aBufferSize + j]; + float s3 = aScratch[aBufferSize * 2 + j]; + float s4 = aScratch[aBufferSize * 3 + j]; + float s5 = aScratch[aBufferSize * 4 + j]; + float s6 = aScratch[aBufferSize * 5 + j]; + float s7 = aScratch[aBufferSize * 6 + j]; + float s8 = aScratch[aBufferSize * 7 + j]; + aBuffer[j + 0] += s1 * pan[0]; + aBuffer[j + aBufferSize] += s2 * pan[1]; + aBuffer[j + aBufferSize * 2] += s3 * pan[2]; + aBuffer[j + aBufferSize * 3] += s4 * pan[3]; + aBuffer[j + aBufferSize * 4] += s5 * pan[4]; + aBuffer[j + aBufferSize * 5] += s6 * pan[5]; + aBuffer[j + aBufferSize * 6] += s7 * pan[6]; + aBuffer[j + aBufferSize * 7] += s8 * pan[7]; + } + break; + case 6: // 6->8 + for (j = 0; j < aSamplesToRead; j++) + { + pan[0] += pani[0]; + pan[1] += pani[1]; + pan[2] += pani[2]; + pan[3] += pani[3]; + pan[4] += pani[4]; + pan[5] += pani[5]; + pan[6] += pani[6]; + pan[7] += pani[7]; + float s1 = aScratch[j]; + float s2 = aScratch[aBufferSize + j]; + float s3 = aScratch[aBufferSize * 2 + j]; + float s4 = aScratch[aBufferSize * 3 + j]; + float s5 = aScratch[aBufferSize * 4 + j]; + float s6 = aScratch[aBufferSize * 5 + j]; + aBuffer[j + 0] += s1 * pan[0]; + aBuffer[j + aBufferSize] += s2 * pan[1]; + aBuffer[j + aBufferSize * 2] += s3 * pan[2]; + aBuffer[j + aBufferSize * 3] += s4 * pan[3]; + aBuffer[j + aBufferSize * 4] += 0.5f * (s5 + s1) * pan[4]; + aBuffer[j + aBufferSize * 5] += 0.5f * (s6 + s2) * pan[5]; + aBuffer[j + aBufferSize * 6] += s5 * pan[6]; + aBuffer[j + aBufferSize * 7] += s6 * pan[7]; + } + break; + case 4: // 4->8 + for (j = 0; j < aSamplesToRead; j++) + { + pan[0] += pani[0]; + pan[1] += pani[1]; + pan[2] += pani[2]; + pan[3] += pani[3]; + pan[4] += pani[4]; + pan[5] += pani[5]; + pan[6] += pani[6]; + pan[7] += pani[7]; + float s1 = aScratch[j]; + float s2 = aScratch[aBufferSize + j]; + float s3 = aScratch[aBufferSize * 2 + j]; + float s4 = aScratch[aBufferSize * 3 + j]; + aBuffer[j + 0] += s1 * pan[0]; + aBuffer[j + aBufferSize] += s2 * pan[1]; + aBuffer[j + aBufferSize * 2] += 0.5f * (s1 + s2) * pan[2]; + aBuffer[j + aBufferSize * 3] += 0.25f * (s1 + s2 + s3 + s4) * pan[3]; + aBuffer[j + aBufferSize * 4] += 0.5f * (s1 + s3) * pan[4]; + aBuffer[j + aBufferSize * 5] += 0.5f * (s2 + s4) * pan[5]; + aBuffer[j + aBufferSize * 6] += s3 * pan[4]; + aBuffer[j + aBufferSize * 7] += s4 * pan[5]; + } + break; + case 2: // 2->8 + for (j = 0; j < aSamplesToRead; j++) + { + pan[0] += pani[0]; + pan[1] += pani[1]; + pan[2] += pani[2]; + pan[3] += pani[3]; + pan[4] += pani[4]; + pan[5] += pani[5]; + pan[6] += pani[6]; + pan[7] += pani[7]; + float s1 = aScratch[j]; + float s2 = aScratch[aBufferSize + j]; + aBuffer[j + 0] += s1 * pan[0]; + aBuffer[j + aBufferSize] += s2 * pan[1]; + aBuffer[j + aBufferSize * 2] += 0.5f * (s1 + s2) * pan[2]; + aBuffer[j + aBufferSize * 3] += 0.5f * (s1 + s2) * pan[3]; + aBuffer[j + aBufferSize * 4] += s1 * pan[4]; + aBuffer[j + aBufferSize * 5] += s2 * pan[5]; + aBuffer[j + aBufferSize * 6] += s1 * pan[6]; + aBuffer[j + aBufferSize * 7] += s2 * pan[7]; + } + break; + case 1: // 1->8 + for (j = 0; j < aSamplesToRead; j++) + { + pan[0] += pani[0]; + pan[1] += pani[1]; + pan[2] += pani[2]; + pan[3] += pani[3]; + pan[4] += pani[4]; + pan[5] += pani[5]; + pan[6] += pani[6]; + pan[7] += pani[7]; + float s = aScratch[j]; + aBuffer[j + 0] += s * pan[0]; + aBuffer[j + aBufferSize] += s * pan[1]; + aBuffer[j + aBufferSize * 2] += s * pan[2]; + aBuffer[j + aBufferSize * 3] += s * pan[3]; + aBuffer[j + aBufferSize * 4] += s * pan[4]; + aBuffer[j + aBufferSize * 5] += s * pan[5]; + aBuffer[j + aBufferSize * 6] += s * pan[6]; + aBuffer[j + aBufferSize * 7] += s * pan[7]; + } + break; + } + break; + } + + for (k = 0; k < aChannels; k++) + aVoice->mCurrentChannelVolume[k] = pand[k]; + } + + void Soloud::mixBus(float *aBuffer, unsigned int aSamplesToRead, unsigned int aBufferSize, float *aScratch, unsigned int aBus, float aSamplerate, unsigned int aChannels) + { + unsigned int i, j; + // Clear accumulation buffer + for (i = 0; i < aSamplesToRead; i++) + { + for (j = 0; j < aChannels; j++) + { + aBuffer[i + j * aBufferSize] = 0; + } + } + + // Accumulate sound sources + for (i = 0; i < mActiveVoiceCount; i++) + { + AudioSourceInstance *voice = mVoice[mActiveVoice[i]]; + if (voice && + voice->mBusHandle == aBus && + !(voice->mFlags & AudioSourceInstance::PAUSED) && + !(voice->mFlags & AudioSourceInstance::INAUDIBLE)) + { + unsigned int j; + float step = voice->mSamplerate / aSamplerate; + // avoid step overflow + if (step > (1 << (32 - FIXPOINT_FRAC_BITS))) + step = 0; + unsigned int step_fixed = (int)floor(step * FIXPOINT_FRAC_MUL); + unsigned int outofs = 0; + + if (voice->mDelaySamples) + { + if (voice->mDelaySamples > aSamplesToRead) + { + outofs = aSamplesToRead; + voice->mDelaySamples -= aSamplesToRead; + } + else + { + outofs = voice->mDelaySamples; + voice->mDelaySamples = 0; + } + + // Clear scratch where we're skipping + for (j = 0; j < voice->mChannels; j++) + { + memset(aScratch + j * aBufferSize, 0, sizeof(float) * outofs); + } + } + + while (step_fixed != 0 && outofs < aSamplesToRead) + { + if (voice->mLeftoverSamples == 0) + { + // Swap resample buffers (ping-pong) + AlignedFloatBuffer * t = voice->mResampleData[0]; + voice->mResampleData[0] = voice->mResampleData[1]; + voice->mResampleData[1] = t; + + // Get a block of source data + + int readcount = 0; + if (!voice->hasEnded() || voice->mFlags & AudioSourceInstance::LOOPING) + { + readcount = voice->getAudio(voice->mResampleData[0]->mData, SAMPLE_GRANULARITY, SAMPLE_GRANULARITY); + if (readcount < SAMPLE_GRANULARITY) + { + if (voice->mFlags & AudioSourceInstance::LOOPING) + { + while (readcount < SAMPLE_GRANULARITY && voice->seek(voice->mLoopPoint, mScratch.mData, mScratchSize) == SO_NO_ERROR) + { + voice->mLoopCount++; + int inc = voice->getAudio(voice->mResampleData[0]->mData + readcount, SAMPLE_GRANULARITY - readcount, SAMPLE_GRANULARITY); + readcount += inc; + if (inc == 0) break; + } + } + } + } + + // Clear remaining of the resample data if the full scratch wasn't used + if (readcount < SAMPLE_GRANULARITY) + { + unsigned int i; + for (i = 0; i < voice->mChannels; i++) + memset(voice->mResampleData[0]->mData + readcount + SAMPLE_GRANULARITY * i, 0, sizeof(float) * (SAMPLE_GRANULARITY - readcount)); + } + + // If we go past zero, crop to zero (a bit of a kludge) + if (voice->mSrcOffset < SAMPLE_GRANULARITY * FIXPOINT_FRAC_MUL) + { + voice->mSrcOffset = 0; + } + else + { + // We have new block of data, move pointer backwards + voice->mSrcOffset -= SAMPLE_GRANULARITY * FIXPOINT_FRAC_MUL; + } + + + // Run the per-stream filters to get our source data + + for (j = 0; j < FILTERS_PER_STREAM; j++) + { + if (voice->mFilter[j]) + { + voice->mFilter[j]->filter( + voice->mResampleData[0]->mData, + SAMPLE_GRANULARITY, + voice->mChannels, + voice->mSamplerate, + mStreamTime); + } + } + } + else + { + voice->mLeftoverSamples = 0; + } + + // Figure out how many samples we can generate from this source data. + // The value may be zero. + + unsigned int writesamples = 0; + + if (voice->mSrcOffset < SAMPLE_GRANULARITY * FIXPOINT_FRAC_MUL) + { + writesamples = ((SAMPLE_GRANULARITY * FIXPOINT_FRAC_MUL) - voice->mSrcOffset) / step_fixed + 1; + + // avoid reading past the current buffer.. + if (((writesamples * step_fixed + voice->mSrcOffset) >> FIXPOINT_FRAC_BITS) >= SAMPLE_GRANULARITY) + writesamples--; + } + + + // If this is too much for our output buffer, don't write that many: + if (writesamples + outofs > aSamplesToRead) + { + voice->mLeftoverSamples = (writesamples + outofs) - aSamplesToRead; + writesamples = aSamplesToRead - outofs; + } + + // Call resampler to generate the samples, once per channel + if (writesamples) + { + for (j = 0; j < voice->mChannels; j++) + { + resample(voice->mResampleData[0]->mData + SAMPLE_GRANULARITY * j, + voice->mResampleData[1]->mData + SAMPLE_GRANULARITY * j, + aScratch + aBufferSize * j + outofs, + voice->mSrcOffset, + writesamples, + voice->mSamplerate, + aSamplerate, + step_fixed); + } + } + + // Keep track of how many samples we've written so far + outofs += writesamples; + + // Move source pointer onwards (writesamples may be zero) + voice->mSrcOffset += writesamples * step_fixed; + } + + // Handle panning and channel expansion (and/or shrinking) + panAndExpand(voice, aBuffer, aSamplesToRead, aBufferSize, aScratch, aChannels); + + // clear voice if the sound is over + if (!(voice->mFlags & AudioSourceInstance::LOOPING) && voice->hasEnded()) + { + stopVoice(mActiveVoice[i]); + } + } + else + if (voice && + voice->mBusHandle == aBus && + !(voice->mFlags & AudioSourceInstance::PAUSED) && + (voice->mFlags & AudioSourceInstance::INAUDIBLE) && + (voice->mFlags & AudioSourceInstance::INAUDIBLE_TICK)) + { + // Inaudible but needs ticking. Do minimal work (keep counters up to date and ask audiosource for data) + float step = voice->mSamplerate / aSamplerate; + int step_fixed = (int)floor(step * FIXPOINT_FRAC_MUL); + unsigned int outofs = 0; + + if (voice->mDelaySamples) + { + if (voice->mDelaySamples > aSamplesToRead) + { + outofs = aSamplesToRead; + voice->mDelaySamples -= aSamplesToRead; + } + else + { + outofs = voice->mDelaySamples; + voice->mDelaySamples = 0; + } + } + + while (step_fixed != 0 && outofs < aSamplesToRead) + { + if (voice->mLeftoverSamples == 0) + { + // Swap resample buffers (ping-pong) + AlignedFloatBuffer * t = voice->mResampleData[0]; + voice->mResampleData[0] = voice->mResampleData[1]; + voice->mResampleData[1] = t; + + // Get a block of source data + + int readcount = 0; + if (!voice->hasEnded() || voice->mFlags & AudioSourceInstance::LOOPING) + { + readcount = voice->getAudio(voice->mResampleData[0]->mData, SAMPLE_GRANULARITY, SAMPLE_GRANULARITY); + if (readcount < SAMPLE_GRANULARITY) + { + if (voice->mFlags & AudioSourceInstance::LOOPING) + { + while (readcount < SAMPLE_GRANULARITY && voice->seek(voice->mLoopPoint, mScratch.mData, mScratchSize) == SO_NO_ERROR) + { + voice->mLoopCount++; + readcount += voice->getAudio(voice->mResampleData[0]->mData + readcount, SAMPLE_GRANULARITY - readcount, SAMPLE_GRANULARITY); + } + } + } + } + + // If we go past zero, crop to zero (a bit of a kludge) + if (voice->mSrcOffset < SAMPLE_GRANULARITY * FIXPOINT_FRAC_MUL) + { + voice->mSrcOffset = 0; + } + else + { + // We have new block of data, move pointer backwards + voice->mSrcOffset -= SAMPLE_GRANULARITY * FIXPOINT_FRAC_MUL; + } + + // Skip filters + } + else + { + voice->mLeftoverSamples = 0; + } + + // Figure out how many samples we can generate from this source data. + // The value may be zero. + + unsigned int writesamples = 0; + + if (voice->mSrcOffset < SAMPLE_GRANULARITY * FIXPOINT_FRAC_MUL) + { + writesamples = ((SAMPLE_GRANULARITY * FIXPOINT_FRAC_MUL) - voice->mSrcOffset) / step_fixed + 1; + + // avoid reading past the current buffer.. + if (((writesamples * step_fixed + voice->mSrcOffset) >> FIXPOINT_FRAC_BITS) >= SAMPLE_GRANULARITY) + writesamples--; + } + + + // If this is too much for our output buffer, don't write that many: + if (writesamples + outofs > aSamplesToRead) + { + voice->mLeftoverSamples = (writesamples + outofs) - aSamplesToRead; + writesamples = aSamplesToRead - outofs; + } + + // Skip resampler + + // Keep track of how many samples we've written so far + outofs += writesamples; + + // Move source pointer onwards (writesamples may be zero) + voice->mSrcOffset += writesamples * step_fixed; + } + + // clear voice if the sound is over + if (!(voice->mFlags & AudioSourceInstance::LOOPING) && voice->hasEnded()) + { + stopVoice(mActiveVoice[i]); + } + } + } + } + + void Soloud::mapResampleBuffers() + { + SOLOUD_ASSERT(mMaxActiveVoices < 256); + char live[256]; + memset(live, 0, mMaxActiveVoices); + unsigned int i, j; + for (i = 0; i < mMaxActiveVoices; i++) + { + for (j = 0; j < mMaxActiveVoices; j++) + { + if (mResampleDataOwner[i] && mResampleDataOwner[i] == mVoice[mActiveVoice[j]]) + { + live[i] |= 1; // Live channel + live[j] |= 2; // Live voice + } + } + } + + for (i = 0; i < mMaxActiveVoices; i++) + { + if (!(live[i] & 1) && mResampleDataOwner[i]) // For all dead channels with owners.. + { + mResampleDataOwner[i]->mResampleData[0] = 0; + mResampleDataOwner[i]->mResampleData[1] = 0; + mResampleDataOwner[i] = 0; + } + } + + int latestfree = 0; + for (i = 0; i < mActiveVoiceCount; i++) + { + if (!(live[i] & 2) && mVoice[mActiveVoice[i]]) // For all live voices with no channel.. + { + int found = -1; + for (j = latestfree; found == -1 && j < mMaxActiveVoices; j++) + { + if (mResampleDataOwner[j] == 0) + { + found = j; + } + } + SOLOUD_ASSERT(found != -1); + mResampleDataOwner[found] = mVoice[mActiveVoice[i]]; + mResampleDataOwner[found]->mResampleData[0] = &mResampleData[found * 2 + 0]; + mResampleDataOwner[found]->mResampleData[1] = &mResampleData[found * 2 + 1]; + mResampleDataOwner[found]->mResampleData[0]->clear(); + mResampleDataOwner[found]->mResampleData[1]->clear(); + latestfree = found + 1; + } + } + } + + void Soloud::calcActiveVoices() + { + // TODO: consider whether we need to re-evaluate the active voices all the time. + // It is a must when new voices are started, but otherwise we could get away + // with postponing it sometimes.. + + mActiveVoiceDirty = false; + + // Populate + unsigned int i, candidates, mustlive; + candidates = 0; + mustlive = 0; + for (i = 0; i < mHighestVoice; i++) + { + if (mVoice[i] && (!(mVoice[i]->mFlags & (AudioSourceInstance::INAUDIBLE | AudioSourceInstance::PAUSED)) || (mVoice[i]->mFlags & AudioSourceInstance::INAUDIBLE_TICK))) + { + mActiveVoice[candidates] = i; + candidates++; + if (mVoice[i]->mFlags & AudioSourceInstance::INAUDIBLE_TICK) + { + mActiveVoice[candidates - 1] = mActiveVoice[mustlive]; + mActiveVoice[mustlive] = i; + mustlive++; + } + } + } + + // Check for early out + if (candidates <= mMaxActiveVoices) + { + // everything is audible, early out + mActiveVoiceCount = candidates; + mapResampleBuffers(); + return; + } + + mActiveVoiceCount = mMaxActiveVoices; + + if (mustlive >= mMaxActiveVoices) + { + // Oopsie. Well, nothing to sort, since the "must live" voices already + // ate all our active voice slots. + // This is a potentially an error situation, but we have no way to report + // error from here. And asserting could be bad, too. + return; + } + + // If we get this far, there's nothing to it: we'll have to sort the voices to find the most audible. + + // Iterative partial quicksort: + int left = 0, stack[24], pos = 0, right; + int len = candidates - mustlive; + unsigned int *data = mActiveVoice + mustlive; + int k = mActiveVoiceCount; + for (;;) + { + for (; left + 1 < len; len++) + { + if (pos == 24) len = stack[pos = 0]; + int pivot = data[left]; + float pivotvol = mVoice[pivot]->mOverallVolume; + stack[pos++] = len; + for (right = left - 1;;) + { + do + { + right++; + } + while (mVoice[data[right]]->mOverallVolume > pivotvol); + do + { + len--; + } + while (pivotvol > mVoice[data[len]]->mOverallVolume); + if (right >= len) break; + int temp = data[right]; + data[right] = data[len]; + data[len] = temp; + } + } + if (pos == 0) break; + if (left >= k) break; + left = len; + len = stack[--pos]; + } + // TODO: should the rest of the voices be flagged INAUDIBLE? + mapResampleBuffers(); + } + + void Soloud::mix_internal(unsigned int aSamples) + { +#ifdef FLOATING_POINT_DEBUG + // This needs to be done in the audio thread as well.. + static int done = 0; + if (!done) + { + unsigned int u; + u = _controlfp(0, 0); + u = u & ~(_EM_INVALID | /*_EM_DENORMAL |*/ _EM_ZERODIVIDE | _EM_OVERFLOW /*| _EM_UNDERFLOW | _EM_INEXACT*/); + _controlfp(u, _MCW_EM); + done = 1; + } +#endif + + float buffertime = aSamples / (float)mSamplerate; + float globalVolume[2]; + mStreamTime += buffertime; + mLastClockedTime = 0; + + globalVolume[0] = mGlobalVolume; + if (mGlobalVolumeFader.mActive) + { + mGlobalVolume = mGlobalVolumeFader.get(mStreamTime); + } + globalVolume[1] = mGlobalVolume; + + lockAudioMutex(); + + // Process faders. May change scratch size. + int i; + for (i = 0; i < (signed)mHighestVoice; i++) + { + if (mVoice[i] && !(mVoice[i]->mFlags & AudioSourceInstance::PAUSED)) + { + float volume[2]; + + mVoice[i]->mActiveFader = 0; + + if (mGlobalVolumeFader.mActive > 0) + { + mVoice[i]->mActiveFader = 1; + } + + mVoice[i]->mStreamTime += buffertime; + mVoice[i]->mStreamPosition += buffertime; + + // TODO: this is actually unstable, because mStreamTime depends on the relative + // play speed. + if (mVoice[i]->mRelativePlaySpeedFader.mActive > 0) + { + float speed = mVoice[i]->mRelativePlaySpeedFader.get(mVoice[i]->mStreamTime); + setVoiceRelativePlaySpeed(i, speed); + } + + volume[0] = mVoice[i]->mOverallVolume; + if (mVoice[i]->mVolumeFader.mActive > 0) + { + mVoice[i]->mSetVolume = mVoice[i]->mVolumeFader.get(mVoice[i]->mStreamTime); + mVoice[i]->mActiveFader = 1; + updateVoiceVolume(i); + mActiveVoiceDirty = true; + } + volume[1] = mVoice[i]->mOverallVolume; + + if (mVoice[i]->mPanFader.mActive > 0) + { + float pan = mVoice[i]->mPanFader.get(mVoice[i]->mStreamTime); + setVoicePan(i, pan); + mVoice[i]->mActiveFader = 1; + } + + if (mVoice[i]->mPauseScheduler.mActive) + { + mVoice[i]->mPauseScheduler.get(mVoice[i]->mStreamTime); + if (mVoice[i]->mPauseScheduler.mActive == -1) + { + mVoice[i]->mPauseScheduler.mActive = 0; + setVoicePause(i, 1); + } + } + + if (mVoice[i]->mStopScheduler.mActive) + { + mVoice[i]->mStopScheduler.get(mVoice[i]->mStreamTime); + if (mVoice[i]->mStopScheduler.mActive == -1) + { + mVoice[i]->mStopScheduler.mActive = 0; + stopVoice(i); + } + } + } + } + + if (mActiveVoiceDirty) + calcActiveVoices(); + + // Resize scratch if needed. + if (mScratchSize < mScratchNeeded) + { + mScratchSize = mScratchNeeded; + mScratch.init(mScratchSize * MAX_CHANNELS); + } + + mixBus(mOutputScratch.mData, aSamples, aSamples, mScratch.mData, 0, (float)mSamplerate, mChannels); + + for (i = 0; i < FILTERS_PER_STREAM; i++) + { + if (mFilterInstance[i]) + { + mFilterInstance[i]->filter(mOutputScratch.mData, aSamples, mChannels, (float)mSamplerate, mStreamTime); + } + } + + unlockAudioMutex(); + + clip(mOutputScratch, mScratch, aSamples, globalVolume[0], globalVolume[1]); + + if (mFlags & ENABLE_VISUALIZATION) + { + for (i = 0; i < MAX_CHANNELS; i++) + { + mVisualizationChannelVolume[i] = 0; + } + if (aSamples > 255) + { + for (i = 0; i < 256; i++) + { + int j; + mVisualizationWaveData[i] = 0; + for (j = 0; j < (signed)mChannels; j++) + { + float sample = mScratch.mData[i + j * aSamples]; + float absvol = (float)fabs(sample); + if (mVisualizationChannelVolume[j] < absvol) + mVisualizationChannelVolume[j] = absvol; + mVisualizationWaveData[i] += sample; + } + } + } + else + { + // Very unlikely failsafe branch + for (i = 0; i < 256; i++) + { + int j; + mVisualizationWaveData[i] = 0; + for (j = 0; j < (signed)mChannels; j++) + { + float sample = mScratch.mData[(i % aSamples) + j * aSamples]; + float absvol = (float)fabs(sample); + if (mVisualizationChannelVolume[j] < absvol) + mVisualizationChannelVolume[j] = absvol; + mVisualizationWaveData[i] += sample; + } + } + } + } + } + + void Soloud::mix(float *aBuffer, unsigned int aSamples) + { + mix_internal(aSamples); + interlace_samples_float(mScratch.mData, aBuffer, aSamples, mChannels); + } + + void Soloud::mixSigned16(short *aBuffer, unsigned int aSamples) + { + mix_internal(aSamples); + interlace_samples_s16(mScratch.mData, aBuffer, aSamples, mChannels); + } + + void deinterlace_samples_float(const float *aSourceBuffer, float *aDestBuffer, unsigned int aSamples, unsigned int aChannels) + { + // 121212 -> 111222 + unsigned int i, j, c; + c = 0; + for (j = 0; j < aChannels; j++) + { + for (i = j; i < aSamples; i += aChannels) + { + aDestBuffer[c] = aSourceBuffer[i + j]; + c++; + } + } + } + + void interlace_samples_float(const float *aSourceBuffer, float *aDestBuffer, unsigned int aSamples, unsigned int aChannels) + { + // 111222 -> 121212 + unsigned int i, j, c; + c = 0; + for (j = 0; j < aChannels; j++) + { + for (i = j; i < aSamples * aChannels; i += aChannels) + { + aDestBuffer[i] = aSourceBuffer[c]; + c++; + } + } + } + + void interlace_samples_s16(const float *aSourceBuffer, short *aDestBuffer, unsigned int aSamples, unsigned int aChannels) + { + // 111222 -> 121212 + unsigned int i, j, c; + c = 0; + for (j = 0; j < aChannels; j++) + { + for (i = j; i < aSamples * aChannels; i += aChannels) + { + aDestBuffer[i] = (short)(aSourceBuffer[c] * 0x7fff); + c++; + } + } + } + + void Soloud::lockAudioMutex() + { + if (mAudioThreadMutex) + { + Thread::lockMutex(mAudioThreadMutex); + } + SOLOUD_ASSERT(!mInsideAudioThreadMutex); + mInsideAudioThreadMutex = true; + } + + void Soloud::unlockAudioMutex() + { + SOLOUD_ASSERT(mInsideAudioThreadMutex); + mInsideAudioThreadMutex = false; + if (mAudioThreadMutex) + { + Thread::unlockMutex(mAudioThreadMutex); + } + } + +}; diff --git a/src/soloud/src/core/soloud_audiosource.cpp b/src/soloud/src/core/soloud_audiosource.cpp new file mode 100644 index 0000000..1e89260 --- /dev/null +++ b/src/soloud/src/core/soloud_audiosource.cpp @@ -0,0 +1,330 @@ +/* +SoLoud audio engine +Copyright (c) 2013-2014 Jari Komppa + +This software is provided 'as-is', without any express or implied +warranty. In no event will the authors be held liable for any damages +arising from the use of this software. + +Permission is granted to anyone to use this software for any purpose, +including commercial applications, and to alter it and redistribute it +freely, subject to the following restrictions: + + 1. The origin of this software must not be misrepresented; you must not + claim that you wrote the original software. If you use this software + in a product, an acknowledgment in the product documentation would be + appreciated but is not required. + + 2. Altered source versions must be plainly marked as such, and must not be + misrepresented as being the original software. + + 3. This notice may not be removed or altered from any source + distribution. +*/ + +#include "soloud.h" + +namespace SoLoud +{ + + AudioSourceInstance3dData::AudioSourceInstance3dData() + { + m3dAttenuationModel = 0; + m3dAttenuationRolloff = 1; + m3dDopplerFactor = 1.0; + m3dMaxDistance = 1000000.0f; + m3dMinDistance = 0.0f; + m3dPosition[0] = 0; + m3dPosition[1] = 0; + m3dPosition[2] = 0; + m3dVelocity[0] = 0; + m3dVelocity[1] = 0; + m3dVelocity[2] = 0; + mCollider = 0; + mColliderData = 0; + mAttenuator = 0; + } + + void AudioSourceInstance3dData::init(AudioSource &aSource) + { + m3dAttenuationModel = aSource.m3dAttenuationModel; + m3dAttenuationRolloff = aSource.m3dAttenuationRolloff; + m3dDopplerFactor = aSource.m3dDopplerFactor; + m3dMaxDistance = aSource.m3dMaxDistance; + m3dMinDistance = aSource.m3dMinDistance; + mCollider = aSource.mCollider; + mColliderData = aSource.mColliderData; + mAttenuator = aSource.mAttenuator; + m3dVolume = 1.0f; + mDopplerValue = 1.0f; + } + + AudioSourceInstance::AudioSourceInstance() + { + mPlayIndex = 0; + mFlags = 0; + mPan = 0; + // Default all volumes to 1.0 so sound behind N mix busses isn't super quiet. + int i; + for (i = 0; i < MAX_CHANNELS; i++) + mChannelVolume[i] = 1.0f; + mSetVolume = 1.0f; + mBaseSamplerate = 44100.0f; + mSamplerate = 44100.0f; + mSetRelativePlaySpeed = 1.0f; + mStreamTime = 0.0f; + mStreamPosition = 0.0f; + mAudioSourceID = 0; + mActiveFader = 0; + mChannels = 1; + mBusHandle = ~0u; + mLoopCount = 0; + mLoopPoint = 0; + for (i = 0; i < FILTERS_PER_STREAM; i++) + { + mFilter[i] = NULL; + } + for (i = 0; i < MAX_CHANNELS; i++) + { + mCurrentChannelVolume[i] = 0; + } + // behind pointers because we swap between the two buffers + mResampleData[0] = 0; + mResampleData[1] = 0; + mSrcOffset = 0; + mLeftoverSamples = 0; + mDelaySamples = 0; + + } + + AudioSourceInstance::~AudioSourceInstance() + { + int i; + for (i = 0; i < FILTERS_PER_STREAM; i++) + { + delete mFilter[i]; + } + } + + void AudioSourceInstance::init(AudioSource &aSource, int aPlayIndex) + { + mPlayIndex = aPlayIndex; + mBaseSamplerate = aSource.mBaseSamplerate; + mSamplerate = mBaseSamplerate; + mChannels = aSource.mChannels; + mStreamTime = 0.0f; + mStreamPosition = 0.0f; + mLoopPoint = aSource.mLoopPoint; + + if (aSource.mFlags & AudioSource::SHOULD_LOOP) + { + mFlags |= AudioSourceInstance::LOOPING; + } + if (aSource.mFlags & AudioSource::PROCESS_3D) + { + mFlags |= AudioSourceInstance::PROCESS_3D; + } + if (aSource.mFlags & AudioSource::LISTENER_RELATIVE) + { + mFlags |= AudioSourceInstance::LISTENER_RELATIVE; + } + if (aSource.mFlags & AudioSource::INAUDIBLE_KILL) + { + mFlags |= AudioSourceInstance::INAUDIBLE_KILL; + } + if (aSource.mFlags & AudioSource::INAUDIBLE_TICK) + { + mFlags |= AudioSourceInstance::INAUDIBLE_TICK; + } + } + + result AudioSourceInstance::rewind() + { + return NOT_IMPLEMENTED; + } + + result AudioSourceInstance::seek(double aSeconds, float *mScratch, unsigned int mScratchSize) + { + double offset = aSeconds - mStreamPosition; + if (offset <= 0) + { + if (rewind() != SO_NO_ERROR) + { + // can't do generic seek backwards unless we can rewind. + return NOT_IMPLEMENTED; + } + offset = aSeconds; + } + int samples_to_discard = (int)floor(mSamplerate * offset); + + while (samples_to_discard) + { + int samples = mScratchSize / mChannels; + if (samples > samples_to_discard) + samples = samples_to_discard; + getAudio(mScratch, samples, samples); + samples_to_discard -= samples; + } + mStreamPosition = offset; + return SO_NO_ERROR; + } + + + AudioSource::AudioSource() + { + int i; + for (i = 0; i < FILTERS_PER_STREAM; i++) + { + mFilter[i] = 0; + } + mFlags = 0; + mBaseSamplerate = 44100; + mAudioSourceID = 0; + mSoloud = 0; + mChannels = 1; + m3dMinDistance = 1; + m3dMaxDistance = 1000000.0f; + m3dAttenuationRolloff = 1.0f; + m3dAttenuationModel = NO_ATTENUATION; + m3dDopplerFactor = 1.0f; + mCollider = 0; + mAttenuator = 0; + mColliderData = 0; + mVolume = 1; + mLoopPoint = 0; + } + + AudioSource::~AudioSource() + { + stop(); + } + + void AudioSource::setVolume(float aVolume) + { + mVolume = aVolume; + } + + void AudioSource::setLoopPoint(time aLoopPoint) + { + mLoopPoint = aLoopPoint; + } + + time AudioSource::getLoopPoint() + { + return mLoopPoint; + } + + void AudioSource::setLooping(bool aLoop) + { + if (aLoop) + { + mFlags |= SHOULD_LOOP; + } + else + { + mFlags &= ~SHOULD_LOOP; + } + } + + void AudioSource::setSingleInstance(bool aSingleInstance) + { + if (aSingleInstance) + { + mFlags |= SINGLE_INSTANCE; + } + else + { + mFlags &= ~SINGLE_INSTANCE; + } + } + + void AudioSource::setFilter(unsigned int aFilterId, Filter *aFilter) + { + if (aFilterId >= FILTERS_PER_STREAM) + return; + mFilter[aFilterId] = aFilter; + } + + void AudioSource::stop() + { + if (mSoloud) + { + mSoloud->stopAudioSource(*this); + } + } + + void AudioSource::set3dMinMaxDistance(float aMinDistance, float aMaxDistance) + { + m3dMinDistance = aMinDistance; + m3dMaxDistance = aMaxDistance; + } + + void AudioSource::set3dAttenuation(unsigned int aAttenuationModel, float aAttenuationRolloffFactor) + { + m3dAttenuationModel = aAttenuationModel; + m3dAttenuationRolloff = aAttenuationRolloffFactor; + } + + void AudioSource::set3dDopplerFactor(float aDopplerFactor) + { + m3dDopplerFactor = aDopplerFactor; + } + + void AudioSource::set3dListenerRelative(bool aListenerRelative) + { + if (aListenerRelative) + { + mFlags |= LISTENER_RELATIVE; + } + else + { + mFlags &= ~LISTENER_RELATIVE; + } + } + + + void AudioSource::set3dDistanceDelay(bool aDistanceDelay) + { + if (aDistanceDelay) + { + mFlags |= DISTANCE_DELAY; + } + else + { + mFlags &= ~DISTANCE_DELAY; + } + } + + void AudioSource::set3dCollider(AudioCollider *aCollider, int aUserData) + { + mCollider = aCollider; + mColliderData = aUserData; + } + + void AudioSource::set3dAttenuator(AudioAttenuator *aAttenuator) + { + mAttenuator = aAttenuator; + } + + void AudioSource::setInaudibleBehavior(bool aMustTick, bool aKill) + { + mFlags &= ~(AudioSource::INAUDIBLE_KILL | AudioSource::INAUDIBLE_TICK); + if (aMustTick) + { + mFlags |= AudioSource::INAUDIBLE_TICK; + } + if (aKill) + { + mFlags |= AudioSource::INAUDIBLE_KILL; + } + } + + + float AudioSourceInstance::getInfo(unsigned int aInfoKey) + { + return 0; + } + + +}; + diff --git a/src/soloud/src/core/soloud_bus.cpp b/src/soloud/src/core/soloud_bus.cpp new file mode 100644 index 0000000..f1793a2 --- /dev/null +++ b/src/soloud/src/core/soloud_bus.cpp @@ -0,0 +1,318 @@ +/* +SoLoud audio engine +Copyright (c) 2013-2014 Jari Komppa + +This software is provided 'as-is', without any express or implied +warranty. In no event will the authors be held liable for any damages +arising from the use of this software. + +Permission is granted to anyone to use this software for any purpose, +including commercial applications, and to alter it and redistribute it +freely, subject to the following restrictions: + + 1. The origin of this software must not be misrepresented; you must not + claim that you wrote the original software. If you use this software + in a product, an acknowledgment in the product documentation would be + appreciated but is not required. + + 2. Altered source versions must be plainly marked as such, and must not be + misrepresented as being the original software. + + 3. This notice may not be removed or altered from any source + distribution. +*/ + +#include "soloud.h" +#include "soloud_fft.h" + +namespace SoLoud +{ + BusInstance::BusInstance(Bus *aParent) + { + mParent = aParent; + mScratchSize = 0; + mFlags |= PROTECTED | INAUDIBLE_TICK; + } + + unsigned int BusInstance::getAudio(float *aBuffer, unsigned int aSamplesToRead, unsigned int aBufferSize) + { + int handle = mParent->mChannelHandle; + if (handle == 0) + { + // Avoid reuse of scratch data if this bus hasn't played anything yet + unsigned int i; + for (i = 0; i < aBufferSize * mChannels; i++) + aBuffer[i] = 0; + return aSamplesToRead; + } + + Soloud *s = mParent->mSoloud; + if (s->mScratchNeeded != mScratchSize) + { + mScratchSize = s->mScratchNeeded; + mScratch.init(mScratchSize * MAX_CHANNELS); + } + + s->mixBus(aBuffer, aSamplesToRead, aBufferSize, mScratch.mData, handle, mSamplerate, mChannels); + + int i; + if (mParent->mFlags & AudioSource::VISUALIZATION_DATA) + { + for (i = 0; i < MAX_CHANNELS; i++) + mVisualizationChannelVolume[i] = 0; + + if (aSamplesToRead > 255) + { + for (i = 0; i < 256; i++) + { + int j; + mVisualizationWaveData[i] = 0; + for (j = 0; j < (signed)mChannels; j++) + { + float sample = aBuffer[i + aBufferSize * j]; + float absvol = (float)fabs(sample); + if (absvol > mVisualizationChannelVolume[j]) + mVisualizationChannelVolume[j] = absvol; + mVisualizationWaveData[i] += sample; + } + } + } + else + { + // Very unlikely failsafe branch + for (i = 0; i < 256; i++) + { + int j; + mVisualizationWaveData[i] = 0; + for (j = 0; j < (signed)mChannels; j++) + { + float sample = aBuffer[(i % aSamplesToRead) + aBufferSize * j]; + float absvol = (float)fabs(sample); + if (absvol > mVisualizationChannelVolume[j]) + mVisualizationChannelVolume[j] = absvol; + mVisualizationWaveData[i] += sample; + } + } + } + } + return aSamplesToRead; + } + + bool BusInstance::hasEnded() + { + // Busses never stop for fear of going under 50mph. + return 0; + } + + BusInstance::~BusInstance() + { + Soloud *s = mParent->mSoloud; + int i; + for (i = 0; i < (signed)s->mHighestVoice; i++) + { + if (s->mVoice[i] && s->mVoice[i]->mBusHandle == mParent->mChannelHandle) + { + s->stopVoice(i); + } + } + } + + Bus::Bus() + { + mChannelHandle = 0; + mInstance = 0; + mChannels = 2; + } + + BusInstance * Bus::createInstance() + { + if (mChannelHandle) + { + stop(); + mChannelHandle = 0; + mInstance = 0; + } + mInstance = new BusInstance(this); + return mInstance; + } + + void Bus::findBusHandle() + { + if (mChannelHandle == 0) + { + // Find the channel the bus is playing on to calculate handle.. + int i; + for (i = 0; mChannelHandle == 0 && i < (signed)mSoloud->mHighestVoice; i++) + { + if (mSoloud->mVoice[i] == mInstance) + { + mChannelHandle = mSoloud->getHandleFromVoice(i); + } + } + } + } + + handle Bus::play(AudioSource &aSound, float aVolume, float aPan, bool aPaused) + { + if (!mInstance || !mSoloud) + { + return 0; + } + + findBusHandle(); + + if (mChannelHandle == 0) + { + return 0; + } + return mSoloud->play(aSound, aVolume, aPan, aPaused, mChannelHandle); + } + + + handle Bus::playClocked(time aSoundTime, AudioSource &aSound, float aVolume, float aPan) + { + if (!mInstance || !mSoloud) + { + return 0; + } + + findBusHandle(); + + if (mChannelHandle == 0) + { + return 0; + } + + return mSoloud->playClocked(aSoundTime, aSound, aVolume, aPan, mChannelHandle); + } + + handle Bus::play3d(AudioSource &aSound, float aPosX, float aPosY, float aPosZ, float aVelX, float aVelY, float aVelZ, float aVolume, bool aPaused) + { + if (!mInstance || !mSoloud) + { + return 0; + } + + findBusHandle(); + + if (mChannelHandle == 0) + { + return 0; + } + return mSoloud->play3d(aSound, aPosX, aPosY, aPosZ, aVelX, aVelY, aVelZ, aVolume, aPaused, mChannelHandle); + } + + handle Bus::play3dClocked(time aSoundTime, AudioSource &aSound, float aPosX, float aPosY, float aPosZ, float aVelX, float aVelY, float aVelZ, float aVolume) + { + if (!mInstance || !mSoloud) + { + return 0; + } + + findBusHandle(); + + if (mChannelHandle == 0) + { + return 0; + } + return mSoloud->play3dClocked(aSoundTime, aSound, aPosX, aPosY, aPosZ, aVelX, aVelY, aVelZ, aVolume, mChannelHandle); + } + + + void Bus::setFilter(unsigned int aFilterId, Filter *aFilter) + { + if (aFilterId >= FILTERS_PER_STREAM) + return; + + mFilter[aFilterId] = aFilter; + + if (mInstance) + { + mSoloud->lockAudioMutex(); + delete mInstance->mFilter[aFilterId]; + mInstance->mFilter[aFilterId] = 0; + + if (aFilter) + { + mInstance->mFilter[aFilterId] = mFilter[aFilterId]->createInstance(); + } + mSoloud->unlockAudioMutex(); + } + } + + result Bus::setChannels(unsigned int aChannels) + { + if (aChannels == 0 || aChannels == 3 || aChannels == 5 || aChannels > 7 || aChannels > MAX_CHANNELS) + return INVALID_PARAMETER; + mChannels = aChannels; + return SO_NO_ERROR; + } + + void Bus::setVisualizationEnable(bool aEnable) + { + if (aEnable) + { + mFlags |= AudioSource::VISUALIZATION_DATA; + } + else + { + mFlags &= ~AudioSource::VISUALIZATION_DATA; + } + } + + float * Bus::calcFFT() + { + if (mInstance && mSoloud) + { + mSoloud->lockAudioMutex(); + float temp[1024]; + int i; + for (i = 0; i < 256; i++) + { + temp[i*2] = mInstance->mVisualizationWaveData[i]; + temp[i*2+1] = 0; + temp[i+512] = 0; + temp[i+768] = 0; + } + mSoloud->unlockAudioMutex(); + + SoLoud::FFT::fft1024(temp); + + for (i = 0; i < 256; i++) + { + float real = temp[i * 2]; + float imag = temp[i * 2 + 1]; + mFFTData[i] = (float)sqrt(real*real+imag*imag); + } + } + + return mFFTData; + } + + float * Bus::getWave() + { + if (mInstance && mSoloud) + { + int i; + mSoloud->lockAudioMutex(); + for (i = 0; i < 256; i++) + mWaveData[i] = mInstance->mVisualizationWaveData[i]; + mSoloud->unlockAudioMutex(); + } + return mWaveData; + } + + float Bus::getApproximateVolume(unsigned int aChannel) + { + if (aChannel > mChannels) + return 0; + float vol = 0; + if (mInstance && mSoloud) + { + mSoloud->lockAudioMutex(); + vol = mInstance->mVisualizationChannelVolume[aChannel]; + mSoloud->unlockAudioMutex(); + } + return vol; + } +}; diff --git a/src/soloud/src/core/soloud_core_3d.cpp b/src/soloud/src/core/soloud_core_3d.cpp new file mode 100644 index 0000000..7d2e435 --- /dev/null +++ b/src/soloud/src/core/soloud_core_3d.cpp @@ -0,0 +1,631 @@ +/* +SoLoud audio engine +Copyright (c) 2013-2015 Jari Komppa + +This software is provided 'as-is', without any express or implied +warranty. In no event will the authors be held liable for any damages +arising from the use of this software. + +Permission is granted to anyone to use this software for any purpose, +including commercial applications, and to alter it and redistribute it +freely, subject to the following restrictions: + + 1. The origin of this software must not be misrepresented; you must not + claim that you wrote the original software. If you use this software + in a product, an acknowledgment in the product documentation would be + appreciated but is not required. + + 2. Altered source versions must be plainly marked as such, and must not be + misrepresented as being the original software. + + 3. This notice may not be removed or altered from any source + distribution. +*/ + +#include +#include "soloud_internal.h" + +// 3d audio operations + +namespace SoLoud +{ + struct vec3 + { + float mX, mY, mZ; + + bool null() + { + if (mX == 0 && mY == 0 && mZ == 0) + return true; + return false; + } + + void neg() + { + mX = -mX; + mY = -mY; + mZ = -mZ; + } + + float mag() + { + return (float)sqrt(mX * mX + mY * mY + mZ * mZ); + } + + void normalize() + { + float m = mag(); + if (m == 0) + { + mX = mY = mZ = 0; + return; + } + mX /= m; + mY /= m; + mZ /= m; + } + + float dot(vec3 a) + { + return mX * a.mX + mY * a.mY + mZ * a.mZ; + } + + vec3 sub(vec3 a) + { + vec3 r; + r.mX = mX - a.mX; + r.mY = mY - a.mY; + r.mZ = mZ - a.mZ; + return r; + } + + vec3 cross(vec3 a) + { + vec3 r; + + r.mX = mY * a.mZ - a.mY * mZ; + r.mY = mZ * a.mX - a.mZ * mX; + r.mZ = mX * a.mY - a.mX * mY; + + return r; + } + }; + + struct mat3 + { + vec3 m[3]; + + vec3 mul(vec3 a) + { + vec3 r; + + r.mX = m[0].mX * a.mX + m[0].mY * a.mY + m[0].mZ * a.mZ; + r.mY = m[1].mX * a.mX + m[1].mY * a.mY + m[1].mZ * a.mZ; + r.mZ = m[2].mX * a.mX + m[2].mY * a.mY + m[2].mZ * a.mZ; + + return r; + } + + void lookatRH(vec3 at, vec3 up) + { + vec3 z = at; + z.normalize(); + vec3 x = up.cross(z); + x.normalize(); + vec3 y = z.cross(x); + m[0] = x; + m[1] = y; + m[2] = z; + } + + void lookatLH(vec3 at, vec3 up) + { + vec3 z = at; + z.normalize(); + vec3 x = up.cross(z); + x.normalize(); + vec3 y = z.cross(x); + x.neg(); // flip x + m[0] = x; + m[1] = y; + m[2] = z; + } + }; + +#ifndef MIN +#define MIN(a,b) ((a) < (b)) ? (a) : (b) +#endif + +#ifndef MAX +#define MAX(a,b) ((a) > (b)) ? (a) : (b) +#endif + + float doppler(vec3 aDeltaPos, vec3 aSrcVel, vec3 aDstVel, float aFactor, float aSoundSpeed) + { + float deltamag = aDeltaPos.mag(); + if (deltamag == 0) + return 1.0f; + float vls = aDeltaPos.dot(aDstVel) / deltamag; + float vss = aDeltaPos.dot(aSrcVel) / deltamag; + float maxspeed = aSoundSpeed / aFactor; + vss = MIN(vss, maxspeed); + vls = MIN(vls, maxspeed); + return (aSoundSpeed - aFactor * vls) / (aSoundSpeed - aFactor * vss); + } + + float attenuateInvDistance(float aDistance, float aMinDistance, float aMaxDistance, float aRolloffFactor) + { + float distance = MAX(aDistance, aMinDistance); + distance = MIN(distance, aMaxDistance); + return aMinDistance / (aMinDistance + aRolloffFactor * (distance - aMinDistance)); + } + + float attenuateLinearDistance(float aDistance, float aMinDistance, float aMaxDistance, float aRolloffFactor) + { + float distance = MAX(aDistance, aMinDistance); + distance = MIN(distance, aMaxDistance); + return 1 - aRolloffFactor * (distance - aMinDistance) / (aMaxDistance - aMinDistance); + } + + float attenuateExponentialDistance(float aDistance, float aMinDistance, float aMaxDistance, float aRolloffFactor) + { + float distance = MAX(aDistance, aMinDistance); + distance = MIN(distance, aMaxDistance); + return (float)pow(distance / aMinDistance, -aRolloffFactor); + } + + void Soloud::update3dVoices(unsigned int *aVoiceArray, unsigned int aVoiceCount) + { + vec3 speaker[MAX_CHANNELS]; + + int i; + for (i = 0; i < (signed)mChannels; i++) + { + speaker[i].mX = m3dSpeakerPosition[3 * i + 0]; + speaker[i].mY = m3dSpeakerPosition[3 * i + 1]; + speaker[i].mZ = m3dSpeakerPosition[3 * i + 2]; + speaker[i].normalize(); + } + for (; i < MAX_CHANNELS; i++) + { + speaker[i].mX = 0; + speaker[i].mY = 0; + speaker[i].mZ = 0; + } + + vec3 lpos, lvel, at, up; + at.mX = m3dAt[0]; + at.mY = m3dAt[1]; + at.mZ = m3dAt[2]; + up.mX = m3dUp[0]; + up.mY = m3dUp[1]; + up.mZ = m3dUp[2]; + lpos.mX = m3dPosition[0]; + lpos.mY = m3dPosition[1]; + lpos.mZ = m3dPosition[2]; + lvel.mX = m3dVelocity[0]; + lvel.mY = m3dVelocity[1]; + lvel.mZ = m3dVelocity[2]; + mat3 m; + if (mFlags & LEFT_HANDED_3D) + { + m.lookatLH(at, up); + } + else + { + m.lookatRH(at, up); + } + + for (i = 0; i < (signed)aVoiceCount; i++) + { + AudioSourceInstance3dData * v = &m3dData[aVoiceArray[i]]; + + float vol = 1; + + // custom collider + if (v->mCollider) + { + vol *= v->mCollider->collide(this, v, v->mColliderData); + } + + vec3 pos, vel; + pos.mX = v->m3dPosition[0]; + pos.mY = v->m3dPosition[1]; + pos.mZ = v->m3dPosition[2]; + + vel.mX = v->m3dVelocity[0]; + vel.mY = v->m3dVelocity[1]; + vel.mZ = v->m3dVelocity[2]; + + if (!(v->mFlags & AudioSourceInstance::LISTENER_RELATIVE)) + { + pos = pos.sub(lpos); + } + + float dist = pos.mag(); + + // attenuation + + if (v->mAttenuator) + { + vol *= v->mAttenuator->attenuate(dist, v->m3dMinDistance, v->m3dMaxDistance, v->m3dAttenuationRolloff); + } + else + { + switch (v->m3dAttenuationModel) + { + case AudioSource::INVERSE_DISTANCE: + vol *= attenuateInvDistance(dist, v->m3dMinDistance, v->m3dMaxDistance, v->m3dAttenuationRolloff); + break; + case AudioSource::LINEAR_DISTANCE: + vol *= attenuateLinearDistance(dist, v->m3dMinDistance, v->m3dMaxDistance, v->m3dAttenuationRolloff); + break; + case AudioSource::EXPONENTIAL_DISTANCE: + vol *= attenuateExponentialDistance(dist, v->m3dMinDistance, v->m3dMaxDistance, v->m3dAttenuationRolloff); + break; + default: + //case AudioSource::NO_ATTENUATION: + break; + } + } + + // cone + + // (todo) vol *= conev; + + // doppler + v->mDopplerValue = doppler(pos, vel, lvel, v->m3dDopplerFactor, m3dSoundSpeed); + + // panning + pos = m.mul(pos); + pos.normalize(); + + // Apply volume to channels based on speaker vectors + int j; + for (j = 0; j < (signed)mChannels; j++) + { + float speakervol = (speaker[j].dot(pos) + 1) / 2; + if (speaker[j].null()) + speakervol = 1; + // Different speaker "focus" calculations to try, if the default "bleeds" too much.. + //speakervol = (speakervol * speakervol + speakervol) / 2; + //speakervol = speakervol * speakervol; + v->mChannelVolume[j] = vol * speakervol; + } + for (; j < MAX_CHANNELS; j++) + { + v->mChannelVolume[j] = 0; + } + + v->m3dVolume = vol; + } + } + + void Soloud::update3dAudio() + { + unsigned int voicecount = 0; + unsigned int voices[VOICE_COUNT]; + + // Step 1 - find voices that need 3d processing + lockAudioMutex(); + int i; + for (i = 0; i < (signed)mHighestVoice; i++) + { + if (mVoice[i] && mVoice[i]->mFlags & AudioSourceInstance::PROCESS_3D) + { + voices[voicecount] = i; + voicecount++; + m3dData[i].mFlags = mVoice[i]->mFlags; + } + } + unlockAudioMutex(); + + // Step 2 - do 3d processing + + update3dVoices(voices, voicecount); + + // Step 3 - update SoLoud voices + + lockAudioMutex(); + for (i = 0; i < (int)voicecount; i++) + { + AudioSourceInstance3dData * v = &m3dData[voices[i]]; + AudioSourceInstance * vi = mVoice[voices[i]]; + if (vi) + { + updateVoiceRelativePlaySpeed(voices[i]); + updateVoiceVolume(voices[i]); + int j; + for (j = 0; j < MAX_CHANNELS; j++) + { + vi->mChannelVolume[j] = v->mChannelVolume[j]; + } + + if (vi->mOverallVolume < 0.01f) + { + // Inaudible. + vi->mFlags |= AudioSourceInstance::INAUDIBLE; + + if (vi->mFlags & AudioSourceInstance::INAUDIBLE_KILL) + { + stopVoice(voices[i]); + } + } + else + { + vi->mFlags &= ~AudioSourceInstance::INAUDIBLE; + } + } + } + + mActiveVoiceDirty = true; + unlockAudioMutex(); + } + + + handle Soloud::play3d(AudioSource &aSound, float aPosX, float aPosY, float aPosZ, float aVelX, float aVelY, float aVelZ, float aVolume, bool aPaused, unsigned int aBus) + { + handle h = play(aSound, aVolume, 0, 1, aBus); + lockAudioMutex(); + int v = getVoiceFromHandle(h); + if (v < 0) + { + unlockAudioMutex(); + return h; + } + m3dData[v].mHandle = h; + mVoice[v]->mFlags |= AudioSourceInstance::PROCESS_3D; + set3dSourceParameters(h, aPosX, aPosY, aPosZ, aVelX, aVelY, aVelZ); + + int samples = 0; + if (aSound.mFlags & AudioSource::DISTANCE_DELAY) + { + vec3 pos; + pos.mX = aPosX; + pos.mY = aPosY; + pos.mZ = aPosZ; + if (!(mVoice[v]->mFlags & AudioSource::LISTENER_RELATIVE)) + { + pos.mX -= m3dPosition[0]; + pos.mY -= m3dPosition[1]; + pos.mZ -= m3dPosition[2]; + } + float dist = pos.mag(); + samples += (int)floor((dist / m3dSoundSpeed) * mSamplerate); + } + + update3dVoices((unsigned int *)&v, 1); + updateVoiceRelativePlaySpeed(v); + int j; + for (j = 0; j < MAX_CHANNELS; j++) + { + mVoice[v]->mChannelVolume[j] = m3dData[v].mChannelVolume[j]; + } + + updateVoiceVolume(v); + + // Fix initial voice volume ramp up + int i; + for (i = 0; i < MAX_CHANNELS; i++) + { + mVoice[v]->mCurrentChannelVolume[i] = mVoice[v]->mChannelVolume[i] * mVoice[v]->mOverallVolume; + } + + if (mVoice[v]->mOverallVolume < 0.01f) + { + // Inaudible. + mVoice[v]->mFlags |= AudioSourceInstance::INAUDIBLE; + + if (mVoice[v]->mFlags & AudioSourceInstance::INAUDIBLE_KILL) + { + stopVoice(v); + } + } + else + { + mVoice[v]->mFlags &= ~AudioSourceInstance::INAUDIBLE; + } + mActiveVoiceDirty = true; + + unlockAudioMutex(); + setDelaySamples(h, samples); + setPause(h, aPaused); + return h; + } + + handle Soloud::play3dClocked(time aSoundTime, AudioSource &aSound, float aPosX, float aPosY, float aPosZ, float aVelX, float aVelY, float aVelZ, float aVolume, unsigned int aBus) + { + handle h = play(aSound, aVolume, 0, 1, aBus); + lockAudioMutex(); + int v = getVoiceFromHandle(h); + if (v < 0) + { + unlockAudioMutex(); + return h; + } + m3dData[v].mHandle = h; + mVoice[v]->mFlags |= AudioSourceInstance::PROCESS_3D; + set3dSourceParameters(h, aPosX, aPosY, aPosZ, aVelX, aVelY, aVelZ); + time lasttime = mLastClockedTime; + if (lasttime == 0) + mLastClockedTime = aSoundTime; + vec3 pos; + pos.mX = aPosX; + pos.mY = aPosY; + pos.mZ = aPosZ; + unlockAudioMutex(); + int samples = 0; + if (lasttime != 0) + { + samples = (int)floor((aSoundTime - lasttime) * mSamplerate); + } + if (aSound.mFlags & AudioSource::DISTANCE_DELAY) + { + float dist = pos.mag(); + samples += (int)floor((dist / m3dSoundSpeed) * mSamplerate); + } + + update3dVoices((unsigned int *)&v, 1); + lockAudioMutex(); + updateVoiceRelativePlaySpeed(v); + int j; + for (j = 0; j < MAX_CHANNELS; j++) + { + mVoice[v]->mChannelVolume[j] = m3dData[v].mChannelVolume[j]; + } + + updateVoiceVolume(v); + + // Fix initial voice volume ramp up + int i; + for (i = 0; i < MAX_CHANNELS; i++) + { + mVoice[v]->mCurrentChannelVolume[i] = mVoice[v]->mChannelVolume[i] * mVoice[v]->mOverallVolume; + } + + if (mVoice[v]->mOverallVolume < 0.01f) + { + // Inaudible. + mVoice[v]->mFlags |= AudioSourceInstance::INAUDIBLE; + + if (mVoice[v]->mFlags & AudioSourceInstance::INAUDIBLE_KILL) + { + stopVoice(v); + } + } + else + { + mVoice[v]->mFlags &= ~AudioSourceInstance::INAUDIBLE; + } + mActiveVoiceDirty = true; + unlockAudioMutex(); + + setDelaySamples(h, samples); + setPause(h, 0); + return h; + } + + + + result Soloud::set3dSoundSpeed(float aSpeed) + { + if (aSpeed <= 0) + return INVALID_PARAMETER; + m3dSoundSpeed = aSpeed; + return SO_NO_ERROR; + } + + + float Soloud::get3dSoundSpeed() + { + return m3dSoundSpeed; + } + + + void Soloud::set3dListenerParameters(float aPosX, float aPosY, float aPosZ, float aAtX, float aAtY, float aAtZ, float aUpX, float aUpY, float aUpZ, float aVelocityX, float aVelocityY, float aVelocityZ) + { + m3dPosition[0] = aPosX; + m3dPosition[1] = aPosY; + m3dPosition[2] = aPosZ; + m3dAt[0] = aAtX; + m3dAt[1] = aAtY; + m3dAt[2] = aAtZ; + m3dUp[0] = aUpX; + m3dUp[1] = aUpY; + m3dUp[2] = aUpZ; + m3dVelocity[0] = aVelocityX; + m3dVelocity[1] = aVelocityY; + m3dVelocity[2] = aVelocityZ; + } + + + void Soloud::set3dListenerPosition(float aPosX, float aPosY, float aPosZ) + { + m3dPosition[0] = aPosX; + m3dPosition[1] = aPosY; + m3dPosition[2] = aPosZ; + } + + + void Soloud::set3dListenerAt(float aAtX, float aAtY, float aAtZ) + { + m3dAt[0] = aAtX; + m3dAt[1] = aAtY; + m3dAt[2] = aAtZ; + } + + + void Soloud::set3dListenerUp(float aUpX, float aUpY, float aUpZ) + { + m3dUp[0] = aUpX; + m3dUp[1] = aUpY; + m3dUp[2] = aUpZ; + } + + + void Soloud::set3dListenerVelocity(float aVelocityX, float aVelocityY, float aVelocityZ) + { + m3dVelocity[0] = aVelocityX; + m3dVelocity[1] = aVelocityY; + m3dVelocity[2] = aVelocityZ; + } + + + void Soloud::set3dSourceParameters(handle aVoiceHandle, float aPosX, float aPosY, float aPosZ, float aVelocityX, float aVelocityY, float aVelocityZ) + { + FOR_ALL_VOICES_PRE_3D + m3dData[ch].m3dPosition[0] = aPosX; + m3dData[ch].m3dPosition[1] = aPosY; + m3dData[ch].m3dPosition[2] = aPosZ; + m3dData[ch].m3dVelocity[0] = aVelocityX; + m3dData[ch].m3dVelocity[1] = aVelocityY; + m3dData[ch].m3dVelocity[2] = aVelocityZ; + FOR_ALL_VOICES_POST_3D + } + + + void Soloud::set3dSourcePosition(handle aVoiceHandle, float aPosX, float aPosY, float aPosZ) + { + FOR_ALL_VOICES_PRE_3D + m3dData[ch].m3dPosition[0] = aPosX; + m3dData[ch].m3dPosition[1] = aPosY; + m3dData[ch].m3dPosition[2] = aPosZ; + FOR_ALL_VOICES_POST_3D + } + + + void Soloud::set3dSourceVelocity(handle aVoiceHandle, float aVelocityX, float aVelocityY, float aVelocityZ) + { + FOR_ALL_VOICES_PRE_3D + m3dData[ch].m3dVelocity[0] = aVelocityX; + m3dData[ch].m3dVelocity[1] = aVelocityY; + m3dData[ch].m3dVelocity[2] = aVelocityZ; + FOR_ALL_VOICES_POST_3D + } + + + void Soloud::set3dSourceMinMaxDistance(handle aVoiceHandle, float aMinDistance, float aMaxDistance) + { + FOR_ALL_VOICES_PRE_3D + m3dData[ch].m3dMinDistance = aMinDistance; + m3dData[ch].m3dMaxDistance = aMaxDistance; + FOR_ALL_VOICES_POST_3D + } + + + void Soloud::set3dSourceAttenuation(handle aVoiceHandle, unsigned int aAttenuationModel, float aAttenuationRolloffFactor) + { + FOR_ALL_VOICES_PRE_3D + m3dData[ch].m3dAttenuationModel = aAttenuationModel; + m3dData[ch].m3dAttenuationRolloff = aAttenuationRolloffFactor; + FOR_ALL_VOICES_POST_3D + } + + + void Soloud::set3dSourceDopplerFactor(handle aVoiceHandle, float aDopplerFactor) + { + FOR_ALL_VOICES_PRE_3D + m3dData[ch].m3dDopplerFactor = aDopplerFactor; + FOR_ALL_VOICES_POST_3D + } +}; diff --git a/src/soloud/src/core/soloud_core_basicops.cpp b/src/soloud/src/core/soloud_core_basicops.cpp new file mode 100644 index 0000000..26b025f --- /dev/null +++ b/src/soloud/src/core/soloud_core_basicops.cpp @@ -0,0 +1,206 @@ +/* +SoLoud audio engine +Copyright (c) 2013-2015 Jari Komppa + +This software is provided 'as-is', without any express or implied +warranty. In no event will the authors be held liable for any damages +arising from the use of this software. + +Permission is granted to anyone to use this software for any purpose, +including commercial applications, and to alter it and redistribute it +freely, subject to the following restrictions: + + 1. The origin of this software must not be misrepresented; you must not + claim that you wrote the original software. If you use this software + in a product, an acknowledgment in the product documentation would be + appreciated but is not required. + + 2. Altered source versions must be plainly marked as such, and must not be + misrepresented as being the original software. + + 3. This notice may not be removed or altered from any source + distribution. +*/ + +#include +#include "soloud_internal.h" + +// Core "basic" operations - play, stop, etc + +namespace SoLoud +{ + handle Soloud::play(AudioSource &aSound, float aVolume, float aPan, bool aPaused, unsigned int aBus) + { + if (aSound.mFlags & AudioSource::SINGLE_INSTANCE) + { + // Only one instance allowed, stop others + aSound.stop(); + } + + // Creation of an audio instance may take significant amount of time, + // so let's not do it inside the audio thread mutex. + aSound.mSoloud = this; + SoLoud::AudioSourceInstance *instance = aSound.createInstance(); + + lockAudioMutex(); + int ch = findFreeVoice(); + if (ch < 0) + { + unlockAudioMutex(); + delete instance; + return UNKNOWN_ERROR; + } + if (!aSound.mAudioSourceID) + { + aSound.mAudioSourceID = mAudioSourceID; + mAudioSourceID++; + } + mVoice[ch] = instance; + mVoice[ch]->mAudioSourceID = aSound.mAudioSourceID; + mVoice[ch]->mBusHandle = aBus; + mVoice[ch]->init(aSound, mPlayIndex); + m3dData[ch].init(aSound); + + mPlayIndex++; + + // 20 bits, skip the last one (top bits full = voice group) + if (mPlayIndex == 0xfffff) + { + mPlayIndex = 0; + } + + if (aPaused) + { + mVoice[ch]->mFlags |= AudioSourceInstance::PAUSED; + } + + setVoicePan(ch, aPan); + if (aVolume < 0) + { + setVoiceVolume(ch, aSound.mVolume); + } + else + { + setVoiceVolume(ch, aVolume); + } + + // Fix initial voice volume ramp up + int i; + for (i = 0; i < MAX_CHANNELS; i++) + { + mVoice[ch]->mCurrentChannelVolume[i] = mVoice[ch]->mChannelVolume[i] * mVoice[ch]->mOverallVolume; + } + + setVoiceRelativePlaySpeed(ch, 1); + + for (i = 0; i < FILTERS_PER_STREAM; i++) + { + if (aSound.mFilter[i]) + { + mVoice[ch]->mFilter[i] = aSound.mFilter[i]->createInstance(); + } + } + + mActiveVoiceDirty = true; + + unlockAudioMutex(); + + int handle = getHandleFromVoice(ch); + return handle; + } + + handle Soloud::playClocked(time aSoundTime, AudioSource &aSound, float aVolume, float aPan, unsigned int aBus) + { + handle h = play(aSound, aVolume, aPan, 1, aBus); + lockAudioMutex(); + time lasttime = mLastClockedTime; + if (lasttime == 0) + mLastClockedTime = aSoundTime; + unlockAudioMutex(); + int samples = 0; + if (aSoundTime > lasttime) + { + samples = (int)floor((aSoundTime - lasttime) * mSamplerate); + } + setDelaySamples(h, samples); + setPause(h, 0); + return h; + } + + handle Soloud::playBackground(AudioSource &aSound, float aVolume, bool aPaused, unsigned int aBus) + { + handle h = play(aSound, aVolume, 0.0f, aPaused, aBus); + setPanAbsolute(h, 1.0f, 1.0f); + return h; + } + + result Soloud::seek(handle aVoiceHandle, time aSeconds) + { + result res = SO_NO_ERROR; + result singleres = SO_NO_ERROR; + FOR_ALL_VOICES_PRE + singleres = mVoice[ch]->seek(aSeconds, mScratch.mData, mScratchSize); + if (singleres != SO_NO_ERROR) + res = singleres; + FOR_ALL_VOICES_POST + return res; + } + + + void Soloud::stop(handle aVoiceHandle) + { + FOR_ALL_VOICES_PRE + stopVoice(ch); + FOR_ALL_VOICES_POST + } + + void Soloud::stopAudioSource(AudioSource &aSound) + { + if (aSound.mAudioSourceID) + { + lockAudioMutex(); + + int i; + for (i = 0; i < (signed)mHighestVoice; i++) + { + if (mVoice[i] && mVoice[i]->mAudioSourceID == aSound.mAudioSourceID) + { + stopVoice(i); + } + } + unlockAudioMutex(); + } + } + + void Soloud::stopAll() + { + int i; + lockAudioMutex(); + for (i = 0; i < (signed)mHighestVoice; i++) + { + stopVoice(i); + } + unlockAudioMutex(); + } + + int Soloud::countAudioSource(AudioSource &aSound) + { + int count = 0; + if (aSound.mAudioSourceID) + { + lockAudioMutex(); + + int i; + for (i = 0; i < (signed)mHighestVoice; i++) + { + if (mVoice[i] && mVoice[i]->mAudioSourceID == aSound.mAudioSourceID) + { + count++; + } + } + unlockAudioMutex(); + } + return count; + } + +} diff --git a/src/soloud/src/core/soloud_core_faderops.cpp b/src/soloud/src/core/soloud_core_faderops.cpp new file mode 100644 index 0000000..1f68847 --- /dev/null +++ b/src/soloud/src/core/soloud_core_faderops.cpp @@ -0,0 +1,156 @@ +/* +SoLoud audio engine +Copyright (c) 2013-2015 Jari Komppa + +This software is provided 'as-is', without any express or implied +warranty. In no event will the authors be held liable for any damages +arising from the use of this software. + +Permission is granted to anyone to use this software for any purpose, +including commercial applications, and to alter it and redistribute it +freely, subject to the following restrictions: + + 1. The origin of this software must not be misrepresented; you must not + claim that you wrote the original software. If you use this software + in a product, an acknowledgment in the product documentation would be + appreciated but is not required. + + 2. Altered source versions must be plainly marked as such, and must not be + misrepresented as being the original software. + + 3. This notice may not be removed or altered from any source + distribution. +*/ + +#include "soloud_internal.h" + +// Core operations related to faders (not including filters) + +namespace SoLoud +{ + void Soloud::schedulePause(handle aVoiceHandle, time aTime) + { + if (aTime <= 0) + { + setPause(aVoiceHandle, 1); + return; + } + FOR_ALL_VOICES_PRE + mVoice[ch]->mPauseScheduler.set(1, 0, aTime, mVoice[ch]->mStreamTime); + FOR_ALL_VOICES_POST + } + + void Soloud::scheduleStop(handle aVoiceHandle, time aTime) + { + if (aTime <= 0) + { + stop(aVoiceHandle); + return; + } + FOR_ALL_VOICES_PRE + mVoice[ch]->mStopScheduler.set(1, 0, aTime, mVoice[ch]->mStreamTime); + FOR_ALL_VOICES_POST + } + + void Soloud::fadeVolume(handle aVoiceHandle, float aTo, time aTime) + { + float from = getVolume(aVoiceHandle); + if (aTime <= 0 || aTo == from) + { + setVolume(aVoiceHandle, aTo); + return; + } + + FOR_ALL_VOICES_PRE + mVoice[ch]->mVolumeFader.set(from, aTo, aTime, mVoice[ch]->mStreamTime); + FOR_ALL_VOICES_POST + } + + void Soloud::fadePan(handle aVoiceHandle, float aTo, time aTime) + { + float from = getPan(aVoiceHandle); + if (aTime <= 0 || aTo == from) + { + setPan(aVoiceHandle, aTo); + return; + } + + FOR_ALL_VOICES_PRE + mVoice[ch]->mPanFader.set(from, aTo, aTime, mVoice[ch]->mStreamTime); + FOR_ALL_VOICES_POST + } + + void Soloud::fadeRelativePlaySpeed(handle aVoiceHandle, float aTo, time aTime) + { + float from = getRelativePlaySpeed(aVoiceHandle); + if (aTime <= 0 || aTo == from) + { + setRelativePlaySpeed(aVoiceHandle, aTo); + return; + } + FOR_ALL_VOICES_PRE + mVoice[ch]->mRelativePlaySpeedFader.set(from, aTo, aTime, mVoice[ch]->mStreamTime); + FOR_ALL_VOICES_POST + } + + void Soloud::fadeGlobalVolume(float aTo, time aTime) + { + float from = getGlobalVolume(); + if (aTime <= 0 || aTo == from) + { + setGlobalVolume(aTo); + return; + } + mGlobalVolumeFader.set(from, aTo, aTime, mStreamTime); + } + + + void Soloud::oscillateVolume(handle aVoiceHandle, float aFrom, float aTo, time aTime) + { + if (aTime <= 0 || aTo == aFrom) + { + setVolume(aVoiceHandle, aTo); + return; + } + + FOR_ALL_VOICES_PRE + mVoice[ch]->mVolumeFader.setLFO(aFrom, aTo, aTime, mVoice[ch]->mStreamTime); + FOR_ALL_VOICES_POST + } + + void Soloud::oscillatePan(handle aVoiceHandle, float aFrom, float aTo, time aTime) + { + if (aTime <= 0 || aTo == aFrom) + { + setPan(aVoiceHandle, aTo); + return; + } + + FOR_ALL_VOICES_PRE + mVoice[ch]->mPanFader.setLFO(aFrom, aTo, aTime, mVoice[ch]->mStreamTime); + FOR_ALL_VOICES_POST + } + + void Soloud::oscillateRelativePlaySpeed(handle aVoiceHandle, float aFrom, float aTo, time aTime) + { + if (aTime <= 0 || aTo == aFrom) + { + setRelativePlaySpeed(aVoiceHandle, aTo); + return; + } + + FOR_ALL_VOICES_PRE + mVoice[ch]->mRelativePlaySpeedFader.setLFO(aFrom, aTo, aTime, mVoice[ch]->mStreamTime); + FOR_ALL_VOICES_POST + } + + void Soloud::oscillateGlobalVolume(float aFrom, float aTo, time aTime) + { + if (aTime <= 0 || aTo == aFrom) + { + setGlobalVolume(aTo); + return; + } + mGlobalVolumeFader.setLFO(aFrom, aTo, aTime, mStreamTime); + } +} diff --git a/src/soloud/src/core/soloud_core_filterops.cpp b/src/soloud/src/core/soloud_core_filterops.cpp new file mode 100644 index 0000000..7a8f264 --- /dev/null +++ b/src/soloud/src/core/soloud_core_filterops.cpp @@ -0,0 +1,156 @@ +/* +SoLoud audio engine +Copyright (c) 2013-2015 Jari Komppa + +This software is provided 'as-is', without any express or implied +warranty. In no event will the authors be held liable for any damages +arising from the use of this software. + +Permission is granted to anyone to use this software for any purpose, +including commercial applications, and to alter it and redistribute it +freely, subject to the following restrictions: + + 1. The origin of this software must not be misrepresented; you must not + claim that you wrote the original software. If you use this software + in a product, an acknowledgment in the product documentation would be + appreciated but is not required. + + 2. Altered source versions must be plainly marked as such, and must not be + misrepresented as being the original software. + + 3. This notice may not be removed or altered from any source + distribution. +*/ + +#include "soloud_internal.h" + +// Core operations related to filters + +namespace SoLoud +{ + void Soloud::setGlobalFilter(unsigned int aFilterId, Filter *aFilter) + { + if (aFilterId >= FILTERS_PER_STREAM) + return; + + lockAudioMutex(); + delete mFilterInstance[aFilterId]; + mFilterInstance[aFilterId] = 0; + + mFilter[aFilterId] = aFilter; + if (aFilter) + { + mFilterInstance[aFilterId] = mFilter[aFilterId]->createInstance(); + } + unlockAudioMutex(); + } + + float Soloud::getFilterParameter(handle aVoiceHandle, unsigned int aFilterId, unsigned int aAttributeId) + { + float ret = INVALID_PARAMETER; + if (aFilterId >= FILTERS_PER_STREAM) + return ret; + + if (aVoiceHandle == 0) + { + lockAudioMutex(); + if (mFilterInstance[aFilterId]) + { + ret = mFilterInstance[aFilterId]->getFilterParameter(aAttributeId); + } + unlockAudioMutex(); + return ret; + } + + int ch = getVoiceFromHandle(aVoiceHandle); + if (ch == -1) + { + return ret; + } + lockAudioMutex(); + if (mVoice[ch] && + mVoice[ch]->mFilter[aFilterId]) + { + ret = mVoice[ch]->mFilter[aFilterId]->getFilterParameter(aAttributeId); + } + unlockAudioMutex(); + + return ret; + } + + void Soloud::setFilterParameter(handle aVoiceHandle, unsigned int aFilterId, unsigned int aAttributeId, float aValue) + { + if (aFilterId >= FILTERS_PER_STREAM) + return; + + if (aVoiceHandle == 0) + { + lockAudioMutex(); + if (mFilterInstance[aFilterId]) + { + mFilterInstance[aFilterId]->setFilterParameter(aAttributeId, aValue); + } + unlockAudioMutex(); + return; + } + + FOR_ALL_VOICES_PRE + if (mVoice[ch] && + mVoice[ch]->mFilter[aFilterId]) + { + mVoice[ch]->mFilter[aFilterId]->setFilterParameter(aAttributeId, aValue); + } + FOR_ALL_VOICES_POST + } + + void Soloud::fadeFilterParameter(handle aVoiceHandle, unsigned int aFilterId, unsigned int aAttributeId, float aTo, double aTime) + { + if (aFilterId >= FILTERS_PER_STREAM) + return; + + if (aVoiceHandle == 0) + { + lockAudioMutex(); + if (mFilterInstance[aFilterId]) + { + mFilterInstance[aFilterId]->fadeFilterParameter(aAttributeId, aTo, aTime, mStreamTime); + } + unlockAudioMutex(); + return; + } + + FOR_ALL_VOICES_PRE + if (mVoice[ch] && + mVoice[ch]->mFilter[aFilterId]) + { + mVoice[ch]->mFilter[aFilterId]->fadeFilterParameter(aAttributeId, aTo, aTime, mStreamTime); + } + FOR_ALL_VOICES_POST + } + + void Soloud::oscillateFilterParameter(handle aVoiceHandle, unsigned int aFilterId, unsigned int aAttributeId, float aFrom, float aTo, double aTime) + { + if (aFilterId >= FILTERS_PER_STREAM) + return; + + if (aVoiceHandle == 0) + { + lockAudioMutex(); + if (mFilterInstance[aFilterId]) + { + mFilterInstance[aFilterId]->oscillateFilterParameter(aAttributeId, aFrom, aTo, aTime, mStreamTime); + } + unlockAudioMutex(); + return; + } + + FOR_ALL_VOICES_PRE + if (mVoice[ch] && + mVoice[ch]->mFilter[aFilterId]) + { + mVoice[ch]->mFilter[aFilterId]->oscillateFilterParameter(aAttributeId, aFrom, aTo, aTime, mStreamTime); + } + FOR_ALL_VOICES_POST + } + +} diff --git a/src/soloud/src/core/soloud_core_getters.cpp b/src/soloud/src/core/soloud_core_getters.cpp new file mode 100644 index 0000000..74b93eb --- /dev/null +++ b/src/soloud/src/core/soloud_core_getters.cpp @@ -0,0 +1,378 @@ +/* +SoLoud audio engine +Copyright (c) 2013-2015 Jari Komppa + +This software is provided 'as-is', without any express or implied +warranty. In no event will the authors be held liable for any damages +arising from the use of this software. + +Permission is granted to anyone to use this software for any purpose, +including commercial applications, and to alter it and redistribute it +freely, subject to the following restrictions: + + 1. The origin of this software must not be misrepresented; you must not + claim that you wrote the original software. If you use this software + in a product, an acknowledgment in the product documentation would be + appreciated but is not required. + + 2. Altered source versions must be plainly marked as such, and must not be + misrepresented as being the original software. + + 3. This notice may not be removed or altered from any source + distribution. +*/ + +#include "soloud.h" + +// Getters - return information about SoLoud state + +namespace SoLoud +{ + unsigned int Soloud::getVersion() const + { + return SOLOUD_VERSION; + } + + float Soloud::getPostClipScaler() const + { + return mPostClipScaler; + } + + float Soloud::getGlobalVolume() const + { + return mGlobalVolume; + } + + handle Soloud::getHandleFromVoice(unsigned int aVoice) const + { + if (mVoice[aVoice] == 0) + return 0; + return (aVoice + 1) | (mVoice[aVoice]->mPlayIndex << 12); + } + + int Soloud::getVoiceFromHandle(handle aVoiceHandle) const + { + // If this is a voice group handle, pick the first handle from the group + handle *h = voiceGroupHandleToArray(aVoiceHandle); + if (h != NULL) aVoiceHandle = *h; + + if (aVoiceHandle == 0) + { + return -1; + } + + int ch = (aVoiceHandle & 0xfff) - 1; + unsigned int idx = aVoiceHandle >> 12; + if (mVoice[ch] && + (mVoice[ch]->mPlayIndex & 0xfffff) == idx) + { + return ch; + } + return -1; + } + + unsigned int Soloud::getMaxActiveVoiceCount() const + { + return mMaxActiveVoices; + } + + unsigned int Soloud::getActiveVoiceCount() + { + lockAudioMutex(); + if (mActiveVoiceDirty) + calcActiveVoices(); + unsigned int c = mActiveVoiceCount; + unlockAudioMutex(); + return c; + } + + unsigned int Soloud::getVoiceCount() + { + lockAudioMutex(); + int i; + int c = 0; + for (i = 0; i < (signed)mHighestVoice; i++) + { + if (mVoice[i]) + { + c++; + } + } + unlockAudioMutex(); + return c; + } + + bool Soloud::isValidVoiceHandle(handle aVoiceHandle) + { + // voice groups are not valid voice handles + if ((aVoiceHandle & 0xfffff000) == 0xfffff000) + return 0; + + lockAudioMutex(); + if (getVoiceFromHandle(aVoiceHandle) != -1) + { + unlockAudioMutex(); + return 1; + } + unlockAudioMutex(); + return 0; + } + + + time Soloud::getLoopPoint(handle aVoiceHandle) + { + lockAudioMutex(); + int ch = getVoiceFromHandle(aVoiceHandle); + if (ch == -1) + { + unlockAudioMutex(); + return 0; + } + time v = mVoice[ch]->mLoopPoint; + unlockAudioMutex(); + return v; + } + + bool Soloud::getLooping(handle aVoiceHandle) + { + lockAudioMutex(); + int ch = getVoiceFromHandle(aVoiceHandle); + if (ch == -1) + { + unlockAudioMutex(); + return 0; + } + bool v = (mVoice[ch]->mFlags & AudioSourceInstance::LOOPING) != 0; + unlockAudioMutex(); + return v; + } + + float Soloud::getInfo(handle aVoiceHandle, unsigned int mInfoKey) + { + lockAudioMutex(); + int ch = getVoiceFromHandle(aVoiceHandle); + if (ch == -1) + { + unlockAudioMutex(); + return 0; + } + float v = mVoice[ch]->getInfo(mInfoKey); + unlockAudioMutex(); + return v; + } + + float Soloud::getVolume(handle aVoiceHandle) + { + lockAudioMutex(); + int ch = getVoiceFromHandle(aVoiceHandle); + if (ch == -1) + { + unlockAudioMutex(); + return 0; + } + float v = mVoice[ch]->mSetVolume; + unlockAudioMutex(); + return v; + } + + float Soloud::getOverallVolume(handle aVoiceHandle) + { + lockAudioMutex(); + int ch = getVoiceFromHandle(aVoiceHandle); + if (ch == -1) + { + unlockAudioMutex(); + return 0; + } + float v = mVoice[ch]->mOverallVolume; + unlockAudioMutex(); + return v; + } + + float Soloud::getPan(handle aVoiceHandle) + { + lockAudioMutex(); + int ch = getVoiceFromHandle(aVoiceHandle); + if (ch == -1) + { + unlockAudioMutex(); + return 0; + } + float v = mVoice[ch]->mPan; + unlockAudioMutex(); + return v; + } + + time Soloud::getStreamTime(handle aVoiceHandle) + { + lockAudioMutex(); + int ch = getVoiceFromHandle(aVoiceHandle); + if (ch == -1) + { + unlockAudioMutex(); + return 0; + } + double v = mVoice[ch]->mStreamTime; + unlockAudioMutex(); + return v; + } + + time Soloud::getStreamPosition(handle aVoiceHandle) + { + lockAudioMutex(); + int ch = getVoiceFromHandle(aVoiceHandle); + if (ch == -1) + { + unlockAudioMutex(); + return 0; + } + double v = mVoice[ch]->mStreamPosition; + unlockAudioMutex(); + return v; + } + + float Soloud::getRelativePlaySpeed(handle aVoiceHandle) + { + lockAudioMutex(); + int ch = getVoiceFromHandle(aVoiceHandle); + if (ch == -1) + { + unlockAudioMutex(); + return 1; + } + float v = mVoice[ch]->mSetRelativePlaySpeed; + unlockAudioMutex(); + return v; + } + + float Soloud::getSamplerate(handle aVoiceHandle) + { + lockAudioMutex(); + int ch = getVoiceFromHandle(aVoiceHandle); + if (ch == -1) + { + unlockAudioMutex(); + return 0; + } + float v = mVoice[ch]->mBaseSamplerate; + unlockAudioMutex(); + return v; + } + + bool Soloud::getPause(handle aVoiceHandle) + { + lockAudioMutex(); + int ch = getVoiceFromHandle(aVoiceHandle); + if (ch == -1) + { + unlockAudioMutex(); + return 0; + } + int v = !!(mVoice[ch]->mFlags & AudioSourceInstance::PAUSED); + unlockAudioMutex(); + return v != 0; + } + + bool Soloud::getProtectVoice(handle aVoiceHandle) + { + lockAudioMutex(); + int ch = getVoiceFromHandle(aVoiceHandle); + if (ch == -1) + { + unlockAudioMutex(); + return 0; + } + int v = !!(mVoice[ch]->mFlags & AudioSourceInstance::PROTECTED); + unlockAudioMutex(); + return v != 0; + } + + int Soloud::findFreeVoice() + { + int i; + unsigned int lowest_play_index_value = 0xffffffff; + int lowest_play_index = -1; + + // (slowly) drag the highest active voice index down + if (mHighestVoice > 0 && mVoice[mHighestVoice - 1] == NULL) + mHighestVoice--; + + for (i = 0; i < VOICE_COUNT; i++) + { + if (mVoice[i] == NULL) + { + if (i+1 > (signed)mHighestVoice) + { + mHighestVoice = i + 1; + } + return i; + } + if (((mVoice[i]->mFlags & AudioSourceInstance::PROTECTED) == 0) && + mVoice[i]->mPlayIndex < lowest_play_index_value) + { + lowest_play_index_value = mVoice[i]->mPlayIndex; + lowest_play_index = i; + } + } + stopVoice(lowest_play_index); + return lowest_play_index; + } + + unsigned int Soloud::getLoopCount(handle aVoiceHandle) + { + lockAudioMutex(); + int ch = getVoiceFromHandle(aVoiceHandle); + if (ch == -1) + { + unlockAudioMutex(); + return 0; + } + int v = mVoice[ch]->mLoopCount; + unlockAudioMutex(); + return v; + } + + // Returns current backend ID + unsigned int Soloud::getBackendId() + { + return mBackendID; + + } + + // Returns current backend string + const char * Soloud::getBackendString() + { + return mBackendString; + } + + // Returns current backend channel count (1 mono, 2 stereo, etc) + unsigned int Soloud::getBackendChannels() + { + return mChannels; + } + + // Returns current backend sample rate + unsigned int Soloud::getBackendSamplerate() + { + return mSamplerate; + } + + // Returns current backend buffer size + unsigned int Soloud::getBackendBufferSize() + { + return mBufferSize; + } + + // Get speaker position in 3d space + result Soloud::getSpeakerPosition(unsigned int aChannel, float &aX, float &aY, float &aZ) + { + if (aChannel >= mChannels) + return INVALID_PARAMETER; + aX = m3dSpeakerPosition[3 * aChannel + 0]; + aY = m3dSpeakerPosition[3 * aChannel + 1]; + aZ = m3dSpeakerPosition[3 * aChannel + 2]; + return SO_NO_ERROR; + } + + +} diff --git a/src/soloud/src/core/soloud_core_setters.cpp b/src/soloud/src/core/soloud_core_setters.cpp new file mode 100644 index 0000000..21c20ba --- /dev/null +++ b/src/soloud/src/core/soloud_core_setters.cpp @@ -0,0 +1,223 @@ +/* +SoLoud audio engine +Copyright (c) 2013-2015 Jari Komppa + +This software is provided 'as-is', without any express or implied +warranty. In no event will the authors be held liable for any damages +arising from the use of this software. + +Permission is granted to anyone to use this software for any purpose, +including commercial applications, and to alter it and redistribute it +freely, subject to the following restrictions: + + 1. The origin of this software must not be misrepresented; you must not + claim that you wrote the original software. If you use this software + in a product, an acknowledgment in the product documentation would be + appreciated but is not required. + + 2. Altered source versions must be plainly marked as such, and must not be + misrepresented as being the original software. + + 3. This notice may not be removed or altered from any source + distribution. +*/ + +#include "soloud_internal.h" + +// Setters - set various bits of SoLoud state + +namespace SoLoud +{ + void Soloud::setPostClipScaler(float aScaler) + { + mPostClipScaler = aScaler; + } + + void Soloud::setGlobalVolume(float aVolume) + { + mGlobalVolumeFader.mActive = 0; + mGlobalVolume = aVolume; + } + + result Soloud::setRelativePlaySpeed(handle aVoiceHandle, float aSpeed) + { + result retVal = 0; + FOR_ALL_VOICES_PRE + mVoice[ch]->mRelativePlaySpeedFader.mActive = 0; + retVal = setVoiceRelativePlaySpeed(ch, aSpeed); + FOR_ALL_VOICES_POST + return retVal; + } + + void Soloud::setSamplerate(handle aVoiceHandle, float aSamplerate) + { + FOR_ALL_VOICES_PRE + mVoice[ch]->mBaseSamplerate = aSamplerate; + updateVoiceRelativePlaySpeed(ch); + FOR_ALL_VOICES_POST + } + + void Soloud::setPause(handle aVoiceHandle, bool aPause) + { + FOR_ALL_VOICES_PRE + setVoicePause(ch, aPause); + FOR_ALL_VOICES_POST + } + + result Soloud::setMaxActiveVoiceCount(unsigned int aVoiceCount) + { + if (aVoiceCount == 0 || aVoiceCount >= VOICE_COUNT) + return INVALID_PARAMETER; + lockAudioMutex(); + mMaxActiveVoices = aVoiceCount; + delete[] mResampleData; + delete[] mResampleDataOwner; + mResampleData = new AlignedFloatBuffer[aVoiceCount * 2]; + mResampleDataOwner = new AudioSourceInstance*[aVoiceCount]; + unsigned int i; + for (i = 0; i < aVoiceCount * 2; i++) + mResampleData[i].init(SAMPLE_GRANULARITY * MAX_CHANNELS); + for (i = 0; i < aVoiceCount; i++) + mResampleDataOwner[i] = NULL; + mActiveVoiceDirty = true; + unlockAudioMutex(); + return SO_NO_ERROR; + } + + void Soloud::setPauseAll(bool aPause) + { + lockAudioMutex(); + int ch; + for (ch = 0; ch < (signed)mHighestVoice; ch++) + { + setVoicePause(ch, aPause); + } + unlockAudioMutex(); + } + + void Soloud::setProtectVoice(handle aVoiceHandle, bool aProtect) + { + FOR_ALL_VOICES_PRE + if (aProtect) + { + mVoice[ch]->mFlags |= AudioSourceInstance::PROTECTED; + } + else + { + mVoice[ch]->mFlags &= ~AudioSourceInstance::PROTECTED; + } + FOR_ALL_VOICES_POST + } + + void Soloud::setPan(handle aVoiceHandle, float aPan) + { + FOR_ALL_VOICES_PRE + setVoicePan(ch, aPan); + FOR_ALL_VOICES_POST + } + + void Soloud::setPanAbsolute(handle aVoiceHandle, float aLVolume, float aRVolume, float aLBVolume, float aRBVolume, float aCVolume, float aSVolume) + { + FOR_ALL_VOICES_PRE + mVoice[ch]->mPanFader.mActive = 0; + mVoice[ch]->mChannelVolume[0] = aLVolume; + mVoice[ch]->mChannelVolume[1] = aRVolume; + if (mVoice[ch]->mChannels == 4) + { + mVoice[ch]->mChannelVolume[2] = aLBVolume; + mVoice[ch]->mChannelVolume[3] = aRBVolume; + } + if (mVoice[ch]->mChannels == 6) + { + mVoice[ch]->mChannelVolume[2] = aCVolume; + mVoice[ch]->mChannelVolume[3] = aSVolume; + mVoice[ch]->mChannelVolume[4] = aLBVolume; + mVoice[ch]->mChannelVolume[5] = aRBVolume; + } + if (mVoice[ch]->mChannels == 8) + { + mVoice[ch]->mChannelVolume[2] = aCVolume; + mVoice[ch]->mChannelVolume[3] = aSVolume; + mVoice[ch]->mChannelVolume[4] = (aLVolume + aLBVolume) * 0.5f; + mVoice[ch]->mChannelVolume[5] = (aRVolume + aRBVolume) * 0.5f; + mVoice[ch]->mChannelVolume[6] = aLBVolume; + mVoice[ch]->mChannelVolume[7] = aRBVolume; + } + FOR_ALL_VOICES_POST + } + + void Soloud::setInaudibleBehavior(handle aVoiceHandle, bool aMustTick, bool aKill) + { + FOR_ALL_VOICES_PRE + mVoice[ch]->mFlags &= ~(AudioSourceInstance::INAUDIBLE_KILL | AudioSourceInstance::INAUDIBLE_TICK); + if (aMustTick) + { + mVoice[ch]->mFlags |= AudioSourceInstance::INAUDIBLE_TICK; + } + if (aKill) + { + mVoice[ch]->mFlags |= AudioSourceInstance::INAUDIBLE_KILL; + } + FOR_ALL_VOICES_POST + } + + void Soloud::setLoopPoint(handle aVoiceHandle, time aLoopPoint) + { + FOR_ALL_VOICES_PRE + mVoice[ch]->mLoopPoint = aLoopPoint; + FOR_ALL_VOICES_POST + } + + void Soloud::setLooping(handle aVoiceHandle, bool aLooping) + { + FOR_ALL_VOICES_PRE + if (aLooping) + { + mVoice[ch]->mFlags |= AudioSourceInstance::LOOPING; + } + else + { + mVoice[ch]->mFlags &= ~AudioSourceInstance::LOOPING; + } + FOR_ALL_VOICES_POST + } + + + void Soloud::setVolume(handle aVoiceHandle, float aVolume) + { + FOR_ALL_VOICES_PRE + mVoice[ch]->mVolumeFader.mActive = 0; + setVoiceVolume(ch, aVolume); + FOR_ALL_VOICES_POST + } + + void Soloud::setDelaySamples(handle aVoiceHandle, unsigned int aSamples) + { + FOR_ALL_VOICES_PRE + mVoice[ch]->mDelaySamples = aSamples; + FOR_ALL_VOICES_POST + } + + void Soloud::setVisualizationEnable(bool aEnable) + { + if (aEnable) + { + mFlags |= ENABLE_VISUALIZATION; + } + else + { + mFlags &= ~ENABLE_VISUALIZATION; + } + } + + result Soloud::setSpeakerPosition(unsigned int aChannel, float aX, float aY, float aZ) + { + if (aChannel >= mChannels) + return INVALID_PARAMETER; + m3dSpeakerPosition[3 * aChannel + 0] = aX; + m3dSpeakerPosition[3 * aChannel + 1] = aY; + m3dSpeakerPosition[3 * aChannel + 2] = aZ; + return SO_NO_ERROR; + } + +} diff --git a/src/soloud/src/core/soloud_core_voicegroup.cpp b/src/soloud/src/core/soloud_core_voicegroup.cpp new file mode 100644 index 0000000..7a3a571 --- /dev/null +++ b/src/soloud/src/core/soloud_core_voicegroup.cpp @@ -0,0 +1,255 @@ +/* +SoLoud audio engine +Copyright (c) 2013-2015 Jari Komppa + +This software is provided 'as-is', without any express or implied +warranty. In no event will the authors be held liable for any damages +arising from the use of this software. + +Permission is granted to anyone to use this software for any purpose, +including commercial applications, and to alter it and redistribute it +freely, subject to the following restrictions: + + 1. The origin of this software must not be misrepresented; you must not + claim that you wrote the original software. If you use this software + in a product, an acknowledgment in the product documentation would be + appreciated but is not required. + + 2. Altered source versions must be plainly marked as such, and must not be + misrepresented as being the original software. + + 3. This notice may not be removed or altered from any source + distribution. +*/ + +#include "soloud.h" + +// Voice group operations + +namespace SoLoud +{ + // Create a voice group. Returns 0 if unable (out of voice groups / out of memory) + handle Soloud::createVoiceGroup() + { + lockAudioMutex(); + + unsigned int i; + // Check if there's any deleted voice groups and re-use if found + for (i = 0; i < mVoiceGroupCount; i++) + { + if (mVoiceGroup[i] == NULL) + { + mVoiceGroup[i] = new unsigned int[16]; + if (mVoiceGroup[i] == NULL) + { + unlockAudioMutex(); + return 0; + } + mVoiceGroup[i][0] = 16; + mVoiceGroup[i][1] = 0; + unlockAudioMutex(); + return 0xfffff000 | i; + } + } + if (mVoiceGroupCount == 4096) + { + unlockAudioMutex(); + return 0; + } + unsigned int oldcount = mVoiceGroupCount; + if (mVoiceGroupCount == 0) + { + mVoiceGroupCount = 4; + } + mVoiceGroupCount *= 2; + unsigned int **vg = new unsigned int * [mVoiceGroupCount]; + if (vg == NULL) + { + mVoiceGroupCount = oldcount; + unlockAudioMutex(); + return 0; + } + for (i = 0; i < oldcount; i++) + { + vg[i] = mVoiceGroup[i]; + } + + for (; i < mVoiceGroupCount; i++) + { + vg[i] = NULL; + } + + delete[] mVoiceGroup; + mVoiceGroup = vg; + i = oldcount; + mVoiceGroup[i] = new unsigned int[17]; + if (mVoiceGroup[i] == NULL) + { + unlockAudioMutex(); + return 0; + } + mVoiceGroup[i][0] = 16; + mVoiceGroup[i][1] = 0; + unlockAudioMutex(); + return 0xfffff000 | i; + } + + // Destroy a voice group. + result Soloud::destroyVoiceGroup(handle aVoiceGroupHandle) + { + if (!isVoiceGroup(aVoiceGroupHandle)) + return INVALID_PARAMETER; + int c = aVoiceGroupHandle & 0xfff; + + lockAudioMutex(); + delete[] mVoiceGroup[c]; + mVoiceGroup[c] = NULL; + unlockAudioMutex(); + return SO_NO_ERROR; + } + + // Add a voice handle to a voice group + result Soloud::addVoiceToGroup(handle aVoiceGroupHandle, handle aVoiceHandle) + { + if (!isVoiceGroup(aVoiceGroupHandle)) + return INVALID_PARAMETER; + + // Don't consider adding invalid voice handles as an error, since the voice may just have ended. + if (!isValidVoiceHandle(aVoiceHandle)) + return SO_NO_ERROR; + + trimVoiceGroup(aVoiceGroupHandle); + + int c = aVoiceGroupHandle & 0xfff; + unsigned int i; + + lockAudioMutex(); + + for (i = 1; i < mVoiceGroup[c][0]; i++) + { + if (mVoiceGroup[c][i] == aVoiceHandle) + { + unlockAudioMutex(); + return SO_NO_ERROR; // already there + } + + if (mVoiceGroup[c][i] == 0) + { + mVoiceGroup[c][i] = aVoiceHandle; + mVoiceGroup[c][i + 1] = 0; + + unlockAudioMutex(); + return SO_NO_ERROR; + } + } + + // Full group, allocate more memory + unsigned int * n = new unsigned int[mVoiceGroup[c][0] * 2 + 1]; + if (n == NULL) + { + unlockAudioMutex(); + return OUT_OF_MEMORY; + } + for (i = 0; i < mVoiceGroup[c][0]; i++) + n[i] = mVoiceGroup[c][i]; + n[n[0]] = aVoiceHandle; + n[n[0]+1] = 0; + n[0] *= 2; + delete[] mVoiceGroup[c]; + mVoiceGroup[c] = n; + unlockAudioMutex(); + return SO_NO_ERROR; + } + + // Is this handle a valid voice group? + bool Soloud::isVoiceGroup(handle aVoiceGroupHandle) + { + if ((aVoiceGroupHandle & 0xfffff000) != 0xfffff000) + return 0; + unsigned int c = aVoiceGroupHandle & 0xfff; + if (c >= mVoiceGroupCount) + return 0; + + lockAudioMutex(); + bool res = mVoiceGroup[c] != NULL; + unlockAudioMutex(); + + return res; + } + + // Is this voice group empty? + bool Soloud::isVoiceGroupEmpty(handle aVoiceGroupHandle) + { + // If not a voice group, yeah, we're empty alright.. + if (!isVoiceGroup(aVoiceGroupHandle)) + return 1; + trimVoiceGroup(aVoiceGroupHandle); + int c = aVoiceGroupHandle & 0xfff; + + lockAudioMutex(); + bool res = mVoiceGroup[c][1] == 0; + unlockAudioMutex(); + + return res; + } + + // Remove all non-active voices from group + void Soloud::trimVoiceGroup(handle aVoiceGroupHandle) + { + if (!isVoiceGroup(aVoiceGroupHandle)) + return; + int c = aVoiceGroupHandle & 0xfff; + + lockAudioMutex(); + // empty group + if (mVoiceGroup[c][1] == 0) + { + unlockAudioMutex(); + return; + } + + unsigned int i; + for (i = 1; i < mVoiceGroup[c][0]; i++) + { + if (mVoiceGroup[c][i] == 0) + { + unlockAudioMutex(); + return; + } + + unlockAudioMutex(); + while (!isValidVoiceHandle(mVoiceGroup[c][i])) // function locks mutex, so we need to unlock it before the call + { + lockAudioMutex(); + unsigned int j; + for (j = i; j < mVoiceGroup[c][0] - 1; j++) + { + mVoiceGroup[c][j] = mVoiceGroup[c][j + 1]; + if (mVoiceGroup[c][j] == 0) + break; + } + mVoiceGroup[c][mVoiceGroup[c][0] - 1] = 0; + if (mVoiceGroup[c][i] == 0) + { + unlockAudioMutex(); + return; + } + } + lockAudioMutex(); + } + unlockAudioMutex(); + } + + handle *Soloud::voiceGroupHandleToArray(handle aVoiceGroupHandle) const + { + if ((aVoiceGroupHandle & 0xfffff000) != 0xfffff000) + return NULL; + unsigned int c = aVoiceGroupHandle & 0xfff; + if (c >= mVoiceGroupCount) + return NULL; + if (mVoiceGroup[c] == NULL) + return NULL; + return mVoiceGroup[c] + 1; + } + +} diff --git a/src/soloud/src/core/soloud_core_voiceops.cpp b/src/soloud/src/core/soloud_core_voiceops.cpp new file mode 100644 index 0000000..27a66b5 --- /dev/null +++ b/src/soloud/src/core/soloud_core_voiceops.cpp @@ -0,0 +1,153 @@ +/* +SoLoud audio engine +Copyright (c) 2013-2015 Jari Komppa + +This software is provided 'as-is', without any express or implied +warranty. In no event will the authors be held liable for any damages +arising from the use of this software. + +Permission is granted to anyone to use this software for any purpose, +including commercial applications, and to alter it and redistribute it +freely, subject to the following restrictions: + + 1. The origin of this software must not be misrepresented; you must not + claim that you wrote the original software. If you use this software + in a product, an acknowledgment in the product documentation would be + appreciated but is not required. + + 2. Altered source versions must be plainly marked as such, and must not be + misrepresented as being the original software. + + 3. This notice may not be removed or altered from any source + distribution. +*/ + +#include "soloud.h" + +// Direct voice operations (no mutexes - called from other functions) + +namespace SoLoud +{ + result Soloud::setVoiceRelativePlaySpeed(unsigned int aVoice, float aSpeed) + { + SOLOUD_ASSERT(aVoice < VOICE_COUNT); + SOLOUD_ASSERT(mInsideAudioThreadMutex); + if (aSpeed <= 0.0f) + { + return INVALID_PARAMETER; + } + + if (mVoice[aVoice]) + { + mVoice[aVoice]->mSetRelativePlaySpeed = aSpeed; + updateVoiceRelativePlaySpeed(aVoice); + } + + return 0; + } + + void Soloud::setVoicePause(unsigned int aVoice, int aPause) + { + SOLOUD_ASSERT(aVoice < VOICE_COUNT); + SOLOUD_ASSERT(mInsideAudioThreadMutex); + mActiveVoiceDirty = true; + if (mVoice[aVoice]) + { + mVoice[aVoice]->mPauseScheduler.mActive = 0; + + if (aPause) + { + mVoice[aVoice]->mFlags |= AudioSourceInstance::PAUSED; + } + else + { + mVoice[aVoice]->mFlags &= ~AudioSourceInstance::PAUSED; + } + } + } + + void Soloud::setVoicePan(unsigned int aVoice, float aPan) + { + SOLOUD_ASSERT(aVoice < VOICE_COUNT); + SOLOUD_ASSERT(mInsideAudioThreadMutex); + if (mVoice[aVoice]) + { + mVoice[aVoice]->mPan = aPan; + float l = (float)cos((aPan + 1) * M_PI / 4); + float r = (float)sin((aPan + 1) * M_PI / 4); + mVoice[aVoice]->mChannelVolume[0] = l; + mVoice[aVoice]->mChannelVolume[1] = r; + if (mVoice[aVoice]->mChannels == 4) + { + mVoice[aVoice]->mChannelVolume[2] = l; + mVoice[aVoice]->mChannelVolume[3] = r; + } + if (mVoice[aVoice]->mChannels == 6) + { + mVoice[aVoice]->mChannelVolume[2] = 1.0f / (float)sqrt(2.0f); + mVoice[aVoice]->mChannelVolume[3] = 1; + mVoice[aVoice]->mChannelVolume[4] = l; + mVoice[aVoice]->mChannelVolume[5] = r; + } + if (mVoice[aVoice]->mChannels == 8) + { + mVoice[aVoice]->mChannelVolume[2] = 1.0f / (float)sqrt(2.0f); + mVoice[aVoice]->mChannelVolume[3] = 1; + mVoice[aVoice]->mChannelVolume[4] = l; + mVoice[aVoice]->mChannelVolume[5] = r; + mVoice[aVoice]->mChannelVolume[6] = l; + mVoice[aVoice]->mChannelVolume[7] = r; + } + } + } + + void Soloud::setVoiceVolume(unsigned int aVoice, float aVolume) + { + SOLOUD_ASSERT(aVoice < VOICE_COUNT); + SOLOUD_ASSERT(mInsideAudioThreadMutex); + mActiveVoiceDirty = true; + if (mVoice[aVoice]) + { + mVoice[aVoice]->mSetVolume = aVolume; + updateVoiceVolume(aVoice); + } + } + + void Soloud::stopVoice(unsigned int aVoice) + { + SOLOUD_ASSERT(aVoice < VOICE_COUNT); + SOLOUD_ASSERT(mInsideAudioThreadMutex); + mActiveVoiceDirty = true; + if (mVoice[aVoice]) + { + // Delete via temporary variable to avoid recursion + AudioSourceInstance * v = mVoice[aVoice]; + mVoice[aVoice] = 0; + delete v; + + unsigned int i; + for (i = 0; i < mMaxActiveVoices; i++) + { + if (mResampleDataOwner[i] == v) + { + mResampleDataOwner[i] = NULL; + } + } + } + } + + void Soloud::updateVoiceRelativePlaySpeed(unsigned int aVoice) + { + SOLOUD_ASSERT(aVoice < VOICE_COUNT); + SOLOUD_ASSERT(mInsideAudioThreadMutex); + mVoice[aVoice]->mOverallRelativePlaySpeed = m3dData[aVoice].mDopplerValue * mVoice[aVoice]->mSetRelativePlaySpeed; + mVoice[aVoice]->mSamplerate = mVoice[aVoice]->mBaseSamplerate * mVoice[aVoice]->mOverallRelativePlaySpeed; + } + + void Soloud::updateVoiceVolume(unsigned int aVoice) + { + SOLOUD_ASSERT(aVoice < VOICE_COUNT); + SOLOUD_ASSERT(mInsideAudioThreadMutex); + mVoice[aVoice]->mOverallVolume = mVoice[aVoice]->mSetVolume * m3dData[aVoice].m3dVolume; + } +} diff --git a/src/soloud/src/core/soloud_fader.cpp b/src/soloud/src/core/soloud_fader.cpp new file mode 100644 index 0000000..79f1278 --- /dev/null +++ b/src/soloud/src/core/soloud_fader.cpp @@ -0,0 +1,94 @@ +/* +SoLoud audio engine +Copyright (c) 2013-2014 Jari Komppa + +This software is provided 'as-is', without any express or implied +warranty. In no event will the authors be held liable for any damages +arising from the use of this software. + +Permission is granted to anyone to use this software for any purpose, +including commercial applications, and to alter it and redistribute it +freely, subject to the following restrictions: + + 1. The origin of this software must not be misrepresented; you must not + claim that you wrote the original software. If you use this software + in a product, an acknowledgment in the product documentation would be + appreciated but is not required. + + 2. Altered source versions must be plainly marked as such, and must not be + misrepresented as being the original software. + + 3. This notice may not be removed or altered from any source + distribution. +*/ + +#include "soloud.h" + +namespace SoLoud +{ + Fader::Fader() + { + mCurrent = mFrom = mTo = mDelta = 0; + mTime = mStartTime = mEndTime = 0; + mActive = 0; + } + + void Fader::set(float aFrom, float aTo, double aTime, double aStartTime) + { + mCurrent = mFrom; + mFrom = aFrom; + mTo = aTo; + mTime = aTime; + mStartTime = aStartTime; + mDelta = aTo - aFrom; + mEndTime = mStartTime + mTime; + mActive = 1; + } + + void Fader::setLFO(float aFrom, float aTo, double aTime, double aStartTime) + { + mActive = 2; + mCurrent = 0; + mFrom = aFrom; + mTo = aTo; + mTime = aTime; + mDelta = (aTo - aFrom) / 2; + if (mDelta < 0) mDelta = -mDelta; + mStartTime = aStartTime; + mEndTime = (float)M_PI * 2 / mTime; + } + + float Fader::get(double aCurrentTime) + { + if (mActive == 2) + { + // LFO mode + if (mStartTime > aCurrentTime) + { + // Time rolled over. + mStartTime = aCurrentTime; + } + double t = aCurrentTime - mStartTime; + return (float)(sin(t * mEndTime) * mDelta + (mFrom + mDelta)); + + } + if (mStartTime > aCurrentTime) + { + // Time rolled over. + // Figure out where we were.. + float p = (mCurrent - mFrom) / mDelta; // 0..1 + mFrom = mCurrent; + mStartTime = aCurrentTime; + mTime = mTime * (1 - p); // time left + mDelta = mTo - mFrom; + mEndTime = mStartTime + mTime; + } + if (aCurrentTime > mEndTime) + { + mActive = -1; + return mTo; + } + mCurrent = (float)(mFrom + mDelta * ((aCurrentTime - mStartTime) / mTime)); + return mCurrent; + } +}; diff --git a/src/soloud/src/core/soloud_fft.cpp b/src/soloud/src/core/soloud_fft.cpp new file mode 100644 index 0000000..fb87be1 --- /dev/null +++ b/src/soloud/src/core/soloud_fft.cpp @@ -0,0 +1,2474 @@ +/* +SoLoud audio engine +Copyright (c) 2013-2018 Jari Komppa + +This software is provided 'as-is', without any express or implied +warranty. In no event will the authors be held liable for any damages +arising from the use of this software. + +Permission is granted to anyone to use this software for any purpose, +including commercial applications, and to alter it and redistribute it +freely, subject to the following restrictions: + + 1. The origin of this software must not be misrepresented; you must not + claim that you wrote the original software. If you use this software + in a product, an acknowledgment in the product documentation would be + appreciated but is not required. + + 2. Altered source versions must be plainly marked as such, and must not be + misrepresented as being the original software. + + 3. This notice may not be removed or altered from any source + distribution. +*/ + +// FFT based on fftreal by Laurent de Soras, under WTFPL + +#include "soloud.h" +#include "soloud_fft.h" +#include + +namespace fftimpl +{ +// Based on http://www.kurims.kyoto-u.ac.jp/~ooura/fft.html +// "Copyright Takuya OOURA, 1996-2001 +// You may use, copy, modify and distribute this code for any purpose +// (include commercial use) and without fee. Please refer to this package +// when you modify this code." + + +#ifndef M_PI_2 +#define M_PI_2 1.570796326794896619231321691639751442098584699687f +#endif +#ifndef WR5000 /* cos(M_PI_2*0.5000) */ +#define WR5000 0.707106781186547524400844362104849039284835937688f +#endif +#ifndef WR2500 /* cos(M_PI_2*0.2500) */ +#define WR2500 0.923879532511286756128183189396788286822416625863f +#endif +#ifndef WI2500 /* sin(M_PI_2*0.2500) */ +#define WI2500 0.382683432365089771728459984030398866761344562485f +#endif +#ifndef WR1250 /* cos(M_PI_2*0.1250) */ +#define WR1250 0.980785280403230449126182236134239036973933730893f +#endif +#ifndef WI1250 /* sin(M_PI_2*0.1250) */ +#define WI1250 0.195090322016128267848284868477022240927691617751f +#endif +#ifndef WR3750 /* cos(M_PI_2*0.3750) */ +#define WR3750 0.831469612302545237078788377617905756738560811987f +#endif +#ifndef WI3750 /* sin(M_PI_2*0.3750) */ +#define WI3750 0.555570233019602224742830813948532874374937190754f +#endif + +#ifndef CDFT_LOOP_DIV /* control of the CDFT's speed & tolerance */ +#define CDFT_LOOP_DIV 32 +#endif + +#ifndef RDFT_LOOP_DIV /* control of the RDFT's speed & tolerance */ +#define RDFT_LOOP_DIV 64 +#endif + +#ifndef DCST_LOOP_DIV /* control of the DCT,DST's speed & tolerance */ +#define DCST_LOOP_DIV 64 +#endif + + void bitrv2(int n, float *a) + { + int j0, k0, j1, k1, l, m, i, j, k, nh; + float xr, xi, yr, yi; + + m = 4; + for (l = n >> 2; l > 8; l >>= 2) { + m <<= 1; + } + nh = n >> 1; + if (l == 8) { + j0 = 0; + for (k0 = 0; k0 < m; k0 += 4) { + k = k0; + for (j = j0; j < j0 + k0; j += 4) { + xr = a[j]; + xi = a[j + 1]; + yr = a[k]; + yi = a[k + 1]; + a[j] = yr; + a[j + 1] = yi; + a[k] = xr; + a[k + 1] = xi; + j1 = j + m; + k1 = k + 2 * m; + xr = a[j1]; + xi = a[j1 + 1]; + yr = a[k1]; + yi = a[k1 + 1]; + a[j1] = yr; + a[j1 + 1] = yi; + a[k1] = xr; + a[k1 + 1] = xi; + j1 += m; + k1 -= m; + xr = a[j1]; + xi = a[j1 + 1]; + yr = a[k1]; + yi = a[k1 + 1]; + a[j1] = yr; + a[j1 + 1] = yi; + a[k1] = xr; + a[k1 + 1] = xi; + j1 += m; + k1 += 2 * m; + xr = a[j1]; + xi = a[j1 + 1]; + yr = a[k1]; + yi = a[k1 + 1]; + a[j1] = yr; + a[j1 + 1] = yi; + a[k1] = xr; + a[k1 + 1] = xi; + j1 += nh; + k1 += 2; + xr = a[j1]; + xi = a[j1 + 1]; + yr = a[k1]; + yi = a[k1 + 1]; + a[j1] = yr; + a[j1 + 1] = yi; + a[k1] = xr; + a[k1 + 1] = xi; + j1 -= m; + k1 -= 2 * m; + xr = a[j1]; + xi = a[j1 + 1]; + yr = a[k1]; + yi = a[k1 + 1]; + a[j1] = yr; + a[j1 + 1] = yi; + a[k1] = xr; + a[k1 + 1] = xi; + j1 -= m; + k1 += m; + xr = a[j1]; + xi = a[j1 + 1]; + yr = a[k1]; + yi = a[k1 + 1]; + a[j1] = yr; + a[j1 + 1] = yi; + a[k1] = xr; + a[k1 + 1] = xi; + j1 -= m; + k1 -= 2 * m; + xr = a[j1]; + xi = a[j1 + 1]; + yr = a[k1]; + yi = a[k1 + 1]; + a[j1] = yr; + a[j1 + 1] = yi; + a[k1] = xr; + a[k1 + 1] = xi; + j1 += 2; + k1 += nh; + xr = a[j1]; + xi = a[j1 + 1]; + yr = a[k1]; + yi = a[k1 + 1]; + a[j1] = yr; + a[j1 + 1] = yi; + a[k1] = xr; + a[k1 + 1] = xi; + j1 += m; + k1 += 2 * m; + xr = a[j1]; + xi = a[j1 + 1]; + yr = a[k1]; + yi = a[k1 + 1]; + a[j1] = yr; + a[j1 + 1] = yi; + a[k1] = xr; + a[k1 + 1] = xi; + j1 += m; + k1 -= m; + xr = a[j1]; + xi = a[j1 + 1]; + yr = a[k1]; + yi = a[k1 + 1]; + a[j1] = yr; + a[j1 + 1] = yi; + a[k1] = xr; + a[k1 + 1] = xi; + j1 += m; + k1 += 2 * m; + xr = a[j1]; + xi = a[j1 + 1]; + yr = a[k1]; + yi = a[k1 + 1]; + a[j1] = yr; + a[j1 + 1] = yi; + a[k1] = xr; + a[k1 + 1] = xi; + j1 -= nh; + k1 -= 2; + xr = a[j1]; + xi = a[j1 + 1]; + yr = a[k1]; + yi = a[k1 + 1]; + a[j1] = yr; + a[j1 + 1] = yi; + a[k1] = xr; + a[k1 + 1] = xi; + j1 -= m; + k1 -= 2 * m; + xr = a[j1]; + xi = a[j1 + 1]; + yr = a[k1]; + yi = a[k1 + 1]; + a[j1] = yr; + a[j1 + 1] = yi; + a[k1] = xr; + a[k1 + 1] = xi; + j1 -= m; + k1 += m; + xr = a[j1]; + xi = a[j1 + 1]; + yr = a[k1]; + yi = a[k1 + 1]; + a[j1] = yr; + a[j1 + 1] = yi; + a[k1] = xr; + a[k1 + 1] = xi; + j1 -= m; + k1 -= 2 * m; + xr = a[j1]; + xi = a[j1 + 1]; + yr = a[k1]; + yi = a[k1 + 1]; + a[j1] = yr; + a[j1 + 1] = yi; + a[k1] = xr; + a[k1 + 1] = xi; + for (i = nh >> 1; i > (k ^= i); i >>= 1); + } + k1 = j0 + k0; + j1 = k1 + 2; + k1 += nh; + xr = a[j1]; + xi = a[j1 + 1]; + yr = a[k1]; + yi = a[k1 + 1]; + a[j1] = yr; + a[j1 + 1] = yi; + a[k1] = xr; + a[k1 + 1] = xi; + j1 += m; + k1 += 2 * m; + xr = a[j1]; + xi = a[j1 + 1]; + yr = a[k1]; + yi = a[k1 + 1]; + a[j1] = yr; + a[j1 + 1] = yi; + a[k1] = xr; + a[k1 + 1] = xi; + j1 += m; + k1 -= m; + xr = a[j1]; + xi = a[j1 + 1]; + yr = a[k1]; + yi = a[k1 + 1]; + a[j1] = yr; + a[j1 + 1] = yi; + a[k1] = xr; + a[k1 + 1] = xi; + j1 -= 2; + k1 -= nh; + xr = a[j1]; + xi = a[j1 + 1]; + yr = a[k1]; + yi = a[k1 + 1]; + a[j1] = yr; + a[j1 + 1] = yi; + a[k1] = xr; + a[k1 + 1] = xi; + j1 += nh + 2; + k1 += nh + 2; + xr = a[j1]; + xi = a[j1 + 1]; + yr = a[k1]; + yi = a[k1 + 1]; + a[j1] = yr; + a[j1 + 1] = yi; + a[k1] = xr; + a[k1 + 1] = xi; + j1 -= nh - m; + k1 += 2 * m - 2; + xr = a[j1]; + xi = a[j1 + 1]; + yr = a[k1]; + yi = a[k1 + 1]; + a[j1] = yr; + a[j1 + 1] = yi; + a[k1] = xr; + a[k1 + 1] = xi; + for (i = nh >> 1; i > (j0 ^= i); i >>= 1); + } + } + else { + j0 = 0; + for (k0 = 0; k0 < m; k0 += 4) { + k = k0; + for (j = j0; j < j0 + k0; j += 4) { + xr = a[j]; + xi = a[j + 1]; + yr = a[k]; + yi = a[k + 1]; + a[j] = yr; + a[j + 1] = yi; + a[k] = xr; + a[k + 1] = xi; + j1 = j + m; + k1 = k + m; + xr = a[j1]; + xi = a[j1 + 1]; + yr = a[k1]; + yi = a[k1 + 1]; + a[j1] = yr; + a[j1 + 1] = yi; + a[k1] = xr; + a[k1 + 1] = xi; + j1 += nh; + k1 += 2; + xr = a[j1]; + xi = a[j1 + 1]; + yr = a[k1]; + yi = a[k1 + 1]; + a[j1] = yr; + a[j1 + 1] = yi; + a[k1] = xr; + a[k1 + 1] = xi; + j1 -= m; + k1 -= m; + xr = a[j1]; + xi = a[j1 + 1]; + yr = a[k1]; + yi = a[k1 + 1]; + a[j1] = yr; + a[j1 + 1] = yi; + a[k1] = xr; + a[k1 + 1] = xi; + j1 += 2; + k1 += nh; + xr = a[j1]; + xi = a[j1 + 1]; + yr = a[k1]; + yi = a[k1 + 1]; + a[j1] = yr; + a[j1 + 1] = yi; + a[k1] = xr; + a[k1 + 1] = xi; + j1 += m; + k1 += m; + xr = a[j1]; + xi = a[j1 + 1]; + yr = a[k1]; + yi = a[k1 + 1]; + a[j1] = yr; + a[j1 + 1] = yi; + a[k1] = xr; + a[k1 + 1] = xi; + j1 -= nh; + k1 -= 2; + xr = a[j1]; + xi = a[j1 + 1]; + yr = a[k1]; + yi = a[k1 + 1]; + a[j1] = yr; + a[j1 + 1] = yi; + a[k1] = xr; + a[k1 + 1] = xi; + j1 -= m; + k1 -= m; + xr = a[j1]; + xi = a[j1 + 1]; + yr = a[k1]; + yi = a[k1 + 1]; + a[j1] = yr; + a[j1 + 1] = yi; + a[k1] = xr; + a[k1 + 1] = xi; + for (i = nh >> 1; i > (k ^= i); i >>= 1); + } + k1 = j0 + k0; + j1 = k1 + 2; + k1 += nh; + xr = a[j1]; + xi = a[j1 + 1]; + yr = a[k1]; + yi = a[k1 + 1]; + a[j1] = yr; + a[j1 + 1] = yi; + a[k1] = xr; + a[k1 + 1] = xi; + j1 += m; + k1 += m; + xr = a[j1]; + xi = a[j1 + 1]; + yr = a[k1]; + yi = a[k1 + 1]; + a[j1] = yr; + a[j1 + 1] = yi; + a[k1] = xr; + a[k1 + 1] = xi; + for (i = nh >> 1; i > (j0 ^= i); i >>= 1); + } + } + } + + + void bitrv2conj(int n, float *a) + { + int j0, k0, j1, k1, l, m, i, j, k, nh; + float xr, xi, yr, yi; + + m = 4; + for (l = n >> 2; l > 8; l >>= 2) { + m <<= 1; + } + nh = n >> 1; + if (l == 8) { + j0 = 0; + for (k0 = 0; k0 < m; k0 += 4) { + k = k0; + for (j = j0; j < j0 + k0; j += 4) { + xr = a[j]; + xi = -a[j + 1]; + yr = a[k]; + yi = -a[k + 1]; + a[j] = yr; + a[j + 1] = yi; + a[k] = xr; + a[k + 1] = xi; + j1 = j + m; + k1 = k + 2 * m; + xr = a[j1]; + xi = -a[j1 + 1]; + yr = a[k1]; + yi = -a[k1 + 1]; + a[j1] = yr; + a[j1 + 1] = yi; + a[k1] = xr; + a[k1 + 1] = xi; + j1 += m; + k1 -= m; + xr = a[j1]; + xi = -a[j1 + 1]; + yr = a[k1]; + yi = -a[k1 + 1]; + a[j1] = yr; + a[j1 + 1] = yi; + a[k1] = xr; + a[k1 + 1] = xi; + j1 += m; + k1 += 2 * m; + xr = a[j1]; + xi = -a[j1 + 1]; + yr = a[k1]; + yi = -a[k1 + 1]; + a[j1] = yr; + a[j1 + 1] = yi; + a[k1] = xr; + a[k1 + 1] = xi; + j1 += nh; + k1 += 2; + xr = a[j1]; + xi = -a[j1 + 1]; + yr = a[k1]; + yi = -a[k1 + 1]; + a[j1] = yr; + a[j1 + 1] = yi; + a[k1] = xr; + a[k1 + 1] = xi; + j1 -= m; + k1 -= 2 * m; + xr = a[j1]; + xi = -a[j1 + 1]; + yr = a[k1]; + yi = -a[k1 + 1]; + a[j1] = yr; + a[j1 + 1] = yi; + a[k1] = xr; + a[k1 + 1] = xi; + j1 -= m; + k1 += m; + xr = a[j1]; + xi = -a[j1 + 1]; + yr = a[k1]; + yi = -a[k1 + 1]; + a[j1] = yr; + a[j1 + 1] = yi; + a[k1] = xr; + a[k1 + 1] = xi; + j1 -= m; + k1 -= 2 * m; + xr = a[j1]; + xi = -a[j1 + 1]; + yr = a[k1]; + yi = -a[k1 + 1]; + a[j1] = yr; + a[j1 + 1] = yi; + a[k1] = xr; + a[k1 + 1] = xi; + j1 += 2; + k1 += nh; + xr = a[j1]; + xi = -a[j1 + 1]; + yr = a[k1]; + yi = -a[k1 + 1]; + a[j1] = yr; + a[j1 + 1] = yi; + a[k1] = xr; + a[k1 + 1] = xi; + j1 += m; + k1 += 2 * m; + xr = a[j1]; + xi = -a[j1 + 1]; + yr = a[k1]; + yi = -a[k1 + 1]; + a[j1] = yr; + a[j1 + 1] = yi; + a[k1] = xr; + a[k1 + 1] = xi; + j1 += m; + k1 -= m; + xr = a[j1]; + xi = -a[j1 + 1]; + yr = a[k1]; + yi = -a[k1 + 1]; + a[j1] = yr; + a[j1 + 1] = yi; + a[k1] = xr; + a[k1 + 1] = xi; + j1 += m; + k1 += 2 * m; + xr = a[j1]; + xi = -a[j1 + 1]; + yr = a[k1]; + yi = -a[k1 + 1]; + a[j1] = yr; + a[j1 + 1] = yi; + a[k1] = xr; + a[k1 + 1] = xi; + j1 -= nh; + k1 -= 2; + xr = a[j1]; + xi = -a[j1 + 1]; + yr = a[k1]; + yi = -a[k1 + 1]; + a[j1] = yr; + a[j1 + 1] = yi; + a[k1] = xr; + a[k1 + 1] = xi; + j1 -= m; + k1 -= 2 * m; + xr = a[j1]; + xi = -a[j1 + 1]; + yr = a[k1]; + yi = -a[k1 + 1]; + a[j1] = yr; + a[j1 + 1] = yi; + a[k1] = xr; + a[k1 + 1] = xi; + j1 -= m; + k1 += m; + xr = a[j1]; + xi = -a[j1 + 1]; + yr = a[k1]; + yi = -a[k1 + 1]; + a[j1] = yr; + a[j1 + 1] = yi; + a[k1] = xr; + a[k1 + 1] = xi; + j1 -= m; + k1 -= 2 * m; + xr = a[j1]; + xi = -a[j1 + 1]; + yr = a[k1]; + yi = -a[k1 + 1]; + a[j1] = yr; + a[j1 + 1] = yi; + a[k1] = xr; + a[k1 + 1] = xi; + for (i = nh >> 1; i > (k ^= i); i >>= 1); + } + k1 = j0 + k0; + j1 = k1 + 2; + k1 += nh; + a[j1 - 1] = -a[j1 - 1]; + xr = a[j1]; + xi = -a[j1 + 1]; + yr = a[k1]; + yi = -a[k1 + 1]; + a[j1] = yr; + a[j1 + 1] = yi; + a[k1] = xr; + a[k1 + 1] = xi; + a[k1 + 3] = -a[k1 + 3]; + j1 += m; + k1 += 2 * m; + xr = a[j1]; + xi = -a[j1 + 1]; + yr = a[k1]; + yi = -a[k1 + 1]; + a[j1] = yr; + a[j1 + 1] = yi; + a[k1] = xr; + a[k1 + 1] = xi; + j1 += m; + k1 -= m; + xr = a[j1]; + xi = -a[j1 + 1]; + yr = a[k1]; + yi = -a[k1 + 1]; + a[j1] = yr; + a[j1 + 1] = yi; + a[k1] = xr; + a[k1 + 1] = xi; + j1 -= 2; + k1 -= nh; + xr = a[j1]; + xi = -a[j1 + 1]; + yr = a[k1]; + yi = -a[k1 + 1]; + a[j1] = yr; + a[j1 + 1] = yi; + a[k1] = xr; + a[k1 + 1] = xi; + j1 += nh + 2; + k1 += nh + 2; + xr = a[j1]; + xi = -a[j1 + 1]; + yr = a[k1]; + yi = -a[k1 + 1]; + a[j1] = yr; + a[j1 + 1] = yi; + a[k1] = xr; + a[k1 + 1] = xi; + j1 -= nh - m; + k1 += 2 * m - 2; + a[j1 - 1] = -a[j1 - 1]; + xr = a[j1]; + xi = -a[j1 + 1]; + yr = a[k1]; + yi = -a[k1 + 1]; + a[j1] = yr; + a[j1 + 1] = yi; + a[k1] = xr; + a[k1 + 1] = xi; + a[k1 + 3] = -a[k1 + 3]; + for (i = nh >> 1; i > (j0 ^= i); i >>= 1); + } + } + else { + j0 = 0; + for (k0 = 0; k0 < m; k0 += 4) { + k = k0; + for (j = j0; j < j0 + k0; j += 4) { + xr = a[j]; + xi = -a[j + 1]; + yr = a[k]; + yi = -a[k + 1]; + a[j] = yr; + a[j + 1] = yi; + a[k] = xr; + a[k + 1] = xi; + j1 = j + m; + k1 = k + m; + xr = a[j1]; + xi = -a[j1 + 1]; + yr = a[k1]; + yi = -a[k1 + 1]; + a[j1] = yr; + a[j1 + 1] = yi; + a[k1] = xr; + a[k1 + 1] = xi; + j1 += nh; + k1 += 2; + xr = a[j1]; + xi = -a[j1 + 1]; + yr = a[k1]; + yi = -a[k1 + 1]; + a[j1] = yr; + a[j1 + 1] = yi; + a[k1] = xr; + a[k1 + 1] = xi; + j1 -= m; + k1 -= m; + xr = a[j1]; + xi = -a[j1 + 1]; + yr = a[k1]; + yi = -a[k1 + 1]; + a[j1] = yr; + a[j1 + 1] = yi; + a[k1] = xr; + a[k1 + 1] = xi; + j1 += 2; + k1 += nh; + xr = a[j1]; + xi = -a[j1 + 1]; + yr = a[k1]; + yi = -a[k1 + 1]; + a[j1] = yr; + a[j1 + 1] = yi; + a[k1] = xr; + a[k1 + 1] = xi; + j1 += m; + k1 += m; + xr = a[j1]; + xi = -a[j1 + 1]; + yr = a[k1]; + yi = -a[k1 + 1]; + a[j1] = yr; + a[j1 + 1] = yi; + a[k1] = xr; + a[k1 + 1] = xi; + j1 -= nh; + k1 -= 2; + xr = a[j1]; + xi = -a[j1 + 1]; + yr = a[k1]; + yi = -a[k1 + 1]; + a[j1] = yr; + a[j1 + 1] = yi; + a[k1] = xr; + a[k1 + 1] = xi; + j1 -= m; + k1 -= m; + xr = a[j1]; + xi = -a[j1 + 1]; + yr = a[k1]; + yi = -a[k1 + 1]; + a[j1] = yr; + a[j1 + 1] = yi; + a[k1] = xr; + a[k1 + 1] = xi; + for (i = nh >> 1; i > (k ^= i); i >>= 1); + } + k1 = j0 + k0; + j1 = k1 + 2; + k1 += nh; + a[j1 - 1] = -a[j1 - 1]; + xr = a[j1]; + xi = -a[j1 + 1]; + yr = a[k1]; + yi = -a[k1 + 1]; + a[j1] = yr; + a[j1 + 1] = yi; + a[k1] = xr; + a[k1 + 1] = xi; + a[k1 + 3] = -a[k1 + 3]; + j1 += m; + k1 += m; + a[j1 - 1] = -a[j1 - 1]; + xr = a[j1]; + xi = -a[j1 + 1]; + yr = a[k1]; + yi = -a[k1 + 1]; + a[j1] = yr; + a[j1 + 1] = yi; + a[k1] = xr; + a[k1 + 1] = xi; + a[k1 + 3] = -a[k1 + 3]; + for (i = nh >> 1; i > (j0 ^= i); i >>= 1); + } + } + } + + + void bitrv216(float *a) + { + float x1r, x1i, x2r, x2i, x3r, x3i, x4r, x4i, + x5r, x5i, x7r, x7i, x8r, x8i, x10r, x10i, + x11r, x11i, x12r, x12i, x13r, x13i, x14r, x14i; + + x1r = a[2]; + x1i = a[3]; + x2r = a[4]; + x2i = a[5]; + x3r = a[6]; + x3i = a[7]; + x4r = a[8]; + x4i = a[9]; + x5r = a[10]; + x5i = a[11]; + x7r = a[14]; + x7i = a[15]; + x8r = a[16]; + x8i = a[17]; + x10r = a[20]; + x10i = a[21]; + x11r = a[22]; + x11i = a[23]; + x12r = a[24]; + x12i = a[25]; + x13r = a[26]; + x13i = a[27]; + x14r = a[28]; + x14i = a[29]; + a[2] = x8r; + a[3] = x8i; + a[4] = x4r; + a[5] = x4i; + a[6] = x12r; + a[7] = x12i; + a[8] = x2r; + a[9] = x2i; + a[10] = x10r; + a[11] = x10i; + a[14] = x14r; + a[15] = x14i; + a[16] = x1r; + a[17] = x1i; + a[20] = x5r; + a[21] = x5i; + a[22] = x13r; + a[23] = x13i; + a[24] = x3r; + a[25] = x3i; + a[26] = x11r; + a[27] = x11i; + a[28] = x7r; + a[29] = x7i; + } + + + void bitrv216neg(float *a) + { + float x1r, x1i, x2r, x2i, x3r, x3i, x4r, x4i, + x5r, x5i, x6r, x6i, x7r, x7i, x8r, x8i, + x9r, x9i, x10r, x10i, x11r, x11i, x12r, x12i, + x13r, x13i, x14r, x14i, x15r, x15i; + + x1r = a[2]; + x1i = a[3]; + x2r = a[4]; + x2i = a[5]; + x3r = a[6]; + x3i = a[7]; + x4r = a[8]; + x4i = a[9]; + x5r = a[10]; + x5i = a[11]; + x6r = a[12]; + x6i = a[13]; + x7r = a[14]; + x7i = a[15]; + x8r = a[16]; + x8i = a[17]; + x9r = a[18]; + x9i = a[19]; + x10r = a[20]; + x10i = a[21]; + x11r = a[22]; + x11i = a[23]; + x12r = a[24]; + x12i = a[25]; + x13r = a[26]; + x13i = a[27]; + x14r = a[28]; + x14i = a[29]; + x15r = a[30]; + x15i = a[31]; + a[2] = x15r; + a[3] = x15i; + a[4] = x7r; + a[5] = x7i; + a[6] = x11r; + a[7] = x11i; + a[8] = x3r; + a[9] = x3i; + a[10] = x13r; + a[11] = x13i; + a[12] = x5r; + a[13] = x5i; + a[14] = x9r; + a[15] = x9i; + a[16] = x1r; + a[17] = x1i; + a[18] = x14r; + a[19] = x14i; + a[20] = x6r; + a[21] = x6i; + a[22] = x10r; + a[23] = x10i; + a[24] = x2r; + a[25] = x2i; + a[26] = x12r; + a[27] = x12i; + a[28] = x4r; + a[29] = x4i; + a[30] = x8r; + a[31] = x8i; + } + + + void bitrv208(float *a) + { + float x1r, x1i, x3r, x3i, x4r, x4i, x6r, x6i; + + x1r = a[2]; + x1i = a[3]; + x3r = a[6]; + x3i = a[7]; + x4r = a[8]; + x4i = a[9]; + x6r = a[12]; + x6i = a[13]; + a[2] = x4r; + a[3] = x4i; + a[6] = x6r; + a[7] = x6i; + a[8] = x1r; + a[9] = x1i; + a[12] = x3r; + a[13] = x3i; + } + + + void bitrv208neg(float *a) + { + float x1r, x1i, x2r, x2i, x3r, x3i, x4r, x4i, + x5r, x5i, x6r, x6i, x7r, x7i; + + x1r = a[2]; + x1i = a[3]; + x2r = a[4]; + x2i = a[5]; + x3r = a[6]; + x3i = a[7]; + x4r = a[8]; + x4i = a[9]; + x5r = a[10]; + x5i = a[11]; + x6r = a[12]; + x6i = a[13]; + x7r = a[14]; + x7i = a[15]; + a[2] = x7r; + a[3] = x7i; + a[4] = x3r; + a[5] = x3i; + a[6] = x5r; + a[7] = x5i; + a[8] = x1r; + a[9] = x1i; + a[10] = x6r; + a[11] = x6i; + a[12] = x2r; + a[13] = x2i; + a[14] = x4r; + a[15] = x4i; + } + + void cftb1st(int n, float *a) + { + int i, i0, j, j0, j1, j2, j3, m, mh; + float ew, w1r, w1i, wk1r, wk1i, wk3r, wk3i, + wd1r, wd1i, wd3r, wd3i, ss1, ss3; + float x0r, x0i, x1r, x1i, x2r, x2i, x3r, x3i; + + mh = n >> 3; + m = 2 * mh; + j1 = m; + j2 = j1 + m; + j3 = j2 + m; + x0r = a[0] + a[j2]; + x0i = -a[1] - a[j2 + 1]; + x1r = a[0] - a[j2]; + x1i = -a[1] + a[j2 + 1]; + x2r = a[j1] + a[j3]; + x2i = a[j1 + 1] + a[j3 + 1]; + x3r = a[j1] - a[j3]; + x3i = a[j1 + 1] - a[j3 + 1]; + a[0] = x0r + x2r; + a[1] = x0i - x2i; + a[j1] = x0r - x2r; + a[j1 + 1] = x0i + x2i; + a[j2] = x1r + x3i; + a[j2 + 1] = x1i + x3r; + a[j3] = x1r - x3i; + a[j3 + 1] = x1i - x3r; + wd1r = 1; + wd1i = 0; + wd3r = 1; + wd3i = 0; + ew = M_PI_2 / m; + w1r = (float)cos(2 * ew); + w1i = (float)sin(2 * ew); + wk1r = w1r; + wk1i = w1i; + ss1 = 2 * w1i; + wk3i = 2 * ss1 * wk1r; + wk3r = wk1r - wk3i * wk1i; + wk3i = wk1i - wk3i * wk1r; + ss3 = 2 * wk3i; + i = 0; + for (;;) { + i0 = i + 4 * CDFT_LOOP_DIV; + if (i0 > mh - 4) { + i0 = mh - 4; + } + for (j = i + 2; j < i0; j += 4) { + wd1r -= ss1 * wk1i; + wd1i += ss1 * wk1r; + wd3r -= ss3 * wk3i; + wd3i += ss3 * wk3r; + j1 = j + m; + j2 = j1 + m; + j3 = j2 + m; + x0r = a[j] + a[j2]; + x0i = -a[j + 1] - a[j2 + 1]; + x1r = a[j] - a[j2]; + x1i = -a[j + 1] + a[j2 + 1]; + x2r = a[j1] + a[j3]; + x2i = a[j1 + 1] + a[j3 + 1]; + x3r = a[j1] - a[j3]; + x3i = a[j1 + 1] - a[j3 + 1]; + a[j] = x0r + x2r; + a[j + 1] = x0i - x2i; + a[j1] = x0r - x2r; + a[j1 + 1] = x0i + x2i; + x0r = x1r + x3i; + x0i = x1i + x3r; + a[j2] = wk1r * x0r - wk1i * x0i; + a[j2 + 1] = wk1r * x0i + wk1i * x0r; + x0r = x1r - x3i; + x0i = x1i - x3r; + a[j3] = wk3r * x0r + wk3i * x0i; + a[j3 + 1] = wk3r * x0i - wk3i * x0r; + x0r = a[j + 2] + a[j2 + 2]; + x0i = -a[j + 3] - a[j2 + 3]; + x1r = a[j + 2] - a[j2 + 2]; + x1i = -a[j + 3] + a[j2 + 3]; + x2r = a[j1 + 2] + a[j3 + 2]; + x2i = a[j1 + 3] + a[j3 + 3]; + x3r = a[j1 + 2] - a[j3 + 2]; + x3i = a[j1 + 3] - a[j3 + 3]; + a[j + 2] = x0r + x2r; + a[j + 3] = x0i - x2i; + a[j1 + 2] = x0r - x2r; + a[j1 + 3] = x0i + x2i; + x0r = x1r + x3i; + x0i = x1i + x3r; + a[j2 + 2] = wd1r * x0r - wd1i * x0i; + a[j2 + 3] = wd1r * x0i + wd1i * x0r; + x0r = x1r - x3i; + x0i = x1i - x3r; + a[j3 + 2] = wd3r * x0r + wd3i * x0i; + a[j3 + 3] = wd3r * x0i - wd3i * x0r; + j0 = m - j; + j1 = j0 + m; + j2 = j1 + m; + j3 = j2 + m; + x0r = a[j0] + a[j2]; + x0i = -a[j0 + 1] - a[j2 + 1]; + x1r = a[j0] - a[j2]; + x1i = -a[j0 + 1] + a[j2 + 1]; + x2r = a[j1] + a[j3]; + x2i = a[j1 + 1] + a[j3 + 1]; + x3r = a[j1] - a[j3]; + x3i = a[j1 + 1] - a[j3 + 1]; + a[j0] = x0r + x2r; + a[j0 + 1] = x0i - x2i; + a[j1] = x0r - x2r; + a[j1 + 1] = x0i + x2i; + x0r = x1r + x3i; + x0i = x1i + x3r; + a[j2] = wk1i * x0r - wk1r * x0i; + a[j2 + 1] = wk1i * x0i + wk1r * x0r; + x0r = x1r - x3i; + x0i = x1i - x3r; + a[j3] = wk3i * x0r + wk3r * x0i; + a[j3 + 1] = wk3i * x0i - wk3r * x0r; + x0r = a[j0 - 2] + a[j2 - 2]; + x0i = -a[j0 - 1] - a[j2 - 1]; + x1r = a[j0 - 2] - a[j2 - 2]; + x1i = -a[j0 - 1] + a[j2 - 1]; + x2r = a[j1 - 2] + a[j3 - 2]; + x2i = a[j1 - 1] + a[j3 - 1]; + x3r = a[j1 - 2] - a[j3 - 2]; + x3i = a[j1 - 1] - a[j3 - 1]; + a[j0 - 2] = x0r + x2r; + a[j0 - 1] = x0i - x2i; + a[j1 - 2] = x0r - x2r; + a[j1 - 1] = x0i + x2i; + x0r = x1r + x3i; + x0i = x1i + x3r; + a[j2 - 2] = wd1i * x0r - wd1r * x0i; + a[j2 - 1] = wd1i * x0i + wd1r * x0r; + x0r = x1r - x3i; + x0i = x1i - x3r; + a[j3 - 2] = wd3i * x0r + wd3r * x0i; + a[j3 - 1] = wd3i * x0i - wd3r * x0r; + wk1r -= ss1 * wd1i; + wk1i += ss1 * wd1r; + wk3r -= ss3 * wd3i; + wk3i += ss3 * wd3r; + } + if (i0 == mh - 4) { + break; + } + wd1r = (float)cos(ew * i0); + wd1i = (float)sin(ew * i0); + wd3i = 4 * wd1i * wd1r; + wd3r = wd1r - wd3i * wd1i; + wd3i = wd1i - wd3i * wd1r; + wk1r = w1r * wd1r - w1i * wd1i; + wk1i = w1r * wd1i + w1i * wd1r; + wk3i = 4 * wk1i * wk1r; + wk3r = wk1r - wk3i * wk1i; + wk3i = wk1i - wk3i * wk1r; + i = i0; + } + wd1r = WR5000; + j0 = mh; + j1 = j0 + m; + j2 = j1 + m; + j3 = j2 + m; + x0r = a[j0 - 2] + a[j2 - 2]; + x0i = -a[j0 - 1] - a[j2 - 1]; + x1r = a[j0 - 2] - a[j2 - 2]; + x1i = -a[j0 - 1] + a[j2 - 1]; + x2r = a[j1 - 2] + a[j3 - 2]; + x2i = a[j1 - 1] + a[j3 - 1]; + x3r = a[j1 - 2] - a[j3 - 2]; + x3i = a[j1 - 1] - a[j3 - 1]; + a[j0 - 2] = x0r + x2r; + a[j0 - 1] = x0i - x2i; + a[j1 - 2] = x0r - x2r; + a[j1 - 1] = x0i + x2i; + x0r = x1r + x3i; + x0i = x1i + x3r; + a[j2 - 2] = wk1r * x0r - wk1i * x0i; + a[j2 - 1] = wk1r * x0i + wk1i * x0r; + x0r = x1r - x3i; + x0i = x1i - x3r; + a[j3 - 2] = wk3r * x0r + wk3i * x0i; + a[j3 - 1] = wk3r * x0i - wk3i * x0r; + x0r = a[j0] + a[j2]; + x0i = -a[j0 + 1] - a[j2 + 1]; + x1r = a[j0] - a[j2]; + x1i = -a[j0 + 1] + a[j2 + 1]; + x2r = a[j1] + a[j3]; + x2i = a[j1 + 1] + a[j3 + 1]; + x3r = a[j1] - a[j3]; + x3i = a[j1 + 1] - a[j3 + 1]; + a[j0] = x0r + x2r; + a[j0 + 1] = x0i - x2i; + a[j1] = x0r - x2r; + a[j1 + 1] = x0i + x2i; + x0r = x1r + x3i; + x0i = x1i + x3r; + a[j2] = wd1r * (x0r - x0i); + a[j2 + 1] = wd1r * (x0i + x0r); + x0r = x1r - x3i; + x0i = x1i - x3r; + a[j3] = -wd1r * (x0r + x0i); + a[j3 + 1] = -wd1r * (x0i - x0r); + x0r = a[j0 + 2] + a[j2 + 2]; + x0i = -a[j0 + 3] - a[j2 + 3]; + x1r = a[j0 + 2] - a[j2 + 2]; + x1i = -a[j0 + 3] + a[j2 + 3]; + x2r = a[j1 + 2] + a[j3 + 2]; + x2i = a[j1 + 3] + a[j3 + 3]; + x3r = a[j1 + 2] - a[j3 + 2]; + x3i = a[j1 + 3] - a[j3 + 3]; + a[j0 + 2] = x0r + x2r; + a[j0 + 3] = x0i - x2i; + a[j1 + 2] = x0r - x2r; + a[j1 + 3] = x0i + x2i; + x0r = x1r + x3i; + x0i = x1i + x3r; + a[j2 + 2] = wk1i * x0r - wk1r * x0i; + a[j2 + 3] = wk1i * x0i + wk1r * x0r; + x0r = x1r - x3i; + x0i = x1i - x3r; + a[j3 + 2] = wk3i * x0r + wk3r * x0i; + a[j3 + 3] = wk3i * x0i - wk3r * x0r; + } + + void cftmdl1(int n, float *a) + { + int i, i0, j, j0, j1, j2, j3, m, mh; + float ew, w1r, w1i, wk1r, wk1i, wk3r, wk3i, + wd1r, wd1i, wd3r, wd3i, ss1, ss3; + float x0r, x0i, x1r, x1i, x2r, x2i, x3r, x3i; + + mh = n >> 3; + m = 2 * mh; + j1 = m; + j2 = j1 + m; + j3 = j2 + m; + x0r = a[0] + a[j2]; + x0i = a[1] + a[j2 + 1]; + x1r = a[0] - a[j2]; + x1i = a[1] - a[j2 + 1]; + x2r = a[j1] + a[j3]; + x2i = a[j1 + 1] + a[j3 + 1]; + x3r = a[j1] - a[j3]; + x3i = a[j1 + 1] - a[j3 + 1]; + a[0] = x0r + x2r; + a[1] = x0i + x2i; + a[j1] = x0r - x2r; + a[j1 + 1] = x0i - x2i; + a[j2] = x1r - x3i; + a[j2 + 1] = x1i + x3r; + a[j3] = x1r + x3i; + a[j3 + 1] = x1i - x3r; + wd1r = 1; + wd1i = 0; + wd3r = 1; + wd3i = 0; + ew = M_PI_2 / m; + w1r = (float)cos(2 * ew); + w1i = (float)sin(2 * ew); + wk1r = w1r; + wk1i = w1i; + ss1 = 2 * w1i; + wk3i = 2 * ss1 * wk1r; + wk3r = wk1r - wk3i * wk1i; + wk3i = wk1i - wk3i * wk1r; + ss3 = 2 * wk3i; + i = 0; + for (;;) { + i0 = i + 4 * CDFT_LOOP_DIV; + if (i0 > mh - 4) { + i0 = mh - 4; + } + for (j = i + 2; j < i0; j += 4) { + wd1r -= ss1 * wk1i; + wd1i += ss1 * wk1r; + wd3r -= ss3 * wk3i; + wd3i += ss3 * wk3r; + j1 = j + m; + j2 = j1 + m; + j3 = j2 + m; + x0r = a[j] + a[j2]; + x0i = a[j + 1] + a[j2 + 1]; + x1r = a[j] - a[j2]; + x1i = a[j + 1] - a[j2 + 1]; + x2r = a[j1] + a[j3]; + x2i = a[j1 + 1] + a[j3 + 1]; + x3r = a[j1] - a[j3]; + x3i = a[j1 + 1] - a[j3 + 1]; + a[j] = x0r + x2r; + a[j + 1] = x0i + x2i; + a[j1] = x0r - x2r; + a[j1 + 1] = x0i - x2i; + x0r = x1r - x3i; + x0i = x1i + x3r; + a[j2] = wk1r * x0r - wk1i * x0i; + a[j2 + 1] = wk1r * x0i + wk1i * x0r; + x0r = x1r + x3i; + x0i = x1i - x3r; + a[j3] = wk3r * x0r + wk3i * x0i; + a[j3 + 1] = wk3r * x0i - wk3i * x0r; + x0r = a[j + 2] + a[j2 + 2]; + x0i = a[j + 3] + a[j2 + 3]; + x1r = a[j + 2] - a[j2 + 2]; + x1i = a[j + 3] - a[j2 + 3]; + x2r = a[j1 + 2] + a[j3 + 2]; + x2i = a[j1 + 3] + a[j3 + 3]; + x3r = a[j1 + 2] - a[j3 + 2]; + x3i = a[j1 + 3] - a[j3 + 3]; + a[j + 2] = x0r + x2r; + a[j + 3] = x0i + x2i; + a[j1 + 2] = x0r - x2r; + a[j1 + 3] = x0i - x2i; + x0r = x1r - x3i; + x0i = x1i + x3r; + a[j2 + 2] = wd1r * x0r - wd1i * x0i; + a[j2 + 3] = wd1r * x0i + wd1i * x0r; + x0r = x1r + x3i; + x0i = x1i - x3r; + a[j3 + 2] = wd3r * x0r + wd3i * x0i; + a[j3 + 3] = wd3r * x0i - wd3i * x0r; + j0 = m - j; + j1 = j0 + m; + j2 = j1 + m; + j3 = j2 + m; + x0r = a[j0] + a[j2]; + x0i = a[j0 + 1] + a[j2 + 1]; + x1r = a[j0] - a[j2]; + x1i = a[j0 + 1] - a[j2 + 1]; + x2r = a[j1] + a[j3]; + x2i = a[j1 + 1] + a[j3 + 1]; + x3r = a[j1] - a[j3]; + x3i = a[j1 + 1] - a[j3 + 1]; + a[j0] = x0r + x2r; + a[j0 + 1] = x0i + x2i; + a[j1] = x0r - x2r; + a[j1 + 1] = x0i - x2i; + x0r = x1r - x3i; + x0i = x1i + x3r; + a[j2] = wk1i * x0r - wk1r * x0i; + a[j2 + 1] = wk1i * x0i + wk1r * x0r; + x0r = x1r + x3i; + x0i = x1i - x3r; + a[j3] = wk3i * x0r + wk3r * x0i; + a[j3 + 1] = wk3i * x0i - wk3r * x0r; + x0r = a[j0 - 2] + a[j2 - 2]; + x0i = a[j0 - 1] + a[j2 - 1]; + x1r = a[j0 - 2] - a[j2 - 2]; + x1i = a[j0 - 1] - a[j2 - 1]; + x2r = a[j1 - 2] + a[j3 - 2]; + x2i = a[j1 - 1] + a[j3 - 1]; + x3r = a[j1 - 2] - a[j3 - 2]; + x3i = a[j1 - 1] - a[j3 - 1]; + a[j0 - 2] = x0r + x2r; + a[j0 - 1] = x0i + x2i; + a[j1 - 2] = x0r - x2r; + a[j1 - 1] = x0i - x2i; + x0r = x1r - x3i; + x0i = x1i + x3r; + a[j2 - 2] = wd1i * x0r - wd1r * x0i; + a[j2 - 1] = wd1i * x0i + wd1r * x0r; + x0r = x1r + x3i; + x0i = x1i - x3r; + a[j3 - 2] = wd3i * x0r + wd3r * x0i; + a[j3 - 1] = wd3i * x0i - wd3r * x0r; + wk1r -= ss1 * wd1i; + wk1i += ss1 * wd1r; + wk3r -= ss3 * wd3i; + wk3i += ss3 * wd3r; + } + if (i0 == mh - 4) { + break; + } + wd1r = (float)cos(ew * i0); + wd1i = (float)sin(ew * i0); + wd3i = 4 * wd1i * wd1r; + wd3r = wd1r - wd3i * wd1i; + wd3i = wd1i - wd3i * wd1r; + wk1r = w1r * wd1r - w1i * wd1i; + wk1i = w1r * wd1i + w1i * wd1r; + wk3i = 4 * wk1i * wk1r; + wk3r = wk1r - wk3i * wk1i; + wk3i = wk1i - wk3i * wk1r; + i = i0; + } + wd1r = WR5000; + j0 = mh; + j1 = j0 + m; + j2 = j1 + m; + j3 = j2 + m; + x0r = a[j0 - 2] + a[j2 - 2]; + x0i = a[j0 - 1] + a[j2 - 1]; + x1r = a[j0 - 2] - a[j2 - 2]; + x1i = a[j0 - 1] - a[j2 - 1]; + x2r = a[j1 - 2] + a[j3 - 2]; + x2i = a[j1 - 1] + a[j3 - 1]; + x3r = a[j1 - 2] - a[j3 - 2]; + x3i = a[j1 - 1] - a[j3 - 1]; + a[j0 - 2] = x0r + x2r; + a[j0 - 1] = x0i + x2i; + a[j1 - 2] = x0r - x2r; + a[j1 - 1] = x0i - x2i; + x0r = x1r - x3i; + x0i = x1i + x3r; + a[j2 - 2] = wk1r * x0r - wk1i * x0i; + a[j2 - 1] = wk1r * x0i + wk1i * x0r; + x0r = x1r + x3i; + x0i = x1i - x3r; + a[j3 - 2] = wk3r * x0r + wk3i * x0i; + a[j3 - 1] = wk3r * x0i - wk3i * x0r; + x0r = a[j0] + a[j2]; + x0i = a[j0 + 1] + a[j2 + 1]; + x1r = a[j0] - a[j2]; + x1i = a[j0 + 1] - a[j2 + 1]; + x2r = a[j1] + a[j3]; + x2i = a[j1 + 1] + a[j3 + 1]; + x3r = a[j1] - a[j3]; + x3i = a[j1 + 1] - a[j3 + 1]; + a[j0] = x0r + x2r; + a[j0 + 1] = x0i + x2i; + a[j1] = x0r - x2r; + a[j1 + 1] = x0i - x2i; + x0r = x1r - x3i; + x0i = x1i + x3r; + a[j2] = wd1r * (x0r - x0i); + a[j2 + 1] = wd1r * (x0i + x0r); + x0r = x1r + x3i; + x0i = x1i - x3r; + a[j3] = -wd1r * (x0r + x0i); + a[j3 + 1] = -wd1r * (x0i - x0r); + x0r = a[j0 + 2] + a[j2 + 2]; + x0i = a[j0 + 3] + a[j2 + 3]; + x1r = a[j0 + 2] - a[j2 + 2]; + x1i = a[j0 + 3] - a[j2 + 3]; + x2r = a[j1 + 2] + a[j3 + 2]; + x2i = a[j1 + 3] + a[j3 + 3]; + x3r = a[j1 + 2] - a[j3 + 2]; + x3i = a[j1 + 3] - a[j3 + 3]; + a[j0 + 2] = x0r + x2r; + a[j0 + 3] = x0i + x2i; + a[j1 + 2] = x0r - x2r; + a[j1 + 3] = x0i - x2i; + x0r = x1r - x3i; + x0i = x1i + x3r; + a[j2 + 2] = wk1i * x0r - wk1r * x0i; + a[j2 + 3] = wk1i * x0i + wk1r * x0r; + x0r = x1r + x3i; + x0i = x1i - x3r; + a[j3 + 2] = wk3i * x0r + wk3r * x0i; + a[j3 + 3] = wk3i * x0i - wk3r * x0r; + } + + + void cftmdl2(int n, float *a) + { + int i, i0, j, j0, j1, j2, j3, m, mh; + float ew, w1r, w1i, wn4r, wk1r, wk1i, wk3r, wk3i, + wl1r, wl1i, wl3r, wl3i, wd1r, wd1i, wd3r, wd3i, + we1r, we1i, we3r, we3i, ss1, ss3; + float x0r, x0i, x1r, x1i, x2r, x2i, x3r, x3i, y0r, y0i, y2r, y2i; + + mh = n >> 3; + m = 2 * mh; + wn4r = WR5000; + j1 = m; + j2 = j1 + m; + j3 = j2 + m; + x0r = a[0] - a[j2 + 1]; + x0i = a[1] + a[j2]; + x1r = a[0] + a[j2 + 1]; + x1i = a[1] - a[j2]; + x2r = a[j1] - a[j3 + 1]; + x2i = a[j1 + 1] + a[j3]; + x3r = a[j1] + a[j3 + 1]; + x3i = a[j1 + 1] - a[j3]; + y0r = wn4r * (x2r - x2i); + y0i = wn4r * (x2i + x2r); + a[0] = x0r + y0r; + a[1] = x0i + y0i; + a[j1] = x0r - y0r; + a[j1 + 1] = x0i - y0i; + y0r = wn4r * (x3r - x3i); + y0i = wn4r * (x3i + x3r); + a[j2] = x1r - y0i; + a[j2 + 1] = x1i + y0r; + a[j3] = x1r + y0i; + a[j3 + 1] = x1i - y0r; + wl1r = 1; + wl1i = 0; + wl3r = 1; + wl3i = 0; + we1r = wn4r; + we1i = wn4r; + we3r = -wn4r; + we3i = -wn4r; + ew = M_PI_2 / (2 * m); + w1r = (float)cos(2 * ew); + w1i = (float)sin(2 * ew); + wk1r = w1r; + wk1i = w1i; + wd1r = wn4r * (w1r - w1i); + wd1i = wn4r * (w1i + w1r); + ss1 = 2 * w1i; + wk3i = 2 * ss1 * wk1r; + wk3r = wk1r - wk3i * wk1i; + wk3i = wk1i - wk3i * wk1r; + ss3 = 2 * wk3i; + wd3r = -wn4r * (wk3r - wk3i); + wd3i = -wn4r * (wk3i + wk3r); + i = 0; + for (;;) { + i0 = i + 4 * CDFT_LOOP_DIV; + if (i0 > mh - 4) { + i0 = mh - 4; + } + for (j = i + 2; j < i0; j += 4) { + wl1r -= ss1 * wk1i; + wl1i += ss1 * wk1r; + wl3r -= ss3 * wk3i; + wl3i += ss3 * wk3r; + we1r -= ss1 * wd1i; + we1i += ss1 * wd1r; + we3r -= ss3 * wd3i; + we3i += ss3 * wd3r; + j1 = j + m; + j2 = j1 + m; + j3 = j2 + m; + x0r = a[j] - a[j2 + 1]; + x0i = a[j + 1] + a[j2]; + x1r = a[j] + a[j2 + 1]; + x1i = a[j + 1] - a[j2]; + x2r = a[j1] - a[j3 + 1]; + x2i = a[j1 + 1] + a[j3]; + x3r = a[j1] + a[j3 + 1]; + x3i = a[j1 + 1] - a[j3]; + y0r = wk1r * x0r - wk1i * x0i; + y0i = wk1r * x0i + wk1i * x0r; + y2r = wd1r * x2r - wd1i * x2i; + y2i = wd1r * x2i + wd1i * x2r; + a[j] = y0r + y2r; + a[j + 1] = y0i + y2i; + a[j1] = y0r - y2r; + a[j1 + 1] = y0i - y2i; + y0r = wk3r * x1r + wk3i * x1i; + y0i = wk3r * x1i - wk3i * x1r; + y2r = wd3r * x3r + wd3i * x3i; + y2i = wd3r * x3i - wd3i * x3r; + a[j2] = y0r + y2r; + a[j2 + 1] = y0i + y2i; + a[j3] = y0r - y2r; + a[j3 + 1] = y0i - y2i; + x0r = a[j + 2] - a[j2 + 3]; + x0i = a[j + 3] + a[j2 + 2]; + x1r = a[j + 2] + a[j2 + 3]; + x1i = a[j + 3] - a[j2 + 2]; + x2r = a[j1 + 2] - a[j3 + 3]; + x2i = a[j1 + 3] + a[j3 + 2]; + x3r = a[j1 + 2] + a[j3 + 3]; + x3i = a[j1 + 3] - a[j3 + 2]; + y0r = wl1r * x0r - wl1i * x0i; + y0i = wl1r * x0i + wl1i * x0r; + y2r = we1r * x2r - we1i * x2i; + y2i = we1r * x2i + we1i * x2r; + a[j + 2] = y0r + y2r; + a[j + 3] = y0i + y2i; + a[j1 + 2] = y0r - y2r; + a[j1 + 3] = y0i - y2i; + y0r = wl3r * x1r + wl3i * x1i; + y0i = wl3r * x1i - wl3i * x1r; + y2r = we3r * x3r + we3i * x3i; + y2i = we3r * x3i - we3i * x3r; + a[j2 + 2] = y0r + y2r; + a[j2 + 3] = y0i + y2i; + a[j3 + 2] = y0r - y2r; + a[j3 + 3] = y0i - y2i; + j0 = m - j; + j1 = j0 + m; + j2 = j1 + m; + j3 = j2 + m; + x0r = a[j0] - a[j2 + 1]; + x0i = a[j0 + 1] + a[j2]; + x1r = a[j0] + a[j2 + 1]; + x1i = a[j0 + 1] - a[j2]; + x2r = a[j1] - a[j3 + 1]; + x2i = a[j1 + 1] + a[j3]; + x3r = a[j1] + a[j3 + 1]; + x3i = a[j1 + 1] - a[j3]; + y0r = wd1i * x0r - wd1r * x0i; + y0i = wd1i * x0i + wd1r * x0r; + y2r = wk1i * x2r - wk1r * x2i; + y2i = wk1i * x2i + wk1r * x2r; + a[j0] = y0r + y2r; + a[j0 + 1] = y0i + y2i; + a[j1] = y0r - y2r; + a[j1 + 1] = y0i - y2i; + y0r = wd3i * x1r + wd3r * x1i; + y0i = wd3i * x1i - wd3r * x1r; + y2r = wk3i * x3r + wk3r * x3i; + y2i = wk3i * x3i - wk3r * x3r; + a[j2] = y0r + y2r; + a[j2 + 1] = y0i + y2i; + a[j3] = y0r - y2r; + a[j3 + 1] = y0i - y2i; + x0r = a[j0 - 2] - a[j2 - 1]; + x0i = a[j0 - 1] + a[j2 - 2]; + x1r = a[j0 - 2] + a[j2 - 1]; + x1i = a[j0 - 1] - a[j2 - 2]; + x2r = a[j1 - 2] - a[j3 - 1]; + x2i = a[j1 - 1] + a[j3 - 2]; + x3r = a[j1 - 2] + a[j3 - 1]; + x3i = a[j1 - 1] - a[j3 - 2]; + y0r = we1i * x0r - we1r * x0i; + y0i = we1i * x0i + we1r * x0r; + y2r = wl1i * x2r - wl1r * x2i; + y2i = wl1i * x2i + wl1r * x2r; + a[j0 - 2] = y0r + y2r; + a[j0 - 1] = y0i + y2i; + a[j1 - 2] = y0r - y2r; + a[j1 - 1] = y0i - y2i; + y0r = we3i * x1r + we3r * x1i; + y0i = we3i * x1i - we3r * x1r; + y2r = wl3i * x3r + wl3r * x3i; + y2i = wl3i * x3i - wl3r * x3r; + a[j2 - 2] = y0r + y2r; + a[j2 - 1] = y0i + y2i; + a[j3 - 2] = y0r - y2r; + a[j3 - 1] = y0i - y2i; + wk1r -= ss1 * wl1i; + wk1i += ss1 * wl1r; + wk3r -= ss3 * wl3i; + wk3i += ss3 * wl3r; + wd1r -= ss1 * we1i; + wd1i += ss1 * we1r; + wd3r -= ss3 * we3i; + wd3i += ss3 * we3r; + } + if (i0 == mh - 4) { + break; + } + wl1r = (float)cos(ew * i0); + wl1i = (float)sin(ew * i0); + wl3i = 4 * wl1i * wl1r; + wl3r = wl1r - wl3i * wl1i; + wl3i = wl1i - wl3i * wl1r; + we1r = wn4r * (wl1r - wl1i); + we1i = wn4r * (wl1i + wl1r); + we3r = -wn4r * (wl3r - wl3i); + we3i = -wn4r * (wl3i + wl3r); + wk1r = w1r * wl1r - w1i * wl1i; + wk1i = w1r * wl1i + w1i * wl1r; + wk3i = 4 * wk1i * wk1r; + wk3r = wk1r - wk3i * wk1i; + wk3i = wk1i - wk3i * wk1r; + wd1r = wn4r * (wk1r - wk1i); + wd1i = wn4r * (wk1i + wk1r); + wd3r = -wn4r * (wk3r - wk3i); + wd3i = -wn4r * (wk3i + wk3r); + i = i0; + } + wl1r = WR2500; + wl1i = WI2500; + j0 = mh; + j1 = j0 + m; + j2 = j1 + m; + j3 = j2 + m; + x0r = a[j0 - 2] - a[j2 - 1]; + x0i = a[j0 - 1] + a[j2 - 2]; + x1r = a[j0 - 2] + a[j2 - 1]; + x1i = a[j0 - 1] - a[j2 - 2]; + x2r = a[j1 - 2] - a[j3 - 1]; + x2i = a[j1 - 1] + a[j3 - 2]; + x3r = a[j1 - 2] + a[j3 - 1]; + x3i = a[j1 - 1] - a[j3 - 2]; + y0r = wk1r * x0r - wk1i * x0i; + y0i = wk1r * x0i + wk1i * x0r; + y2r = wd1r * x2r - wd1i * x2i; + y2i = wd1r * x2i + wd1i * x2r; + a[j0 - 2] = y0r + y2r; + a[j0 - 1] = y0i + y2i; + a[j1 - 2] = y0r - y2r; + a[j1 - 1] = y0i - y2i; + y0r = wk3r * x1r + wk3i * x1i; + y0i = wk3r * x1i - wk3i * x1r; + y2r = wd3r * x3r + wd3i * x3i; + y2i = wd3r * x3i - wd3i * x3r; + a[j2 - 2] = y0r + y2r; + a[j2 - 1] = y0i + y2i; + a[j3 - 2] = y0r - y2r; + a[j3 - 1] = y0i - y2i; + x0r = a[j0] - a[j2 + 1]; + x0i = a[j0 + 1] + a[j2]; + x1r = a[j0] + a[j2 + 1]; + x1i = a[j0 + 1] - a[j2]; + x2r = a[j1] - a[j3 + 1]; + x2i = a[j1 + 1] + a[j3]; + x3r = a[j1] + a[j3 + 1]; + x3i = a[j1 + 1] - a[j3]; + y0r = wl1r * x0r - wl1i * x0i; + y0i = wl1r * x0i + wl1i * x0r; + y2r = wl1i * x2r - wl1r * x2i; + y2i = wl1i * x2i + wl1r * x2r; + a[j0] = y0r + y2r; + a[j0 + 1] = y0i + y2i; + a[j1] = y0r - y2r; + a[j1 + 1] = y0i - y2i; + y0r = wl1i * x1r - wl1r * x1i; + y0i = wl1i * x1i + wl1r * x1r; + y2r = wl1r * x3r - wl1i * x3i; + y2i = wl1r * x3i + wl1i * x3r; + a[j2] = y0r - y2r; + a[j2 + 1] = y0i - y2i; + a[j3] = y0r + y2r; + a[j3 + 1] = y0i + y2i; + x0r = a[j0 + 2] - a[j2 + 3]; + x0i = a[j0 + 3] + a[j2 + 2]; + x1r = a[j0 + 2] + a[j2 + 3]; + x1i = a[j0 + 3] - a[j2 + 2]; + x2r = a[j1 + 2] - a[j3 + 3]; + x2i = a[j1 + 3] + a[j3 + 2]; + x3r = a[j1 + 2] + a[j3 + 3]; + x3i = a[j1 + 3] - a[j3 + 2]; + y0r = wd1i * x0r - wd1r * x0i; + y0i = wd1i * x0i + wd1r * x0r; + y2r = wk1i * x2r - wk1r * x2i; + y2i = wk1i * x2i + wk1r * x2r; + a[j0 + 2] = y0r + y2r; + a[j0 + 3] = y0i + y2i; + a[j1 + 2] = y0r - y2r; + a[j1 + 3] = y0i - y2i; + y0r = wd3i * x1r + wd3r * x1i; + y0i = wd3i * x1i - wd3r * x1r; + y2r = wk3i * x3r + wk3r * x3i; + y2i = wk3i * x3i - wk3r * x3r; + a[j2 + 2] = y0r + y2r; + a[j2 + 3] = y0i + y2i; + a[j3 + 2] = y0r - y2r; + a[j3 + 3] = y0i - y2i; + } + + void cftf161(float *a) + { + float wn4r, wk1r, wk1i, + x0r, x0i, x1r, x1i, x2r, x2i, x3r, x3i, + y0r, y0i, y1r, y1i, y2r, y2i, y3r, y3i, + y4r, y4i, y5r, y5i, y6r, y6i, y7r, y7i, + y8r, y8i, y9r, y9i, y10r, y10i, y11r, y11i, + y12r, y12i, y13r, y13i, y14r, y14i, y15r, y15i; + + wn4r = WR5000; + wk1r = WR2500; + wk1i = WI2500; + x0r = a[0] + a[16]; + x0i = a[1] + a[17]; + x1r = a[0] - a[16]; + x1i = a[1] - a[17]; + x2r = a[8] + a[24]; + x2i = a[9] + a[25]; + x3r = a[8] - a[24]; + x3i = a[9] - a[25]; + y0r = x0r + x2r; + y0i = x0i + x2i; + y4r = x0r - x2r; + y4i = x0i - x2i; + y8r = x1r - x3i; + y8i = x1i + x3r; + y12r = x1r + x3i; + y12i = x1i - x3r; + x0r = a[2] + a[18]; + x0i = a[3] + a[19]; + x1r = a[2] - a[18]; + x1i = a[3] - a[19]; + x2r = a[10] + a[26]; + x2i = a[11] + a[27]; + x3r = a[10] - a[26]; + x3i = a[11] - a[27]; + y1r = x0r + x2r; + y1i = x0i + x2i; + y5r = x0r - x2r; + y5i = x0i - x2i; + x0r = x1r - x3i; + x0i = x1i + x3r; + y9r = wk1r * x0r - wk1i * x0i; + y9i = wk1r * x0i + wk1i * x0r; + x0r = x1r + x3i; + x0i = x1i - x3r; + y13r = wk1i * x0r - wk1r * x0i; + y13i = wk1i * x0i + wk1r * x0r; + x0r = a[4] + a[20]; + x0i = a[5] + a[21]; + x1r = a[4] - a[20]; + x1i = a[5] - a[21]; + x2r = a[12] + a[28]; + x2i = a[13] + a[29]; + x3r = a[12] - a[28]; + x3i = a[13] - a[29]; + y2r = x0r + x2r; + y2i = x0i + x2i; + y6r = x0r - x2r; + y6i = x0i - x2i; + x0r = x1r - x3i; + x0i = x1i + x3r; + y10r = wn4r * (x0r - x0i); + y10i = wn4r * (x0i + x0r); + x0r = x1r + x3i; + x0i = x1i - x3r; + y14r = wn4r * (x0r + x0i); + y14i = wn4r * (x0i - x0r); + x0r = a[6] + a[22]; + x0i = a[7] + a[23]; + x1r = a[6] - a[22]; + x1i = a[7] - a[23]; + x2r = a[14] + a[30]; + x2i = a[15] + a[31]; + x3r = a[14] - a[30]; + x3i = a[15] - a[31]; + y3r = x0r + x2r; + y3i = x0i + x2i; + y7r = x0r - x2r; + y7i = x0i - x2i; + x0r = x1r - x3i; + x0i = x1i + x3r; + y11r = wk1i * x0r - wk1r * x0i; + y11i = wk1i * x0i + wk1r * x0r; + x0r = x1r + x3i; + x0i = x1i - x3r; + y15r = wk1r * x0r - wk1i * x0i; + y15i = wk1r * x0i + wk1i * x0r; + x0r = y12r - y14r; + x0i = y12i - y14i; + x1r = y12r + y14r; + x1i = y12i + y14i; + x2r = y13r - y15r; + x2i = y13i - y15i; + x3r = y13r + y15r; + x3i = y13i + y15i; + a[24] = x0r + x2r; + a[25] = x0i + x2i; + a[26] = x0r - x2r; + a[27] = x0i - x2i; + a[28] = x1r - x3i; + a[29] = x1i + x3r; + a[30] = x1r + x3i; + a[31] = x1i - x3r; + x0r = y8r + y10r; + x0i = y8i + y10i; + x1r = y8r - y10r; + x1i = y8i - y10i; + x2r = y9r + y11r; + x2i = y9i + y11i; + x3r = y9r - y11r; + x3i = y9i - y11i; + a[16] = x0r + x2r; + a[17] = x0i + x2i; + a[18] = x0r - x2r; + a[19] = x0i - x2i; + a[20] = x1r - x3i; + a[21] = x1i + x3r; + a[22] = x1r + x3i; + a[23] = x1i - x3r; + x0r = y5r - y7i; + x0i = y5i + y7r; + x2r = wn4r * (x0r - x0i); + x2i = wn4r * (x0i + x0r); + x0r = y5r + y7i; + x0i = y5i - y7r; + x3r = wn4r * (x0r - x0i); + x3i = wn4r * (x0i + x0r); + x0r = y4r - y6i; + x0i = y4i + y6r; + x1r = y4r + y6i; + x1i = y4i - y6r; + a[8] = x0r + x2r; + a[9] = x0i + x2i; + a[10] = x0r - x2r; + a[11] = x0i - x2i; + a[12] = x1r - x3i; + a[13] = x1i + x3r; + a[14] = x1r + x3i; + a[15] = x1i - x3r; + x0r = y0r + y2r; + x0i = y0i + y2i; + x1r = y0r - y2r; + x1i = y0i - y2i; + x2r = y1r + y3r; + x2i = y1i + y3i; + x3r = y1r - y3r; + x3i = y1i - y3i; + a[0] = x0r + x2r; + a[1] = x0i + x2i; + a[2] = x0r - x2r; + a[3] = x0i - x2i; + a[4] = x1r - x3i; + a[5] = x1i + x3r; + a[6] = x1r + x3i; + a[7] = x1i - x3r; + } + + + void cftf162(float *a) + { + float wn4r, wk1r, wk1i, wk2r, wk2i, wk3r, wk3i, + x0r, x0i, x1r, x1i, x2r, x2i, + y0r, y0i, y1r, y1i, y2r, y2i, y3r, y3i, + y4r, y4i, y5r, y5i, y6r, y6i, y7r, y7i, + y8r, y8i, y9r, y9i, y10r, y10i, y11r, y11i, + y12r, y12i, y13r, y13i, y14r, y14i, y15r, y15i; + + wn4r = WR5000; + wk1r = WR1250; + wk1i = WI1250; + wk2r = WR2500; + wk2i = WI2500; + wk3r = WR3750; + wk3i = WI3750; + x1r = a[0] - a[17]; + x1i = a[1] + a[16]; + x0r = a[8] - a[25]; + x0i = a[9] + a[24]; + x2r = wn4r * (x0r - x0i); + x2i = wn4r * (x0i + x0r); + y0r = x1r + x2r; + y0i = x1i + x2i; + y4r = x1r - x2r; + y4i = x1i - x2i; + x1r = a[0] + a[17]; + x1i = a[1] - a[16]; + x0r = a[8] + a[25]; + x0i = a[9] - a[24]; + x2r = wn4r * (x0r - x0i); + x2i = wn4r * (x0i + x0r); + y8r = x1r - x2i; + y8i = x1i + x2r; + y12r = x1r + x2i; + y12i = x1i - x2r; + x0r = a[2] - a[19]; + x0i = a[3] + a[18]; + x1r = wk1r * x0r - wk1i * x0i; + x1i = wk1r * x0i + wk1i * x0r; + x0r = a[10] - a[27]; + x0i = a[11] + a[26]; + x2r = wk3i * x0r - wk3r * x0i; + x2i = wk3i * x0i + wk3r * x0r; + y1r = x1r + x2r; + y1i = x1i + x2i; + y5r = x1r - x2r; + y5i = x1i - x2i; + x0r = a[2] + a[19]; + x0i = a[3] - a[18]; + x1r = wk3r * x0r - wk3i * x0i; + x1i = wk3r * x0i + wk3i * x0r; + x0r = a[10] + a[27]; + x0i = a[11] - a[26]; + x2r = wk1r * x0r + wk1i * x0i; + x2i = wk1r * x0i - wk1i * x0r; + y9r = x1r - x2r; + y9i = x1i - x2i; + y13r = x1r + x2r; + y13i = x1i + x2i; + x0r = a[4] - a[21]; + x0i = a[5] + a[20]; + x1r = wk2r * x0r - wk2i * x0i; + x1i = wk2r * x0i + wk2i * x0r; + x0r = a[12] - a[29]; + x0i = a[13] + a[28]; + x2r = wk2i * x0r - wk2r * x0i; + x2i = wk2i * x0i + wk2r * x0r; + y2r = x1r + x2r; + y2i = x1i + x2i; + y6r = x1r - x2r; + y6i = x1i - x2i; + x0r = a[4] + a[21]; + x0i = a[5] - a[20]; + x1r = wk2i * x0r - wk2r * x0i; + x1i = wk2i * x0i + wk2r * x0r; + x0r = a[12] + a[29]; + x0i = a[13] - a[28]; + x2r = wk2r * x0r - wk2i * x0i; + x2i = wk2r * x0i + wk2i * x0r; + y10r = x1r - x2r; + y10i = x1i - x2i; + y14r = x1r + x2r; + y14i = x1i + x2i; + x0r = a[6] - a[23]; + x0i = a[7] + a[22]; + x1r = wk3r * x0r - wk3i * x0i; + x1i = wk3r * x0i + wk3i * x0r; + x0r = a[14] - a[31]; + x0i = a[15] + a[30]; + x2r = wk1i * x0r - wk1r * x0i; + x2i = wk1i * x0i + wk1r * x0r; + y3r = x1r + x2r; + y3i = x1i + x2i; + y7r = x1r - x2r; + y7i = x1i - x2i; + x0r = a[6] + a[23]; + x0i = a[7] - a[22]; + x1r = wk1i * x0r + wk1r * x0i; + x1i = wk1i * x0i - wk1r * x0r; + x0r = a[14] + a[31]; + x0i = a[15] - a[30]; + x2r = wk3i * x0r - wk3r * x0i; + x2i = wk3i * x0i + wk3r * x0r; + y11r = x1r + x2r; + y11i = x1i + x2i; + y15r = x1r - x2r; + y15i = x1i - x2i; + x1r = y0r + y2r; + x1i = y0i + y2i; + x2r = y1r + y3r; + x2i = y1i + y3i; + a[0] = x1r + x2r; + a[1] = x1i + x2i; + a[2] = x1r - x2r; + a[3] = x1i - x2i; + x1r = y0r - y2r; + x1i = y0i - y2i; + x2r = y1r - y3r; + x2i = y1i - y3i; + a[4] = x1r - x2i; + a[5] = x1i + x2r; + a[6] = x1r + x2i; + a[7] = x1i - x2r; + x1r = y4r - y6i; + x1i = y4i + y6r; + x0r = y5r - y7i; + x0i = y5i + y7r; + x2r = wn4r * (x0r - x0i); + x2i = wn4r * (x0i + x0r); + a[8] = x1r + x2r; + a[9] = x1i + x2i; + a[10] = x1r - x2r; + a[11] = x1i - x2i; + x1r = y4r + y6i; + x1i = y4i - y6r; + x0r = y5r + y7i; + x0i = y5i - y7r; + x2r = wn4r * (x0r - x0i); + x2i = wn4r * (x0i + x0r); + a[12] = x1r - x2i; + a[13] = x1i + x2r; + a[14] = x1r + x2i; + a[15] = x1i - x2r; + x1r = y8r + y10r; + x1i = y8i + y10i; + x2r = y9r - y11r; + x2i = y9i - y11i; + a[16] = x1r + x2r; + a[17] = x1i + x2i; + a[18] = x1r - x2r; + a[19] = x1i - x2i; + x1r = y8r - y10r; + x1i = y8i - y10i; + x2r = y9r + y11r; + x2i = y9i + y11i; + a[20] = x1r - x2i; + a[21] = x1i + x2r; + a[22] = x1r + x2i; + a[23] = x1i - x2r; + x1r = y12r - y14i; + x1i = y12i + y14r; + x0r = y13r + y15i; + x0i = y13i - y15r; + x2r = wn4r * (x0r - x0i); + x2i = wn4r * (x0i + x0r); + a[24] = x1r + x2r; + a[25] = x1i + x2i; + a[26] = x1r - x2r; + a[27] = x1i - x2i; + x1r = y12r + y14i; + x1i = y12i - y14r; + x0r = y13r - y15i; + x0i = y13i + y15r; + x2r = wn4r * (x0r - x0i); + x2i = wn4r * (x0i + x0r); + a[28] = x1r - x2i; + a[29] = x1i + x2r; + a[30] = x1r + x2i; + a[31] = x1i - x2r; + } + + + void cftf081(float *a) + { + float wn4r, x0r, x0i, x1r, x1i, x2r, x2i, x3r, x3i, + y0r, y0i, y1r, y1i, y2r, y2i, y3r, y3i, + y4r, y4i, y5r, y5i, y6r, y6i, y7r, y7i; + + wn4r = WR5000; + x0r = a[0] + a[8]; + x0i = a[1] + a[9]; + x1r = a[0] - a[8]; + x1i = a[1] - a[9]; + x2r = a[4] + a[12]; + x2i = a[5] + a[13]; + x3r = a[4] - a[12]; + x3i = a[5] - a[13]; + y0r = x0r + x2r; + y0i = x0i + x2i; + y2r = x0r - x2r; + y2i = x0i - x2i; + y1r = x1r - x3i; + y1i = x1i + x3r; + y3r = x1r + x3i; + y3i = x1i - x3r; + x0r = a[2] + a[10]; + x0i = a[3] + a[11]; + x1r = a[2] - a[10]; + x1i = a[3] - a[11]; + x2r = a[6] + a[14]; + x2i = a[7] + a[15]; + x3r = a[6] - a[14]; + x3i = a[7] - a[15]; + y4r = x0r + x2r; + y4i = x0i + x2i; + y6r = x0r - x2r; + y6i = x0i - x2i; + x0r = x1r - x3i; + x0i = x1i + x3r; + x2r = x1r + x3i; + x2i = x1i - x3r; + y5r = wn4r * (x0r - x0i); + y5i = wn4r * (x0r + x0i); + y7r = wn4r * (x2r - x2i); + y7i = wn4r * (x2r + x2i); + a[8] = y1r + y5r; + a[9] = y1i + y5i; + a[10] = y1r - y5r; + a[11] = y1i - y5i; + a[12] = y3r - y7i; + a[13] = y3i + y7r; + a[14] = y3r + y7i; + a[15] = y3i - y7r; + a[0] = y0r + y4r; + a[1] = y0i + y4i; + a[2] = y0r - y4r; + a[3] = y0i - y4i; + a[4] = y2r - y6i; + a[5] = y2i + y6r; + a[6] = y2r + y6i; + a[7] = y2i - y6r; + } + + + void cftf082(float *a) + { + float wn4r, wk1r, wk1i, x0r, x0i, x1r, x1i, + y0r, y0i, y1r, y1i, y2r, y2i, y3r, y3i, + y4r, y4i, y5r, y5i, y6r, y6i, y7r, y7i; + + wn4r = WR5000; + wk1r = WR2500; + wk1i = WI2500; + y0r = a[0] - a[9]; + y0i = a[1] + a[8]; + y1r = a[0] + a[9]; + y1i = a[1] - a[8]; + x0r = a[4] - a[13]; + x0i = a[5] + a[12]; + y2r = wn4r * (x0r - x0i); + y2i = wn4r * (x0i + x0r); + x0r = a[4] + a[13]; + x0i = a[5] - a[12]; + y3r = wn4r * (x0r - x0i); + y3i = wn4r * (x0i + x0r); + x0r = a[2] - a[11]; + x0i = a[3] + a[10]; + y4r = wk1r * x0r - wk1i * x0i; + y4i = wk1r * x0i + wk1i * x0r; + x0r = a[2] + a[11]; + x0i = a[3] - a[10]; + y5r = wk1i * x0r - wk1r * x0i; + y5i = wk1i * x0i + wk1r * x0r; + x0r = a[6] - a[15]; + x0i = a[7] + a[14]; + y6r = wk1i * x0r - wk1r * x0i; + y6i = wk1i * x0i + wk1r * x0r; + x0r = a[6] + a[15]; + x0i = a[7] - a[14]; + y7r = wk1r * x0r - wk1i * x0i; + y7i = wk1r * x0i + wk1i * x0r; + x0r = y0r + y2r; + x0i = y0i + y2i; + x1r = y4r + y6r; + x1i = y4i + y6i; + a[0] = x0r + x1r; + a[1] = x0i + x1i; + a[2] = x0r - x1r; + a[3] = x0i - x1i; + x0r = y0r - y2r; + x0i = y0i - y2i; + x1r = y4r - y6r; + x1i = y4i - y6i; + a[4] = x0r - x1i; + a[5] = x0i + x1r; + a[6] = x0r + x1i; + a[7] = x0i - x1r; + x0r = y1r - y3i; + x0i = y1i + y3r; + x1r = y5r - y7r; + x1i = y5i - y7i; + a[8] = x0r + x1r; + a[9] = x0i + x1i; + a[10] = x0r - x1r; + a[11] = x0i - x1i; + x0r = y1r + y3i; + x0i = y1i - y3r; + x1r = y5r + y7r; + x1i = y5i + y7i; + a[12] = x0r - x1i; + a[13] = x0i + x1r; + a[14] = x0r + x1i; + a[15] = x0i - x1r; + } + + void cftf040(float *a) + { + float x0r, x0i, x1r, x1i, x2r, x2i, x3r, x3i; + + x0r = a[0] + a[4]; + x0i = a[1] + a[5]; + x1r = a[0] - a[4]; + x1i = a[1] - a[5]; + x2r = a[2] + a[6]; + x2i = a[3] + a[7]; + x3r = a[2] - a[6]; + x3i = a[3] - a[7]; + a[0] = x0r + x2r; + a[1] = x0i + x2i; + a[2] = x1r - x3i; + a[3] = x1i + x3r; + a[4] = x0r - x2r; + a[5] = x0i - x2i; + a[6] = x1r + x3i; + a[7] = x1i - x3r; + } + + void cftb040(float *a) + { + float x0r, x0i, x1r, x1i, x2r, x2i, x3r, x3i; + + x0r = a[0] + a[4]; + x0i = a[1] + a[5]; + x1r = a[0] - a[4]; + x1i = a[1] - a[5]; + x2r = a[2] + a[6]; + x2i = a[3] + a[7]; + x3r = a[2] - a[6]; + x3i = a[3] - a[7]; + a[0] = x0r + x2r; + a[1] = x0i + x2i; + a[2] = x1r + x3i; + a[3] = x1i - x3r; + a[4] = x0r - x2r; + a[5] = x0i - x2i; + a[6] = x1r - x3i; + a[7] = x1i + x3r; + } + + void cftx020(float *a) + { + float x0r, x0i; + + x0r = a[0] - a[2]; + x0i = a[1] - a[3]; + a[0] += a[2]; + a[1] += a[3]; + a[2] = x0r; + a[3] = x0i; + } + + void cftfx41(int n, float *a) + { + if (n == 128) { + cftf161(a); + cftf162(&a[32]); + cftf161(&a[64]); + cftf161(&a[96]); + } + else { + cftf081(a); + cftf082(&a[16]); + cftf081(&a[32]); + cftf081(&a[48]); + } + } + + int cfttree(int n, int j, int k, float *a) + { + int i, isplt, m; + + if ((k & 3) != 0) { + isplt = k & 1; + if (isplt != 0) { + cftmdl1(n, &a[j - n]); + } + else { + cftmdl2(n, &a[j - n]); + } + } + else { + m = n; + for (i = k; (i & 3) == 0; i >>= 2) { + m <<= 2; + } + isplt = i & 1; + if (isplt != 0) { + while (m > 128) { + cftmdl1(m, &a[j - m]); + m >>= 2; + } + } + else { + while (m > 128) { + cftmdl2(m, &a[j - m]); + m >>= 2; + } + } + } + return isplt; + } + + void cftleaf(int n, int isplt, float *a) + { + if (n == 512) { + cftmdl1(128, a); + cftf161(a); + cftf162(&a[32]); + cftf161(&a[64]); + cftf161(&a[96]); + cftmdl2(128, &a[128]); + cftf161(&a[128]); + cftf162(&a[160]); + cftf161(&a[192]); + cftf162(&a[224]); + cftmdl1(128, &a[256]); + cftf161(&a[256]); + cftf162(&a[288]); + cftf161(&a[320]); + cftf161(&a[352]); + if (isplt != 0) { + cftmdl1(128, &a[384]); + cftf161(&a[480]); + } + else { + cftmdl2(128, &a[384]); + cftf162(&a[480]); + } + cftf161(&a[384]); + cftf162(&a[416]); + cftf161(&a[448]); + } + else { + cftmdl1(64, a); + cftf081(a); + cftf082(&a[16]); + cftf081(&a[32]); + cftf081(&a[48]); + cftmdl2(64, &a[64]); + cftf081(&a[64]); + cftf082(&a[80]); + cftf081(&a[96]); + cftf082(&a[112]); + cftmdl1(64, &a[128]); + cftf081(&a[128]); + cftf082(&a[144]); + cftf081(&a[160]); + cftf081(&a[176]); + if (isplt != 0) { + cftmdl1(64, &a[192]); + cftf081(&a[240]); + } + else { + cftmdl2(64, &a[192]); + cftf082(&a[240]); + } + cftf081(&a[192]); + cftf082(&a[208]); + cftf081(&a[224]); + } + } + + void cftrec4(int n, float *a) + { + int isplt, j, k, m; + + m = n; + while (m > 512) { + m >>= 2; + cftmdl1(m, &a[n - m]); + } + cftleaf(m, 1, &a[n - m]); + k = 0; + for (j = n - m; j > 0; j -= m) { + k++; + isplt = cfttree(m, j, k, a); + cftleaf(m, isplt, &a[j - m]); + } + } + + void cftfsub(int n, float *a) + { + if (n > 8) { + if (n > 32) { + cftmdl1(n, a); + if (n > 512) { + cftrec4(n, a); + } + else if (n > 128) { + cftleaf(n, 1, a); + } + else { + cftfx41(n, a); + } + bitrv2(n, a); + } + else if (n == 32) { + cftf161(a); + bitrv216(a); + } + else { + cftf081(a); + bitrv208(a); + } + } + else if (n == 8) { + cftf040(a); + } + else if (n == 4) { + cftx020(a); + } + } + + + void cftbsub(int n, float *a) + { + if (n > 8) { + if (n > 32) { + cftb1st(n, a); + if (n > 512) { + cftrec4(n, a); + } + else if (n > 128) { + cftleaf(n, 1, a); + } + else { + cftfx41(n, a); + } + bitrv2conj(n, a); + } + else if (n == 32) { + cftf161(a); + bitrv216neg(a); + } + else { + cftf081(a); + bitrv208neg(a); + } + } + else if (n == 8) { + cftb040(a); + } + else if (n == 4) { + cftx020(a); + } + } +} // fftimpl + + +namespace SoLoud +{ + namespace FFT + { + void fft1024(float *aBuffer) + { + fft(aBuffer, 1024); + } + + void fft256(float *aBuffer) + { + fft(aBuffer, 256); + } + + void ifft256(float *aBuffer) + { + ifft(aBuffer, 256); + } + + void fft(float *aBuffer, unsigned int aBufferLength) + { + fftimpl::cftbsub(aBufferLength, aBuffer); + } + + void ifft(float *aBuffer, unsigned int aBufferLength) + { + unsigned int i; + fftimpl::cftfsub(aBufferLength, aBuffer); + for (i = 0; i < aBufferLength; i++) + aBuffer[i] *= 1.0f / (aBufferLength / 2); + } + }; +}; diff --git a/src/soloud/src/core/soloud_fft_lut.cpp b/src/soloud/src/core/soloud_fft_lut.cpp new file mode 100644 index 0000000..cfbefa5 --- /dev/null +++ b/src/soloud/src/core/soloud_fft_lut.cpp @@ -0,0 +1,339 @@ +/* ************************************************** + * WARNING: this is a generated file. Do not edit. * + * Any edits will be overwritten by the generator. * + ************************************************** */ + +/* +SoLoud audio engine +Copyright (c) 2013-2015 Jari Komppa + +This software is provided 'as-is', without any express or implied +warranty. In no event will the authors be held liable for any damages +arising from the use of this software. + +Permission is granted to anyone to use this software for any purpose, +including commercial applications, and to alter it and redistribute it +freely, subject to the following restrictions: + + 1. The origin of this software must not be misrepresented; you must not + claim that you wrote the original software. If you use this software + in a product, an acknowledgment in the product documentation would be + appreciated but is not required. + + 2. Altered source versions must be plainly marked as such, and must not be + misrepresented as being the original software. + + 3. This notice may not be removed or altered from any source + distribution. +*/ + +/* SoLoud Lookup Table Generator (c)2015 Jari Komppa http://iki.fi/sol/ */ + +int Soloud_fft_bitrev_10[1024] = { +0, 512, 256, 768, 128, 640, 384, 896, 64, 576, 320, 832, 192, 704, 448, +960, 32, 544, 288, 800, 160, 672, 416, 928, 96, 608, 352, 864, 224, 736, +480, 992, 16, 528, 272, 784, 144, 656, 400, 912, 80, 592, 336, 848, 208, +720, 464, 976, 48, 560, 304, 816, 176, 688, 432, 944, 112, 624, 368, 880, +240, 752, 496, 1008, 8, 520, 264, 776, 136, 648, 392, 904, 72, 584, 328, +840, 200, 712, 456, 968, 40, 552, 296, 808, 168, 680, 424, 936, 104, 616, +360, 872, 232, 744, 488, 1000, 24, 536, 280, 792, 152, 664, 408, 920, 88, +600, 344, 856, 216, 728, 472, 984, 56, 568, 312, 824, 184, 696, 440, 952, +120, 632, 376, 888, 248, 760, 504, 1016, 4, 516, 260, 772, 132, 644, 388, +900, 68, 580, 324, 836, 196, 708, 452, 964, 36, 548, 292, 804, 164, 676, +420, 932, 100, 612, 356, 868, 228, 740, 484, 996, 20, 532, 276, 788, 148, +660, 404, 916, 84, 596, 340, 852, 212, 724, 468, 980, 52, 564, 308, 820, +180, 692, 436, 948, 116, 628, 372, 884, 244, 756, 500, 1012, 12, 524, 268, +780, 140, 652, 396, 908, 76, 588, 332, 844, 204, 716, 460, 972, 44, 556, +300, 812, 172, 684, 428, 940, 108, 620, 364, 876, 236, 748, 492, 1004, +28, 540, 284, 796, 156, 668, 412, 924, 92, 604, 348, 860, 220, 732, 476, +988, 60, 572, 316, 828, 188, 700, 444, 956, 124, 636, 380, 892, 252, 764, +508, 1020, 2, 514, 258, 770, 130, 642, 386, 898, 66, 578, 322, 834, 194, +706, 450, 962, 34, 546, 290, 802, 162, 674, 418, 930, 98, 610, 354, 866, +226, 738, 482, 994, 18, 530, 274, 786, 146, 658, 402, 914, 82, 594, 338, +850, 210, 722, 466, 978, 50, 562, 306, 818, 178, 690, 434, 946, 114, 626, +370, 882, 242, 754, 498, 1010, 10, 522, 266, 778, 138, 650, 394, 906, 74, +586, 330, 842, 202, 714, 458, 970, 42, 554, 298, 810, 170, 682, 426, 938, +106, 618, 362, 874, 234, 746, 490, 1002, 26, 538, 282, 794, 154, 666, 410, +922, 90, 602, 346, 858, 218, 730, 474, 986, 58, 570, 314, 826, 186, 698, +442, 954, 122, 634, 378, 890, 250, 762, 506, 1018, 6, 518, 262, 774, 134, +646, 390, 902, 70, 582, 326, 838, 198, 710, 454, 966, 38, 550, 294, 806, +166, 678, 422, 934, 102, 614, 358, 870, 230, 742, 486, 998, 22, 534, 278, +790, 150, 662, 406, 918, 86, 598, 342, 854, 214, 726, 470, 982, 54, 566, +310, 822, 182, 694, 438, 950, 118, 630, 374, 886, 246, 758, 502, 1014, +14, 526, 270, 782, 142, 654, 398, 910, 78, 590, 334, 846, 206, 718, 462, +974, 46, 558, 302, 814, 174, 686, 430, 942, 110, 622, 366, 878, 238, 750, +494, 1006, 30, 542, 286, 798, 158, 670, 414, 926, 94, 606, 350, 862, 222, +734, 478, 990, 62, 574, 318, 830, 190, 702, 446, 958, 126, 638, 382, 894, +254, 766, 510, 1022, 1, 513, 257, 769, 129, 641, 385, 897, 65, 577, 321, +833, 193, 705, 449, 961, 33, 545, 289, 801, 161, 673, 417, 929, 97, 609, +353, 865, 225, 737, 481, 993, 17, 529, 273, 785, 145, 657, 401, 913, 81, +593, 337, 849, 209, 721, 465, 977, 49, 561, 305, 817, 177, 689, 433, 945, +113, 625, 369, 881, 241, 753, 497, 1009, 9, 521, 265, 777, 137, 649, 393, +905, 73, 585, 329, 841, 201, 713, 457, 969, 41, 553, 297, 809, 169, 681, +425, 937, 105, 617, 361, 873, 233, 745, 489, 1001, 25, 537, 281, 793, 153, +665, 409, 921, 89, 601, 345, 857, 217, 729, 473, 985, 57, 569, 313, 825, +185, 697, 441, 953, 121, 633, 377, 889, 249, 761, 505, 1017, 5, 517, 261, +773, 133, 645, 389, 901, 69, 581, 325, 837, 197, 709, 453, 965, 37, 549, +293, 805, 165, 677, 421, 933, 101, 613, 357, 869, 229, 741, 485, 997, 21, +533, 277, 789, 149, 661, 405, 917, 85, 597, 341, 853, 213, 725, 469, 981, +53, 565, 309, 821, 181, 693, 437, 949, 117, 629, 373, 885, 245, 757, 501, +1013, 13, 525, 269, 781, 141, 653, 397, 909, 77, 589, 333, 845, 205, 717, +461, 973, 45, 557, 301, 813, 173, 685, 429, 941, 109, 621, 365, 877, 237, +749, 493, 1005, 29, 541, 285, 797, 157, 669, 413, 925, 93, 605, 349, 861, +221, 733, 477, 989, 61, 573, 317, 829, 189, 701, 445, 957, 125, 637, 381, +893, 253, 765, 509, 1021, 3, 515, 259, 771, 131, 643, 387, 899, 67, 579, +323, 835, 195, 707, 451, 963, 35, 547, 291, 803, 163, 675, 419, 931, 99, +611, 355, 867, 227, 739, 483, 995, 19, 531, 275, 787, 147, 659, 403, 915, +83, 595, 339, 851, 211, 723, 467, 979, 51, 563, 307, 819, 179, 691, 435, +947, 115, 627, 371, 883, 243, 755, 499, 1011, 11, 523, 267, 779, 139, 651, +395, 907, 75, 587, 331, 843, 203, 715, 459, 971, 43, 555, 299, 811, 171, +683, 427, 939, 107, 619, 363, 875, 235, 747, 491, 1003, 27, 539, 283, 795, +155, 667, 411, 923, 91, 603, 347, 859, 219, 731, 475, 987, 59, 571, 315, +827, 187, 699, 443, 955, 123, 635, 379, 891, 251, 763, 507, 1019, 7, 519, +263, 775, 135, 647, 391, 903, 71, 583, 327, 839, 199, 711, 455, 967, 39, +551, 295, 807, 167, 679, 423, 935, 103, 615, 359, 871, 231, 743, 487, 999, +23, 535, 279, 791, 151, 663, 407, 919, 87, 599, 343, 855, 215, 727, 471, +983, 55, 567, 311, 823, 183, 695, 439, 951, 119, 631, 375, 887, 247, 759, +503, 1015, 15, 527, 271, 783, 143, 655, 399, 911, 79, 591, 335, 847, 207, +719, 463, 975, 47, 559, 303, 815, 175, 687, 431, 943, 111, 623, 367, 879, +239, 751, 495, 1007, 31, 543, 287, 799, 159, 671, 415, 927, 95, 607, 351, +863, 223, 735, 479, 991, 63, 575, 319, 831, 191, 703, 447, 959, 127, 639, +383, 895, 255, 767, 511, 1023}; + +int Soloud_fft_bitrev_8[256] = { +0, 128, 64, 192, 32, 160, 96, 224, 16, 144, 80, 208, 48, 176, 112, 240, +8, 136, 72, 200, 40, 168, 104, 232, 24, 152, 88, 216, 56, 184, 120, 248, +4, 132, 68, 196, 36, 164, 100, 228, 20, 148, 84, 212, 52, 180, 116, 244, +12, 140, 76, 204, 44, 172, 108, 236, 28, 156, 92, 220, 60, 188, 124, 252, +2, 130, 66, 194, 34, 162, 98, 226, 18, 146, 82, 210, 50, 178, 114, 242, +10, 138, 74, 202, 42, 170, 106, 234, 26, 154, 90, 218, 58, 186, 122, 250, +6, 134, 70, 198, 38, 166, 102, 230, 22, 150, 86, 214, 54, 182, 118, 246, +14, 142, 78, 206, 46, 174, 110, 238, 30, 158, 94, 222, 62, 190, 126, 254, +1, 129, 65, 193, 33, 161, 97, 225, 17, 145, 81, 209, 49, 177, 113, 241, +9, 137, 73, 201, 41, 169, 105, 233, 25, 153, 89, 217, 57, 185, 121, 249, +5, 133, 69, 197, 37, 165, 101, 229, 21, 149, 85, 213, 53, 181, 117, 245, +13, 141, 77, 205, 45, 173, 109, 237, 29, 157, 93, 221, 61, 189, 125, 253, +3, 131, 67, 195, 35, 163, 99, 227, 19, 147, 83, 211, 51, 179, 115, 243, +11, 139, 75, 203, 43, 171, 107, 235, 27, 155, 91, 219, 59, 187, 123, 251, +7, 135, 71, 199, 39, 167, 103, 231, 23, 151, 87, 215, 55, 183, 119, 247, +15, 143, 79, 207, 47, 175, 111, 239, 31, 159, 95, 223, 63, 191, 127, 255 +}; + +float Soloud_fft_trig_10[508] = { +1.000000000000000000f, 0.923879504203796390f, 0.707106769084930420f, +0.382683396339416500f, 1.000000000000000000f, 0.980785250663757320f, +0.923879504203796390f, 0.831469595432281490f, 0.707106769084930420f, +0.555570185184478760f, 0.382683396339416500f, 0.195090278983116150f, +1.000000000000000000f, 0.995184719562530520f, 0.980785250663757320f, +0.956940352916717530f, 0.923879504203796390f, 0.881921231746673580f, +0.831469595432281490f, 0.773010432720184330f, 0.707106769084930420f, +0.634393274784088130f, 0.555570185184478760f, 0.471396714448928830f, +0.382683396339416500f, 0.290284633636474610f, 0.195090278983116150f, +0.098017096519470215f, 1.000000000000000000f, 0.998795449733734130f, +0.995184719562530520f, 0.989176511764526370f, 0.980785250663757320f, +0.970031261444091800f, 0.956940352916717530f, 0.941544055938720700f, +0.923879504203796390f, 0.903989315032958980f, 0.881921231746673580f, +0.857728600502014160f, 0.831469595432281490f, 0.803207516670227050f, +0.773010432720184330f, 0.740951120853424070f, 0.707106769084930420f, +0.671558916568756100f, 0.634393274784088130f, 0.595699310302734380f, +0.555570185184478760f, 0.514102697372436520f, 0.471396714448928830f, +0.427555054426193240f, 0.382683396339416500f, 0.336889833211898800f, +0.290284633636474610f, 0.242980137467384340f, 0.195090278983116150f, +0.146730437874794010f, 0.098017096519470215f, 0.049067631363868713f, +1.000000000000000000f, 0.999698817729949950f, 0.998795449733734130f, +0.997290432453155520f, 0.995184719562530520f, 0.992479562759399410f, +0.989176511764526370f, 0.985277652740478520f, 0.980785250663757320f, +0.975702106952667240f, 0.970031261444091800f, 0.963776051998138430f, +0.956940352916717530f, 0.949528157711029050f, 0.941544055938720700f, +0.932992815971374510f, 0.923879504203796390f, 0.914209723472595210f, +0.903989315032958980f, 0.893224298954010010f, 0.881921231746673580f, +0.870086967945098880f, 0.857728600502014160f, 0.844853579998016360f, +0.831469595432281490f, 0.817584812641143800f, 0.803207516670227050f, +0.788346409797668460f, 0.773010432720184330f, 0.757208824157714840f, +0.740951120853424070f, 0.724247097969055180f, 0.707106769084930420f, +0.689540505409240720f, 0.671558916568756100f, 0.653172850608825680f, +0.634393274784088130f, 0.615231573581695560f, 0.595699310302734380f, +0.575808167457580570f, 0.555570185184478760f, 0.534997582435607910f, +0.514102697372436520f, 0.492898166179656980f, 0.471396714448928830f, +0.449611306190490720f, 0.427555054426193240f, 0.405241280794143680f, +0.382683396339416500f, 0.359894990921020510f, 0.336889833211898800f, +0.313681721687316890f, 0.290284633636474610f, 0.266712725162506100f, +0.242980137467384340f, 0.219101205468177800f, 0.195090278983116150f, +0.170961856842041020f, 0.146730437874794010f, 0.122410632669925690f, +0.098017096519470215f, 0.073564521968364716f, 0.049067631363868713f, +0.024541186168789864f, 1.000000000000000000f, 0.999924719333648680f, +0.999698817729949950f, 0.999322354793548580f, 0.998795449733734130f, +0.998118102550506590f, 0.997290432453155520f, 0.996312618255615230f, +0.995184719562530520f, 0.993906974792480470f, 0.992479562759399410f, +0.990902662277221680f, 0.989176511764526370f, 0.987301409244537350f, +0.985277652740478520f, 0.983105480670928960f, 0.980785250663757320f, +0.978317379951477050f, 0.975702106952667240f, 0.972939968109130860f, +0.970031261444091800f, 0.966976463794708250f, 0.963776051998138430f, +0.960430502891540530f, 0.956940352916717530f, 0.953306019306182860f, +0.949528157711029050f, 0.945607304573059080f, 0.941544055938720700f, +0.937339007854461670f, 0.932992815971374510f, 0.928506076335906980f, +0.923879504203796390f, 0.919113874435424800f, 0.914209723472595210f, +0.909168004989624020f, 0.903989315032958980f, 0.898674488067626950f, +0.893224298954010010f, 0.887639641761779790f, 0.881921231746673580f, +0.876070082187652590f, 0.870086967945098880f, 0.863972842693328860f, +0.857728600502014160f, 0.851355195045471190f, 0.844853579998016360f, +0.838224709033966060f, 0.831469595432281490f, 0.824589312076568600f, +0.817584812641143800f, 0.810457170009613040f, 0.803207516670227050f, +0.795836865901947020f, 0.788346409797668460f, 0.780737221240997310f, +0.773010432720184330f, 0.765167236328125000f, 0.757208824157714840f, +0.749136388301849370f, 0.740951120853424070f, 0.732654273509979250f, +0.724247097969055180f, 0.715730786323547360f, 0.707106769084930420f, +0.698376238346099850f, 0.689540505409240720f, 0.680601000785827640f, +0.671558916568756100f, 0.662415742874145510f, 0.653172850608825680f, +0.643831551074981690f, 0.634393274784088130f, 0.624859452247619630f, +0.615231573581695560f, 0.605511009693145750f, 0.595699310302734380f, +0.585797846317291260f, 0.575808167457580570f, 0.565731763839721680f, +0.555570185184478760f, 0.545324981212615970f, 0.534997582435607910f, +0.524589657783508300f, 0.514102697372436520f, 0.503538370132446290f, +0.492898166179656980f, 0.482183754444122310f, 0.471396714448928830f, +0.460538685321807860f, 0.449611306190490720f, 0.438616216182708740f, +0.427555054426193240f, 0.416429519653320310f, 0.405241280794143680f, +0.393992006778717040f, 0.382683396339416500f, 0.371317178010940550f, +0.359894990921020510f, 0.348418653011322020f, 0.336889833211898800f, +0.325310260057449340f, 0.313681721687316890f, 0.302005916833877560f, +0.290284633636474610f, 0.278519660234451290f, 0.266712725162506100f, +0.254865616559982300f, 0.242980137467384340f, 0.231058076024055480f, +0.219101205468177800f, 0.207111343741416930f, 0.195090278983116150f, +0.183039844036102290f, 0.170961856842041020f, 0.158858105540275570f, +0.146730437874794010f, 0.134580671787261960f, 0.122410632669925690f, +0.110222168266773220f, 0.098017096519470215f, 0.085797272622585297f, +0.073564521968364716f, 0.061320696026086807f, 0.049067631363868713f, +0.036807179450988770f, 0.024541186168789864f, 0.012271494604647160f, +1.000000000000000000f, 0.999981164932250980f, 0.999924719333648680f, +0.999830603599548340f, 0.999698817729949950f, 0.999529421329498290f, +0.999322354793548580f, 0.999077737331390380f, 0.998795449733734130f, +0.998475551605224610f, 0.998118102550506590f, 0.997723042964935300f, +0.997290432453155520f, 0.996820271015167240f, 0.996312618255615230f, +0.995767414569854740f, 0.995184719562530520f, 0.994564592838287350f, +0.993906974792480470f, 0.993211925029754640f, 0.992479562759399410f, +0.991709768772125240f, 0.990902662277221680f, 0.990058183670043950f, +0.989176511764526370f, 0.988257586956024170f, 0.987301409244537350f, +0.986308097839355470f, 0.985277652740478520f, 0.984210073947906490f, +0.983105480670928960f, 0.981963872909545900f, 0.980785250663757320f, +0.979569792747497560f, 0.978317379951477050f, 0.977028131484985350f, +0.975702106952667240f, 0.974339365959167480f, 0.972939968109130860f, +0.971503913402557370f, 0.970031261444091800f, 0.968522071838378910f, +0.966976463794708250f, 0.965394437313079830f, 0.963776051998138430f, +0.962121427059173580f, 0.960430502891540530f, 0.958703458309173580f, +0.956940352916717530f, 0.955141186714172360f, 0.953306019306182860f, +0.951435029506683350f, 0.949528157711029050f, 0.947585582733154300f, +0.945607304573059080f, 0.943593442440032960f, 0.941544055938720700f, +0.939459204673767090f, 0.937339007854461670f, 0.935183525085449220f, +0.932992815971374510f, 0.930766940116882320f, 0.928506076335906980f, +0.926210224628448490f, 0.923879504203796390f, 0.921514034271240230f, +0.919113874435424800f, 0.916679084300994870f, 0.914209723472595210f, +0.911706030368804930f, 0.909168004989624020f, 0.906595706939697270f, +0.903989315032958980f, 0.901348829269409180f, 0.898674488067626950f, +0.895966231822967530f, 0.893224298954010010f, 0.890448689460754390f, +0.887639641761779790f, 0.884797096252441410f, 0.881921231746673580f, +0.879012227058410640f, 0.876070082187652590f, 0.873094975948333740f, +0.870086967945098880f, 0.867046236991882320f, 0.863972842693328860f, +0.860866904258728030f, 0.857728600502014160f, 0.854557991027832030f, +0.851355195045471190f, 0.848120331764221190f, 0.844853579998016360f, +0.841554939746856690f, 0.838224709033966060f, 0.834862887859344480f, +0.831469595432281490f, 0.828045010566711430f, 0.824589312076568600f, +0.821102499961853030f, 0.817584812641143800f, 0.814036309719085690f, +0.810457170009613040f, 0.806847572326660160f, 0.803207516670227050f, +0.799537241458892820f, 0.795836865901947020f, 0.792106568813323970f, +0.788346409797668460f, 0.784556567668914790f, 0.780737221240997310f, +0.776888430118560790f, 0.773010432720184330f, 0.769103348255157470f, +0.765167236328125000f, 0.761202394962310790f, 0.757208824157714840f, +0.753186762332916260f, 0.749136388301849370f, 0.745057761669158940f, +0.740951120853424070f, 0.736816525459289550f, 0.732654273509979250f, +0.728464365005493160f, 0.724247097969055180f, 0.720002472400665280f, +0.715730786323547360f, 0.711432158946990970f, 0.707106769084930420f, +0.702754735946655270f, 0.698376238346099850f, 0.693971455097198490f, +0.689540505409240720f, 0.685083627700805660f, 0.680601000785827640f, +0.676092684268951420f, 0.671558916568756100f, 0.666999876499176030f, +0.662415742874145510f, 0.657806694507598880f, 0.653172850608825680f, +0.648514389991760250f, 0.643831551074981690f, 0.639124453067779540f, +0.634393274784088130f, 0.629638195037841800f, 0.624859452247619630f, +0.620057165622711180f, 0.615231573581695560f, 0.610382795333862300f, +0.605511009693145750f, 0.600616455078125000f, 0.595699310302734380f, +0.590759694576263430f, 0.585797846317291260f, 0.580813944339752200f, +0.575808167457580570f, 0.570780694484710690f, 0.565731763839721680f, +0.560661554336547850f, 0.555570185184478760f, 0.550457954406738280f, +0.545324981212615970f, 0.540171444416046140f, 0.534997582435607910f, +0.529803574085235600f, 0.524589657783508300f, 0.519355952739715580f, +0.514102697372436520f, 0.508830130100250240f, 0.503538370132446290f, +0.498227655887603760f, 0.492898166179656980f, 0.487550139427185060f, +0.482183754444122310f, 0.476799190044403080f, 0.471396714448928830f, +0.465976476669311520f, 0.460538685321807860f, 0.455083549022674560f, +0.449611306190490720f, 0.444122105836868290f, 0.438616216182708740f, +0.433093786239624020f, 0.427555054426193240f, 0.422000229358673100f, +0.416429519653320310f, 0.410843133926391600f, 0.405241280794143680f, +0.399624168872833250f, 0.393992006778717040f, 0.388345003128051760f, +0.382683396339416500f, 0.377007365226745610f, 0.371317178010940550f, +0.365612953901290890f, 0.359894990921020510f, 0.354163497686386110f, +0.348418653011322020f, 0.342660695314407350f, 0.336889833211898800f, +0.331106275320053100f, 0.325310260057449340f, 0.319501996040344240f, +0.313681721687316890f, 0.307849615812301640f, 0.302005916833877560f, +0.296150863170623780f, 0.290284633636474610f, 0.284407496452331540f, +0.278519660234451290f, 0.272621333599090580f, 0.266712725162506100f, +0.260794073343276980f, 0.254865616559982300f, 0.248927563428878780f, +0.242980137467384340f, 0.237023577094078060f, 0.231058076024055480f, +0.225083872675895690f, 0.219101205468177800f, 0.213110283017158510f, +0.207111343741416930f, 0.201104596257209780f, 0.195090278983116150f, +0.189068630337715150f, 0.183039844036102290f, 0.177004188299179080f, +0.170961856842041020f, 0.164913088083267210f, 0.158858105540275570f, +0.152797147631645200f, 0.146730437874794010f, 0.140658199787139890f, +0.134580671787261960f, 0.128498077392578130f, 0.122410632669925690f, +0.116318590939044950f, 0.110222168266773220f, 0.104121595621109010f, +0.098017096519470215f, 0.091908916831016541f, 0.085797272622585297f, +0.079682394862174988f, 0.073564521968364716f, 0.067443877458572388f, +0.061320696026086807f, 0.055195201188325882f, 0.049067631363868713f, +0.042938213795423508f, 0.036807179450988770f, 0.030674761161208153f, +0.024541186168789864f, 0.018406687304377556f, 0.012271494604647160f, +0.006135840900242329f +}; + +float Soloud_fft_trig_8[124] = { +1.000000000000000000f, 0.923879504203796390f, 0.707106769084930420f, +0.382683396339416500f, 1.000000000000000000f, 0.980785250663757320f, +0.923879504203796390f, 0.831469595432281490f, 0.707106769084930420f, +0.555570185184478760f, 0.382683396339416500f, 0.195090278983116150f, +1.000000000000000000f, 0.995184719562530520f, 0.980785250663757320f, +0.956940352916717530f, 0.923879504203796390f, 0.881921231746673580f, +0.831469595432281490f, 0.773010432720184330f, 0.707106769084930420f, +0.634393274784088130f, 0.555570185184478760f, 0.471396714448928830f, +0.382683396339416500f, 0.290284633636474610f, 0.195090278983116150f, +0.098017096519470215f, 1.000000000000000000f, 0.998795449733734130f, +0.995184719562530520f, 0.989176511764526370f, 0.980785250663757320f, +0.970031261444091800f, 0.956940352916717530f, 0.941544055938720700f, +0.923879504203796390f, 0.903989315032958980f, 0.881921231746673580f, +0.857728600502014160f, 0.831469595432281490f, 0.803207516670227050f, +0.773010432720184330f, 0.740951120853424070f, 0.707106769084930420f, +0.671558916568756100f, 0.634393274784088130f, 0.595699310302734380f, +0.555570185184478760f, 0.514102697372436520f, 0.471396714448928830f, +0.427555054426193240f, 0.382683396339416500f, 0.336889833211898800f, +0.290284633636474610f, 0.242980137467384340f, 0.195090278983116150f, +0.146730437874794010f, 0.098017096519470215f, 0.049067631363868713f, +1.000000000000000000f, 0.999698817729949950f, 0.998795449733734130f, +0.997290432453155520f, 0.995184719562530520f, 0.992479562759399410f, +0.989176511764526370f, 0.985277652740478520f, 0.980785250663757320f, +0.975702106952667240f, 0.970031261444091800f, 0.963776051998138430f, +0.956940352916717530f, 0.949528157711029050f, 0.941544055938720700f, +0.932992815971374510f, 0.923879504203796390f, 0.914209723472595210f, +0.903989315032958980f, 0.893224298954010010f, 0.881921231746673580f, +0.870086967945098880f, 0.857728600502014160f, 0.844853579998016360f, +0.831469595432281490f, 0.817584812641143800f, 0.803207516670227050f, +0.788346409797668460f, 0.773010432720184330f, 0.757208824157714840f, +0.740951120853424070f, 0.724247097969055180f, 0.707106769084930420f, +0.689540505409240720f, 0.671558916568756100f, 0.653172850608825680f, +0.634393274784088130f, 0.615231573581695560f, 0.595699310302734380f, +0.575808167457580570f, 0.555570185184478760f, 0.534997582435607910f, +0.514102697372436520f, 0.492898166179656980f, 0.471396714448928830f, +0.449611306190490720f, 0.427555054426193240f, 0.405241280794143680f, +0.382683396339416500f, 0.359894990921020510f, 0.336889833211898800f, +0.313681721687316890f, 0.290284633636474610f, 0.266712725162506100f, +0.242980137467384340f, 0.219101205468177800f, 0.195090278983116150f, +0.170961856842041020f, 0.146730437874794010f, 0.122410632669925690f, +0.098017096519470215f, 0.073564521968364716f, 0.049067631363868713f, +0.024541186168789864f +}; + diff --git a/src/soloud/src/core/soloud_file.cpp b/src/soloud/src/core/soloud_file.cpp new file mode 100644 index 0000000..5568fce --- /dev/null +++ b/src/soloud/src/core/soloud_file.cpp @@ -0,0 +1,305 @@ +/* +SoLoud audio engine +Copyright (c) 2013-2015 Jari Komppa + +This software is provided 'as-is', without any express or implied +warranty. In no event will the authors be held liable for any damages +arising from the use of this software. + +Permission is granted to anyone to use this software for any purpose, +including commercial applications, and to alter it and redistribute it +freely, subject to the following restrictions: + +1. The origin of this software must not be misrepresented; you must not +claim that you wrote the original software. If you use this software +in a product, an acknowledgment in the product documentation would be +appreciated but is not required. + +2. Altered source versions must be plainly marked as such, and must not be +misrepresented as being the original software. + +3. This notice may not be removed or altered from any source +distribution. +*/ + +#undef _CRT_SECURE_NO_WARNINGS +#define _CRT_SECURE_NO_WARNINGS + +#include +#include +#include "soloud.h" +#include "soloud_file.h" + +namespace SoLoud +{ + unsigned int File::read8() + { + unsigned char d = 0; + read((unsigned char*)&d, 1); + return d; + } + + unsigned int File::read16() + { + unsigned short d = 0; + read((unsigned char*)&d, 2); + return d; + } + + unsigned int File::read32() + { + unsigned int d = 0; + read((unsigned char*)&d, 4); + return d; + } + +DiskFile::DiskFile(FILE *fp): +mFileHandle(fp) +{ + +} + + unsigned int DiskFile::read(unsigned char *aDst, unsigned int aBytes) + { + return (unsigned int)fread(aDst, 1, aBytes, mFileHandle); + } + + unsigned int DiskFile::length() + { + if (!mFileHandle) + return 0; + int pos = ftell(mFileHandle); + fseek(mFileHandle, 0, SEEK_END); + int len = ftell(mFileHandle); + fseek(mFileHandle, pos, SEEK_SET); + return len; + } + + void DiskFile::seek(int aOffset) + { + fseek(mFileHandle, aOffset, SEEK_SET); + } + + unsigned int DiskFile::pos() + { + return ftell(mFileHandle); + } + + FILE *DiskFile::getFilePtr() + { + return mFileHandle; + } + + DiskFile::~DiskFile() + { + if (mFileHandle) + fclose(mFileHandle); + } + + DiskFile::DiskFile() + { + mFileHandle = 0; + } + + result DiskFile::open(const char *aFilename) + { + if (!aFilename) + return INVALID_PARAMETER; + mFileHandle = fopen(aFilename, "rb"); + if (!mFileHandle) + return FILE_NOT_FOUND; + return SO_NO_ERROR; + } + + int DiskFile::eof() + { + return feof(mFileHandle); + } + + + + unsigned int MemoryFile::read(unsigned char *aDst, unsigned int aBytes) + { + if (mOffset + aBytes >= mDataLength) + aBytes = mDataLength - mOffset; + + memcpy(aDst, mDataPtr + mOffset, aBytes); + mOffset += aBytes; + + return aBytes; + } + + unsigned int MemoryFile::length() + { + return mDataLength; + } + + void MemoryFile::seek(int aOffset) + { + if (aOffset >= 0) + mOffset = aOffset; + else + mOffset = mDataLength + aOffset; + if (mOffset > mDataLength-1) + mOffset = mDataLength-1; + } + + unsigned int MemoryFile::pos() + { + return mOffset; + } + + unsigned char * MemoryFile::getMemPtr() + { + return mDataPtr; + } + + MemoryFile::~MemoryFile() + { + if (mDataOwned) + delete[] mDataPtr; + } + + MemoryFile::MemoryFile() + { + mDataPtr = 0; + mDataLength = 0; + mOffset = 0; + mDataOwned = false; + } + + result MemoryFile::openMem(unsigned char *aData, unsigned int aDataLength, bool aCopy, bool aTakeOwnership) + { + if (aData == NULL || aDataLength == 0) + return INVALID_PARAMETER; + + if (mDataOwned) + delete[] mDataPtr; + mDataPtr = 0; + mOffset = 0; + + mDataLength = aDataLength; + + if (aCopy) + { + mDataOwned = true; + mDataPtr = new unsigned char[aDataLength]; + if (mDataPtr == NULL) + return OUT_OF_MEMORY; + memcpy(mDataPtr, aData, aDataLength); + return SO_NO_ERROR; + } + + mDataPtr = aData; + mDataOwned = aTakeOwnership; + return SO_NO_ERROR; + } + + result MemoryFile::openToMem(const char *aFile) + { + if (!aFile) + return INVALID_PARAMETER; + if (mDataOwned) + delete[] mDataPtr; + mDataPtr = 0; + mOffset = 0; + + DiskFile df; + int res = df.open(aFile); + if (res != SO_NO_ERROR) + return res; + + mDataLength = df.length(); + mDataPtr = new unsigned char[mDataLength]; + if (mDataPtr == NULL) + return OUT_OF_MEMORY; + df.read(mDataPtr, mDataLength); + mDataOwned = true; + return SO_NO_ERROR; + } + + result MemoryFile::openFileToMem(File *aFile) + { + if (!aFile) + return INVALID_PARAMETER; + if (mDataOwned) + delete[] mDataPtr; + mDataPtr = 0; + mOffset = 0; + + mDataLength = aFile->length(); + mDataPtr = new unsigned char[mDataLength]; + if (mDataPtr == NULL) + return OUT_OF_MEMORY; + aFile->read(mDataPtr, mDataLength); + mDataOwned = true; + return SO_NO_ERROR; + } + + int MemoryFile::eof() + { + if (mOffset >= mDataLength) + return 1; + return 0; + } +} + +extern "C" +{ + int Soloud_Filehack_fgetc(Soloud_Filehack *f) + { + SoLoud::File *fp = (SoLoud::File *)f; + if (fp->eof()) + return EOF; + return fp->read8(); + } + + int Soloud_Filehack_fread(void *dst, int s, int c, Soloud_Filehack *f) + { + SoLoud::File *fp = (SoLoud::File *)f; + return fp->read((unsigned char*)dst, s*c) / s; + + } + + int Soloud_Filehack_fseek(Soloud_Filehack *f, int idx, int base) + { + SoLoud::File *fp = (SoLoud::File *)f; + switch (base) + { + case SEEK_CUR: + fp->seek(fp->pos() + idx); + break; + case SEEK_END: + fp->seek(fp->length() + idx); + break; + default: + fp->seek(idx); + } + return 0; + } + + int Soloud_Filehack_ftell(Soloud_Filehack *f) + { + SoLoud::File *fp = (SoLoud::File *)f; + return fp->pos(); + } + + int Soloud_Filehack_fclose(Soloud_Filehack *f) + { + SoLoud::File *fp = (SoLoud::File *)f; + delete fp; + return 0; + } + + Soloud_Filehack * Soloud_Filehack_fopen(const char *aFilename, char *aMode) + { + SoLoud::DiskFile *df = new SoLoud::DiskFile(); + int res = df->open(aFilename); + if (res != SoLoud::SO_NO_ERROR) + { + delete df; + df = 0; + } + return (Soloud_Filehack*)df; + } +} diff --git a/src/soloud/src/core/soloud_filter.cpp b/src/soloud/src/core/soloud_filter.cpp new file mode 100644 index 0000000..0ae5679 --- /dev/null +++ b/src/soloud/src/core/soloud_filter.cpp @@ -0,0 +1,142 @@ +/* +SoLoud audio engine +Copyright (c) 2013-2014 Jari Komppa + +This software is provided 'as-is', without any express or implied +warranty. In no event will the authors be held liable for any damages +arising from the use of this software. + +Permission is granted to anyone to use this software for any purpose, +including commercial applications, and to alter it and redistribute it +freely, subject to the following restrictions: + + 1. The origin of this software must not be misrepresented; you must not + claim that you wrote the original software. If you use this software + in a product, an acknowledgment in the product documentation would be + appreciated but is not required. + + 2. Altered source versions must be plainly marked as such, and must not be + misrepresented as being the original software. + + 3. This notice may not be removed or altered from any source + distribution. +*/ + +#include "soloud.h" + +namespace SoLoud +{ + + Filter::Filter() + { + } + + Filter::~Filter() + { + } + + FilterInstance::FilterInstance() + { + mNumParams = 0; + mParamChanged = 0; + mParam = 0; + mParamFader = 0; + } + + result FilterInstance::initParams(int aNumParams) + { + mNumParams = aNumParams; + delete[] mParam; + delete[] mParamFader; + mParam = new float[mNumParams]; + mParamFader = new Fader[mNumParams]; + + if (mParam == NULL || mParamFader == NULL) + { + delete[] mParam; + delete[] mParamFader; + mParam = NULL; + mParamFader = NULL; + mNumParams = 0; + return OUT_OF_MEMORY; + } + + unsigned int i; + for (i = 0; i < mNumParams; i++) + { + mParam[i] = 0; + mParamFader[i].mActive = 0; + } + mParam[0] = 1; // set 'wet' to 1 + + return 0; + } + + void FilterInstance::updateParams(double aTime) + { + unsigned int i; + for (i = 0; i < mNumParams; i++) + { + if (mParamFader[i].mActive > 0) + { + mParamChanged |= 1 << i; + mParam[i] = mParamFader[i].get(aTime); + } + } + } + + FilterInstance::~FilterInstance() + { + delete[] mParam; + delete[] mParamFader; + } + + void FilterInstance::setFilterParameter(unsigned int aAttributeId, float aValue) + { + if (aAttributeId >= mNumParams) + return; + + mParamFader[aAttributeId].mActive = 0; + mParam[aAttributeId] = aValue; + mParamChanged |= 1 << aAttributeId; + } + + void FilterInstance::fadeFilterParameter(unsigned int aAttributeId, float aTo, double aTime, double aStartTime) + { + if (aAttributeId >= mNumParams || aTime <= 0 || aTo == mParam[aAttributeId]) + return; + + mParamFader[aAttributeId].set(mParam[aAttributeId], aTo, aTime, aStartTime); + } + + void FilterInstance::oscillateFilterParameter(unsigned int aAttributeId, float aFrom, float aTo, double aTime, double aStartTime) + { + if (aAttributeId >= mNumParams || aTime <= 0 || aFrom == aTo) + return; + + mParamFader[aAttributeId].setLFO(aFrom, aTo, aTime, aStartTime); + } + + float FilterInstance::getFilterParameter(unsigned int aAttributeId) + { + if (aAttributeId >= mNumParams) + return 0; + + return mParam[aAttributeId]; + } + + void FilterInstance::filter(float *aBuffer, unsigned int aSamples, unsigned int aChannels, float aSamplerate, double aTime) + { + unsigned int i; + for (i = 0; i < aChannels; i++) + { + filterChannel(aBuffer + i * aSamples, aSamples, aSamplerate, aTime, i, aChannels); + } + } + + void FilterInstance::filterChannel(float *aBuffer, unsigned int aSamples, float aSamplerate, double aTime, unsigned int aChannel, unsigned int aChannels) + { + } + +}; + diff --git a/src/soloud/src/core/soloud_queue.cpp b/src/soloud/src/core/soloud_queue.cpp new file mode 100644 index 0000000..9f9ce4f --- /dev/null +++ b/src/soloud/src/core/soloud_queue.cpp @@ -0,0 +1,176 @@ +/* +SoLoud audio engine +Copyright (c) 2013-2018 Jari Komppa + +This software is provided 'as-is', without any express or implied +warranty. In no event will the authors be held liable for any damages +arising from the use of this software. + +Permission is granted to anyone to use this software for any purpose, +including commercial applications, and to alter it and redistribute it +freely, subject to the following restrictions: + + 1. The origin of this software must not be misrepresented; you must not + claim that you wrote the original software. If you use this software + in a product, an acknowledgment in the product documentation would be + appreciated but is not required. + + 2. Altered source versions must be plainly marked as such, and must not be + misrepresented as being the original software. + + 3. This notice may not be removed or altered from any source + distribution. +*/ + +#include "soloud.h" + +namespace SoLoud +{ + QueueInstance::QueueInstance(Queue *aParent) + { + mParent = aParent; + mFlags |= PROTECTED; + } + + unsigned int QueueInstance::getAudio(float *aBuffer, unsigned int aSamplesToRead, unsigned int aBufferSize) + { + if (mParent->mCount == 0) + { + return 0; + } + unsigned int copycount = aSamplesToRead; + unsigned int copyofs = 0; + while (copycount && mParent->mCount) + { + int readcount = mParent->mSource[mParent->mReadIndex]->getAudio(aBuffer + copyofs, copycount, aBufferSize); + copyofs += readcount; + copycount -= readcount; + if (mParent->mSource[mParent->mReadIndex]->hasEnded()) + { + delete mParent->mSource[mParent->mReadIndex]; + mParent->mSource[mParent->mReadIndex] = 0; + mParent->mReadIndex = (mParent->mReadIndex + 1) % SOLOUD_QUEUE_MAX; + mParent->mCount--; + } + } + return copyofs; + } + + bool QueueInstance::hasEnded() + { + return mParent->mCount == 0; + } + + QueueInstance::~QueueInstance() + { + } + + Queue::Queue() + { + mQueueHandle = 0; + mInstance = 0; + mReadIndex = 0; + mWriteIndex = 0; + mCount = 0; + } + + QueueInstance * Queue::createInstance() + { + if (mInstance) + { + stop(); + mInstance = 0; + } + mInstance = new QueueInstance(this); + return mInstance; + } + + void Queue::findQueueHandle() + { + // Find the channel the queue is playing on to calculate handle.. + int i; + for (i = 0; mQueueHandle == 0 && i < (signed)mSoloud->mHighestVoice; i++) + { + if (mSoloud->mVoice[i] == mInstance) + { + mQueueHandle = mSoloud->getHandleFromVoice(i); + } + } + } + + result Queue::play(AudioSource &aSound) + { + if (!mSoloud) + { + return INVALID_PARAMETER; + } + + findQueueHandle(); + + if (mQueueHandle == 0) + return INVALID_PARAMETER; + + if (mCount >= SOLOUD_QUEUE_MAX) + return OUT_OF_MEMORY; + + if (!aSound.mAudioSourceID) + { + aSound.mAudioSourceID = mSoloud->mAudioSourceID; + mSoloud->mAudioSourceID++; + } + + SoLoud::AudioSourceInstance *instance = aSound.createInstance(); + + if (instance == 0) + { + return OUT_OF_MEMORY; + } + + instance->mAudioSourceID = aSound.mAudioSourceID; + + mSoloud->lockAudioMutex(); + mSource[mWriteIndex] = instance; + mWriteIndex = (mWriteIndex + 1) % SOLOUD_QUEUE_MAX; + mCount++; + mSoloud->unlockAudioMutex(); + + return SO_NO_ERROR; + } + + + unsigned int Queue::getQueueCount() + { + unsigned int count; + mSoloud->lockAudioMutex(); + count = mCount; + mSoloud->unlockAudioMutex(); + return count; + } + + bool Queue::isCurrentlyPlaying(AudioSource &aSound) + { + if (mCount == 0 || aSound.mAudioSourceID == 0) + return false; + mSoloud->lockAudioMutex(); + bool res = mSource[mReadIndex]->mAudioSourceID == aSound.mAudioSourceID; + mSoloud->unlockAudioMutex(); + return res; + } + + result Queue::setParamsFromAudioSource(AudioSource &aSound) + { + mChannels = aSound.mChannels; + mBaseSamplerate = aSound.mBaseSamplerate; + + return SO_NO_ERROR; + } + + result Queue::setParams(float aSamplerate, unsigned int aChannels) + { + if (aChannels < 1 || aChannels > MAX_CHANNELS) + return INVALID_PARAMETER; + mChannels = aChannels; + mBaseSamplerate = aSamplerate; + return SO_NO_ERROR; + } +}; diff --git a/src/soloud/src/core/soloud_thread.cpp b/src/soloud/src/core/soloud_thread.cpp new file mode 100644 index 0000000..8b27c61 --- /dev/null +++ b/src/soloud/src/core/soloud_thread.cpp @@ -0,0 +1,310 @@ +/* +SoLoud audio engine +Copyright (c) 2013-2015 Jari Komppa + +This software is provided 'as-is', without any express or implied +warranty. In no event will the authors be held liable for any damages +arising from the use of this software. + +Permission is granted to anyone to use this software for any purpose, +including commercial applications, and to alter it and redistribute it +freely, subject to the following restrictions: + + 1. The origin of this software must not be misrepresented; you must not + claim that you wrote the original software. If you use this software + in a product, an acknowledgment in the product documentation would be + appreciated but is not required. + + 2. Altered source versions must be plainly marked as such, and must not be + misrepresented as being the original software. + + 3. This notice may not be removed or altered from any source + distribution. +*/ + +#if defined(_WIN32)||defined(_WIN64) +#include +#else +#include +#include +#endif + +#include "soloud.h" +#include "soloud_thread.h" + +namespace SoLoud +{ + namespace Thread + { +#ifdef WINDOWS_VERSION + struct ThreadHandleData + { + HANDLE thread; + }; + + void * createMutex() + { + CRITICAL_SECTION * cs = new CRITICAL_SECTION; + InitializeCriticalSectionAndSpinCount(cs, 100); + return (void*)cs; + } + + void destroyMutex(void *aHandle) + { + CRITICAL_SECTION *cs = (CRITICAL_SECTION*)aHandle; + DeleteCriticalSection(cs); + delete cs; + } + + void lockMutex(void *aHandle) + { + CRITICAL_SECTION *cs = (CRITICAL_SECTION*)aHandle; + if (cs) + { + EnterCriticalSection(cs); + } + } + + void unlockMutex(void *aHandle) + { + CRITICAL_SECTION *cs = (CRITICAL_SECTION*)aHandle; + if (cs) + { + LeaveCriticalSection(cs); + } + } + + struct soloud_thread_data + { + threadFunction mFunc; + void *mParam; + }; + + static DWORD WINAPI threadfunc(LPVOID d) + { + soloud_thread_data *p = (soloud_thread_data *)d; + p->mFunc(p->mParam); + delete p; + return 0; + } + + ThreadHandle createThread(threadFunction aThreadFunction, void *aParameter) + { + soloud_thread_data *d = new soloud_thread_data; + d->mFunc = aThreadFunction; + d->mParam = aParameter; + HANDLE h = CreateThread(NULL,0,threadfunc,d,0,NULL); + if (0 == h) + { + return 0; + } + ThreadHandleData *threadHandle = new ThreadHandleData; + threadHandle->thread = h; + return threadHandle; + } + + void sleep(int aMSec) + { + Sleep(aMSec); + } + + void wait(ThreadHandle aThreadHandle) + { + WaitForSingleObject(aThreadHandle->thread, INFINITE); + } + + void release(ThreadHandle aThreadHandle) + { + CloseHandle(aThreadHandle->thread); + delete aThreadHandle; + } + +#else // pthreads + struct ThreadHandleData + { + pthread_t thread; + }; + + void * createMutex() + { + pthread_mutex_t *mutex; + mutex = new pthread_mutex_t; + + pthread_mutexattr_t attr; + pthread_mutexattr_init(&attr); + + pthread_mutex_init(mutex, &attr); + + return (void*)mutex; + } + + void destroyMutex(void *aHandle) + { + pthread_mutex_t *mutex = (pthread_mutex_t*)aHandle; + + if (mutex) + { + pthread_mutex_destroy(mutex); + delete mutex; + } + } + + void lockMutex(void *aHandle) + { + pthread_mutex_t *mutex = (pthread_mutex_t*)aHandle; + if (mutex) + { + pthread_mutex_lock(mutex); + } + } + + void unlockMutex(void *aHandle) + { + pthread_mutex_t *mutex = (pthread_mutex_t*)aHandle; + if (mutex) + { + pthread_mutex_unlock(mutex); + } + } + + struct soloud_thread_data + { + threadFunction mFunc; + void *mParam; + }; + + static void * threadfunc(void * d) + { + soloud_thread_data *p = (soloud_thread_data *)d; + p->mFunc(p->mParam); + delete p; + return 0; + } + + ThreadHandle createThread(threadFunction aThreadFunction, void *aParameter) + { + soloud_thread_data *d = new soloud_thread_data; + d->mFunc = aThreadFunction; + d->mParam = aParameter; + + ThreadHandleData *threadHandle = new ThreadHandleData; + pthread_create(&threadHandle->thread, NULL, threadfunc, (void*)d); + return threadHandle; + } + + void sleep(int aMSec) + { + usleep(aMSec * 1000); + } + + void wait(ThreadHandle aThreadHandle) + { + pthread_join(aThreadHandle->thread, 0); + } + + void release(ThreadHandle aThreadHandle) + { + delete aThreadHandle; + } +#endif + + static void poolWorker(void *aParam) + { + Pool *myPool = (Pool*)aParam; + while (myPool->mRunning) + { + PoolTask *t = myPool->getWork(); + if (!t) + { + sleep(1); + } + else + { + t->work(); + } + } + } + + Pool::Pool() + { + mRunning = 0; + mThreadCount = 0; + mThread = 0; + mWorkMutex = 0; + mRobin = 0; + mMaxTask = 0; + } + + Pool::~Pool() + { + mRunning = 0; + int i; + for (i = 0; i < mThreadCount; i++) + { + wait(mThread[i]); + release(mThread[i]); + } + delete[] mThread; + if (mWorkMutex) + destroyMutex(mWorkMutex); + } + + void Pool::init(int aThreadCount) + { + if (aThreadCount > 0) + { + mMaxTask = 0; + mWorkMutex = createMutex(); + mRunning = 1; + mThreadCount = aThreadCount; + mThread = new ThreadHandle[aThreadCount]; + int i; + for (i = 0; i < mThreadCount; i++) + { + mThread[i] = createThread(poolWorker, this); + } + } + } + + void Pool::addWork(PoolTask *aTask) + { + if (mThreadCount == 0) + { + aTask->work(); + } + else + { + if (mWorkMutex) lockMutex(mWorkMutex); + if (mMaxTask == MAX_THREADPOOL_TASKS) + { + // If we're at max tasks, do the task on calling thread + // (we're in trouble anyway, might as well slow down adding more work) + if (mWorkMutex) unlockMutex(mWorkMutex); + aTask->work(); + } + else + { + mTaskArray[mMaxTask] = aTask; + mMaxTask++; + if (mWorkMutex) unlockMutex(mWorkMutex); + } + } + } + + PoolTask * Pool::getWork() + { + PoolTask *t = 0; + if (mWorkMutex) lockMutex(mWorkMutex); + if (mMaxTask > 0) + { + int r = mRobin % mMaxTask; + mRobin++; + t = mTaskArray[r]; + mTaskArray[r] = mTaskArray[mMaxTask - 1]; + mMaxTask--; + } + if (mWorkMutex) unlockMutex(mWorkMutex); + return t; + } + } +} diff --git a/src/soloud/src/filter/soloud_bassboostfilter.cpp b/src/soloud/src/filter/soloud_bassboostfilter.cpp new file mode 100644 index 0000000..67c1707 --- /dev/null +++ b/src/soloud/src/filter/soloud_bassboostfilter.cpp @@ -0,0 +1,65 @@ +/* +SoLoud audio engine +Copyright (c) 2013-2015 Jari Komppa + +This software is provided 'as-is', without any express or implied +warranty. In no event will the authors be held liable for any damages +arising from the use of this software. + +Permission is granted to anyone to use this software for any purpose, +including commercial applications, and to alter it and redistribute it +freely, subject to the following restrictions: + + 1. The origin of this software must not be misrepresented; you must not + claim that you wrote the original software. If you use this software + in a product, an acknowledgment in the product documentation would be + appreciated but is not required. + + 2. Altered source versions must be plainly marked as such, and must not be + misrepresented as being the original software. + + 3. This notice may not be removed or altered from any source + distribution. +*/ + +#include +#include "soloud.h" +#include "soloud_bassboostfilter.h" + + +namespace SoLoud +{ + BassboostFilterInstance::BassboostFilterInstance(BassboostFilter *aParent) + { + mParent = aParent; + initParams(2); + mParam[BOOST] = aParent->mBoost; + } + + void BassboostFilterInstance::fftFilterChannel(float *aFFTBuffer, unsigned int aSamples, float aSamplerate, time aTime, unsigned int aChannel, unsigned int aChannels) + { + unsigned int i; + for (i = 0; i < 2; i++) + { + aFFTBuffer[i * 2] *= mParam[BOOST]; + } + } + + result BassboostFilter::setParams(float aBoost) + { + if (aBoost < 0) + return INVALID_PARAMETER; + mBoost = aBoost; + return SO_NO_ERROR; + } + + BassboostFilter::BassboostFilter() + { + mBoost = 2; + } + + FilterInstance *BassboostFilter::createInstance() + { + return new BassboostFilterInstance(this); + } +} diff --git a/src/soloud/src/filter/soloud_biquadresonantfilter.cpp b/src/soloud/src/filter/soloud_biquadresonantfilter.cpp new file mode 100644 index 0000000..1b7e74f --- /dev/null +++ b/src/soloud/src/filter/soloud_biquadresonantfilter.cpp @@ -0,0 +1,182 @@ +/* +SoLoud audio engine +Copyright (c) 2013-2014 Jari Komppa + +This software is provided 'as-is', without any express or implied +warranty. In no event will the authors be held liable for any damages +arising from the use of this software. + +Permission is granted to anyone to use this software for any purpose, +including commercial applications, and to alter it and redistribute it +freely, subject to the following restrictions: + + 1. The origin of this software must not be misrepresented; you must not + claim that you wrote the original software. If you use this software + in a product, an acknowledgment in the product documentation would be + appreciated but is not required. + + 2. Altered source versions must be plainly marked as such, and must not be + misrepresented as being the original software. + + 3. This notice may not be removed or altered from any source + distribution. + +-- + +Based on "Using the Biquad Resonant Filter", +Phil Burk, Game Programming Gems 3, p. 606 +*/ + +#include +#include +#include "soloud.h" +#include "soloud_biquadresonantfilter.h" + +namespace SoLoud +{ + void BiquadResonantFilterInstance::calcBQRParams() + { + mDirty = 0; + + float omega = (float)((2.0f * M_PI * mParam[FREQUENCY]) / mParam[SAMPLERATE]); + float sin_omega = (float)sin(omega); + float cos_omega = (float)cos(omega); + float alpha = sin_omega / (2.0f * mParam[RESONANCE]); + float scalar = 1.0f / (1.0f + alpha); + + mActive = 1; + + switch (mFilterType) + { + case BiquadResonantFilter::NONE: + mActive = 0; + break; + case BiquadResonantFilter::LOWPASS: + mA0 = 0.5f * (1.0f - cos_omega) * scalar; + mA1 = (1.0f - cos_omega) * scalar; + mA2 = mA0; + mB1 = -2.0f * cos_omega * scalar; + mB2 = (1.0f - alpha) * scalar; + break; + case BiquadResonantFilter::HIGHPASS: + mA0 = 0.5f * (1.0f + cos_omega) * scalar; + mA1 = -(1.0f + cos_omega) * scalar; + mA2 = mA0; + mB1 = -2.0f * cos_omega * scalar; + mB2 = (1.0f - alpha) * scalar; + break; + case BiquadResonantFilter::BANDPASS: + mA0 = alpha * scalar; + mA1 = 0; + mA2 = -mA0; + mB1 = -2.0f * cos_omega * scalar; + mB2 = (1.0f - alpha) * scalar; + break; + } + } + + + BiquadResonantFilterInstance::BiquadResonantFilterInstance(BiquadResonantFilter *aParent) + { + int i; + for (i = 0; i < 2; i++) + { + mState[i].mX1 = 0; + mState[i].mY1 = 0; + mState[i].mX2 = 0; + mState[i].mY2 = 0; + } + + mParent = aParent; + mFilterType = aParent->mFilterType; + + initParams(4); + + mParam[SAMPLERATE] = aParent->mSampleRate; + mParam[RESONANCE] = aParent->mResonance; + mParam[FREQUENCY] = aParent->mFrequency; + mParam[WET] = 1; + + calcBQRParams(); + } + + void BiquadResonantFilterInstance::filterChannel(float *aBuffer, unsigned int aSamples, float aSamplerate, double aTime, unsigned int aChannel, unsigned int aChannels) + { + if (!mActive) + return; + + if (aChannel == 0) + { + updateParams(aTime); + + if (mParamChanged & ((1 << FREQUENCY) | (1 << RESONANCE) | (1 << SAMPLERATE))) + { + calcBQRParams(); + } + mParamChanged = 0; + } + + float x; + unsigned int i; + int c = 0; + + BQRStateData &s = mState[aChannel]; + + for (i = 0; i < aSamples; i +=2, c++) + { + // Generate outputs by filtering inputs. + x = aBuffer[c]; + s.mY2 = (mA0 * x) + (mA1 * s.mX1) + (mA2 * s.mX2) - (mB1 * s.mY1) - (mB2 * s.mY2); + aBuffer[c] += (s.mY2 - aBuffer[c]) * mParam[WET]; + + c++; + + // Permute filter operations to reduce data movement. + // Just substitute variables instead of doing mX1=x, etc. + s.mX2 = aBuffer[c]; + s.mY1 = (mA0 * s.mX2) + (mA1 * x) + (mA2 * s.mX1) - (mB1 * s.mY2) - (mB2 * s.mY1); + aBuffer[c] += (s.mY1 - aBuffer[c]) * mParam[WET]; + + // Only move a little data. + s.mX1 = s.mX2; + s.mX2 = x; + } + + // Apply a small impulse to filter to prevent arithmetic underflow, + // which can cause the FPU to interrupt the CPU. + s.mY1 += (float) 1.0E-26; + } + + + BiquadResonantFilterInstance::~BiquadResonantFilterInstance() + { + } + + BiquadResonantFilter::BiquadResonantFilter() + { + setParams(LOWPASS, 44100, 1000, 2); + } + + result BiquadResonantFilter::setParams(int aType, float aSampleRate, float aFrequency, float aResonance) + { + if (aType < 0 || aType > 3 || aSampleRate <= 0 || aFrequency <= 0 || aResonance <= 0) + return INVALID_PARAMETER; + + mFilterType = aType; + mSampleRate = aSampleRate; + mFrequency = aFrequency; + mResonance = aResonance; + + return 0; + } + + BiquadResonantFilter::~BiquadResonantFilter() + { + } + + + BiquadResonantFilterInstance *BiquadResonantFilter::createInstance() + { + return new BiquadResonantFilterInstance(this); + } +} diff --git a/src/soloud/src/filter/soloud_dcremovalfilter.cpp b/src/soloud/src/filter/soloud_dcremovalfilter.cpp new file mode 100644 index 0000000..f5db404 --- /dev/null +++ b/src/soloud/src/filter/soloud_dcremovalfilter.cpp @@ -0,0 +1,110 @@ +/* +SoLoud audio engine +Copyright (c) 2015 Jari Komppa + +This software is provided 'as-is', without any express or implied +warranty. In no event will the authors be held liable for any damages +arising from the use of this software. + +Permission is granted to anyone to use this software for any purpose, +including commercial applications, and to alter it and redistribute it +freely, subject to the following restrictions: + + 1. The origin of this software must not be misrepresented; you must not + claim that you wrote the original software. If you use this software + in a product, an acknowledgment in the product documentation would be + appreciated but is not required. + + 2. Altered source versions must be plainly marked as such, and must not be + misrepresented as being the original software. + + 3. This notice may not be removed or altered from any source + distribution. +*/ + +#include "soloud.h" +#include "soloud_dcremovalfilter.h" + +namespace SoLoud +{ + DCRemovalFilterInstance::DCRemovalFilterInstance(DCRemovalFilter *aParent) + { + mParent = aParent; + mBuffer = 0; + mBufferLength = 0; + mTotals = 0; + mOffset = 0; + initParams(1); + + } + + void DCRemovalFilterInstance::filter(float *aBuffer, unsigned int aSamples, unsigned int aChannels, float aSamplerate, double aTime) + { + updateParams(aTime); + + if (mBuffer == 0) + { + mBufferLength = (int)ceil(mParent->mLength * aSamplerate); + mBuffer = new float[mBufferLength * aChannels]; + mTotals = new float[aChannels]; + unsigned int i; + for (i = 0; i < aChannels; i++) + { + mTotals[i] = 0; + } + for (i = 0; i < mBufferLength * aChannels; i++) + { + mBuffer[i] = 0; + } + } + + unsigned int i, j; + int prevofs = (mOffset + mBufferLength - 1) % mBufferLength; + for (i = 0; i < aSamples; i++) + { + for (j = 0; j < aChannels; j++) + { + int chofs = j * mBufferLength; + int bchofs = j * aSamples; + + float n = aBuffer[i + bchofs]; + mTotals[j] -= mBuffer[mOffset + chofs]; + mTotals[j] += n; + mBuffer[mOffset + chofs] = n; + + n -= mTotals[j] / mBufferLength; + + aBuffer[i + bchofs] += (n - aBuffer[i + bchofs]) * mParam[0]; + } + prevofs = mOffset; + mOffset = (mOffset + 1) % mBufferLength; + } + } + + DCRemovalFilterInstance::~DCRemovalFilterInstance() + { + delete[] mBuffer; + delete[] mTotals; + } + + DCRemovalFilter::DCRemovalFilter() + { + mLength = 0.1f; + } + + result DCRemovalFilter::setParams(float aLength) + { + if (aLength <= 0) + return INVALID_PARAMETER; + + mLength = aLength; + + return 0; + } + + + FilterInstance *DCRemovalFilter::createInstance() + { + return new DCRemovalFilterInstance(this); + } +} diff --git a/src/soloud/src/filter/soloud_echofilter.cpp b/src/soloud/src/filter/soloud_echofilter.cpp new file mode 100644 index 0000000..a9063f5 --- /dev/null +++ b/src/soloud/src/filter/soloud_echofilter.cpp @@ -0,0 +1,106 @@ +/* +SoLoud audio engine +Copyright (c) 2013-2015 Jari Komppa + +This software is provided 'as-is', without any express or implied +warranty. In no event will the authors be held liable for any damages +arising from the use of this software. + +Permission is granted to anyone to use this software for any purpose, +including commercial applications, and to alter it and redistribute it +freely, subject to the following restrictions: + + 1. The origin of this software must not be misrepresented; you must not + claim that you wrote the original software. If you use this software + in a product, an acknowledgment in the product documentation would be + appreciated but is not required. + + 2. Altered source versions must be plainly marked as such, and must not be + misrepresented as being the original software. + + 3. This notice may not be removed or altered from any source + distribution. +*/ + +#include "soloud.h" +#include "soloud_echofilter.h" + +namespace SoLoud +{ + EchoFilterInstance::EchoFilterInstance(EchoFilter *aParent) + { + mParent = aParent; + mBuffer = 0; + mBufferLength = 0; + mOffset = 0; + initParams(1); + + } + + void EchoFilterInstance::filter(float *aBuffer, unsigned int aSamples, unsigned int aChannels, float aSamplerate, double aTime) + { + updateParams(aTime); + + if (mBuffer == 0) + { + mBufferLength = (int)ceil(mParent->mDelay * aSamplerate); + mBuffer = new float[mBufferLength * aChannels]; + unsigned int i; + for (i = 0; i < mBufferLength * aChannels; i++) + { + mBuffer[i] = 0; + } + } + + float decay = mParent->mDecay; + unsigned int i, j; + int prevofs = (mOffset + mBufferLength - 1) % mBufferLength; + for (i = 0; i < aSamples; i++) + { + for (j = 0; j < aChannels; j++) + { + int chofs = j * mBufferLength; + int bchofs = j * aSamples; + + mBuffer[mOffset + chofs] = mParent->mFilter * mBuffer[prevofs + chofs] + (1 - mParent->mFilter) * mBuffer[mOffset + chofs]; + + float n = aBuffer[i + bchofs] + mBuffer[mOffset + chofs] * decay; + mBuffer[mOffset + chofs] = n; + + aBuffer[i + bchofs] += (n - aBuffer[i + bchofs]) * mParam[0]; + } + prevofs = mOffset; + mOffset = (mOffset + 1) % mBufferLength; + } + } + + EchoFilterInstance::~EchoFilterInstance() + { + delete[] mBuffer; + } + + EchoFilter::EchoFilter() + { + mDelay = 0.3f; + mDecay = 0.7f; + mFilter = 0.0f; + } + + result EchoFilter::setParams(float aDelay, float aDecay, float aFilter) + { + if (aDelay <= 0 || aDecay <= 0 || aFilter < 0 || aFilter >= 1.0f) + return INVALID_PARAMETER; + + mDecay = aDecay; + mDelay = aDelay; + mFilter = aFilter; + + return 0; + } + + + FilterInstance *EchoFilter::createInstance() + { + return new EchoFilterInstance(this); + } +} diff --git a/src/soloud/src/filter/soloud_fftfilter.cpp b/src/soloud/src/filter/soloud_fftfilter.cpp new file mode 100644 index 0000000..6b7920d --- /dev/null +++ b/src/soloud/src/filter/soloud_fftfilter.cpp @@ -0,0 +1,143 @@ +/* +SoLoud audio engine +Copyright (c) 2013-2015 Jari Komppa + +This software is provided 'as-is', without any express or implied +warranty. In no event will the authors be held liable for any damages +arising from the use of this software. + +Permission is granted to anyone to use this software for any purpose, +including commercial applications, and to alter it and redistribute it +freely, subject to the following restrictions: + + 1. The origin of this software must not be misrepresented; you must not + claim that you wrote the original software. If you use this software + in a product, an acknowledgment in the product documentation would be + appreciated but is not required. + + 2. Altered source versions must be plainly marked as such, and must not be + misrepresented as being the original software. + + 3. This notice may not be removed or altered from any source + distribution. +*/ + +#include +#include "soloud.h" +#include "soloud_fftfilter.h" +#include "soloud_fft.h" + + +namespace SoLoud +{ + FFTFilterInstance::FFTFilterInstance() + { + mParent = 0; + mInputBuffer = 0; + mMixBuffer = 0; + mTemp = 0; + int i; + for (i = 0; i < MAX_CHANNELS; i++) + mOffset[i] = 0; + } + + FFTFilterInstance::FFTFilterInstance(FFTFilter *aParent) + { + mParent = aParent; + mInputBuffer = 0; + mMixBuffer = 0; + mTemp = 0; + int i; + for (i = 0; i < MAX_CHANNELS; i++) + mOffset[i] = 0; + initParams(1); + } + + void FFTFilterInstance::filterChannel(float *aBuffer, unsigned int aSamples, float aSamplerate, double aTime, unsigned int aChannel, unsigned int aChannels) + { + if (aChannel == 0) + { + updateParams(aTime); + } + + if (mInputBuffer == 0) + { + mInputBuffer = new float[512 * aChannels]; + mMixBuffer = new float[512 * aChannels]; + mTemp = new float[256]; + memset(mInputBuffer, 0x2f, sizeof(float) * 512 * aChannels); + memset(mMixBuffer, 0, sizeof(float) * 512 * aChannels); + } + + float * b = mTemp; + + int i; + unsigned int ofs = 0; + unsigned int chofs = 512 * aChannel; + unsigned int bofs = mOffset[aChannel]; + + while (ofs < aSamples) + { + for (i = 0; i < 128; i++) + { + mInputBuffer[chofs + ((bofs + i + 128) & 511)] = aBuffer[ofs + i]; + mMixBuffer[chofs + ((bofs + i + 128) & 511)] = 0; + } + + for (i = 0; i < 256; i++) + { + b[i] = mInputBuffer[chofs + ((bofs + i) & 511)]; + } + FFT::fft256(b); + + // do magic + fftFilterChannel(b, 128, aSamplerate, aTime, aChannel, aChannels); + + FFT::ifft256(b); + + for (i = 0; i < 256; i++) + { + mMixBuffer[chofs + ((bofs + i) & 511)] += b[i] * (128 - abs(128 - i)) * (1.0f / 128.0f); + } + + for (i = 0; i < 128; i++) + { + aBuffer[ofs + i] += (mMixBuffer[chofs + ((bofs + i) & 511)] - aBuffer[ofs + i]) * mParam[0]; + } + ofs += 128; + bofs += 128; + } + mOffset[aChannel] = bofs; + } + + void FFTFilterInstance::fftFilterChannel(float *aFFTBuffer, unsigned int aSamples, float aSamplerate, time aTime, unsigned int aChannel, unsigned int aChannels) + { + unsigned int i; + for (i = 4; i < aSamples; i++) + { + aFFTBuffer[(i - 4) * 2] = aFFTBuffer[i * 2]; + aFFTBuffer[(i - 4) * 2 + 1] = aFFTBuffer[i * 2 + 1]; + } + for (i = 0; i < 4; i++) + { + aFFTBuffer[aSamples - 4 * 2 + i * 2] = 0; + aFFTBuffer[aSamples - 4 * 2 + i * 2 + 1] = 0; + } + } + + FFTFilterInstance::~FFTFilterInstance() + { + delete[] mTemp; + delete[] mInputBuffer; + delete[] mMixBuffer; + } + + FFTFilter::FFTFilter() + { + } + + FilterInstance *FFTFilter::createInstance() + { + return new FFTFilterInstance(this); + } +} diff --git a/src/soloud/src/filter/soloud_flangerfilter.cpp b/src/soloud/src/filter/soloud_flangerfilter.cpp new file mode 100644 index 0000000..f1b0c12 --- /dev/null +++ b/src/soloud/src/filter/soloud_flangerfilter.cpp @@ -0,0 +1,109 @@ +/* +SoLoud audio engine +Copyright (c) 2013-2014 Jari Komppa + +This software is provided 'as-is', without any express or implied +warranty. In no event will the authors be held liable for any damages +arising from the use of this software. + +Permission is granted to anyone to use this software for any purpose, +including commercial applications, and to alter it and redistribute it +freely, subject to the following restrictions: + + 1. The origin of this software must not be misrepresented; you must not + claim that you wrote the original software. If you use this software + in a product, an acknowledgment in the product documentation would be + appreciated but is not required. + + 2. Altered source versions must be plainly marked as such, and must not be + misrepresented as being the original software. + + 3. This notice may not be removed or altered from any source + distribution. +*/ +#include +#include "soloud.h" +#include "soloud_flangerfilter.h" + +namespace SoLoud +{ + FlangerFilterInstance::FlangerFilterInstance(FlangerFilter *aParent) + { + mParent = aParent; + mBuffer = 0; + mBufferLength = 0; + mOffset = 0; + mIndex = 0; + initParams(3); + mParam[FlangerFilter::WET] = 1; + mParam[FlangerFilter::FREQ] = mParent->mFreq; + mParam[FlangerFilter::DELAY] = mParent->mDelay; + } + + void FlangerFilterInstance::filter(float *aBuffer, unsigned int aSamples, unsigned int aChannels, float aSamplerate, double aTime) + { + updateParams(aTime); + + if (mBufferLength < mParam[FlangerFilter::DELAY] * aSamplerate) + { + delete[] mBuffer; + mBufferLength = (int)ceil(mParam[FlangerFilter::DELAY] * aSamplerate); + mBuffer = new float[mBufferLength * aChannels]; + if (mBuffer == NULL) + { + mBufferLength = 0; + return; + } + memset(mBuffer, 0, sizeof(float) * mBufferLength * aChannels); + } + + unsigned int i, j; + int maxsamples = (int)ceil(mParam[FlangerFilter::DELAY] * aSamplerate); + double inc = mParam[FlangerFilter::FREQ] * M_PI * 2 / aSamplerate; + for (i = 0; i < aChannels; i++) + { + int mbofs = i * mBufferLength; + int abofs = i * aSamples; + for (j = 0; j < aSamples; j++, abofs++) + { + int delay = (int)floor(maxsamples * (1 + cos(mIndex))) / 2; + mIndex += inc; + mBuffer[mbofs + mOffset % mBufferLength] = aBuffer[abofs]; + float n = 0.5f * (aBuffer[abofs] + mBuffer[mbofs + (mBufferLength - delay + mOffset) % mBufferLength]); + mOffset++; + aBuffer[abofs] += (n - aBuffer[abofs]) * mParam[FlangerFilter::WET]; + } + mOffset -= aSamples; + } + mOffset += aSamples; + mOffset %= mBufferLength; + } + + FlangerFilterInstance::~FlangerFilterInstance() + { + delete[] mBuffer; + } + + FlangerFilter::FlangerFilter() + { + mDelay = 0.005f; + mFreq = 10; + } + + result FlangerFilter::setParams(float aDelay, float aFreq) + { + if (aDelay <= 0 || aFreq <= 0) + return INVALID_PARAMETER; + + mDelay = aDelay; + mFreq = aFreq; + + return 0; + } + + + FilterInstance *FlangerFilter::createInstance() + { + return new FlangerFilterInstance(this); + } +} diff --git a/src/soloud/src/filter/soloud_lofifilter.cpp b/src/soloud/src/filter/soloud_lofifilter.cpp new file mode 100644 index 0000000..26a9e9a --- /dev/null +++ b/src/soloud/src/filter/soloud_lofifilter.cpp @@ -0,0 +1,95 @@ +/* +SoLoud audio engine +Copyright (c) 2013-2014 Jari Komppa + +This software is provided 'as-is', without any express or implied +warranty. In no event will the authors be held liable for any damages +arising from the use of this software. + +Permission is granted to anyone to use this software for any purpose, +including commercial applications, and to alter it and redistribute it +freely, subject to the following restrictions: + + 1. The origin of this software must not be misrepresented; you must not + claim that you wrote the original software. If you use this software + in a product, an acknowledgment in the product documentation would be + appreciated but is not required. + + 2. Altered source versions must be plainly marked as such, and must not be + misrepresented as being the original software. + + 3. This notice may not be removed or altered from any source + distribution. +*/ + +#include +#include +#include "soloud.h" +#include "soloud_lofifilter.h" + +namespace SoLoud +{ + + LofiFilterInstance::LofiFilterInstance(LofiFilter *aParent) + { + mParent = aParent; + initParams(3); + mParam[SAMPLERATE] = aParent->mSampleRate; + mParam[BITDEPTH] = aParent->mBitdepth; + mChannelData[0].mSample = 0; + mChannelData[0].mSamplesToSkip = 0; + mChannelData[1].mSample = 0; + mChannelData[1].mSamplesToSkip = 0; + } + + void LofiFilterInstance::filterChannel(float *aBuffer, unsigned int aSamples, float aSamplerate, double aTime, unsigned int aChannel, unsigned int aChannels) + { + updateParams(aTime); + + unsigned int i; + for (i = 0; i < aSamples; i++) + { + if (mChannelData[aChannel].mSamplesToSkip <= 0) + { + mChannelData[aChannel].mSamplesToSkip += (aSamplerate / mParam[SAMPLERATE]) - 1; + float q = (float)pow(2, mParam[BITDEPTH]); + mChannelData[aChannel].mSample = (float)floor(q*aBuffer[i])/q; + } + else + { + mChannelData[aChannel].mSamplesToSkip--; + } + aBuffer[i] += (mChannelData[aChannel].mSample - aBuffer[i]) * mParam[WET]; + } + + } + + LofiFilterInstance::~LofiFilterInstance() + { + } + + LofiFilter::LofiFilter() + { + setParams(4000, 3); + } + + result LofiFilter::setParams(float aSampleRate, float aBitdepth) + { + if (aSampleRate <= 0 || aBitdepth <= 0) + return INVALID_PARAMETER; + + mSampleRate = aSampleRate; + mBitdepth = aBitdepth; + return 0; + } + + LofiFilter::~LofiFilter() + { + } + + + LofiFilterInstance *LofiFilter::createInstance() + { + return new LofiFilterInstance(this); + } +} diff --git a/src/soloud/src/filter/soloud_robotizefilter.cpp b/src/soloud/src/filter/soloud_robotizefilter.cpp new file mode 100644 index 0000000..97c2e85 --- /dev/null +++ b/src/soloud/src/filter/soloud_robotizefilter.cpp @@ -0,0 +1,56 @@ +/* +SoLoud audio engine +Copyright (c) 2013-2018 Jari Komppa + +This software is provided 'as-is', without any express or implied +warranty. In no event will the authors be held liable for any damages +arising from the use of this software. + +Permission is granted to anyone to use this software for any purpose, +including commercial applications, and to alter it and redistribute it +freely, subject to the following restrictions: + + 1. The origin of this software must not be misrepresented; you must not + claim that you wrote the original software. If you use this software + in a product, an acknowledgment in the product documentation would be + appreciated but is not required. + + 2. Altered source versions must be plainly marked as such, and must not be + misrepresented as being the original software. + + 3. This notice may not be removed or altered from any source + distribution. +*/ + +#include +#include "soloud.h" +#include "soloud_robotizefilter.h" + + +namespace SoLoud +{ + RobotizeFilterInstance::RobotizeFilterInstance(RobotizeFilter *aParent) + { + mParent = aParent; + initParams(1); + mParam[WET] = 1.0; + } + + void RobotizeFilterInstance::fftFilterChannel(float *aFFTBuffer, unsigned int aSamples, float aSamplerate, time aTime, unsigned int aChannel, unsigned int aChannels) + { + unsigned int i; + for (i = 0; i < aSamples; i++) + { + aFFTBuffer[i*2] = 0; + } + } + + RobotizeFilter::RobotizeFilter() + { + } + + FilterInstance *RobotizeFilter::createInstance() + { + return new RobotizeFilterInstance(this); + } +} diff --git a/src/soloud/src/filter/soloud_waveshaperfilter.cpp b/src/soloud/src/filter/soloud_waveshaperfilter.cpp new file mode 100644 index 0000000..313073a --- /dev/null +++ b/src/soloud/src/filter/soloud_waveshaperfilter.cpp @@ -0,0 +1,87 @@ +/* +SoLoud audio engine +Copyright (c) 2013-2018 Jari Komppa + +This software is provided 'as-is', without any express or implied +warranty. In no event will the authors be held liable for any damages +arising from the use of this software. + +Permission is granted to anyone to use this software for any purpose, +including commercial applications, and to alter it and redistribute it +freely, subject to the following restrictions: + + 1. The origin of this software must not be misrepresented; you must not + claim that you wrote the original software. If you use this software + in a product, an acknowledgment in the product documentation would be + appreciated but is not required. + + 2. Altered source versions must be plainly marked as such, and must not be + misrepresented as being the original software. + + 3. This notice may not be removed or altered from any source + distribution. +*/ + +#include +#include +#include "soloud.h" +#include "soloud_waveshaperfilter.h" + +namespace SoLoud +{ + + WaveShaperFilterInstance::WaveShaperFilterInstance(WaveShaperFilter *aParent) + { + mParent = aParent; + initParams(2); + mParam[0] = mParent->mWet; + mParam[1] = mParent->mAmount; + } + + void WaveShaperFilterInstance::filterChannel(float *aBuffer, unsigned int aSamples, float aSamplerate, double aTime, unsigned int aChannel, unsigned int aChannels) + { + updateParams(aTime); + + unsigned int i; + float k = 0; + if (mParam[1] == 1) + k = 2 * mParam[1] / 0.01f; + else + k = 2 * mParam[1] / (1 - mParam[1]); + + for (i = 0; i < aSamples; i++) + { + float dry = aBuffer[i]; + float wet = (1 + k) * aBuffer[i] / (1 + k * (float)fabs(aBuffer[i])); + aBuffer[i] += (wet - dry) * mParam[0]; + } + } + + WaveShaperFilterInstance::~WaveShaperFilterInstance() + { + } + + result WaveShaperFilter::setParams(float aAmount, float aWet) + { + if (aAmount < -1 || aAmount > 1 || aWet < 0 || aWet > 1) + return INVALID_PARAMETER; + mAmount = aAmount; + mWet = aWet; + return 0; + } + + WaveShaperFilter::WaveShaperFilter() + { + mAmount = 0.0f; + mWet = 0.0f; + } + + WaveShaperFilter::~WaveShaperFilter() + { + } + + WaveShaperFilterInstance *WaveShaperFilter::createInstance() + { + return new WaveShaperFilterInstance(this); + } +} diff --git a/terminal.png b/terminal.png new file mode 100644 index 0000000000000000000000000000000000000000..3cffb5b3c3c815955a348103594d5127aad3263a GIT binary patch literal 3429 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 Hu0mjfxK3;J literal 0 HcmV?d00001 diff --git a/underwater.wav b/underwater.wav new file mode 100644 index 0000000000000000000000000000000000000000..727726ec74a77436809a5984aaa2113b50a7503a GIT binary patch literal 1384684 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%0DwOcY7~lAKKQOxKZH$;T<Sc_$W?- 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

Nb2)&8KHSERB|rCs^7va<4h0+H}SiJ|mO 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

>P!oo!{ky+HghJp{_E}!2fj7y4||dySE`{t+`th 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�N@+D=Q85#eiG`sLkKy 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

DbHHt^ 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%0AI1M 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 z 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 z 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

Q}0M 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%0DW6l?6!h6{{{+`=X|%eh6G-e~kz5 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≫cYr_OI=Ff8;b6(& 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%0D>hdoRFEoXKylq!8C7+?N?0|d`Zk94Q)^yBW4*aH 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

dk8=5JNg^|w!-(A6LTSD7P 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Ξ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

9Qd7N37JOGr&v;a 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 literal 0 HcmV?d00001