audio/faudio: work around OSS audio crash

INFO: OpenAudioDevice failed: Fragment size must be a power of two

PR:		245533
Approved by:	tobik (maintainer)
This commit is contained in:
Jan Beich
2020-04-11 14:15:41 +00:00
parent bf3b691cee
commit e2cec04acd
2 changed files with 24 additions and 0 deletions

View File

@@ -2,6 +2,7 @@
PORTNAME= FAudio
DISTVERSION= 20.04
PORTREVISION= 1
CATEGORIES= audio
MAINTAINER= tobik@FreeBSD.org

View File

@@ -0,0 +1,23 @@
https://github.com/FNA-XNA/FAudio/issues/183
--- src/FAudio_platform_sdl2.c.orig 2020-04-01 14:55:30 UTC
+++ src/FAudio_platform_sdl2.c
@@ -100,6 +100,18 @@ void FAudio_PlatformInit(
want.samples = want.freq / 100;
}
+ /* SDL audio with arts/dsp backends expect ^2, so round up.
+ * For 48KHz this should be 512.
+ * https://graphics.stanford.edu/~seander/bithacks.html#RoundUpPowerOf2
+ */
+ want.samples--;
+ want.samples |= want.samples >> 1;
+ want.samples |= want.samples >> 2;
+ want.samples |= want.samples >> 4;
+ want.samples |= want.samples >> 8;
+ want.samples |= want.samples >> 16;
+ want.samples++;
+
/* Open the device (or at least try to) */
iosretry:
device = SDL_OpenAudioDevice(