Mirror the real game's audio so Steam Remote Play Together (which streams the host's own audio session) carries it to the guest. The host captures the game by PID via WASAPI process loopback and re-renders it on the default endpoint; the game still plays locally too (accepted "double audio" for now). - ProcessLoopbackCapture: process-loopback capture client, frame-sink + stats. The completion handler must be agile (IAgileObject) or ActivateAudioInterfaceAsync rejects every call with E_ILLEGAL_METHOD_CALL. - AudioMirror: wraps capture with an event-driven render client and a primed ring buffer; AudioPanel drives it from the injected game's window/PID. - coop_tone: standalone WASAPI sine-wave process used as a known audio source. - audio_loopback_test (CTest): captures coop_tone by PID and asserts non-silent audio arrives, so the path is verifiable without a second Steam account. Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
31 lines
1.1 KiB
CMake
31 lines
1.1 KiB
CMake
# Self-contained verification of the forwarding core (IPC + XInput hook).
|
|
# Reuses the hook's xinput_hook.cpp directly so it exercises the shipping code.
|
|
add_executable(hook_selftest
|
|
hook_selftest.cpp
|
|
${CMAKE_SOURCE_DIR}/hook/src/xinput_hook.cpp)
|
|
|
|
target_include_directories(hook_selftest PRIVATE ${CMAKE_SOURCE_DIR}/hook/src)
|
|
|
|
target_link_libraries(hook_selftest PRIVATE
|
|
coop_common
|
|
safetyhook::safetyhook
|
|
xinput)
|
|
|
|
add_test(NAME hook_selftest COMMAND hook_selftest)
|
|
|
|
# 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
|
|
audio_loopback_test.cpp
|
|
${CMAKE_SOURCE_DIR}/host/src/audio/process_loopback_capture.cpp)
|
|
|
|
target_include_directories(audio_loopback_test PRIVATE ${CMAKE_SOURCE_DIR}/host/src)
|
|
|
|
# Process loopback needs the Windows 10 20H1 (NTDDI_WIN10_CO) headers.
|
|
target_compile_definitions(audio_loopback_test PRIVATE NTDDI_VERSION=0x0A00000B)
|
|
|
|
target_link_libraries(audio_loopback_test PRIVATE mmdevapi ole32)
|
|
|
|
add_dependencies(audio_loopback_test coop_tone)
|
|
add_test(NAME audio_loopback_test COMMAND audio_loopback_test)
|