public override void Write(BoxWriter writer) { using (new SizeCalculator(this, writer)) { base.Write(writer); writer.WriteUInt32(TrackId); uint num = 0; num = (uint)((LengthSizeOfTrafNum << 4) | (LengthSizeOfTrunNum << 2) | LengthSizeOfSampleNum); writer.WriteUInt32(num); writer.WriteUInt32(NumberOfEntry); for (int i = 0; i < this.NumberOfEntry; i++) { TrackFragmentRandomAccessEntry item = TrackFragmentRandomAccessEntries[i]; item.Write(writer, base.Version, this.LengthSizeOfTrafNum, this.LengthSizeOfTrunNum, this.LengthSizeOfSampleNum); } } }
public override void Read(BoxReader reader) { using (new SizeChecker(this, reader)) { base.Read(reader); this.TrackId = reader.ReadUInt32(); uint num = reader.ReadUInt32(); if ((num & 0xfffc) != 0) { throw new InvalidBoxException(base.Type, reader.BaseStream.Position, "top 26 bits of length field reserved"); } this.LengthSizeOfTrafNum = (uint)((num & 12) >> 4); this.LengthSizeOfTrunNum = (uint)((num & 6) >> 2); this.LengthSizeOfSampleNum = num & 3; this.NumberOfEntry = reader.ReadUInt32(); this.TrackFragmentRandomAccessEntries = new List <TrackFragmentRandomAccessEntry>((int)this.NumberOfEntry); for (int i = 0; i < this.NumberOfEntry; i++) { TrackFragmentRandomAccessEntry item = new TrackFragmentRandomAccessEntry(); item.Read(reader, base.Version, this.LengthSizeOfTrafNum, this.LengthSizeOfTrunNum, this.LengthSizeOfSampleNum); this.TrackFragmentRandomAccessEntries.Add(item); } } }
public override void Read(BoxReader reader) { using (new SizeChecker(this, reader)) { base.Read(reader); this.TrackId = reader.ReadUInt32(); uint num = reader.ReadUInt32(); if ((num & 0xfffc) != 0) { throw new InvalidBoxException(base.Type, reader.BaseStream.Position, "top 26 bits of length field reserved"); } this.LengthSizeOfTrafNum = (uint) ((num & 12) >> 4); this.LengthSizeOfTrunNum = (uint) ((num & 6) >> 2); this.LengthSizeOfSampleNum = num & 3; this.NumberOfEntry = reader.ReadUInt32(); this.TrackFragmentRandomAccessEntries = new List<TrackFragmentRandomAccessEntry>((int) this.NumberOfEntry); for (int i = 0; i < this.NumberOfEntry; i++) { TrackFragmentRandomAccessEntry item = new TrackFragmentRandomAccessEntry(); item.Read(reader, base.Version, this.LengthSizeOfTrafNum, this.LengthSizeOfTrunNum, this.LengthSizeOfSampleNum); this.TrackFragmentRandomAccessEntries.Add(item); } } }