Audio: per-game persisted format overrides + auto-learn
Persist audio overrides keyed by game image name (coop_audio_overrides.ini next to the exe) so a known-bad game is auto-corrected on its next launch: on attach to a guessed stream the host applies any saved override, and a manual Override now saves too. A format the hook catches exactly at IAudioClient::Initialize is auto-saved as that game's override (ground truth); if it overwrites a differing stored value, a warning is logged. Host-originated log lines now reach the Log window via IpcServer::host_log (color-coded). Validated live (harness): a pre-seeded override for coop_tone is auto-applied over the guess (state -> manual override, 48000/2/16). audio_overrides_test covers persist/reload/case-insensitive lookup/differing-overwrite. Trim README. Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
This commit is contained in:
@@ -285,6 +285,9 @@ int run()
|
||||
return 1;
|
||||
}
|
||||
capture.set_injection(&injection); // for the Present-hook (Hooked) video source
|
||||
// Route the audio panel's host-side notices (override-overwrite warnings, applied
|
||||
// saved overrides) into the Log window, color-coded by level.
|
||||
audio.set_logger([&injection](std::uint32_t level, const char* text) { injection.host_log(level, text); });
|
||||
|
||||
// Controller polling + forwarding runs on its own thread so the render frame rate
|
||||
// (which can drop, especially with frame-sync) never throttles input. XInput is the
|
||||
|
||||
Reference in New Issue
Block a user