X-Git-Url: https://git.nihav.org/?a=blobdiff_plain;f=nihav-llaudio%2Fsrc%2Fcodecs%2Fape.rs;h=c80dab233492cf41dfb57c51380d596939e73af1;hb=7e0b626d672023747462872ae4010771a3420055;hp=a89f0c5342a18b14dcf39b8b88220da49cb0336e;hpb=87927c5732b39bb23209486bed8d7bb7fc56b92e;p=nihav.git diff --git a/nihav-llaudio/src/codecs/ape.rs b/nihav-llaudio/src/codecs/ape.rs index a89f0c5..c80dab2 100644 --- a/nihav-llaudio/src/codecs/ape.rs +++ b/nihav-llaudio/src/codecs/ape.rs @@ -169,7 +169,7 @@ impl NADecoder for APEDecoder { if self.is_stereo { self.right.resize(nblocks, 0); } - if (fflags & 3) == 0 { + if (!self.is_stereo && (fflags & 1) == 0) || (self.is_stereo && (fflags & 3) != 3) { if !self.is_stereo || (fflags & 4) != 0 { (self.decode_mono)(&mut coder, &mut self.left)?; self.fmode.filter_mono(&mut self.left); @@ -181,6 +181,11 @@ impl NADecoder for APEDecoder { (self.decode_stereo)(&mut coder, &mut self.left, &mut self.right)?; self.fmode.filter_stereo(&mut self.left, &mut self.right); } + } else { + for l in self.left.iter_mut() { *l = 0; } + if self.is_stereo { + for r in self.right.iter_mut() { *r = 0; } + } } if self.version >= 0x3990 || nblocks == self.blocksperframe {