ID3v2 Box resides under the {@link ISO14496_Box_META Meta Box} and * stores ID3 version 2 meta-data. There may be more than one ID3v2 Box present * each with a different language code. * * @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: 93 $ */ final class ISO14496_Box_ID32 extends ISO14496_Box_Full { /** @var string */ private $_language = "und"; /** @var ID3v2 */ private $_tag; /** * 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 = null, &$options = array()) { parent::__construct($reader, $options); if ($reader === null) return; $this->_language = chr(((($tmp = $this->_reader->readUInt16BE()) >> 10) & 0x1f) + 0x60) . chr((($tmp >> 5) & 0x1f) + 0x60) . chr(($tmp & 0x1f) + 0x60); $this->_tag = new ID3v2($this->_reader, array("readonly" => true)); } /** * Returns the three byte language code to describe the language of this * media, according to {@link http://www.loc.gov/standards/iso639-2/ * ISO 639-2/T}. * * @return string */ public function getLanguage() { return $this->_language; } /** * Sets the three byte language code as specified in the * {@link http://www.loc.gov/standards/iso639-2/ ISO 639-2} standard. * * @param string $language The language code. */ public function setLanguage($language) { $this->_language = $language; } /** * Returns the {@link ID3v2} tag class instance. * * @return string */ public function getTag() { return $this->_tag; } /** * Sets the {@link ID3v2} tag class instance using given language. * * @param ID3v2 $tag The tag instance. * @param string $language The language code. */ public function setTag($tag, $language = false) { $this->_tag = $tag; if ($language !== false) $this->_language = $language; } /** * Returns the box raw data. * * @return string */ public function __toString($data = "") { return parent::__toString (Transform::toUInt16BE (((ord($this->_language[0]) - 0x60) << 10) | ((ord($this->_language[1]) - 0x60) << 5) | ord($this->_language[2]) - 0x60) . $this->_tag); } }