From: Kostya Shishkov Date: Sat, 23 Aug 2025 14:49:17 +0000 (+0200) Subject: mpadec: fix MPEG Layer III LSF decoding in multiframe mode X-Git-Url: https://git.nihav.org/?a=commitdiff_plain;h=0e1d7a7ddff8d04b0bc356794c7aacecad2d2d54;p=nihav.git mpadec: fix MPEG Layer III LSF decoding in multiframe mode --- diff --git a/nihav-mpeg/src/codecs/mpegaudio/mod.rs b/nihav-mpeg/src/codecs/mpegaudio/mod.rs index 31c2bf9..0a3a28e 100644 --- a/nihav-mpeg/src/codecs/mpegaudio/mod.rs +++ b/nihav-mpeg/src/codecs/mpegaudio/mod.rs @@ -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); } }