// Formats we recognize magic numbers for
'djvu', 'ogx', 'ogg', 'ogv', 'oga', 'spx', 'opus',
'mid', 'pdf', 'wmf', 'xcf', 'webm', 'mkv', 'mka',
- 'webp',
+ 'webp', 'mp3',
// XML formats we sure hope we recognize reliably
'svg',
// Multimedia...
'MThd' => 'audio/midi',
'OggS' => 'application/ogg',
+ 'ID3' => 'audio/mpeg',
+ "\xff\xfb" => 'audio/mpeg', // MPEG-1 layer 3
+ "\xff\xf3" => 'audio/mpeg', // MPEG-2 layer 3 (lower sample rates)
+ "\xff\xe3" => 'audio/mpeg', // MPEG-2.5 layer 3 (very low sample rates)
// Image formats...
// Note that WMF may have a bare header, no magic number.
( strpos( $head, "<\x00?\x00 " ) !== false ) ||
( strpos( $head, "<\x00?\x00\n" ) !== false ) ||
( strpos( $head, "<\x00?\x00\t" ) !== false ) ||
- ( strpos( $head, "<\x00?\x00=" ) !== false ) ) {
-
+ ( strpos( $head, "<\x00?\x00=" ) !== false )
+ ) {
$this->logger->info( __METHOD__ . ": recognized $file as application/x-php\n" );
return 'application/x-php';
}
// Special code for ogg - detect if it's video (theora),
// else label it as sound.
if ( $mime == 'application/ogg' && file_exists( $path ) ) {
-
// Read a chunk of the file
$f = fopen( $path, "rt" );
if ( !$f ) {
return MEDIATYPE_UNKNOWN;
}
+ /**
+ * Returns an array of media types (MEDIATYPE_xxx constants)
+ *
+ * @return array
+ */
+ public function getMediaTypes() {
+ return array_keys( $this->mediaTypes );
+ }
+
/**
* Get the MIME types that various versions of Internet Explorer would
* detect from a chunk of the content.