Skip to content

v0.8.28

Choose a tag to compare

@auggiesoft auggiesoft released this 10 Mar 01:19
· 162 commits to master since this release

What's New

Audio Diagnostics Overhaul

The audio diagnostics page has been completely redesigned. Start Listening plays all incoming audio and collects real-time jitter, buffer health, and frame timing data. Click Report Problem to capture a full diagnostic report including raw PCM audio for each transmission. Reports are sent as multipart with separate PCM files and gzip-compressed JSON metadata.

Buffer Health Tracking

The audio worklet now tracks underruns, overflows, playout starts/stops, and min/max/avg buffer levels. The playout start threshold has been increased from 200ms to 400ms to better handle P25's ~185ms frame spacing. Underrun counting is limited to real buffer starvation events (first 30ms of silence), not the natural wind-down after transmissions end.

Jitter Chart Improvements

Outlier jitter measurements (>3x running mean) are filtered from charts while kept in the raw data for reports. Inter-transmission gaps no longer pollute jitter stats — the tracker properly resets between transmissions.

Analytics Fix

Fixed 500 errors on the analytics page when decode_rates or recorder_snapshots rows have NULL system_id or src_num values.

WebSocket Seq Counter Fix

The per-TG sequence counter on the WebSocket audio stream is now keyed on (systemId, tgid) instead of just tgid, preventing false gap detection when multiple systems share the same talkgroup ID.

Full Changelog

  • 98856eb feat(audio-diagnostics): capture PCM audio, filter jitter outliers, improve report flow
  • 2ac66ce fix(tests): add AudioJitterStats to mock streamer interface
  • b67efe1 feat(debug-receiver): multipart reports with separate PCM audio files and gzip
  • 2fd0ca3 feat(audio-diagnostics): add buffer health tracking and redesign report flow
  • d5a8349 feat(debug-receiver): increase body limit to 10MB, add gzip support, remove rate limiter
  • e81397c fix(audio): key WebSocket seq counter on system:tgid to prevent false gap detection
  • eea4063 fix(stats): guard against NULL system_id and src_num in analytics queries