From ef84e3da66799125dae1d84f964fe13e2a2bb0f8 Mon Sep 17 00:00:00 2001 From: ratchov Date: Mon, 17 Mar 2014 09:49:46 +0000 Subject: [PATCH] enable 24-bit audio encodings --- devel/sdl2/Makefile | 3 +- .../patch-src_audio_sndio_SDL_sndioaudio_c | 66 +++++++++++++++++++ 2 files changed, 68 insertions(+), 1 deletion(-) create mode 100644 devel/sdl2/patches/patch-src_audio_sndio_SDL_sndioaudio_c diff --git a/devel/sdl2/Makefile b/devel/sdl2/Makefile index f42b56bb1eb..385b62691dc 100644 --- a/devel/sdl2/Makefile +++ b/devel/sdl2/Makefile @@ -1,9 +1,10 @@ -# $OpenBSD: Makefile,v 1.2 2014/03/12 03:56:32 bentley Exp $ +# $OpenBSD: Makefile,v 1.3 2014/03/17 09:49:46 ratchov Exp $ COMMENT= cross-platform multimedia library V= 2.0.2 DISTNAME= SDL2-${V} +REVISION= 0 PKGNAME= sdl2-${V} CATEGORIES= devel MASTER_SITES= http://www.libsdl.org/release/ diff --git a/devel/sdl2/patches/patch-src_audio_sndio_SDL_sndioaudio_c b/devel/sdl2/patches/patch-src_audio_sndio_SDL_sndioaudio_c new file mode 100644 index 00000000000..7f74b57fdd4 --- /dev/null +++ b/devel/sdl2/patches/patch-src_audio_sndio_SDL_sndioaudio_c @@ -0,0 +1,66 @@ +$OpenBSD: patch-src_audio_sndio_SDL_sndioaudio_c,v 1.1 2014/03/17 09:49:46 ratchov Exp $ +--- src/audio/sndio/SDL_sndioaudio.c.orig Fri Jan 31 12:09:18 2014 ++++ src/audio/sndio/SDL_sndioaudio.c Fri Jan 31 12:38:03 2014 +@@ -209,7 +209,7 @@ SNDIO_OpenDevice(_THIS, const char *devname, int iscap + this->hidden->mixlen = this->spec.size; + + /* !!! FIXME: SIO_DEVANY can be a specific device... */ +- if ((this->hidden->dev = SNDIO_sio_open(NULL, SIO_PLAY, 0)) == NULL) { ++ if ((this->hidden->dev = SNDIO_sio_open(SIO_DEVANY, SIO_PLAY, 0)) == NULL) { + SNDIO_CloseDevice(this); + return SDL_SetError("sio_open() failed"); + } +@@ -229,7 +229,17 @@ SNDIO_OpenDevice(_THIS, const char *devname, int iscap + par.sig = SDL_AUDIO_ISSIGNED(test_format) ? 1 : 0; + par.bits = SDL_AUDIO_BITSIZE(test_format); + +- if (SNDIO_sio_setpar(this->hidden->dev, &par) == 1) { ++ if (SNDIO_sio_setpar(this->hidden->dev, &par) == 0) { ++ continue; ++ } ++ if (SNDIO_sio_getpar(this->hidden->dev, &par) == 0) { ++ SNDIO_CloseDevice(this); ++ return SDL_SetError("sio_getpar() failed"); ++ } ++ if (par.bps != SIO_BPS(par.bits)) { ++ continue; ++ } ++ if ((par.bits == 8 * par.bps) || (par.msb)) { + status = 0; + break; + } +@@ -242,26 +252,21 @@ SNDIO_OpenDevice(_THIS, const char *devname, int iscap + return SDL_SetError("sndio: Couldn't find any hardware audio formats"); + } + +- if (SNDIO_sio_getpar(this->hidden->dev, &par) == 0) { +- SNDIO_CloseDevice(this); +- return SDL_SetError("sio_getpar() failed"); +- } +- +- if ((par.bits == 32) && (par.sig) && (par.le)) ++ if ((par.bps == 4) && (par.sig) && (par.le)) + this->spec.format = AUDIO_S32LSB; +- else if ((par.bits == 32) && (par.sig) && (!par.le)) ++ else if ((par.bps == 4) && (par.sig) && (!par.le)) + this->spec.format = AUDIO_S32MSB; +- else if ((par.bits == 16) && (par.sig) && (par.le)) ++ else if ((par.bps == 2) && (par.sig) && (par.le)) + this->spec.format = AUDIO_S16LSB; +- else if ((par.bits == 16) && (par.sig) && (!par.le)) ++ else if ((par.bps == 2) && (par.sig) && (!par.le)) + this->spec.format = AUDIO_S16MSB; +- else if ((par.bits == 16) && (!par.sig) && (par.le)) ++ else if ((par.bps == 2) && (!par.sig) && (par.le)) + this->spec.format = AUDIO_U16LSB; +- else if ((par.bits == 16) && (!par.sig) && (!par.le)) ++ else if ((par.bps == 2) && (!par.sig) && (!par.le)) + this->spec.format = AUDIO_U16MSB; +- else if ((par.bits == 8) && (par.sig)) ++ else if ((par.bps == 1) && (par.sig)) + this->spec.format = AUDIO_S8; +- else if ((par.bits == 8) && (!par.sig)) ++ else if ((par.bps == 1) && (!par.sig)) + this->spec.format = AUDIO_U8; + else { + SNDIO_CloseDevice(this);