SDL2 (version >=2.0) prefers float32 audio format over integer audio format. 
QEMU sdlaudio.c does not handle any kind of AUDIO_F32 formats, but 
SDL_OpenAudio(req, obt) will return float32 audio format in obt and QEMU prints 
error about unknown format 33056 (0x8120).

The following simple patch fix the error by forcing SDL2 internal audio format 
conversion.

diff -ru ../orig/qemu-4.2.0/audio/sdlaudio.c ../qemu-4.2.0/audio/sdlaudio.c
--- ../orig/qemu-4.2.0/audio/sdlaudio.c 2019-12-12 10:20:47.000000000 -0800
+++ ../qemu-4.2.0/audio/sdlaudio.c      2020-01-15 15:56:25.059841600 -0800
@@ -147,10 +147,11 @@
     }
 #endif

-    status = SDL_OpenAudio (req, obt);
+    status = SDL_OpenAudio (req, NULL);
     if (status) {
         sdl_logerr ("SDL_OpenAudio failed\n");
     }
+    memcpy(obt, req, sizeof(SDL_AudioSpec));

 #ifndef _WIN32
     err = pthread_sigmask (SIG_SETMASK, &old, NULL);

Reply via email to