aboutsummaryrefslogtreecommitdiffstats
path: root/src/audio.rs
diff options
context:
space:
mode:
authorsalmonik <raisersoft@proton.me>2026-05-10 00:29:01 +0200
committersalmonik <raisersoft@proton.me>2026-05-10 00:29:01 +0200
commit69172d7abe17d56b68a97465344467d8c34482b6 (patch)
tree2420fc37047441a9c81c7b7a221e84842a3f9e4e /src/audio.rs
parentFix shuffle restore - track played tracks via shuffled_indices, not position (diff)
downloadrsplayer-69172d7abe17d56b68a97465344467d8c34482b6.tar.gz
rsplayer-69172d7abe17d56b68a97465344467d8c34482b6.zip
Fix queue display returning nothing - removed daemon pager, return full output instead. Increase pre-buffer to 100 packets.
Diffstat (limited to 'src/audio.rs')
-rw-r--r--src/audio.rs43
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 }