Skip to content
Draft
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
69 commits
Select commit Hold shift + click to select a range
06ac7bc
audio: ffmpeg_dec: add FFmpeg (libavcodec/libavfilter) module
lrgirdwo Jul 11, 2026
7e6618b
topology2: add ffmpeg_dec benchmark test topology
lrgirdwo Jul 12, 2026
c70c0ce
audio: ffmpeg_dec: add MP3 decoder
lrgirdwo Jul 12, 2026
d81b938
audio: ffmpeg_dec: add MP3 encoder via libshine
lrgirdwo Jul 12, 2026
0712481
audio: ffmpeg_dec: add encoder mode (PCM -> MP3 via libshine)
lrgirdwo Jul 12, 2026
fb9fd55
audio: ffmpeg_dec: document HiFi intrinsics opportunities
lrgirdwo Jul 12, 2026
f9033d9
audio: webrtc_vad: add GMM voice activity detector module
lrgirdwo Jul 20, 2026
ac03eec
audio: webrtc_ns: add WebRTC spectral noise suppressor module
lrgirdwo Jul 20, 2026
91c0b5a
audio: webrtc_aec: add AECm echo cancellation module
lrgirdwo Jul 20, 2026
b4cfc8b
audio: webrtc_ns2: add RNNoise deep-learning noise suppressor module
lrgirdwo Jul 20, 2026
22e3eee
audio: webrtc: wire VAD/NS/AEC/NS2 modules into build system
lrgirdwo Jul 20, 2026
46e6b20
topology2: add integration topologies for WebRTC audio modules
lrgirdwo Jul 20, 2026
06e1cfc
audio: ffmpeg_dec: add root Kconfig and standalone cmake helper
lrgirdwo Jul 20, 2026
e9da0d5
docs: add detailed architecture, build, and usage READMEs for ffmpeg …
lrgirdwo Jul 20, 2026
10f174f
ffmpeg_dec: HIFI.md: add AAC-LC decode hot-spot appendix
lrgirdwo Jul 22, 2026
fe84b2a
ffmpeg_dec: enable FFmpeg asm + repoint to sof-hifi for Xtensa HiFi f…
lrgirdwo Jul 22, 2026
95e9fd3
ffmpeg_dec: bump ffmpeg to sof-hifi 181d38ad (clang float_dsp build fix)
lrgirdwo Jul 22, 2026
dfc4205
ffmpeg_dec: support cross-building FFmpeg with the LLVM xt-clang
lrgirdwo Jul 22, 2026
9f333b9
topology2: sdw-dmic-generic: raise TDFB bytes control max size
singalsu Jul 1, 2026
47be5c2
audio: tdfb: add IPC-time blob validator
singalsu Jun 18, 2026
4f3a608
audio: drc: add IPC-time blob validator
singalsu Jun 18, 2026
2d120bb
zephyr: app: board: add native_sim board target
lrgirdwo Mar 12, 2026
81045d7
scripts: sof-qemu-run: add native_sim and valgrind support
lrgirdwo Mar 12, 2026
a1691a1
zephyr: alloc: Map native_sim heap to the C library
lrgirdwo Mar 13, 2026
06d7ca8
qemu: exit for boot test only otherwise spin
lrgirdwo Mar 27, 2026
d68f0fb
zephyr: alloc: Add 16MB allocation limit to native_sim host allocator
lrgirdwo Mar 30, 2026
1007662
zephyr: native_sim: run boot tests at boot if STANDALONE enabled
lrgirdwo May 26, 2026
098fa08
smart_amp: bound processed sample count by channel count
lrgirdwo Jun 11, 2026
85a234f
smart_amp: reject out-of-range source channel map entries
lrgirdwo Jun 11, 2026
ba4bd8f
smart_amp: bound calibration read offset to data size
lrgirdwo Jun 11, 2026
d5a899f
smart_amp: bound get-config copy by config struct size
lrgirdwo Jun 11, 2026
cc63a7b
smart_amp_test: bound channel counts to platform max
lrgirdwo Jun 11, 2026
4ef4ebd
audio: hifi: Guard <xtensa/config/defs.h> with __has_include
hliao8 May 20, 2026
0036a85
build: clang: minimal support for native Clang and Integrated Assembl…
lrgirdwo Jun 19, 2026
da1b919
build: clang: LLEXT and logging fixes for native Clang/LLD/IAS
lrgirdwo Jun 19, 2026
4bf9707
build: xtensa: Add native Clang/IAS/LLD compilation mode
lrgirdwo Jun 24, 2026
dc59c35
lib: uuid: Support Clang compilation for UUID macros and linker scripts
lrgirdwo Jun 24, 2026
1e7eb1b
platform: amd: Fix Zephyr integration and IPC compilation for Clang
lrgirdwo Jun 24, 2026
60af091
scripts: xtensa-build-zephyr: change --llvm-no-sdk default to False
lrgirdwo Jun 27, 2026
41ac944
zephyr: cmake: Use LLD for linking LLEXT modules with Clang
lrgirdwo Jun 28, 2026
f5e6a04
app: boards: intel_adsp_ace30_ptl: Prioritize backward compatibility
lrgirdwo Jul 9, 2026
8cdecee
app: debug: enable xtensa adsp fatal exception breadcrumbs
lrgirdwo Jun 28, 2026
8528c43
build: llext: fix module load Invalid Parameter error for Clang
lrgirdwo Jul 11, 2026
839483f
audio: format: use generic sat_int32 for LLVM clang builds
lrgirdwo Jul 10, 2026
fb8c262
boards: ptl: workarounds and fixes for initial ACE30 bring-up
lrgirdwo Jul 12, 2026
4c38ecf
library_manager: llext: use non-pre_located for ET_REL modules on ACE30
lrgirdwo Jul 12, 2026
96c6a56
library_manager: Guard DRAM store/restore with CONFIG_ADSP_IMR_CONTEX…
lrgirdwo Jul 19, 2026
ad02eda
audio: copier_host: prevent size calculation underflow when config_le…
lrgirdwo Jul 21, 2026
7dc139c
[scripts] llext_link_helper: Use merged section sizes from linked out…
lrgirdwo Jul 22, 2026
3049d0b
[scripts] xtensa-build-zephyr: Export ZEPHYR_BASE in build environment
lrgirdwo Jul 22, 2026
252d4a6
audio: ffmpeg_dec: use HiFi VFPU packed int<->float conversions in fi…
lrgirdwo Jul 23, 2026
a74deda
audio: ffmpeg_dec: put GCC fixed-include dir on the clang FFmpeg buil…
lrgirdwo Jul 23, 2026
ed6be37
audio: ffmpeg_dec: build as a built-in (=y) module with static libavc…
lrgirdwo Jul 25, 2026
e2b1cbc
audio: ffmpeg_dec: FLAC decode and compress drain (EOS) over sink/source
lrgirdwo Jul 25, 2026
19994d9
audio: base_fw: advertise FLAC playback decode when ffmpeg_dec is ena…
lrgirdwo Jul 25, 2026
af72302
topology2: add FFmpeg (libavcodec) compress-playback FLAC pipeline
lrgirdwo Jul 25, 2026
fbbfccb
audio: ffmpeg_dec: link real newlib double libm compiled with -mlongc…
lrgirdwo Jul 25, 2026
af74745
audio: ffmpeg_dec: build libavcodec soft-float on CONFIG_FPU=n images
lrgirdwo Jul 25, 2026
20255e2
zephyr: enlarge EDF scheduler stack for ffmpeg_dec float-math decoders
lrgirdwo Jul 25, 2026
36074b9
audio: ffmpeg_dec: MP3 decode support
lrgirdwo Jul 25, 2026
b3c605a
topology2: add MP3 variant to the ffmpeg compress path
lrgirdwo Jul 25, 2026
be09f4d
audio: src: 8-byte align the SRC delay line allocation
lrgirdwo Jul 26, 2026
12b9bb3
audio: ffmpeg_dec: convert decoder output to the negotiated sink format
lrgirdwo Jul 26, 2026
a64c163
audio: ffmpeg_dec: size DP output ring for decode-ahead
lrgirdwo Jul 26, 2026
418e773
zephyr: idc: align the IDC payload to the cache line
lrgirdwo Jul 26, 2026
1dc2e28
audio: component: copy coherent get_attribute payload with 32-bit stores
lrgirdwo Jul 26, 2026
944e744
audio: component: make comp_prepare_remote non-blocking
lrgirdwo Jul 26, 2026
793ef19
audio: ffmpeg_dec: defer avcodec_open2 to the DP thread
lrgirdwo Jul 26, 2026
f4a1072
topology2: compr-ffmpeg: offload ffmpeg_dec to core 1
lrgirdwo Jul 26, 2026
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
The table of contents is too big for display.
Diff view
Diff view
  •  
  •  
  •  
