X-Git-Url: https://git.nihav.org/?a=blobdiff_plain;f=nihav-core%2Fsrc%2Fsoundcvt%2Fmod.rs;h=bea95d19ccdb0e99afc73883f1f47de3e39739ed;hb=152e8f78a8e9bec46513e55394fe85e79d162a30;hp=4f9d81c1189d2912bc9854aa4a2bb541d79439fd;hpb=886156da5a55514f145b5c4f2e9ff936b263e4cd;p=nihav.git diff --git a/nihav-core/src/soundcvt/mod.rs b/nihav-core/src/soundcvt/mod.rs index 4f9d81c..bea95d1 100644 --- a/nihav-core/src/soundcvt/mod.rs +++ b/nihav-core/src/soundcvt/mod.rs @@ -368,6 +368,8 @@ Result { } let mut dst_buf = ret.unwrap(); + let sstep = src.get_audio_step(); + let dstep = dst_buf.get_audio_step(); let sr: Box = match src { NABufferType::AudioU8(ref ab) => { let stride = ab.get_stride(); @@ -427,26 +429,34 @@ Result { if !into_float { let mut svec = vec![0; src_chmap.num_channels()]; let mut dvec = vec![0; dst_chmap.num_channels()]; - for i in 0..nsamples { - sr.get_samples_i32(i, &mut svec); + let mut spos = 0; + let mut dpos = 0; + for _ in 0..nsamples { + sr.get_samples_i32(spos, &mut svec); if !channel_op.is_remix() { apply_channel_op(&channel_op, &svec, &mut dvec); } else { remix_i32(&channel_op, &svec, &mut dvec); } - sw.store_samples_i32(i, &dvec); + sw.store_samples_i32(dpos, &dvec); + spos += sstep; + dpos += dstep; } } else { let mut svec = vec![0.0; src_chmap.num_channels()]; let mut dvec = vec![0.0; dst_chmap.num_channels()]; - for i in 0..nsamples { - sr.get_samples_f32(i, &mut svec); + let mut spos = 0; + let mut dpos = 0; + for _ in 0..nsamples { + sr.get_samples_f32(spos, &mut svec); if !channel_op.is_remix() { apply_channel_op(&channel_op, &svec, &mut dvec); } else { remix_f32(&channel_op, &svec, &mut dvec); } - sw.store_samples_f32(i, &dvec); + sw.store_samples_f32(dpos, &dvec); + spos += sstep; + dpos += dstep; } } drop(sw); @@ -566,7 +576,7 @@ mod test { block_len: 512, }; let mut src_frm = alloc_audio_buffer(src_ainfo, 42, chcfg51.clone()).unwrap(); - if let NABufferType::AudioPacked(ref mut abuf) = src_frm { + if let NABufferType::AudioU8(ref mut abuf) = src_frm { let data = abuf.get_data_mut().unwrap(); let mut idx = 0; for _ in 0..42 {