예제 #1
0
 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);
         }
     }
 }
예제 #2
0
 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);
         }
     }
 }