111 changes: 108 additions & 3 deletions Kconfig
Original file line number Diff line number Diff line change
@@ -1,7 +1,112 @@
# SPDX-License-Identifier: BSD-3-Clause

mainmenu "SOF $(PROJECTVERSION) Configuration"
config COMP_FFMPEG_DEC
tristate "FFmpeg (libavcodec) audio decoder"
select COMP_FFMPEG_DEC_STUB if COMP_STUBS
help
Select to include the FFmpeg audio decoder module. It wraps
libavcodec decoders behind the SOF module interface, decoding a
compressed elementary stream to PCM. The real backend cross-builds
libavcodec/libavutil/libswresample from the FFmpeg source pulled in
by west (see west.yml), enabling only the decoders selected below.
Without the source (or for CI) select COMP_FFMPEG_DEC_STUB to build
the dependency-free passthrough stub.

comment "Compiler: $(CC_VERSION_TEXT)"
config COMP_FFMPEG_DEC_STUB
bool "FFmpeg decoder stub backend"
depends on COMP_FFMPEG_DEC
help
Build the ffmpeg_dec module against a dependency-free passthrough
backend instead of libavcodec. Intended for testing and CI so the
SOF glue and LLEXT packaging can be validated without the FFmpeg
source or a cross-built archive.

source "Kconfig.sof"
if COMP_FFMPEG_DEC && !COMP_FFMPEG_DEC_STUB

