11#![ allow( clippy:: needless_return) ]
22
3- use std:: path:: Path ;
3+ use std:: {
4+ path:: Path ,
5+ sync:: Arc ,
6+ } ;
47
58use crate :: audio:: AudioError ;
69
710/// Fully decoded, in-memory audio samples suitable for future mixing and
811/// playback.
912#[ derive( Clone , Debug , PartialEq ) ]
1013pub 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