<?php 
///////////////////////////////////////////////////////////////// 
/// getID3() by James Heinrich <[email protected]>               // 
//  available at http://getid3.sourceforge.net                 // 
//            or http://www.getid3.org                         // 
///////////////////////////////////////////////////////////////// 
// See readme.txt for more details                             // 
///////////////////////////////////////////////////////////////// 
//                                                             // 
// module.audio.bink.php                                       // 
// module for analyzing Bink or Smacker audio-video files      // 
// dependencies: NONE                                          // 
//                                                            /// 
///////////////////////////////////////////////////////////////// 
 
 
class getid3_bink extends getid3_handler 
{ 
 
    function Analyze() { 
        $info = &$this->getid3->info; 
 
$info['error'][] = 'Bink / Smacker files not properly processed by this version of getID3() ['.$this->getid3->version().']'; 
 
        fseek($this->getid3->fp, $info['avdataoffset'], SEEK_SET); 
        $fileTypeID = fread($this->getid3->fp, 3); 
        switch ($fileTypeID) { 
            case 'BIK': 
                return $this->ParseBink(); 
                break; 
 
            case 'SMK': 
                return $this->ParseSmacker(); 
                break; 
 
            default: 
                $info['error'][] = 'Expecting "BIK" or "SMK" at offset '.$info['avdataoffset'].', found "'.getid3_lib::PrintHexBytes($fileTypeID).'"'; 
                return false; 
                break; 
        } 
 
        return true; 
 
    } 
 
    function ParseBink() { 
        $info = &$this->getid3->info; 
        $info['fileformat']          = 'bink'; 
        $info['video']['dataformat'] = 'bink'; 
 
        $fileData = 'BIK'.fread($this->getid3->fp, 13); 
 
        $info['bink']['data_size']   = getid3_lib::LittleEndian2Int(substr($fileData, 4, 4)); 
        $info['bink']['frame_count'] = getid3_lib::LittleEndian2Int(substr($fileData, 8, 2)); 
 
        if (($info['avdataend'] - $info['avdataoffset']) != ($info['bink']['data_size'] + 8)) { 
            $info['error'][] = 'Probably truncated file: expecting '.$info['bink']['data_size'].' bytes, found '.($info['avdataend'] - $info['avdataoffset']); 
        } 
 
        return true; 
    } 
 
    function ParseSmacker() { 
        $info = &$this->getid3->info; 
        $info['fileformat']          = 'smacker'; 
        $info['video']['dataformat'] = 'smacker'; 
 
        return true; 
    } 
 
} 
 
?>
 
 |