Skip to content

Commit 29e51a4

Browse files
committed
audio: steamaudio: add Steam Audio spatial audio offload module and LLEXT
Add Valve Steam Audio spatial audio processing engine offload module for Sound Open Firmware (SOF), supporting both statically linked DSP processing and dynamically loaded ELF extensions (LLEXT). Key features: - Core 3D spatialization: direct HRTF convolution, distance attenuation, air absorption filtering, directivity simulation, and occlusion damping. - Acoustic simulation: ray-traced BVH reflection rendering directly executed on the DSP. - Continuous multi-channel streaming: host feeds a continuous 64-channel PCM stream while the DSP dynamically culls inactive sources using an active voice bitmask (active_sources_mask). - Hardware-timestamped VBR metadata: receives variable bitrate spatial metadata packets via DMA-driven compressed ALSA PCM device (snd_compr). - Dynamic LLEXT support: builds as steamaudio.llext for Intel ACE 3.0 (Panther Lake) enabled via CONFIG_COMP_STEAMAUDIO=m. - Registered component UUID 53746561-6d61-7564-696f737465616d31 in uuid-registry.txt and module manifest in tools/rimage/config/ptl.toml.h. Signed-off-by: Liam Girdwood <liam.r.girdwood@linux.intel.com>
1 parent e0386e1 commit 29e51a4

15 files changed

Lines changed: 1245 additions & 0 deletions

‎app/boards/intel_adsp_ace30_ptl.conf‎

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -15,6 +15,7 @@ CONFIG_FORMAT_CONVERT_HIFI3=n
1515
CONFIG_COMP_GOOGLE_RTC_AUDIO_PROCESSING=m
1616
CONFIG_GOOGLE_RTC_AUDIO_PROCESSING_MOCK=y
1717
CONFIG_COMP_STFT_PROCESS=y
18+
CONFIG_COMP_STEAMAUDIO=m
1819

1920
# SOF / infrastructure
2021
CONFIG_KCPS_DYNAMIC_CLOCK_CONTROL=n

‎src/audio/CMakeLists.txt‎

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -89,6 +89,9 @@ if(NOT CONFIG_COMP_MODULE_SHARED_LIBRARY_BUILD)
8989
if(CONFIG_COMP_SRC)
9090
add_subdirectory(src)
9191
endif()
92+
if(CONFIG_COMP_STEAMAUDIO)
93+
add_subdirectory(steamaudio)
94+
endif()
9295
if(CONFIG_COMP_STFT_PROCESS)
9396
add_subdirectory(stft_process)
9497
endif()

‎src/audio/Kconfig‎

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -154,6 +154,7 @@ rsource "selector/Kconfig"
154154
rsource "smart_amp/Kconfig"
155155
rsource "sound_dose/Kconfig"
156156
rsource "src/Kconfig"
157+
rsource "steamaudio/Kconfig"
157158
rsource "stft_process/Kconfig"
158159
rsource "tdfb/Kconfig"
159160
rsource "template/Kconfig"
Lines changed: 14 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,14 @@
1+
# SPDX-License-Identifier: BSD-3-Clause
2+
3+
if(CONFIG_COMP_STEAMAUDIO STREQUAL "m" AND DEFINED CONFIG_LLEXT)
4+
add_subdirectory(llext ${PROJECT_BINARY_DIR}/steamaudio_llext)
5+
add_dependencies(app steamaudio)
6+
else()
7+
add_local_sources(sof steamaudio.c)
8+
add_local_sources(sof steamaudio-generic.c)
9+
add_local_sources(sof steamaudio_bvh.c)
10+
11+
if(CONFIG_IPC_MAJOR_4)
12+
add_local_sources(sof steamaudio-ipc4.c)
13+
endif()
14+
endif()

‎src/audio/steamaudio/Kconfig‎

Lines changed: 11 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,11 @@
1+
# SPDX-License-Identifier: BSD-3-Clause
2+
3+
config COMP_STEAMAUDIO
4+
tristate "Steam Audio spatial offload component"
5+
default y
6+
help
7+
Select for Steam Audio spatial audio offload component.
8+
Provides 3D binaural HRTF spatialization, direct sound modeling,
9+
3-band biquad IIR filtering, 8-channel Householder Feedback Delay
10+
Network (FDN) reverberation, 1st-order Ambisonics rotation/decoding,
11+
and on-chip DSP BVH ray tracing for real-time room acoustic simulation.
Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,10 @@
1+
# Copyright (c) 2026 Intel Corporation.
2+
# SPDX-License-Identifier: Apache-2.0
3+
4+
sof_llext_build("steamaudio"
5+
SOURCES ../steamaudio.c
6+
../steamaudio-generic.c
7+
../steamaudio_bvh.c
8+
../steamaudio-ipc4.c
9+
LIB openmodules
10+
)
Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,6 @@
1+
#include <tools/rimage/config/platform.toml>
2+
#define LOAD_TYPE "2"
3+
#include "../steamaudio.toml"
4+
5+
[module]
6+
count = __COUNTER__

0 commit comments

Comments
 (0)