comment "FFmpeg decoders to build (footprint scales with selection)"

config FFMPEG_DEC_FLAC
bool "FLAC decoder"
default y
help
Lossless integer decoder. Smallest footprint, no floating-point
math. Enables --enable-decoder=flac in the libavcodec build.

config FFMPEG_DEC_AAC
bool "AAC-LC decoder"
help
AAC Low Complexity decoder. Pulls in the single-precision float
math layer (see FFMPEG_DEC_FLOAT_MATH). Enables
--enable-decoder=aac in the libavcodec build.

config FFMPEG_DEC_OPUS
bool "Opus decoder"
help
Opus (SILK+CELT) decoder. Pulls in the single-precision float math
layer. Enables --enable-decoder=opus in the libavcodec build.

config FFMPEG_DEC_MP3
bool "MP3 decoder"
help
MPEG-1/2 Layer III decoder. Enables --enable-decoder=mp3 and the
mpegaudio parser in the libavcodec build. Uses the float math layer.

config FFMPEG_ENC_MP3
bool "MP3 encoder (libshine, fixed-point)"
help
MPEG-1 Layer III encoder via libshine, a small fixed-point encoder
(west-pinned; FFmpeg has no native MP3 encoder). Cross-builds libshine
and enables --enable-libshine --enable-encoder=libshine. Fixed-point, so
no float math dependency. The encoder is built into the archive; a module
encode path (PCM->MP3) is a separate build mode.

comment "FFmpeg audio filters (libavfilter; need the avfilter-graph backend to run)"

config FFMPEG_FILTER_AFFTDN
bool "FFT noise reduction (afftdn)"
help
Build FFmpeg's FFT-based denoiser (afftdn) into libavfilter. Pure DSP,
no external model file (unlike arnndn). Enabling any filter turns on
libavfilter in the cross-build. NOTE: a filter is only usable at runtime
once the module gains an avfilter-graph backend; selecting it here just
builds the filter into the archive.

config FFMPEG_DEC_FILTER_MODE
bool "Build as a PCM filter effect instead of a decoder [EXPERIMENTAL]"
select FFMPEG_FILTER_AFFTDN
help
Build the module as a PCM source->sink effect that runs an FFmpeg
audio filter graph (default afftdn noise reduction) via the modern
.process interface, instead of the compressed-stream decoder. Turns on
libavfilter and the fast float math. Structurally complete and
load-ready; real-time latency/format tuning needs on-hardware bring-up.

