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_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_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_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_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)
|
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)
|
set(LOVR_PTHREADS Threads::Threads)
|
||||||
endif()
|
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
|
# Oculus Audio
|
||||||
if(LOVR_USE_OCULUS_AUDIO)
|
if(LOVR_USE_OCULUS_AUDIO)
|
||||||
if(NOT LOVR_OCULUS_AUDIO_PATH)
|
if(NOT LOVR_OCULUS_AUDIO_PATH)
|
||||||
|
@ -349,6 +358,10 @@ if(LOVR_ENABLE_AUDIO)
|
||||||
src/api/l_audio_source.c
|
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)
|
if(LOVR_USE_OCULUS_AUDIO)
|
||||||
target_compile_definitions(lovr PRIVATE LOVR_ENABLE_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
|
# modules
|
||||||
SRC_@(AUDIO) += src/modules/audio/audio.c
|
SRC_@(AUDIO) += src/modules/audio/audio.c
|
||||||
SRC_@(AUDIO) += src/modules/audio/spatializer_simple.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_@(AUDIO)@(OCULUS_AUDIO) += src/modules/audio/spatializer_oculus.c
|
||||||
SRC_@(DATA) += src/modules/data/*.c
|
SRC_@(DATA) += src/modules/data/*.c
|
||||||
SRC_@(EVENT) += src/modules/event/*.c
|
SRC_@(EVENT) += src/modules/event/*.c
|
||||||
|
|
|
@ -51,6 +51,7 @@ CFLAGS_@(WEBXR) += -DLOVR_USE_WEBXR
|
||||||
|
|
||||||
## Spatializer backends
|
## Spatializer backends
|
||||||
CFLAGS_@(OCULUS_AUDIO) += -DLOVR_ENABLE_OCULUS_AUDIO
|
CFLAGS_@(OCULUS_AUDIO) += -DLOVR_ENABLE_OCULUS_AUDIO
|
||||||
|
CFLAGS_@(STEAM_AUDIO) += -DLOVR_ENABLE_PHONON
|
||||||
|
|
||||||
ifeq (@(PLATFORM),)
|
ifeq (@(PLATFORM),)
|
||||||
PLATFORM = @(TUP_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)_$(win32) += @(OCULUS_AUDIO_PATH)/Lib/x64/ovraudio64.dll
|
||||||
LIB_@(OCULUS_AUDIO)_$(linux) += @(OCULUS_AUDIO_PATH)/Lib/Linux64/libovraudio64.so
|
LIB_@(OCULUS_AUDIO)_$(linux) += @(OCULUS_AUDIO_PATH)/Lib/Linux64/libovraudio64.so
|
||||||
LIB_@(OCULUS_AUDIO)_$(android) += @(OCULUS_AUDIO_PATH)/Lib/Android/arm64-v8a/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
|
endif
|
||||||
|
|
||||||
LIBS += $(LIBS_y) $(LIBS_y_y)
|
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 const ma_device_callback_proc callbacks[] = { onPlayback, onCapture };
|
||||||
|
|
||||||
static Spatializer* spatializers[] = {
|
static Spatializer* spatializers[] = {
|
||||||
|
#ifdef LOVR_ENABLE_PHONON
|
||||||
|
&phononSpatializer,
|
||||||
|
#endif
|
||||||
#ifdef LOVR_ENABLE_OCULUS_AUDIO
|
#ifdef LOVR_ENABLE_OCULUS_AUDIO
|
||||||
&oculusSpatializer,
|
&oculusSpatializer,
|
||||||
#endif
|
#endif
|
||||||
|
|
|
@ -24,6 +24,9 @@ typedef struct {
|
||||||
const char* name;
|
const char* name;
|
||||||
} Spatializer;
|
} Spatializer;
|
||||||
|
|
||||||
|
#ifdef LOVR_ENABLE_PHONON
|
||||||
|
extern Spatializer phononSpatializer;
|
||||||
|
#endif
|
||||||
#ifdef LOVR_ENABLE_OCULUS_AUDIO
|
#ifdef LOVR_ENABLE_OCULUS_AUDIO
|
||||||
extern Spatializer oculusSpatializer;
|
extern Spatializer oculusSpatializer;
|
||||||
#endif
|
#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=
|
CONFIG_OCULUS_PATH=
|
||||||
|
|
||||||
## Spatializer backends
|
## Spatializer backends
|
||||||
|
CONFIG_STEAM_AUDIO=n
|
||||||
|
CONFIG_STEAM_AUDIO_PATH=
|
||||||
CONFIG_OCULUS_AUDIO=n
|
CONFIG_OCULUS_AUDIO=n
|
||||||
CONFIG_OCULUS_AUDIO_PATH=
|
CONFIG_OCULUS_AUDIO_PATH=
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue