コード例 #1
0
ファイル: EQUA.php プロジェクト: rtdean93/therock
 /**
  * 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);
 }
コード例 #2
0
ファイル: RVA2.php プロジェクト: rtdean93/therock
  /**
   * 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;
    }
  }
コード例 #3
0
ファイル: EQU2.php プロジェクト: rtdean93/therock
 /**
  * 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);
 }
コード例 #4
0
 /**
  * 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;
         }
     }
 }
コード例 #5
0
 /**
  * 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));
 }
コード例 #6
0
ファイル: AENC.php プロジェクト: rtdean93/therock
 /**
  * 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);
 }
コード例 #7
0
ファイル: STZ2.php プロジェクト: rtdean93/therock
 /**
  * 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;
     }
   }
 }
コード例 #8
0
ファイル: RVAD.php プロジェクト: rtdean93/therock
  /**
   * 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));
  }
コード例 #9
0
ファイル: RVRB.php プロジェクト: rtdean93/therock
  /**
   * 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]);
  }