Skip to content

Commit ca8df75

Browse files
committed
audio: add support for asio sdk audio backend
1 parent d8ec87f commit ca8df75

9 files changed

Lines changed: 879 additions & 0 deletions

File tree

.gitmodules

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -121,3 +121,6 @@
121121
[submodule "3rdparty/libcoap"]
122122
path = 3rdparty/libcoap
123123
url = https://github.com/obgm/libcoap
124+
[submodule "3rdparty/asio"]
125+
path = 3rdparty/asio
126+
url = https://github.com/jcelerier/asio-2

3rdparty/asio

Submodule asio added at 1bc070d

cmake/OssiaDeps.cmake

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -194,6 +194,14 @@ if(OSSIA_ENABLE_PIPEWIRE)
194194
endif()
195195
endif()
196196

197+
if(OSSIA_ENABLE_ASIO)
198+
include(deps/asio-sdk)
199+
200+
if(NOT TARGET asio::sdk)
201+
set(OSSIA_ENABLE_ASIO FALSE CACHE INTERNAL "" FORCE)
202+
endif()
203+
endif()
204+
197205
if(OSSIA_ENABLE_SDL)
198206
include(deps/sdl)
199207

cmake/OssiaOptions.cmake

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -22,6 +22,9 @@ option(OSSIA_ENABLE_PORTAUDIO "Use PortAudio if available" ON)
2222
option(OSSIA_ENABLE_PIPEWIRE "Use PortAudio if available" ON)
2323
option(OSSIA_ENABLE_RUBBERBAND "Use RubberBand" ON)
2424
option(OSSIA_ENABLE_LIBSAMPLERATE "Use libsamplerate" ON)
25+
if(WIN32)
26+
option(OSSIA_ENABLE_ASIO "Use Steinberg ASIO SDK if available" ON)
27+
endif()
2528
option(OSSIA_ENABLE_SDL "Use SDL if available" ON)
2629
option(OSSIA_ENABLE_FFT "Enable FFT support" OFF)
2730
option(OSSIA_ENABLE_FFTW "Enable FFT through FFTW" OFF)

cmake/deps/asio-sdk.cmake

Lines changed: 27 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,27 @@
1+
# Steinberg ASIO SDK (submodule at 3rdparty/asio)
2+
3+
set(ASIO_SDK_DIR "${OSSIA_3RDPARTY_FOLDER}/asio")
4+
5+
if(EXISTS "${ASIO_SDK_DIR}/common/asio.h" AND WIN32)
6+
add_library(asio_sdk STATIC)
7+
add_library(asio::sdk ALIAS asio_sdk)
8+
target_compile_definitions(asio_sdk PRIVATE UNICODE=1 _UNICODE=1)
9+
10+
target_include_directories(asio_sdk SYSTEM PUBLIC
11+
$<BUILD_INTERFACE:${ASIO_SDK_DIR}/common>
12+
$<BUILD_INTERFACE:${ASIO_SDK_DIR}/host>
13+
$<BUILD_INTERFACE:${ASIO_SDK_DIR}/host/pc>
14+
)
15+
16+
# ASIO SDK requires these source files to be compiled into the host application
17+
target_sources(asio_sdk PRIVATE
18+
${ASIO_SDK_DIR}/common/asio.cpp
19+
${ASIO_SDK_DIR}/host/asiodrivers.cpp
20+
${ASIO_SDK_DIR}/host/pc/asiolist.cpp
21+
)
22+
23+
# ASIO SDK requires COM and advapi32 on Windows
24+
target_link_libraries(asio_sdk PRIVATE ole32 advapi32)
25+
26+
# OSSIA_ENABLE_ASIO is set via ossia-config.hpp.in / #cmakedefine
27+
endif()

src/ossia-config.hpp.in

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -34,6 +34,7 @@
3434
#cmakedefine OSSIA_ENABLE_PIPEWIRE
3535
#cmakedefine OSSIA_ENABLE_RUBBERBAND
3636
#cmakedefine OSSIA_ENABLE_LIBSAMPLERATE
37+
#cmakedefine OSSIA_ENABLE_ASIO
3738
#cmakedefine OSSIA_ENABLE_SDL
3839
#cmakedefine OSSIA_SCENARIO_DATAFLOW
3940

0 commit comments

Comments
 (0)