Blame view
sources/3rdparty/james-heinrich/getid3/getid3/module.audio.mod.php
3.36 KB
|
03e52840d
|
1 2 3 4 5 |
<?php ///////////////////////////////////////////////////////////////// /// getID3() by James Heinrich <info@getid3.org> // // available at http://getid3.sourceforge.net // // or http://www.getid3.org // |
|
6d9380f96
|
6 |
// also https://github.com/JamesHeinrich/getID3 // |
|
03e52840d
|
7 8 9 10 11 12 13 14 15 16 17 18 19 |
/////////////////////////////////////////////////////////////////
// See readme.txt for more details //
/////////////////////////////////////////////////////////////////
// //
// module.audio.mod.php //
// module for analyzing MOD Audio files //
// dependencies: NONE //
// ///
/////////////////////////////////////////////////////////////////
class getid3_mod extends getid3_handler
{
|
|
31b7f2792
|
20 |
public function Analyze() {
|
|
03e52840d
|
21 |
$info = &$this->getid3->info; |
|
6d9380f96
|
22 23 |
$this->fseek($info['avdataoffset']); $fileheader = $this->fread(1088); |
|
03e52840d
|
24 25 26 27 28 29 30 31 32 33 34 35 |
if (preg_match('#^IMPM#', $fileheader)) {
return $this->getITheaderFilepointer();
} elseif (preg_match('#^Extended Module#', $fileheader)) {
return $this->getXMheaderFilepointer();
} elseif (preg_match('#^.{44}SCRM#', $fileheader)) {
return $this->getS3MheaderFilepointer();
} elseif (preg_match('#^.{1080}(M\\.K\\.|M!K!|FLT4|FLT8|[5-9]CHN|[1-3][0-9]CH)#', $fileheader)) {
return $this->getMODheaderFilepointer();
}
$info['error'][] = 'This is not a known type of MOD file';
return false;
}
|
|
31b7f2792
|
36 |
public function getMODheaderFilepointer() {
|
|
03e52840d
|
37 |
$info = &$this->getid3->info; |
|
6d9380f96
|
38 39 |
$this->fseek($info['avdataoffset'] + 1080); $FormatID = $this->fread(4); |
|
03e52840d
|
40 41 42 43 44 45 46 47 48 49 |
if (!preg_match('#^(M.K.|[5-9]CHN|[1-3][0-9]CH)$#', $FormatID)) {
$info['error'][] = 'This is not a known type of MOD file';
return false;
}
$info['fileformat'] = 'mod';
$info['error'][] = 'MOD parsing not enabled in this version of getID3() ['.$this->getid3->version().']';
return false;
}
|
|
31b7f2792
|
50 |
public function getXMheaderFilepointer() {
|
|
03e52840d
|
51 |
$info = &$this->getid3->info; |
|
6d9380f96
|
52 53 |
$this->fseek($info['avdataoffset']); $FormatID = $this->fread(15); |
|
03e52840d
|
54 55 56 57 58 59 60 61 62 63 |
if (!preg_match('#^Extended Module$#', $FormatID)) {
$info['error'][] = 'This is not a known type of XM-MOD file';
return false;
}
$info['fileformat'] = 'xm';
$info['error'][] = 'XM-MOD parsing not enabled in this version of getID3() ['.$this->getid3->version().']';
return false;
}
|
|
31b7f2792
|
64 |
public function getS3MheaderFilepointer() {
|
|
03e52840d
|
65 |
$info = &$this->getid3->info; |
|
6d9380f96
|
66 67 |
$this->fseek($info['avdataoffset'] + 44); $FormatID = $this->fread(4); |
|
03e52840d
|
68 69 70 71 72 73 74 75 76 77 |
if (!preg_match('#^SCRM$#', $FormatID)) {
$info['error'][] = 'This is not a ScreamTracker MOD file';
return false;
}
$info['fileformat'] = 's3m';
$info['error'][] = 'ScreamTracker parsing not enabled in this version of getID3() ['.$this->getid3->version().']';
return false;
}
|
|
31b7f2792
|
78 |
public function getITheaderFilepointer() {
|
|
03e52840d
|
79 |
$info = &$this->getid3->info; |
|
6d9380f96
|
80 81 |
$this->fseek($info['avdataoffset']); $FormatID = $this->fread(4); |
|
03e52840d
|
82 83 84 85 86 87 88 89 90 91 92 93 |
if (!preg_match('#^IMPM$#', $FormatID)) {
$info['error'][] = 'This is not an ImpulseTracker MOD file';
return false;
}
$info['fileformat'] = 'it';
$info['error'][] = 'ImpulseTracker parsing not enabled in this version of getID3() ['.$this->getid3->version().']';
return false;
}
}
|