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;
}
Example #2
0
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;
}