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);
(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 {