Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

SDL2.0.5 -> SDL2.0.6 breaks Simple-SDL2-Audio on Windows 7 #3

Closed
jakebesworth opened this issue May 21, 2018 · 1 comment
Closed

SDL2.0.5 -> SDL2.0.6 breaks Simple-SDL2-Audio on Windows 7 #3

jakebesworth opened this issue May 21, 2018 · 1 comment
Assignees
Labels

Comments

@jakebesworth
Copy link
Owner

https://github.com/ericb59 Messaged me stating that Windows 7 + SDL2.0.7 + Simple-SDL2-Audio were incompatible.

I built the project on digitalriver Windows 7 ISO build using MinGW 64 bit with Latest Simple-SDL2-Audio and SDL2.0.8 and noticed that it did not play sound. I went back through the versions until 2.0.5 worked, so I figured there was issue with 2.0.6.

2.0.6 Release notes: https://discourse.libsdl.org/t/sdl-2-0-6-released/23109 with mention to audio changes

I did a comparison of releases and noticed: spurious/SDL-mirror@release-2.0.5...release-2.0.6#diff-da39c90a56379c8da9f80fb8682bc49dR1310

+    /* !!! FIXME in 2.1: add SDL_AUDIO_ALLOW_SAMPLES_CHANGE flag?
+       As of 2.0.6, we will build a stream to buffer the difference between
+       what the app wants to feed and the device wants to eat, so everyone
+       gets their way. In prior releases, SDL would force the callback to
+       feed at the rate the device requested, adjusted for resampling.
      */

I found this: https://www.doomworld.com/forum/topic/97402-important-for-devs-sdl2-206s-audio-breakage-in-windows/

Which mentioned others having issues. However, the SDL2 documentation seems to not have been updated since last I wrote the library, so we're technically running on the latest example code SDL2 offers.

I noticed that SDL2_Mixer had an update from 2.0.1 to 2.0.2 because of SDL2.0.6: https://discourse.libsdl.org/t/sdl2-mixer-2-0-2-prerelease/23271

So I did a diff of their code from version 2.0.1 as the - and 2.0.2 as +:

+/* Open the mixer with a certain desired audio format */
+int Mix_OpenAudio(int frequency, Uint16 format, int nchannels, int chunksize)
+{
+    return Mix_OpenAudioDevice(frequency, format, nchannels, chunksize, NULL,
+                                SDL_AUDIO_ALLOW_FREQUENCY_CHANGE |
+                                SDL_AUDIO_ALLOW_CHANNELS_CHANGE);
+}
+

The flags they set are SDL_AUDIO_ALLOW_FREQUENCY_CHANGE | SDL_AUDIO_ALLOW_CHANNELS_CHANGE and NOT SDL_AUDIO_ALLOW_ANY_CHANGE.

I'm not sure why, but this change fixes Simple-SDL2-Audio on Windows 7

Due to the Emscripten change earlier I probably should have played with these parameters first, but in the end I found the solution. Will update the README with Windows 7 SDL2.0.6 Fix.

@jakebesworth jakebesworth self-assigned this May 21, 2018
@jakebesworth
Copy link
Owner Author

Fixed in 1ed6a76

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
Projects
None yet
Development

No branches or pull requests

1 participant