['c',1], 'flags'=>['a3',3], 'count'=>['N',4], ]; public function __get(string $key): mixed { switch ($key) { // Height is in the moov/trak/tkhd atom case 'height': // Width is in the moov/trak/tkhd atom case 'width': $atom = $this->find_atoms(tkhd::class,1); return $atom->{$key}; default: throw new \Exception('Unknown key: '.$key); } } /** * Unpack data into our cache * * @param string|null $data * @return Collection * @throws \Exception */ protected function cache(?string $data=NULL): Collection { $data = $data ?: $this->data(); if (! count($this->cache) && $this->size) { $this->cache = collect(unpack($this->unpack(),$data)); if ($this->size > ($x=$this->unpack_size())) $this->unused_data = substr($data,$x); } return $this->cache; } }