@@ -11,6 +11,7 @@ use crate::{AtomicF64, AudioBuffer, RENDER_QUANTUM_SIZE};
11
11
/// Real time safe audio stream
12
12
pub ( crate ) struct RTSStream {
13
13
stream : ReadDiskStream < SymphoniaDecoder > ,
14
+ number_of_channels : usize ,
14
15
current_time : Arc < AtomicF64 > ,
15
16
receiver : Receiver < MediaElementAction > ,
16
17
loop_ : Arc < AtomicBool > ,
@@ -54,6 +55,7 @@ impl MediaElement {
54
55
0 , // The frame in the file to start reading from.
55
56
Default :: default ( ) , // Use default read stream options.
56
57
) ?;
58
+ let number_of_channels = read_disk_stream. info ( ) . num_channels as usize ;
57
59
58
60
// Cache the start of the file into cache with index `0`.
59
61
let _ = read_disk_stream. cache ( 0 , 0 ) ;
@@ -79,6 +81,7 @@ impl MediaElement {
79
81
80
82
let rts_stream = RTSStream {
81
83
stream : read_disk_stream,
84
+ number_of_channels,
82
85
current_time : Arc :: clone ( & current_time) ,
83
86
receiver,
84
87
loop_ : Arc :: clone ( & loop_) ,
@@ -161,7 +164,10 @@ impl Iterator for RTSStream {
161
164
}
162
165
163
166
if self . paused . load ( Ordering :: SeqCst ) {
164
- let silence = AudioBuffer :: from ( vec ! [ vec![ 0. ; RENDER_QUANTUM_SIZE ] ] , sample_rate) ;
167
+ let silence = AudioBuffer :: from (
168
+ vec ! [ vec![ 0. ; RENDER_QUANTUM_SIZE ] ; self . number_of_channels] ,
169
+ sample_rate,
170
+ ) ;
165
171
return Some ( Ok ( silence) ) ;
166
172
}
167
173
0 commit comments