2013-07-28 19:45:21 +02:00
< ? php
/////////////////////////////////////////////////////////////////
/// getID3() by James Heinrich <info@getid3.org> //
// available at http://getid3.sourceforge.net //
// or http://www.getid3.org //
2015-09-04 03:59:46 +02:00
// also https://github.com/JamesHeinrich/getID3 //
2013-07-28 19:45:21 +02:00
/////////////////////////////////////////////////////////////////
// See readme.txt for more details //
/////////////////////////////////////////////////////////////////
// //
// module.audio.aa.php //
// module for analyzing Audible Audiobook files //
// dependencies: NONE //
// ///
/////////////////////////////////////////////////////////////////
class getid3_aa extends getid3_handler
{
2015-09-04 03:59:46 +02:00
public function Analyze () {
2013-07-28 19:45:21 +02:00
$info = & $this -> getid3 -> info ;
2015-09-04 03:59:46 +02:00
$this -> fseek ( $info [ 'avdataoffset' ]);
$AAheader = $this -> fread ( 8 );
2013-07-28 19:45:21 +02:00
$magic = " \x57 \x90 \x75 \x36 " ;
if ( substr ( $AAheader , 4 , 4 ) != $magic ) {
$info [ 'error' ][] = 'Expecting "' . getid3_lib :: PrintHexBytes ( $magic ) . '" at offset ' . $info [ 'avdataoffset' ] . ', found "' . getid3_lib :: PrintHexBytes ( substr ( $AAheader , 4 , 4 )) . '"' ;
return false ;
}
// shortcut
$info [ 'aa' ] = array ();
2015-09-04 03:59:46 +02:00
$thisfile_aa = & $info [ 'aa' ];
2013-07-28 19:45:21 +02:00
$info [ 'fileformat' ] = 'aa' ;
$info [ 'audio' ][ 'dataformat' ] = 'aa' ;
2015-09-04 03:59:46 +02:00
$info [ 'error' ][] = 'Audible Audiobook (.aa) parsing not enabled in this version of getID3() [' . $this -> getid3 -> version () . ']' ;
return false ;
2013-07-28 19:45:21 +02:00
$info [ 'audio' ][ 'bitrate_mode' ] = 'cbr' ; // is it?
2015-09-04 03:59:46 +02:00
$thisfile_aa [ 'encoding' ] = 'ISO-8859-1' ;
2013-07-28 19:45:21 +02:00
2015-09-04 03:59:46 +02:00
$thisfile_aa [ 'filesize' ] = getid3_lib :: BigEndian2Int ( substr ( $AUheader , 0 , 4 ));
if ( $thisfile_aa [ 'filesize' ] > ( $info [ 'avdataend' ] - $info [ 'avdataoffset' ])) {
$info [ 'warning' ][] = 'Possible truncated file - expecting "' . $thisfile_aa [ 'filesize' ] . '" bytes of data, only found ' . ( $info [ 'avdataend' ] - $info [ 'avdataoffset' ]) . ' bytes"' ;
2013-07-28 19:45:21 +02:00
}
$info [ 'audio' ][ 'bits_per_sample' ] = 16 ; // is it?
2015-09-04 03:59:46 +02:00
$info [ 'audio' ][ 'sample_rate' ] = $thisfile_aa [ 'sample_rate' ];
$info [ 'audio' ][ 'channels' ] = $thisfile_aa [ 'channels' ];
2013-07-28 19:45:21 +02:00
//$info['playtime_seconds'] = 0;
//$info['audio']['bitrate'] = 0;
return true ;
}
}