mirror of https://github.com/jetkvm/kvm.git
Replace ALSA plugin layer resampling with libspeexdsp for improved audio quality and reliability. This implementation uses direct hardware access (hw:) instead of ALSA plugins (plughw:) and handles sample rate conversion with SpeexDSP's high-quality sinc-based resampler. Key changes: - Add libspeexdsp 1.2.1 with ARM NEON optimizations to build dependencies - Switch from plughw: to hw: device access for lower latency - Implement conditional resampling (only when hardware rate ≠ 48kHz) - Use SPEEX_RESAMPLER_QUALITY_DESKTOP for high-quality interpolation - Add automatic audio dependency building in dev_deploy.sh Quality improvements: - Fix race condition in resampler cleanup with mutex protection - Fix memory leak on resampler re-initialization - Add buffer overflow validation (3840 frame limit for 192kHz) - Improve error logging for resampling, encoding, and ALSA configuration - Simplify code structure while maintaining all functionality Technical details: - Hardware negotiates actual sample rate (e.g., HDMI may vary) - SpeexDSP converts hardware rate → 48kHz for Opus encoding - USB Audio Gadget hardcoded to 48kHz (no resampling overhead) - Static buffer allocation for zero allocation in hot path - WebRTC requires 48kHz RTP clock rate per RFC 7587 |
||
|---|---|---|
| .. | ||
| audio | ||
| confparser | ||
| hidrpc | ||
| logging | ||
| mdns | ||
| native | ||
| network/types | ||
| ota | ||
| supervisor | ||
| sync | ||
| timesync | ||
| tzdata | ||
| usbgadget | ||
| utils | ||
| websecure | ||