1)and($fred['version']>1)) { $fred['bitrate']="8000"; } else { $fred['bitrate']="32000"; } break; case "0010": switch ($index) { case "1": $fred['bitrate']="64000"; break; case "2": $fred['bitrate']="48000"; break; case "3": $fred['bitrate']="40000"; break; case "4": $fred['bitrate']="48000"; break; case "5": $fred['bitrate']="16000"; break; } break; case "0011": switch ($index) { case "1": $fred['bitrate']="96000"; break; case "2": $fred['bitrate']="56000"; break; case "3": $fred['bitrate']="48000"; break; case "4": $fred['bitrate']="56000"; break; case "5": $fred['bitrate']="24000"; break; } break; case "0100": switch ($index) { case "1": $fred['bitrate']="128000"; break; case "2": $fred['bitrate']="64000"; break; case "3": $fred['bitrate']="56000"; break; case "4": $fred['bitrate']="64000"; break; case "5": $fred['bitrate']="32000"; break; } break; case "0101": switch ($index) { case "1": $fred['bitrate']="160000"; break; case "2": $fred['bitrate']="80000"; break; case "3": $fred['bitrate']="64000"; break; case "4": $fred['bitrate']="80000"; break; case "5": $fred['bitrate']="40000"; break; } break; case "0110": switch ($index) { case "1": $fred['bitrate']="192000"; break; case "2": $fred['bitrate']="96000"; break; case "3": $fred['bitrate']="80000"; break; case "4": $fred['bitrate']="96000"; break; case "5": $fred['bitrate']="48000"; break; } break; case "0111": switch ($index) { case "1": $fred['bitrate']="224000"; break; case "2": $fred['bitrate']="112000"; break; case "3": $fred['bitrate']="96000"; break; case "4": $fred['bitrate']="112000"; break; case "5": $fred['bitrate']="56000"; break; } break; case "1000": switch ($index) { case "1": $fred['bitrate']="256000"; break; case "2": $fred['bitrate']="128000"; break; case "3": $fred['bitrate']="112000"; break; case "4": $fred['bitrate']="128000"; break; case "5": $fred['bitrate']="64000"; break; } break; case "1001": switch ($index) { case "1": $fred['bitrate']="288000"; break; case "2": $fred['bitrate']="160000"; break; case "3": $fred['bitrate']="128000"; break; case "4": $fred['bitrate']="144000"; break; case "5": $fred['bitrate']="80000"; break; } break; case "1010": switch ($index) { case "1": $fred['bitrate']="320000"; break; case "2": $fred['bitrate']="192000"; break; case "3": $fred['bitrate']="160000"; break; case "4": $fred['bitrate']="160000"; break; case "5": $fred['bitrate']="96000"; break; } break; case "1011": switch ($index) { case "1": $fred['bitrate']="352000"; break; case "2": $fred['bitrate']="224000"; break; case "3": $fred['bitrate']="192000"; break; case "4": $fred['bitrate']="176000"; break; case "5": $fred['bitrate']="112000"; break; } break; case "1100": switch ($index) { case "1": $fred['bitrate']="384000"; break; case "2": $fred['bitrate']="256000"; break; case "3": $fred['bitrate']="224000"; break; case "4": $fred['bitrate']="192000"; break; case "5": $fred['bitrate']="128000"; break; } break; case "1101": switch ($index) { case "1": $fred['bitrate']="416000"; break; case "2": $fred['bitrate']="320000"; break; case "3": $fred['bitrate']="256000"; break; case "4": $fred['bitrate']="224000"; break; case "5": $fred['bitrate']="144000"; break; } break; case "1110": switch ($index) { case "1": $fred['bitrate']="448000"; break; case "2": $fred['bitrate']="384000"; break; case "3": $fred['bitrate']="320000"; break; case "4": $fred['bitrate']="256000"; break; case "5": $fred['bitrate']="160000"; break; } break; case "1111": $fred['bitrate']="bad"; break; } // eo switch // Determine Sample Rate switch ($fred['version']) { case "1": switch (substr($bitstream,12,2)) { case "00": $fred['samplerate']="44100"; break; case "01": $fred['samplerate']="48000"; break; case "10": $fred['samplerate']="32000"; break; case "11": $fred['samplerate']="reserved"; break; } // eo switch break; case "2": switch (substr($bitstream,12,2)) { case "00": $fred['samplerate']="22050"; break; case "01": $fred['samplerate']="24000"; break; case "10": $fred['samplerate']="16000"; break; case "11": $fred['samplerate']="reserved"; break; } // eo switch break; case "2.5": switch (substr($bitstream,12,2)) { case "00": $fred['samplerate']="11025"; break; case "01": $fred['samplerate']="12000"; break; case "10": $fred['samplerate']="8000"; break; case "11": $fred['samplerate']="reserved"; break; } // eo switch break; } // eo switch // Determine whether padding is set on. 0 == no & 1 == yes $padding = substr($bitstream,14,1); // Determine the private bit's value. Dont know what for though? $private = substr($bitstream,15,1); // Determine Channel mode switch (substr($bitstream,16,2)) { case "00": $fred['cmode']="Stereo"; break; case "01": $fred['cmode']="Joint Stereo"; break; case "10": $fred['cmode']="Dual Channel"; break; case "11": $fred['cmode']="Mono"; break; } // eo switch /* // Determine Mode Extension, actually who cares for the moment switch (substr($bitstream,18,2)) { case "00": $mext="0"; break; case "01": $mext="3"; break; case "10": $mext="2"; break; case "11": $mext="1"; break; } // eo switch */ // Determine Copyright 0 == no & 1 == yes $fred['copyright'] = substr($bitstream,20,1); // Determine Original 0 == Copy & 1 == Original $fred['original'] = substr($bitstream,21,1); // Determine Emphasis switch (substr($bitstream,22,2)) { case "00": $fred['emphasis']="none"; break; case "01": $fred['emphasis']="50/15 ms"; break; case "10": $fred['emphasis']="reserved"; break; case "11": $fred['emphasis']="CCIT J.17"; break; } // eo switch // Determine number of frames. if ((isset($fred['samplerate'])) and (isset($fred['bitrate']))) { if ($fred['layer']=="1") { $fred['frames']=floor($fred['filesize']/(floor(((12*$fred['bitrate'])/($fred['samplerate']+$padding))*4))); } else { $fred['frames']=floor($fred['filesize']/(floor((144*$fred['bitrate'])/($fred['samplerate'])))); } // eo if // Determine number of seconds in song. if ($fred['layer']=="1") { $fred['time']=floor((384/$fred['samplerate'])*$fred['frames']); } else { $fred['time']=floor((1152/$fred['samplerate'])*$fred['frames']); } // eo if } // eo if // MH: Get MPEG Audio Tag info fseek($fp,$fred['filesize']-128); $tag=fread($fp,128); if (substr($tag,0,3) == "TAG") { $fred['tagtitle']=substr($tag,3,30); $fred['tagartist']=substr($tag,33,30); $fred['tagalbum']=substr($tag,63,30); $fred['tagyear']=substr($tag,93,4); $fred['tagcomment']=substr($tag,97,30); $fred['taggenreid']=ord(substr($tag,127,1)); $fred['taggenrename']= ( $fred['taggenreid'] >= 0 && $fred['taggenreid'] <= 125) ? $genre[$fred['taggenreid']] : "(unkown)"; } // has audio tag ? fclose($fp); $fred['filename']=$filename; return($fred); } // eo fkt mp3info function thdots($s,$delim=".") { while ($s) { // print "s: $s\n"; $d = substr($s,strlen($s)-3,strlen($s)) .$delim.$d; // print "d: $d\n"; $s=substr($s,0,strlen($s)-3); // print "s: $s\n"; // print "\n"; } // Remove trailing dot return (substr($d,0,strlen($d)-1)); } // eo fkt thdots // ------------------------------------------------------- // Here's a usage sample // ------------------------------------------------------- $myfilename = $REDIRECT_URL ? preg_replace ("/.*\//","",$REDIRECT_URL) : $myfilename; print "
"; print ""; print "
\n";
print "Filename : ". $info['filename'] ."\n";
print "Filesize : ". thdots($info['filesize']) ." bytes\n";
print "Playing time : ". date("i:s",$info['time']) ." minutes (". $info['time'] ." seconds)\n";
print "Bitrate : ". $info['bitrate']/1000 ." kbit\n";
print "Samplerate : ". $info['samplerate'] ." hz\n";
print "Frames : ". $info['frames'] ."\n";
print "Emphasis : ". $info['emphasis'] ."\n";
print "Channelmode : ". $info['cmode'] ."\n";
print "Version : MPEG ". $info['version'] ." Layer ". $info['layer'] ."\n";
print "CRC : ". $info['crc'] ."\n";
print "Copyright : ". $info['copyright'] ."\n";
print "Original : ". $info['original'] ."\n";
print "\n";
if (isset($info['tagtitle'])) {
print "MPEG Audio Tag ID:\n";
print "Title : ". $info['tagtitle'] ."\n";
print "Artist : ". $info['tagartist'] ."\n";
print "Album : ". $info['tagalbum'] ."\n";
print "Year : ". $info['tagyear'] ."\n";
print "Comment : ". $info['tagcomment'] ."\n";
print "Genre : ". $info['taggenrename'] ." (#". $info['taggenreid'] .")\n";
print "\n";
} else {
print "No MPEG Audio Tag ID found\n";
} // eo has tag?
} else {
// No filename or showdir set. Show available files.
$dhnd=opendir('.');
echo "\n";
echo "MP3-files in current dir:\n";
while ($file=readdir($dhnd)) {
if (ereg("mp3$",$file)) print "$file\n";
}
closedir($dhnd);
echo "\n";
} // eo if got filename?
?>
You need to ensure n=(ord)255 and n+1>=(ord)224
An ord >= 224 (128+64+32)=224 ensures that the binary expression has at least 8 bits in it and the
first three high order bits are set (i.e. 1) for examle n=(ord)255 & n+1=(ord)=225 the binary
would be:
11111111 11100001 == sync detected... continue
Thanks for the hint, Wallace. Sorry, I don't have the time to fix this right now.