<?php namespace App\Media\QuickTime\Atoms; // File type compatibility—identifies the file type and differentiates it from similar file types, // such as MPEG-4 files and JPEG-2000 files. // The file type atom has an atom type value of 'ftyp' and contains the following fields: // Size, Type, Major brand, Minor version, Compatible brands. use Illuminate\Support\Arr; use App\Media\QuickTime\Atom; class ftyp extends Atom { protected const unpack = [ 'major'=>['a4',1], 'minor'=>['a4',4], 'compat'=>['a4',4], ]; public function __construct(int $offset,int $size,string $filename,?string $data) { if ($size > 12) throw new \Exception('FTYP atom larger than 12 bytes, we wont be able to handled that'); parent::__construct($offset,$size,$filename); $this->cache['data'] = unpack($this->unpack(),$data); if (Arr::get($this->cache,'data.compat') !== 'qt ') throw new \Exception('This is not a QT format file'); } }