source: extensions/charlies_content/getid3/getid3/module.audio-video.bink.php @ 3544

Last change on this file since 3544 was 3544, checked in by vdigital, 15 years ago

Change: getid3 upgraded to -> 1.7.9

  • Property svn:eol-style set to LF
  • Property svn:keywords set to Author Date Id Revision
File size: 2.3 KB
Line 
1<?php
2/////////////////////////////////////////////////////////////////
3/// getID3() by James Heinrich <info@getid3.org>               //
4//  available at http://getid3.sourceforge.net                 //
5//            or http://www.getid3.org                         //
6/////////////////////////////////////////////////////////////////
7// See readme.txt for more details                             //
8/////////////////////////////////////////////////////////////////
9//                                                             //
10// module.audio.bink.php                                       //
11// module for analyzing Bink or Smacker audio-video files      //
12// dependencies: NONE                                          //
13//                                                            ///
14/////////////////////////////////////////////////////////////////
15
16
17class getid3_bink
18{
19
20        function getid3_bink(&$fd, &$ThisFileInfo) {
21
22$ThisFileInfo['error'][] = 'Bink / Smacker files not properly processed by this version of getID3()';
23
24                fseek($fd, $ThisFileInfo['avdataoffset'], SEEK_SET);
25                $fileTypeID = fread($fd, 3);
26                switch ($fileTypeID) {
27                        case 'BIK':
28                                return $this->ParseBink($fd, $ThisFileInfo);
29                                break;
30
31                        case 'SMK':
32                                return $this->ParseSmacker($fd, $ThisFileInfo);
33                                break;
34
35                        default:
36                                $ThisFileInfo['error'][] = 'Expecting "BIK" or "SMK" at offset '.$ThisFileInfo['avdataoffset'].', found "'.$fileTypeID.'"';
37                                return false;
38                                break;
39                }
40
41                return true;
42
43        }
44
45        function ParseBink(&$fd, &$ThisFileInfo) {
46                $ThisFileInfo['fileformat']          = 'bink';
47                $ThisFileInfo['video']['dataformat'] = 'bink';
48
49                $fileData = 'BIK'.fread($fd, 13);
50
51                $ThisFileInfo['bink']['data_size']   = getid3_lib::LittleEndian2Int(substr($fileData, 4, 4));
52                $ThisFileInfo['bink']['frame_count'] = getid3_lib::LittleEndian2Int(substr($fileData, 8, 2));
53
54                if (($ThisFileInfo['avdataend'] - $ThisFileInfo['avdataoffset']) != ($ThisFileInfo['bink']['data_size'] + 8)) {
55                        $ThisFileInfo['error'][] = 'Probably truncated file: expecting '.$ThisFileInfo['bink']['data_size'].' bytes, found '.($ThisFileInfo['avdataend'] - $ThisFileInfo['avdataoffset']);
56                }
57
58                return true;
59        }
60
61        function ParseSmacker(&$fd, &$ThisFileInfo) {
62                $ThisFileInfo['fileformat']          = 'smacker';
63                $ThisFileInfo['video']['dataformat'] = 'smacker';
64
65                return false;
66        }
67
68}
69
70?>
Note: See TracBrowser for help on using the repository browser.