Skip to content

Commit fa36b76

Browse files
committed
[update] audio context builder to create an audio output device and add play sound implementation.
1 parent d9b69ee commit fa36b76

2 files changed

Lines changed: 412 additions & 76 deletions

File tree

crates/lambda-rs/src/audio/buffer.rs

Lines changed: 10 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -1,14 +1,17 @@
11
#![allow(clippy::needless_return)]
22

3-
use std::path::Path;
3+
use std::{
4+
path::Path,
5+
sync::Arc,
6+
};
47

58
use crate::audio::AudioError;
69

710
/// Fully decoded, in-memory audio samples suitable for future mixing and
811
/// playback.
912
#[derive(Clone, Debug, PartialEq)]
1013
pub struct SoundBuffer {
11-
samples: Vec<f32>,
14+
samples: Arc<[f32]>,
1215
sample_rate: u32,
1316
channels: u16,
1417
}
@@ -139,7 +142,7 @@ impl SoundBuffer {
139142
}
140143

141144
return Ok(Self {
142-
samples: decoded.samples,
145+
samples: decoded.samples.into(),
143146
sample_rate: decoded.sample_rate,
144147
channels: decoded.channels,
145148
});
@@ -187,7 +190,7 @@ impl SoundBuffer {
187190
}
188191

189192
return Ok(Self {
190-
samples,
193+
samples: samples.into(),
191194
sample_rate,
192195
channels,
193196
});
@@ -214,7 +217,7 @@ impl SoundBuffer {
214217
/// # Returns
215218
/// A slice of interleaved samples.
216219
pub fn samples(&self) -> &[f32] {
217-
return self.samples.as_slice();
220+
return self.samples.as_ref();
218221
}
219222

220223
/// Return the number of frames in this buffer.
@@ -281,7 +284,7 @@ mod tests {
281284
#[test]
282285
fn duration_seconds_computes_expected_value() {
283286
let buffer = SoundBuffer {
284-
samples: vec![0.0; 48000],
287+
samples: vec![0.0; 48000].into(),
285288
sample_rate: 48000,
286289
channels: 1,
287290
};
@@ -294,7 +297,7 @@ mod tests {
294297
#[test]
295298
fn frames_returns_zero_when_channels_is_zero() {
296299
let buffer = SoundBuffer {
297-
samples: vec![0.0, 0.0],
300+
samples: vec![0.0, 0.0].into(),
298301
sample_rate: 48_000,
299302
channels: 0,
300303
};

0 commit comments

Comments
 (0)