getid3_ac3::Analyze() –

You appear to be a bot. Output may be restricted

Description

Usage

$bool = getid3_ac3::Analyze();

Parameters

Returns

bool

Source

File name: wordpress/wp-includes/ID3/module.audio.ac3.php
Lines:

101 to 200 of 449
        $thisfile_ac3_raw_bsi['mixlevel'] = $this->getid3_ac3::readHeaderBSI(5);             // 5.4.2.14 mixlevel: Mixing Level, 5 Bits
        $thisfile_ac3_raw_bsi['roomtyp']  = $this->getid3_ac3::readHeaderBSI(2);             // 5.4.2.15 roomtyp: Room Type, 2 Bits

        $thisfile_ac3['mixing_level'] = (80 + $thisfile_ac3_raw_bsi['mixlevel']).'dB';
        $thisfile_ac3['room_type']    = self::roomTypeLookup($thisfile_ac3_raw_bsi['roomtyp']);
      }


      $thisfile_ac3_raw_bsi['dialnorm2'] = $this->getid3_ac3::readHeaderBSI(5);                // 5.4.2.16 dialnorm2: Dialogue Normalization, ch2, 5 Bits
      $thisfile_ac3['dialogue_normalization2'] = '-'.$thisfile_ac3_raw_bsi['dialnorm2'].'dB';  // This indicates how far the average dialogue level is below digital 100 percent. Valid values are 1-31. The value of 0 is reserved. The values of 1 to 31 are interpreted as -1 dB to -31 dB with respect to digital 100 percent.

      $thisfile_ac3_raw_bsi['flags']['compr2'] = (bool) $this->getid3_ac3::readHeaderBSI(1);       // 5.4.2.17 compr2e: Compression Gain Word Exists, ch2, 1 Bit
      if ($thisfile_ac3_raw_bsi['flags']['compr2']) {
        $thisfile_ac3_raw_bsi['compr2'] = $this->getid3_ac3::readHeaderBSI(8);               // 5.4.2.18 compr2: Compression Gain Word, ch2, 8 Bits
        $thisfile_ac3['heavy_compression2'] = self::heavyCompression($thisfile_ac3_raw_bsi['compr2']);
      }

      $thisfile_ac3_raw_bsi['flags']['langcod2'] = (bool) $this->getid3_ac3::readHeaderBSI(1);    // 5.4.2.19 langcod2e: Language Code Exists, ch2, 1 Bit
      if ($thisfile_ac3_raw_bsi['flags']['langcod2']) {
        $thisfile_ac3_raw_bsi['langcod2'] = $this->getid3_ac3::readHeaderBSI(8);             // 5.4.2.20 langcod2: Language Code, ch2, 8 Bits
      }

      $thisfile_ac3_raw_bsi['flags']['audprodinfo2'] = (bool) $this->getid3_ac3::readHeaderBSI(1); // 5.4.2.21 audprodi2e: Audio Production Information Exists, ch2, 1 Bit
      if ($thisfile_ac3_raw_bsi['flags']['audprodinfo2']) {
        $thisfile_ac3_raw_bsi['mixlevel2'] = $this->getid3_ac3::readHeaderBSI(5);            // 5.4.2.22 mixlevel2: Mixing Level, ch2, 5 Bits
        $thisfile_ac3_raw_bsi['roomtyp2']  = $this->getid3_ac3::readHeaderBSI(2);            // 5.4.2.23 roomtyp2: Room Type, ch2, 2 Bits

        $thisfile_ac3['mixing_level2'] = (80 + $thisfile_ac3_raw_bsi['mixlevel2']).'dB';
        $thisfile_ac3['room_type2']    = self::roomTypeLookup($thisfile_ac3_raw_bsi['roomtyp2']);
      }

      $thisfile_ac3_raw_bsi['copyright'] = (bool) $this->getid3_ac3::readHeaderBSI(1);         // 5.4.2.24 copyrightb: Copyright Bit, 1 Bit

      $thisfile_ac3_raw_bsi['original']  = (bool) $this->getid3_ac3::readHeaderBSI(1);         // 5.4.2.25 origbs: Original Bit Stream, 1 Bit

      $thisfile_ac3_raw_bsi['flags']['timecod1'] = $this->getid3_ac3::readHeaderBSI(2);            // 5.4.2.26 timecod1e, timcode2e: Time Code (first and second) Halves Exist, 2 Bits
      if ($thisfile_ac3_raw_bsi['flags']['timecod1'] & 0x01) {
        $thisfile_ac3_raw_bsi['timecod1'] = $this->getid3_ac3::readHeaderBSI(14);            // 5.4.2.27 timecod1: Time code first half, 14 bits
        $thisfile_ac3['timecode1'] = 0;
        $thisfile_ac3['timecode1'] += (($thisfile_ac3_raw_bsi['timecod1'] & 0x3E00) >>  9) * 3600;  // The first 5 bits of this 14-bit field represent the time in hours, with valid values of 0�23
        $thisfile_ac3['timecode1'] += (($thisfile_ac3_raw_bsi['timecod1'] & 0x01F8) >>  3) *   60;  // The next 6 bits represent the time in minutes, with valid values of 0�59
        $thisfile_ac3['timecode1'] += (($thisfile_ac3_raw_bsi['timecod1'] & 0x0003) >>  0) *    8;  // The final 3 bits represents the time in 8 second increments, with valid values of 0�7 (representing 0, 8, 16, ... 56 seconds)
      }
      if ($thisfile_ac3_raw_bsi['flags']['timecod1'] & 0x02) {
        $thisfile_ac3_raw_bsi['timecod2'] = $this->getid3_ac3::readHeaderBSI(14);            // 5.4.2.28 timecod2: Time code second half, 14 bits
        $thisfile_ac3['timecode2'] = 0;
        $thisfile_ac3['timecode2'] += (($thisfile_ac3_raw_bsi['timecod2'] & 0x3800) >> 11) *   1;              // The first 3 bits of this 14-bit field represent the time in seconds, with valid values from 0�7 (representing 0-7 seconds)
        $thisfile_ac3['timecode2'] += (($thisfile_ac3_raw_bsi['timecod2'] & 0x07C0) >>  6) *  (1 / 30);        // The next 5 bits represents the time in frames, with valid values from 0�29 (one frame = 1/30th of a second)
        $thisfile_ac3['timecode2'] += (($thisfile_ac3_raw_bsi['timecod2'] & 0x003F) >>  0) * ((1 / 30) / 60);  // The final 6 bits represents fractions of 1/64 of a frame, with valid values from 0�63
      }

      $thisfile_ac3_raw_bsi['flags']['addbsi'] = (bool) $this->getid3_ac3::readHeaderBSI(1);
      if ($thisfile_ac3_raw_bsi['flags']['addbsi']) {
        $thisfile_ac3_raw_bsi['addbsi_length'] = $this->getid3_ac3::readHeaderBSI(6) + 1; // This 6-bit code, which exists only if addbside is a 1, indicates the length in bytes of additional bit stream information. The valid range of addbsil is 0�63, indicating 1�64 additional bytes, respectively.

        $this->AC3header['bsi'] .= getid3_lib::BigEndian2Bin($this->fread($thisfile_ac3_raw_bsi['addbsi_length']));

        $thisfile_ac3_raw_bsi['addbsi_data'] = substr($this->AC3header['bsi'], $this->BSIoffset, $thisfile_ac3_raw_bsi['addbsi_length'] * 8);
        $this->BSIoffset += $thisfile_ac3_raw_bsi['addbsi_length'] * 8;
      }


    } elseif ($thisfile_ac3_raw_bsi['bsid'] <= 16) { // E-AC3


      $this->error('E-AC3 parsing is incomplete and experimental in this version of getID3 ('.$this->getid3->version().'). Notably the bitrate calculations are wrong -- value might (or not) be correct, but it is not calculated correctly. Email info@getid3.org if you know how to calculate EAC3 bitrate correctly.');
      $info['audio']['dataformat'] = 'eac3';

      $thisfile_ac3_raw_bsi['strmtyp']          =        $this->getid3_ac3::readHeaderBSI(2);
      $thisfile_ac3_raw_bsi['substreamid']      =        $this->getid3_ac3::readHeaderBSI(3);
      $thisfile_ac3_raw_bsi['frmsiz']           =        $this->getid3_ac3::readHeaderBSI(11);
      $thisfile_ac3_raw_bsi['fscod']            =        $this->getid3_ac3::readHeaderBSI(2);
      if ($thisfile_ac3_raw_bsi['fscod'] == 3) {
        $thisfile_ac3_raw_bsi['fscod2']       =        $this->getid3_ac3::readHeaderBSI(2);
        $thisfile_ac3_raw_bsi['numblkscod'] = 3; // six blocks per syncframe
      } else {
        $thisfile_ac3_raw_bsi['numblkscod']   =        $this->getid3_ac3::readHeaderBSI(2);
      }
      $thisfile_ac3['bsi']['blocks_per_sync_frame'] = self::blocksPerSyncFrame($thisfile_ac3_raw_bsi['numblkscod']);
      $thisfile_ac3_raw_bsi['acmod']            =        $this->getid3_ac3::readHeaderBSI(3);
      $thisfile_ac3_raw_bsi['flags']['lfeon']   = (bool) $this->getid3_ac3::readHeaderBSI(1);
      $thisfile_ac3_raw_bsi['bsid']             =        $this->getid3_ac3::readHeaderBSI(5); // we already know this from pre-parsing the version identifier, but re-read it to let the bitstream flow as intended
      $thisfile_ac3_raw_bsi['dialnorm']         =        $this->getid3_ac3::readHeaderBSI(5);
      $thisfile_ac3_raw_bsi['flags']['compr']       = (bool) $this->getid3_ac3::readHeaderBSI(1);
      if ($thisfile_ac3_raw_bsi['flags']['compr']) {
        $thisfile_ac3_raw_bsi['compr']        =        $this->getid3_ac3::readHeaderBSI(8);
      }
      if ($thisfile_ac3_raw_bsi['acmod'] == 0) { // if 1+1 mode (dual mono, so some items need a second value)
        $thisfile_ac3_raw_bsi['dialnorm2']    =        $this->getid3_ac3::readHeaderBSI(5);
        $thisfile_ac3_raw_bsi['flags']['compr2']  = (bool) $this->getid3_ac3::readHeaderBSI(1);
        if ($thisfile_ac3_raw_bsi['flags']['compr2']) {
          $thisfile_ac3_raw_bsi['compr2']   =        $this->getid3_ac3::readHeaderBSI(8);
        }
      }
      if ($thisfile_ac3_raw_bsi['strmtyp'] == 1) { // if dependent stream
        $thisfile_ac3_raw_bsi['flags']['chanmap'] = (bool) $this->getid3_ac3::readHeaderBSI(1);
        if ($thisfile_ac3_raw_bsi['flags']['chanmap']) {
          $thisfile_ac3_raw_bsi['chanmap']  =        $this->getid3_ac3::readHeaderBSI(8);
        }
      }
 

 View on GitHub View on Trac