aboutsummaryrefslogtreecommitdiffstats
path: root/mumd
diff options
context:
space:
mode:
Diffstat (limited to 'mumd')
-rw-r--r--mumd/Cargo.toml2
-rw-r--r--mumd/src/audio.rs34
2 files changed, 23 insertions, 13 deletions
diff --git a/mumd/Cargo.toml b/mumd/Cargo.toml
index c59c32b..350d81e 100644
--- a/mumd/Cargo.toml
+++ b/mumd/Cargo.toml
@@ -1,6 +1,6 @@
[package]
name = "mumd"
-version = "0.1.0"
+version = "0.2.0"
authors = ["Gustav Sörnäs <gustav@sornas.net>",
"Eskil Queseth <eskilq@kth.se>"]
license = "MIT"
diff --git a/mumd/src/audio.rs b/mumd/src/audio.rs
index 8609a91..7a673ff 100644
--- a/mumd/src/audio.rs
+++ b/mumd/src/audio.rs
@@ -24,30 +24,40 @@ pub struct Audio {
impl Audio {
pub fn new() -> Self {
+ let sample_rate = SampleRate(48000);
+
let host = cpal::default_host();
let output_device = host
.default_output_device()
.expect("default output device not found");
- let mut output_supported_configs_range = output_device
+ let output_supported_config = output_device
.supported_output_configs()
- .expect("error querying output configs");
- let output_supported_config = output_supported_configs_range
- .next()
- .expect("no supported output config??")
- .with_sample_rate(SampleRate(48000));
+ .expect("error querying output configs")
+ .find_map(|c|
+ if c.min_sample_rate() <= sample_rate && c.max_sample_rate() >= sample_rate {
+ Some(c)
+ } else {
+ None
+ })
+ .unwrap()
+ .with_sample_rate(sample_rate);
let output_supported_sample_format = output_supported_config.sample_format();
let output_config: StreamConfig = output_supported_config.into();
let input_device = host
.default_input_device()
.expect("default input device not found");
- let mut input_supported_configs_range = input_device
+ let input_supported_config = input_device
.supported_input_configs()
- .expect("error querying input configs");
- let input_supported_config = input_supported_configs_range
- .next()
- .expect("no supported input config??")
- .with_sample_rate(SampleRate(48000));
+ .expect("error querying output configs")
+ .find_map(|c|
+ if c.min_sample_rate() <= sample_rate && c.max_sample_rate() >= sample_rate {
+ Some(c)
+ } else {
+ None
+ })
+ .unwrap()
+ .with_sample_rate(sample_rate);
let input_supported_sample_format = input_supported_config.sample_format();
let input_config: StreamConfig = input_supported_config.into();