/** * Constructs the class with given parameters and parses object related data. * * @param Reader $reader The reader object. * @param Array $options The options array. */ public function __construct($reader = null, &$options = array()) { parent::__construct($reader, $options); if ($reader === null) return; $adjustmentBits = Transform::fromInt8($this->_data[0]); if ($adjustmentBits <= 8 || $adjustmentBits > 16) throw new ID3_Exception ("Unsupported adjustment bit size of: " . $adjustmentBits); for ($i = 1; $i < strlen($this->_data); $i += 4) { $frequency = Transform::fromUInt16BE(substr($this->_data, $i, 2)); $this->_adjustments[($frequency & 0x7fff)] = ($frequency & 0x8000) == 0x8000 ? Transform::fromUInt16BE(substr($this->_data, $i + 2, 2)) : -Transform::fromUInt16BE(substr($this->_data, $i + 2, 2)); } ksort($this->_adjustments); }
/** * Constructs the class with given parameters and parses object related data. * * @param Reader $reader The reader object. * @param Array $options The options array. */ public function __construct($reader = null, &$options = array()) { parent::__construct($reader, $options); if ($reader === null) return; list ($this->_device, $this->_data) = $this->explodeString8($this->_data, 2); for ($i = $j = 0; $i < 9; $i++) { $this->_adjustments[$i] = array (self::channelType => Transform::fromInt8($this->_data[$j++]), self::volumeAdjustment => Transform::fromInt16BE(substr($this->_data, $j++, 2)) / 512.0); $j++; $bitsInPeak = Transform::fromInt8($this->_data[$j++]); $bytesInPeak = $bitsInPeak > 0 ? ceil($bitsInPeak / 8) : 0; switch ($bytesInPeak) { case 8: case 7: case 6: case 5: $this->_adjustments[$i][self::peakVolume] = Transform::fromInt64BE(substr($this->_data, $j, $bytesInPeak)); break; case 4: case 3: $this->_adjustments[$i][self::peakVolume] = Transform::fromUInt32BE(substr($this->_data, $j, $bytesInPeak)); break; case 2: $this->_adjustments[$i][self::peakVolume] = Transform::fromUInt16BE(substr($this->_data, $j, $bytesInPeak)); break; case 1: $this->_adjustments[$i][self::peakVolume] = Transform::fromUInt8(substr($this->_data, $j, $bytesInPeak)); } $j += $bytesInPeak; } }
/** * Constructs the class with given parameters and parses object related data. * * @param Reader $reader The reader object. * @param Array $options The options array. */ public function __construct($reader = null, &$options = array()) { parent::__construct($reader, $options); if ($reader === null) return; $this->_interpolation = Transform::fromInt8($this->_data[0]); list ($this->_device, $this->_data) = $this->explodeString8(substr($this->_data, 1), 2); for ($i = 0; $i < strlen($this->_data); $i += 4) $this->_adjustments [(int)(Transform::fromUInt16BE(substr($this->_data, $i, 2)) / 2)] = Transform::fromInt16BE(substr($this->_data, $i + 2, 2)) / 512.0; ksort($this->_adjustments); }
/** * Constructs the class with given parameters and parses object related data. * * @param Reader $reader The reader object. * @param Array $options The options array. */ public function __construct($reader = null, &$options = array()) { parent::__construct($reader, $options); if ($reader === null) { return; } list($this->_device, $this->_data) = preg_split("/\\x00/", $this->_data, 2); for ($i = $j = 0; $i < 9; $i++) { $this->_adjustments[$i] = array("channelType" => Transform::fromInt8($this->_data[$j++]), "volumeAdjustment" => Transform::fromInt16BE(substr($this->_data, $j++, 2))); $bitsInPeak = Transform::fromInt8($this->_data[++$j]); $bytesInPeak = $bitsInPeak > 0 ? ceil($bitsInPeak / 8) : 0; switch ($bytesInPeak) { case 8: case 7: case 6: case 5: $this->_adjustments[$i]["peakVolume"] = Transform::fromInt64BE(substr($this->_data, $j, $bytesInPeak)); $j += $bytesInPeak; break; case 4: case 3: $this->_adjustments[$i]["peakVolume"] = Transform::fromUInt32BE(substr($this->_data, $j, $bytesInPeak)); $j += $bytesInPeak; break; case 2: $this->_adjustments[$i]["peakVolume"] = Transform::fromUInt16BE(substr($this->_data, $j, $bytesInPeak)); $j += $bytesInPeak; break; case 1: $this->_adjustments[$i]["peakVolume"] = Transform::fromInt8(substr($this->_data, $j, $bytesInPeak)); $j += $bytesInPeak; } } }
/** * Constructs the class with given parameters and parses object related data. * * @param Reader $reader The reader object. * @param Array $options The options array. */ public function __construct($reader = null, &$options = array()) { parent::__construct($reader, $options); if ($reader === null) { return; } $flags = Transform::fromInt8($this->_data[0]); $descriptionBits = Transform::fromInt8($this->_data[0]); //16 $this->_adjustments["right"] = ($flags & 0x20) == 0x20 ? Transform::fromUInt16BE(substr($this->_data, 0, 2)) : -Transform::fromUInt16BE(substr($this->_data, 0, 2)); $this->_adjustments["left"] = ($flags & 0x10) == 0x10 ? Transform::fromUInt16BE(substr($this->_data, 2, 2)) : -Transform::fromUInt16BE(substr($this->_data, 2, 2)); $this->_adjustments["peakRight"] = Transform::fromUInt16BE(substr($this->_data, 4, 2)); $this->_adjustments["peakLeft"] = Transform::fromUInt16BE(substr($this->_data, 6, 2)); if ($this->getSize() <= 8) { return; } $this->_adjustments["rightBack"] = ($flags & 0x8) == 0x8 ? Transform::fromUInt16BE(substr($this->_data, 8, 2)) : -Transform::fromUInt16BE(substr($this->_data, 8, 2)); $this->_adjustments["leftBack"] = ($flags & 0x4) == 0x4 ? Transform::fromUInt16BE(substr($this->_data, 10, 2)) : -Transform::fromUInt16BE(substr($this->_data, 10, 2)); $this->_adjustments["peakRightBack"] = Transform::fromUInt16BE(substr($this->_data, 12, 2)); $this->_adjustments["peakLeftBack"] = Transform::fromUInt16BE(substr($this->_data, 14, 2)); if ($this->getSize() <= 16) { return; } $this->_adjustments["center"] = ($flags & 0x2) == 0x2 ? Transform::fromUInt16BE(substr($this->_data, 16, 2)) : -Transform::fromUInt16BE(substr($this->_data, 16, 2)); $this->_adjustments["peakCenter"] = Transform::fromUInt16BE(substr($this->_data, 18, 2)); if ($this->getSize() <= 20) { return; } $this->_adjustments["bass"] = ($flags & 0x1) == 0x1 ? Transform::fromUInt16BE(substr($this->_data, 20, 2)) : -Transform::fromUInt16BE(substr($this->_data, 20, 2)); $this->_adjustments["peakBass"] = Transform::fromUInt16BE(substr($this->_data, 22, 2)); }
/** * Constructs the class with given parameters and parses object related data. * * @param Reader $reader The reader object. * @param Array $options The options array. */ public function __construct($reader = null, &$options = array()) { parent::__construct($reader, $options); if ($reader === null) return; list($this->_owner, $this->_data) = $this->explodeString8($this->_data, 2); $this->_previewStart = Transform::fromUInt16BE(substr($this->_data, 0, 2)); $this->_previewLength = Transform::fromUInt16BE(substr($this->_data, 2, 2)); $this->_encryptionInfo = substr($this->_data, 4); }
/** * 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, &$options = array()) { parent::__construct($reader, $options); $this->_reader->skip(3); $fieldSize = $this->_reader->readInt8(); $sampleCount = $this->_reader->readUInt32BE(); $data = $this->_reader->read ($this->getOffset() + $this->getSize() - $this->_reader->getOffset()); for ($i = 1; $i <= $sampleCount; $i++) { switch ($fieldSize) { case 4: $this->_sampleSizeTable[$i] = (($tmp = Transform::fromInt8($data[$i - 1])) >> 4) & 0xf; if ($i + 1 < $sampleCount) $this->_sampleSizeTable[$i++] = $tmp & 0xf; break; case 8: $this->_sampleSizeTable[$i] = Transform::fromInt8($data[$i - 1]); break; case 16: $this->_sampleSizeTable[$i] = Transform::fromUInt16BE(substr($data, ($i - 1) * 2, 2)); break; } } }
/** * Constructs the class with given parameters and parses object related data. * * @param Reader $reader The reader object. * @param Array $options The options array. */ public function __construct($reader = null, &$options = array()) { parent::__construct($reader, $options); if ($reader === null) return; $flags = Transform::fromInt8($this->_data[0]); $descriptionBits = Transform::fromInt8($this->_data[1]); if ($descriptionBits <= 8 || $descriptionBits > 16) throw new ID3_Exception ("Unsupported description bit size of: " . $descriptionBits); $this->_adjustments[self::right] = ($flags & 0x1) == 0x1 ? Transform::fromUInt16BE(substr($this->_data, 2, 2)) : -Transform::fromUInt16BE(substr($this->_data, 2, 2)); $this->_adjustments[self::left] = ($flags & 0x2) == 0x2 ? Transform::fromUInt16BE(substr($this->_data, 4, 2)) : -Transform::fromUInt16BE(substr($this->_data, 4, 2)); $this->_adjustments[self::peakRight] = Transform::fromUInt16BE(substr($this->_data, 6, 2)); $this->_adjustments[self::peakLeft] = Transform::fromUInt16BE(substr($this->_data, 8, 2)); if ($this->getSize() <= 10) return; $this->_adjustments[self::rightBack] = ($flags & 0x4) == 0x4 ? Transform::fromUInt16BE(substr($this->_data, 10, 2)) : -Transform::fromUInt16BE(substr($this->_data, 10, 2)); $this->_adjustments[self::leftBack] = ($flags & 0x8) == 0x8 ? Transform::fromUInt16BE(substr($this->_data, 12, 2)) : -Transform::fromUInt16BE(substr($this->_data, 12, 2)); $this->_adjustments[self::peakRightBack] = Transform::fromUInt16BE(substr($this->_data, 14, 2)); $this->_adjustments[self::peakLeftBack] = Transform::fromUInt16BE(substr($this->_data, 16, 2)); if ($this->getSize() <= 18) return; $this->_adjustments[self::center] = ($flags & 0x10) == 0x10 ? Transform::fromUInt16BE(substr($this->_data, 18, 2)) : -Transform::fromUInt16BE(substr($this->_data, 18, 2)); $this->_adjustments[self::peakCenter] = Transform::fromUInt16BE(substr($this->_data, 20, 2)); if ($this->getSize() <= 22) return; $this->_adjustments[self::bass] = ($flags & 0x20) == 0x20 ? Transform::fromUInt16BE(substr($this->_data, 22, 2)) : -Transform::fromUInt16BE(substr($this->_data, 22, 2)); $this->_adjustments[self::peakBass] = Transform::fromUInt16BE(substr($this->_data, 24, 2)); }
/** * Constructs the class with given parameters and parses object related data. * * @param Reader $reader The reader object. * @param Array $options The options array. */ public function __construct($reader = null, &$options = array()) { parent::__construct($reader, $options); if ($reader === null) return; $this->_reverbLeft = Transform::fromUInt16BE(substr($this->_data, 0, 2)); $this->_reverbRight = Transform::fromUInt16BE(substr($this->_data, 2, 2)); $this->_reverbBouncesLeft = Transform::fromUInt8($this->_data[4]); $this->_reverbBouncesRight = Transform::fromUInt8($this->_data[5]); $this->_reverbFeedbackLtoL = Transform::fromUInt8($this->_data[6]); $this->_reverbFeedbackLtoR = Transform::fromUInt8($this->_data[7]); $this->_reverbFeedbackRtoR = Transform::fromUInt8($this->_data[8]); $this->_reverbFeedbackRtoL = Transform::fromUInt8($this->_data[9]); $this->_premixLtoR = Transform::fromUInt8($this->_data[10]); $this->_premixRtoL = Transform::fromUInt8($this->_data[11]); }