Audio render-hook M1: shared audio ring + protocol diag fields
First milestone of the injection render-hook audio path (see docs/audio-render-hook-plan.md) that fixes the local audio echo without a virtual device. - common/include/coop/audio_ring.hpp: new lock-free SPSC shared-memory ring for PCM, separate from the input/status SharedBlock. Free-running 64-bit positions (release/acquire), format handshake, host-owned capture_enabled gate, drop-whole-packet overrun policy. - common/include/coop/protocol.hpp: add AudioStreamInfo + audio_streams_seen / audio_streams[] to the always-present HookStatus for the render-stream-count debug view; bump kProtocolVersion 3->4 (new members appended). - tests/audio_ring_test.cpp: in-process unit test (push/pop integrity, wrap-around, format handshake, overrun/drop). No hook or audio device. - docs/audio-render-hook-plan.md: the green-lit design this implements. Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
This commit is contained in:
@@ -13,6 +13,12 @@ target_link_libraries(hook_selftest PRIVATE
|
||||
|
||||
add_test(NAME hook_selftest COMMAND hook_selftest)
|
||||
|
||||
# Unit test for the shared audio ring (lock-free SPSC push/pop, wrap-around,
|
||||
# format handshake, overrun policy). Header-only, no hook or audio device.
|
||||
add_executable(audio_ring_test audio_ring_test.cpp)
|
||||
target_link_libraries(audio_ring_test PRIVATE coop_common)
|
||||
add_test(NAME audio_ring_test COMMAND audio_ring_test)
|
||||
|
||||
# Integration test for WASAPI process-loopback capture. Reuses the shipping
|
||||
# capture code and captures from coop_tone (a known sine-wave render process).
|
||||
add_executable(audio_loopback_test
|
||||
|
||||
Reference in New Issue
Block a user