# Turns on libavfilter in the FFmpeg cross-build when any filter is selected.
config FFMPEG_BUILD_AVFILTER
bool
default y if FFMPEG_FILTER_AFFTDN

# Selected automatically when a decoder or filter that needs IEEE float math is
# built. Gates compilation of the fast single-precision libm (fastmathf.c).
config FFMPEG_DEC_FLOAT_MATH
bool
default y if FFMPEG_DEC_AAC || FFMPEG_DEC_OPUS || FFMPEG_DEC_MP3 || FFMPEG_FILTER_AFFTDN

config FFMPEG_DEC_COLD_SPLIT
bool "Place cold FFmpeg code (av_cold init/setup) in DRAM [EXPERIMENTAL]"
depends on COLD_STORE_EXECUTE_DRAM
default n
help
EXPERIMENTAL. Build libavcodec with -mtext-section-literals and rename
FFmpeg's cold functions (its av_cold init/table-generation code, which GCC
emits into .text.unlikely) into SOF's .cold section so the LLEXT loader
places them in DRAM, keeping the hot per-frame decode in fast SRAM.

Measured cold code is small (~1 KB for FLAC, ~26 KB for AAC) because
FFmpeg only marks init functions av_cold. Placing that much cold code in a
-shared LLEXT currently hits Xtensa linker limits (cold->hot call8 range
needs -mlongcalls; the orphan .cold lands at a bad LMA and overlaps .hash),
so this is off by default pending proper cold-region placement in the LLEXT
memory map. See git history / TESTING notes.

endif # COMP_FFMPEG_DEC && !COMP_FFMPEG_DEC_STUB
1 change: 1 addition & 0 deletions app/boards/acp_6_0_adsp.conf
Original file line number Diff line number Diff line change
Expand Up @@ -38,3 +38,4 @@ CONFIG_ASRC_SUPPORT_CONVERSION_48000_TO_22050=n
CONFIG_ASRC_SUPPORT_CONVERSION_48000_TO_24000=n
CONFIG_ASRC_SUPPORT_CONVERSION_48000_TO_32000=n
CONFIG_ASRC_SUPPORT_CONVERSION_48000_TO_44100=n
CONFIG_FORMAT_CONVERT_HIFI3=n
22 changes: 19 additions & 3 deletions app/boards/intel_adsp_ace30_ptl.conf
Original file line number Diff line number Diff line change
Expand Up @@ -5,14 +5,14 @@ CONFIG_RIMAGE_SIGNING_SCHEMA="ptl"
CONFIG_IPC_MAJOR_4=y

# SOF / audio pipeline and module settings
CONFIG_COMP_TESTER=m
CONFIG_COMP_TESTER=y
CONFIG_COMP_SRC_IPC4_FULL_MATRIX=y
CONFIG_FORMAT_CONVERT_HIFI3=n

# SOF / audio modules / mocks
# This mock is part of official sof-bin releases because the CI that
# tests it can't use extra CONFIGs. See #9410, #8722 and #9386
CONFIG_COMP_GOOGLE_RTC_AUDIO_PROCESSING=m
CONFIG_COMP_GOOGLE_RTC_AUDIO_PROCESSING=y
CONFIG_GOOGLE_RTC_AUDIO_PROCESSING_MOCK=y
CONFIG_COMP_STFT_PROCESS=y

Expand All @@ -31,7 +31,7 @@ CONFIG_LIBRARY_AUTH_SUPPORT=y
CONFIG_LIBRARY_MANAGER=y
CONFIG_LIBRARY_BASE_ADDRESS=0xa0688000
CONFIG_LIBRARY_BUILD_LIB=y
CONFIG_LIBRARY_DEFAULT_MODULAR=y
CONFIG_LIBRARY_DEFAULT_MODULAR=n

# SOF / logging
CONFIG_SOF_LOG_LEVEL_INF=y
Expand Down Expand Up @@ -78,3 +78,19 @@ CONFIG_SOF_USERSPACE_PROXY=y
CONFIG_MAX_THREAD_BYTES=3

CONFIG_MAX_DOMAIN_PARTITIONS=32

