@Override
  public void parse(IsoBufferWrapper in, long size, BoxParser boxParser, Box lastMovieFragmentBox)
      throws IOException {
    super.parse(in, size, boxParser, lastMovieFragmentBox);

    trackId = in.readUInt32();
    long temp = in.readUInt32();
    reserved = (int) (temp >> 6);
    lengthSizeOfTrafNum = (int) (temp & 0x3F) >> 4;
    lengthSizeOfTrunNum = (int) (temp & 0xC) >> 2;
    lengthSizeOfSampleNum = (int) (temp & 0x3);
    long numberOfEntries = in.readUInt32();

    entries = new ArrayList<Entry>();

    for (int i = 0; i < numberOfEntries; i++) {
      Entry entry = new Entry();
      if (getVersion() == 1) {
        entry.time = in.readUInt64();
        entry.moofOffset = in.readUInt64();
      } else {
        entry.time = in.readUInt32();
        entry.moofOffset = in.readUInt32();
      }
      entry.trafNumber = getVariable(lengthSizeOfTrafNum, in);
      entry.trunNumber = getVariable(lengthSizeOfTrunNum, in);
      entry.sampleNumber = getVariable(lengthSizeOfSampleNum, in);

      entries.add(entry);
    }
  }
 @Override
 public void parse(IsoBufferWrapper in, long size, BoxParser boxParser, Box lastMovieFragmentBox)
     throws IOException {
   super.parse(in, size, boxParser, lastMovieFragmentBox);
   dataReferenceType = in.readString(4);
   dataReferenceSize = in.readUInt32();
   dataReference = in.readString((int) dataReferenceSize);
 }
 @Override
 public void parse(IsoBufferWrapper in, long size, BoxParser boxParser, Box lastMovieFragmentBox)
     throws IOException {
   super.parse(in, size, boxParser, lastMovieFragmentBox);
   maxSamplePerFrame = in.readUInt32();
   unknown1 = in.readUInt8();
   sampleSize = in.readUInt8();
   historyMult = in.readUInt8();
   initialHistory = in.readUInt8();
   kModifier = in.readUInt8();
   channels = in.readUInt8();
   unknown2 = in.readUInt16();
   maxCodedFrameSize = in.readUInt32();
   bitRate = in.readUInt32();
   sampleRate = in.readUInt32();
 }