unsafe void Restore_samples_lpc(FlacFrame frame, int ch) { FlacSubframeInfo sub = frame.subframes[ch]; ulong csum = 0; fixed(int *coefs = sub.best.coefs) { for (int i = sub.best.order; i > 0; i--) { csum += (ulong)Math.Abs(coefs[i - 1]); } if ((csum << sub.obits) >= 1UL << 32) { Lpc.Decode_residual_long(sub.best.residual, sub.samples, frame.blocksize, sub.best.order, coefs, sub.best.shift); } else { Lpc.Decode_residual(sub.best.residual, sub.samples, frame.blocksize, sub.best.order, coefs, sub.best.shift); } } }