CONFIG_COMP_DRC=y
CONFIG_COMP_ASRC=y
CONFIG_COMP_CROSSOVER=y
CONFIG_COMP_FIR=y
CONFIG_COMP_IIR=y
CONFIG_COMP_MULTIBAND_DRC=y
CONFIG_COMP_TDFB=y
CONFIG_COMP_VOLUME=y
CONFIG_COMP_SEL=y
CONFIG_COMP_TONE=y
CONFIG_COMP_MIXIN_MIXOUT=y
CONFIG_COMP_MUX=y

# Disable UAOL to prevent boot-time register access crash when link is unpowered
CONFIG_UAOL=n
4 changes: 4 additions & 0 deletions app/boards/native_sim.conf
Original file line number Diff line number Diff line change
@@ -0,0 +1,4 @@
CONFIG_ZEPHYR_POSIX=y
CONFIG_SYS_HEAP_BIG_ONLY=y
CONFIG_ZEPHYR_NATIVE_DRIVERS=y
CONFIG_ZEPHYR_LOG=y
10 changes: 10 additions & 0 deletions app/boards/qemu_xtensa_dc233c.conf
Original file line number Diff line number Diff line change
Expand Up @@ -6,3 +6,13 @@ CONFIG_ZEPHYR_NATIVE_DRIVERS=y

# Ensure the kernel can exit QEMU on shutdown/panic
CONFIG_REBOOT=y

# Disable linker relaxation because LLD's naive in-place relaxation
# of L32R + CALLX/JX into CALL/J + NOP breaks local branches targeting
# the CALLX/JX instruction (such as in z_impl_log_panic).
CONFIG_LINKER_USE_RELAX=n

# Enable immediate logging to ensure logs are printed before semihosting exits
CONFIG_LOG_MODE_IMMEDIATE=y


1 change: 1 addition & 0 deletions app/compiler_rt.conf
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
CONFIG_COMPILER_RT_RTLIB=y
5 changes: 5 additions & 0 deletions app/debug_overlay.conf
Original file line number Diff line number Diff line change
Expand Up @@ -31,3 +31,8 @@ CONFIG_GDBSTUB_ENTER_IMMEDIATELY=n
# Testing with runtime filtering enabled ensures the same feature set is validated.
# Note: This setting has no effect if CONFIG_LOG_RUNTIME_FILTERING is disabled.
CONFIG_LOG_RUNTIME_DEFAULT_LEVEL=3

# Record fatal exception breadcrumbs (PC/cause/vaddr) in HP-SRAM window0 so the
# crash is visible in the host dmesg "Firmware state" line when no console or
# mtrace output is available.
CONFIG_XTENSA_ADSP_FATAL_BREADCRUMB=y
21 changes: 19 additions & 2 deletions app/src/main.c
Original file line number Diff line number Diff line change
Expand Up @@ -57,7 +57,7 @@ static int sof_app_main(void)
return 0;
}

#if CONFIG_SOF_BOOT_TEST && defined(QEMU_BOOT_TESTS)
#if defined(QEMU_BOOT_TESTS)
/* cleanly exit qemu so CI can continue and check test results */
static inline void qemu_xtensa_exit(int status)
{
Expand All @@ -73,14 +73,31 @@ static inline void qemu_xtensa_exit(int status)
}
#endif

#ifdef CONFIG_REBOOT
void sys_arch_reboot(int type)
{
#if defined(QEMU_BOOT_TESTS)
qemu_xtensa_exit(type);
#endif
while (1) {
k_cpu_idle();
}
}
#endif

#if CONFIG_ZTEST
void test_main(void)
{
sof_app_main();
#if CONFIG_SOF_BOOT_TEST && defined(QEMU_BOOT_TESTS)
#if CONFIG_SOF_BOOT_TEST && (defined(QEMU_BOOT_TESTS) || CONFIG_SOF_BOOT_TEST_STANDALONE)
sof_run_boot_tests();
#if defined(QEMU_BOOT_TESTS)
/* qemu_xtensa_exit() only exists for QEMU targets; a standalone
* boot test (e.g. native_sim) just returns from test_main()
*/
qemu_xtensa_exit(0);
#endif
#endif
}
#else
int main(void)
Expand Down
Loading