本文整理汇总了PHP中getid3_riff::RIFFparseWavPackHeader方法的典型用法代码示例。如果您正苦于以下问题:PHP getid3_riff::RIFFparseWavPackHeader方法的具体用法?PHP getid3_riff::RIFFparseWavPackHeader怎么用?PHP getid3_riff::RIFFparseWavPackHeader使用的例子?那么恭喜您, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类getid3_riff
的用法示例。
在下文中一共展示了getid3_riff::RIFFparseWavPackHeader方法的2个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的PHP代码示例。
示例1: ParseRIFF
//.........这里部分代码省略.........
switch ($chunkname) {
case 'data':
$ThisFileInfo['avdataoffset'] = ftell($fd);
$ThisFileInfo['avdataend'] = $ThisFileInfo['avdataoffset'] + $chunksize;
$RIFFdataChunkContentsTest = fread($fd, 36);
if (strlen($RIFFdataChunkContentsTest) > 0 && preg_match('/^\\xFF[\\xE2-\\xE7\\xF2-\\xF7\\xFA-\\xFF][\\x00-\\xEB]/s', substr($RIFFdataChunkContentsTest, 0, 4))) {
// Probably is MP3 data
if (getid3_mp3::MPEGaudioHeaderBytesValid(substr($RIFFdataChunkContentsTest, 0, 4))) {
getid3_mp3::getOnlyMPEGaudioInfo($fd, $ThisFileInfo, $RIFFchunk[$chunkname][$thisindex]['offset'], false);
}
} elseif (strlen($RIFFdataChunkContentsTest) > 0 && substr($RIFFdataChunkContentsTest, 0, 2) == "\vw") {
// This is probably AC-3 data
$GETID3_ERRORARRAY =& $ThisFileInfo['warning'];
if (getid3_lib::IncludeDependency(GETID3_INCLUDEPATH . 'module.audio.ac3.php', __FILE__, false)) {
$dummy = $ThisFileInfo;
$dummy['avdataoffset'] = $RIFFchunk[$chunkname][$thisindex]['offset'];
$dummy['avdataend'] = $dummy['avdataoffset'] + $RIFFchunk[$chunkname][$thisindex]['size'];
$dummy['error'] = array();
$ac3_tag = new getid3_ac3($fd, $dummy);
if (empty($dummy['error'])) {
$ThisFileInfo['audio'] = $dummy['audio'];
$ThisFileInfo['ac3'] = $dummy['ac3'];
$ThisFileInfo['warning'] = $dummy['warning'];
}
}
} elseif (strlen($RIFFdataChunkContentsTest) > 0 && substr($RIFFdataChunkContentsTest, 8, 2) == "w\v") {
// Dolby Digital WAV
// AC-3 content, but not encoded in same format as normal AC-3 file
// For one thing, byte order is swapped
$GETID3_ERRORARRAY =& $ThisFileInfo['warning'];
if (getid3_lib::IncludeDependency(GETID3_INCLUDEPATH . 'module.audio.ac3.php', __FILE__, false)) {
// ok to use tmpfile here - only 56 bytes
if ($fd_temp = tmpfile()) {
for ($i = 0; $i < 28; $i += 2) {
// swap byte order
fwrite($fd_temp, substr($RIFFdataChunkContentsTest, 8 + $i + 1, 1));
fwrite($fd_temp, substr($RIFFdataChunkContentsTest, 8 + $i + 0, 1));
}
$dummy = $ThisFileInfo;
$dummy['avdataoffset'] = 0;
$dummy['avdataend'] = 20;
$dummy['error'] = array();
$ac3_tag = new getid3_ac3($fd_temp, $dummy);
fclose($fd_temp);
if (empty($dummy['error'])) {
$ThisFileInfo['audio'] = $dummy['audio'];
$ThisFileInfo['ac3'] = $dummy['ac3'];
$ThisFileInfo['warning'] = $dummy['warning'];
} else {
$ThisFileInfo['error'][] = 'Errors parsing DolbyDigital WAV: ' . explode(';', $dummy['error']);
}
} else {
$ThisFileInfo['error'][] = 'Could not create temporary file to analyze DolbyDigital WAV';
}
}
} elseif (strlen($RIFFdataChunkContentsTest) > 0 && substr($RIFFdataChunkContentsTest, 0, 4) == 'wvpk') {
// This is WavPack data
$ThisFileInfo['wavpack']['offset'] = $RIFFchunk[$chunkname][$thisindex]['offset'];
$ThisFileInfo['wavpack']['size'] = getid3_lib::LittleEndian2Int(substr($RIFFdataChunkContentsTest, 4, 4));
getid3_riff::RIFFparseWavPackHeader(substr($RIFFdataChunkContentsTest, 8, 28), $ThisFileInfo);
} else {
// This is some other kind of data (quite possibly just PCM)
// do nothing special, just skip it
}
fseek($fd, $RIFFchunk[$chunkname][$thisindex]['offset'] + 8 + $chunksize, SEEK_SET);
break;
case 'bext':
case 'cart':
case 'fmt ':
case 'MEXT':
case 'DISP':
// always read data in
$RIFFchunk[$chunkname][$thisindex]['data'] = fread($fd, $chunksize);
break;
default:
if (!empty($LISTchunkParent) && $RIFFchunk[$chunkname][$thisindex]['offset'] + $RIFFchunk[$chunkname][$thisindex]['size'] <= $LISTchunkMaxOffset) {
$RIFFchunk[$LISTchunkParent][$chunkname][$thisindex]['offset'] = $RIFFchunk[$chunkname][$thisindex]['offset'];
$RIFFchunk[$LISTchunkParent][$chunkname][$thisindex]['size'] = $RIFFchunk[$chunkname][$thisindex]['size'];
unset($RIFFchunk[$chunkname][$thisindex]['offset']);
unset($RIFFchunk[$chunkname][$thisindex]['size']);
if (isset($RIFFchunk[$chunkname][$thisindex]) && empty($RIFFchunk[$chunkname][$thisindex])) {
unset($RIFFchunk[$chunkname][$thisindex]);
}
if (isset($RIFFchunk[$chunkname]) && empty($RIFFchunk[$chunkname])) {
unset($RIFFchunk[$chunkname]);
}
$RIFFchunk[$LISTchunkParent][$chunkname][$thisindex]['data'] = fread($fd, $chunksize);
} elseif ($chunksize < 2048) {
// only read data in if smaller than 2kB
$RIFFchunk[$chunkname][$thisindex]['data'] = fread($fd, $chunksize);
} else {
fseek($fd, $chunksize, SEEK_CUR);
}
break;
}
break;
}
}
return $RIFFchunk;
}
示例2: ParseRIFF
//.........这里部分代码省略.........
unset($ac3_tag);
}
} elseif (strlen($RIFFdataChunkContentsTest) > 0 && substr($RIFFdataChunkContentsTest, 8, 2) == "w\v") {
// Dolby Digital WAV
// AC-3 content, but not encoded in same format as normal AC-3 file
// For one thing, byte order is swapped
$GETID3_ERRORARRAY =& $ThisFileInfo['warning'];
if (getid3_lib::IncludeDependency(GETID3_INCLUDEPATH . 'module.audio.ac3.php', __FILE__, false)) {
// ok to use tmpfile here - only 56 bytes
if ($fd_temp = tmpfile()) {
for ($i = 0; $i < 28; $i += 2) {
// swap byte order
fwrite($fd_temp, substr($RIFFdataChunkContentsTest, 8 + $i + 1, 1));
fwrite($fd_temp, substr($RIFFdataChunkContentsTest, 8 + $i + 0, 1));
}
$dummy = $ThisFileInfo;
$dummy['avdataoffset'] = 0;
$dummy['avdataend'] = 20;
$dummy['error'] = array();
$ac3_tag = new getid3_ac3($fd_temp, $dummy);
fclose($fd_temp);
if (empty($dummy['error'])) {
$ThisFileInfo['audio'] = $dummy['audio'];
$ThisFileInfo['ac3'] = $dummy['ac3'];
$ThisFileInfo['warning'] = $dummy['warning'];
} else {
$ThisFileInfo['error'][] = 'Errors parsing DolbyDigital WAV: ' . explode(';', $dummy['error']);
}
unset($ac3_tag);
} else {
$ThisFileInfo['error'][] = 'Could not create temporary file to analyze DolbyDigital WAV';
}
}
} elseif (strlen($RIFFdataChunkContentsTest) > 0 && substr($RIFFdataChunkContentsTest, 0, 4) == 'wvpk') {
// This is WavPack data
$ThisFileInfo['wavpack']['offset'] = $RIFFchunk[$chunkname][$thisindex]['offset'];
$ThisFileInfo['wavpack']['size'] = getid3_lib::LittleEndian2Int(substr($RIFFdataChunkContentsTest, 4, 4));
getid3_riff::RIFFparseWavPackHeader(substr($RIFFdataChunkContentsTest, 8, 28), $ThisFileInfo);
} else {
// This is some other kind of data (quite possibly just PCM)
// do nothing special, just skip it
}
$nextoffset = $RIFFchunk[$chunkname][$thisindex]['offset'] + 8 + $chunksize;
if ($nextoffset < 0 || !getid3_lib::intValueSupported($nextoffset)) {
$ThisFileInfo['warning'][] = 'Unable to parse chunk at offset ' . $nextoffset . ' because beyond ' . round(PHP_INT_MAX / 1073741824) . 'GB limit of PHP filesystem functions';
break 3;
}
fseek($fd, $RIFFchunk[$chunkname][$thisindex]['offset'] + 8 + $chunksize, SEEK_SET);
break;
case 'bext':
case 'cart':
case 'fmt ':
case 'strh':
case 'strf':
case 'indx':
case 'MEXT':
case 'DISP':
// always read data in
$RIFFchunk[$chunkname][$thisindex]['data'] = fread($fd, $chunksize);
break;
case 'JUNK':
// never read data in
$nextoffset = ftell($fd) + $chunksize;
if ($nextoffset < 0 || !getid3_lib::intValueSupported($nextoffset)) {
$ThisFileInfo['warning'][] = 'Unable to parse chunk at offset ' . $nextoffset . ' because beyond ' . round(PHP_INT_MAX / 1073741824) . 'GB limit of PHP filesystem functions';
break 3;
}
fseek($fd, $nextoffset, SEEK_SET);
break;
default:
if (!preg_match('#^[0-9]{2}(wb|pc|dc|db)$#', $chunkname) && !empty($LISTchunkParent) && $RIFFchunk[$chunkname][$thisindex]['offset'] + $RIFFchunk[$chunkname][$thisindex]['size'] <= $LISTchunkMaxOffset) {
$RIFFchunk[$LISTchunkParent][$chunkname][$thisindex]['offset'] = $RIFFchunk[$chunkname][$thisindex]['offset'];
$RIFFchunk[$LISTchunkParent][$chunkname][$thisindex]['size'] = $RIFFchunk[$chunkname][$thisindex]['size'];
unset($RIFFchunk[$chunkname][$thisindex]['offset']);
unset($RIFFchunk[$chunkname][$thisindex]['size']);
if (isset($RIFFchunk[$chunkname][$thisindex]) && empty($RIFFchunk[$chunkname][$thisindex])) {
unset($RIFFchunk[$chunkname][$thisindex]);
}
if (isset($RIFFchunk[$chunkname]) && empty($RIFFchunk[$chunkname])) {
unset($RIFFchunk[$chunkname]);
}
$RIFFchunk[$LISTchunkParent][$chunkname][$thisindex]['data'] = fread($fd, $chunksize);
} elseif ($chunksize > 0 && $chunksize < 2048) {
// only read data in if smaller than 2kB
$RIFFchunk[$chunkname][$thisindex]['data'] = fread($fd, $chunksize);
} else {
$nextoffset = ftell($fd) + $chunksize;
if ($nextoffset < 0 || !getid3_lib::intValueSupported($nextoffset)) {
$ThisFileInfo['warning'][] = 'Unable to parse chunk at offset ' . $nextoffset . ' because beyond ' . round(PHP_INT_MAX / 1073741824) . 'GB limit of PHP filesystem functions';
break 3;
}
fseek($fd, $nextoffset, SEEK_SET);
}
break;
}
break;
}
}
return $RIFFchunk;
}