Bunu Neden İnşa Ettim?
"WebRTC gibi standart protokoller basit ses iletimi için çoğu zaman gereksiz hantal kalıyor. Amacım TCP/WebSocket üzerinden sadece ham PCM ses verisi (`f32` LE bytes) taşıyacak hafif ve bellek güvenli bir Rust altyapısı kurmaktı. Yankı (echo) problemini routing katmanında kaynak adreslerini filtreleyerek çözdüm, donanımsal sample-rate uyuşmazlıklarını ise doğrudan istemcide manuel olarak eşitledim."
Mimari & Kararlar
Mimari temelde CPAL'in senkron donanım thread'leri ile Tokio'nun asenkron I/O'sunu birbirine bağlıyor. İstemci, bant genişliğinden tasarruf etmek için mikrofon girişini Stereo'dan Mono'ya düşürüp, unbounded MPSC kanallarıyla asenkron WebSocket yazıcısına aktarıyor. Oynatım tarafında ağdaki dalgalanmaları sönümlemek için `Mutex` ile sarmalanmış `VecDeque` tabanlı bir Jitter Buffer (1000 sample eşikli) çalışıyor. Sunucu ise `(SocketAddr, Message)` tuple'ları taşıyan bir `tokio::sync::broadcast` kanalı kullanıp, yankıyı önlemek adına paketleri sadece gönderen adres dışındaki herkese iletiyor.
Temel Özellikler
- 01.CPAL kullanarak donanım seviyesinde düşük gecikmeli ses yakalama ve oynatma
- 02.Ağ dalgalanmalarına karşı `VecDeque` tabanlı eşzamanlı Jitter Buffer
- 03.`SocketAddr` eşleştirmesiyle sunucu tarafında yankı/feedback engelleme
- 04.Cargo feature flag'leri sayesinde donanımsal ses bağımlılıklarını (ALSA/PulseAudio) sunucu derlemesinden izole etme
- 05.Bant genişliği verimliliği için anlık Mono/Stereo downmix ve upmix işlemleri