diff --git a/internal/audio/input.go b/internal/audio/input.go index fc6f5c6..a177e42 100644 --- a/internal/audio/input.go +++ b/internal/audio/input.go @@ -110,6 +110,12 @@ func (aim *AudioInputManager) WriteOpusFrame(frame []byte) error { atomic.AddInt64(&aim.framesSent, 1) aim.recordFrameProcessed(len(frame)) aim.updateLatency(processingTime) + + // Record latency to granular metrics collector for histogram + if granularCollector := GetGranularMetricsCollector(); granularCollector != nil { + granularCollector.RecordInputLatency(processingTime) + } + return nil } @@ -145,6 +151,12 @@ func (aim *AudioInputManager) WriteOpusFrameZeroCopy(frame *ZeroCopyAudioFrame) atomic.AddInt64(&aim.framesSent, 1) aim.recordFrameProcessed(frame.Length()) aim.updateLatency(processingTime) + + // Record latency to granular metrics collector for histogram + if granularCollector := GetGranularMetricsCollector(); granularCollector != nil { + granularCollector.RecordInputLatency(processingTime) + } + return nil } diff --git a/internal/audio/output_ipc_manager.go b/internal/audio/output_ipc_manager.go index 2c64c91..1a75112 100644 --- a/internal/audio/output_ipc_manager.go +++ b/internal/audio/output_ipc_manager.go @@ -103,6 +103,11 @@ func (aom *AudioOutputIPCManager) WriteOpusFrame(frame *ZeroCopyAudioFrame) erro aom.recordFrameProcessed(frame.Length()) aom.updateLatency(processingTime) + // Record latency to granular metrics collector for histogram + if granularCollector := GetGranularMetricsCollector(); granularCollector != nil { + granularCollector.RecordOutputLatency(processingTime) + } + return nil } @@ -132,6 +137,11 @@ func (aom *AudioOutputIPCManager) WriteOpusFrameZeroCopy(frame *ZeroCopyAudioFra aom.recordFrameProcessed(len(frameData)) aom.updateLatency(processingTime) + // Record latency to granular metrics collector for histogram + if granularCollector := GetGranularMetricsCollector(); granularCollector != nil { + granularCollector.RecordOutputLatency(processingTime) + } + return nil } diff --git a/internal/audio/validation.go b/internal/audio/validation.go index 388d59d..a84595d 100644 --- a/internal/audio/validation.go +++ b/internal/audio/validation.go @@ -1,5 +1,5 @@ -//go:build cgo -// +build cgo +//go:build cgo || arm +// +build cgo arm package audio diff --git a/ui/src/components/AudioMetricsDashboard.tsx b/ui/src/components/AudioMetricsDashboard.tsx index c8123dc..538fdcd 100644 --- a/ui/src/components/AudioMetricsDashboard.tsx +++ b/ui/src/components/AudioMetricsDashboard.tsx @@ -478,7 +478,7 @@ export default function AudioMetricsDashboard() {
- Microphone Input Config + Audio Input Config