ape: fix silent block condition
[nihav.git] / nihav-llaudio / src / codecs / ape.rs
index a89f0c5342a18b14dcf39b8b88220da49cb0336e..c80dab233492cf41dfb57c51380d596939e73af1 100644 (file)
@@ -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 {