diff options
| author | Bond_009 <bond.009@outlook.com> | 2020-01-10 21:18:16 +0100 |
|---|---|---|
| committer | Bond_009 <bond.009@outlook.com> | 2020-01-10 21:18:16 +0100 |
| commit | bb236b95916c7fe0fc04fefbb409686ab289a758 (patch) | |
| tree | 72d32e64a7bc36777ad84c3503ccd33075c136db /BDInfo/TSStreamBuffer.cs | |
| parent | 7f5a174dff98c6071fc292a41bba63d1435c2ddd (diff) | |
| parent | 162c1ac7b7fde0e4929cf262b0f275e3eb15524c (diff) | |
Merge branch 'master' into warn12
Diffstat (limited to 'BDInfo/TSStreamBuffer.cs')
| -rw-r--r-- | BDInfo/TSStreamBuffer.cs | 130 |
1 files changed, 0 insertions, 130 deletions
diff --git a/BDInfo/TSStreamBuffer.cs b/BDInfo/TSStreamBuffer.cs deleted file mode 100644 index 30bd1a3f4..000000000 --- a/BDInfo/TSStreamBuffer.cs +++ /dev/null @@ -1,130 +0,0 @@ -//============================================================================ -// BDInfo - Blu-ray Video and Audio Analysis Tool -// Copyright © 2010 Cinema Squid -// -// This library is free software; you can redistribute it and/or -// modify it under the terms of the GNU Lesser General Public -// License as published by the Free Software Foundation; either -// version 2.1 of the License, or (at your option) any later version. -// -// This library is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU -// Lesser General Public License for more details. -// -// You should have received a copy of the GNU Lesser General Public -// License along with this library; if not, write to the Free Software -// Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA -//============================================================================= - -using System; -using System.Collections.Specialized; -using System.IO; - -namespace BDInfo -{ - public class TSStreamBuffer - { - private MemoryStream Stream = new MemoryStream(); - private int SkipBits = 0; - private byte[] Buffer; - private int BufferLength = 0; - public int TransferLength = 0; - - public TSStreamBuffer() - { - Buffer = new byte[4096]; - Stream = new MemoryStream(Buffer); - } - - public long Length => (long)BufferLength; - - public long Position => Stream.Position; - - public void Add( - byte[] buffer, - int offset, - int length) - { - TransferLength += length; - - if (BufferLength + length >= Buffer.Length) - { - length = Buffer.Length - BufferLength; - } - if (length > 0) - { - Array.Copy(buffer, offset, Buffer, BufferLength, length); - BufferLength += length; - } - } - - public void Seek( - long offset, - SeekOrigin loc) - { - Stream.Seek(offset, loc); - } - - public void Reset() - { - BufferLength = 0; - TransferLength = 0; - } - - public void BeginRead() - { - SkipBits = 0; - Stream.Seek(0, SeekOrigin.Begin); - } - - public void EndRead() - { - } - - public byte[] ReadBytes(int bytes) - { - if (Stream.Position + bytes >= BufferLength) - { - return null; - } - - byte[] value = new byte[bytes]; - Stream.Read(value, 0, bytes); - return value; - } - - public byte ReadByte() - { - return (byte)Stream.ReadByte(); - } - - public int ReadBits(int bits) - { - long pos = Stream.Position; - - int shift = 24; - int data = 0; - for (int i = 0; i < 4; i++) - { - if (pos + i >= BufferLength) break; - data += (Stream.ReadByte() << shift); - shift -= 8; - } - var vector = new BitVector32(data); - - int value = 0; - for (int i = SkipBits; i < SkipBits + bits; i++) - { - value <<= 1; - value += (vector[1 << (32 - i - 1)] ? 1 : 0); - } - - SkipBits += bits; - Stream.Seek(pos + (SkipBits >> 3), SeekOrigin.Begin); - SkipBits = SkipBits % 8; - - return value; - } - } -} |
