]> git.nihav.org Git - nihav.git/commitdiff
mpadec: fix MPEG Layer III LSF decoding in multiframe mode
authorKostya Shishkov <kostya.shishkov@gmail.com>
Sat, 23 Aug 2025 14:49:17 +0000 (16:49 +0200)
committerKostya Shishkov <kostya.shishkov@gmail.com>
Sat, 23 Aug 2025 14:49:17 +0000 (16:49 +0200)
nihav-mpeg/src/codecs/mpegaudio/mod.rs

index 31c2bf99f77f9140e7d1ecd03a5fc1e34bb55ada..0a3a28eefd5d01b37640d9896baa31934074707b 100644 (file)
@@ -184,6 +184,7 @@ impl MPADecoder {
         self.sf_idx = sf_idx;
 
         let nsamples = if mpeg1 { SAMPLES } else { SAMPLES / 2 };
+        let nframes = nsamples / 32;
 
         match layer {
             0 => unimplemented!(),
@@ -219,11 +220,11 @@ impl MPADecoder {
                     return Ok(0);
                 }
                 self.synth_layer3(mode, mode_extension);
-                for (dst, src) in ch0.chunks_exact_mut(32).zip(self.out[0].iter_mut()) {
+                for (dst, src) in ch0.chunks_exact_mut(32).zip(self.out[0].iter_mut()).take(nframes) {
                     self.qmf[0].synth(src, dst);
                 }
                 if channels == 2 {
-                    for (dst, src) in ch1.chunks_mut(32).zip(self.out[1].iter_mut()) {
+                    for (dst, src) in ch1.chunks_mut(32).zip(self.out[1].iter_mut()).take(nframes) {
                         self.qmf[1].synth(src, dst);
                     }
                 }