queue_size_ms=0 is supposed to disable the buffer:
|
if (queue_size_samples_) { |
|
int available = |
|
(queue_size_samples_ + notify_threshold_samples_) - buffer_.size(); |
|
if (available < data.size()) |
|
return false; |
|
|
|
if (on_complete_ || capture_userdata_) |
|
return false; |
|
|
|
buffer_.insert(buffer_.end(), data.begin(), data.end()); |
|
|
|
if (buffer_.size() <= notify_threshold_samples_) { |
|
on_complete(ctx); // complete directly |
|
} else { |
|
on_complete_ = on_complete; |
|
capture_userdata_ = ctx; |
|
} |
|
|
|
} else { |
|
// capture directly when the queue buffer is 0 (frame size must be 10ms) |
|
for (auto sink : sinks_) |
|
sink->OnData(data.data(), sizeof(int16_t) * 8, sample_rate, |
|
number_of_channels, number_of_frames); |
|
} |
But it is incorrectly handled in audio_source.rs:
|
for chunk in frame.data.chunks(self.queue_size_samples as usize) { |
Calling chunks with 0 causes panic.
queue_size_ms=0 is supposed to disable the buffer:
rust-sdks/webrtc-sys/src/audio_track.cpp
Lines 203 to 226 in 0773bce
But it is incorrectly handled in audio_source.rs:
rust-sdks/libwebrtc/src/native/audio_source.rs
Line 87 in 0773bce
Calling
chunkswith 0 causes panic.