mirror of
https://github.com/got-feedBack/feedBack-desktop.git
synced 2026-09-11 04:04:10 +00:00
Phase B core (plan §5/§8): - engine/Mixer.h: lock-free slot state machine (Free→Active→Draining→Free), channel #0 = the RendererBus byte-compatible permanent default, lazy ~512KB ring allocation per claimed slot (high-water, never freed under a live audio thread), per-channel gain/mute with block ramps (click-free), fade-to-silence reclaim (§5), hard cap 24 with no-capacity refusal (§8.9), group start gates at block granularity (§8.13), native gain clamp via sanitizeStreamGain (§5.1 tier 2). - AudioEngine: mixer replaces the bare rendererBus member; setRendererBus/pushRendererAudio/getRendererBusMetrics delegate to channel #0 unchanged; pullRendererBus now mixes all ready channels (duplex + split paths and the StreamSink submix carry every channel). - N-API: mixerCreateChannel/Release/Push/SetGain/SetMute/SetGroup/List. - tests/engine_units/mixer_test.cpp: byte-compat vs plain RendererBus, cap refusal, live-consumer fade-then-free, ramp clamps, group gate, bounded strings. renderer_bus_test still green. Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
31 lines
1.5 KiB
CMake
31 lines
1.5 KiB
CMake
# engine_units — home for the per-unit tests of the audio-engine decomposition
|
|
# (docs/audio-engine-tlc.md Part IV §4/0.c). JUCE-free targets only: units are
|
|
# extracted so they can be tested against a state struct + fake ring, without a
|
|
# real device. One executable per unit keeps failures attributable.
|
|
add_executable(gain_sanitize_test gain_sanitize_test.cpp)
|
|
target_compile_features(gain_sanitize_test PRIVATE cxx_std_17)
|
|
add_test(NAME gain_sanitize COMMAND gain_sanitize_test)
|
|
|
|
# PackedStereoRing uses std::bit_cast (C++20) and std::thread.
|
|
add_executable(packed_stereo_ring_test packed_stereo_ring_test.cpp)
|
|
target_compile_features(packed_stereo_ring_test PRIVATE cxx_std_20)
|
|
find_package(Threads REQUIRED)
|
|
target_link_libraries(packed_stereo_ring_test PRIVATE Threads::Threads)
|
|
add_test(NAME packed_stereo_ring COMMAND packed_stereo_ring_test)
|
|
|
|
add_executable(engine_state_test engine_state_test.cpp)
|
|
target_compile_features(engine_state_test PRIVATE cxx_std_17)
|
|
add_test(NAME engine_state COMMAND engine_state_test)
|
|
|
|
add_executable(renderer_bus_test renderer_bus_test.cpp)
|
|
target_compile_features(renderer_bus_test PRIVATE cxx_std_20)
|
|
add_test(NAME renderer_bus COMMAND renderer_bus_test)
|
|
|
|
add_executable(mixer_test mixer_test.cpp)
|
|
target_compile_features(mixer_test PRIVATE cxx_std_20)
|
|
add_test(NAME mixer COMMAND mixer_test)
|
|
|
|
add_executable(rate_match_test rate_match_test.cpp)
|
|
target_compile_features(rate_match_test PRIVATE cxx_std_17)
|
|
add_test(NAME rate_match COMMAND rate_match_test)
|