<?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');
	}
}