|
4 | 4 |
|
5 | 5 | use std::cmp; |
6 | 6 | use std::convert::TryInto; |
| 7 | +use std::sync::atomic::{AtomicI32, Ordering}; |
7 | 8 | use std::sync::{Arc, Mutex}; |
8 | 9 | use std::time::{Duration, Instant}; |
9 | 10 | use std::vec::IntoIter as VecIntoIter; |
@@ -277,23 +278,21 @@ fn configure_for_device( |
277 | 278 | }; |
278 | 279 | builder = builder.sample_rate(config.sample_rate.try_into().unwrap()); |
279 | 280 |
|
280 | | - let buffer_size = match config.buffer_size { |
| 281 | + let size = match config.buffer_size { |
281 | 282 | BufferSize::Default => { |
282 | 283 | // Use the optimal burst size from AudioManager: |
283 | 284 | // 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 | + } |
285 | 289 | } |
286 | | - BufferSize::Fixed(size) => Some(size), |
| 290 | + BufferSize::Fixed(size) => size, |
287 | 291 | }; |
288 | 292 |
|
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 |
297 | 296 | } |
298 | 297 |
|
299 | 298 | fn build_input_stream<D, E>( |
|
0 commit comments