aboutsummaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorRay San <raysan5@gmail.com>2017-12-20 12:34:18 +0100
committerRay San <raysan5@gmail.com>2017-12-20 12:34:18 +0100
commit61afd07bd7b3a96c6f0f460b668f52cf1a8bd90f (patch)
treef0c9d9f0a07c6351c8b21aed33c65f0ceabf9370 /src
parent1320044e94126a527e8ebe0b3833cce487566925 (diff)
downloadraylib-61afd07bd7b3a96c6f0f460b668f52cf1a8bd90f.tar.gz
raylib-61afd07bd7b3a96c6f0f460b668f52cf1a8bd90f.zip
Force OpenAL backend on some platforms
OpenAL audio backend is being forced on HTML5 and OSX
Diffstat (limited to 'src')
-rw-r--r--src/Makefile27
-rw-r--r--src/audio.c29
-rw-r--r--src/audio.h19
3 files changed, 53 insertions, 22 deletions
diff --git a/src/Makefile b/src/Makefile
index 00f5fa2f..1d1aa75c 100644
--- a/src/Makefile
+++ b/src/Makefile
@@ -47,12 +47,20 @@ API_VERSION = 1
PLATFORM ?= PLATFORM_DESKTOP
RAYLIB_PATH = ..
+# Library type used for raylib: STATIC (.a) or SHARED (.so/.dll)
+RAYLIB_LIBTYPE ?= STATIC
+
# Included raylib audio module on compilation
# NOTE: Some programs like tools could not require audio support
INCLUDE_AUDIO_MODULE ?= YES
-# Library type used for raylib: STATIC (.a) or SHARED (.so/.dll)
-RAYLIB_LIBTYPE ?= STATIC
+# Force OpenAL Soft backend for audio
+FORCE_OPENAL_BACKEND ?= FALSE
+
+# OpenAL Soft audio backend forced on HTML5 and OSX (see below)
+ifeq ($(PLATFORM),PLATFORM_WEB)
+ FORCE_OPENAL_BACKEND = TRUE
+endif
# Use cross-compiler for PLATFORM_RPI
ifeq ($(PLATFORM),PLATFORM_RPI)
@@ -95,6 +103,13 @@ ifeq ($(PLATFORM),PLATFORM_RPI)
endif
endif
+# Force OpenAL Soft audio backend for OSX platform
+# NOTE 1: mini_al library does not support CoreAudio yet
+# NOTE 2: Required OpenAL libraries should be available on OSX
+ifeq ($(PLATFORM_OS),OSX)
+ FORCE_OPENAL_BACKEND = TRUE
+endif
+
ifeq ($(PLATFORM),PLATFORM_WEB)
# Emscripten required variables
EMSDK_PATH = C:/emsdk
@@ -269,6 +284,10 @@ ifeq ($(RAYLIB_LIBTYPE),SHARED)
CFLAGS += -fPIC -DBUILD_LIBTYPE_SHARED
endif
+ifeq ($(FORCE_OPENAL_BACKEND),TRUE)
+ CFLAGS += -DFORCE_OPENAL_BACKEND
+endif
+
# Define include paths for required headers
# NOTE: Several external required libraries (stb and others)
INCLUDE_PATHS = -I. -Iexternal -Iexternal/glfw/include
@@ -329,8 +348,10 @@ endif
ifeq ($(INCLUDE_AUDIO_MODULE),YES)
OBJS += audio.o
- OBJS += mini_al.o
OBJS += stb_vorbis.o
+ifeq ($(FORCE_OPENAL_BACKEND),FALSE)
+ OBJS += mini_al.o
+endif
endif
# Default target entry
diff --git a/src/audio.c b/src/audio.c
index 4855333f..b8ca60fd 100644
--- a/src/audio.c
+++ b/src/audio.c
@@ -16,6 +16,9 @@
* Define to use the module as standalone library (independently of raylib).
* Required types and functions are defined in the same module.
*
+* #define FORCE_OPENAL_BACKEND
+* Force OpenAL Soft audio backend usage
+*
* #define SUPPORT_FILEFORMAT_WAV
* #define SUPPORT_FILEFORMAT_OGG
* #define SUPPORT_FILEFORMAT_XM
@@ -24,19 +27,24 @@
* Selected desired fileformats to be supported for loading. Some of those formats are
* supported by default, to remove support, just comment unrequired #define in this module
*
-* LIMITATIONS:
+* LIMITATIONS (only OpenAL Soft):
* Only up to two channels supported: MONO and STEREO (for additional channels, use AL_EXT_MCFORMATS)
* Only the following sample sizes supported: 8bit PCM, 16bit PCM, 32-bit float PCM (using AL_EXT_FLOAT32)
*
* DEPENDENCIES:
-* OpenAL Soft - Audio device management (http://kcat.strangesoft.net/openal.html)
+* mini_al - Audio device/context management (https://github.com/dr-soft/mini_al)
* stb_vorbis - OGG audio files loading (http://www.nothings.org/stb_vorbis/)
* jar_xm - XM module file loading
* jar_mod - MOD audio file loading
* dr_flac - FLAC audio file loading
*
+* *OpenAL Soft - Audio device management, still used on HTML5 and OSX platforms
+*
* CONTRIBUTORS:
-* Joshua Reisenauer (github: @kd7tck):
+* David Reid (github: @mackron) (Nov. 2017):
+* - Complete port to mini_al library
+*
+* Joshua Reisenauer (github: @kd7tck) (2015)
* - XM audio module support (jar_xm)
* - MOD audio module support (jar_mod)
* - Mixing channels support
@@ -45,7 +53,7 @@
*
* LICENSE: zlib/libpng
*
-* Copyright (c) 2014-2017 Ramon Santamaria (@raysan5)
+* Copyright (c) 2014-2018 Ramon Santamaria (@raysan5)
*
* This software is provided "as-is", without any express or implied warranty. In no event
* will the authors be held liable for any damages arising from the use of this software.
@@ -72,8 +80,8 @@
#define SUPPORT_FILEFORMAT_MOD
//-------------------------------------------------
-#ifndef USE_MINI_AL
-#define USE_MINI_AL 1 // Set to 1 to use mini_al; 0 to use OpenAL.
+#if !defined(FORCE_OPENAL_BACKEND)
+ #define USE_MINI_AL 1 // Set to 1 to use mini_al; 0 to use OpenAL.
#endif
#if defined(AUDIO_STANDALONE)
@@ -86,7 +94,7 @@
#include "external/mini_al.h" // Implemented in mini_al.c. Cannot implement this here because it conflicts with Win32 APIs such as CloseWindow(), etc.
-#if !defined(USE_MINI_AL) || USE_MINI_AL == 0
+#if !defined(USE_MINI_AL) || (USE_MINI_AL == 0)
#if defined(__APPLE__)
#include "OpenAL/al.h" // OpenAL basic header
#include "OpenAL/alc.h" // OpenAL context header (like OpenGL, OpenAL requires a context to work)
@@ -480,11 +488,8 @@ void InitAudioDevice(void)
alListenerf(AL_GAIN, 1.0f);
- if (alIsExtensionPresent("AL_EXT_float32")) {
- TraceLog(LOG_INFO, "AL_EXT_float32 supported");
- } else {
- TraceLog(LOG_INFO, "AL_EXT_float32 not supported");
- }
+ if (alIsExtensionPresent("AL_EXT_float32")) TraceLog(LOG_INFO, "[EXTENSION] AL_EXT_float32 supported");
+ else TraceLog(LOG_INFO, "[EXTENSION] AL_EXT_float32 not supported");
}
}
#endif
diff --git a/src/audio.h b/src/audio.h
index 4c9faf25..01c93741 100644
--- a/src/audio.h
+++ b/src/audio.h
@@ -10,19 +10,24 @@
* - Manage mixing channels
* - Manage raw audio context
*
-* LIMITATIONS:
+* LIMITATIONS (only OpenAL Soft):
* Only up to two channels supported: MONO and STEREO (for additional channels, use AL_EXT_MCFORMATS)
* Only the following sample sizes supported: 8bit PCM, 16bit PCM, 32-bit float PCM (using AL_EXT_FLOAT32)
*
* DEPENDENCIES:
-* OpenAL Soft - Audio device management (http://kcat.strangesoft.net/openal.html)
+* mini_al - Audio device/context management (https://github.com/dr-soft/mini_al)
* stb_vorbis - OGG audio files loading (http://www.nothings.org/stb_vorbis/)
-* jar_xm - XM module file loading (#define SUPPORT_FILEFORMAT_XM)
-* jar_mod - MOD audio file loading (#define SUPPORT_FILEFORMAT_MOD)
-* dr_flac - FLAC audio file loading (#define SUPPORT_FILEFORMAT_FLAC)
+* jar_xm - XM module file loading
+* jar_mod - MOD audio file loading
+* dr_flac - FLAC audio file loading
+*
+* *OpenAL Soft - Audio device management, still used on HTML5 and OSX platforms
*
* CONTRIBUTORS:
-* Joshua Reisenauer (github: @kd7tck):
+* David Reid (github: @mackron) (Nov. 2017):
+* - Complete port to mini_al library
+*
+* Joshua Reisenauer (github: @kd7tck) (2015)
* - XM audio module support (jar_xm)
* - MOD audio module support (jar_mod)
* - Mixing channels support
@@ -31,7 +36,7 @@
*
* LICENSE: zlib/libpng
*
-* Copyright (c) 2014-2017 Ramon Santamaria (@raysan5)
+* Copyright (c) 2014-2018 Ramon Santamaria (@raysan5)
*
* This software is provided "as-is", without any express or implied warranty. In no event
* will the authors be held liable for any damages arising from the use of this software.