示例#1
0
 /**
  * Writes the box data.
  *
  * @param HausDesign_Io_Writer $writer The writer object.
  * @return void
  */
 protected function _writeData($writer)
 {
     if ($this->getSize() >= 8) {
         parent::_writeData($writer);
         $writer->write(str_repeat("", $this->getSize() - 8));
     }
 }
示例#2
0
 /**
  * Constructs the class with given parameters and reads box related data
  * from the ISO Base Media file.
  *
  * @param HausDesign_Io_Reader $reader  The reader object.
  * @param Array          $options The options array.
  */
 public function __construct($reader = null, &$options = array())
 {
     parent::__construct($reader, $options);
     $this->setContainer(true);
     if ($reader === null) {
         return;
     }
     $this->constructBoxes();
 }
示例#3
0
 /**
  * Writes the box data without the header.
  *
  * @param HausDesign_Io_Writer $writer The writer object.
  * @return void
  */
 protected function _writeData($writer)
 {
     parent::_writeData($writer);
     $writer->writeUInt32BE($this->_version << 24 | $this->_flags);
 }
示例#4
0
 /**
  * Writes the box data.
  *
  * @param HausDesign_Io_Writer $writer The writer object.
  * @return void
  */
 protected function _writeData($writer)
 {
     parent::_writeData($writer);
     $writer->write(substr($this->_dataFormat, 0, 4));
 }
示例#5
0
 /**
  * Writes the box data.
  *
  * @param HausDesign_Io_Writer $writer The writer object.
  * @return void
  */
 protected function _writeData($writer)
 {
     parent::_writeData($writer);
     $writer->writeUInt16BE($this->getBoxCount());
 }
示例#6
0
 /**
  * Writes the box data.
  *
  * @param HausDesign_Io_Writer $writer The writer object.
  * @return void
  */
 protected function _writeData($writer)
 {
     parent::_writeData($writer);
     for ($i = 0; $i < count($this->_trackId); $i++) {
         $writer->writeUInt32BE($this->_trackId[$i]);
     }
 }
示例#7
0
 /**
  * Writes the box data.
  *
  * @param HausDesign_Io_Writer $writer The writer object.
  * @return void
  */
 protected function _writeData($writer)
 {
     parent::_writeData($writer);
     $offsetSize = 4;
     $lengthSize = 4;
     $baseOffsetSize = 4;
     $itemCount = count($this->_itemId);
     for ($i = 0; $i < $itemCount; $i++) {
         if ($this->_itemId[$i]['baseOffset'] > 0xffffffff) {
             $baseOffsetSize = 8;
         }
         for ($j = 0; $j < count($this->_itemId[$i]['extents']); $j++) {
             if ($this->_itemId[$i]['extents'][$j]['offset'] > 0xffffffff) {
                 $offsetSize = 8;
             }
             if ($this->_itemId[$i]['extents'][$j]['length'] > 0xffffffff) {
                 $lengthSize = 8;
             }
         }
     }
     $writer->writeUInt16BE(($offsetSize & 0xf) << 12 | ($lengthSize & 0xf) << 8 | ($baseOffsetSize & 0xf) << 4)->writeUInt16BE($itemCount);
     for ($i = 0; $i < $itemCount; $i++) {
         $writer->writeUInt16BE($this->_itemId[$i]['itemId'])->writeUInt16BE($this->_itemId[$i]['dataReferenceIndex']);
         if ($baseOffsetSize == 4) {
             $writer->writeUInt32BE($this->_itemId[$i]['baseOffset']);
         }
         if ($baseOffsetSize == 8) {
             $writer->writeInt64BE($this->_itemId[$i]['baseOffset']);
         }
         $writer->writeUInt16BE($extentCount = count($this->_itemId[$i]['extents']));
         for ($j = 0; $j < $extentCount; $j++) {
             if ($offsetSize == 4) {
                 $writer->writeUInt32BE($this->_itemId[$i]['extents'][$j]['offset']);
             }
             if ($offsetSize == 8) {
                 $writer->writeInt64BE($this->_itemId[$i]['extents'][$j]['offset']);
             }
             if ($offsetSize == 4) {
                 $writer->writeUInt32BE($this->_itemId[$i]['extents'][$j]['length']);
             }
             if ($offsetSize == 8) {
                 $writer->writeInt64BE($this->_itemId[$i]['extents'][$j]['length']);
             }
         }
     }
 }
示例#8
0
 /**
  * Closes down the reader.
  */
 public function __destruct()
 {
     parent::__destruct();
     if ($this->_autoClose === true && $this->_reader !== null) {
         $this->_reader->close();
     }
 }
示例#9
0
 /**
  * Writes the box data.
  *
  * @param HausDesign_Io_Writer $writer The writer object.
  * @return void
  */
 protected function _writeData($writer)
 {
     parent::_writeData($writer);
     $writer->writeString8(substr($this->_majorBrand, 0, 4))->writeUInt32BE($this->_minorVersion);
     for ($i = 0; $i < count($this->_compatibleBrands); $i++) {
         $writer->writeString8(substr($this->_compatibleBrands[$i], 0, 4));
     }
 }