* @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: 1 $ */ class MPEG_Audio_VBRIHeader extends MPEG_Object { /** @var integer */ private $_version; /** @var integer */ private $_delay; /** @var integer */ private $_qualityIndicator; /** @var integer */ private $_bytes; /** @var integer */ private $_frames; /** @var Array */ private $_toc = array(); /** @var integer */ private $_tocFramesPerEntry; /** @var integer */ private $_length; /** * Constructs the class with given parameters and reads object related data * from the bitstream. * * @param Reader $reader The reader object. * @param Array $options Array of options. */ public function __construct($reader, &$options = array()) { $offset = $this->_reader->getOffset(); $this->_version = $this->_reader->readUInt16BE(); $this->_delay = $this->_reader->readUInt16BE(); $this->_qualityIndicator = $this->_reader->readUInt16BE(); $this->_bytes = $this->_reader->readUInt32BE(); $this->_frames = $this->_reader->readUInt32BE(); $tocEntries = $this->_reader->readUInt16BE(); $tocEntryScale = $this->_reader->readUInt16BE(); $tocEntrySize = $this->_reader->readUInt16BE(); $this->_tocFramesPerEntry = $this->_reader->readUInt16BE(); $this->_toc = array_merge(unpack(($tocEntrySize == 1) ? "C*" : ($tocEntrySize == 2) ? "n*" : "N*", $this->_reader->read($tocCount * $tocEntrySize))); foreach ($this->_toc as $key => $value) $this->_toc[$key] = $tocEntryScale * $value; $this->_length = $this->_reader->getOffset() - $offset; } /** * Returns the header version. * * @return integer */ public function getVersion() { return $this->_version; } /** * Returns the delay. * * @return integer */ public function getDelay() { return $this->_delay; } /** * Returns the quality indicator. Return value varies from 0 (best quality) to * 100 (worst quality). * * @return integer */ public function getQualityIndicator() { return $this->_qualityIndicator; } /** * Returns the number of bytes in the file. * * @return integer */ public function getBytes() { return $this->_bytes; } /** * Returns the number of frames in the file. * * @return integer */ public function getFrames() { return $this->_frames; } /** * Returns the table of contents array. * * @return Array */ public function getToc() { return $this->_toc; } /** * Returns the number of frames per TOC entry. * * @return integer */ public function getTocFramesPerEntry() { return $this->_tocFramesPerEntry; } /** * Returns the length of the header in bytes. * * @return integer */ public function getLength() { return $this->_length; } }