@@ -14,7 +14,7 @@ use super::super::windows::{WindowType, calc_normalized_win};
1414use realfft:: { RealFftPlanner , RealToComplex } ;
1515
1616pub fn perform_stft < ' a , A > (
17- input : ArrayView1 < A > ,
17+ input : & ArrayRef1 < A > ,
1818 win_length : usize ,
1919 hop_length : usize ,
2020 n_fft : usize ,
3535 let to_frames_wrapper = move |x| {
3636 let n_pad_left = ( n_fft - win_length) / 2 ;
3737 let n_pad_right = n_fft - win_length - n_pad_left;
38- to_windowed_frames ( x, window. view ( ) , hop_length, ( n_pad_left, n_pad_right) )
38+ to_windowed_frames ( x, & window, hop_length, ( n_pad_left, n_pad_right) )
3939 } ;
4040
4141 let fft_module = fft_module
4949
5050 if input. len ( ) < win_length {
5151 let padded = input. pad ( ( win_length / 2 , win_length / 2 ) , Axis ( 0 ) , PadMode :: Reflect ) ;
52- let mut frames = to_frames_wrapper ( padded. view ( ) ) ;
52+ let mut frames = to_frames_wrapper ( & padded) ;
5353
5454 let n_frames = frames. len ( ) ;
5555 let mut output = Array2 :: < Complex < A > > :: zeros ( ( n_frames, n_fft / 2 + 1 ) ) ;
@@ -78,10 +78,11 @@ where
7878 input
7979 . slice ( s ! [ ..( win_length - 1 ) ] )
8080 . pad ( ( win_length / 2 , 0 ) , Axis ( 0 ) , PadMode :: Reflect ) ;
81- let mut front_frames = to_frames_wrapper ( front_wav. view ( ) ) ;
81+ let mut front_frames = to_frames_wrapper ( & front_wav) ;
8282
8383 let mut first_i = front_frames. len ( ) * hop_length - win_length / 2 ;
84- let mut frames = to_frames_wrapper ( input. slice ( s ! [ first_i..] ) ) ;
84+ let mid_wav = input. slice ( s ! [ first_i..] ) ;
85+ let mut frames = to_frames_wrapper ( & mid_wav) ;
8586
8687 first_i += frames. len ( ) * hop_length;
8788 let i_back_wav_start = first_i. min ( input. len ( ) - win_length / 2 - 1 ) ;
9192 . slice ( s ! [ i_back_wav_start..] )
9293 . pad ( ( 0 , win_length / 2 ) , Axis ( 0 ) , PadMode :: Reflect ) ;
9394 back_wav. slice_collapse ( s ! [ ( first_i - i_back_wav_start) . max( 0 ) ..] ) ;
94- let mut back_frames = to_frames_wrapper ( back_wav. view ( ) ) ;
95+ let mut back_frames = to_frames_wrapper ( & back_wav) ;
9596
9697 let n_frames = front_frames. len ( ) + frames. len ( ) + back_frames. len ( ) ;
9798 let mut output = Array2 :: < Complex < A > > :: zeros ( ( n_frames, n_fft / 2 + 1 ) ) ;
@@ -124,8 +125,8 @@ where
124125
125126#[ inline]
126127fn to_windowed_frames < A : Float > (
127- input : ArrayView1 < A > ,
128- window : ArrayView1 < A > ,
128+ input : & ArrayRef1 < A > ,
129+ window : & ArrayRef1 < A > ,
129130 hop_length : usize ,
130131 ( n_pad_left, n_pad_right) : ( usize , usize ) ,
131132) -> Vec < Array1 < A > > {
@@ -173,7 +174,7 @@ mod tests {
173174 fn stft_works ( ) {
174175 let impulse = Array1 :: < f32 > :: impulse ( 4 , 2 ) ;
175176 assert_eq ! (
176- perform_stft( impulse. view ( ) , 4 , 2 , 4 , None , None , false ) ,
177+ perform_stft( & impulse, 4 , 2 , 4 , None , None , false ) ,
177178 arr2( & [
178179 [
179180 Complex :: <f32 >:: new( 0. , 0. ) ,
@@ -197,7 +198,7 @@ mod tests {
197198 #[ test]
198199 fn stft_short_wav ( ) {
199200 let impulse = Array1 :: < f32 > :: impulse ( 2 , 1 ) ;
200- let spec = perform_stft ( impulse. view ( ) , 8 , 6 , 8 , None , None , false ) ;
201+ let spec = perform_stft ( & impulse, 8 , 6 , 8 , None , None , false ) ;
201202 dbg ! ( spec. shape( ) ) ;
202203 }
203204}
0 commit comments