Skip to content

Commit b3270f3

Browse files
committed
feat: always set AAudio buffer size with 256 fallback
1 parent 401e5b9 commit b3270f3

1 file changed

Lines changed: 10 additions & 11 deletions

File tree

src/host/aaudio/mod.rs

Lines changed: 10 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -4,6 +4,7 @@
44
55
use std::cmp;
66
use std::convert::TryInto;
7+
use std::sync::atomic::{AtomicI32, Ordering};
78
use std::sync::{Arc, Mutex};
89
use std::time::{Duration, Instant};
910
use std::vec::IntoIter as VecIntoIter;
@@ -277,23 +278,21 @@ fn configure_for_device(
277278
};
278279
builder = builder.sample_rate(config.sample_rate.try_into().unwrap());
279280

280-
let buffer_size = match config.buffer_size {
281+
let size = match config.buffer_size {
281282
BufferSize::Default => {
282283
// Use the optimal burst size from AudioManager:
283284
// https://developer.android.com/ndk/guides/audio/audio-latency#buffer-size
284-
AudioManager::get_frames_per_buffer().ok().map(|s| s as u32)
285+
match AudioManager::get_frames_per_buffer() {
286+
Ok(size) if size > 0 => size as u32,
287+
_ => 256,
288+
}
285289
}
286-
BufferSize::Fixed(size) => Some(size),
290+
BufferSize::Fixed(size) => size,
287291
};
288292

289-
if let Some(size) = buffer_size {
290-
builder
291-
.frames_per_data_callback(size as i32)
292-
.buffer_capacity_in_frames((size * 2) as i32) // Double-buffering
293-
} else {
294-
// If we couldn't determine a buffer size, let AAudio choose defaults
295-
builder
296-
}
293+
builder
294+
.frames_per_data_callback(size as i32)
295+
.buffer_capacity_in_frames((size * 2) as i32) // Double-buffering
297296
}
298297

299298
fn build_input_stream<D, E>(

0 commit comments

Comments
 (0)