Example #1
0
        public unsafe int DecodeFrame(byte[] buffer, int pos, int len)
        {
            fixed(byte *buf = buffer)
            {
                framereader.Reset(buf, pos, len);
                decode_frame_header(framereader, frame);
                decode_subframes(framereader, frame);
                framereader.flush();
                ushort crc_1 = framereader.get_crc16();
                ushort crc_2 = framereader.read_ushort();

                if (do_crc && crc_1 != crc_2)
                {
                    throw new Exception("frame crc mismatch");
                }
                restore_samples(frame);
                _samplesInBuffer = frame.blocksize;
                return(framereader.Position - pos);
            }
        }