mirror of
https://github.com/got-feedBack/feedBack-desktop.git
synced 2026-09-12 09:28:11 +00:00
refactor(audio): extract PackedStereoRing — one SPSC ring template (phase 1)
Replaces the four hand-maintained copies of the packed-LR SPSC design (split-mode output ring, per-InputDeviceSlot rings, stream-sink ring, renderer-bus ring) with slopsmith::PackedStereoRing<NFrames> (src/audio/engine/PackedStereoRing.h). The template owns the storage, power-of-two/lock-free asserts, pack/unpack, producer publish, reset, the w<r resync, and the lapped catch-up; per-site consumer policy (pull-vs- consume skew, renderer prime/fill-clamp) stays verbatim at the call sites. Pure code move per the TLC plan — no behavior change; the renderer bus's control-thread readIndex write on disable (deep-read §4) is deliberately preserved and gets its flush-flag fix in phase 2. Unit-tested in tests/engine_units/packed_stereo_ring_test.cpp: threaded tear-freedom under lapping (2M frames), drop-oldest catch-up, index-reset resync, pull-vs-consume skew. Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
This commit is contained in:
co-authored by
Claude Fable 5
parent
3e449c0318
commit
eeb83cbdbc
@@ -5,3 +5,10 @@
|
||||
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)
|
||||
|
||||
Reference in New Issue
Block a user