Changeset 106591 in spip-zone


Ignore:
Timestamp:
Oct 8, 2017, 6:51:03 PM (2 years ago)
Author:
spip.franck@…
Message:

Dans spip 3.3

  • Mise à jour de la lib getid en version 1.9.14 (nous étions en 1.9.13)

https://github.com/JamesHeinrich/getID3/blob/master/changelog.txt

  • Mise à jour de la lib mediaelement en version 4.2.6 (nous étions en 4.2.5)

https://github.com/mediaelement/mediaelement/blob/master/changelog.md

Location:
_core_/plugins/medias
Files:
1 deleted
73 edited

Legend:

Unmodified
Added
Removed
  • _core_/plugins/medias/lib/getid3/getid3.php

    r101151 r106591  
    113113        protected $startup_warning = '';
    114114
    115         const VERSION           = '1.9.13-201612051806';
     115        const VERSION           = '1.9.14-201703261440';
    116116        const FREAD_BUFFER_SIZE = 32768;
    117117
     
    309309                        $this->info['filenamepath'] = $this->info['filepath'].'/'.$this->info['filename'];
    310310
     311                        // set more parameters
     312                        $this->info['avdataoffset']        = 0;
     313                        $this->info['avdataend']           = $this->info['filesize'];
     314                        $this->info['fileformat']          = '';                // filled in later
     315                        $this->info['audio']['dataformat'] = '';                // filled in later, unset if not used
     316                        $this->info['video']['dataformat'] = '';                // filled in later, unset if not used
     317                        $this->info['tags']                = array();           // filled in later, unset if not used
     318                        $this->info['error']               = array();           // filled in later, unset if not used
     319                        $this->info['warning']             = array();           // filled in later, unset if not used
     320                        $this->info['comments']            = array();           // filled in later, unset if not used
     321                        $this->info['encoding']            = $this->encoding;   // required by id3v2 and iso modules - can be unset at the end if desired
    311322
    312323                        // option_max_2gb_check
     
    334345                                }
    335346                        }
    336 
    337                         // set more parameters
    338                         $this->info['avdataoffset']        = 0;
    339                         $this->info['avdataend']           = $this->info['filesize'];
    340                         $this->info['fileformat']          = '';                // filled in later
    341                         $this->info['audio']['dataformat'] = '';                // filled in later, unset if not used
    342                         $this->info['video']['dataformat'] = '';                // filled in later, unset if not used
    343                         $this->info['tags']                = array();           // filled in later, unset if not used
    344                         $this->info['error']               = array();           // filled in later, unset if not used
    345                         $this->info['warning']             = array();           // filled in later, unset if not used
    346                         $this->info['comments']            = array();           // filled in later, unset if not used
    347                         $this->info['encoding']            = $this->encoding;   // required by id3v2 and iso modules - can be unset at the end if desired
    348347
    349348                        return true;
     
    13821381                                if (!empty($VorbisCommentError)) {
    13831382
    1384                                         $this->info['warning'][]         = 'Failed making system call to vorbiscomment(.exe) - '.$algorithm.'_data will be incorrect. If vorbiscomment is unavailable, please download from http://www.vorbis.com/download.psp and put in the getID3() directory. Error returned: '.$VorbisCommentError;
    1385                                         $this->info[$algorithm.'_data']  = false;
     1383                                        $this->warning('Failed making system call to vorbiscomment(.exe) - '.$algorithm.'_data will be incorrect. If vorbiscomment is unavailable, please download from http://www.vorbis.com/download.psp and put in the getID3() directory. Error returned: '.$VorbisCommentError);
     1384                                        $this->info[$algorithm.'_data'] = false;
    13861385
    13871386                                } else {
  • _core_/plugins/medias/lib/getid3/module.archive.gzip.php

    r92616 r106591  
    3838
    3939                if ($info['php_memory_limit'] && ($info['filesize'] > $info['php_memory_limit'])) {
    40                         $info['error'][] = 'File is too large ('.number_format($info['filesize']).' bytes) to read into memory (limit: '.number_format($info['php_memory_limit'] / 1048576).'MB)';
     40                        $this->error('File is too large ('.number_format($info['filesize']).' bytes) to read into memory (limit: '.number_format($info['php_memory_limit'] / 1048576).'MB)');
    4141                        return false;
    4242                }
     
    9898                        $thisInfo['os'] = $this->get_os_type($thisInfo['raw']['os']);
    9999                        if (!$thisInfo['os']) {
    100                                 $info['error'][] = 'Read error on gzip file';
     100                                $this->error('Read error on gzip file');
    101101                                return false;
    102102                        }
     
    216216                                                                if (($temp_tar_filename = tempnam(GETID3_TEMP_DIR, 'getID3')) === false) {
    217217                                                                        // can't find anywhere to create a temp file, abort
    218                                                                         $info['error'][] = 'Unable to create temp file to parse TAR inside GZIP file';
     218                                                                        $this->error('Unable to create temp file to parse TAR inside GZIP file');
    219219                                                                        break;
    220220                                                                }
     
    230230                                                                        unlink($temp_tar_filename);
    231231                                                                } else {
    232                                                                         $info['error'][] = 'Unable to fopen() temp file to parse TAR inside GZIP file';
     232                                                                        $this->error('Unable to fopen() temp file to parse TAR inside GZIP file');
    233233                                                                        break;
    234234                                                                }
  • _core_/plugins/medias/lib/getid3/module.archive.rar.php

    r85814 r106591  
    3737                                        return true;
    3838                                } else {
    39                                         $info['error'][] = 'failed to rar_open('.$info['filename'].')';
     39                                        $this->error('failed to rar_open('.$info['filename'].')');
    4040                                }
    4141                        } else {
    42                                 $info['error'][] = 'RAR support does not appear to be available in this PHP installation';
     42                                $this->error('RAR support does not appear to be available in this PHP installation');
    4343                        }
    4444                } else {
    45                         $info['error'][] = 'PHP-RAR processing has been disabled (set $getid3_rar->option_use_rar_extension=true to enable)';
     45                        $this->error('PHP-RAR processing has been disabled (set $getid3_rar->option_use_rar_extension=true to enable)');
    4646                }
    4747                return false;
  • _core_/plugins/medias/lib/getid3/module.archive.szip.php

    r85814 r106591  
    2525                $SZIPHeader = $this->fread(6);
    2626                if (substr($SZIPHeader, 0, 4) != "SZ\x0A\x04") {
    27                         $info['error'][] = 'Expecting "53 5A 0A 04" at offset '.$info['avdataoffset'].', found "'.getid3_lib::PrintHexBytes(substr($SZIPHeader, 0, 4)).'"';
     27                        $this->error('Expecting "53 5A 0A 04" at offset '.$info['avdataoffset'].', found "'.getid3_lib::PrintHexBytes(substr($SZIPHeader, 0, 4)).'"');
    2828                        return false;
    2929                }
     
    3131                $info['szip']['major_version'] = getid3_lib::BigEndian2Int(substr($SZIPHeader, 4, 1));
    3232                $info['szip']['minor_version'] = getid3_lib::BigEndian2Int(substr($SZIPHeader, 5, 1));
    33 $info['error'][] = 'SZIP parsing not enabled in this version of getID3() ['.$this->getid3->version().']';
     33$this->error('SZIP parsing not enabled in this version of getID3() ['.$this->getid3->version().']');
    3434return false;
    3535
  • _core_/plugins/medias/lib/getid3/module.archive.zip.php

    r85814 r106591  
    3131
    3232                if (!getid3_lib::intValueSupported($info['filesize'])) {
    33                         $info['error'][] = 'File is larger than '.round(PHP_INT_MAX / 1073741824).'GB, not supported by PHP';
     33                        $this->error('File is larger than '.round(PHP_INT_MAX / 1073741824).'GB, not supported by PHP');
    3434                        return false;
    3535                } else {
     
    6262
    6363                                        if ($info['zip']['entries_count'] == 0) {
    64                                                 $info['error'][] = 'No Central Directory entries found (truncated file?)';
     64                                                $this->error('No Central Directory entries found (truncated file?)');
    6565                                                return false;
    6666                                        }
     
    8787                                                        $info['zip']['entries'][] = $fileentry;
    8888                                                } else {
    89                                                         $info['warning'][] = 'Error parsing Local File Header at offset '.$central_directory_entry['entry_offset'];
     89                                                        $this->warning('Error parsing Local File Header at offset '.$central_directory_entry['entry_offset']);
    9090                                                }
    9191                                        }
     
    114114                        unset($info['zip']);
    115115                        $info['fileformat'] = '';
    116                         $info['error'][] = 'Cannot find End Of Central Directory (truncated file?)';
     116                        $this->error('Cannot find End Of Central Directory (truncated file?)');
    117117                        return false;
    118118                }
     
    121121                // scan through actual file data entries, recover as much as possible from probable trucated file
    122122                if ($info['zip']['compressed_size'] > ($info['filesize'] - 46 - 22)) {
    123                         $info['error'][] = 'Warning: Truncated file! - Total compressed file sizes ('.$info['zip']['compressed_size'].' bytes) is greater than filesize minus Central Directory and End Of Central Directory structures ('.($info['filesize'] - 46 - 22).' bytes)';
    124                 }
    125                 $info['error'][] = 'Cannot find End Of Central Directory - returned list of files in [zip][entries] array may not be complete';
     123                        $this->error('Warning: Truncated file! - Total compressed file sizes ('.$info['zip']['compressed_size'].' bytes) is greater than filesize minus Central Directory and End Of Central Directory structures ('.($info['filesize'] - 46 - 22).' bytes)');
     124                }
     125                $this->error('Cannot find End Of Central Directory - returned list of files in [zip][entries] array may not be complete');
    126126                foreach ($info['zip']['entries'] as $key => $valuearray) {
    127127                        $info['zip']['files'][$valuearray['filename']] = $valuearray['uncompressed_size'];
     
    146146                }
    147147                if ($info['zip']['entries_count'] == 0) {
    148                         $info['error'][] = 'No Local File Header entries found';
     148                        $this->error('No Local File Header entries found');
    149149                        return false;
    150150                }
     
    158158                }
    159159                if ($info['zip']['entries_count'] == 0) {
    160                         $info['error'][] = 'No Central Directory entries found (truncated file?)';
     160                        $this->error('No Central Directory entries found (truncated file?)');
    161161                        return false;
    162162                }
     
    165165                        $info['zip']['end_central_directory'] = $EOCD;
    166166                } else {
    167                         $info['error'][] = 'No End Of Central Directory entry found (truncated file?)';
     167                        $this->error('No End Of Central Directory entry found (truncated file?)');
    168168                        return false;
    169169                }
     
    192192                }
    193193                if ($info['zip']['entries_count'] == 0) {
    194                         $info['error'][] = 'No Local File Header entries found';
     194                        $this->error('No Local File Header entries found');
    195195                        return false;
    196196                }
     
    279279                                                        // $LocalFileHeader['compressed_size'] already set from Central Directory
    280280                                                } else {
    281                                                         $this->getid3->info['warning'][] = 'conflicting compressed_size from data_descriptor ('.$LocalFileHeader['data_descriptor']['compressed_size'].') vs Central Directory ('.$central_directory_entry['compressed_size'].') for file at offset '.$LocalFileHeader['offset'];
     281                                                        $this->warning('conflicting compressed_size from data_descriptor ('.$LocalFileHeader['data_descriptor']['compressed_size'].') vs Central Directory ('.$central_directory_entry['compressed_size'].') for file at offset '.$LocalFileHeader['offset']);
    282282                                                }
    283283
     
    285285                                                        $LocalFileHeader['uncompressed_size'] = $LocalFileHeader['data_descriptor']['uncompressed_size'];
    286286                                                } else {
    287                                                         $this->getid3->info['warning'][] = 'conflicting uncompressed_size from data_descriptor ('.$LocalFileHeader['data_descriptor']['uncompressed_size'].') vs Central Directory ('.$central_directory_entry['uncompressed_size'].') for file at offset '.$LocalFileHeader['offset'];
     287                                                        $this->warning('conflicting uncompressed_size from data_descriptor ('.$LocalFileHeader['data_descriptor']['uncompressed_size'].') vs Central Directory ('.$central_directory_entry['uncompressed_size'].') for file at offset '.$LocalFileHeader['offset']);
    288288                                                }
    289289                                                break;
  • _core_/plugins/medias/lib/getid3/module.audio-video.asf.php

    r101151 r106591  
    267267                                        $thisfile_asf_headerextensionobject['reserved_1_guid']     = $this->BytestringToGUID($thisfile_asf_headerextensionobject['reserved_1']);
    268268                                        if ($thisfile_asf_headerextensionobject['reserved_1'] != GETID3_ASF_Reserved_1) {
    269                                                 $info['warning'][] = 'header_extension_object.reserved_1 GUID ('.$this->BytestringToGUID($thisfile_asf_headerextensionobject['reserved_1']).') does not match expected "GETID3_ASF_Reserved_1" GUID ('.$this->BytestringToGUID(GETID3_ASF_Reserved_1).')';
     269                                                $this->warning('header_extension_object.reserved_1 GUID ('.$this->BytestringToGUID($thisfile_asf_headerextensionobject['reserved_1']).') does not match expected "GETID3_ASF_Reserved_1" GUID ('.$this->BytestringToGUID(GETID3_ASF_Reserved_1).')');
    270270                                                //return false;
    271271                                                break;
     
    274274                                        $offset += 2;
    275275                                        if ($thisfile_asf_headerextensionobject['reserved_2'] != 6) {
    276                                                 $info['warning'][] = 'header_extension_object.reserved_2 ('.getid3_lib::PrintHexBytes($thisfile_asf_headerextensionobject['reserved_2']).') does not match expected value of "6"';
     276                                                $this->warning('header_extension_object.reserved_2 ('.getid3_lib::PrintHexBytes($thisfile_asf_headerextensionobject['reserved_2']).') does not match expected value of "6"');
    277277                                                //return false;
    278278                                                break;
     
    317317                                        $thisfile_asf_codeclistobject['reserved_guid']             = $this->BytestringToGUID($thisfile_asf_codeclistobject['reserved']);
    318318                                        if ($thisfile_asf_codeclistobject['reserved'] != $this->GUIDtoBytestring('86D15241-311D-11D0-A3A4-00A0C90348F6')) {
    319                                                 $info['warning'][] = 'codec_list_object.reserved GUID {'.$this->BytestringToGUID($thisfile_asf_codeclistobject['reserved']).'} does not match expected "GETID3_ASF_Reserved_1" GUID {86D15241-311D-11D0-A3A4-00A0C90348F6}';
     319                                                $this->warning('codec_list_object.reserved GUID {'.$this->BytestringToGUID($thisfile_asf_codeclistobject['reserved']).'} does not match expected "GETID3_ASF_Reserved_1" GUID {86D15241-311D-11D0-A3A4-00A0C90348F6}');
    320320                                                //return false;
    321321                                                break;
     
    350350
    351351                                                        if (strpos($thisfile_asf_codeclistobject_codecentries_current['description'], ',') === false) {
    352                                                                 $info['warning'][] = '[asf][codec_list_object][codec_entries]['.$CodecEntryCounter.'][description] expected to contain comma-separated list of parameters: "'.$thisfile_asf_codeclistobject_codecentries_current['description'].'"';
     352                                                                $this->warning('[asf][codec_list_object][codec_entries]['.$CodecEntryCounter.'][description] expected to contain comma-separated list of parameters: "'.$thisfile_asf_codeclistobject_codecentries_current['description'].'"');
    353353                                                        } else {
    354354
     
    413413
    414414                                                                        default:
    415                                                                                 $info['warning'][] = 'unknown frequency: "'.$AudioCodecFrequency.'" ('.$this->TrimConvert($thisfile_asf_codeclistobject_codecentries_current['description']).')';
     415                                                                                $this->warning('unknown frequency: "'.$AudioCodecFrequency.'" ('.$this->TrimConvert($thisfile_asf_codeclistobject_codecentries_current['description']).')');
    416416                                                                                break;
    417417                                                                }
     
    459459                                        $thisfile_asf_scriptcommandobject['reserved_guid']        = $this->BytestringToGUID($thisfile_asf_scriptcommandobject['reserved']);
    460460                                        if ($thisfile_asf_scriptcommandobject['reserved'] != $this->GUIDtoBytestring('4B1ACBE3-100B-11D0-A39B-00A0C90348F6')) {
    461                                                 $info['warning'][] = 'script_command_object.reserved GUID {'.$this->BytestringToGUID($thisfile_asf_scriptcommandobject['reserved']).'} does not match expected "GETID3_ASF_Reserved_1" GUID {4B1ACBE3-100B-11D0-A39B-00A0C90348F6}';
     461                                                $this->warning('script_command_object.reserved GUID {'.$this->BytestringToGUID($thisfile_asf_scriptcommandobject['reserved']).'} does not match expected "GETID3_ASF_Reserved_1" GUID {4B1ACBE3-100B-11D0-A39B-00A0C90348F6}');
    462462                                                //return false;
    463463                                                break;
     
    518518                                        $thisfile_asf_markerobject['reserved_guid']        = $this->BytestringToGUID($thisfile_asf_markerobject['reserved']);
    519519                                        if ($thisfile_asf_markerobject['reserved'] != $this->GUIDtoBytestring('4CFEDB20-75F6-11CF-9C0F-00A0C90349CB')) {
    520                                                 $info['warning'][] = 'marker_object.reserved GUID {'.$this->BytestringToGUID($thisfile_asf_markerobject['reserved_1']).'} does not match expected "GETID3_ASF_Reserved_1" GUID {4CFEDB20-75F6-11CF-9C0F-00A0C90349CB}';
     520                                                $this->warning('marker_object.reserved GUID {'.$this->BytestringToGUID($thisfile_asf_markerobject['reserved_1']).'} does not match expected "GETID3_ASF_Reserved_1" GUID {4CFEDB20-75F6-11CF-9C0F-00A0C90349CB}');
    521521                                                break;
    522522                                        }
     
    526526                                        $offset += 2;
    527527                                        if ($thisfile_asf_markerobject['reserved_2'] != 0) {
    528                                                 $info['warning'][] = 'marker_object.reserved_2 ('.getid3_lib::PrintHexBytes($thisfile_asf_markerobject['reserved_2']).') does not match expected value of "0"';
     528                                                $this->warning('marker_object.reserved_2 ('.getid3_lib::PrintHexBytes($thisfile_asf_markerobject['reserved_2']).') does not match expected value of "0"');
    529529                                                break;
    530530                                        }
     
    577577                                        $offset += 16;
    578578                                        if (($thisfile_asf_bitratemutualexclusionobject['reserved'] != GETID3_ASF_Mutex_Bitrate) && ($thisfile_asf_bitratemutualexclusionobject['reserved'] != GETID3_ASF_Mutex_Unknown)) {
    579                                                 $info['warning'][] = 'bitrate_mutual_exclusion_object.reserved GUID {'.$this->BytestringToGUID($thisfile_asf_bitratemutualexclusionobject['reserved']).'} does not match expected "GETID3_ASF_Mutex_Bitrate" GUID {'.$this->BytestringToGUID(GETID3_ASF_Mutex_Bitrate).'} or  "GETID3_ASF_Mutex_Unknown" GUID {'.$this->BytestringToGUID(GETID3_ASF_Mutex_Unknown).'}';
     579                                                $this->warning('bitrate_mutual_exclusion_object.reserved GUID {'.$this->BytestringToGUID($thisfile_asf_bitratemutualexclusionobject['reserved']).'} does not match expected "GETID3_ASF_Mutex_Bitrate" GUID {'.$this->BytestringToGUID(GETID3_ASF_Mutex_Bitrate).'} or  "GETID3_ASF_Mutex_Unknown" GUID {'.$this->BytestringToGUID(GETID3_ASF_Mutex_Unknown).'}');
    580580                                                //return false;
    581581                                                break;
     
    638638
    639639                                                default:
    640                                                         $info['warning'][] = 'error_correction_object.error_correction_type GUID {'.$this->BytestringToGUID($thisfile_asf_errorcorrectionobject['reserved']).'} does not match expected "GETID3_ASF_No_Error_Correction" GUID {'.$this->BytestringToGUID(GETID3_ASF_No_Error_Correction).'} or  "GETID3_ASF_Audio_Spread" GUID {'.$this->BytestringToGUID(GETID3_ASF_Audio_Spread).'}';
     640                                                        $this->warning('error_correction_object.error_correction_type GUID {'.$this->BytestringToGUID($thisfile_asf_errorcorrectionobject['reserved']).'} does not match expected "GETID3_ASF_No_Error_Correction" GUID {'.$this->BytestringToGUID(GETID3_ASF_No_Error_Correction).'} or  "GETID3_ASF_Audio_Spread" GUID {'.$this->BytestringToGUID(GETID3_ASF_Audio_Spread).'}');
    641641                                                        //return false;
    642642                                                        break;
     
    762762
    763763                                                        default:
    764                                                                 $info['warning'][] = 'extended_content_description.content_descriptors.'.$ExtendedContentDescriptorsCounter.'.value_type is invalid ('.$thisfile_asf_extendedcontentdescriptionobject_contentdescriptor_current['value_type'].')';
     764                                                                $this->warning('extended_content_description.content_descriptors.'.$ExtendedContentDescriptorsCounter.'.value_type is invalid ('.$thisfile_asf_extendedcontentdescriptionobject_contentdescriptor_current['value_type'].')');
    765765                                                                //return false;
    766766                                                                break;
     
    963963                                        // Implementations shall ignore any standard or non-standard object that they do not know how to handle.
    964964                                        if ($this->GUIDname($NextObjectGUIDtext)) {
    965                                                 $info['warning'][] = 'unhandled GUID "'.$this->GUIDname($NextObjectGUIDtext).'" {'.$NextObjectGUIDtext.'} in ASF header at offset '.($offset - 16 - 8);
     965                                                $this->warning('unhandled GUID "'.$this->GUIDname($NextObjectGUIDtext).'" {'.$NextObjectGUIDtext.'} in ASF header at offset '.($offset - 16 - 8));
    966966                                        } else {
    967                                                 $info['warning'][] = 'unknown GUID {'.$NextObjectGUIDtext.'} in ASF header at offset '.($offset - 16 - 8);
     967                                                $this->warning('unknown GUID {'.$NextObjectGUIDtext.'} in ASF header at offset '.($offset - 16 - 8));
    968968                                        }
    969969                                        $offset += ($NextObjectSize - 16 - 8);
     
    11841184                                        $offset += 2;
    11851185                                        if ($thisfile_asf_dataobject['reserved'] != 0x0101) {
    1186                                                 $info['warning'][] = 'data_object.reserved ('.getid3_lib::PrintHexBytes($thisfile_asf_dataobject['reserved']).') does not match expected value of "0x0101"';
     1186                                                $this->warning('data_object.reserved ('.getid3_lib::PrintHexBytes($thisfile_asf_dataobject['reserved']).') does not match expected value of "0x0101"');
    11871187                                                //return false;
    11881188                                                break;
     
    13201320                                        // Implementations shall ignore any standard or non-standard object that they do not know how to handle.
    13211321                                        if ($this->GUIDname($NextObjectGUIDtext)) {
    1322                                                 $info['warning'][] = 'unhandled GUID "'.$this->GUIDname($NextObjectGUIDtext).'" {'.$NextObjectGUIDtext.'} in ASF body at offset '.($offset - 16 - 8);
     1322                                                $this->warning('unhandled GUID "'.$this->GUIDname($NextObjectGUIDtext).'" {'.$NextObjectGUIDtext.'} in ASF body at offset '.($offset - 16 - 8));
    13231323                                        } else {
    1324                                                 $info['warning'][] = 'unknown GUID {'.$NextObjectGUIDtext.'} in ASF body at offset '.($this->ftell() - 16 - 8);
     1324                                                $this->warning('unknown GUID {'.$NextObjectGUIDtext.'} in ASF body at offset '.($this->ftell() - 16 - 8));
    13251325                                        }
    13261326                                        $this->fseek(($NextObjectSize - 16 - 8), SEEK_CUR);
     
    14061406
    14071407                                        default:
    1408                                                 $info['warning'][] = 'Unknown streamtype: [codec_list_object][codec_entries]['.$streamnumber.'][type_raw] == '.$streamdata['type_raw'];
     1408                                                $this->warning('Unknown streamtype: [codec_list_object][codec_entries]['.$streamnumber.'][type_raw] == '.$streamdata['type_raw']);
    14091409                                                break;
    14101410
     
    19181918                                        $unhandled_sections++;
    19191919                                        if ($this->GUIDname($thisObject['guid_text'])) {
    1920                                                 $this->getid3->info['warning'][] = 'unhandled Header Extension Object GUID "'.$this->GUIDname($thisObject['guid_text']).'" {'.$thisObject['guid_text'].'} at offset '.($offset - 16 - 8);
     1920                                                $this->warning('unhandled Header Extension Object GUID "'.$this->GUIDname($thisObject['guid_text']).'" {'.$thisObject['guid_text'].'} at offset '.($offset - 16 - 8));
    19211921                                        } else {
    1922                                                 $this->getid3->info['warning'][] = 'unknown Header Extension Object GUID {'.$thisObject['guid_text'].'} in at offset '.($offset - 16 - 8);
     1922                                                $this->warning('unknown Header Extension Object GUID {'.$thisObject['guid_text'].'} in at offset '.($offset - 16 - 8));
    19231923                                        }
    19241924                                        break;
  • _core_/plugins/medias/lib/getid3/module.audio-video.bink.php

    r85814 r106591  
    2222                $info = &$this->getid3->info;
    2323
    24 $info['error'][] = 'Bink / Smacker files not properly processed by this version of getID3() ['.$this->getid3->version().']';
     24$this->error('Bink / Smacker files not properly processed by this version of getID3() ['.$this->getid3->version().']');
    2525
    2626                $this->fseek($info['avdataoffset']);
     
    3636
    3737                        default:
    38                                 $info['error'][] = 'Expecting "BIK" or "SMK" at offset '.$info['avdataoffset'].', found "'.getid3_lib::PrintHexBytes($fileTypeID).'"';
     38                                $this->error('Expecting "BIK" or "SMK" at offset '.$info['avdataoffset'].', found "'.getid3_lib::PrintHexBytes($fileTypeID).'"');
    3939                                return false;
    4040                                break;
     
    5656
    5757                if (($info['avdataend'] - $info['avdataoffset']) != ($info['bink']['data_size'] + 8)) {
    58                         $info['error'][] = 'Probably truncated file: expecting '.$info['bink']['data_size'].' bytes, found '.($info['avdataend'] - $info['avdataoffset']);
     58                        $this->error('Probably truncated file: expecting '.$info['bink']['data_size'].' bytes, found '.($info['avdataend'] - $info['avdataoffset']));
    5959                }
    6060
  • _core_/plugins/medias/lib/getid3/module.audio-video.flv.php

    r92616 r106591  
    9494
    9595                if ($info['flv']['header']['signature'] != self::magic) {
    96                         $info['error'][] = 'Expecting "'.getid3_lib::PrintHexBytes(self::magic).'" at offset '.$info['avdataoffset'].', found "'.getid3_lib::PrintHexBytes($info['flv']['header']['signature']).'"';
     96                        $this->error('Expecting "'.getid3_lib::PrintHexBytes(self::magic).'" at offset '.$info['avdataoffset'].', found "'.getid3_lib::PrintHexBytes($info['flv']['header']['signature']).'"');
    9797                        unset($info['flv'], $info['fileformat']);
    9898                        return false;
  • _core_/plugins/medias/lib/getid3/module.audio-video.matroska.php

    r101151 r106591  
    235235                        $this->parseEBML($info);
    236236                } catch (Exception $e) {
    237                         $info['error'][] = 'EBML parser: '.$e->getMessage();
     237                        $this->error('EBML parser: '.$e->getMessage());
    238238                }
    239239
     
    331331
    332332                                                        case 'A_AC3':
     333                                                        case 'A_EAC3':
    333334                                                        case 'A_DTS':
    334335                                                        case 'A_MPEG/L3':
    335336                                                        case 'A_MPEG/L2':
    336337                                                        case 'A_FLAC':
    337                                                                 getid3_lib::IncludeDependency(GETID3_INCLUDEPATH.'module.audio.'.($track_info['dataformat'] == 'mp2' ? 'mp3' : $track_info['dataformat']).'.php', __FILE__, true);
     338                                                                $module_dataformat = ($track_info['dataformat'] == 'mp2' ? 'mp3' : ($track_info['dataformat'] == 'eac3' ? 'ac3' : $track_info['dataformat']));
     339                                                                getid3_lib::IncludeDependency(GETID3_INCLUDEPATH.'module.audio.'.$module_dataformat.'.php', __FILE__, true);
    338340
    339341                                                                if (!isset($info['matroska']['track_data_offsets'][$trackarray['TrackNumber']])) {
     
    353355
    354356                                                                // analyze
    355                                                                 $class = 'getid3_'.($track_info['dataformat'] == 'mp2' ? 'mp3' : $track_info['dataformat']);
     357                                                                $class = 'getid3_'.$module_dataformat;
    356358                                                                $header_data_key = $track_info['dataformat'][0] == 'm' ? 'mpeg' : $track_info['dataformat'];
    357359                                                                $getid3_audio = new $class($getid3_temp, __CLASS__);
     
    15271529                        $CodecIDlist['A_AAC/MPEG2/LC']   = 'aac';
    15281530                        $CodecIDlist['A_AC3']            = 'ac3';
     1531                        $CodecIDlist['A_EAC3']           = 'eac3';
    15291532                        $CodecIDlist['A_DTS']            = 'dts';
    15301533                        $CodecIDlist['A_FLAC']           = 'flac';
  • _core_/plugins/medias/lib/getid3/module.audio-video.mpeg.php

    r96228 r106591  
    460460//                      //}
    461461//                      //$info['playtime_seconds'] *= $multiplier;
    462 //                      //$info['warning'][] = 'Interleaved MPEG audio/video playtime may be inaccurate. With current hack should be within a few seconds of accurate. Report to info@getid3.org if off by more than 10 seconds.';
     462//                      //$this->warning('Interleaved MPEG audio/video playtime may be inaccurate. With current hack should be within a few seconds of accurate. Report to info@getid3.org if off by more than 10 seconds.');
    463463//                      if ($info['video']['bitrate'] < 50000) {
    464464//                              $this->warning('Interleaved MPEG audio/video playtime may be slightly inaccurate for video bitrates below 100kbps. Except in extreme low-bitrate situations, error should be less than 1%. Report to info@getid3.org if greater than this.');
  • _core_/plugins/medias/lib/getid3/module.audio-video.nsv.php

    r96228 r106591  
    4848
    4949                        default:
    50                                 $info['error'][] = 'Expecting "NSVs" or "NSVf" at offset '.$info['avdataoffset'].', found "'.getid3_lib::PrintHexBytes($NSVheader).'"';
     50                                $this->error('Expecting "NSVs" or "NSVf" at offset '.$info['avdataoffset'].', found "'.getid3_lib::PrintHexBytes($NSVheader).'"');
    5151                                return false;
    5252                                break;
     
    5454
    5555                if (!isset($info['nsv']['NSVf'])) {
    56                         $info['warning'][] = 'NSVf header not present - cannot calculate playtime or bitrate';
     56                        $this->warning('NSVf header not present - cannot calculate playtime or bitrate');
    5757                }
    5858
     
    7070
    7171                if ($info['nsv']['NSVs']['identifier'] != 'NSVs') {
    72                         $info['error'][] = 'expected "NSVs" at offset ('.$fileoffset.'), found "'.$info['nsv']['NSVs']['identifier'].'" instead';
     72                        $this->error('expected "NSVs" at offset ('.$fileoffset.'), found "'.$info['nsv']['NSVs']['identifier'].'" instead');
    7373                        unset($info['nsv']['NSVs']);
    7474                        return false;
     
    143143
    144144                if ($info['nsv']['NSVf']['identifier'] != 'NSVf') {
    145                         $info['error'][] = 'expected "NSVf" at offset ('.$fileoffset.'), found "'.$info['nsv']['NSVf']['identifier'].'" instead';
     145                        $this->error('expected "NSVf" at offset ('.$fileoffset.'), found "'.$info['nsv']['NSVf']['identifier'].'" instead');
    146146                        unset($info['nsv']['NSVf']);
    147147                        return false;
     
    156156
    157157                if ($info['nsv']['NSVf']['file_size'] > $info['avdataend']) {
    158                         $info['warning'][] = 'truncated file - NSVf header indicates '.$info['nsv']['NSVf']['file_size'].' bytes, file actually '.$info['avdataend'].' bytes';
     158                        $this->warning('truncated file - NSVf header indicates '.$info['nsv']['NSVf']['file_size'].' bytes, file actually '.$info['avdataend'].' bytes');
    159159                }
    160160
     
    169169
    170170                if ($info['nsv']['NSVf']['playtime_ms'] == 0) {
    171                         $info['error'][] = 'Corrupt NSV file: NSVf.playtime_ms == zero';
     171                        $this->error('Corrupt NSV file: NSVf.playtime_ms == zero');
    172172                        return false;
    173173                }
  • _core_/plugins/medias/lib/getid3/module.audio-video.quicktime.php

    r101151 r106591  
    3939                while ($offset < $info['avdataend']) {
    4040                        if (!getid3_lib::intValueSupported($offset)) {
    41                                 $info['error'][] = 'Unable to parse atom at offset '.$offset.' because beyond '.round(PHP_INT_MAX / 1073741824).'GB limit of PHP filesystem functions';
     41                                $this->error('Unable to parse atom at offset '.$offset.' because beyond '.round(PHP_INT_MAX / 1073741824).'GB limit of PHP filesystem functions');
    4242                                break;
    4343                        }
     
    5858
    5959                        if (($offset + $atomsize) > $info['avdataend']) {
    60                                 $info['error'][] = 'Atom at offset '.$offset.' claims to go beyond end-of-file (length: '.$atomsize.' bytes)';
     60                                $this->error('Atom at offset '.$offset.' claims to go beyond end-of-file (length: '.$atomsize.' bytes)');
    6161                                return false;
    6262                        }
     
    151151                                }
    152152                                if ($latitude === false) {
    153                                         $info['warning'][] = 'location.ISO6709 string not parsed correctly: "'.$ISO6709string.'", please submit as a bug';
     153                                        $this->warning('location.ISO6709 string not parsed correctly: "'.$ISO6709string.'", please submit as a bug');
    154154                                }
    155155                                break;
     
    406406                                                        $boxsmalldata =                           substr($atom_data, $atomoffset + 4, $boxsmallsize);
    407407                                                        if ($boxsmallsize <= 1) {
    408                                                                 $info['warning'][] = 'Invalid QuickTime atom smallbox size "'.$boxsmallsize.'" in atom "'.preg_replace('#[^a-zA-Z0-9 _\\-]#', '?', $atomname).'" at offset: '.($atom_structure['offset'] + $atomoffset);
     408                                                                $this->warning('Invalid QuickTime atom smallbox size "'.$boxsmallsize.'" in atom "'.preg_replace('#[^a-zA-Z0-9 _\\-]#', '?', $atomname).'" at offset: '.($atom_structure['offset'] + $atomoffset));
    409409                                                                $atom_structure['data'] = null;
    410410                                                                $atomoffset = strlen($atom_data);
     
    416416                                                                        break;
    417417                                                                default:
    418                                                                         $info['warning'][] = 'Unknown QuickTime smallbox type: "'.preg_replace('#[^a-zA-Z0-9 _\\-]#', '?', $boxsmalltype).'" ('.trim(getid3_lib::PrintHexBytes($boxsmalltype)).') at offset '.$baseoffset;
     418                                                                        $this->warning('Unknown QuickTime smallbox type: "'.preg_replace('#[^a-zA-Z0-9 _\\-]#', '?', $boxsmalltype).'" ('.trim(getid3_lib::PrintHexBytes($boxsmalltype)).') at offset '.$baseoffset);
    419419                                                                        $atom_structure['data'] = $atom_data;
    420420                                                                        break;
     
    428428                                                        $boxdata =                           substr($atom_data, $atomoffset + 8, $boxsize - 8);
    429429                                                        if ($boxsize <= 1) {
    430                                                                 $info['warning'][] = 'Invalid QuickTime atom box size "'.$boxsize.'" in atom "'.preg_replace('#[^a-zA-Z0-9 _\\-]#', '?', $atomname).'" at offset: '.($atom_structure['offset'] + $atomoffset);
     430                                                                $this->warning('Invalid QuickTime atom box size "'.$boxsize.'" in atom "'.preg_replace('#[^a-zA-Z0-9 _\\-]#', '?', $atomname).'" at offset: '.($atom_structure['offset'] + $atomoffset));
    431431                                                                $atom_structure['data'] = null;
    432432                                                                $atomoffset = strlen($atom_data);
     
    547547
    548548                                                                default:
    549                                                                         $info['warning'][] = 'Unknown QuickTime box type: "'.preg_replace('#[^a-zA-Z0-9 _\\-]#', '?', $boxtype).'" ('.trim(getid3_lib::PrintHexBytes($boxtype)).') at offset '.$baseoffset;
     549                                                                        $this->warning('Unknown QuickTime box type: "'.preg_replace('#[^a-zA-Z0-9 _\\-]#', '?', $boxtype).'" ('.trim(getid3_lib::PrintHexBytes($boxtype)).') at offset '.$baseoffset);
    550550                                                                        $atom_structure['data'] = $atom_data;
    551551
     
    595595                                        $atom_structure['subatoms'] = $this->QuicktimeParseContainerAtom($UncompressedHeader, 0, $atomHierarchy, $ParseAllPossibleAtoms);
    596596                                } else {
    597                                         $info['warning'][] = 'Error decompressing compressed MOV atom at offset '.$atom_structure['offset'];
     597                                        $this->warning('Error decompressing compressed MOV atom at offset '.$atom_structure['offset']);
    598598                                }
    599599                                break;
     
    714714                                        $atom_structure['display_size'] = $ptv_lookup[$atom_structure['display_size_raw']];
    715715                                } else {
    716                                         $info['warning'][] = 'unknown "ptv " display constant ('.$atom_structure['display_size_raw'].')';
     716                                        $this->warning('unknown "ptv " display constant ('.$atom_structure['display_size_raw'].')');
    717717                                }
    718718                                break;
     
    920920                                $max_stts_entries_to_scan = ($info['php_memory_limit'] ? min(floor($this->getid3->memory_limit / 10000), $atom_structure['number_entries']) : $atom_structure['number_entries']);
    921921                                if ($max_stts_entries_to_scan < $atom_structure['number_entries']) {
    922                                         $info['warning'][] = 'QuickTime atom "stts" has '.$atom_structure['number_entries'].' but only scanning the first '.$max_stts_entries_to_scan.' entries due to limited PHP memory available ('.floor($atom_structure['number_entries'] / 1048576).'MB).';
     922                                        $this->warning('QuickTime atom "stts" has '.$atom_structure['number_entries'].' but only scanning the first '.$max_stts_entries_to_scan.' entries due to limited PHP memory available ('.floor($atom_structure['number_entries'] / 1048576).'MB).');
    923923                                }
    924924                                for ($i = 0; $i < $max_stts_entries_to_scan; $i++) {
     
    11201120
    11211121                                if ($atom_structure['time_scale'] == 0) {
    1122                                         $info['error'][] = 'Corrupt Quicktime file: mdhd.time_scale == zero';
     1122                                        $this->error('Corrupt Quicktime file: mdhd.time_scale == zero');
    11231123                                        return false;
    11241124                                }
     
    12341234
    12351235                                if ($atom_structure['time_scale'] == 0) {
    1236                                         $info['error'][] = 'Corrupt Quicktime file: mvhd.time_scale == zero';
     1236                                        $this->error('Corrupt Quicktime file: mvhd.time_scale == zero');
    12371237                                        return false;
    12381238                                }
     
    13901390                                                if (!empty($getid3_temp->info['warning'])) {
    13911391                                                        foreach ($getid3_temp->info['warning'] as $value) {
    1392                                                                 $info['warning'][] = $value;
     1392                                                                $this->warning($value);
    13931393                                                        }
    13941394                                                }
     
    14931493                                        }
    14941494                                } else {
    1495                                         $info['warning'][] = 'QuickTime atom "©xyz" data does not match expected data pattern at offset '.$baseoffset.'. Please report as getID3() bug.';
     1495                                        $this->warning('QuickTime atom "©xyz" data does not match expected data pattern at offset '.$baseoffset.'. Please report as getID3() bug.');
    14961496                                }
    14971497                                break;
     
    15721572
    15731573                        default:
    1574                                 $info['warning'][] = 'Unknown QuickTime atom type: "'.preg_replace('#[^a-zA-Z0-9 _\\-]#', '?', $atomname).'" ('.trim(getid3_lib::PrintHexBytes($atomname)).') at offset '.$baseoffset;
     1574                                $this->warning('Unknown QuickTime atom type: "'.preg_replace('#[^a-zA-Z0-9 _\\-]#', '?', $atomname).'" ('.trim(getid3_lib::PrintHexBytes($atomname)).') at offset '.$baseoffset);
    15751575                                $atom_structure['data'] = $atom_data;
    15761576                                break;
  • _core_/plugins/medias/lib/getid3/module.audio-video.real.php

    r85814 r106591  
    5454                                        return true;
    5555                                }
    56                                 $info['error'][] = 'There was a problem parsing this RealAudio file. Please submit it for analysis to info@getid3.org';
     56                                $this->error('There was a problem parsing this RealAudio file. Please submit it for analysis to info@getid3.org');
    5757                                unset($info['bitrate']);
    5858                                unset($info['playtime_seconds']);
     
    6868                        $thisfile_real_chunks_currentchunk['length'] = $ChunkSize;
    6969                        if (($thisfile_real_chunks_currentchunk['offset'] + $thisfile_real_chunks_currentchunk['length']) > $info['avdataend']) {
    70                                 $info['warning'][] = 'Chunk "'.$thisfile_real_chunks_currentchunk['name'].'" at offset '.$thisfile_real_chunks_currentchunk['offset'].' claims to be '.$thisfile_real_chunks_currentchunk['length'].' bytes long, which is beyond end of file';
     70                                $this->warning('Chunk "'.$thisfile_real_chunks_currentchunk['name'].'" at offset '.$thisfile_real_chunks_currentchunk['offset'].' claims to be '.$thisfile_real_chunks_currentchunk['length'].' bytes long, which is beyond end of file');
    7171                                return false;
    7272                        }
     
    9999
    100100                                                default:
    101                                                         //$info['warning'][] = 'Expected .RMF-object_version to be "0", actual value is "'.$thisfile_real_chunks_currentchunk['object_version'].'" (should not be a problem)';
     101                                                        //$this->warning('Expected .RMF-object_version to be "0", actual value is "'.$thisfile_real_chunks_currentchunk['object_version'].'" (should not be a problem)');
    102102                                                        break;
    103103
     
    355355
    356356                                default:
    357                                         $info['warning'][] = 'Unhandled RealMedia chunk "'.$ChunkName.'" at offset '.$thisfile_real_chunks_currentchunk['offset'];
     357                                        $this->warning('Unhandled RealMedia chunk "'.$ChunkName.'" at offset '.$thisfile_real_chunks_currentchunk['offset']);
    358358                                        break;
    359359                        }
  • _core_/plugins/medias/lib/getid3/module.audio-video.riff.php

    r96228 r106591  
    191191                                        $thisfile_audio['wformattag'] = $thisfile_riff_audio[$streamindex]['raw']['wFormatTag'];
    192192                                        if (!isset($thisfile_riff_audio[$streamindex]['bitrate']) || ($thisfile_riff_audio[$streamindex]['bitrate'] == 0)) {
    193                                                 $info['error'][] = 'Corrupt RIFF file: bitrate_audio == zero';
     193                                                $this->error('Corrupt RIFF file: bitrate_audio == zero');
    194194                                                return false;
    195195                                        }
     
    200200                                        $thisfile_audio = getid3_lib::array_merge_noclobber($thisfile_audio, $thisfile_riff_audio[$streamindex]);
    201201                                        if (substr($thisfile_audio['codec'], 0, strlen('unknown: 0x')) == 'unknown: 0x') {
    202                                                 $info['warning'][] = 'Audio codec = '.$thisfile_audio['codec'];
     202                                                $this->warning('Audio codec = '.$thisfile_audio['codec']);
    203203                                        }
    204204                                        $thisfile_audio['bitrate'] = $thisfile_riff_audio[$streamindex]['bitrate'];
     
    303303                                                        $thisfile_riff_WAVE_bext_0['origin_date_unix'] = gmmktime($bext_timestamp['hour'], $bext_timestamp['minute'], $bext_timestamp['second'], $bext_timestamp['month'], $bext_timestamp['day'], $bext_timestamp['year']);
    304304                                                } else {
    305                                                         $info['warning'][] = 'RIFF.WAVE.BEXT.origin_time is invalid';
     305                                                        $this->warning('RIFF.WAVE.BEXT.origin_time is invalid');
    306306                                                }
    307307                                        } else {
    308                                                 $info['warning'][] = 'RIFF.WAVE.BEXT.origin_date is invalid';
     308                                                $this->warning('RIFF.WAVE.BEXT.origin_date is invalid');
    309309                                        }
    310310                                        $thisfile_riff['comments']['author'][] = $thisfile_riff_WAVE_bext_0['author'];
     
    386386
    387387                                                if ($SNDM_thisTagSize != (4 + 4 + 2 + 2 + $SNDM_thisTagDataSize)) {
    388                                                         $info['warning'][] = 'RIFF.WAVE.SNDM.data contains tag not expected length (expected: '.$SNDM_thisTagSize.', found: '.(4 + 4 + 2 + 2 + $SNDM_thisTagDataSize).') at offset '.$SNDM_startoffset.' (file offset '.($thisfile_riff_WAVE_SNDM_0['offset'] + $SNDM_startoffset).')';
     388                                                        $this->warning('RIFF.WAVE.SNDM.data contains tag not expected length (expected: '.$SNDM_thisTagSize.', found: '.(4 + 4 + 2 + 2 + $SNDM_thisTagDataSize).') at offset '.$SNDM_startoffset.' (file offset '.($thisfile_riff_WAVE_SNDM_0['offset'] + $SNDM_startoffset).')');
    389389                                                        break;
    390390                                                } elseif ($SNDM_thisTagSize <= 0) {
    391                                                         $info['warning'][] = 'RIFF.WAVE.SNDM.data contains zero-size tag at offset '.$SNDM_startoffset.' (file offset '.($thisfile_riff_WAVE_SNDM_0['offset'] + $SNDM_startoffset).')';
     391                                                        $this->warning('RIFF.WAVE.SNDM.data contains zero-size tag at offset '.$SNDM_startoffset.' (file offset '.($thisfile_riff_WAVE_SNDM_0['offset'] + $SNDM_startoffset).')');
    392392                                                        break;
    393393                                                }
     
    398398                                                        $thisfile_riff_WAVE_SNDM_0['parsed'][$parsedkey] = $SNDM_thisTagDataText;
    399399                                                } else {
    400                                                         $info['warning'][] = 'RIFF.WAVE.SNDM contains unknown tag "'.$SNDM_thisTagKey.'" at offset '.$SNDM_startoffset.' (file offset '.($thisfile_riff_WAVE_SNDM_0['offset'] + $SNDM_startoffset).')';
     400                                                        $this->warning('RIFF.WAVE.SNDM contains unknown tag "'.$SNDM_thisTagKey.'" at offset '.$SNDM_startoffset.' (file offset '.($thisfile_riff_WAVE_SNDM_0['offset'] + $SNDM_startoffset).')');
    401401                                                }
    402402                                        }
     
    429429                                                if (isset($parsedXML['SPEED']['TIMESTAMP_SAMPLES_SINCE_MIDNIGHT_LO']) && !empty($parsedXML['SPEED']['TIMESTAMP_SAMPLE_RATE']) && !empty($thisfile_riff_WAVE['iXML'][0]['timecode_rate'])) {
    430430                                                        $samples_since_midnight = floatval(ltrim($parsedXML['SPEED']['TIMESTAMP_SAMPLES_SINCE_MIDNIGHT_HI'].$parsedXML['SPEED']['TIMESTAMP_SAMPLES_SINCE_MIDNIGHT_LO'], '0'));
    431                                                         $thisfile_riff_WAVE['iXML'][0]['timecode_seconds'] = $samples_since_midnight / $parsedXML['SPEED']['TIMESTAMP_SAMPLE_RATE'];
     431                                                        $timestamp_sample_rate = (is_array($parsedXML['SPEED']['TIMESTAMP_SAMPLE_RATE']) ? max($parsedXML['SPEED']['TIMESTAMP_SAMPLE_RATE']) : $parsedXML['SPEED']['TIMESTAMP_SAMPLE_RATE']); // XML could possibly contain more than one TIMESTAMP_SAMPLE_RATE tag, returning as array instead of integer [why? does it make sense? perhaps doesn't matter but getID3 needs to deal with it] - see https://github.com/JamesHeinrich/getID3/issues/105
     432                                                        $thisfile_riff_WAVE['iXML'][0]['timecode_seconds'] = $samples_since_midnight / $timestamp_sample_rate;
    432433                                                        $h = floor( $thisfile_riff_WAVE['iXML'][0]['timecode_seconds']       / 3600);
    433434                                                        $m = floor(($thisfile_riff_WAVE['iXML'][0]['timecode_seconds'] - ($h * 3600))      / 60);
     
    436437                                                        $thisfile_riff_WAVE['iXML'][0]['timecode_string']       = sprintf('%02d:%02d:%02d:%05.2f', $h, $m, $s,       $f);
    437438                                                        $thisfile_riff_WAVE['iXML'][0]['timecode_string_round'] = sprintf('%02d:%02d:%02d:%02d',   $h, $m, $s, round($f));
     439                                                        unset($samples_since_midnight, $timestamp_sample_rate, $h, $m, $s, $f);
    438440                                                }
    439441                                                unset($parsedXML);
     
    571573                                                        } else {
    572574                                                                // Short by more than one byte, throw warning
    573                                                                 $info['warning'][] = 'Probably truncated file - expecting '.$thisfile_riff[$RIFFsubtype]['data'][0]['size'].' bytes of data, only found '.($info['filesize'] - $info['avdataoffset']).' (short by '.($thisfile_riff[$RIFFsubtype]['data'][0]['size'] - ($info['filesize'] - $info['avdataoffset'])).' bytes)';
     575                                                                $this->warning('Probably truncated file - expecting '.$thisfile_riff[$RIFFsubtype]['data'][0]['size'].' bytes of data, only found '.($info['filesize'] - $info['avdataoffset']).' (short by '.($thisfile_riff[$RIFFsubtype]['data'][0]['size'] - ($info['filesize'] - $info['avdataoffset'])).' bytes)');
    574576                                                                $info['avdataend'] = $info['filesize'];
    575577                                                        }
     
    580582                                                                // output file appears to be incorrectly *not* padded to nearest WORD boundary
    581583                                                                // Output less severe warning
    582                                                                 $info['warning'][] = 'File should probably be padded to nearest WORD boundary, but it is not (expecting '.$thisfile_riff[$RIFFsubtype]['data'][0]['size'].' bytes of data, only found '.($info['filesize'] - $info['avdataoffset']).' therefore short by '.($thisfile_riff[$RIFFsubtype]['data'][0]['size'] - ($info['filesize'] - $info['avdataoffset'])).' bytes)';
     584                                                                $this->warning('File should probably be padded to nearest WORD boundary, but it is not (expecting '.$thisfile_riff[$RIFFsubtype]['data'][0]['size'].' bytes of data, only found '.($info['filesize'] - $info['avdataoffset']).' therefore short by '.($thisfile_riff[$RIFFsubtype]['data'][0]['size'] - ($info['filesize'] - $info['avdataoffset'])).' bytes)');
    583585                                                                $info['avdataend'] = $info['filesize'];
    584586                                                        } else {
    585587                                                                // Short by more than one byte, throw warning
    586                                                                 $info['warning'][] = 'Probably truncated file - expecting '.$thisfile_riff[$RIFFsubtype]['data'][0]['size'].' bytes of data, only found '.($info['filesize'] - $info['avdataoffset']).' (short by '.($thisfile_riff[$RIFFsubtype]['data'][0]['size'] - ($info['filesize'] - $info['avdataoffset'])).' bytes)';
     588                                                                $this->warning('Probably truncated file - expecting '.$thisfile_riff[$RIFFsubtype]['data'][0]['size'].' bytes of data, only found '.($info['filesize'] - $info['avdataoffset']).' (short by '.($thisfile_riff[$RIFFsubtype]['data'][0]['size'] - ($info['filesize'] - $info['avdataoffset'])).' bytes)');
    587589                                                                $info['avdataend'] = $info['filesize'];
    588590                                                        }
     
    593595                                        if ((($info['avdataend'] - $info['avdataoffset']) - $info['mpeg']['audio']['LAME']['audio_bytes']) == 1) {
    594596                                                $info['avdataend']--;
    595                                                 $info['warning'][] = 'Extra null byte at end of MP3 data assumed to be RIFF padding and therefore ignored';
     597                                                $this->warning('Extra null byte at end of MP3 data assumed to be RIFF padding and therefore ignored');
    596598                                        }
    597599                                }
     
    620622                                        }
    621623                                        if ($info['avdataend'] > $info['filesize']) {
    622                                                 $info['warning'][] = 'Probably truncated file - expecting '.($info['avdataend'] - $info['avdataoffset']).' bytes of data, only found '.($info['filesize'] - $info['avdataoffset']).' (short by '.($info['avdataend'] - $info['filesize']).' bytes)';
     624                                                $this->warning('Probably truncated file - expecting '.($info['avdataend'] - $info['avdataoffset']).' bytes of data, only found '.($info['filesize'] - $info['avdataoffset']).' (short by '.($info['avdataend'] - $info['filesize']).' bytes)');
    623625                                                $info['avdataend'] = $info['filesize'];
    624626                                        }
     
    661663                                        $thisfile_riff_raw_avih['dwMicroSecPerFrame']    = $this->EitherEndian2Int(substr($avihData,  0, 4)); // frame display rate (or 0L)
    662664                                        if ($thisfile_riff_raw_avih['dwMicroSecPerFrame'] == 0) {
    663                                                 $info['error'][] = 'Corrupt RIFF file: avih.dwMicroSecPerFrame == zero';
     665                                                $this->error('Corrupt RIFF file: avih.dwMicroSecPerFrame == zero');
    664666                                                return false;
    665667                                        }
     
    859861
    860862                                                                                default:
    861                                                                                         $info['warning'][] = 'Unhandled fccType for stream ('.$i.'): "'.$strhfccType.'"';
     863                                                                                        $this->warning('Unhandled fccType for stream ('.$i.'): "'.$strhfccType.'"');
    862864                                                                                        break;
    863865
     
    964966                                                        // forget to pad end of file to make this actually work
    965967                                                } else {
    966                                                         $info['warning'][] = 'Probable truncated AIFF file: expecting '.$thisfile_riff[$RIFFsubtype]['SSND'][0]['size'].' bytes of audio data, only '.($info['filesize'] - $info['avdataoffset']).' bytes found';
     968                                                        $this->warning('Probable truncated AIFF file: expecting '.$thisfile_riff[$RIFFsubtype]['SSND'][0]['size'].' bytes of audio data, only '.($info['filesize'] - $info['avdataoffset']).' bytes found');
    967969                                                }
    968970                                                $info['avdataend'] = $info['filesize'];
     
    10211023                                        $thisfile_audio['sample_rate']     = $thisfile_riff_audio['sample_rate'];
    10221024                                        if ($thisfile_audio['sample_rate'] == 0) {
    1023                                                 $info['error'][] = 'Corrupted AIFF file: sample_rate == zero';
     1025                                                $this->error('Corrupted AIFF file: sample_rate == zero');
    10241026                                                return false;
    10251027                                        }
     
    10811083                                        $info['avdataend']    = $info['avdataoffset'] + $thisfile_riff[$RIFFsubtype]['BODY'][0]['size'];
    10821084                                        if ($info['avdataend'] > $info['filesize']) {
    1083                                                 $info['warning'][] = 'Probable truncated AIFF file: expecting '.$thisfile_riff[$RIFFsubtype]['BODY'][0]['size'].' bytes of audio data, only '.($info['filesize'] - $info['avdataoffset']).' bytes found';
     1085                                                $this->warning('Probable truncated AIFF file: expecting '.$thisfile_riff[$RIFFsubtype]['BODY'][0]['size'].' bytes of audio data, only '.($info['filesize'] - $info['avdataoffset']).' bytes found');
    10841086                                        }
    10851087                                }
     
    11131115
    11141116                                                default:
    1115                                                         $info['warning'][] = 'Unexpected sCompression value in 8SVX.VHDR chunk - expecting 0 or 1, found "'.sCompression.'"';
     1117                                                        $this->warning('Unexpected sCompression value in 8SVX.VHDR chunk - expecting 0 or 1, found "'.sCompression.'"');
    11161118                                                        break;
    11171119                                        }
     
    11311133
    11321134                                                default:
    1133                                                         $info['warning'][] = 'Unexpected value in 8SVX.CHAN chunk - expecting 2 or 4 or 6, found "'.$ChannelsIndex.'"';
     1135                                                        $this->warning('Unexpected value in 8SVX.CHAN chunk - expecting 2 or 4 or 6, found "'.$ChannelsIndex.'"');
    11341136                                                        break;
    11351137                                        }
     
    11761178                                $info['mime_type']  = 'image/webp';
    11771179
    1178 $info['error'][] = 'WebP image parsing not supported in this version of getID3()';
     1180$this->error('WebP image parsing not supported in this version of getID3()');
    11791181                                break;
    11801182
    11811183                        default:
    1182                                 $info['error'][] = 'Unknown RIFF type: expecting one of (WAVE|RMP3|AVI |CDDA|AIFF|AIFC|8SVX|CDXA|WEBP), found "'.$RIFFsubtype.'" instead';
     1184                                $this->error('Unknown RIFF type: expecting one of (WAVE|RMP3|AVI |CDDA|AIFF|AIFC|8SVX|CDXA|WEBP), found "'.$RIFFsubtype.'" instead');
    11831185                                //unset($info['fileformat']);
    11841186                }
     
    11931195                                        if (isset($thisfile_riff[$RIFFsubtype][$ID3v2_key_bad]) && !array_key_exists($ID3v2_key_good, $thisfile_riff[$RIFFsubtype])) {
    11941196                                                $thisfile_riff[$RIFFsubtype][$ID3v2_key_good] = $thisfile_riff[$RIFFsubtype][$ID3v2_key_bad];
    1195                                                 $info['warning'][] = 'mapping "'.$ID3v2_key_bad.'" chunk to "'.$ID3v2_key_good.'"';
     1197                                                $this->warning('mapping "'.$ID3v2_key_bad.'" chunk to "'.$ID3v2_key_good.'"');
    11961198                                        }
    11971199                                }
     
    15171519                                                                                        if (!empty($getid3_temp->info['warning'])) {
    15181520                                                                                                foreach ($getid3_temp->info['warning'] as $key => $value) {
    1519                                                                                                         $info['warning'][] = $value;
     1521                                                                                                        $this->warning($value);
    15201522                                                                                                }
    15211523                                                                                        }
  • _core_/plugins/medias/lib/getid3/module.audio-video.swf.php

    r85814 r106591  
    4343
    4444                        default:
    45                                 $info['error'][] = 'Expecting "FWS" or "CWS" at offset '.$info['avdataoffset'].', found "'.getid3_lib::PrintHexBytes($info['swf']['header']['signature']).'"';
     45                                $this->error('Expecting "FWS" or "CWS" at offset '.$info['avdataoffset'].', found "'.getid3_lib::PrintHexBytes($info['swf']['header']['signature']).'"');
    4646                                unset($info['swf']);
    4747                                unset($info['fileformat']);
     
    5858                                $SWFfileData = $SWFHead.$decompressed;
    5959                        } else {
    60                                 $info['error'][] = 'Error decompressing compressed SWF data ('.strlen($SWFfileData).' bytes compressed, should be '.($info['swf']['header']['length'] - 8).' bytes uncompressed)';
     60                                $this->error('Error decompressing compressed SWF data ('.strlen($SWFfileData).' bytes compressed, should be '.($info['swf']['header']['length'] - 8).' bytes uncompressed)');
    6161                                return false;
    6262                        }
  • _core_/plugins/medias/lib/getid3/module.audio-video.ts.php

    r85814 r106591  
    2626                $magic = "\x47";
    2727                if (substr($TSheader, 0, 1) != $magic) {
    28                         $info['error'][] = 'Expecting "'.getid3_lib::PrintHexBytes($magic).'" at '.$info['avdataoffset'].', found '.getid3_lib::PrintHexBytes(substr($TSheader, 0, 1)).' instead.';
     28                        $this->error('Expecting "'.getid3_lib::PrintHexBytes($magic).'" at '.$info['avdataoffset'].', found '.getid3_lib::PrintHexBytes(substr($TSheader, 0, 1)).' instead.');
    2929                        return false;
    3030                }
     
    6767                }
    6868
    69 $info['error'][] = 'MPEG Transport Stream (.ts) parsing not enabled in this version of getID3() ['.$this->getid3->version().']';
     69$this->error('MPEG Transport Stream (.ts) parsing not enabled in this version of getID3() ['.$this->getid3->version().']');
    7070return false;
    7171
  • _core_/plugins/medias/lib/getid3/module.audio.aa.php

    r85814 r106591  
    2727                $magic = "\x57\x90\x75\x36";
    2828                if (substr($AAheader, 4, 4) != $magic) {
    29                         $info['error'][] = 'Expecting "'.getid3_lib::PrintHexBytes($magic).'" at offset '.$info['avdataoffset'].', found "'.getid3_lib::PrintHexBytes(substr($AAheader, 4, 4)).'"';
     29                        $this->error('Expecting "'.getid3_lib::PrintHexBytes($magic).'" at offset '.$info['avdataoffset'].', found "'.getid3_lib::PrintHexBytes(substr($AAheader, 4, 4)).'"');
    3030                        return false;
    3131                }
     
    3737                $info['fileformat']            = 'aa';
    3838                $info['audio']['dataformat']   = 'aa';
    39 $info['error'][] = 'Audible Audiobook (.aa) parsing not enabled in this version of getID3() ['.$this->getid3->version().']';
     39$this->error('Audible Audiobook (.aa) parsing not enabled in this version of getID3() ['.$this->getid3->version().']');
    4040return false;
    4141                $info['audio']['bitrate_mode'] = 'cbr'; // is it?
     
    4444                $thisfile_aa['filesize'] = getid3_lib::BigEndian2Int(substr($AUheader,  0, 4));
    4545                if ($thisfile_aa['filesize'] > ($info['avdataend'] - $info['avdataoffset'])) {
    46                         $info['warning'][] = 'Possible truncated file - expecting "'.$thisfile_aa['filesize'].'" bytes of data, only found '.($info['avdataend'] - $info['avdataoffset']).' bytes"';
     46                        $this->warning('Possible truncated file - expecting "'.$thisfile_aa['filesize'].'" bytes of data, only found '.($info['avdataend'] - $info['avdataoffset']).' bytes"');
    4747                }
    4848
  • _core_/plugins/medias/lib/getid3/module.audio.aac.php

    r96228 r106591  
    9393                        }
    9494                        if ($info['audio']['bitrate'] == 0) {
    95                                 $info['error'][] = 'Corrupt AAC file: bitrate_audio == zero';
     95                                $this->error('Corrupt AAC file: bitrate_audio == zero');
    9696                                return false;
    9797                        }
     
    251251                        unset($info['fileformat']);
    252252                        unset($info['aac']);
    253                         $info['error'][] = 'AAC-ADIF synch not found at offset '.$info['avdataoffset'].' (expected "ADIF", found "'.substr($AACheader, 0, 4).'" instead)';
     253                        $this->error('AAC-ADIF synch not found at offset '.$info['avdataoffset'].' (expected "ADIF", found "'.substr($AACheader, 0, 4).'" instead)');
    254254                        return false;
    255255
     
    312312
    313313                        if (!getid3_lib::intValueSupported($byteoffset)) {
    314                                 $info['warning'][] = 'Unable to parse AAC file beyond '.$this->ftell().' (PHP does not support file operations beyond '.round(PHP_INT_MAX / 1073741824).'GB)';
     314                                $this->warning('Unable to parse AAC file beyond '.$this->ftell().' (PHP does not support file operations beyond '.round(PHP_INT_MAX / 1073741824).'GB)');
    315315                                return false;
    316316                        }
     
    321321                        $substringlength = strlen($substring);
    322322                        if ($substringlength != 9) {
    323                                 $info['error'][] = 'Failed to read 7 bytes at offset '.($this->ftell() - $substringlength).' (only read '.$substringlength.' bytes)';
     323                                $this->error('Failed to read 7 bytes at offset '.($this->ftell() - $substringlength).' (only read '.$substringlength.' bytes)');
    324324                                return false;
    325325                        }
     
    331331                        $info['aac']['header']['raw']['syncword']          = ($header1 & 0xFFF0) >> 4;
    332332                        if ($info['aac']['header']['raw']['syncword'] != 0x0FFF) {
    333                                 $info['error'][] = 'Synch pattern (0x0FFF) not found at offset '.($this->ftell() - $substringlength).' (found 0x0'.strtoupper(dechex($info['aac']['header']['raw']['syncword'])).' instead)';
     333                                $this->error('Synch pattern (0x0FFF) not found at offset '.($this->ftell() - $substringlength).' (found 0x0'.strtoupper(dechex($info['aac']['header']['raw']['syncword'])).' instead)');
    334334                                //if ($info['fileformat'] == 'aac') {
    335335                                //      return true;
     
    373373
    374374                                if ($info['aac']['header']['raw']['mpeg_layer'] != 0) {
    375                                         $info['warning'][] = 'Layer error - expected "0", found "'.$info['aac']['header']['raw']['mpeg_layer'].'" instead';
     375                                        $this->warning('Layer error - expected "0", found "'.$info['aac']['header']['raw']['mpeg_layer'].'" instead');
    376376                                }
    377377                                if ($info['aac']['header']['sample_frequency'] == 0) {
    378                                         $info['error'][] = 'Corrupt AAC file: sample_frequency == zero';
     378                                        $this->error('Corrupt AAC file: sample_frequency == zero');
    379379                                        return false;
    380380                                }
     
    429429                                $info['playtime_seconds'] = ($info['avdataend'] / $byteoffset) * (($framenumber * 1024) / $info['aac']['header']['sample_frequency']);  // (1 / % of file scanned) * (samples / (samples/sec)) = seconds
    430430                                if ($info['playtime_seconds'] == 0) {
    431                                         $info['error'][] = 'Corrupt AAC file: playtime_seconds == zero';
     431                                        $this->error('Corrupt AAC file: playtime_seconds == zero');
    432432                                        return false;
    433433                                }
  • _core_/plugins/medias/lib/getid3/module.audio.ac3.php

    r85814 r106591  
    2121    private $BSIoffset = 0;
    2222
    23     const syncword = "\x0B\x77";
     23    const syncword = 0x0B77;
    2424
    2525        public function Analyze() {
     
    5656
    5757                $this->fseek($info['avdataoffset']);
    58                 $this->AC3header['syncinfo'] = $this->fread(5);
    59 
    60                 if (strpos($this->AC3header['syncinfo'], self::syncword) === 0) {
    61                         $thisfile_ac3_raw['synchinfo']['synchword'] = self::syncword;
    62                         $offset = 2;
    63                 } else {
     58                $tempAC3header = $this->fread(100); // should be enough to cover all data, there are some variable-length fields...?
     59                $this->AC3header['syncinfo']  =     getid3_lib::BigEndian2Int(substr($tempAC3header, 0, 2));
     60                $this->AC3header['bsi']       =     getid3_lib::BigEndian2Bin(substr($tempAC3header, 2));
     61                $thisfile_ac3_raw_bsi['bsid'] = (getid3_lib::LittleEndian2Int(substr($tempAC3header, 5, 1)) & 0xF8) >> 3; // AC3 and E-AC3 put the "bsid" version identifier in the same place, but unfortnately the 4 bytes between the syncword and the version identifier are interpreted differently, so grab it here so the following code structure can make sense
     62                unset($tempAC3header);
     63
     64                if ($this->AC3header['syncinfo'] !== self::syncword) {
    6465                        if (!$this->isDependencyFor('matroska')) {
    6566                                unset($info['fileformat'], $info['ac3']);
    66                                 return $this->error('Expecting "'.getid3_lib::PrintHexBytes(self::syncword).'" at offset '.$info['avdataoffset'].', found "'.getid3_lib::PrintHexBytes(substr($this->AC3header['syncinfo'], 0, 2)).'"');
    67                         }
    68                         $offset = 0;
    69                         $this->fseek(-2, SEEK_CUR);
     67                                return $this->error('Expecting "'.dechex(self::syncword).'" at offset '.$info['avdataoffset'].', found "'.dechex($this->AC3header['syncinfo']).'"');
     68                        }
    7069                }
    7170
     
    7473                $info['audio']['lossless']     = false;
    7574
    76                 $thisfile_ac3_raw['synchinfo']['crc1']       = getid3_lib::LittleEndian2Int(substr($this->AC3header['syncinfo'], $offset, 2));
    77                 $ac3_synchinfo_fscod_frmsizecod              = getid3_lib::LittleEndian2Int(substr($this->AC3header['syncinfo'], ($offset + 2), 1));
    78                 $thisfile_ac3_raw['synchinfo']['fscod']      = ($ac3_synchinfo_fscod_frmsizecod & 0xC0) >> 6;
    79                 $thisfile_ac3_raw['synchinfo']['frmsizecod'] = ($ac3_synchinfo_fscod_frmsizecod & 0x3F);
    80 
    81                 $thisfile_ac3['sample_rate'] = self::sampleRateCodeLookup($thisfile_ac3_raw['synchinfo']['fscod']);
    82                 if ($thisfile_ac3_raw['synchinfo']['fscod'] <= 3) {
    83                         $info['audio']['sample_rate'] = $thisfile_ac3['sample_rate'];
    84                 }
    85 
    86                 $thisfile_ac3['frame_length'] = self::frameSizeLookup($thisfile_ac3_raw['synchinfo']['frmsizecod'], $thisfile_ac3_raw['synchinfo']['fscod']);
    87                 $thisfile_ac3['bitrate']      = self::bitrateLookup($thisfile_ac3_raw['synchinfo']['frmsizecod']);
    88                 $info['audio']['bitrate'] = $thisfile_ac3['bitrate'];
    89 
    90                 $this->AC3header['bsi'] = getid3_lib::BigEndian2Bin($this->fread(15));
    91                 $ac3_bsi_offset = 0;
    92 
    93                 $thisfile_ac3_raw_bsi['bsid'] = $this->readHeaderBSI(5);
    94                 if ($thisfile_ac3_raw_bsi['bsid'] > 8) {
    95                         // Decoders which can decode version 8 will thus be able to decode version numbers less than 8.
    96                         // If this standard is extended by the addition of additional elements or features, a value of bsid greater than 8 will be used.
    97                         // Decoders built to this version of the standard will not be able to decode versions with bsid greater than 8.
    98                         $this->error('Bit stream identification is version '.$thisfile_ac3_raw_bsi['bsid'].', but getID3() only understands up to version 8');
     75                if ($thisfile_ac3_raw_bsi['bsid'] <= 8) {
     76
     77                        $thisfile_ac3_raw_bsi['crc1']       = getid3_lib::Bin2Dec($this->readHeaderBSI(16));
     78                        $thisfile_ac3_raw_bsi['fscod']      =                     $this->readHeaderBSI(2);   // 5.4.1.3
     79                        $thisfile_ac3_raw_bsi['frmsizecod'] =                     $this->readHeaderBSI(6);   // 5.4.1.4
     80                        if ($thisfile_ac3_raw_bsi['frmsizecod'] > 37) { // binary: 100101 - see Table 5.18 Frame Size Code Table (1 word = 16 bits)
     81                                $this->warning('Unexpected ac3.bsi.frmsizecod value: '.$thisfile_ac3_raw_bsi['frmsizecod'].', bitrate not set correctly');
     82                        }
     83
     84                        $thisfile_ac3_raw_bsi['bsid']  = $this->readHeaderBSI(5); // we already know this from pre-parsing the version identifier, but re-read it to let the bitstream flow as intended
     85                        $thisfile_ac3_raw_bsi['bsmod'] = $this->readHeaderBSI(3);
     86                        $thisfile_ac3_raw_bsi['acmod'] = $this->readHeaderBSI(3);
     87
     88                        if ($thisfile_ac3_raw_bsi['acmod'] & 0x01) {
     89                                // If the lsb of acmod is a 1, center channel is in use and cmixlev follows in the bit stream.
     90                                $thisfile_ac3_raw_bsi['cmixlev'] = $this->readHeaderBSI(2);
     91                                $thisfile_ac3['center_mix_level'] = self::centerMixLevelLookup($thisfile_ac3_raw_bsi['cmixlev']);
     92                        }
     93
     94                        if ($thisfile_ac3_raw_bsi['acmod'] & 0x04) {
     95                                // If the msb of acmod is a 1, surround channels are in use and surmixlev follows in the bit stream.
     96                                $thisfile_ac3_raw_bsi['surmixlev'] = $this->readHeaderBSI(2);
     97                                $thisfile_ac3['surround_mix_level'] = self::surroundMixLevelLookup($thisfile_ac3_raw_bsi['surmixlev']);
     98                        }
     99
     100                        if ($thisfile_ac3_raw_bsi['acmod'] == 0x02) {
     101                                // When operating in the two channel mode, this 2-bit code indicates whether or not the program has been encoded in Dolby Surround.
     102                                $thisfile_ac3_raw_bsi['dsurmod'] = $this->readHeaderBSI(2);
     103                                $thisfile_ac3['dolby_surround_mode'] = self::dolbySurroundModeLookup($thisfile_ac3_raw_bsi['dsurmod']);
     104                        }
     105
     106                        $thisfile_ac3_raw_bsi['flags']['lfeon'] = (bool) $this->readHeaderBSI(1);
     107
     108                        // This indicates how far the average dialogue level is below digital 100 percent. Valid values are 1-31.
     109                        // 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.
     110                        $thisfile_ac3_raw_bsi['dialnorm'] = $this->readHeaderBSI(5);                 // 5.4.2.8 dialnorm: Dialogue Normalization, 5 Bits
     111
     112                        $thisfile_ac3_raw_bsi['flags']['compr'] = (bool) $this->readHeaderBSI(1);       // 5.4.2.9 compre: Compression Gain Word Exists, 1 Bit
     113                        if ($thisfile_ac3_raw_bsi['flags']['compr']) {
     114                                $thisfile_ac3_raw_bsi['compr'] = $this->readHeaderBSI(8);                // 5.4.2.10 compr: Compression Gain Word, 8 Bits
     115                                $thisfile_ac3['heavy_compression'] = self::heavyCompression($thisfile_ac3_raw_bsi['compr']);
     116                        }
     117
     118                        $thisfile_ac3_raw_bsi['flags']['langcod'] = (bool) $this->readHeaderBSI(1);     // 5.4.2.11 langcode: Language Code Exists, 1 Bit
     119                        if ($thisfile_ac3_raw_bsi['flags']['langcod']) {
     120                                $thisfile_ac3_raw_bsi['langcod'] = $this->readHeaderBSI(8);              // 5.4.2.12 langcod: Language Code, 8 Bits
     121                        }
     122
     123                        $thisfile_ac3_raw_bsi['flags']['audprodinfo'] = (bool) $this->readHeaderBSI(1);  // 5.4.2.13 audprodie: Audio Production Information Exists, 1 Bit
     124                        if ($thisfile_ac3_raw_bsi['flags']['audprodinfo']) {
     125                                $thisfile_ac3_raw_bsi['mixlevel'] = $this->readHeaderBSI(5);             // 5.4.2.14 mixlevel: Mixing Level, 5 Bits
     126                                $thisfile_ac3_raw_bsi['roomtyp']  = $this->readHeaderBSI(2);             // 5.4.2.15 roomtyp: Room Type, 2 Bits
     127
     128                                $thisfile_ac3['mixing_level'] = (80 + $thisfile_ac3_raw_bsi['mixlevel']).'dB';
     129                                $thisfile_ac3['room_type']    = self::roomTypeLookup($thisfile_ac3_raw_bsi['roomtyp']);
     130                        }
     131
     132
     133                        $thisfile_ac3_raw_bsi['dialnorm2'] = $this->readHeaderBSI(5);                // 5.4.2.16 dialnorm2: Dialogue Normalization, ch2, 5 Bits
     134                        $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.
     135
     136                        $thisfile_ac3_raw_bsi['flags']['compr2'] = (bool) $this->readHeaderBSI(1);       // 5.4.2.17 compr2e: Compression Gain Word Exists, ch2, 1 Bit
     137                        if ($thisfile_ac3_raw_bsi['flags']['compr2']) {
     138                                $thisfile_ac3_raw_bsi['compr2'] = $this->readHeaderBSI(8);               // 5.4.2.18 compr2: Compression Gain Word, ch2, 8 Bits
     139                                $thisfile_ac3['heavy_compression2'] = self::heavyCompression($thisfile_ac3_raw_bsi['compr2']);
     140                        }
     141
     142                        $thisfile_ac3_raw_bsi['flags']['langcod2'] = (bool) $this->readHeaderBSI(1);    // 5.4.2.19 langcod2e: Language Code Exists, ch2, 1 Bit
     143                        if ($thisfile_ac3_raw_bsi['flags']['langcod2']) {
     144                                $thisfile_ac3_raw_bsi['langcod2'] = $this->readHeaderBSI(8);             // 5.4.2.20 langcod2: Language Code, ch2, 8 Bits
     145                        }
     146
     147                        $thisfile_ac3_raw_bsi['flags']['audprodinfo2'] = (bool) $this->readHeaderBSI(1); // 5.4.2.21 audprodi2e: Audio Production Information Exists, ch2, 1 Bit
     148                        if ($thisfile_ac3_raw_bsi['flags']['audprodinfo2']) {
     149                                $thisfile_ac3_raw_bsi['mixlevel2'] = $this->readHeaderBSI(5);            // 5.4.2.22 mixlevel2: Mixing Level, ch2, 5 Bits
     150                                $thisfile_ac3_raw_bsi['roomtyp2']  = $this->readHeaderBSI(2);            // 5.4.2.23 roomtyp2: Room Type, ch2, 2 Bits
     151
     152                                $thisfile_ac3['mixing_level2'] = (80 + $thisfile_ac3_raw_bsi['mixlevel2']).'dB';
     153                                $thisfile_ac3['room_type2']    = self::roomTypeLookup($thisfile_ac3_raw_bsi['roomtyp2']);
     154                        }
     155
     156                        $thisfile_ac3_raw_bsi['copyright'] = (bool) $this->readHeaderBSI(1);         // 5.4.2.24 copyrightb: Copyright Bit, 1 Bit
     157
     158                        $thisfile_ac3_raw_bsi['original']  = (bool) $this->readHeaderBSI(1);         // 5.4.2.25 origbs: Original Bit Stream, 1 Bit
     159
     160                        $thisfile_ac3_raw_bsi['flags']['timecod1'] = $this->readHeaderBSI(2);            // 5.4.2.26 timecod1e, timcode2e: Time Code (first and second) Halves Exist, 2 Bits
     161                        if ($thisfile_ac3_raw_bsi['flags']['timecod1'] & 0x01) {
     162                                $thisfile_ac3_raw_bsi['timecod1'] = $this->readHeaderBSI(14);            // 5.4.2.27 timecod1: Time code first half, 14 bits
     163                                $thisfile_ac3['timecode1'] = 0;
     164                                $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
     165                                $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
     166                                $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)
     167                        }
     168                        if ($thisfile_ac3_raw_bsi['flags']['timecod1'] & 0x02) {
     169                                $thisfile_ac3_raw_bsi['timecod2'] = $this->readHeaderBSI(14);            // 5.4.2.28 timecod2: Time code second half, 14 bits
     170                                $thisfile_ac3['timecode2'] = 0;
     171                                $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)
     172                                $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)
     173                                $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
     174                        }
     175
     176                        $thisfile_ac3_raw_bsi['flags']['addbsi'] = (bool) $this->readHeaderBSI(1);
     177                        if ($thisfile_ac3_raw_bsi['flags']['addbsi']) {
     178                                $thisfile_ac3_raw_bsi['addbsi_length'] = $this->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.
     179
     180                                $this->AC3header['bsi'] .= getid3_lib::BigEndian2Bin($this->fread($thisfile_ac3_raw_bsi['addbsi_length']));
     181
     182                                $thisfile_ac3_raw_bsi['addbsi_data'] = substr($this->AC3header['bsi'], $this->BSIoffset, $thisfile_ac3_raw_bsi['addbsi_length'] * 8);
     183                                $this->BSIoffset += $thisfile_ac3_raw_bsi['addbsi_length'] * 8;
     184                        }
     185
     186
     187                } elseif ($thisfile_ac3_raw_bsi['bsid'] <= 16) { // E-AC3
     188
     189
     190$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.');
     191                        $info['audio']['dataformat'] = 'eac3';
     192
     193                        $thisfile_ac3_raw_bsi['strmtyp']          =        $this->readHeaderBSI(2);
     194                        $thisfile_ac3_raw_bsi['substreamid']      =        $this->readHeaderBSI(3);
     195                        $thisfile_ac3_raw_bsi['frmsiz']           =        $this->readHeaderBSI(11);
     196                        $thisfile_ac3_raw_bsi['fscod']            =        $this->readHeaderBSI(2);
     197                        if ($thisfile_ac3_raw_bsi['fscod'] == 3) {
     198                                $thisfile_ac3_raw_bsi['fscod2']       =        $this->readHeaderBSI(2);
     199                                $thisfile_ac3_raw_bsi['numblkscod'] = 3; // six blocks per syncframe
     200                        } else {
     201                                $thisfile_ac3_raw_bsi['numblkscod']   =        $this->readHeaderBSI(2);
     202                        }
     203                        $thisfile_ac3['bsi']['blocks_per_sync_frame'] = self::blocksPerSyncFrame($thisfile_ac3_raw_bsi['numblkscod']);
     204                        $thisfile_ac3_raw_bsi['acmod']            =        $this->readHeaderBSI(3);
     205                        $thisfile_ac3_raw_bsi['flags']['lfeon']   = (bool) $this->readHeaderBSI(1);
     206                        $thisfile_ac3_raw_bsi['bsid']             =        $this->readHeaderBSI(5); // we already know this from pre-parsing the version identifier, but re-read it to let the bitstream flow as intended
     207                        $thisfile_ac3_raw_bsi['dialnorm']         =        $this->readHeaderBSI(5);
     208                        $thisfile_ac3_raw_bsi['flags']['compr']       = (bool) $this->readHeaderBSI(1);
     209                        if ($thisfile_ac3_raw_bsi['flags']['compr']) {
     210                                $thisfile_ac3_raw_bsi['compr']        =        $this->readHeaderBSI(8);
     211                        }
     212                        if ($thisfile_ac3_raw_bsi['acmod'] == 0) { // if 1+1 mode (dual mono, so some items need a second value)
     213                                $thisfile_ac3_raw_bsi['dialnorm2']    =        $this->readHeaderBSI(5);
     214                                $thisfile_ac3_raw_bsi['flags']['compr2']  = (bool) $this->readHeaderBSI(1);
     215                                if ($thisfile_ac3_raw_bsi['flags']['compr2']) {
     216                                        $thisfile_ac3_raw_bsi['compr2']   =        $this->readHeaderBSI(8);
     217                                }
     218                        }
     219                        if ($thisfile_ac3_raw_bsi['strmtyp'] == 1) { // if dependent stream
     220                                $thisfile_ac3_raw_bsi['flags']['chanmap'] = (bool) $this->readHeaderBSI(1);
     221                                if ($thisfile_ac3_raw_bsi['flags']['chanmap']) {
     222                                        $thisfile_ac3_raw_bsi['chanmap']  =        $this->readHeaderBSI(8);
     223                                }
     224                        }
     225                        $thisfile_ac3_raw_bsi['flags']['mixmdat']     = (bool) $this->readHeaderBSI(1);
     226                        if ($thisfile_ac3_raw_bsi['flags']['mixmdat']) { // Mixing metadata
     227                                if ($thisfile_ac3_raw_bsi['acmod'] > 2) { // if more than 2 channels
     228                                        $thisfile_ac3_raw_bsi['dmixmod']  =        $this->readHeaderBSI(2);
     229                                }
     230                                if (($thisfile_ac3_raw_bsi['acmod'] & 0x01) && ($thisfile_ac3_raw_bsi['acmod'] > 2)) { // if three front channels exist
     231                                        $thisfile_ac3_raw_bsi['ltrtcmixlev'] =        $this->readHeaderBSI(3);
     232                                        $thisfile_ac3_raw_bsi['lorocmixlev'] =        $this->readHeaderBSI(3);
     233                                }
     234                                if ($thisfile_ac3_raw_bsi['acmod'] & 0x04) { // if a surround channel exists
     235                                        $thisfile_ac3_raw_bsi['ltrtsurmixlev'] =        $this->readHeaderBSI(3);
     236                                        $thisfile_ac3_raw_bsi['lorosurmixlev'] =        $this->readHeaderBSI(3);
     237                                }
     238                                if ($thisfile_ac3_raw_bsi['flags']['lfeon']) { // if the LFE channel exists
     239                                        $thisfile_ac3_raw_bsi['flags']['lfemixlevcod'] = (bool) $this->readHeaderBSI(1);
     240                                        if ($thisfile_ac3_raw_bsi['flags']['lfemixlevcod']) {
     241                                                $thisfile_ac3_raw_bsi['lfemixlevcod']  =        $this->readHeaderBSI(5);
     242                                        }
     243                                }
     244                                if ($thisfile_ac3_raw_bsi['strmtyp'] == 0) { // if independent stream
     245                                        $thisfile_ac3_raw_bsi['flags']['pgmscl'] = (bool) $this->readHeaderBSI(1);
     246                                        if ($thisfile_ac3_raw_bsi['flags']['pgmscl']) {
     247                                                $thisfile_ac3_raw_bsi['pgmscl']  =        $this->readHeaderBSI(6);
     248                                        }
     249                                        if ($thisfile_ac3_raw_bsi['acmod'] == 0) { // if 1+1 mode (dual mono, so some items need a second value)
     250                                                $thisfile_ac3_raw_bsi['flags']['pgmscl2'] = (bool) $this->readHeaderBSI(1);
     251                                                if ($thisfile_ac3_raw_bsi['flags']['pgmscl2']) {
     252                                                        $thisfile_ac3_raw_bsi['pgmscl2']  =        $this->readHeaderBSI(6);
     253                                                }
     254                                        }
     255                                        $thisfile_ac3_raw_bsi['flags']['extpgmscl'] = (bool) $this->readHeaderBSI(1);
     256                                        if ($thisfile_ac3_raw_bsi['flags']['extpgmscl']) {
     257                                                $thisfile_ac3_raw_bsi['extpgmscl']  =        $this->readHeaderBSI(6);
     258                                        }
     259                                        $thisfile_ac3_raw_bsi['mixdef']  =        $this->readHeaderBSI(2);
     260                                        if ($thisfile_ac3_raw_bsi['mixdef'] == 1) { // mixing option 2
     261                                                $thisfile_ac3_raw_bsi['premixcmpsel']  = (bool) $this->readHeaderBSI(1);
     262                                                $thisfile_ac3_raw_bsi['drcsrc']        = (bool) $this->readHeaderBSI(1);
     263                                                $thisfile_ac3_raw_bsi['premixcmpscl']  =        $this->readHeaderBSI(3);
     264                                        } elseif ($thisfile_ac3_raw_bsi['mixdef'] == 2) { // mixing option 3
     265                                                $thisfile_ac3_raw_bsi['mixdata']       =        $this->readHeaderBSI(12);
     266                                        } elseif ($thisfile_ac3_raw_bsi['mixdef'] == 3) { // mixing option 4
     267                                                $mixdefbitsread = 0;
     268                                                $thisfile_ac3_raw_bsi['mixdeflen']     =        $this->readHeaderBSI(5); $mixdefbitsread += 5;
     269                                                $thisfile_ac3_raw_bsi['flags']['mixdata2'] = (bool) $this->readHeaderBSI(1); $mixdefbitsread += 1;
     270                                                if ($thisfile_ac3_raw_bsi['flags']['mixdata2']) {
     271                                                        $thisfile_ac3_raw_bsi['premixcmpsel']  = (bool) $this->readHeaderBSI(1); $mixdefbitsread += 1;
     272                                                        $thisfile_ac3_raw_bsi['drcsrc']        = (bool) $this->readHeaderBSI(1); $mixdefbitsread += 1;
     273                                                        $thisfile_ac3_raw_bsi['premixcmpscl']  =        $this->readHeaderBSI(3); $mixdefbitsread += 3;
     274                                                        $thisfile_ac3_raw_bsi['flags']['extpgmlscl']   = (bool) $this->readHeaderBSI(1); $mixdefbitsread += 1;
     275                                                        if ($thisfile_ac3_raw_bsi['flags']['extpgmlscl']) {
     276                                                                $thisfile_ac3_raw_bsi['extpgmlscl']    =        $this->readHeaderBSI(4); $mixdefbitsread += 4;
     277                                                        }
     278                                                        $thisfile_ac3_raw_bsi['flags']['extpgmcscl']   = (bool) $this->readHeaderBSI(1); $mixdefbitsread += 1;
     279                                                        if ($thisfile_ac3_raw_bsi['flags']['extpgmcscl']) {
     280                                                                $thisfile_ac3_raw_bsi['extpgmcscl']    =        $this->readHeaderBSI(4); $mixdefbitsread += 4;
     281                                                        }
     282                                                        $thisfile_ac3_raw_bsi['flags']['extpgmrscl']   = (bool) $this->readHeaderBSI(1); $mixdefbitsread += 1;
     283                                                        if ($thisfile_ac3_raw_bsi['flags']['extpgmrscl']) {
     284                                                                $thisfile_ac3_raw_bsi['extpgmrscl']    =        $this->readHeaderBSI(4);
     285                                                        }
     286                                                        $thisfile_ac3_raw_bsi['flags']['extpgmlsscl']  = (bool) $this->readHeaderBSI(1); $mixdefbitsread += 1;
     287                                                        if ($thisfile_ac3_raw_bsi['flags']['extpgmlsscl']) {
     288                                                                $thisfile_ac3_raw_bsi['extpgmlsscl']   =        $this->readHeaderBSI(4); $mixdefbitsread += 4;
     289                                                        }
     290                                                        $thisfile_ac3_raw_bsi['flags']['extpgmrsscl']  = (bool) $this->readHeaderBSI(1); $mixdefbitsread += 1;
     291                                                        if ($thisfile_ac3_raw_bsi['flags']['extpgmrsscl']) {
     292                                                                $thisfile_ac3_raw_bsi['extpgmrsscl']   =        $this->readHeaderBSI(4); $mixdefbitsread += 4;
     293                                                        }
     294                                                        $thisfile_ac3_raw_bsi['flags']['extpgmlfescl'] = (bool) $this->readHeaderBSI(1); $mixdefbitsread += 1;
     295                                                        if ($thisfile_ac3_raw_bsi['flags']['extpgmlfescl']) {
     296                                                                $thisfile_ac3_raw_bsi['extpgmlfescl']  =        $this->readHeaderBSI(4); $mixdefbitsread += 4;
     297                                                        }
     298                                                        $thisfile_ac3_raw_bsi['flags']['dmixscl']      = (bool) $this->readHeaderBSI(1); $mixdefbitsread += 1;
     299                                                        if ($thisfile_ac3_raw_bsi['flags']['dmixscl']) {
     300                                                                $thisfile_ac3_raw_bsi['dmixscl']       =        $this->readHeaderBSI(4); $mixdefbitsread += 4;
     301                                                        }
     302                                                        $thisfile_ac3_raw_bsi['flags']['addch']        = (bool) $this->readHeaderBSI(1); $mixdefbitsread += 1;
     303                                                        if ($thisfile_ac3_raw_bsi['flags']['addch']) {
     304                                                                $thisfile_ac3_raw_bsi['flags']['extpgmaux1scl']   = (bool) $this->readHeaderBSI(1); $mixdefbitsread += 1;
     305                                                                if ($thisfile_ac3_raw_bsi['flags']['extpgmaux1scl']) {
     306                                                                        $thisfile_ac3_raw_bsi['extpgmaux1scl']    =        $this->readHeaderBSI(4); $mixdefbitsread += 4;
     307                                                                }
     308                                                                $thisfile_ac3_raw_bsi['flags']['extpgmaux2scl']   = (bool) $this->readHeaderBSI(1); $mixdefbitsread += 1;
     309                                                                if ($thisfile_ac3_raw_bsi['flags']['extpgmaux2scl']) {
     310                                                                        $thisfile_ac3_raw_bsi['extpgmaux2scl']    =        $this->readHeaderBSI(4); $mixdefbitsread += 4;
     311                                                                }
     312                                                        }
     313                                                }
     314                                                $thisfile_ac3_raw_bsi['flags']['mixdata3'] = (bool) $this->readHeaderBSI(1); $mixdefbitsread += 1;
     315                                                if ($thisfile_ac3_raw_bsi['flags']['mixdata3']) {
     316                                                        $thisfile_ac3_raw_bsi['spchdat']   =        $this->readHeaderBSI(5); $mixdefbitsread += 5;
     317                                                        $thisfile_ac3_raw_bsi['flags']['addspchdat'] = (bool) $this->readHeaderBSI(1); $mixdefbitsread += 1;
     318                                                        if ($thisfile_ac3_raw_bsi['flags']['addspchdat']) {
     319                                                                $thisfile_ac3_raw_bsi['spchdat1']   =         $this->readHeaderBSI(5); $mixdefbitsread += 5;
     320                                                                $thisfile_ac3_raw_bsi['spchan1att'] =         $this->readHeaderBSI(2); $mixdefbitsread += 2;
     321                                                                $thisfile_ac3_raw_bsi['flags']['addspchdat1'] = (bool) $this->readHeaderBSI(1); $mixdefbitsread += 1;
     322                                                                if ($thisfile_ac3_raw_bsi['flags']['addspchdat1']) {
     323                                                                        $thisfile_ac3_raw_bsi['spchdat2']   =         $this->readHeaderBSI(5); $mixdefbitsread += 5;
     324                                                                        $thisfile_ac3_raw_bsi['spchan2att'] =         $this->readHeaderBSI(3); $mixdefbitsread += 3;
     325                                                                }
     326                                                        }
     327                                                }
     328                                                $mixdata_bits = (8 * ($thisfile_ac3_raw_bsi['mixdeflen'] + 2)) - $mixdefbitsread;
     329                                                $mixdata_fill = (($mixdata_bits % 8) ? 8 - ($mixdata_bits % 8) : 0);
     330                                                $thisfile_ac3_raw_bsi['mixdata']     =        $this->readHeaderBSI($mixdata_bits);
     331                                                $thisfile_ac3_raw_bsi['mixdatafill'] =        $this->readHeaderBSI($mixdata_fill);
     332                                                unset($mixdefbitsread, $mixdata_bits, $mixdata_fill);
     333                                        }
     334                                        if ($thisfile_ac3_raw_bsi['acmod'] < 2) { // if mono or dual mono source
     335                                                $thisfile_ac3_raw_bsi['flags']['paninfo'] = (bool) $this->readHeaderBSI(1);
     336                                                if ($thisfile_ac3_raw_bsi['flags']['paninfo']) {
     337                                                        $thisfile_ac3_raw_bsi['panmean']   =        $this->readHeaderBSI(8);
     338                                                        $thisfile_ac3_raw_bsi['paninfo']   =        $this->readHeaderBSI(6);
     339                                                }
     340                                                if ($thisfile_ac3_raw_bsi['acmod'] == 0) { // if 1+1 mode (dual mono, so some items need a second value)
     341                                                        $thisfile_ac3_raw_bsi['flags']['paninfo2'] = (bool) $this->readHeaderBSI(1);
     342                                                        if ($thisfile_ac3_raw_bsi['flags']['paninfo2']) {
     343                                                                $thisfile_ac3_raw_bsi['panmean2']   =        $this->readHeaderBSI(8);
     344                                                                $thisfile_ac3_raw_bsi['paninfo2']   =        $this->readHeaderBSI(6);
     345                                                        }
     346                                                }
     347                                        }
     348                                        $thisfile_ac3_raw_bsi['flags']['frmmixcfginfo'] = (bool) $this->readHeaderBSI(1);
     349                                        if ($thisfile_ac3_raw_bsi['flags']['frmmixcfginfo']) { // mixing configuration information
     350                                                if ($thisfile_ac3_raw_bsi['numblkscod'] == 0) {
     351                                                        $thisfile_ac3_raw_bsi['blkmixcfginfo'][0]  =        $this->readHeaderBSI(5);
     352                                                } else {
     353                                                        for ($blk = 0; $blk < $thisfile_ac3_raw_bsi['numblkscod']; $blk++) {
     354                                                                $thisfile_ac3_raw_bsi['flags']['blkmixcfginfo'.$blk] = (bool) $this->readHeaderBSI(1);
     355                                                                if ($thisfile_ac3_raw_bsi['flags']['blkmixcfginfo'.$blk]) { // mixing configuration information
     356                                                                        $thisfile_ac3_raw_bsi['blkmixcfginfo'][$blk]  =        $this->readHeaderBSI(5);
     357                                                                }
     358                                                        }
     359                                                }
     360                                        }
     361                                }
     362                        }
     363                        $thisfile_ac3_raw_bsi['flags']['infomdat']          = (bool) $this->readHeaderBSI(1);
     364                        if ($thisfile_ac3_raw_bsi['flags']['infomdat']) { // Informational metadata
     365                                $thisfile_ac3_raw_bsi['bsmod']                  =        $this->readHeaderBSI(3);
     366                                $thisfile_ac3_raw_bsi['flags']['copyrightb']    = (bool) $this->readHeaderBSI(1);
     367                                $thisfile_ac3_raw_bsi['flags']['origbs']        = (bool) $this->readHeaderBSI(1);
     368                                if ($thisfile_ac3_raw_bsi['acmod'] == 2) { //  if in 2/0 mode
     369                                        $thisfile_ac3_raw_bsi['dsurmod']            =        $this->readHeaderBSI(2);
     370                                        $thisfile_ac3_raw_bsi['dheadphonmod']       =        $this->readHeaderBSI(2);
     371                                }
     372                                if ($thisfile_ac3_raw_bsi['acmod'] >= 6) { //  if both surround channels exist
     373                                        $thisfile_ac3_raw_bsi['dsurexmod']          =        $this->readHeaderBSI(2);
     374                                }
     375                                $thisfile_ac3_raw_bsi['flags']['audprodi']      = (bool) $this->readHeaderBSI(1);
     376                                if ($thisfile_ac3_raw_bsi['flags']['audprodi']) {
     377                                        $thisfile_ac3_raw_bsi['mixlevel']           =        $this->readHeaderBSI(5);
     378                                        $thisfile_ac3_raw_bsi['roomtyp']            =        $this->readHeaderBSI(2);
     379                                        $thisfile_ac3_raw_bsi['flags']['adconvtyp'] = (bool) $this->readHeaderBSI(1);
     380                                }
     381                                if ($thisfile_ac3_raw_bsi['acmod'] == 0) { //  if 1+1 mode (dual mono, so some items need a second value)
     382                                        $thisfile_ac3_raw_bsi['flags']['audprodi2']      = (bool) $this->readHeaderBSI(1);
     383                                        if ($thisfile_ac3_raw_bsi['flags']['audprodi2']) {
     384                                                $thisfile_ac3_raw_bsi['mixlevel2']           =        $this->readHeaderBSI(5);
     385                                                $thisfile_ac3_raw_bsi['roomtyp2']            =        $this->readHeaderBSI(2);
     386                                                $thisfile_ac3_raw_bsi['flags']['adconvtyp2'] = (bool) $this->readHeaderBSI(1);
     387                                        }
     388                                }
     389                                if ($thisfile_ac3_raw_bsi['fscod'] < 3) { // if not half sample rate
     390                                        $thisfile_ac3_raw_bsi['flags']['sourcefscod'] = (bool) $this->readHeaderBSI(1);
     391                                }
     392                        }
     393                        if (($thisfile_ac3_raw_bsi['strmtyp'] == 0) && ($thisfile_ac3_raw_bsi['numblkscod'] != 3)) { //  if both surround channels exist
     394                                $thisfile_ac3_raw_bsi['flags']['convsync'] = (bool) $this->readHeaderBSI(1);
     395                        }
     396                        if ($thisfile_ac3_raw_bsi['strmtyp'] == 2) { //  if bit stream converted from AC-3
     397                                if ($thisfile_ac3_raw_bsi['numblkscod'] != 3) { // 6 blocks per syncframe
     398                                        $thisfile_ac3_raw_bsi['flags']['blkid']  = 1;
     399                                } else {
     400                                        $thisfile_ac3_raw_bsi['flags']['blkid']  = (bool) $this->readHeaderBSI(1);
     401                                }
     402                                if ($thisfile_ac3_raw_bsi['flags']['blkid']) {
     403                                        $thisfile_ac3_raw_bsi['frmsizecod']  =        $this->readHeaderBSI(6);
     404                                }
     405                        }
     406                        $thisfile_ac3_raw_bsi['flags']['addbsi']  = (bool) $this->readHeaderBSI(1);
     407                        if ($thisfile_ac3_raw_bsi['flags']['addbsi']) {
     408                                $thisfile_ac3_raw_bsi['addbsil']  =        $this->readHeaderBSI(6);
     409                                $thisfile_ac3_raw_bsi['addbsi']   =        $this->readHeaderBSI(($thisfile_ac3_raw_bsi['addbsil'] + 1) * 8);
     410                        }
     411
     412                } else {
     413
     414                        $this->error('Bit stream identification is version '.$thisfile_ac3_raw_bsi['bsid'].', but getID3() only understands up to version 16. Please submit a support ticket with a sample file.');
    99415                    unset($info['ac3']);
    100416                        return false;
    101                 }
    102 
    103                 $thisfile_ac3_raw_bsi['bsmod'] = $this->readHeaderBSI(3);
    104                 $thisfile_ac3_raw_bsi['acmod'] = $this->readHeaderBSI(3);
     417
     418                }
     419
     420                if (isset($thisfile_ac3_raw_bsi['fscod2'])) {
     421                        $thisfile_ac3['sample_rate'] = self::sampleRateCodeLookup2($thisfile_ac3_raw_bsi['fscod2']);
     422                } else {
     423                        $thisfile_ac3['sample_rate'] = self::sampleRateCodeLookup($thisfile_ac3_raw_bsi['fscod']);
     424                }
     425                if ($thisfile_ac3_raw_bsi['fscod'] <= 3) {
     426                        $info['audio']['sample_rate'] = $thisfile_ac3['sample_rate'];
     427                } else {
     428                        $this->warning('Unexpected ac3.bsi.fscod value: '.$thisfile_ac3_raw_bsi['fscod']);
     429                }
     430                if (isset($thisfile_ac3_raw_bsi['frmsizecod'])) {
     431                        $thisfile_ac3['frame_length'] = self::frameSizeLookup($thisfile_ac3_raw_bsi['frmsizecod'], $thisfile_ac3_raw_bsi['fscod']);
     432                        $thisfile_ac3['bitrate']      = self::bitrateLookup($thisfile_ac3_raw_bsi['frmsizecod']);
     433                } elseif (!empty($thisfile_ac3_raw_bsi['frmsiz'])) {
     434// this isn't right, but it's (usually) close, roughly 5% less than it should be.
     435// but WHERE is the actual bitrate value stored in EAC3?? email info@getid3.org if you know!
     436                        $thisfile_ac3['bitrate']      = ($thisfile_ac3_raw_bsi['frmsiz'] + 1) * 16 * 30; // The frmsiz field shall contain a value one less than the overall size of the coded syncframe in 16-bit words. That is, this field may assume a value ranging from 0 to 2047, and these values correspond to syncframe sizes ranging from 1 to 2048.
     437// kludge-fix to make it approximately the expected value, still not "right":
     438$thisfile_ac3['bitrate'] = round(($thisfile_ac3['bitrate'] * 1.05) / 16000) * 16000;
     439                }
     440                $info['audio']['bitrate'] = $thisfile_ac3['bitrate'];
    105441
    106442                $thisfile_ac3['service_type'] = self::serviceTypeLookup($thisfile_ac3_raw_bsi['bsmod'], $thisfile_ac3_raw_bsi['acmod']);
     
    124460                $info['audio']['channels'] = $thisfile_ac3['num_channels'];
    125461
    126                 if ($thisfile_ac3_raw_bsi['acmod'] & 0x01) {
    127                         // If the lsb of acmod is a 1, center channel is in use and cmixlev follows in the bit stream.
    128                         $thisfile_ac3_raw_bsi['cmixlev'] = $this->readHeaderBSI(2);
    129                         $thisfile_ac3['center_mix_level'] = self::centerMixLevelLookup($thisfile_ac3_raw_bsi['cmixlev']);
    130                 }
    131 
    132                 if ($thisfile_ac3_raw_bsi['acmod'] & 0x04) {
    133                         // If the msb of acmod is a 1, surround channels are in use and surmixlev follows in the bit stream.
    134                         $thisfile_ac3_raw_bsi['surmixlev'] = $this->readHeaderBSI(2);
    135                         $thisfile_ac3['surround_mix_level'] = self::surroundMixLevelLookup($thisfile_ac3_raw_bsi['surmixlev']);
    136                 }
    137 
    138                 if ($thisfile_ac3_raw_bsi['acmod'] == 0x02) {
    139                         // When operating in the two channel mode, this 2-bit code indicates whether or not the program has been encoded in Dolby Surround.
    140                         $thisfile_ac3_raw_bsi['dsurmod'] = $this->readHeaderBSI(2);
    141                         $thisfile_ac3['dolby_surround_mode'] = self::dolbySurroundModeLookup($thisfile_ac3_raw_bsi['dsurmod']);
    142                 }
    143 
    144                 $thisfile_ac3_raw_bsi['lfeon'] = (bool) $this->readHeaderBSI(1);
    145                 $thisfile_ac3['lfe_enabled'] = $thisfile_ac3_raw_bsi['lfeon'];
    146                 if ($thisfile_ac3_raw_bsi['lfeon']) {
    147                         //$info['audio']['channels']++;
     462                $thisfile_ac3['lfe_enabled'] = $thisfile_ac3_raw_bsi['flags']['lfeon'];
     463                if ($thisfile_ac3_raw_bsi['flags']['lfeon']) {
    148464                        $info['audio']['channels'] .= '.1';
    149465                }
    150466
    151                 $thisfile_ac3['channels_enabled'] = self::channelsEnabledLookup($thisfile_ac3_raw_bsi['acmod'], $thisfile_ac3_raw_bsi['lfeon']);
    152 
    153                 // This indicates how far the average dialogue level is below digital 100 percent. Valid values are 1-31.
    154                 // 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.
    155                 $thisfile_ac3_raw_bsi['dialnorm'] = $this->readHeaderBSI(5);
     467                $thisfile_ac3['channels_enabled'] = self::channelsEnabledLookup($thisfile_ac3_raw_bsi['acmod'], $thisfile_ac3_raw_bsi['flags']['lfeon']);
    156468                $thisfile_ac3['dialogue_normalization'] = '-'.$thisfile_ac3_raw_bsi['dialnorm'].'dB';
    157 
    158                 $thisfile_ac3_raw_bsi['compre_flag'] = (bool) $this->readHeaderBSI(1);
    159                 if ($thisfile_ac3_raw_bsi['compre_flag']) {
    160                         $thisfile_ac3_raw_bsi['compr'] = $this->readHeaderBSI(8);
    161                         $thisfile_ac3['heavy_compression'] = self::heavyCompression($thisfile_ac3_raw_bsi['compr']);
    162                 }
    163 
    164                 $thisfile_ac3_raw_bsi['langcode_flag'] = (bool) $this->readHeaderBSI(1);
    165                 if ($thisfile_ac3_raw_bsi['langcode_flag']) {
    166                         $thisfile_ac3_raw_bsi['langcod'] = $this->readHeaderBSI(8);
    167                 }
    168 
    169                 $thisfile_ac3_raw_bsi['audprodie'] = (bool) $this->readHeaderBSI(1);
    170                 if ($thisfile_ac3_raw_bsi['audprodie']) {
    171                         $thisfile_ac3_raw_bsi['mixlevel'] = $this->readHeaderBSI(5);
    172                         $thisfile_ac3_raw_bsi['roomtyp']  = $this->readHeaderBSI(2);
    173 
    174                         $thisfile_ac3['mixing_level'] = (80 + $thisfile_ac3_raw_bsi['mixlevel']).'dB';
    175                         $thisfile_ac3['room_type']    = self::roomTypeLookup($thisfile_ac3_raw_bsi['roomtyp']);
    176                 }
    177 
    178                 if ($thisfile_ac3_raw_bsi['acmod'] == 0x00) {
    179                         // If acmod is 0, then two completely independent program channels (dual mono)
    180                         // are encoded into the bit stream, and are referenced as Ch1, Ch2. In this case,
    181                         // a number of additional items are present in BSI or audblk to fully describe Ch2.
    182 
    183                         // This indicates how far the average dialogue level is below digital 100 percent. Valid values are 1-31.
    184                         // 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.
    185                         $thisfile_ac3_raw_bsi['dialnorm2'] = $this->readHeaderBSI(5);
    186                         $thisfile_ac3['dialogue_normalization2'] = '-'.$thisfile_ac3_raw_bsi['dialnorm2'].'dB';
    187 
    188                         $thisfile_ac3_raw_bsi['compre_flag2'] = (bool) $this->readHeaderBSI(1);
    189                         if ($thisfile_ac3_raw_bsi['compre_flag2']) {
    190                                 $thisfile_ac3_raw_bsi['compr2'] = $this->readHeaderBSI(8);
    191                                 $thisfile_ac3['heavy_compression2'] = self::heavyCompression($thisfile_ac3_raw_bsi['compr2']);
    192                         }
    193 
    194                         $thisfile_ac3_raw_bsi['langcode_flag2'] = (bool) $this->readHeaderBSI(1);
    195                         if ($thisfile_ac3_raw_bsi['langcode_flag2']) {
    196                                 $thisfile_ac3_raw_bsi['langcod2'] = $this->readHeaderBSI(8);
    197                         }
    198 
    199                         $thisfile_ac3_raw_bsi['audprodie2'] = (bool) $this->readHeaderBSI(1);
    200                         if ($thisfile_ac3_raw_bsi['audprodie2']) {
    201                                 $thisfile_ac3_raw_bsi['mixlevel2'] = $this->readHeaderBSI(5);
    202                                 $thisfile_ac3_raw_bsi['roomtyp2']  = $this->readHeaderBSI(2);
    203 
    204                                 $thisfile_ac3['mixing_level2'] = (80 + $thisfile_ac3_raw_bsi['mixlevel2']).'dB';
    205                                 $thisfile_ac3['room_type2']    = self::roomTypeLookup($thisfile_ac3_raw_bsi['roomtyp2']);
    206                         }
    207 
    208                 }
    209 
    210                 $thisfile_ac3_raw_bsi['copyright'] = (bool) $this->readHeaderBSI(1);
    211 
    212                 $thisfile_ac3_raw_bsi['original']  = (bool) $this->readHeaderBSI(1);
    213 
    214                 $thisfile_ac3_raw_bsi['timecode1_flag'] = (bool) $this->readHeaderBSI(1);
    215                 if ($thisfile_ac3_raw_bsi['timecode1_flag']) {
    216                         $thisfile_ac3_raw_bsi['timecode1'] = $this->readHeaderBSI(14);
    217                 }
    218 
    219                 $thisfile_ac3_raw_bsi['timecode2_flag'] = (bool) $this->readHeaderBSI(1);
    220                 if ($thisfile_ac3_raw_bsi['timecode2_flag']) {
    221                         $thisfile_ac3_raw_bsi['timecode2'] = $this->readHeaderBSI(14);
    222                 }
    223 
    224                 $thisfile_ac3_raw_bsi['addbsi_flag'] = (bool) $this->readHeaderBSI(1);
    225                 if ($thisfile_ac3_raw_bsi['addbsi_flag']) {
    226                         $thisfile_ac3_raw_bsi['addbsi_length'] = $this->readHeaderBSI(6);
    227 
    228                         $this->AC3header['bsi'] .= getid3_lib::BigEndian2Bin($this->fread($thisfile_ac3_raw_bsi['addbsi_length']));
    229 
    230                         $thisfile_ac3_raw_bsi['addbsi_data'] = substr($this->AC3header['bsi'], $this->BSIoffset, $thisfile_ac3_raw_bsi['addbsi_length'] * 8);
    231                         $this->BSIoffset += $thisfile_ac3_raw_bsi['addbsi_length'] * 8;
    232                 }
    233469
    234470                return true;
     
    250486                );
    251487                return (isset($sampleRateCodeLookup[$fscod]) ? $sampleRateCodeLookup[$fscod] : false);
     488        }
     489
     490        public static function sampleRateCodeLookup2($fscod2) {
     491                static $sampleRateCodeLookup2 = array(
     492                        0 => 24000,
     493                        1 => 22050,
     494                        2 => 16000,
     495                        3 => 'reserved' // If the reserved code is indicated, the decoder should not attempt to decode audio and should mute.
     496                );
     497                return (isset($sampleRateCodeLookup2[$fscod2]) ? $sampleRateCodeLookup2[$fscod2] : false);
    252498        }
    253499
     
    410656
    411657        public static function frameSizeLookup($frmsizecod, $fscod) {
    412                 $padding     = (bool) ($frmsizecod % 2);
    413                 $framesizeid =   floor($frmsizecod / 2);
     658                // LSB is whether padding is used or not
     659                $padding     = (bool) ($frmsizecod & 0x01);
     660                $framesizeid =        ($frmsizecod & 0x3E) >> 1;
    414661
    415662                static $frameSizeLookup = array();
    416663                if (empty($frameSizeLookup)) {
    417664                        $frameSizeLookup = array (
    418                                 0  => array(128, 138, 192),
    419                                 1  => array(40, 160, 174, 240),
    420                                 2  => array(48, 192, 208, 288),
    421                                 3  => array(56, 224, 242, 336),
    422                                 4  => array(64, 256, 278, 384),
    423                                 5  => array(80, 320, 348, 480),
    424                                 6  => array(96, 384, 416, 576),
    425                                 7  => array(112, 448, 486, 672),
    426                                 8  => array(128, 512, 556, 768),
    427                                 9  => array(160, 640, 696, 960),
    428                                 10 => array(192, 768, 834, 1152),
    429                                 11 => array(224, 896, 974, 1344),
    430                                 12 => array(256, 1024, 1114, 1536),
    431                                 13 => array(320, 1280, 1392, 1920),
    432                                 14 => array(384, 1536, 1670, 2304),
    433                                 15 => array(448, 1792, 1950, 2688),
    434                                 16 => array(512, 2048, 2228, 3072),
    435                                 17 => array(576, 2304, 2506, 3456),
    436                                 18 => array(640, 2560, 2786, 3840)
     665                                0  => array( 128,  138,  192),  //  32 kbps
     666                                1  => array( 160,  174,  240),  //  40 kbps
     667                                2  => array( 192,  208,  288),  //  48 kbps
     668                                3  => array( 224,  242,  336),  //  56 kbps
     669                                4  => array( 256,  278,  384),  //  64 kbps
     670                                5  => array( 320,  348,  480),  //  80 kbps
     671                                6  => array( 384,  416,  576),  //  96 kbps
     672                                7  => array( 448,  486,  672),  // 112 kbps
     673                                8  => array( 512,  556,  768),  // 128 kbps
     674                                9  => array( 640,  696,  960),  // 160 kbps
     675                                10 => array( 768,  834, 1152),  // 192 kbps
     676                                11 => array( 896,  974, 1344),  // 224 kbps
     677                                12 => array(1024, 1114, 1536),  // 256 kbps
     678                                13 => array(1280, 1392, 1920),  // 320 kbps
     679                                14 => array(1536, 1670, 2304),  // 384 kbps
     680                                15 => array(1792, 1950, 2688),  // 448 kbps
     681                                16 => array(2048, 2228, 3072),  // 512 kbps
     682                                17 => array(2304, 2506, 3456),  // 576 kbps
     683                                18 => array(2560, 2786, 3840)   // 640 kbps
    437684                        );
    438685                }
     
    445692
    446693        public static function bitrateLookup($frmsizecod) {
    447                 $framesizeid =   floor($frmsizecod / 2);
     694                // LSB is whether padding is used or not
     695                $padding     = (bool) ($frmsizecod & 0x01);
     696                $framesizeid =        ($frmsizecod & 0x3E) >> 1;
    448697
    449698                static $bitrateLookup = array(
    450                         0  => 32000,
    451                         1  => 40000,
    452                         2  => 48000,
    453                         3  => 56000,
    454                         4  => 64000,
    455                         5  => 80000,
    456                         6  => 96000,
    457                         7 => 112000,
    458                         8 => 128000,
    459                         9 => 160000,
     699                         0 => 32000,
     700                         1 => 40000,
     701                         2 => 48000,
     702                         3 => 56000,
     703                         4 => 64000,
     704                         5 => 80000,
     705                         6 => 96000,
     706                         7 => 112000,
     707                         8 => 128000,
     708                         9 => 160000,
    460709                        10 => 192000,
    461710                        11 => 224000,
     
    466715                        16 => 512000,
    467716                        17 => 576000,
    468                         18 => 640000
     717                        18 => 640000,
    469718                );
    470719                return (isset($bitrateLookup[$framesizeid]) ? $bitrateLookup[$framesizeid] : false);
    471720        }
    472721
     722        public static function blocksPerSyncFrame($numblkscod) {
     723                static $blocksPerSyncFrameLookup = array(
     724                        0 => 1,
     725                        1 => 2,
     726                        2 => 3,
     727                        3 => 6,
     728                );
     729                return (isset($blocksPerSyncFrameLookup[$numblkscod]) ? $blocksPerSyncFrameLookup[$numblkscod] : false);
     730        }
     731
    473732
    474733}
  • _core_/plugins/medias/lib/getid3/module.audio.amr.php

    r85814 r106591  
    2727                $magic = '#!AMR'."\x0A";
    2828                if (substr($AMRheader, 0, 6) != $magic) {
    29                         $info['error'][] = 'Expecting "'.getid3_lib::PrintHexBytes($magic).'" at offset '.$info['avdataoffset'].', found "'.getid3_lib::PrintHexBytes(substr($AMRheader, 0, 6)).'"';
     29                        $this->error('Expecting "'.getid3_lib::PrintHexBytes($magic).'" at offset '.$info['avdataoffset'].', found "'.getid3_lib::PrintHexBytes(substr($AMRheader, 0, 6)).'"');
    3030                        return false;
    3131                }
     
    5151                        $codec_mode_request = ($AMR_frame_header & 0x78) >> 3; // The 2nd bit through 5th bit (counting the most significant bit as the first bit) comprise the CMR (Codec Mode Request), values 0-7 being valid for AMR. The top bit of the CMR can actually be ignored, though it is used when AMR forms RTP payloads. The lower 3-bits of the header are reserved and are not used. Viewing the header from most significant bit to least significant bit, the encoding is XCCCCXXX, where Xs are reserved (typically 0) and the Cs are the CMR.
    5252                        if ($codec_mode_request > 7) {
    53                                 $info['error'][] = '';
    5453                                break;
    5554                        }
  • _core_/plugins/medias/lib/getid3/module.audio.au.php

    r85814 r106591  
    2727                $magic = '.snd';
    2828                if (substr($AUheader, 0, 4) != $magic) {
    29                         $info['error'][] = 'Expecting "'.getid3_lib::PrintHexBytes($magic).'" (".snd") at offset '.$info['avdataoffset'].', found "'.getid3_lib::PrintHexBytes(substr($AUheader, 0, 4)).'"';
     29                        $this->error('Expecting "'.getid3_lib::PrintHexBytes($magic).'" (".snd") at offset '.$info['avdataoffset'].', found "'.getid3_lib::PrintHexBytes(substr($AUheader, 0, 4)).'"');
    3030                        return false;
    3131                }
     
    6262
    6363                if (($info['avdataoffset'] + $thisfile_au['data_size']) > $info['avdataend']) {
    64                         $info['warning'][] = 'Possible truncated file - expecting "'.$thisfile_au['data_size'].'" bytes of audio data, only found '.($info['avdataend'] - $info['avdataoffset']).' bytes"';
     64                        $this->warning('Possible truncated file - expecting "'.$thisfile_au['data_size'].'" bytes of audio data, only found '.($info['avdataend'] - $info['avdataoffset']).' bytes"');
    6565                }
    6666
  • _core_/plugins/medias/lib/getid3/module.audio.avr.php

    r85814 r106591  
    7070                $magic = '2BIT';
    7171                if ($info['avr']['raw']['magic'] != $magic) {
    72                         $info['error'][] = 'Expecting "'.getid3_lib::PrintHexBytes($magic).'" at offset '.$info['avdataoffset'].', found "'.getid3_lib::PrintHexBytes($info['avr']['raw']['magic']).'"';
     72                        $this->error('Expecting "'.getid3_lib::PrintHexBytes($magic).'" at offset '.$info['avdataoffset'].', found "'.getid3_lib::PrintHexBytes($info['avr']['raw']['magic']).'"');
    7373                        unset($info['fileformat']);
    7474                        unset($info['avr']);
     
    107107
    108108                if (($info['avdataend'] - $info['avdataoffset']) != ($info['avr']['sample_length'] * (($info['avr']['bits_per_sample'] == 8) ? 1 : 2))) {
    109                         $info['warning'][] = 'Probable truncated file: expecting '.($info['avr']['sample_length'] * (($info['avr']['bits_per_sample'] == 8) ? 1 : 2)).' bytes of audio data, found '.($info['avdataend'] - $info['avdataoffset']);
     109                        $this->warning('Probable truncated file: expecting '.($info['avr']['sample_length'] * (($info['avr']['bits_per_sample'] == 8) ? 1 : 2)).' bytes of audio data, found '.($info['avdataend'] - $info['avdataoffset']));
    110110                }
    111111
  • _core_/plugins/medias/lib/getid3/module.audio.bonk.php

    r96228 r106591  
    3030                if (!getid3_lib::intValueSupported($thisfile_bonk['dataend'])) {
    3131
    32                         $info['warning'][] = 'Unable to parse BONK file from end (v0.6+ preferred method) because PHP filesystem functions only support up to '.round(PHP_INT_MAX / 1073741824).'GB';
     32                        $this->warning('Unable to parse BONK file from end (v0.6+ preferred method) because PHP filesystem functions only support up to '.round(PHP_INT_MAX / 1073741824).'GB');
    3333
    3434                } else {
     
    4343                                $TagHeaderTest = $this->fread(5);
    4444                                if (($TagHeaderTest{0} != "\x00") || (substr($PossibleBonkTag, 4, 4) != strtolower(substr($PossibleBonkTag, 4, 4)))) {
    45                                         $info['error'][] = 'Expecting "'.getid3_lib::PrintHexBytes("\x00".strtoupper(substr($PossibleBonkTag, 4, 4))).'" at offset '.$BonkTagOffset.', found "'.getid3_lib::PrintHexBytes($TagHeaderTest).'"';
     45                                        $this->error('Expecting "'.getid3_lib::PrintHexBytes("\x00".strtoupper(substr($PossibleBonkTag, 4, 4))).'" at offset '.$BonkTagOffset.', found "'.getid3_lib::PrintHexBytes($TagHeaderTest).'"');
    4646                                        return false;
    4747                                }
     
    208208
    209209                        default:
    210                                 $info['warning'][] = 'Unexpected Bonk tag "'.$BonkTagName.'" at offset '.$info['bonk'][$BonkTagName]['offset'];
     210                                $this->warning('Unexpected Bonk tag "'.$BonkTagName.'" at offset '.$info['bonk'][$BonkTagName]['offset']);
    211211                                break;
    212212
  • _core_/plugins/medias/lib/getid3/module.audio.dsf.php

    r96228 r106591  
    3636                $magic = 'DSD ';
    3737                if ($info['dsf']['dsd']['magic'] != $magic) {
    38                         $info['error'][] = 'Expecting "'.getid3_lib::PrintHexBytes($magic).'" at offset '.$info['avdataoffset'].', found "'.getid3_lib::PrintHexBytes($info['dsf']['dsd']['magic']).'"';
     38                        $this->error('Expecting "'.getid3_lib::PrintHexBytes($magic).'" at offset '.$info['avdataoffset'].', found "'.getid3_lib::PrintHexBytes($info['dsf']['dsd']['magic']).'"');
    3939                        unset($info['fileformat']);
    4040                        unset($info['audio']);
     
    5454                $magic = 'fmt ';
    5555                if ($info['dsf']['fmt']['magic'] != $magic) {
    56                         $info['error'][] = 'Expecting "'.getid3_lib::PrintHexBytes($magic).'" at offset '.$headeroffset.', found "'.getid3_lib::PrintHexBytes($info['dsf']['fmt']['magic']).'"';
     56                        $this->error('Expecting "'.getid3_lib::PrintHexBytes($magic).'" at offset '.$headeroffset.', found "'.getid3_lib::PrintHexBytes($info['dsf']['fmt']['magic']).'"');
    5757                        return false;
    5858                }
     
    6161                $dsfheader .= $this->fread($info['dsf']['fmt']['fmt_chunk_size'] - 12 + 12);  // we have already read the entire DSD chunk, plus 12 bytes of FMT. We now want to read the size of FMT, plus 12 bytes into the next chunk to get magic and size.
    6262                if (strlen($dsfheader) != ($info['dsf']['dsd']['dsd_chunk_size'] + $info['dsf']['fmt']['fmt_chunk_size'] + 12)) {
    63                         $info['error'][] = 'Expecting '.($info['dsf']['dsd']['dsd_chunk_size'] + $info['dsf']['fmt']['fmt_chunk_size']).' bytes header, found '.strlen($dsfheader).' bytes';
     63                        $this->error('Expecting '.($info['dsf']['dsd']['dsd_chunk_size'] + $info['dsf']['fmt']['fmt_chunk_size']).' bytes header, found '.strlen($dsfheader).' bytes');
    6464                        return false;
    6565                }
     
    8888                $magic = 'data';
    8989                if ($info['dsf']['data']['magic'] != $magic) {
    90                         $info['error'][] = 'Expecting "'.getid3_lib::PrintHexBytes($magic).'" at offset '.$headeroffset.', found "'.getid3_lib::PrintHexBytes($info['dsf']['data']['magic']).'"';
     90                        $this->error('Expecting "'.getid3_lib::PrintHexBytes($magic).'" at offset '.$headeroffset.', found "'.getid3_lib::PrintHexBytes($info['dsf']['data']['magic']).'"');
    9191                        return false;
    9292                }
  • _core_/plugins/medias/lib/getid3/module.audio.dss.php

    r101151 r106591  
    2626
    2727                if (!preg_match('#^[\\x02-\\x06]ds[s2]#', $DSSheader)) {
    28                         $info['error'][] = 'Expecting "[02-06] 64 73 [73|32]" at offset '.$info['avdataoffset'].', found "'.getid3_lib::PrintHexBytes(substr($DSSheader, 0, 4)).'"';
     28                        $this->error('Expecting "[02-06] 64 73 [73|32]" at offset '.$info['avdataoffset'].', found "'.getid3_lib::PrintHexBytes(substr($DSSheader, 0, 4)).'"');
    2929                        return false;
    3030                }
  • _core_/plugins/medias/lib/getid3/module.audio.la.php

    r85814 r106591  
    4343                                $offset += 4;
    4444                                if ($info['la']['uncompressed_size'] == 0) {
    45                                         $info['error'][] = 'Corrupt LA file: uncompressed_size == zero';
     45                                        $this->error('Corrupt LA file: uncompressed_size == zero');
    4646                                        return false;
    4747                                }
     
    4949                                $WAVEchunk = substr($rawdata, $offset, 4);
    5050                                if ($WAVEchunk !== 'WAVE') {
    51                                         $info['error'][] = 'Expected "WAVE" ('.getid3_lib::PrintHexBytes('WAVE').') at offset '.$offset.', found "'.$WAVEchunk.'" ('.getid3_lib::PrintHexBytes($WAVEchunk).') instead.';
     51                                        $this->error('Expected "WAVE" ('.getid3_lib::PrintHexBytes('WAVE').') at offset '.$offset.', found "'.$WAVEchunk.'" ('.getid3_lib::PrintHexBytes($WAVEchunk).') instead.');
    5252                                        return false;
    5353                                }
     
    7070                                $fmt_chunk = substr($rawdata, $offset, 4);
    7171                                if ($fmt_chunk !== 'fmt ') {
    72                                         $info['error'][] = 'Expected "fmt " ('.getid3_lib::PrintHexBytes('fmt ').') at offset '.$offset.', found "'.$fmt_chunk.'" ('.getid3_lib::PrintHexBytes($fmt_chunk).') instead.';
     72                                        $this->error('Expected "fmt " ('.getid3_lib::PrintHexBytes('fmt ').') at offset '.$offset.', found "'.$fmt_chunk.'" ('.getid3_lib::PrintHexBytes($fmt_chunk).') instead.');
    7373                                        return false;
    7474                                }
     
    8383                                $offset += 2;
    8484                                if ($info['la']['channels'] == 0) {
    85                                         $info['error'][] = 'Corrupt LA file: channels == zero';
     85                                        $this->error('Corrupt LA file: channels == zero');
    8686                                                return false;
    8787                                }
     
    9090                                $offset += 4;
    9191                                if ($info['la']['sample_rate'] == 0) {
    92                                         $info['error'][] = 'Corrupt LA file: sample_rate == zero';
     92                                        $this->error('Corrupt LA file: sample_rate == zero');
    9393                                                return false;
    9494                                }
     
    147147
    148148                                        if ($info['la']['footerstart'] > $info['filesize']) {
    149                                                 $info['warning'][] = 'FooterStart value points to offset '.$info['la']['footerstart'].' which is beyond end-of-file ('.$info['filesize'].')';
     149                                                $this->warning('FooterStart value points to offset '.$info['la']['footerstart'].' which is beyond end-of-file ('.$info['filesize'].')');
    150150                                                $info['la']['footerstart'] = $info['filesize'];
    151151                                        }
     
    183183                                                                $info['riff'] = $getid3_temp->info['riff'];
    184184                                                        } else {
    185                                                                 $info['warning'][] = 'Error parsing RIFF portion of La file: '.implode($getid3_temp->info['error']);
     185                                                                $this->warning('Error parsing RIFF portion of La file: '.implode($getid3_temp->info['error']));
    186186                                                        }
    187187                                                        unset($getid3_temp, $getid3_riff);
     
    198198                                $info['playtime_seconds']           = (float) ($info['la']['samples'] / $info['la']['sample_rate']) / $info['la']['channels'];
    199199                                if ($info['playtime_seconds'] == 0) {
    200                                         $info['error'][] = 'Corrupt LA file: playtime_seconds == zero';
     200                                        $this->error('Corrupt LA file: playtime_seconds == zero');
    201201                                        return false;
    202202                                }
     
    209209                        default:
    210210                                if (substr($rawdata, $offset, 2) == 'LA') {
    211                                         $info['error'][] = 'This version of getID3() ['.$this->getid3->version().'] does not support LA version '.substr($rawdata, $offset + 2, 1).'.'.substr($rawdata, $offset + 3, 1).' which this appears to be - check http://getid3.sourceforge.net for updates.';
    212                                 } else {
    213                                         $info['error'][] = 'Not a LA (Lossless-Audio) file';
     211                                        $this->error('This version of getID3() ['.$this->getid3->version().'] does not support LA version '.substr($rawdata, $offset + 2, 1).'.'.substr($rawdata, $offset + 3, 1).' which this appears to be - check http://getid3.sourceforge.net for updates.');
     212                                } else {
     213                                        $this->error('Not a LA (Lossless-Audio) file');
    214214                                }
    215215                                return false;
  • _core_/plugins/medias/lib/getid3/module.audio.lpac.php

    r85814 r106591  
    2626                $LPACheader = $this->fread(14);
    2727                if (substr($LPACheader, 0, 4) != 'LPAC') {
    28                         $info['error'][] = 'Expected "LPAC" at offset '.$info['avdataoffset'].', found "'.$StreamMarker.'"';
     28                        $this->error('Expected "LPAC" at offset '.$info['avdataoffset'].', found "'.$StreamMarker.'"');
    2929                        return false;
    3030                }
     
    4747
    4848                if ($info['lpac']['flags']['24_bit'] && $info['lpac']['flags']['16_bit']) {
    49                         $info['warning'][] = '24-bit and 16-bit flags cannot both be set';
     49                        $this->warning('24-bit and 16-bit flags cannot both be set');
    5050                }
    5151
     
    6060
    6161                if ($info['lpac']['flags']['fast_compress'] && ($info['lpac']['max_prediction_order'] != 3)) {
    62                         $info['warning'][] = 'max_prediction_order expected to be "3" if fast_compress is true, actual value is "'.$info['lpac']['max_prediction_order'].'"';
     62                        $this->warning('max_prediction_order expected to be "3" if fast_compress is true, actual value is "'.$info['lpac']['max_prediction_order'].'"');
    6363                }
    6464                switch ($info['lpac']['file_version']) {
    6565                        case 6:
    6666                                if ($info['lpac']['flags']['adaptive_quantization']) {
    67                                         $info['warning'][] = 'adaptive_quantization expected to be false in LPAC file stucture v6, actually true';
     67                                        $this->warning('adaptive_quantization expected to be false in LPAC file stucture v6, actually true');
    6868                                }
    6969                                if ($info['lpac']['quantization'] != 20) {
    70                                         $info['warning'][] = 'Quantization expected to be 20 in LPAC file stucture v6, actually '.$info['lpac']['flags']['Q'];
     70                                        $this->warning('Quantization expected to be 20 in LPAC file stucture v6, actually '.$info['lpac']['flags']['Q']);
    7171                                }
    7272                                break;
    7373
    7474                        default:
    75                                 //$info['warning'][] = 'This version of getID3() ['.$this->getid3->version().'] only supports LPAC file format version 6, this file is version '.$info['lpac']['file_version'].' - please report to info@getid3.org';
     75                                //$this->warning('This version of getID3() ['.$this->getid3->version().'] only supports LPAC file format version 6, this file is version '.$info['lpac']['file_version'].' - please report to info@getid3.org');
    7676                                break;
    7777                }
  • _core_/plugins/medias/lib/getid3/module.audio.midi.php

    r85814 r106591  
    3838                $MIDIheaderID = substr($MIDIdata, $offset, 4); // 'MThd'
    3939                if ($MIDIheaderID != GETID3_MIDI_MAGIC_MTHD) {
    40                         $info['error'][] = 'Expecting "'.getid3_lib::PrintHexBytes(GETID3_MIDI_MAGIC_MTHD).'" at offset '.$info['avdataoffset'].', found "'.getid3_lib::PrintHexBytes($MIDIheaderID).'"';
     40                        $this->error('Expecting "'.getid3_lib::PrintHexBytes(GETID3_MIDI_MAGIC_MTHD).'" at offset '.$info['avdataoffset'].', found "'.getid3_lib::PrintHexBytes($MIDIheaderID).'"');
    4141                        unset($info['fileformat']);
    4242                        return false;
     
    5757                                        $MIDIdata .= $buffer;
    5858                                } else {
    59                                         $info['warning'][] = 'only processed '.($i - 1).' of '.$thisfile_midi_raw['tracks'].' tracks';
    60                                         $info['error'][] = 'Unabled to read more file data at '.$this->ftell().' (trying to seek to : '.$offset.'), was expecting at least 8 more bytes';
     59                                        $this->warning('only processed '.($i - 1).' of '.$thisfile_midi_raw['tracks'].' tracks');
     60                                        $this->error('Unabled to read more file data at '.$this->ftell().' (trying to seek to : '.$offset.'), was expecting at least 8 more bytes');
    6161                                        return false;
    6262                                }
     
    7171                                $offset += $tracksize;
    7272                        } else {
    73                                 $info['error'][] = 'Expecting "'.getid3_lib::PrintHexBytes(GETID3_MIDI_MAGIC_MTRK).'" at '.($offset - 4).', found "'.getid3_lib::PrintHexBytes($trackID).'" instead';
     73                                $this->error('Expecting "'.getid3_lib::PrintHexBytes(GETID3_MIDI_MAGIC_MTRK).'" at '.($offset - 4).', found "'.getid3_lib::PrintHexBytes($trackID).'" instead');
    7474                                return false;
    7575                        }
     
    7777
    7878                if (!isset($trackdataarray) || !is_array($trackdataarray)) {
    79                         $info['error'][] = 'Cannot find MIDI track information';
     79                        $this->error('Cannot find MIDI track information');
    8080                        unset($thisfile_midi);
    8181                        unset($info['fileformat']);
     
    227227                                                                $CurrentMicroSecondsPerBeat = getid3_lib::BigEndian2Int(substr($METAeventData, 0, $METAeventLength));
    228228                                                                if ($CurrentMicroSecondsPerBeat == 0) {
    229                                                                         $info['error'][] = 'Corrupt MIDI file: CurrentMicroSecondsPerBeat == zero';
     229                                                                        $this->error('Corrupt MIDI file: CurrentMicroSecondsPerBeat == zero');
    230230                                                                        return false;
    231231                                                                }
     
    270270
    271271                                                        default:
    272                                                                 $info['warning'][] = 'Unhandled META Event Command: '.$METAeventCommand;
     272                                                                $this->warning('Unhandled META Event Command: '.$METAeventCommand);
    273273                                                                break;
    274274                                                }
     
    276276                                        } else {
    277277
    278                                                 $info['warning'][] = 'Unhandled MIDI Event ID: '.$MIDIevents[$tracknumber][$eventid]['eventid'].' + Channel ID: '.$MIDIevents[$tracknumber][$eventid]['channel'];
     278                                                $this->warning('Unhandled MIDI Event ID: '.$MIDIevents[$tracknumber][$eventid]['eventid'].' + Channel ID: '.$MIDIevents[$tracknumber][$eventid]['channel']);
    279279
    280280                                        }
     
    296296
    297297                                        if ($thisfile_midi_raw['ticksperqnote'] == 0) {
    298                                                 $info['error'][] = 'Corrupt MIDI file: ticksperqnote == zero';
     298                                                $this->error('Corrupt MIDI file: ticksperqnote == zero');
    299299                                                return false;
    300300                                        }
     
    309309
    310310                                if ($thisfile_midi_raw['ticksperqnote'] == 0) {
    311                                         $info['error'][] = 'Corrupt MIDI file: ticksperqnote == zero';
     311                                        $this->error('Corrupt MIDI file: ticksperqnote == zero');
    312312                                        return false;
    313313                                }
  • _core_/plugins/medias/lib/getid3/module.audio.mod.php

    r85814 r106591  
    3232                        return $this->getMODheaderFilepointer();
    3333                }
    34                 $info['error'][] = 'This is not a known type of MOD file';
     34                $this->error('This is not a known type of MOD file');
    3535                return false;
    3636        }
     
    4242                $FormatID = $this->fread(4);
    4343                if (!preg_match('#^(M.K.|[5-9]CHN|[1-3][0-9]CH)$#', $FormatID)) {
    44                         $info['error'][] = 'This is not a known type of MOD file';
     44                        $this->error('This is not a known type of MOD file');
    4545                        return false;
    4646                }
     
    4848                $info['fileformat'] = 'mod';
    4949
    50                 $info['error'][] = 'MOD parsing not enabled in this version of getID3() ['.$this->getid3->version().']';
     50                $this->error('MOD parsing not enabled in this version of getID3() ['.$this->getid3->version().']');
    5151                return false;
    5252        }
     
    5757                $FormatID = $this->fread(15);
    5858                if (!preg_match('#^Extended Module$#', $FormatID)) {
    59                         $info['error'][] = 'This is not a known type of XM-MOD file';
     59                        $this->error('This is not a known type of XM-MOD file');
    6060                        return false;
    6161                }
     
    6363                $info['fileformat'] = 'xm';
    6464
    65                 $info['error'][] = 'XM-MOD parsing not enabled in this version of getID3() ['.$this->getid3->version().']';
     65                $this->error('XM-MOD parsing not enabled in this version of getID3() ['.$this->getid3->version().']');
    6666                return false;
    6767        }
     
    7272                $FormatID = $this->fread(4);
    7373                if (!preg_match('#^SCRM$#', $FormatID)) {
    74                         $info['error'][] = 'This is not a ScreamTracker MOD file';
     74                        $this->error('This is not a ScreamTracker MOD file');
    7575                        return false;
    7676                }
     
    7878                $info['fileformat'] = 's3m';
    7979
    80                 $info['error'][] = 'ScreamTracker parsing not enabled in this version of getID3() ['.$this->getid3->version().']';
     80                $this->error('ScreamTracker parsing not enabled in this version of getID3() ['.$this->getid3->version().']');
    8181                return false;
    8282        }
     
    8787                $FormatID = $this->fread(4);
    8888                if (!preg_match('#^IMPM$#', $FormatID)) {
    89                         $info['error'][] = 'This is not an ImpulseTracker MOD file';
     89                        $this->error('This is not an ImpulseTracker MOD file');
    9090                        return false;
    9191                }
     
    9393                $info['fileformat'] = 'it';
    9494
    95                 $info['error'][] = 'ImpulseTracker parsing not enabled in this version of getID3() ['.$this->getid3->version().']';
     95                $this->error('ImpulseTracker parsing not enabled in this version of getID3() ['.$this->getid3->version().']');
    9696                return false;
    9797        }
  • _core_/plugins/medias/lib/getid3/module.audio.monkey.php

    r85814 r106591  
    4040                $magic = 'MAC ';
    4141                if ($thisfile_monkeysaudio_raw['magic'] != $magic) {
    42                         $info['error'][] = 'Expecting "'.getid3_lib::PrintHexBytes($magic).'" at offset '.$info['avdataoffset'].', found "'.getid3_lib::PrintHexBytes($thisfile_monkeysaudio_raw['magic']).'"';
     42                        $this->error('Expecting "'.getid3_lib::PrintHexBytes($magic).'" at offset '.$info['avdataoffset'].', found "'.getid3_lib::PrintHexBytes($thisfile_monkeysaudio_raw['magic']).'"');
    4343                        unset($info['fileformat']);
    4444                        return false;
     
    113113                $thisfile_monkeysaudio['sample_rate']            = $thisfile_monkeysaudio_raw['nSampleRate'];
    114114                if ($thisfile_monkeysaudio['sample_rate'] == 0) {
    115                         $info['error'][] = 'Corrupt MAC file: frequency == zero';
     115                        $this->error('Corrupt MAC file: frequency == zero');
    116116                        return false;
    117117                }
     
    128128                $thisfile_monkeysaudio['playtime']               = $thisfile_monkeysaudio['samples'] / $thisfile_monkeysaudio['sample_rate'];
    129129                if ($thisfile_monkeysaudio['playtime'] == 0) {
    130                         $info['error'][] = 'Corrupt MAC file: playtime == zero';
     130                        $this->error('Corrupt MAC file: playtime == zero');
    131131                        return false;
    132132                }
     
    135135                $thisfile_monkeysaudio['uncompressed_size']      = $thisfile_monkeysaudio['samples'] * $thisfile_monkeysaudio['channels'] * ($thisfile_monkeysaudio['bits_per_sample'] / 8);
    136136                if ($thisfile_monkeysaudio['uncompressed_size'] == 0) {
    137                         $info['error'][] = 'Corrupt MAC file: uncompressed_size == zero';
     137                        $this->error('Corrupt MAC file: uncompressed_size == zero');
    138138                        return false;
    139139                }
     
    156156                if ($thisfile_monkeysaudio_raw['nVersion'] >= 3980) {
    157157                        if ($thisfile_monkeysaudio_raw['cFileMD5'] === str_repeat("\x00", 16)) {
    158                                 //$info['warning'][] = 'cFileMD5 is null';
     158                                //$this->warning('cFileMD5 is null');
    159159                        } else {
    160160                                $info['md5_data_source'] = '';
  • _core_/plugins/medias/lib/getid3/module.audio.mp3.php

    r96228 r106591  
    3535                if (!$this->getOnlyMPEGaudioInfo($info['avdataoffset'])) {
    3636                        if ($this->allow_bruteforce) {
    37                                 $info['error'][] = 'Rescanning file in BruteForce mode';
     37                                $this->error('Rescanning file in BruteForce mode');
    3838                                $this->getOnlyMPEGaudioInfoBruteForce($this->getid3->fp, $info);
    3939                        }
     
    7373
    7474                        }
    75                         $info['warning'][] = $synchoffsetwarning;
     75                        $this->warning($synchoffsetwarning);
    7676
    7777                }
     
    135135
    136136                                default:
    137                                         $info['warning'][] = 'Expecting [audio][dataformat] to be mp1/mp2/mp3 when fileformat == mp3, [audio][dataformat] actually "'.$info['audio']['dataformat'].'"';
     137                                        $this->warning('Expecting [audio][dataformat] to be mp1/mp2/mp3 when fileformat == mp3, [audio][dataformat] actually "'.$info['audio']['dataformat'].'"');
    138138                                        break;
    139139                        }
     
    425425
    426426                if ($this->fseek($offset) != 0) {
    427                         $info['error'][] = 'decodeMPEGaudioHeader() failed to seek to next offset at '.$offset;
     427                        $this->error('decodeMPEGaudioHeader() failed to seek to next offset at '.$offset);
    428428                        return false;
    429429                }
     
    462462                        $thisfile_mpeg_audio['raw'] = $MPEGheaderRawArray;
    463463                } else {
    464                         $info['error'][] = 'Invalid MPEG audio header ('.getid3_lib::PrintHexBytes($head4).') at offset '.$offset;
     464                        $this->error('Invalid MPEG audio header ('.getid3_lib::PrintHexBytes($head4).') at offset '.$offset);
    465465                        return false;
    466466                }
     
    490490                if ($thisfile_mpeg_audio['raw']['bitrate'] == 15) {
    491491                        // http://www.hydrogenaudio.org/?act=ST&f=16&t=9682&st=0
    492                         $info['warning'][] = 'Invalid bitrate index (15), this is a known bug in free-format MP3s encoded by LAME v3.90 - 3.93.1';
     492                        $this->warning('Invalid bitrate index (15), this is a known bug in free-format MP3s encoded by LAME v3.90 - 3.93.1');
    493493                        $thisfile_mpeg_audio['raw']['bitrate'] = 0;
    494494                }
     
    512512                                                // these are ok
    513513                                        } else {
    514                                                 $info['error'][] = $thisfile_mpeg_audio['bitrate'].'kbps not allowed in Layer 2, '.$thisfile_mpeg_audio['channelmode'].'.';
     514                                                $this->error($thisfile_mpeg_audio['bitrate'].'kbps not allowed in Layer 2, '.$thisfile_mpeg_audio['channelmode'].'.');
    515515                                                return false;
    516516                                        }
     
    523523                                                // these are ok
    524524                                        } else {
    525                                                 $info['error'][] = intval(round($thisfile_mpeg_audio['bitrate'] / 1000)).'kbps not allowed in Layer 2, '.$thisfile_mpeg_audio['channelmode'].'.';
     525                                                $this->error(intval(round($thisfile_mpeg_audio['bitrate'] / 1000)).'kbps not allowed in Layer 2, '.$thisfile_mpeg_audio['channelmode'].'.');
    526526                                                return false;
    527527                                        }
     
    545545                                $nextframetestoffset = $offset + $thisfile_mpeg_audio['framelength'];
    546546                        } else {
    547                                 $info['error'][] = 'Frame at offset('.$offset.') is has an invalid frame length.';
     547                                $this->error('Frame at offset('.$offset.') is has an invalid frame length.');
    548548                                return false;
    549549                        }
     
    658658                                                $used_filesize -= (isset($info['id3v1']) ? 128 : 0);
    659659                                                $used_filesize -= (isset($info['tag_offset_end']) ? $info['tag_offset_end'] - $info['tag_offset_start'] : 0);
    660                                                 $info['warning'][] = 'MP3.Xing header missing VBR_bytes, assuming MPEG audio portion of file is '.number_format($used_filesize).' bytes';
     660                                                $this->warning('MP3.Xing header missing VBR_bytes, assuming MPEG audio portion of file is '.number_format($used_filesize).' bytes');
    661661                                        }
    662662
     
    848848                                                $thisfile_mpeg_audio_lame['preset_used']       = self::LAMEpresetUsedLookup($thisfile_mpeg_audio_lame);
    849849                                                if (!empty($thisfile_mpeg_audio_lame['preset_used_id']) && empty($thisfile_mpeg_audio_lame['preset_used'])) {
    850                                                         $info['warning'][] = 'Unknown LAME preset used ('.$thisfile_mpeg_audio_lame['preset_used_id'].') - please report to info@getid3.org';
     850                                                        $this->warning('Unknown LAME preset used ('.$thisfile_mpeg_audio_lame['preset_used_id'].') - please report to info@getid3.org');
    851851                                                }
    852852                                                if (($thisfile_mpeg_audio_lame['short_version'] == 'LAME3.90.') && !empty($thisfile_mpeg_audio_lame['preset_used_id'])) {
     
    892892                                        }
    893893                                        if ($thisfile_mpeg_audio['bitrate_mode'] == 'vbr') {
    894                                                 $info['warning'][] = 'VBR file with no VBR header. Bitrate values calculated from actual frame bitrates.';
     894                                                $this->warning('VBR file with no VBR header. Bitrate values calculated from actual frame bitrates.');
    895895                                        }
    896896                                }
     
    919919                                //      if ($PossibleNullByte === "\x00") {
    920920                                                $info['avdataend']--;
    921                                 //              $info['warning'][] = 'Extra null byte at end of MP3 data assumed to be RIFF padding and therefore ignored';
     921                                //              $this->warning('Extra null byte at end of MP3 data assumed to be RIFF padding and therefore ignored');
    922922                                //      } else {
    923                                 //              $info['warning'][] = 'Too much data in file: expecting '.$ExpectedNumberOfAudioBytes.' bytes of audio data, found '.($info['avdataend'] - $info['avdataoffset']).' ('.(($info['avdataend'] - $info['avdataoffset']) - $ExpectedNumberOfAudioBytes).' bytes too many)';
     923                                //              $this->warning('Too much data in file: expecting '.$ExpectedNumberOfAudioBytes.' bytes of audio data, found '.($info['avdataend'] - $info['avdataoffset']).' ('.(($info['avdataend'] - $info['avdataoffset']) - $ExpectedNumberOfAudioBytes).' bytes too many)');
    924924                                //      }
    925925                                } else {
    926                                         $info['warning'][] = 'Too much data in file: expecting '.$ExpectedNumberOfAudioBytes.' bytes of audio data, found '.($info['avdataend'] - $info['avdataoffset']).' ('.(($info['avdataend'] - $info['avdataoffset']) - $ExpectedNumberOfAudioBytes).' bytes too many)';
     926                                        $this->warning('Too much data in file: expecting '.$ExpectedNumberOfAudioBytes.' bytes of audio data, found '.($info['avdataend'] - $info['avdataoffset']).' ('.(($info['avdataend'] - $info['avdataoffset']) - $ExpectedNumberOfAudioBytes).' bytes too many)');
    927927                                }
    928928                        }
     
    942942                                        }
    943943                                } else {
    944                                         $info['error'][] = 'Error calculating frame length of free-format MP3 without Xing/LAME header';
     944                                        $this->error('Error calculating frame length of free-format MP3 without Xing/LAME header');
    945945                                }
    946946                        }
     
    10851085        public function RecursiveFrameScanning(&$offset, &$nextframetestoffset, $ScanAsCBR) {
    10861086                $info = &$this->getid3->info;
    1087                 $firstframetestarray = array('error'=>'', 'warning'=>'', 'avdataend'=>$info['avdataend'], 'avdataoffset'=>$info['avdataoffset']);
     1087                $firstframetestarray = array('error' => array(), 'warning'=> array(), 'avdataend' => $info['avdataend'], 'avdataoffset' => $info['avdataoffset']);
    10881088                $this->decodeMPEGaudioHeader($offset, $firstframetestarray, false);
    10891089
     
    10951095                        }
    10961096
    1097                         $nextframetestarray = array('error'=>'', 'warning'=>'', 'avdataend'=>$info['avdataend'], 'avdataoffset'=>$info['avdataoffset']);
     1097                        $nextframetestarray = array('error' => array(), 'warning' => array(), 'avdataend' => $info['avdataend'], 'avdataoffset'=>$info['avdataoffset']);
    10981098                        if ($this->decodeMPEGaudioHeader($nextframetestoffset, $nextframetestarray, false)) {
    10991099                                if ($ScanAsCBR) {
     
    11091109                                        $nextframetestoffset += $nextframetestarray['mpeg']['audio']['framelength'];
    11101110                                } else {
    1111                                         $info['error'][] = 'Frame at offset ('.$offset.') is has an invalid frame length.';
     1111                                        $this->error('Frame at offset ('.$offset.') is has an invalid frame length.');
    11121112                                        return false;
    11131113                                }
     
    11211121
    11221122                                // next frame is not valid, note the error and fail, so scanning can contiue for a valid frame sequence
    1123                                 $info['warning'][] = 'Frame at offset ('.$offset.') is valid, but the next one at ('.$nextframetestoffset.') is not.';
     1123                                $this->warning('Frame at offset ('.$offset.') is valid, but the next one at ('.$nextframetestoffset.') is not.');
    11241124
    11251125                                return false;
     
    11641164                        }
    11651165                        if (!$framelength) {
    1166                                 $info['error'][] = 'Cannot find next free-format synch pattern ('.getid3_lib::PrintHexBytes($SyncPattern1).' or '.getid3_lib::PrintHexBytes($SyncPattern2).') after offset '.$offset;
     1166                                $this->error('Cannot find next free-format synch pattern ('.getid3_lib::PrintHexBytes($SyncPattern1).' or '.getid3_lib::PrintHexBytes($SyncPattern2).') after offset '.$offset);
    11671167                                return false;
    11681168                        } else {
    1169                                 $info['warning'][] = 'ModeExtension varies between first frame and other frames (known free-format issue in LAME 3.88)';
     1169                                $this->warning('ModeExtension varies between first frame and other frames (known free-format issue in LAME 3.88)');
    11701170                                $info['audio']['codec']   = 'LAME';
    11711171                                $info['audio']['encoder'] = 'LAME3.88';
     
    11941194                                        $nextoffset++;
    11951195                                } else {
    1196                                         $info['error'][] = 'Did not find expected free-format sync pattern at offset '.$nextoffset;
     1196                                        $this->error('Did not find expected free-format sync pattern at offset '.$nextoffset);
    11971197                                        return false;
    11981198                                }
     
    12921292                                                        if ($max_frames_scan && (++$frames_scanned >= $max_frames_scan)) {
    12931293                                                                $pct_data_scanned = ($this->ftell() - $info['avdataoffset']) / ($info['avdataend'] - $info['avdataoffset']);
    1294                                                                 $info['warning'][] = 'too many MPEG audio frames to scan, only scanned first '.$max_frames_scan.' frames ('.number_format($pct_data_scanned * 100, 1).'% of file) and extrapolated distribution, playtime and bitrate may be incorrect.';
     1294                                                                $this->warning('too many MPEG audio frames to scan, only scanned first '.$max_frames_scan.' frames ('.number_format($pct_data_scanned * 100, 1).'% of file) and extrapolated distribution, playtime and bitrate may be incorrect.');
    12951295                                                                foreach ($Distribution as $key1 => $value1) {
    12961296                                                                        foreach ($value1 as $key2 => $value2) {
     
    13191319                $info['mpeg']['audio']['padding_distribution']   = $Distribution['padding'];
    13201320                if (count($Distribution['version']) > 1) {
    1321                         $info['error'][] = 'Corrupt file - more than one MPEG version detected';
     1321                        $this->error('Corrupt file - more than one MPEG version detected');
    13221322                }
    13231323                if (count($Distribution['layer']) > 1) {
    1324                         $info['error'][] = 'Corrupt file - more than one MPEG layer detected';
     1324                        $this->error('Corrupt file - more than one MPEG layer detected');
    13251325                }
    13261326                if (count($Distribution['frequency']) > 1) {
    1327                         $info['error'][] = 'Corrupt file - more than one MPEG sample rate detected';
     1327                        $this->error('Corrupt file - more than one MPEG sample rate detected');
    13281328                }
    13291329
     
    13371337                $info['mpeg']['audio']['frame_count']  = array_sum($Distribution['bitrate']);
    13381338                if ($info['mpeg']['audio']['frame_count'] == 0) {
    1339                         $info['error'][] = 'no MPEG audio frames found';
     1339                        $this->error('no MPEG audio frames found');
    13401340                        return false;
    13411341                }
     
    13721372                $sync_seek_buffer_size = min(128 * 1024, $info['avdataend'] - $avdataoffset);
    13731373                if ($sync_seek_buffer_size <= 0) {
    1374                         $info['error'][] = 'Invalid $sync_seek_buffer_size at offset '.$avdataoffset;
     1374                        $this->error('Invalid $sync_seek_buffer_size at offset '.$avdataoffset);
    13751375                        return false;
    13761376                }
     
    13831383                                if ($SynchSeekOffset > $sync_seek_buffer_size) {
    13841384                                        // if a synch's not found within the first 128k bytes, then give up
    1385                                         $info['error'][] = 'Could not find valid MPEG audio synch within the first '.round($sync_seek_buffer_size / 1024).'kB';
     1385                                        $this->error('Could not find valid MPEG audio synch within the first '.round($sync_seek_buffer_size / 1024).'kB');
    13861386                                        if (isset($info['audio']['bitrate'])) {
    13871387                                                unset($info['audio']['bitrate']);
     
    13971397                                } elseif (feof($this->getid3->fp)) {
    13981398
    1399                                         $info['error'][] = 'Could not find valid MPEG audio synch before end of file';
     1399                                        $this->error('Could not find valid MPEG audio synch before end of file');
    14001400                                        if (isset($info['audio']['bitrate'])) {
    14011401                                                unset($info['audio']['bitrate']);
     
    14121412
    14131413                        if (($SynchSeekOffset + 1) >= strlen($header)) {
    1414                                 $info['error'][] = 'Could not find valid MPEG synch before end of file';
     1414                                $this->error('Could not find valid MPEG synch before end of file');
    14151415                                return false;
    14161416                        }
     
    14551455                                                                $info = $dummy;
    14561456                                                                $info['avdataoffset'] = $GarbageOffsetEnd;
    1457                                                                 $info['warning'][] = 'apparently-valid VBR header not used because could not find '.GETID3_MP3_VALID_CHECK_FRAMES.' consecutive MPEG-audio frames immediately after VBR header (garbage data for '.($GarbageOffsetEnd - $GarbageOffsetStart).' bytes between '.$GarbageOffsetStart.' and '.$GarbageOffsetEnd.'), but did find valid CBR stream starting at '.$GarbageOffsetEnd;
     1457                                                                $this->warning('apparently-valid VBR header not used because could not find '.GETID3_MP3_VALID_CHECK_FRAMES.' consecutive MPEG-audio frames immediately after VBR header (garbage data for '.($GarbageOffsetEnd - $GarbageOffsetStart).' bytes between '.$GarbageOffsetStart.' and '.$GarbageOffsetEnd.'), but did find valid CBR stream starting at '.$GarbageOffsetEnd);
    14581458                                                        } else {
    1459                                                                 $info['warning'][] = 'using data from VBR header even though could not find '.GETID3_MP3_VALID_CHECK_FRAMES.' consecutive MPEG-audio frames immediately after VBR header (garbage data for '.($GarbageOffsetEnd - $GarbageOffsetStart).' bytes between '.$GarbageOffsetStart.' and '.$GarbageOffsetEnd.')';
     1459                                                                $this->warning('using data from VBR header even though could not find '.GETID3_MP3_VALID_CHECK_FRAMES.' consecutive MPEG-audio frames immediately after VBR header (garbage data for '.($GarbageOffsetEnd - $GarbageOffsetStart).' bytes between '.$GarbageOffsetStart.' and '.$GarbageOffsetEnd.')');
    14601460                                                        }
    14611461                                                }
     
    15501550                                                }
    15511551                                                if ($pct_data_scanned > 0) {
    1552                                                         $info['warning'][] = 'too many MPEG audio frames to scan, only scanned '.$frames_scanned.' frames in '.$max_scan_segments.' segments ('.number_format($pct_data_scanned * 100, 1).'% of file) and extrapolated distribution, playtime and bitrate may be incorrect.';
     1552                                                        $this->warning('too many MPEG audio frames to scan, only scanned '.$frames_scanned.' frames in '.$max_scan_segments.' segments ('.number_format($pct_data_scanned * 100, 1).'% of file) and extrapolated distribution, playtime and bitrate may be incorrect.');
    15531553                                                        foreach ($info['mpeg']['audio'] as $key1 => $value1) {
    15541554                                                                if (!preg_match('#_distribution$#i', $key1)) {
     
    15621562
    15631563                                                if ($SynchErrorsFound > 0) {
    1564                                                         $info['warning'][] = 'Found '.$SynchErrorsFound.' synch errors in histogram analysis';
     1564                                                        $this->warning('Found '.$SynchErrorsFound.' synch errors in histogram analysis');
    15651565                                                        //return false;
    15661566                                                }
     
    15751575                                                }
    15761576                                                if ($framecounter == 0) {
    1577                                                         $info['error'][] = 'Corrupt MP3 file: framecounter == zero';
     1577                                                        $this->error('Corrupt MP3 file: framecounter == zero');
    15781578                                                        return false;
    15791579                                                }
     
    16101610                                if (empty($info['mpeg']['audio'])) {
    16111611
    1612                                         $info['error'][] = 'could not find valid MPEG synch before end of file';
     1612                                        $this->error('could not find valid MPEG synch before end of file');
    16131613                                        if (isset($info['audio']['bitrate'])) {
    16141614                                                unset($info['audio']['bitrate']);
  • _core_/plugins/medias/lib/getid3/module.audio.mpc.php

    r96228 r106591  
    5151                } else {
    5252
    53                         $info['error'][] = 'Expecting "MP+" or "MPCK" at offset '.$info['avdataoffset'].', found "'.getid3_lib::PrintHexBytes(substr($MPCheaderData, 0, 4)).'"';
     53                        $this->error('Expecting "MP+" or "MPCK" at offset '.$info['avdataoffset'].', found "'.getid3_lib::PrintHexBytes(substr($MPCheaderData, 0, 4)).'"');
    5454                        unset($info['fileformat']);
    5555                        unset($info['mpc']);
     
    8484                        $thisPacket['key_name'] = $this->MPCsv8PacketName($thisPacket['key']);
    8585                        if ($thisPacket['key'] == $thisPacket['key_name']) {
    86                                 $info['error'][] = 'Found unexpected key value "'.$thisPacket['key'].'" at offset '.$thisPacket['offset'];
     86                                $this->error('Found unexpected key value "'.$thisPacket['key'].'" at offset '.$thisPacket['offset']);
    8787                                return false;
    8888                        }
     
    9090                        $thisPacket['packet_size'] = $this->SV8variableLengthInteger(substr($MPCheaderData, $keyNameSize), $packetLength); // includes keyname and packet_size field
    9191                        if ($thisPacket['packet_size'] === false) {
    92                                 $info['error'][] = 'Did not find expected packet length within '.$maxHandledPacketLength.' bytes at offset '.($thisPacket['offset'] + $keyNameSize);
     92                                $this->error('Did not find expected packet length within '.$maxHandledPacketLength.' bytes at offset '.($thisPacket['offset'] + $keyNameSize));
    9393                                return false;
    9494                        }
     
    196196
    197197                                default:
    198                                         $info['error'][] = 'Found unhandled key type "'.$thisPacket['key'].'" at offset '.$thisPacket['offset'];
     198                                        $this->error('Found unhandled key type "'.$thisPacket['key'].'" at offset '.$thisPacket['offset']);
    199199                                        return false;
    200200                                        break;
     
    230230
    231231                if ($thisfile_mpc_header['stream_version_major'] != 7) {
    232                         $info['error'][] = 'Only Musepack SV7 supported (this file claims to be v'.$thisfile_mpc_header['stream_version_major'].')';
     232                        $this->error('Only Musepack SV7 supported (this file claims to be v'.$thisfile_mpc_header['stream_version_major'].')');
    233233                        return false;
    234234                }
     
    269269                $thisfile_mpc_header['sample_rate'] = $this->MPCfrequencyLookup($thisfile_mpc_header['raw']['sample_rate']);
    270270                if ($thisfile_mpc_header['sample_rate'] == 0) {
    271                         $info['error'][] = 'Corrupt MPC file: frequency == zero';
     271                        $this->error('Corrupt MPC file: frequency == zero');
    272272                        return false;
    273273                }
     
    277277                $info['playtime_seconds']     = ($thisfile_mpc_header['samples'] / $info['audio']['channels']) / $info['audio']['sample_rate'];
    278278                if ($info['playtime_seconds'] == 0) {
    279                         $info['error'][] = 'Corrupt MPC file: playtime_seconds == zero';
     279                        $this->error('Corrupt MPC file: playtime_seconds == zero');
    280280                        return false;
    281281                }
     
    378378
    379379                if (($thisfile_mpc_header['stream_version_major'] > 4) && ($thisfile_mpc_header['block_size'] != 1)) {
    380                         $info['warning'][] = 'Block size expected to be 1, actual value found: '.$thisfile_mpc_header['block_size'];
     380                        $this->warning('Block size expected to be 1, actual value found: '.$thisfile_mpc_header['block_size']);
    381381                }
    382382
  • _core_/plugins/medias/lib/getid3/module.audio.ogg.php

    r96228 r106591  
    2727                // Warn about illegal tags - only vorbiscomments are allowed
    2828                if (isset($info['id3v2'])) {
    29                         $info['warning'][] = 'Illegal ID3v2 tag present.';
     29                        $this->warning('Illegal ID3v2 tag present.');
    3030                }
    3131                if (isset($info['id3v1'])) {
    32                         $info['warning'][] = 'Illegal ID3v1 tag present.';
     32                        $this->warning('Illegal ID3v1 tag present.');
    3333                }
    3434                if (isset($info['ape'])) {
    35                         $info['warning'][] = 'Illegal APE tag present.';
     35                        $this->warning('Illegal APE tag present.');
    3636                }
    3737
     
    4545
    4646                if ($this->ftell() >= $this->getid3->fread_buffer_size()) {
    47                         $info['error'][] = 'Could not find start of Ogg page in the first '.$this->getid3->fread_buffer_size().' bytes (this might not be an Ogg-Vorbis file?)';
     47                        $this->error('Could not find start of Ogg page in the first '.$this->getid3->fread_buffer_size().' bytes (this might not be an Ogg-Vorbis file?)');
    4848                        unset($info['fileformat']);
    4949                        unset($info['ogg']);
     
    180180                                $info['video']['pixel_aspect_ratio'] = (float) $info['ogg']['pageheader']['theora']['pixel_aspect_numerator'] / $info['ogg']['pageheader']['theora']['pixel_aspect_denominator'];
    181181                        }
    182 $info['warning'][] = 'Ogg Theora (v3) not fully supported in this version of getID3 ['.$this->getid3->version().'] -- bitrate, playtime and all audio data are currently unavailable';
     182$this->warning('Ogg Theora (v3) not fully supported in this version of getID3 ['.$this->getid3->version().'] -- bitrate, playtime and all audio data are currently unavailable');
    183183
    184184
     
    241241
    242242                                        $info['video']['dataformat'] = 'theora1';
    243                                         $info['error'][] = 'Ogg Theora (v1) not correctly handled in this version of getID3 ['.$this->getid3->version().']';
     243                                        $this->error('Ogg Theora (v1) not correctly handled in this version of getID3 ['.$this->getid3->version().']');
    244244                                        //break;
    245245
     
    249249
    250250                                } else {
    251                                         $info['error'][] = 'unexpected';
     251                                        $this->error('unexpected');
    252252                                        //break;
    253253                                }
     
    257257                        $this->fseek($oggpageinfo['page_start_offset']);
    258258
    259                         $info['error'][] = 'Ogg Skeleton not correctly handled in this version of getID3 ['.$this->getid3->version().']';
     259                        $this->error('Ogg Skeleton not correctly handled in this version of getID3 ['.$this->getid3->version().']');
    260260                        //return false;
    261261
    262262                } else {
    263263
    264                         $info['error'][] = 'Expecting either "Speex   ", "OpusHead" or "vorbis" identifier strings, found "'.substr($filedata, 0, 8).'"';
     264                        $this->error('Expecting either "Speex   ", "OpusHead" or "vorbis" identifier strings, found "'.substr($filedata, 0, 8).'"');
    265265                        unset($info['ogg']);
    266266                        unset($info['mime_type']);
     
    285285                                $flac = new getid3_flac($this->getid3);
    286286                                if (!$flac->parseMETAdata()) {
    287                                         $info['error'][] = 'Failed to parse FLAC headers';
     287                                        $this->error('Failed to parse FLAC headers');
    288288                                        return false;
    289289                                }
     
    300300                                $info['ogg']['pageheader'][$oggpageinfo['page_seqno']]['stream_type'] = substr($filedata, 0, 8); // hard-coded to 'OpusTags'
    301301                                if(substr($filedata, 0, 8)  != 'OpusTags') {
    302                                         $info['error'][] = 'Expected "OpusTags" as header but got "'.substr($filedata, 0, 8).'"';
     302                                        $this->error('Expected "OpusTags" as header but got "'.substr($filedata, 0, 8).'"');
    303303                                        return false;
    304304                                }
     
    312312                if (!getid3_lib::intValueSupported($info['avdataend'])) {
    313313
    314                         $info['warning'][] = 'Unable to parse Ogg end chunk file (PHP does not support file operations beyond '.round(PHP_INT_MAX / 1073741824).'GB)';
     314                        $this->warning('Unable to parse Ogg end chunk file (PHP does not support file operations beyond '.round(PHP_INT_MAX / 1073741824).'GB)');
    315315
    316316                } else {
     
    324324                                $info['ogg']['samples']   = $info['ogg']['pageheader']['eos']['pcm_abs_position'];
    325325                                if ($info['ogg']['samples'] == 0) {
    326                                         $info['error'][] = 'Corrupt Ogg file: eos.number of samples == zero';
     326                                        $this->error('Corrupt Ogg file: eos.number of samples == zero');
    327327                                        return false;
    328328                                }
     
    343343                if (isset($info['audio']['bitrate']) && !isset($info['playtime_seconds'])) {
    344344                        if ($info['audio']['bitrate'] == 0) {
    345                                 $info['error'][] = 'Corrupt Ogg file: bitrate_audio == zero';
     345                                $this->error('Corrupt Ogg file: bitrate_audio == zero');
    346346                                return false;
    347347                        }
     
    396396                $filedataoffset += 4;
    397397                if ($info['ogg']['samplerate'] == 0) {
    398                         $info['error'][] = 'Corrupt Ogg file: sample rate == zero';
     398                        $this->error('Corrupt Ogg file: sample rate == zero');
    399399                        return false;
    400400                }
     
    444444
    445445                if ($info['ogg']['pageheader']['opus']['version'] < 1 || $info['ogg']['pageheader']['opus']['version'] > 15) {
    446                         $info['error'][] = 'Unknown opus version number (only accepting 1-15)';
     446                        $this->error('Unknown opus version number (only accepting 1-15)');
    447447                        return false;
    448448                }
     
    452452
    453453                if ($info['ogg']['pageheader']['opus']['out_channel_count'] == 0) {
    454                         $info['error'][] = 'Invalid channel count in opus header (must not be zero)';
     454                        $this->error('Invalid channel count in opus header (must not be zero)');
    455455                        return false;
    456456                }
     
    582582                        if ($i >= 10000) {
    583583                                // https://github.com/owncloud/music/issues/212#issuecomment-43082336
    584                                 $info['warning'][] = 'Unexpectedly large number ('.$CommentsCount.') of Ogg comments - breaking after reading '.$i.' comments';
     584                                $this->warning('Unexpectedly large number ('.$CommentsCount.') of Ogg comments - breaking after reading '.$i.' comments');
    585585                                break;
    586586                        }
     
    620620                        while ((strlen($commentdata) - $commentdataoffset) < $ThisFileInfo_ogg_comments_raw[$i]['size']) {
    621621                                if (($ThisFileInfo_ogg_comments_raw[$i]['size'] > $info['avdataend']) || ($ThisFileInfo_ogg_comments_raw[$i]['size'] < 0)) {
    622                                         $info['warning'][] = 'Invalid Ogg comment size (comment #'.$i.', claims to be '.number_format($ThisFileInfo_ogg_comments_raw[$i]['size']).' bytes) - aborting reading comments';
     622                                        $this->warning('Invalid Ogg comment size (comment #'.$i.', claims to be '.number_format($ThisFileInfo_ogg_comments_raw[$i]['size']).' bytes) - aborting reading comments');
    623623                                        break 2;
    624624                                }
     
    644644                                //$commentdata .= $this->fread($info['ogg']['pageheader'][$oggpageinfo['page_seqno']]['page_length']);
    645645                                if (!isset($info['ogg']['pageheader'][$VorbisCommentPage])) {
    646                                         $info['warning'][] = 'undefined Vorbis Comment page "'.$VorbisCommentPage.'" at offset '.$this->ftell();
     646                                        $this->warning('undefined Vorbis Comment page "'.$VorbisCommentPage.'" at offset '.$this->ftell());
    647647                                        break;
    648648                                }
    649649                                $readlength = self::OggPageSegmentLength($info['ogg']['pageheader'][$VorbisCommentPage], 1);
    650650                                if ($readlength <= 0) {
    651                                         $info['warning'][] = 'invalid length Vorbis Comment page "'.$VorbisCommentPage.'" at offset '.$this->ftell();
     651                                        $this->warning('invalid length Vorbis Comment page "'.$VorbisCommentPage.'" at offset '.$this->ftell());
    652652                                        break;
    653653                                }
     
    663663
    664664                                // no comment?
    665                                 $info['warning'][] = 'Blank Ogg comment ['.$i.']';
     665                                $this->warning('Blank Ogg comment ['.$i.']');
    666666
    667667                        } elseif (strstr($commentstring, '=')) {
     
    713713                        } else {
    714714
    715                                 $info['warning'][] = '[known problem with CDex >= v1.40, < v1.50b7] Invalid Ogg comment name/value pair ['.$i.']: '.$commentstring;
     715                                $this->warning('[known problem with CDex >= v1.40, < v1.50b7] Invalid Ogg comment name/value pair ['.$i.']: '.$commentstring);
    716716
    717717                        }
  • _core_/plugins/medias/lib/getid3/module.audio.optimfrog.php

    r85814 r106591  
    4040                }
    4141
    42                 $info['error'][] = 'Expecting "*RIFF" or "OFR " at offset '.$info['avdataoffset'].', found "'.getid3_lib::PrintHexBytes($OFRheader).'"';
     42                $this->error('Expecting "*RIFF" or "OFR " at offset '.$info['avdataoffset'].', found "'.getid3_lib::PrintHexBytes($OFRheader).'"');
    4343                unset($info['fileformat']);
    4444                return false;
     
    129129
    130130                                                default:
    131                                                         $info['warning'][] = '"'.$BlockName.'" contains more data than expected (expected 12 or 15 bytes, found '.$BlockSize.' bytes)';
     131                                                        $this->warning('"'.$BlockName.'" contains more data than expected (expected 12 or 15 bytes, found '.$BlockSize.' bytes)');
    132132                                                        break;
    133133                                        }
     
    253253                                        $thisfile_ofr_thisblock['offset'] = $BlockOffset;
    254254                                        $thisfile_ofr_thisblock['size']   = $BlockSize;
    255                                         $info['warning'][] = 'APEtag processing inside OptimFROG not supported in this version ('.$this->getid3->version().') of getID3()';
     255                                        $this->warning('APEtag processing inside OptimFROG not supported in this version ('.$this->getid3->version().') of getID3()');
    256256
    257257                                        $this->fseek($BlockSize, SEEK_CUR);
     
    273273                                        } else {
    274274
    275                                                 $info['warning'][] = 'Expecting block size of 16 in "MD5 " chunk, found '.$BlockSize.' instead';
     275                                                $this->warning('Expecting block size of 16 in "MD5 " chunk, found '.$BlockSize.' instead');
    276276                                                $this->fseek($BlockSize, SEEK_CUR);
    277277
     
    284284                                        $thisfile_ofr_thisblock['size']   = $BlockSize;
    285285
    286                                         $info['warning'][] = 'Unhandled OptimFROG block type "'.$BlockName.'" at offset '.$thisfile_ofr_thisblock['offset'];
     286                                        $this->warning('Unhandled OptimFROG block type "'.$BlockName.'" at offset '.$thisfile_ofr_thisblock['offset']);
    287287                                        $this->fseek($BlockSize, SEEK_CUR);
    288288                                        break;
  • _core_/plugins/medias/lib/getid3/module.audio.rkau.php

    r85814 r106591  
    2626                $magic = 'RKA';
    2727                if (substr($RKAUHeader, 0, 3) != $magic) {
    28                         $info['error'][] = 'Expecting "'.getid3_lib::PrintHexBytes($magic).'" at offset '.$info['avdataoffset'].', found "'.getid3_lib::PrintHexBytes(substr($RKAUHeader, 0, 3)).'"';
     28                        $this->error('Expecting "'.getid3_lib::PrintHexBytes($magic).'" at offset '.$info['avdataoffset'].', found "'.getid3_lib::PrintHexBytes(substr($RKAUHeader, 0, 3)).'"');
    2929                        return false;
    3030                }
     
    3737                $info['rkau']['version']          = '1.'.str_pad($info['rkau']['raw']['version'] & 0x0F, 2, '0', STR_PAD_LEFT);
    3838                if (($info['rkau']['version'] > 1.07) || ($info['rkau']['version'] < 1.06)) {
    39                         $info['error'][] = 'This version of getID3() ['.$this->getid3->version().'] can only parse RKAU files v1.06 and 1.07 (this file is v'.$info['rkau']['version'].')';
     39                        $this->error('This version of getID3() ['.$this->getid3->version().'] can only parse RKAU files v1.06 and 1.07 (this file is v'.$info['rkau']['version'].')');
    4040                        unset($info['rkau']);
    4141                        return false;
  • _core_/plugins/medias/lib/getid3/module.audio.shorten.php

    r85814 r106591  
    2727                $magic = 'ajkg';
    2828                if (substr($ShortenHeader, 0, 4) != $magic) {
    29                         $info['error'][] = 'Expecting "'.getid3_lib::PrintHexBytes($magic).'" at offset '.$info['avdataoffset'].', found "'.getid3_lib::PrintHexBytes(substr($ShortenHeader, 0, 4)).'"';
     29                        $this->error('Expecting "'.getid3_lib::PrintHexBytes($magic).'" at offset '.$info['avdataoffset'].', found "'.getid3_lib::PrintHexBytes(substr($ShortenHeader, 0, 4)).'"');
    3030                        return false;
    3131                }
     
    4848                        if ($SeekTableMagic != $magic) {
    4949
    50                                 $info['error'][] = 'Expecting "'.getid3_lib::PrintHexBytes($magic).'" at offset '.$info['shn']['seektable']['offset'].', found "'.getid3_lib::PrintHexBytes($SeekTableMagic).'"';
     50                                $this->error('Expecting "'.getid3_lib::PrintHexBytes($magic).'" at offset '.$info['shn']['seektable']['offset'].', found "'.getid3_lib::PrintHexBytes($SeekTableMagic).'"');
    5151                                return false;
    5252
     
    115115
    116116                if (preg_match('#(1|ON)#i', ini_get('safe_mode'))) {
    117                         $info['error'][] = 'PHP running in Safe Mode - backtick operator not available, cannot run shntool to analyze Shorten files';
     117                        $this->error('PHP running in Safe Mode - backtick operator not available, cannot run shntool to analyze Shorten files');
    118118                        return false;
    119119                }
     
    124124                        foreach ($RequiredFiles as $required_file) {
    125125                                if (!is_readable(GETID3_HELPERAPPSDIR.$required_file)) {
    126                                         $info['error'][] = GETID3_HELPERAPPSDIR.$required_file.' does not exist';
     126                                        $this->error(GETID3_HELPERAPPSDIR.$required_file.' does not exist');
    127127                                        return false;
    128128                                }
     
    138138                        }
    139139                        if (!$shorten_present) {
    140                                 $info['error'][] = 'shorten binary was not found in path or /usr/local/bin';
     140                                $this->error('shorten binary was not found in path or /usr/local/bin');
    141141                                return false;
    142142                        }
     
    163163                        } else {
    164164
    165                                 $info['error'][] = 'shorten failed to decode DATA chunk to expected location, cannot determine playtime';
     165                                $this->error('shorten failed to decode DATA chunk to expected location, cannot determine playtime');
    166166                                return false;
    167167
     
    172172                } else {
    173173
    174                         $info['error'][] = 'shorten failed to decode file to WAV for parsing';
     174                        $this->error('shorten failed to decode file to WAV for parsing');
    175175                        return false;
    176176
  • _core_/plugins/medias/lib/getid3/module.audio.tta.php

    r85814 r106591  
    3333                $magic = 'TTA';
    3434                if ($info['tta']['magic'] != $magic) {
    35                         $info['error'][] = 'Expecting "'.getid3_lib::PrintHexBytes($magic).'" at offset '.$info['avdataoffset'].', found "'.getid3_lib::PrintHexBytes($info['tta']['magic']).'"';
     35                        $this->error('Expecting "'.getid3_lib::PrintHexBytes($magic).'" at offset '.$info['avdataoffset'].', found "'.getid3_lib::PrintHexBytes($info['tta']['magic']).'"');
    3636                        unset($info['fileformat']);
    3737                        unset($info['audio']);
     
    9191
    9292                        default:
    93                                 $info['error'][] = 'This version of getID3() ['.$this->getid3->version().'] only knows how to handle TTA v1 and v2 - it may not work correctly with this file which appears to be TTA v'.$ttaheader{3};
     93                                $this->error('This version of getID3() ['.$this->getid3->version().'] only knows how to handle TTA v1 and v2 - it may not work correctly with this file which appears to be TTA v'.$ttaheader{3});
    9494                                return false;
    9595                                break;
  • _core_/plugins/medias/lib/getid3/module.audio.voc.php

    r85814 r106591  
    2828                $magic = 'Creative Voice File';
    2929                if (substr($VOCheader, 0, 19) != $magic) {
    30                         $info['error'][] = 'Expecting "'.getid3_lib::PrintHexBytes($magic).'" at offset '.$info['avdataoffset'].', found "'.getid3_lib::PrintHexBytes(substr($VOCheader, 0, 19)).'"';
     30                        $this->error('Expecting "'.getid3_lib::PrintHexBytes($magic).'" at offset '.$info['avdataoffset'].', found "'.getid3_lib::PrintHexBytes(substr($VOCheader, 0, 19)).'"');
    3131                        return false;
    3232                }
     
    138138
    139139                                default:
    140                                         $info['warning'][] = 'Unhandled block type "'.$BlockType.'" at offset '.$BlockOffset;
     140                                        $this->warning('Unhandled block type "'.$BlockType.'" at offset '.$BlockOffset);
    141141                                        $this->fseek($BlockSize, SEEK_CUR);
    142142                                        break;
  • _core_/plugins/medias/lib/getid3/module.audio.vqf.php

    r85814 r106591  
    4141                $magic = 'TWIN';
    4242                if ($thisfile_vqf_raw['header_tag'] != $magic) {
    43                         $info['error'][] = 'Expecting "'.getid3_lib::PrintHexBytes($magic).'" at offset '.$info['avdataoffset'].', found "'.getid3_lib::PrintHexBytes($thisfile_vqf_raw['header_tag']).'"';
     43                        $this->error('Expecting "'.getid3_lib::PrintHexBytes($magic).'" at offset '.$info['avdataoffset'].', found "'.getid3_lib::PrintHexBytes($thisfile_vqf_raw['header_tag']).'"');
    4444                        unset($info['vqf']);
    4545                        unset($info['fileformat']);
     
    6666                        $chunkoffset += 4;
    6767                        if ($ChunkSize > ($info['avdataend'] - $this->ftell())) {
    68                                 $info['error'][] = 'Invalid chunk size ('.$ChunkSize.') for chunk "'.$ChunkName.'" at offset '.$ChunkBaseOffset;
     68                                $this->error('Invalid chunk size ('.$ChunkSize.') for chunk "'.$ChunkName.'" at offset '.$ChunkBaseOffset);
    6969                                break;
    7070                        }
     
    9494
    9595                                        if ($info['audio']['bitrate'] == 0) {
    96                                                 $info['error'][] = 'Corrupt VQF file: bitrate_audio == zero';
     96                                                $this->error('Corrupt VQF file: bitrate_audio == zero');
    9797                                                return false;
    9898                                        }
     
    113113
    114114                                default:
    115                                         $info['warning'][] = 'Unhandled chunk type "'.$ChunkName.'" at offset '.$ChunkBaseOffset;
     115                                        $this->warning('Unhandled chunk type "'.$ChunkName.'" at offset '.$ChunkBaseOffset);
    116116                                        break;
    117117                        }
     
    124124                                case 0:
    125125                                case 1:
    126                                         $info['warning'][] = 'Invalid DSIZ value "'.$thisfile_vqf['DSIZ'].'". This is known to happen with VQF files encoded by Ahead Nero, and seems to be its way of saying this is TwinVQF v'.($thisfile_vqf['DSIZ'] + 1).'.0';
     126                                        $this->warning('Invalid DSIZ value "'.$thisfile_vqf['DSIZ'].'". This is known to happen with VQF files encoded by Ahead Nero, and seems to be its way of saying this is TwinVQF v'.($thisfile_vqf['DSIZ'] + 1).'.0');
    127127                                        $info['audio']['encoder'] = 'Ahead Nero';
    128128                                        break;
    129129
    130130                                default:
    131                                         $info['warning'][] = 'Probable corrupted file - should be '.$thisfile_vqf['DSIZ'].' bytes, actually '.($info['avdataend'] - $info['avdataoffset'] - strlen('DATA'));
     131                                        $this->warning('Probable corrupted file - should be '.$thisfile_vqf['DSIZ'].' bytes, actually '.($info['avdataend'] - $info['avdataoffset'] - strlen('DATA')));
    132132                                        break;
    133133                        }
  • _core_/plugins/medias/lib/getid3/module.audio.wavpack.php

    r85814 r106591  
    4848                        $magic = 'wvpk';
    4949                        if ($blockheader_magic != $magic) {
    50                                 $info['error'][] = 'Expecting "'.getid3_lib::PrintHexBytes($magic).'" at offset '.$blockheader_offset.', found "'.getid3_lib::PrintHexBytes($blockheader_magic).'"';
     50                                $this->error('Expecting "'.getid3_lib::PrintHexBytes($magic).'" at offset '.$blockheader_offset.', found "'.getid3_lib::PrintHexBytes($blockheader_magic).'"');
    5151                                switch (isset($info['audio']['dataformat']) ? $info['audio']['dataformat'] : '') {
    5252                                        case 'wavpack':
     
    8787
    8888                                if ($info['wavpack']['blockheader']['size'] >= 0x100000) {
    89                                         $info['error'][] = 'Expecting WavPack block size less than "0x100000", found "'.$info['wavpack']['blockheader']['size'].'" at offset '.$info['wavpack']['blockheader']['offset'];
     89                                        $this->error('Expecting WavPack block size less than "0x100000", found "'.$info['wavpack']['blockheader']['size'].'" at offset '.$info['wavpack']['blockheader']['offset']);
    9090                                        switch (isset($info['audio']['dataformat']) ? $info['audio']['dataformat'] : '') {
    9191                                                case 'wavpack':
     
    107107                                        (($info['wavpack']['blockheader']['minor_version'] < 4) &&
    108108                                        ($info['wavpack']['blockheader']['minor_version'] > 16))) {
    109                                                 $info['error'][] = 'Expecting WavPack version between "4.2" and "4.16", found version "'.$info['wavpack']['blockheader']['major_version'].'.'.$info['wavpack']['blockheader']['minor_version'].'" at offset '.$info['wavpack']['blockheader']['offset'];
     109                                                $this->error('Expecting WavPack version between "4.2" and "4.16", found version "'.$info['wavpack']['blockheader']['major_version'].'.'.$info['wavpack']['blockheader']['minor_version'].'" at offset '.$info['wavpack']['blockheader']['offset']);
    110110                                                switch (isset($info['audio']['dataformat']) ? $info['audio']['dataformat'] : '') {
    111111                                                        case 'wavpack':
     
    209209
    210210                                                default:
    211                                                         $info['warning'][] = 'Unexpected metablock type "0x'.str_pad(dechex($metablock['function_id']), 2, '0', STR_PAD_LEFT).'" at offset '.$metablock['offset'];
     211                                                        $this->warning('Unexpected metablock type "0x'.str_pad(dechex($metablock['function_id']), 2, '0', STR_PAD_LEFT).'" at offset '.$metablock['offset']);
    212212                                                        $this->fseek($metablock['offset'] + ($metablock['large_block'] ? 4 : 2) + $metablock['size']);
    213213                                                        break;
     
    257257
    258258                                                case 0x23: // ID_REPLAY_GAIN
    259                                                         $info['warning'][] = 'WavPack "Replay Gain" contents not yet handled by getID3() in metablock at offset '.$metablock['offset'];
     259                                                        $this->warning('WavPack "Replay Gain" contents not yet handled by getID3() in metablock at offset '.$metablock['offset']);
    260260                                                        break;
    261261
    262262
    263263                                                case 0x24: // ID_CUESHEET
    264                                                         $info['warning'][] = 'WavPack "Cuesheet" contents not yet handled by getID3() in metablock at offset '.$metablock['offset'];
     264                                                        $this->warning('WavPack "Cuesheet" contents not yet handled by getID3() in metablock at offset '.$metablock['offset']);
    265265                                                        break;
    266266
     
    320320                                                                $info['md5_data_source'] = strtolower(getid3_lib::PrintHexBytes($metablock['data'], true, false, false));
    321321                                                        } else {
    322                                                                 $info['warning'][] = 'Expecting 16 bytes of WavPack "MD5 Checksum" in metablock at offset '.$metablock['offset'].', but found '.strlen($metablock['data']).' bytes';
     322                                                                $this->warning('Expecting 16 bytes of WavPack "MD5 Checksum" in metablock at offset '.$metablock['offset'].', but found '.strlen($metablock['data']).' bytes');
    323323                                                        }
    324324                                                        break;
  • _core_/plugins/medias/lib/getid3/module.graphic.bmp.php

    r85814 r106591  
    4747                $magic = 'BM';
    4848                if ($thisfile_bmp_header_raw['identifier'] != $magic) {
    49                         $info['error'][] = 'Expecting "'.getid3_lib::PrintHexBytes($magic).'" at offset '.$info['avdataoffset'].', found "'.getid3_lib::PrintHexBytes($thisfile_bmp_header_raw['identifier']).'"';
     49                        $this->error('Expecting "'.getid3_lib::PrintHexBytes($magic).'" at offset '.$info['avdataoffset'].', found "'.getid3_lib::PrintHexBytes($thisfile_bmp_header_raw['identifier']).'"');
    5050                        unset($info['fileformat']);
    5151                        unset($info['bmp']);
     
    8787                        $thisfile_bmp['type_version'] = 5;
    8888                } else {
    89                         $info['error'][] = 'Unknown BMP subtype (or not a BMP file)';
     89                        $this->error('Unknown BMP subtype (or not a BMP file)');
    9090                        unset($info['fileformat']);
    9191                        unset($info['bmp']);
     
    284284                } else {
    285285
    286                         $info['error'][] = 'Unknown BMP format in header.';
     286                        $this->error('Unknown BMP format in header.');
    287287                        return false;
    288288
     
    407407
    408408                                                default:
    409                                                         $info['error'][] = 'Unknown bits-per-pixel value ('.$thisfile_bmp_header_raw['bits_per_pixel'].') - cannot read pixel data';
     409                                                        $this->error('Unknown bits-per-pixel value ('.$thisfile_bmp_header_raw['bits_per_pixel'].') - cannot read pixel data');
    410410                                                        break;
    411411                                        }
     
    482482
    483483                                                default:
    484                                                         $info['error'][] = 'Unknown bits-per-pixel value ('.$thisfile_bmp_header_raw['bits_per_pixel'].') - cannot read pixel data';
     484                                                        $this->error('Unknown bits-per-pixel value ('.$thisfile_bmp_header_raw['bits_per_pixel'].') - cannot read pixel data');
    485485                                                        break;
    486486                                        }
     
    571571
    572572                                                default:
    573                                                         $info['error'][] = 'Unknown bits-per-pixel value ('.$thisfile_bmp_header_raw['bits_per_pixel'].') - cannot read pixel data';
     573                                                        $this->error('Unknown bits-per-pixel value ('.$thisfile_bmp_header_raw['bits_per_pixel'].') - cannot read pixel data');
    574574                                                        break;
    575575                                        }
     
    611611
    612612                                                default:
    613                                                         $info['error'][] = 'Unknown bits-per-pixel value ('.$thisfile_bmp_header_raw['bits_per_pixel'].') - cannot read pixel data';
     613                                                        $this->error('Unknown bits-per-pixel value ('.$thisfile_bmp_header_raw['bits_per_pixel'].') - cannot read pixel data');
    614614                                                        break;
    615615                                        }
     
    618618
    619619                                default: // unhandled compression type
    620                                         $info['error'][] = 'Unknown/unhandled compression type value ('.$thisfile_bmp_header_raw['compression'].') - cannot decompress pixel data';
     620                                        $this->error('Unknown/unhandled compression type value ('.$thisfile_bmp_header_raw['compression'].') - cannot decompress pixel data');
    621621                                        break;
    622622                        }
  • _core_/plugins/medias/lib/getid3/module.graphic.efax.php

    r85814 r106591  
    2727                $info['efax']['header']['magic'] = substr($efaxheader, 0, 2);
    2828                if ($info['efax']['header']['magic'] != "\xDC\xFE") {
    29                         $info['error'][] = 'Invalid eFax byte order identifier (expecting DC FE, found '.getid3_lib::PrintHexBytes($info['efax']['header']['magic']).') at offset '.$info['avdataoffset'];
     29                        $this->error('Invalid eFax byte order identifier (expecting DC FE, found '.getid3_lib::PrintHexBytes($info['efax']['header']['magic']).') at offset '.$info['avdataoffset']);
    3030                        return false;
    3131                }
     
    3434                $info['efax']['header']['filesize'] = getid3_lib::LittleEndian2Int(substr($efaxheader, 2, 4));
    3535                if ($info['efax']['header']['filesize'] != $info['filesize']) {
    36                         $info['error'][] = 'Probable '.(($info['efax']['header']['filesize'] > $info['filesize']) ? 'truncated' : 'corrupt').' file, expecting '.$info['efax']['header']['filesize'].' bytes, found '.$info['filesize'].' bytes';
     36                        $this->error('Probable '.(($info['efax']['header']['filesize'] > $info['filesize']) ? 'truncated' : 'corrupt').' file, expecting '.$info['efax']['header']['filesize'].' bytes, found '.$info['filesize'].' bytes');
    3737                }
    3838                $info['efax']['header']['software1'] =                        rtrim(substr($efaxheader,  26, 32), "\x00");
     
    4343                $info['efax']['header']['data_bytes'] = getid3_lib::LittleEndian2Int(substr($efaxheader, 202, 4));
    4444
    45 $info['error'][] = 'eFax parsing not enabled in this version of getID3() ['.$this->getid3->version().']';
     45$this->error('eFax parsing not enabled in this version of getID3() ['.$this->getid3->version().']');
    4646return false;
    4747
  • _core_/plugins/medias/lib/getid3/module.graphic.gif.php

    r85814 r106591  
    3636                $magic = 'GIF';
    3737                if ($info['gif']['header']['raw']['identifier'] != $magic) {
    38                         $info['error'][] = 'Expecting "'.getid3_lib::PrintHexBytes($magic).'" at offset '.$info['avdataoffset'].', found "'.getid3_lib::PrintHexBytes($info['gif']['header']['raw']['identifier']).'"';
     38                        $this->error('Expecting "'.getid3_lib::PrintHexBytes($magic).'" at offset '.$info['avdataoffset'].', found "'.getid3_lib::PrintHexBytes($info['gif']['header']['raw']['identifier']).'"');
    3939                        unset($info['fileformat']);
    4040                        unset($info['gif']);
     
    110110//                                      if ($ImageDescriptor['flags']['use_local_color_map']) {
    111111//
    112 //                                              $info['warning'][] = 'This version of getID3() cannot parse local color maps for GIFs';
     112//                                              $this->warning('This version of getID3() cannot parse local color maps for GIFs');
    113113//                                              return true;
    114114//
  • _core_/plugins/medias/lib/getid3/module.graphic.jpg.php

    r101151 r106591  
    6767                                        if (function_exists('exif_read_data')) {
    6868                                                if (substr($imageinfo['APP1'], 0, 4) == 'Exif') {
    69 //$info['warning'][] = 'known issue: https://bugs.php.net/bug.php?id=62523';
     69//$this->warning('known issue: https://bugs.php.net/bug.php?id=62523');
    7070//return false;
    7171                                                        set_error_handler(function($errno, $errstr, $errfile, $errline, array $errcontext) {
     
    8282                                                        restore_error_handler();
    8383                                                } else {
    84                                                         $info['warning'][] = 'exif_read_data() cannot parse non-EXIF data in APP1 (expected "Exif", found "'.substr($imageinfo['APP1'], 0, 4).'")';
     84                                                        $this->warning('exif_read_data() cannot parse non-EXIF data in APP1 (expected "Exif", found "'.substr($imageinfo['APP1'], 0, 4).'")');
    8585                                                }
    8686                                        } else {
    87                                                 $info['warning'][] = 'EXIF parsing only available when '.(GETID3_OS_ISWINDOWS ? 'php_exif.dll enabled' : 'compiled with --enable-exif');
     87                                                $this->warning('EXIF parsing only available when '.(GETID3_OS_ISWINDOWS ? 'php_exif.dll enabled' : 'compiled with --enable-exif'));
    8888                                        }
    8989                                }
     
    165165                                        $info['xmp'][$subsection][$tagname] = $this->CastAsAppropriate($value);
    166166                                } else {
    167                                         $info['warning'][] = 'XMP: expecting "<subsection>:<tagname>", found "'.$key.'"';
     167                                        $this->warning('XMP: expecting "<subsection>:<tagname>", found "'.$key.'"');
    168168                                }
    169169                        }
  • _core_/plugins/medias/lib/getid3/module.graphic.pcd.php

    r85814 r106591  
    4545                if ($this->ExtractData > 3) {
    4646
    47                         $info['error'][] = 'Cannot extract PSD image data for detail levels above BASE (level-3) because encrypted with Kodak-proprietary compression/encryption.';
     47                        $this->error('Cannot extract PSD image data for detail levels above BASE (level-3) because encrypted with Kodak-proprietary compression/encryption.');
    4848
    4949                } elseif ($this->ExtractData > 0) {
  • _core_/plugins/medias/lib/getid3/module.graphic.png.php

    r96228 r106591  
    4040
    4141                if ($PNGidentifier != "\x89\x50\x4E\x47\x0D\x0A\x1A\x0A") {
    42                         $info['error'][] = 'First 8 bytes of file ('.getid3_lib::PrintHexBytes($PNGidentifier).') did not match expected PNG identifier';
     42                        $this->error('First 8 bytes of file ('.getid3_lib::PrintHexBytes($PNGidentifier).') did not match expected PNG identifier');
    4343                        unset($info['fileformat']);
    4444                        return false;
     
    4848                        $chunk['data_length'] = getid3_lib::BigEndian2Int(substr($PNGfiledata, $offset, 4));
    4949                        if ($chunk['data_length'] === false) {
    50                                 $info['error'][] = 'Failed to read data_length at offset '.$offset;
     50                                $this->error('Failed to read data_length at offset '.$offset);
    5151                                return false;
    5252                        }
     
    5757                                        $PNGfiledata .= $this->fread($this->getid3->fread_buffer_size());
    5858                                } else {
    59                                         $info['warning'][] = 'At offset '.$offset.' chunk "'.substr($PNGfiledata, $offset, 4).'" exceeded max_data_bytes value of '.$this->max_data_bytes.', data chunk will be truncated at '.(strlen($PNGfiledata) - 8).' bytes';
     59                                        $this->warning('At offset '.$offset.' chunk "'.substr($PNGfiledata, $offset, 4).'" exceeded max_data_bytes value of '.$this->max_data_bytes.', data chunk will be truncated at '.(strlen($PNGfiledata) - 8).' bytes');
    6060                                        break;
    6161                                }
     
    138138                                                case 4:
    139139                                                case 6:
    140                                                         $info['error'][] = 'Invalid color_type in tRNS chunk: '.$thisfile_png['IHDR']['raw']['color_type'];
     140                                                        $this->error('Invalid color_type in tRNS chunk: '.$thisfile_png['IHDR']['raw']['color_type']);
    141141
    142142                                                default:
    143                                                         $info['warning'][] = 'Unhandled color_type in tRNS chunk: '.$thisfile_png['IHDR']['raw']['color_type'];
     143                                                        $this->warning('Unhandled color_type in tRNS chunk: '.$thisfile_png['IHDR']['raw']['color_type']);
    144144                                                        break;
    145145                                        }
     
    444444                                        //unset($chunk['data']);
    445445                                        $thisfile_png_chunk_type_text['header'] = $chunk;
    446                                         $info['warning'][] = 'Unhandled chunk type: '.$chunk['type_text'];
     446                                        $this->warning('Unhandled chunk type: '.$chunk['type_text']);
    447447                                        break;
    448448                        }
  • _core_/plugins/medias/lib/getid3/module.graphic.svg.php

    r85814 r106591  
    9696                        return true;
    9797                }
    98                 $info['error'][] = 'Did not find expected <svg> tag';
     98                $this->error('Did not find expected <svg> tag');
    9999                return false;
    100100        }
  • _core_/plugins/medias/lib/getid3/module.graphic.tiff.php

    r85814 r106591  
    3333                                break;
    3434                        default:
    35                                 $info['error'][] = 'Invalid TIFF byte order identifier ('.substr($TIFFheader, 0, 2).') at offset '.$info['avdataoffset'];
     35                                $this->error('Invalid TIFF byte order identifier ('.substr($TIFFheader, 0, 2).') at offset '.$info['avdataoffset']);
    3636                                return false;
    3737                                break;
  • _core_/plugins/medias/lib/getid3/module.misc.exe.php

    r85814 r106591  
    2727                $magic = 'MZ';
    2828                if (substr($EXEheader, 0, 2) != $magic) {
    29                         $info['error'][] = 'Expecting "'.getid3_lib::PrintHexBytes($magic).'" at offset '.$info['avdataoffset'].', found "'.getid3_lib::PrintHexBytes(substr($EXEheader, 0, 2)).'"';
     29                        $this->error('Expecting "'.getid3_lib::PrintHexBytes($magic).'" at offset '.$info['avdataoffset'].', found "'.getid3_lib::PrintHexBytes(substr($EXEheader, 0, 2)).'"');
    3030                        return false;
    3131                }
     
    5252                $info['exe']['mz']['memory_recommended'] = $info['exe']['mz']['raw']['max_memory_paragraphs'] * 16;
    5353
    54 $info['error'][] = 'EXE parsing not enabled in this version of getID3() ['.$this->getid3->version().']';
     54$this->error('EXE parsing not enabled in this version of getID3() ['.$this->getid3->version().']');
    5555return false;
    5656
  • _core_/plugins/medias/lib/getid3/module.misc.iso.php

    r85814 r106591  
    7070                $thisfile_iso_primaryVD_raw['standard_identifier']            =                  substr($ISOheader,    1, 5);
    7171                if ($thisfile_iso_primaryVD_raw['standard_identifier'] != 'CD001') {
    72                         $info['error'][] = 'Expected "CD001" at offset ('.($thisfile_iso_primaryVD['offset'] + 1).'), found "'.$thisfile_iso_primaryVD_raw['standard_identifier'].'" instead';
     72                        $this->error('Expected "CD001" at offset ('.($thisfile_iso_primaryVD['offset'] + 1).'), found "'.$thisfile_iso_primaryVD_raw['standard_identifier'].'" instead');
    7373                        unset($info['fileformat']);
    7474                        unset($info['iso']);
     
    124124
    125125                if (($thisfile_iso_primaryVD_raw['volume_space_size'] * 2048) > $info['filesize']) {
    126                         $info['error'][] = 'Volume Space Size ('.($thisfile_iso_primaryVD_raw['volume_space_size'] * 2048).' bytes) is larger than the file size ('.$info['filesize'].' bytes) (truncated file?)';
     126                        $this->error('Volume Space Size ('.($thisfile_iso_primaryVD_raw['volume_space_size'] * 2048).' bytes) is larger than the file size ('.$info['filesize'].' bytes) (truncated file?)');
    127127                }
    128128
     
    144144                $thisfile_iso_supplementaryVD_raw['standard_identifier']    =                  substr($ISOheader,    1, 5);
    145145                if ($thisfile_iso_supplementaryVD_raw['standard_identifier'] != 'CD001') {
    146                         $info['error'][] = 'Expected "CD001" at offset ('.($thisfile_iso_supplementaryVD['offset'] + 1).'), found "'.$thisfile_iso_supplementaryVD_raw['standard_identifier'].'" instead';
     146                        $this->error('Expected "CD001" at offset ('.($thisfile_iso_supplementaryVD['offset'] + 1).'), found "'.$thisfile_iso_supplementaryVD_raw['standard_identifier'].'" instead');
    147147                        unset($info['fileformat']);
    148148                        unset($info['iso']);
     
    203203
    204204                if (($thisfile_iso_supplementaryVD_raw['volume_space_size'] * $thisfile_iso_supplementaryVD_raw['logical_block_size']) > $info['filesize']) {
    205                         $info['error'][] = 'Volume Space Size ('.($thisfile_iso_supplementaryVD_raw['volume_space_size'] * $thisfile_iso_supplementaryVD_raw['logical_block_size']).' bytes) is larger than the file size ('.$info['filesize'].' bytes) (truncated file?)';
     205                        $this->error('Volume Space Size ('.($thisfile_iso_supplementaryVD_raw['volume_space_size'] * $thisfile_iso_supplementaryVD_raw['logical_block_size']).' bytes) is larger than the file size ('.$info['filesize'].' bytes) (truncated file?)');
    206206                }
    207207
     
    226226
    227227                if (($PathTableLocation * 2048) > $info['filesize']) {
    228                         $info['error'][] = 'Path Table Location specifies an offset ('.($PathTableLocation * 2048).') beyond the end-of-file ('.$info['filesize'].')';
     228                        $this->error('Path Table Location specifies an offset ('.($PathTableLocation * 2048).') beyond the end-of-file ('.$info['filesize'].')');
    229229                        return false;
    230230                }
  • _core_/plugins/medias/lib/getid3/module.misc.msoffice.php

    r85814 r106591  
    2626                $magic = "\xD0\xCF\x11\xE0\xA1\xB1\x1A\xE1";
    2727                if (substr($DOCFILEheader, 0, 8) != $magic) {
    28                         $info['error'][] = 'Expecting "'.getid3_lib::PrintHexBytes($magic).'" at '.$info['avdataoffset'].', found '.getid3_lib::PrintHexBytes(substr($DOCFILEheader, 0, 8)).' instead.';
     28                        $this->error('Expecting "'.getid3_lib::PrintHexBytes($magic).'" at '.$info['avdataoffset'].', found '.getid3_lib::PrintHexBytes(substr($DOCFILEheader, 0, 8)).' instead.');
    2929                        return false;
    3030                }
    3131                $info['fileformat'] = 'msoffice';
    3232
    33 $info['error'][] = 'MS Office (.doc, .xls, etc) parsing not enabled in this version of getID3() ['.$this->getid3->version().']';
     33$this->error('MS Office (.doc, .xls, etc) parsing not enabled in this version of getID3() ['.$this->getid3->version().']');
    3434return false;
    3535
  • _core_/plugins/medias/lib/getid3/module.misc.par2.php

    r85814 r106591  
    2424                $info['fileformat'] = 'par2';
    2525
    26                 $info['error'][] = 'PAR2 parsing not enabled in this version of getID3()';
     26                $this->error('PAR2 parsing not enabled in this version of getID3()');
    2727                return false;
    2828
  • _core_/plugins/medias/lib/getid3/module.misc.pdf.php

    r85814 r106591  
    2424                $info['fileformat'] = 'pdf';
    2525
    26                 $info['error'][] = 'PDF parsing not enabled in this version of getID3() ['.$this->getid3->version().']';
     26                $this->error('PDF parsing not enabled in this version of getID3() ['.$this->getid3->version().']');
    2727                return false;
    2828
  • _core_/plugins/medias/lib/getid3/module.tag.apetag.php

    r101151 r106591  
    2424
    2525                if (!getid3_lib::intValueSupported($info['filesize'])) {
    26                         $info['warning'][] = 'Unable to check for APEtags because file is larger than '.round(PHP_INT_MAX / 1073741824).'GB';
     26                        $this->warning('Unable to check for APEtags because file is larger than '.round(PHP_INT_MAX / 1073741824).'GB');
    2727                        return false;
    2828                }
     
    7373                $APEfooterData = $this->fread(32);
    7474                if (!($thisfile_ape['footer'] = $this->parseAPEheaderFooter($APEfooterData))) {
    75                         $info['error'][] = 'Error parsing APE footer at offset '.$thisfile_ape['tag_offset_end'];
     75                        $this->error('Error parsing APE footer at offset '.$thisfile_ape['tag_offset_end']);
    7676                        return false;
    7777                }
     
    8989
    9090                if (isset($info['id3v1']['tag_offset_start']) && ($info['id3v1']['tag_offset_start'] < $thisfile_ape['tag_offset_end'])) {
    91                         $info['warning'][] = 'ID3v1 tag information ignored since it appears to be a false synch in APEtag data';
     91                        $this->warning('ID3v1 tag information ignored since it appears to be a false synch in APEtag data');
    9292                        unset($info['id3v1']);
    9393                        foreach ($info['warning'] as $key => $value) {
     
    105105                                $offset += $apetagheadersize;
    106106                        } else {
    107                                 $info['error'][] = 'Error parsing APE header at offset '.$thisfile_ape['tag_offset_start'];
     107                                $this->error('Error parsing APE header at offset '.$thisfile_ape['tag_offset_start']);
    108108                                return false;
    109109                        }
     
    120120                        $offset += 4;
    121121                        if (strstr(substr($APEtagData, $offset), "\x00") === false) {
    122                                 $info['error'][] = 'Cannot find null-byte (0x00) separator between ItemKey #'.$i.' and value. ItemKey starts '.$offset.' bytes into the APE tag, at file offset '.($thisfile_ape['tag_offset_start'] + $offset);
     122                                $this->error('Cannot find null-byte (0x00) separator between ItemKey #'.$i.' and value. ItemKey starts '.$offset.' bytes into the APE tag, at file offset '.($thisfile_ape['tag_offset_start'] + $offset));
    123123                                return false;
    124124                        }
     
    155155                                                $thisfile_replaygain['track']['originator'] = 'unspecified';
    156156                                        } else {
    157                                                 $info['warning'][] = 'MP3gainTrackGain value in APEtag appears invalid: "'.$thisfile_ape_items_current['data'][0].'"';
     157                                                $this->warning('MP3gainTrackGain value in APEtag appears invalid: "'.$thisfile_ape_items_current['data'][0].'"');
    158158                                        }
    159159                                        break;
     
    164164                                                $thisfile_replaygain['track']['originator'] = 'unspecified';
    165165                                                if ($thisfile_replaygain['track']['peak'] <= 0) {
    166                                                         $info['warning'][] = 'ReplayGain Track peak from APEtag appears invalid: '.$thisfile_replaygain['track']['peak'].' (original value = "'.$thisfile_ape_items_current['data'][0].'")';
    167                                                 }
    168                                         } else {
    169                                                 $info['warning'][] = 'MP3gainTrackPeak value in APEtag appears invalid: "'.$thisfile_ape_items_current['data'][0].'"';
     166                                                        $this->warning('ReplayGain Track peak from APEtag appears invalid: '.$thisfile_replaygain['track']['peak'].' (original value = "'.$thisfile_ape_items_current['data'][0].'")');
     167                                                }
     168                                        } else {
     169                                                $this->warning('MP3gainTrackPeak value in APEtag appears invalid: "'.$thisfile_ape_items_current['data'][0].'"');
    170170                                        }
    171171                                        break;
     
    176176                                                $thisfile_replaygain['album']['originator'] = 'unspecified';
    177177                                        } else {
    178                                                 $info['warning'][] = 'MP3gainAlbumGain value in APEtag appears invalid: "'.$thisfile_ape_items_current['data'][0].'"';
     178                                                $this->warning('MP3gainAlbumGain value in APEtag appears invalid: "'.$thisfile_ape_items_current['data'][0].'"');
    179179                                        }
    180180                                        break;
     
    185185                                                $thisfile_replaygain['album']['originator'] = 'unspecified';
    186186                                                if ($thisfile_replaygain['album']['peak'] <= 0) {
    187                                                         $info['warning'][] = 'ReplayGain Album peak from APEtag appears invalid: '.$thisfile_replaygain['album']['peak'].' (original value = "'.$thisfile_ape_items_current['data'][0].'")';
    188                                                 }
    189                                         } else {
    190                                                 $info['warning'][] = 'MP3gainAlbumPeak value in APEtag appears invalid: "'.$thisfile_ape_items_current['data'][0].'"';
     187                                                        $this->warning('ReplayGain Album peak from APEtag appears invalid: '.$thisfile_replaygain['album']['peak'].' (original value = "'.$thisfile_ape_items_current['data'][0].'")');
     188                                                }
     189                                        } else {
     190                                                $this->warning('MP3gainAlbumPeak value in APEtag appears invalid: "'.$thisfile_ape_items_current['data'][0].'"');
    191191                                        }
    192192                                        break;
     
    199199                                                $thisfile_replaygain['mp3gain']['undo_wrap']  = (($mp3gain_undo_wrap == 'Y') ? true : false);
    200200                                        } else {
    201                                                 $info['warning'][] = 'MP3gainUndo value in APEtag appears invalid: "'.$thisfile_ape_items_current['data'][0].'"';
     201                                                $this->warning('MP3gainUndo value in APEtag appears invalid: "'.$thisfile_ape_items_current['data'][0].'"');
    202202                                        }
    203203                                        break;
     
    209209                                                $thisfile_replaygain['mp3gain']['globalgain_track_max'] = intval($mp3gain_globalgain_max);
    210210                                        } else {
    211                                                 $info['warning'][] = 'MP3gainMinMax value in APEtag appears invalid: "'.$thisfile_ape_items_current['data'][0].'"';
     211                                                $this->warning('MP3gainMinMax value in APEtag appears invalid: "'.$thisfile_ape_items_current['data'][0].'"');
    212212                                        }
    213213                                        break;
     
    219219                                                $thisfile_replaygain['mp3gain']['globalgain_album_max'] = intval($mp3gain_globalgain_album_max);
    220220                                        } else {
    221                                                 $info['warning'][] = 'MP3gainAlbumMinMax value in APEtag appears invalid: "'.$thisfile_ape_items_current['data'][0].'"';
     221                                                $this->warning('MP3gainAlbumMinMax value in APEtag appears invalid: "'.$thisfile_ape_items_current['data'][0].'"');
    222222                                        }
    223223                                        break;
     
    254254                                        // list of possible cover arts from http://taglib-sharp.sourcearchive.com/documentation/2.0.3.0-2/Ape_2Tag_8cs-source.html
    255255                                        if (is_array($thisfile_ape_items_current['data'])) {
    256                                                 $info['warning'][] = 'APEtag "'.$item_key.'" should be flagged as Binary data, but was incorrectly flagged as UTF-8';
     256                                                $this->warning('APEtag "'.$item_key.'" should be flagged as Binary data, but was incorrectly flagged as UTF-8');
    257257                                                $thisfile_ape_items_current['data'] = implode("\x00", $thisfile_ape_items_current['data']);
    258258                                        }
     
    266266                                                $imagechunkcheck = getid3_lib::GetDataImageSize($thisfile_ape_items_current['data'], $imageinfo);
    267267                                                if (($imagechunkcheck === false) || !isset($imagechunkcheck[2])) {
    268                                                         $info['warning'][] = 'APEtag "'.$item_key.'" contains invalid image data';
     268                                                        $this->warning('APEtag "'.$item_key.'" contains invalid image data');
    269269                                                        break;
    270270                                                }
     
    281281                                                        if ($this->inline_attachments < $thisfile_ape_items_current['data_length']) {
    282282                                                                // too big, skip
    283                                                                 $info['warning'][] = 'attachment at '.$thisfile_ape_items_current['offset'].' is too large to process inline ('.number_format($thisfile_ape_items_current['data_length']).' bytes)';
     283                                                                $this->warning('attachment at '.$thisfile_ape_items_current['offset'].' is too large to process inline ('.number_format($thisfile_ape_items_current['data_length']).' bytes)');
    284284                                                                unset($thisfile_ape_items_current['data']);
    285285                                                                break;
     
    289289                                                        if (!is_dir($this->inline_attachments) || !is_writable($this->inline_attachments)) {
    290290                                                                // cannot write, skip
    291                                                                 $info['warning'][] = 'attachment at '.$thisfile_ape_items_current['offset'].' cannot be saved to "'.$this->inline_attachments.'" (not writable)';
     291                                                                $this->warning('attachment at '.$thisfile_ape_items_current['offset'].' cannot be saved to "'.$this->inline_attachments.'" (not writable)');
    292292                                                                unset($thisfile_ape_items_current['data']);
    293293                                                                break;
     
    300300                                                                file_put_contents($destination_filename, $thisfile_ape_items_current['data']);
    301301                                                        } else {
    302                                                                 $info['warning'][] = 'attachment at '.$thisfile_ape_items_current['offset'].' cannot be saved to "'.$destination_filename.'" (not writable)';
     302                                                                $this->warning('attachment at '.$thisfile_ape_items_current['offset'].' cannot be saved to "'.$destination_filename.'" (not writable)');
    303303                                                        }
    304304                                                        $thisfile_ape_items_current['data_filename'] = $destination_filename;
  • _core_/plugins/medias/lib/getid3/module.tag.id3v1.php

    r101151 r106591  
    2323
    2424                if (!getid3_lib::intValueSupported($info['filesize'])) {
    25                         $info['warning'][] = 'Unable to check for ID3v1 because file is larger than '.round(PHP_INT_MAX / 1073741824).'GB';
     25                        $this->warning('Unable to check for ID3v1 because file is larger than '.round(PHP_INT_MAX / 1073741824).'GB');
    2626                        return false;
    2727                }
     
    9494                        if ($id3v1tag !== $GoodFormatID3v1tag) {
    9595                                $ParsedID3v1['padding_valid'] = false;
    96                                 $info['warning'][] = 'Some ID3v1 fields do not use NULL characters for padding';
     96                                $this->warning('Some ID3v1 fields do not use NULL characters for padding');
    9797                        }
    9898
     
    117117                        } else {
    118118                                // APE and Lyrics3 footers not found - assume double ID3v1
    119                                 $info['warning'][] = 'Duplicate ID3v1 tag detected - this has been known to happen with iTunes';
     119                                $this->warning('Duplicate ID3v1 tag detected - this has been known to happen with iTunes');
    120120                                $info['avdataend'] -= 128;
    121121                        }
  • _core_/plugins/medias/lib/getid3/module.tag.id3v2.php

    r101151 r106591  
    7272                if ($id3v2_majorversion > 4) { // this script probably won't correctly parse ID3v2.5.x and above (if it ever exists)
    7373
    74                         $info['error'][] = 'this script only parses up to ID3v2.4.x - this tag is ID3v2.'.$id3v2_majorversion.'.'.$thisfile_id3v2['minorversion'];
     74                        $this->error('this script only parses up to ID3v2.4.x - this tag is ID3v2.'.$id3v2_majorversion.'.'.$thisfile_id3v2['minorversion']);
    7575                        return false;
    7676
     
    242242
    243243                                        if ($thisfile_id3v2['exthead']['length'] != $extended_header_offset) {
    244                                                 $info['warning'][] = 'ID3v2.4 extended header length mismatch (expecting '.intval($thisfile_id3v2['exthead']['length']).', found '.intval($extended_header_offset).')';
     244                                                $this->warning('ID3v2.4 extended header length mismatch (expecting '.intval($thisfile_id3v2['exthead']['length']).', found '.intval($extended_header_offset).')');
    245245                                        }
    246246                                }
     
    261261                                                        $thisfile_id3v2['padding']['valid'] = false;
    262262                                                        $thisfile_id3v2['padding']['errorpos'] = $thisfile_id3v2['padding']['start'] + $i;
    263                                                         $info['warning'][] = 'Invalid ID3v2 padding found at offset '.$thisfile_id3v2['padding']['errorpos'].' (the remaining '.($thisfile_id3v2['padding']['length'] - $i).' bytes are considered invalid)';
     263                                                        $this->warning('Invalid ID3v2 padding found at offset '.$thisfile_id3v2['padding']['errorpos'].' (the remaining '.($thisfile_id3v2['padding']['length'] - $i).' bytes are considered invalid)');
    264264                                                        break;
    265265                                                }
     
    301301                                                        // MP3ext known broken frames - "ok" for the purposes of this test
    302302                                                } elseif (($id3v2_majorversion == 4) && ($this->IsValidID3v2FrameName(substr($framedata, getid3_lib::BigEndian2Int(substr($frame_header, 4, 4), 0), 4), 3))) {
    303                                                         $info['warning'][] = 'ID3v2 tag written as ID3v2.4, but with non-synchsafe integers (ID3v2.3 style). Older versions of (Helium2; iTunes) are known culprits of this. Tag has been parsed as ID3v2.3';
     303                                                        $this->warning('ID3v2 tag written as ID3v2.4, but with non-synchsafe integers (ID3v2.3 style). Older versions of (Helium2; iTunes) are known culprits of this. Tag has been parsed as ID3v2.3');
    304304                                                        $id3v2_majorversion = 3;
    305305                                                        $frame_size = getid3_lib::BigEndian2Int(substr($frame_header, 4, 4), 0); // 32-bit integer
     
    323323                                                        $thisfile_id3v2['padding']['valid'] = false;
    324324                                                        $thisfile_id3v2['padding']['errorpos'] = $thisfile_id3v2['padding']['start'] + $i;
    325                                                         $info['warning'][] = 'Invalid ID3v2 padding found at offset '.$thisfile_id3v2['padding']['errorpos'].' (the remaining '.($thisfile_id3v2['padding']['length'] - $i).' bytes are considered invalid)';
     325                                                        $this->warning('Invalid ID3v2 padding found at offset '.$thisfile_id3v2['padding']['errorpos'].' (the remaining '.($thisfile_id3v2['padding']['length'] - $i).' bytes are considered invalid)');
    326326                                                        break;
    327327                                  &n