A consistent header that all boxes have
        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;
        }
Example #2
0
 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;
 }