/// <summary> /// Passes bitstream to the decoder. /// </summary> /// <param name="inbuf">Bitstream buffer to pass</param> /// <param name="offset">Index into inbuf</param> /// <param name="length">Number of bytes to use from inbuf</param> void PutBitstream(byte[] inbuf, int offset, int length) { FastMemcpyMemmove.memmove(bitstream.Data, bitstream.Data + (int)bitstream.DataOffset, (int)bitstream.DataLength); bitstream.DataOffset = 0; int free = (int)(bitstream.MaxLength - bitstream.DataLength); Trace.Assert(length <= free); Marshal.Copy(inbuf, offset, bitstream.Data + (int)bitstream.DataLength, length); bitstream.DataLength += (uint)length; }
/// <summary> /// Puts the bitstream. /// </summary> /// <param name="inbuf">The inbuf.</param> /// <param name="offset">The offset.</param> /// <param name="length">The length.</param> /// <exception cref="QuickSyncException">insufficient space in buffer</exception> public void PutBitstream(byte[] inbuf, int offset, int length) { FastMemcpyMemmove.memmove(bitstream.Data, bitstream.Data + (int)bitstream.DataOffset, (int)bitstream.DataLength); bitstream.DataOffset = 0; int free = (int)(bitstream.MaxLength - bitstream.DataLength); //Trace.Assert(length <= free); if (free < length) { throw new QuickSyncException("insufficient space in buffer"); } Marshal.Copy(inbuf, offset, bitstream.Data + (int)bitstream.DataLength, length); bitstream.DataLength += (uint)length; }