photo/app/Media/QuickTime/Atoms/SubAtom.php

59 lines
1.1 KiB
PHP

<?php
namespace App\Media\QuickTime\Atoms;
use Illuminate\Support\Collection;
use Leenooks\Traits\ObjectIssetFix;
use App\Media\QuickTime\Atom;
use App\Media\QuickTime\Atoms\moov\trak\tkhd;
abstract class SubAtom extends Atom
{
use ObjectIssetFix;
protected ?string $unused_data;
protected const atom_record = [
'version'=>['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;
}
}