static void Main(string[] args) { byte[] data = { 0xff, 0xfe, 0xfd, 4, 5, 6, 7, 8, 9, 10 }; CbitStream cbs = new CbitStream(data); int bit; for (int i = 0; (bit = cbs.getBit()) != -1; i++) { Console.Write(bit); if (i % 8 == 7) { Console.WriteLine(); } } cbs.setSeek(0); Console.WriteLine(cbs.getBits(10)); Console.WriteLine(cbs.getBits(10)); Console.WriteLine(cbs.getBits(10)); Console.WriteLine(cbs.getBits(10)); Console.WriteLine(cbs.getBits(10)); Console.WriteLine(cbs.getBits(10)); Console.WriteLine(cbs.getBits(10)); Console.WriteLine(cbs.getBits(10)); Console.WriteLine(cbs.getBits(10)); Console.WriteLine(cbs.getBits(10)); Console.WriteLine(cbs.getBits(10)); Console.WriteLine(cbs.getBits(10)); }
public CbitStream(CbitStream prev) { data_length = prev.data_length; bit_seek = prev.bit_seek; data = new byte[prev.data.Length]; prev.data.CopyTo(data, 0); }
public SOS(SOS prev) { if (prev.id != null) { id = new byte[prev.id.Length]; prev.id.CopyTo(id, 0); } head_length = prev.head_length; cbs = new CbitStream(prev.cbs); }
public override void ReadMarker(ref BinaryReader br_in) { try { read_headsize(ref br_in); br_in.ReadBytes(this.head_length - 2); cbs = new CbitStream(br_in.ReadBytes((int)(br_in.BaseStream.Length - br_in.BaseStream.Position - 2))); } catch { Console.WriteLine("sos.read error"); } }