function MPEGaudioHeaderValid($rawarray, $echoerrors = false) { if (($rawarray['synch'] & 0xffe) != 0xffe) { return false; } static $MPEGaudioVersionLookup; static $MPEGaudioLayerLookup; static $MPEGaudioBitrateLookup; static $MPEGaudioFrequencyLookup; static $MPEGaudioChannelModeLookup; static $MPEGaudioModeExtensionLookup; static $MPEGaudioEmphasisLookup; if (empty($MPEGaudioVersionLookup)) { $MPEGaudioVersionLookup = MPEGaudioVersionArray(); $MPEGaudioLayerLookup = MPEGaudioLayerArray(); $MPEGaudioBitrateLookup = MPEGaudioBitrateArray(); $MPEGaudioFrequencyLookup = MPEGaudioFrequencyArray(); $MPEGaudioChannelModeLookup = MPEGaudioChannelModeArray(); $MPEGaudioModeExtensionLookup = MPEGaudioModeExtensionArray(); $MPEGaudioEmphasisLookup = MPEGaudioEmphasisArray(); } if (isset($MPEGaudioVersionLookup[$rawarray['version']])) { $decodedVersion = $MPEGaudioVersionLookup[$rawarray['version']]; } else { if ($echoerrors) { echo "\n" . 'invalid Version (' . $rawarray['version'] . ')'; } return false; } if (isset($MPEGaudioLayerLookup[$rawarray['layer']])) { $decodedLayer = $MPEGaudioLayerLookup[$rawarray['layer']]; } else { if ($echoerrors) { echo "\n" . 'invalid Layer (' . $rawarray['layer'] . ')'; } return false; } if (!isset($MPEGaudioBitrateLookup[$decodedVersion][$decodedLayer][$rawarray['bitrate']])) { if ($echoerrors) { echo "\n" . 'invalid Bitrate (' . $rawarray['bitrate'] . ')'; } if ($rawarray['bitrate'] == 15) { // known issue in LAME 3.90 - 3.93.1 where free-format has bitrate ID of 15 instead of 0 // let it go through here otherwise file will not be identified } else { return false; } } if (!isset($MPEGaudioFrequencyLookup[$decodedVersion][$rawarray['sample_rate']])) { if ($echoerrors) { echo "\n" . 'invalid Frequency (' . $rawarray['sample_rate'] . ')'; } return false; } if (!isset($MPEGaudioChannelModeLookup[$rawarray['channelmode']])) { if ($echoerrors) { echo "\n" . 'invalid ChannelMode (' . $rawarray['channelmode'] . ')'; } return false; } if (!isset($MPEGaudioModeExtensionLookup[$decodedLayer][$rawarray['modeextension']])) { if ($echoerrors) { echo "\n" . 'invalid Mode Extension (' . $rawarray['modeextension'] . ')'; } return false; } if (!isset($MPEGaudioEmphasisLookup[$rawarray['emphasis']])) { if ($echoerrors) { echo "\n" . 'invalid Emphasis (' . $rawarray['emphasis'] . ')'; } return false; } // These are just either set or not set, you can't mess that up :) // $rawarray['protection']; // $rawarray['padding']; // $rawarray['private']; // $rawarray['copyright']; // $rawarray['original']; return true; }
function MPEGaudioHeaderValid($rawarray, $echoerrors = false) { if (($rawarray['synch'] & 0xffe) != 0xffe) { return false; } static $MPEGaudioVersionLookup; static $MPEGaudioLayerLookup; static $MPEGaudioBitrateLookup; static $MPEGaudioFrequencyLookup; static $MPEGaudioChannelModeLookup; static $MPEGaudioModeExtensionLookup; static $MPEGaudioEmphasisLookup; if (empty($MPEGaudioVersionLookup)) { $MPEGaudioVersionLookup = MPEGaudioVersionArray(); $MPEGaudioLayerLookup = MPEGaudioLayerArray(); $MPEGaudioBitrateLookup = MPEGaudioBitrateArray(); $MPEGaudioFrequencyLookup = MPEGaudioFrequencyArray(); $MPEGaudioChannelModeLookup = MPEGaudioChannelModeArray(); $MPEGaudioModeExtensionLookup = MPEGaudioModeExtensionArray(); $MPEGaudioEmphasisLookup = MPEGaudioEmphasisArray(); } if (isset($MPEGaudioVersionLookup[$rawarray['version']])) { $decodedVersion = $MPEGaudioVersionLookup[$rawarray['version']]; } else { if ($echoerrors) { echo "\n" . 'invalid Version (' . $rawarray['version'] . ')'; } return false; } if (isset($MPEGaudioLayerLookup[$rawarray['layer']])) { $decodedLayer = $MPEGaudioLayerLookup[$rawarray['layer']]; } else { if ($echoerrors) { echo "\n" . 'invalid Layer (' . $rawarray['layer'] . ')'; } return false; } if (!isset($MPEGaudioBitrateLookup[$decodedVersion][$decodedLayer][$rawarray['bitrate']])) { if ($echoerrors) { echo "\n" . 'invalid Bitrate (' . $rawarray['bitrate'] . ')'; } return false; } if (!isset($MPEGaudioFrequencyLookup[$decodedVersion][$rawarray['sample_rate']])) { if ($echoerrors) { echo "\n" . 'invalid Frequency (' . $rawarray['sample_rate'] . ')'; } return false; } if (!isset($MPEGaudioChannelModeLookup[$rawarray['channelmode']])) { if ($echoerrors) { echo "\n" . 'invalid ChannelMode (' . $rawarray['channelmode'] . ')'; } return false; } if (!isset($MPEGaudioModeExtensionLookup[$decodedLayer][$rawarray['modeextension']])) { if ($echoerrors) { echo "\n" . 'invalid Mode Extension (' . $rawarray['modeextension'] . ')'; } return false; } if (!isset($MPEGaudioEmphasisLookup[$rawarray['emphasis']])) { if ($echoerrors) { echo "\n" . 'invalid Emphasis (' . $rawarray['emphasis'] . ')'; } return false; } // These are just either set or not set, you can't mess that up :) // $rawarray['protection']; // $rawarray['padding']; // $rawarray['private']; // $rawarray['copyright']; // $rawarray['original']; return true; }