Implemented real-time pacing at the HTTP broadcast level based on audio
timestamps propagated from the pipeline. This provides much tighter control
over streaming bandwidth compared to the pipeline TimerNode alone.
Key changes:
- Created PcmChunk struct to carry both PCM bytes and timestamps
- Modified PCM channels from mpsc::channel<Vec<u8>> to mpsc::channel<PcmChunk>
- ByteStreamReader now extracts timestamps and shares them via Arc<RwLock<f64>>
- Broadcasters read current audio timestamp and pace output accordingly
- BROADCAST_MAX_LEAD_TIME set to 0.5s (vs 3.0s for pipeline TimerNode)
Benefits:
- Precise real-time delivery: ~92 KB/s for FLAC, ~86 KB/s for OGG-FLAC
- Lower latency for new clients (0.5s buffer vs 3s)
- Smoother streaming without bursts
- Works with both StreamingFlacSink and StreamingOggFlacSink
Tested:
- FLAC streaming: 92.27 KB/s average over 30s (verified with curl)
- OGG-FLAC streaming: 86.40 KB/s average over 30s
- Both formats correctly identified by file command
- Compilation successful with no errors
Affected files:
- streaming_flac_sink.rs: PcmChunk, ByteStreamReader, broadcast_flac_stream pacing
- streaming_ogg_flac_sink.rs: Same changes for OGG-FLAC variant