diff options
Diffstat (limited to 'src/audio.rs')
| -rw-r--r-- | src/audio.rs | 43 |
1 files changed, 21 insertions, 22 deletions
diff --git a/src/audio.rs b/src/audio.rs index 386c041..62afd93 100644 --- a/src/audio.rs +++ b/src/audio.rs | |||
| @@ -199,30 +199,29 @@ fn audio_thread( | |||
| 199 | 199 | ||
| 200 | // Pre-decode some samples before starting playback to prevent buffer underrun | 200 | // Pre-decode some samples before starting playback to prevent buffer underrun |
| 201 | let channels = data.channels as usize; | 201 | let channels = data.channels as usize; |
| 202 | for _ in 0..50 { | 202 | for _ in 0..100 { |
| 203 | match data.format.next_packet() { | 203 | match data.format.next_packet() { |
| 204 | Ok(packet) => { | 204 | Ok(packet) => match data.decoder.decode(&packet) { |
| 205 | match data.decoder.decode(&packet) { | 205 | Ok(decoded) => { |
| 206 | Ok(decoded) => { | 206 | let spec = *decoded.spec(); |
| 207 | let spec = *decoded.spec(); | 207 | let mut sample_buf = symphonia::core::audio::SampleBuffer::< |
| 208 | let mut sample_buf = | 208 | f32, |
| 209 | symphonia::core::audio::SampleBuffer::<f32>::new( | 209 | >::new( |
| 210 | decoded.capacity() as u64, spec | 210 | decoded.capacity() as u64, spec |
| 211 | ); | 211 | ); |
| 212 | sample_buf.copy_interleaved_ref(decoded); | 212 | sample_buf.copy_interleaved_ref(decoded); |
| 213 | let samples = sample_buf.samples(); | 213 | let samples = sample_buf.samples(); |
| 214 | 214 | ||
| 215 | let resampled = if let Some(ratio) = data.resample_ratio { | 215 | let resampled = if let Some(ratio) = data.resample_ratio { |
| 216 | resample_linear(samples, ratio, channels) | 216 | resample_linear(samples, ratio, channels) |
| 217 | } else { | 217 | } else { |
| 218 | samples.to_vec() | 218 | samples.to_vec() |
| 219 | }; | 219 | }; |
| 220 | 220 | ||
| 221 | data.sample_buffer.extend(resampled); | 221 | data.sample_buffer.extend(resampled); |
| 222 | } | ||
| 223 | Err(_) => break, | ||
| 224 | } | 222 | } |
| 225 | } | 223 | Err(_) => break, |
| 224 | }, | ||
| 226 | Err(_) => break, | 225 | Err(_) => break, |
| 227 | } | 226 | } |
| 228 | } | 227 | } |
