aboutsummaryrefslogtreecommitdiffstats
path: root/src/output/openal_plugin.c
diff options
context:
space:
mode:
Diffstat (limited to '')
-rw-r--r--src/output/openal_plugin.c20
1 files changed, 12 insertions, 8 deletions
diff --git a/src/output/openal_plugin.c b/src/output/openal_plugin.c
index 8fda110e1..0aded4d9a 100644
--- a/src/output/openal_plugin.c
+++ b/src/output/openal_plugin.c
@@ -58,25 +58,29 @@ openal_output_quark(void)
static ALenum
openal_audio_format(struct audio_format *audio_format)
{
- /* Only 8 and 16 bit samples are supported */
- if (audio_format->bits != 16 && audio_format->bits != 8)
- audio_format->bits = 16;
-
- switch (audio_format->bits)
- {
- case 16:
+ switch (audio_format->format) {
+ case SAMPLE_FORMAT_S16:
if (audio_format->channels == 2)
return AL_FORMAT_STEREO16;
if (audio_format->channels == 1)
return AL_FORMAT_MONO16;
break;
- case 8:
+ case SAMPLE_FORMAT_S8:
if (audio_format->channels == 2)
return AL_FORMAT_STEREO8;
if (audio_format->channels == 1)
return AL_FORMAT_MONO8;
break;
+
+ default:
+ /* fall back to 16 bit */
+ audio_format->format = SAMPLE_FORMAT_S16;
+ if (audio_format->channels == 2)
+ return AL_FORMAT_STEREO16;
+ if (audio_format->channels == 1)
+ return AL_FORMAT_MONO16;
+ break;
}
return 0;