Debounce the Audio panel "live" column
The live indicator compared frames_rendered to the previous UI frame's value, but audio buffers release in bursts so most frames saw no change -- the cell flickered between a green dot and grey "idle". Now each stream remembers when it last advanced and reads "live" for a short window (0.4 s) afterwards, with a ~2 Hz frames/s estimate next to it; otherwise "idle". Steady and readable for multi-stream games. Verified: x64 build green. Full visual confirmation needs an injected, audio-playing game with the per-stream table open (Debug details); logic reviewed. Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
This commit is contained in:
@@ -32,8 +32,15 @@ private:
|
||||
bool enabled_ = false;
|
||||
AudioMirror mirror_;
|
||||
|
||||
// Previous per-stream frame counts, to flag streams as live (advancing).
|
||||
// Per-stream activity tracking for the "live" column. Audio buffers release in
|
||||
// bursts, so most UI frames see no change; comparing to just the previous frame
|
||||
// flickers. Instead we remember when each stream last advanced and debounce the
|
||||
// live/idle indicator over a short window, plus a ~2 Hz frames/s estimate.
|
||||
std::uint64_t prev_frames_[kMaxAudioStreams] = {};
|
||||
double last_active_[kMaxAudioStreams] = {}; // ImGui time a stream last advanced
|
||||
std::uint64_t rate_base_frames_[kMaxAudioStreams] = {};
|
||||
double frames_per_s_[kMaxAudioStreams] = {};
|
||||
double rate_base_time_ = 0.0;
|
||||
};
|
||||
|
||||
} // namespace coop
|
||||
|
||||
Reference in New Issue
Block a user