mirror of https://github.com/bjornbytes/lovr.git
Start phonon spatializer;
This commit is contained in:
parent
5d542eb2ea
commit
8bbb092497
|
@ -22,6 +22,7 @@ option(LOVR_USE_OCULUS "Enable the LibOVR backend for the headset module (be sur
|
|||
option(LOVR_USE_VRAPI "Enable the VrApi backend for the headset module" OFF)
|
||||
option(LOVR_USE_PICO "Enable the Pico backend for the headset module" OFF)
|
||||
option(LOVR_USE_DESKTOP_HEADSET "Enable the keyboard/mouse backend for the headset module" ON)
|
||||
option(LOVR_USE_STEAM_AUDIO "Enable the Steam Audio spatializer (be sure to also set LOVR_STEAM_AUDIO_PATH)" OFF)
|
||||
option(LOVR_USE_OCULUS_AUDIO "Enable the Oculus Audio spatializer (be sure to also set LOVR_OCULUS_AUDIO_PATH)" OFF)
|
||||
option(LOVR_USE_LINUX_EGL "Use the EGL graphics extension on Linux" OFF)
|
||||
|
||||
|
@ -249,6 +250,14 @@ if(LOVR_ENABLE_THREAD AND NOT (WIN32 OR EMSCRIPTEN))
|
|||
set(LOVR_PTHREADS Threads::Threads)
|
||||
endif()
|
||||
|
||||
# Steam Audio
|
||||
if(LOVR_USE_STEAM_AUDIO)
|
||||
if(NOT LOVR_STEAM_AUDIO_PATH)
|
||||
message(FATAL_ERROR "LOVR_USE_STEAM_AUDIO requires the LOVR_STEAM_AUDIO_PATH to be set to the location of the Steam Audio folder")
|
||||
endif()
|
||||
include_directories("${STEAM_AUDIO_PATH}/include")
|
||||
endif()
|
||||
|
||||
# Oculus Audio
|
||||
if(LOVR_USE_OCULUS_AUDIO)
|
||||
if(NOT LOVR_OCULUS_AUDIO_PATH)
|
||||
|
@ -349,6 +358,10 @@ if(LOVR_ENABLE_AUDIO)
|
|||
src/api/l_audio_source.c
|
||||
)
|
||||
|
||||
if(LOVR_USE_STEAM_AUDIO)
|
||||
target_compile_definitions(lovr PRIVATE LOVR_ENABLE_PHONON)
|
||||
target_sources(lovr PRIVATE src/modules/audio/spatializer_phonon.c)
|
||||
endif()
|
||||
|
||||
if(LOVR_USE_OCULUS_AUDIO)
|
||||
target_compile_definitions(lovr PRIVATE LOVR_ENABLE_OCULUS_AUDIO)
|
||||
|
|
1
Tupfile
1
Tupfile
|
@ -13,6 +13,7 @@ SRC += src/core/zip.c
|
|||
# modules
|
||||
SRC_@(AUDIO) += src/modules/audio/audio.c
|
||||
SRC_@(AUDIO) += src/modules/audio/spatializer_simple.c
|
||||
SRC_@(AUDIO)@(STEAM_AUDIO) += src/modules/audio/spatializer_phonon.c
|
||||
SRC_@(AUDIO)@(OCULUS_AUDIO) += src/modules/audio/spatializer_oculus.c
|
||||
SRC_@(DATA) += src/modules/data/*.c
|
||||
SRC_@(EVENT) += src/modules/event/*.c
|
||||
|
|
|
@ -51,6 +51,7 @@ CFLAGS_@(WEBXR) += -DLOVR_USE_WEBXR
|
|||
|
||||
## Spatializer backends
|
||||
CFLAGS_@(OCULUS_AUDIO) += -DLOVR_ENABLE_OCULUS_AUDIO
|
||||
CFLAGS_@(STEAM_AUDIO) += -DLOVR_ENABLE_PHONON
|
||||
|
||||
ifeq (@(PLATFORM),)
|
||||
PLATFORM = @(TUP_PLATFORM)
|
||||
|
@ -245,6 +246,12 @@ ifneq (@(CMAKE_DEPS),)
|
|||
LIB_@(OCULUS_AUDIO)_$(win32) += @(OCULUS_AUDIO_PATH)/Lib/x64/ovraudio64.dll
|
||||
LIB_@(OCULUS_AUDIO)_$(linux) += @(OCULUS_AUDIO_PATH)/Lib/Linux64/libovraudio64.so
|
||||
LIB_@(OCULUS_AUDIO)_$(android) += @(OCULUS_AUDIO_PATH)/Lib/Android/arm64-v8a/libovraudio64.so
|
||||
|
||||
# Phonon
|
||||
CFLAGS_@(STEAM_AUDIO) += -I@(STEAM_AUDIO_PATH)/include
|
||||
LIBS_@(STEAM_AUDIO)_$(win32) += @(STEAM_AUDIO_PATH)/lib/Windows/x64/phonon.dll
|
||||
LIBS_@(STEAM_AUDIO)_$(linux) += @(STEAM_AUDIO_PATH)/lib/Linux/x64/libphonon.so
|
||||
LIBS_@(STEAM_AUDIO)_$(android) += @(STEAM_AUDIO_PATH)/lib/Android/x64/libphonon.so
|
||||
endif
|
||||
|
||||
LIBS += $(LIBS_y) $(LIBS_y_y)
|
||||
|
|
|
@ -174,6 +174,9 @@ static void onCapture(ma_device* device, void* output, const void* input, uint32
|
|||
static const ma_device_callback_proc callbacks[] = { onPlayback, onCapture };
|
||||
|
||||
static Spatializer* spatializers[] = {
|
||||
#ifdef LOVR_ENABLE_PHONON
|
||||
&phononSpatializer,
|
||||
#endif
|
||||
#ifdef LOVR_ENABLE_OCULUS_AUDIO
|
||||
&oculusSpatializer,
|
||||
#endif
|
||||
|
|
|
@ -24,6 +24,9 @@ typedef struct {
|
|||
const char* name;
|
||||
} Spatializer;
|
||||
|
||||
#ifdef LOVR_ENABLE_PHONON
|
||||
extern Spatializer phononSpatializer;
|
||||
#endif
|
||||
#ifdef LOVR_ENABLE_OCULUS_AUDIO
|
||||
extern Spatializer oculusSpatializer;
|
||||
#endif
|
||||
|
|
|
@ -0,0 +1,41 @@
|
|||
#include "spatializer.h"
|
||||
#include <phonon.h>
|
||||
|
||||
bool phonon_init(SpatializerConfig config) {
|
||||
return false;
|
||||
}
|
||||
|
||||
void phonon_destroy() {
|
||||
//
|
||||
}
|
||||
|
||||
uint32_t phonon_apply(Source* source, const float* input, float* output, uint32_t frames, uint32_t _frames) {
|
||||
return 0;
|
||||
}
|
||||
|
||||
uint32_t phonon_tail(float* scratch, float* output, uint32_t frames) {
|
||||
return 0;
|
||||
}
|
||||
|
||||
void phonon_setListenerPose(float position[4], float orientation[4]) {
|
||||
//
|
||||
}
|
||||
|
||||
void phonon_sourceCreate(Source* source) {
|
||||
//
|
||||
}
|
||||
|
||||
void phonon_sourceDestroy(Source* source) {
|
||||
//
|
||||
}
|
||||
|
||||
Spatializer phononSpatializer = {
|
||||
.init = phonon_init,
|
||||
.destroy = phonon_destroy,
|
||||
.apply = phonon_apply,
|
||||
.tail = phonon_tail,
|
||||
.setListenerPose = phonon_setListenerPose,
|
||||
.sourceCreate = phonon_sourceCreate,
|
||||
.sourceDestroy = phonon_sourceDestroy,
|
||||
.name = "phonon"
|
||||
};
|
|
@ -49,6 +49,8 @@ CONFIG_WEBXR=n
|
|||
CONFIG_OCULUS_PATH=
|
||||
|
||||
## Spatializer backends
|
||||
CONFIG_STEAM_AUDIO=n
|
||||
CONFIG_STEAM_AUDIO_PATH=
|
||||
CONFIG_OCULUS_AUDIO=n
|
||||
CONFIG_OCULUS_AUDIO_PATH=
|
||||
|
||||
|
|
Loading…
Reference in New Issue