Fix cpal initialization on windows

This commit is contained in:
Simon Gellis 2026-07-14 00:13:20 -04:00
parent 466cf29eb7
commit 828acebb89
1 changed files with 6 additions and 6 deletions

View File

@ -4,7 +4,7 @@ use anyhow::{Result, bail};
use audioadapter_buffers::direct::InterleavedSlice; use audioadapter_buffers::direct::InterleavedSlice;
use cpal::traits::{DeviceTrait, HostTrait, StreamTrait}; use cpal::traits::{DeviceTrait, HostTrait, StreamTrait};
use rubato::{Adjustable as _, Resampler}; use rubato::{Adjustable as _, Resampler};
use tracing::error; use tracing::warn;
pub struct Audio { pub struct Audio {
#[allow(unused)] #[allow(unused)]
@ -23,10 +23,10 @@ impl Audio {
let Some(device) = host.default_output_device() else { let Some(device) = host.default_output_device() else {
bail!("No output device available"); bail!("No output device available");
}; };
let Some(config) = device let default_rate = device.default_output_config()?.sample_rate();
.supported_output_configs()? let Some(config) = device.supported_output_configs()?.find(|c| {
.find(|c| c.channels() == 2 && c.sample_format().is_float()) c.channels() == 2 && c.sample_format().is_float() && c.contains_rate(default_rate)
else { }) else {
bail!("No suitable output config available"); bail!("No suitable output config available");
}; };
let mut config = config.with_max_sample_rate().config(); let mut config = config.with_max_sample_rate().config();
@ -66,7 +66,7 @@ impl Audio {
} }
chunk.commit_all(); chunk.commit_all();
}, },
move |error| error!(%error, "stream error"), move |error| warn!(%error, "stream error"),
None, None,
)?; )?;
stream.play()?; stream.play()?;