* @copyright Copyright (c) 2006-2009 The PHP Reader Project Workgroup * @license http://code.google.com/p/php-reader/wiki/License New BSD License * @version $Rev$ */ final class ASF_Object_Header extends ASF_Object_Container { /** @var integer */ private $_reserved1; /** @var integer */ private $_reserved2; /** * Constructs the class with given parameters and options. * * @param Reader $reader The reader object. * @param Array $options The options array. */ public function __construct($reader, &$options = array()) { parent::__construct($reader, $options); $this->_reader->skip(4); $this->_reserved1 = $this->_reader->readInt8(); $this->_reserved2 = $this->_reader->readInt8(); $this->constructObjects (array (self::FILE_PROPERTIES => "FileProperties", self::STREAM_PROPERTIES => "StreamProperties", self::HEADER_EXTENSION => "HeaderExtension", self::CODEC_LIST => "CodecList", self::SCRIPT_COMMAND => "ScriptCommand", self::MARKER => "Marker", self::BITRATE_MUTUAL_EXCLUSION => "BitrateMutualExclusion", self::ERROR_CORRECTION => "ErrorCorrection", self::CONTENT_DESCRIPTION => "ContentDescription", self::EXTENDED_CONTENT_DESCRIPTION => "ExtendedContentDescription", self::CONTENT_BRANDING => "ContentBranding", self::STREAM_BITRATE_PROPERTIES => "StreamBitrateProperties", self::CONTENT_ENCRYPTION => "ContentEncryption", self::EXTENDED_CONTENT_ENCRYPTION => "ExtendedContentEncryption", self::DIGITAL_SIGNATURE => "DigitalSignature", self::PADDING => "Padding")); } /** * Returns the whether the object is required to be present, or whether * minimum cardinality is 1. * * @return boolean */ public function isMandatory() { return true; } /** * Returns whether multiple instances of this object can be present, or * whether maximum cardinality is greater than 1. * * @return boolean */ public function isMultiple() { return false; } /** * Returns the object data with headers. * * @return string */ public function __toString() { $data = ""; foreach ($this->getObjects() as $objects) foreach ($objects as $object) $data .= $object->__toString(); $this->setSize (24 /* for header */ + 6 + strlen($data) /* for object data */); return Transform::toGUID($this->getIdentifier()) . Transform::toInt64LE($this->getSize()) . Transform::toUInt32LE(count($this->getObjects())) . Transform::toInt8($this->_reserved1) . Transform::toInt8($this->_reserved2) . $data; } }