]> git.nihav.org Git - nihav.git/blobdiff - nihav-core/src/soundcvt/mod.rs
core/soundcvt: fix buffer type in test
[nihav.git] / nihav-core / src / soundcvt / mod.rs
index 4f9d81c1189d2912bc9854aa4a2bb541d79439fd..bea95d19ccdb0e99afc73883f1f47de3e39739ed 100644 (file)
@@ -368,6 +368,8 @@ Result<NABufferType, SoundConvertError> {
     }
     let mut dst_buf = ret.unwrap();
 
+    let sstep = src.get_audio_step();
+    let dstep = dst_buf.get_audio_step();
     let sr: Box<dyn SampleReader> = match src {
             NABufferType::AudioU8(ref ab) => {
                 let stride = ab.get_stride();
@@ -427,26 +429,34 @@ Result<NABufferType, SoundConvertError> {
     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 {