* @copyright Copyright (c) 2006-2008 The PHP Reader Project Workgroup * @license http://code.google.com/p/php-reader/wiki/License New BSD License * @version $Rev: 108 $ */ class ASF extends ASF_Object_Container { const HEADER = "75b22630-668e-11cf-a6d9-00aa0062ce6c"; const DATA = "75b22636-668e-11cf-a6d9-00aa0062ce6c"; const SIMPLE_INDEX = "33000890-e5b1-11cf-89f4-00a0c90349cb"; const INDEX = "d6e229d3-35da-11d1-9034-00a0c90349be"; const MEDIA_OBJECT_INDEX = "feb103f8-12ad-4c64-840f-2a1d2f7ad48c"; const TIMECODE_INDEX = "3cb73fd0-0c4a-4803-953d-edf7b6228f0c"; /** @var string */ private $_filename; /** * Constructs the ASF class with given file and options. * * The following options are currently recognized: * o encoding -- Indicates the encoding that all the texts are presented * with. By default this is set to utf-8. See the documentation of iconv * for accepted values. * o readonly -- Indicates that the file is read from a temporary location * or another source it cannot be written back to. * * @param string $filename The path to the file or file descriptor of an * opened file. * @param Array $options The options array. */ public function __construct($filename, $options = array()) { $this->_reader = new Reader($this->_filename = $filename); $this->setOptions($options); if ($this->getOption("encoding", false) === false) $this->setOption("encoding", "utf-8"); $this->setOffset(0); $this->setSize($this->_reader->getSize()); $this->constructObjects (array (self::HEADER => "Header", self::DATA => "Data", self::SIMPLE_INDEX => "SimpleIndex", self::INDEX => "Index", self::MEDIA_OBJECT_INDEX => "MediaObjectIndex", self::TIMECODE_INDEX => "TimecodeIndex")); } /** * Returns the mandatory header object contained in this file. * * @return ASF_Object_Header */ public function getHeader() { $header = $this->getObjectsByIdentifier(self::HEADER); return $header[0]; } /** * Returns the mandatory data object contained in this file. * * @return ASF_Object_Data */ public function getData() { $data = $this->getObjectsByIdentifier(self::DATA); return $data[0]; } /** * Returns an array of index objects contained in this file. * * @return Array */ public function getIndices() { return $this->getObjectsByIdentifier (self::SIMPLE_INDEX . "|" . self::INDEX . "|" . self::MEDIA_OBJECT_INDEX . "|" . self::TIMECODE_INDEX); } /** * Writes the changes back to the original media file. * * Please note: currently the method writes only Content Description and * Extended Content Description Objects. */ public function write() { throw new ASF_Exception("Not yet supported"); } }