File Type Box is placed as early as possible in the file (e.g.
* after any obligatory signature, but before any significant variable-size
* boxes such as a {@link ISO14496_Box_MOOV Movie Box}, {@link ISO14496_Box_MDAT
* Media Data Box}, or {@link ISO14496_Box_FREE Free Space}). It identifies
* which specification is the best use of the file, and a minor version
* of that specification; and also a set of others specifications to which the
* file complies.
*
* The minor version is informative only. It does not appear for
* compatible-brands, and must not be used to determine the conformance of a
* file to a standard. It may allow more precise identification of the major
* specification, for inspection, debugging, or improved decoding.
*
* The type isom (ISO Base Media file) is defined as identifying files
* that conform to the first version of the ISO Base Media File Format. More
* specific identifiers can be used to identify precise versions of
* specifications providing more detail. This brand is not be used as the major
* brand; this base file format should be derived into another specification to
* be used. There is therefore no defined normal file extension, or mime type
* assigned to this brand, nor definition of the minor version when isom
* is the major brand.
*
* Files would normally be externally identified (e.g. with a file extension or
* mime type) that identifies the best use (major brand), or the brand
* that the author believes will provide the greatest compatibility.
*
* The brand iso2 shall be used to indicate compatibility with the
* amended version of the ISO Base Media File Format; it may be used in addition
* to or instead of the isom brand and the same usage rules apply. If
* used without the brand isom identifying the first version of the
* specification, it indicates that support for some or all of the technology
* introduced by the amended version of the ISO Base Media File Format is
* required.
*
* The brand avc1 shall be used to indicate that the file is conformant
* with the AVC Extensions. If used without other brands, this implies
* that support for those extensions is required. The use of avc1 as a
* major-brand may be permitted by specifications; in that case, that
* specification defines the file extension and required behavior.
*
* If a Meta-box with an MPEG-7 handler type is used at the file level, then the
* brand mp71 is a member of the compatible-brands list in the file-type
* box.
*
* @package php-reader
* @subpackage ISO 14496
* @author Sven Vollbehr
* @copyright Copyright (c) 2008 The PHP Reader Project Workgroup
* @license http://code.google.com/p/php-reader/wiki/License New BSD License
* @version $Rev: 92 $
*/
final class ISO14496_Box_FTYP extends ISO14496_Box
{
/** @var integer */
private $_majorBrand;
/** @var integer */
private $_minorVersion;
/** @var integer */
private $_compatibleBrands = array();
/**
* Constructs the class with given parameters and reads box related data from
* the ISO Base Media file.
*
* @param Reader $reader The reader object.
*/
public function __construct($reader, &$options = array())
{
parent::__construct($reader, $options);
$this->_majorBrand = $this->_reader->readString8(4);
$this->_minorVersion = $this->_reader->readUInt32BE();
while ($this->_reader->getOffset() < $this->getSize())
if (($brand = $this->_reader->readString8(4)) != "")
$this->_compatibleBrands[] = $brand;
}
/**
* Returns the major version brand.
*
* @return string
*/
public function getMajorBrand() { return $this->_majorBrand; }
/**
* Returns the minor version number.
*
* @return integer
*/
public function getMinorVersion() { return $this->_minorVersion; }
/**
* Returns the array of compatible version brands.
*
* @return Array
*/
public function getCompatibleBrands() { return $this->_compatibleBrands; }
}