public F4VBox ReadBox() { if (currentHeader == null) ReadHeader(); F4VBox box; switch (currentHeader.BoxType.ToString()) { case "abst": box = new BootstrapInfoBox(); break; case "asrt": box = new SegmentRunTableBox(); break; case "afrt": box = new FragmentRunTableBox(); break; case "mdat": box = new MediaDataBox(); break; default: box = new UnknownBox(); break; } box.BoxHeader = currentHeader; box.Parse(br); currentHeader = null; return box; }
public virtual void Parse(ExtendedBinaryReader br) { if (BoxHeader == null) { BoxHeader = new F4VBoxHeader(); BoxHeader.Parse(br); } }
public F4VBoxHeader ReadHeader() { if (currentHeader != null) { if (currentHeader.TotalSize == 0) throw new Exception("EOF Found before next header"); br.SkipBytes(currentHeader.ExtendedSize ?? currentHeader.TotalSize); } currentHeader = new F4VBoxHeader(); currentHeader.Parse(br); return currentHeader; }
public BoxParser(ExtendedBinaryReader br) { this.br = br; currentHeader = null; }