Force OpenAL backend on some platforms
OpenAL audio backend is being forced on HTML5 and OSX
This commit is contained in:
parent
1320044e94
commit
61afd07bd7
3 changed files with 53 additions and 22 deletions
27
src/Makefile
27
src/Makefile
|
@ -47,12 +47,20 @@ API_VERSION = 1
|
||||||
PLATFORM ?= PLATFORM_DESKTOP
|
PLATFORM ?= PLATFORM_DESKTOP
|
||||||
RAYLIB_PATH = ..
|
RAYLIB_PATH = ..
|
||||||
|
|
||||||
|
# Library type used for raylib: STATIC (.a) or SHARED (.so/.dll)
|
||||||
|
RAYLIB_LIBTYPE ?= STATIC
|
||||||
|
|
||||||
# Included raylib audio module on compilation
|
# Included raylib audio module on compilation
|
||||||
# NOTE: Some programs like tools could not require audio support
|
# NOTE: Some programs like tools could not require audio support
|
||||||
INCLUDE_AUDIO_MODULE ?= YES
|
INCLUDE_AUDIO_MODULE ?= YES
|
||||||
|
|
||||||
# Library type used for raylib: STATIC (.a) or SHARED (.so/.dll)
|
# Force OpenAL Soft backend for audio
|
||||||
RAYLIB_LIBTYPE ?= STATIC
|
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
|
# Use cross-compiler for PLATFORM_RPI
|
||||||
ifeq ($(PLATFORM),PLATFORM_RPI)
|
ifeq ($(PLATFORM),PLATFORM_RPI)
|
||||||
|
@ -95,6 +103,13 @@ ifeq ($(PLATFORM),PLATFORM_RPI)
|
||||||
endif
|
endif
|
||||||
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)
|
ifeq ($(PLATFORM),PLATFORM_WEB)
|
||||||
# Emscripten required variables
|
# Emscripten required variables
|
||||||
EMSDK_PATH = C:/emsdk
|
EMSDK_PATH = C:/emsdk
|
||||||
|
@ -269,6 +284,10 @@ ifeq ($(RAYLIB_LIBTYPE),SHARED)
|
||||||
CFLAGS += -fPIC -DBUILD_LIBTYPE_SHARED
|
CFLAGS += -fPIC -DBUILD_LIBTYPE_SHARED
|
||||||
endif
|
endif
|
||||||
|
|
||||||
|
ifeq ($(FORCE_OPENAL_BACKEND),TRUE)
|
||||||
|
CFLAGS += -DFORCE_OPENAL_BACKEND
|
||||||
|
endif
|
||||||
|
|
||||||
# Define include paths for required headers
|
# Define include paths for required headers
|
||||||
# NOTE: Several external required libraries (stb and others)
|
# NOTE: Several external required libraries (stb and others)
|
||||||
INCLUDE_PATHS = -I. -Iexternal -Iexternal/glfw/include
|
INCLUDE_PATHS = -I. -Iexternal -Iexternal/glfw/include
|
||||||
|
@ -329,8 +348,10 @@ endif
|
||||||
|
|
||||||
ifeq ($(INCLUDE_AUDIO_MODULE),YES)
|
ifeq ($(INCLUDE_AUDIO_MODULE),YES)
|
||||||
OBJS += audio.o
|
OBJS += audio.o
|
||||||
OBJS += mini_al.o
|
|
||||||
OBJS += stb_vorbis.o
|
OBJS += stb_vorbis.o
|
||||||
|
ifeq ($(FORCE_OPENAL_BACKEND),FALSE)
|
||||||
|
OBJS += mini_al.o
|
||||||
|
endif
|
||||||
endif
|
endif
|
||||||
|
|
||||||
# Default target entry
|
# Default target entry
|
||||||
|
|
29
src/audio.c
29
src/audio.c
|
@ -16,6 +16,9 @@
|
||||||
* Define to use the module as standalone library (independently of raylib).
|
* Define to use the module as standalone library (independently of raylib).
|
||||||
* Required types and functions are defined in the same module.
|
* 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_WAV
|
||||||
* #define SUPPORT_FILEFORMAT_OGG
|
* #define SUPPORT_FILEFORMAT_OGG
|
||||||
* #define SUPPORT_FILEFORMAT_XM
|
* #define SUPPORT_FILEFORMAT_XM
|
||||||
|
@ -24,19 +27,24 @@
|
||||||
* Selected desired fileformats to be supported for loading. Some of those formats are
|
* 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
|
* 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 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)
|
* Only the following sample sizes supported: 8bit PCM, 16bit PCM, 32-bit float PCM (using AL_EXT_FLOAT32)
|
||||||
*
|
*
|
||||||
* DEPENDENCIES:
|
* 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/)
|
* stb_vorbis - OGG audio files loading (http://www.nothings.org/stb_vorbis/)
|
||||||
* jar_xm - XM module file loading
|
* jar_xm - XM module file loading
|
||||||
* jar_mod - MOD audio file loading
|
* jar_mod - MOD audio file loading
|
||||||
* dr_flac - FLAC audio file loading
|
* dr_flac - FLAC audio file loading
|
||||||
*
|
*
|
||||||
|
* *OpenAL Soft - Audio device management, still used on HTML5 and OSX platforms
|
||||||
|
*
|
||||||
* CONTRIBUTORS:
|
* 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)
|
* - XM audio module support (jar_xm)
|
||||||
* - MOD audio module support (jar_mod)
|
* - MOD audio module support (jar_mod)
|
||||||
* - Mixing channels support
|
* - Mixing channels support
|
||||||
|
@ -45,7 +53,7 @@
|
||||||
*
|
*
|
||||||
* LICENSE: zlib/libpng
|
* 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
|
* 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.
|
* will the authors be held liable for any damages arising from the use of this software.
|
||||||
|
@ -72,8 +80,8 @@
|
||||||
#define SUPPORT_FILEFORMAT_MOD
|
#define SUPPORT_FILEFORMAT_MOD
|
||||||
//-------------------------------------------------
|
//-------------------------------------------------
|
||||||
|
|
||||||
#ifndef USE_MINI_AL
|
#if !defined(FORCE_OPENAL_BACKEND)
|
||||||
#define USE_MINI_AL 1 // Set to 1 to use mini_al; 0 to use OpenAL.
|
#define USE_MINI_AL 1 // Set to 1 to use mini_al; 0 to use OpenAL.
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
#if defined(AUDIO_STANDALONE)
|
#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.
|
#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__)
|
#if defined(__APPLE__)
|
||||||
#include "OpenAL/al.h" // OpenAL basic header
|
#include "OpenAL/al.h" // OpenAL basic header
|
||||||
#include "OpenAL/alc.h" // OpenAL context header (like OpenGL, OpenAL requires a context to work)
|
#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);
|
alListenerf(AL_GAIN, 1.0f);
|
||||||
|
|
||||||
if (alIsExtensionPresent("AL_EXT_float32")) {
|
if (alIsExtensionPresent("AL_EXT_float32")) TraceLog(LOG_INFO, "[EXTENSION] AL_EXT_float32 supported");
|
||||||
TraceLog(LOG_INFO, "AL_EXT_float32 supported");
|
else TraceLog(LOG_INFO, "[EXTENSION] AL_EXT_float32 not supported");
|
||||||
} else {
|
|
||||||
TraceLog(LOG_INFO, "AL_EXT_float32 not supported");
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
#endif
|
#endif
|
||||||
|
|
19
src/audio.h
19
src/audio.h
|
@ -10,19 +10,24 @@
|
||||||
* - Manage mixing channels
|
* - Manage mixing channels
|
||||||
* - Manage raw audio context
|
* - 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 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)
|
* Only the following sample sizes supported: 8bit PCM, 16bit PCM, 32-bit float PCM (using AL_EXT_FLOAT32)
|
||||||
*
|
*
|
||||||
* DEPENDENCIES:
|
* 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/)
|
* stb_vorbis - OGG audio files loading (http://www.nothings.org/stb_vorbis/)
|
||||||
* jar_xm - XM module file loading (#define SUPPORT_FILEFORMAT_XM)
|
* jar_xm - XM module file loading
|
||||||
* jar_mod - MOD audio file loading (#define SUPPORT_FILEFORMAT_MOD)
|
* jar_mod - MOD audio file loading
|
||||||
* dr_flac - FLAC audio file loading (#define SUPPORT_FILEFORMAT_FLAC)
|
* dr_flac - FLAC audio file loading
|
||||||
|
*
|
||||||
|
* *OpenAL Soft - Audio device management, still used on HTML5 and OSX platforms
|
||||||
*
|
*
|
||||||
* CONTRIBUTORS:
|
* 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)
|
* - XM audio module support (jar_xm)
|
||||||
* - MOD audio module support (jar_mod)
|
* - MOD audio module support (jar_mod)
|
||||||
* - Mixing channels support
|
* - Mixing channels support
|
||||||
|
@ -31,7 +36,7 @@
|
||||||
*
|
*
|
||||||
* LICENSE: zlib/libpng
|
* 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
|
* 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.
|
* will the authors be held liable for any damages arising from the use of this software.
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue