示例#1
0
 /**
  * Writes the header data.
  *
  * @param HausDesign_Io_Writer $writer The writer object.
  * @return void
  */
 public function write($writer)
 {
     /* ID3v2.3.0 ExtendedHeader */
     if ($this->getOption('version', 4) < 4) {
         $writer->writeUInt32BE($this->_size)->writeUInt16BE($this->hasFlag(self::CRC32) ? 0x8000 : 0)->writeUInt32BE($this->_padding);
         if ($this->hasFlag(self::CRC32)) {
             $writer->writeUInt32BE($this->_crc);
         }
     } else {
         $writer->writeUInt32BE($this->_encodeSynchsafe32($this->_size))->writeInt8(1)->writeInt8($this->_flags);
         if ($this->hasFlag(self::UPDATE)) {
             $writer->write("");
         }
         if ($this->hasFlag(self::CRC32)) {
             $writer->writeInt8(5)->writeInt8($this->_crc & 0xf0000000 >> 28 & 0xf)->writeUInt32BE($this->_encodeSynchsafe32($this->_crc));
         }
         if ($this->hasFlag(self::RESTRICTED)) {
             $writer->writeInt8(1)->writeInt8($this->_restrictions);
         }
     }
 }
示例#2
0
 /**
  * Writes the frame raw data without the header.
  *
  * @param HausDesign_Io_Writer $writer The writer object.
  * @return void
  */
 protected function _writeData($writer)
 {
     $writer->writeString8($this->_device, 1);
     foreach ($this->_adjustments as $channel) {
         $writer->writeInt8($channel[self::channelType])->writeInt16BE($channel[self::volumeAdjustment] * 512);
         if (abs($channel[self::peakVolume]) <= 0xff) {
             $writer->writeInt8(8)->writeUInt8($channel[self::peakVolume]);
         } else {
             if (abs($channel[self::peakVolume]) <= 0xffff) {
                 $writer->writeInt8(16)->writeUInt16BE($channel[self::peakVolume]);
             } else {
                 if (abs($channel[self::peakVolume]) <= 0xffffffff) {
                     $writer->writeInt8(32)->writeUInt32BE($channel[self::peakVolume]);
                 } else {
                     $writer->writeInt8(64)->writeInt64BE($channel[self::peakVolume]);
                     // UInt64
                 }
             }
         }
     }
 }
示例#3
0
 /**
  * Writes the frame raw data without the header.
  *
  * @param HausDesign_Io_Writer $writer The writer object.
  * @return void
  */
 protected function _writeData($writer)
 {
     $writer->writeInt8(16);
     foreach ($this->_adjustments as $frequency => $adjustment) {
         $writer->writeUInt16BE($adjustment > 0 ? $frequency | 0x8000 : $frequency & ~0x8000)->writeUInt16BE(abs($adjustment));
     }
 }
示例#4
0
 /**
  * Writes the frame raw data without the header.
  *
  * @param HausDesign_Io_Writer $writer The writer object.
  * @return void
  */
 protected function _writeData($writer)
 {
     $writer->writeInt8($this->_interpolation)->writeString8($this->_device, 1);
     foreach ($this->_adjustments as $frequency => $adjustment) {
         $writer->writeUInt16BE($frequency * 2)->writeInt16BE($adjustment * 512);
     }
 }
示例#5
0
 /**
  * Writes the frame raw data without the header.
  *
  * @param HausDesign_Io_Writer $writer The writer object.
  * @return void
  */
 protected function _writeData($writer)
 {
     $writer->writeInt8($flags = 0);
     if ($this->_adjustments[self::right] > 0) {
         $flags = $flags | 0x1;
     }
     if ($this->_adjustments[self::left] > 0) {
         $flags = $flags | 0x2;
     }
     $writer->writeInt8(16)->writeUInt16BE(abs($this->_adjustments[self::right]))->writeUInt16BE(abs($this->_adjustments[self::left]))->writeUInt16BE(abs($this->_adjustments[self::peakRight]))->writeUInt16BE(abs($this->_adjustments[self::peakLeft]));
     if (isset($this->_adjustments[self::rightBack]) && isset($this->_adjustments[self::leftBack]) && isset($this->_adjustments[self::peakRightBack]) && isset($this->_adjustments[self::peakLeftBack])) {
         if ($this->_adjustments[self::rightBack] > 0) {
             $flags = $flags | 0x4;
         }
         if ($this->_adjustments[self::leftBack] > 0) {
             $flags = $flags | 0x8;
         }
         $writer->writeUInt16BE(abs($this->_adjustments[self::rightBack]))->writeUInt16BE(abs($this->_adjustments[self::leftBack]))->writeUInt16BE(abs($this->_adjustments[self::peakRightBack]))->writeUInt16BE(abs($this->_adjustments[self::peakLeftBack]));
     }
     if (isset($this->_adjustments[self::center]) && isset($this->_adjustments[self::peakCenter])) {
         if ($this->_adjustments[self::center] > 0) {
             $flags = $flags | 0x10;
         }
         $writer->writeUInt16BE(abs($this->_adjustments[self::center]))->writeUInt16BE(abs($this->_adjustments[self::peakCenter]));
     }
     if (isset($this->_adjustments[self::bass]) && isset($this->_adjustments[self::peakBass])) {
         if ($this->_adjustments[self::bass] > 0) {
             $flags = $flags | 0x20;
         }
         $writer->writeUInt16BE(abs($this->_adjustments[self::bass]))->writeUInt16BE(abs($this->_adjustments[self::peakBass]));
     }
     $writer->setOffset(0);
     $writer->writeInt8($flags);
 }