WordPress как на ладони
Недорогой хостинг для сайтов на WordPress: wordpress.jino.ru Самая быстрая Тема-конструктор для WordPress
функция не описана

getid3_riff::ParseRIFF() public WP 1.0

Это метод класса: getid3_riff{}

Хуков нет.

Возвращает

Массив/false.

Использование

$getid3_riff = new getid3_riff();
$getid3_riff->ParseRIFF( $startoffset, $maxoffset );
$startoffset(число) (обязательный)
$maxoffset(число) (обязательный)

Код getid3_riff::ParseRIFF() WP 5.5.1

wp-includes/ID3/module.audio-video.riff.php
<?php
public function ParseRIFF($startoffset, $maxoffset) {
	$info = &$this->getid3->info;

	$RIFFchunk = false;
	$FoundAllChunksWeNeed = false;

	try {
		$this->fseek($startoffset);
		$maxoffset = min($maxoffset, $info['avdataend']);
		while ($this->ftell() < $maxoffset) {
			$chunknamesize = $this->fread(8);
			//$chunkname =                          substr($chunknamesize, 0, 4);
			$chunkname = str_replace("\x00", '_', substr($chunknamesize, 0, 4));  // note: chunk names of 4 null bytes do appear to be legal (has been observed inside INFO and PRMI chunks, for example), but makes traversing array keys more difficult
			$chunksize =  $this->EitherEndian2Int(substr($chunknamesize, 4, 4));
			//if (strlen(trim($chunkname, "\x00")) < 4) {
			if (strlen($chunkname) < 4) {
				$this->error('Expecting chunk name at offset '.($this->ftell() - 8).' but found nothing. Aborting RIFF parsing.');
				break;
			}
			if (($chunksize == 0) && ($chunkname != 'JUNK')) {
				$this->warning('Chunk ('.$chunkname.') size at offset '.($this->ftell() - 4).' is zero. Aborting RIFF parsing.');
				break;
			}
			if (($chunksize % 2) != 0) {
				// all structures are packed on word boundaries
				$chunksize++;
			}

			switch ($chunkname) {
				case 'LIST':
					$listname = $this->fread(4);
					if (preg_match('#^(movi|rec )$#i', $listname)) {
						$RIFFchunk[$listname]['offset'] = $this->ftell() - 4;
						$RIFFchunk[$listname]['size']   = $chunksize;

						if (!$FoundAllChunksWeNeed) {
							$WhereWeWere      = $this->ftell();
							$AudioChunkHeader = $this->fread(12);
							$AudioChunkStreamNum  =                              substr($AudioChunkHeader, 0, 2);
							$AudioChunkStreamType =                              substr($AudioChunkHeader, 2, 2);
							$AudioChunkSize       = getid3_lib::LittleEndian2Int(substr($AudioChunkHeader, 4, 4));

							if ($AudioChunkStreamType == 'wb') {
								$FirstFourBytes = substr($AudioChunkHeader, 8, 4);
								if (preg_match('/^\xFF[\xE2-\xE7\xF2-\xF7\xFA-\xFF][\x00-\xEB]/s', $FirstFourBytes)) {
									// MP3
									if (getid3_mp3::MPEGaudioHeaderBytesValid($FirstFourBytes)) {
										$getid3_temp = new getID3();
										$getid3_temp->openfile($this->getid3->filename, null, $this->getid3->fp);
										$getid3_temp->info['avdataoffset'] = $this->ftell() - 4;
										$getid3_temp->info['avdataend']    = $this->ftell() + $AudioChunkSize;
										$getid3_mp3 = new getid3_mp3($getid3_temp, __CLASS__);
										$getid3_mp3->getOnlyMPEGaudioInfo($getid3_temp->info['avdataoffset'], false);
										if (isset($getid3_temp->info['mpeg']['audio'])) {
											$info['mpeg']['audio']         = $getid3_temp->info['mpeg']['audio'];
											$info['audio']                 = $getid3_temp->info['audio'];
											$info['audio']['dataformat']   = 'mp'.$info['mpeg']['audio']['layer'];
											$info['audio']['sample_rate']  = $info['mpeg']['audio']['sample_rate'];
											$info['audio']['channels']     = $info['mpeg']['audio']['channels'];
											$info['audio']['bitrate']      = $info['mpeg']['audio']['bitrate'];
											$info['audio']['bitrate_mode'] = strtolower($info['mpeg']['audio']['bitrate_mode']);
											//$info['bitrate']               = $info['audio']['bitrate'];
										}
										unset($getid3_temp, $getid3_mp3);
									}

								} elseif (strpos($FirstFourBytes, getid3_ac3::syncword) === 0) {

									// AC3
									$getid3_temp = new getID3();
									$getid3_temp->openfile($this->getid3->filename, null, $this->getid3->fp);
									$getid3_temp->info['avdataoffset'] = $this->ftell() - 4;
									$getid3_temp->info['avdataend']    = $this->ftell() + $AudioChunkSize;
									$getid3_ac3 = new getid3_ac3($getid3_temp);
									$getid3_ac3->Analyze();
									if (empty($getid3_temp->info['error'])) {
										$info['audio']   = $getid3_temp->info['audio'];
										$info['ac3']     = $getid3_temp->info['ac3'];
										if (!empty($getid3_temp->info['warning'])) {
											foreach ($getid3_temp->info['warning'] as $key => $value) {
												$this->warning($value);
											}
										}
									}
									unset($getid3_temp, $getid3_ac3);
								}
							}
							$FoundAllChunksWeNeed = true;
							$this->fseek($WhereWeWere);
						}
						$this->fseek($chunksize - 4, SEEK_CUR);

					} else {

						if (!isset($RIFFchunk[$listname])) {
							$RIFFchunk[$listname] = array();
						}
						$LISTchunkParent    = $listname;
						$LISTchunkMaxOffset = $this->ftell() - 4 + $chunksize;
						if ($parsedChunk = $this->ParseRIFF($this->ftell(), $LISTchunkMaxOffset)) {
							$RIFFchunk[$listname] = array_merge_recursive($RIFFchunk[$listname], $parsedChunk);
						}

					}
					break;

				default:
					if (preg_match('#^[0-9]{2}(wb|pc|dc|db)$#', $chunkname)) {
						$this->fseek($chunksize, SEEK_CUR);
						break;
					}
					$thisindex = 0;
					if (isset($RIFFchunk[$chunkname]) && is_array($RIFFchunk[$chunkname])) {
						$thisindex = count($RIFFchunk[$chunkname]);
					}
					$RIFFchunk[$chunkname][$thisindex]['offset'] = $this->ftell() - 8;
					$RIFFchunk[$chunkname][$thisindex]['size']   = $chunksize;
					switch ($chunkname) {
						case 'data':
							$info['avdataoffset'] = $this->ftell();
							$info['avdataend']    = $info['avdataoffset'] + $chunksize;

							$testData = $this->fread(36);
							if ($testData === '') {
								break;
							}
							if (preg_match('/^\xFF[\xE2-\xE7\xF2-\xF7\xFA-\xFF][\x00-\xEB]/s', substr($testData, 0, 4))) {

								// Probably is MP3 data
								if (getid3_mp3::MPEGaudioHeaderBytesValid(substr($testData, 0, 4))) {
									$getid3_temp = new getID3();
									$getid3_temp->openfile($this->getid3->filename, null, $this->getid3->fp);
									$getid3_temp->info['avdataoffset'] = $info['avdataoffset'];
									$getid3_temp->info['avdataend']    = $info['avdataend'];
									$getid3_mp3 = new getid3_mp3($getid3_temp, __CLASS__);
									$getid3_mp3->getOnlyMPEGaudioInfo($info['avdataoffset'], false);
									if (empty($getid3_temp->info['error'])) {
										$info['audio'] = $getid3_temp->info['audio'];
										$info['mpeg']  = $getid3_temp->info['mpeg'];
									}
									unset($getid3_temp, $getid3_mp3);
								}

							} elseif (($isRegularAC3 = (substr($testData, 0, 2) == getid3_ac3::syncword)) || substr($testData, 8, 2) == strrev(getid3_ac3::syncword)) {

								// This is probably AC-3 data
								$getid3_temp = new getID3();
								if ($isRegularAC3) {
									$getid3_temp->openfile($this->getid3->filename, null, $this->getid3->fp);
									$getid3_temp->info['avdataoffset'] = $info['avdataoffset'];
									$getid3_temp->info['avdataend']    = $info['avdataend'];
								}
								$getid3_ac3 = new getid3_ac3($getid3_temp);
								if ($isRegularAC3) {
									$getid3_ac3->Analyze();
								} else {
									// Dolby Digital WAV
									// AC-3 content, but not encoded in same format as normal AC-3 file
									// For one thing, byte order is swapped
									$ac3_data = '';
									for ($i = 0; $i < 28; $i += 2) {
										$ac3_data .= substr($testData, 8 + $i + 1, 1);
										$ac3_data .= substr($testData, 8 + $i + 0, 1);
									}
									$getid3_ac3->AnalyzeString($ac3_data);
								}

								if (empty($getid3_temp->info['error'])) {
									$info['audio'] = $getid3_temp->info['audio'];
									$info['ac3']   = $getid3_temp->info['ac3'];
									if (!empty($getid3_temp->info['warning'])) {
										foreach ($getid3_temp->info['warning'] as $newerror) {
											$this->warning('getid3_ac3() says: ['.$newerror.']');
										}
									}
								}
								unset($getid3_temp, $getid3_ac3);

							} elseif (preg_match('/^('.implode('|', array_map('preg_quote', getid3_dts::$syncwords)).')/', $testData)) {

								// This is probably DTS data
								$getid3_temp = new getID3();
								$getid3_temp->openfile($this->getid3->filename, null, $this->getid3->fp);
								$getid3_temp->info['avdataoffset'] = $info['avdataoffset'];
								$getid3_dts = new getid3_dts($getid3_temp);
								$getid3_dts->Analyze();
								if (empty($getid3_temp->info['error'])) {
									$info['audio']            = $getid3_temp->info['audio'];
									$info['dts']              = $getid3_temp->info['dts'];
									$info['playtime_seconds'] = $getid3_temp->info['playtime_seconds']; // may not match RIFF calculations since DTS-WAV often used 14/16 bit-word packing
									if (!empty($getid3_temp->info['warning'])) {
										foreach ($getid3_temp->info['warning'] as $newerror) {
											$this->warning('getid3_dts() says: ['.$newerror.']');
										}
									}
								}

								unset($getid3_temp, $getid3_dts);

							} elseif (substr($testData, 0, 4) == 'wvpk') {

								// This is WavPack data
								$info['wavpack']['offset'] = $info['avdataoffset'];
								$info['wavpack']['size']   = getid3_lib::LittleEndian2Int(substr($testData, 4, 4));
								$this->parseWavPackHeader(substr($testData, 8, 28));

							} else {
								// This is some other kind of data (quite possibly just PCM)
								// do nothing special, just skip it
							}
							$nextoffset = $info['avdataend'];
							$this->fseek($nextoffset);
							break;

						case 'iXML':
						case 'bext':
						case 'cart':
						case 'fmt ':
						case 'strh':
						case 'strf':
						case 'indx':
						case 'MEXT':
						case 'DISP':
							// always read data in
						case 'JUNK':
							// should be: never read data in
							// but some programs write their version strings in a JUNK chunk (e.g. VirtualDub, AVIdemux, etc)
							if ($chunksize < 1048576) {
								if ($chunksize > 0) {
									$RIFFchunk[$chunkname][$thisindex]['data'] = $this->fread($chunksize);
									if ($chunkname == 'JUNK') {
										if (preg_match('#^([\\x20-\\x7F]+)#', $RIFFchunk[$chunkname][$thisindex]['data'], $matches)) {
											// only keep text characters [chr(32)-chr(127)]
											$info['riff']['comments']['junk'][] = trim($matches[1]);
										}
										// but if nothing there, ignore
										// remove the key in either case
										unset($RIFFchunk[$chunkname][$thisindex]['data']);
									}
								}
							} else {
								$this->warning('Chunk "'.$chunkname.'" at offset '.$this->ftell().' is unexpectedly larger than 1MB (claims to be '.number_format($chunksize).' bytes), skipping data');
								$this->fseek($chunksize, SEEK_CUR);
							}
							break;

						//case 'IDVX':
						//	$info['divxtag']['comments'] = self::ParseDIVXTAG($this->fread($chunksize));
						//	break;

						case 'scot':
							// https://cmsdk.com/node-js/adding-scot-chunk-to-wav-file.html
							$RIFFchunk[$chunkname][$thisindex]['data'] = $this->fread($chunksize);
							$RIFFchunk[$chunkname][$thisindex]['parsed']['alter']           =                              substr($RIFFchunk[$chunkname][$thisindex]['data'],   0,   1);
							$RIFFchunk[$chunkname][$thisindex]['parsed']['attrib']          =                              substr($RIFFchunk[$chunkname][$thisindex]['data'],   1,   1);
							$RIFFchunk[$chunkname][$thisindex]['parsed']['artnum']          = getid3_lib::LittleEndian2Int(substr($RIFFchunk[$chunkname][$thisindex]['data'],   2,   2));
							$RIFFchunk[$chunkname][$thisindex]['parsed']['title']           =                              substr($RIFFchunk[$chunkname][$thisindex]['data'],   4,  43);  // "name" in other documentation
							$RIFFchunk[$chunkname][$thisindex]['parsed']['copy']            =                              substr($RIFFchunk[$chunkname][$thisindex]['data'],  47,   4);
							$RIFFchunk[$chunkname][$thisindex]['parsed']['padd']            =                              substr($RIFFchunk[$chunkname][$thisindex]['data'],  51,   1);
							$RIFFchunk[$chunkname][$thisindex]['parsed']['asclen']          =                              substr($RIFFchunk[$chunkname][$thisindex]['data'],  52,   5);
							$RIFFchunk[$chunkname][$thisindex]['parsed']['startseconds']    = getid3_lib::LittleEndian2Int(substr($RIFFchunk[$chunkname][$thisindex]['data'],  57,   2));
							$RIFFchunk[$chunkname][$thisindex]['parsed']['starthundredths'] = getid3_lib::LittleEndian2Int(substr($RIFFchunk[$chunkname][$thisindex]['data'],  59,   2));
							$RIFFchunk[$chunkname][$thisindex]['parsed']['endseconds']      = getid3_lib::LittleEndian2Int(substr($RIFFchunk[$chunkname][$thisindex]['data'],  61,   2));
							$RIFFchunk[$chunkname][$thisindex]['parsed']['endhundreths']    = getid3_lib::LittleEndian2Int(substr($RIFFchunk[$chunkname][$thisindex]['data'],  63,   2));
							$RIFFchunk[$chunkname][$thisindex]['parsed']['sdate']           =                              substr($RIFFchunk[$chunkname][$thisindex]['data'],  65,   6);
							$RIFFchunk[$chunkname][$thisindex]['parsed']['kdate']           =                              substr($RIFFchunk[$chunkname][$thisindex]['data'],  71,   6);
							$RIFFchunk[$chunkname][$thisindex]['parsed']['start_hr']        =                              substr($RIFFchunk[$chunkname][$thisindex]['data'],  77,   1);
							$RIFFchunk[$chunkname][$thisindex]['parsed']['kill_hr']         =                              substr($RIFFchunk[$chunkname][$thisindex]['data'],  78,   1);
							$RIFFchunk[$chunkname][$thisindex]['parsed']['digital']         =                              substr($RIFFchunk[$chunkname][$thisindex]['data'],  79,   1);
							$RIFFchunk[$chunkname][$thisindex]['parsed']['sample_rate']     = getid3_lib::LittleEndian2Int(substr($RIFFchunk[$chunkname][$thisindex]['data'],  80,   2));
							$RIFFchunk[$chunkname][$thisindex]['parsed']['stereo']          =                              substr($RIFFchunk[$chunkname][$thisindex]['data'],  82,   1);
							$RIFFchunk[$chunkname][$thisindex]['parsed']['compress']        =                              substr($RIFFchunk[$chunkname][$thisindex]['data'],  83,   1);
							$RIFFchunk[$chunkname][$thisindex]['parsed']['eomstrt']         = getid3_lib::LittleEndian2Int(substr($RIFFchunk[$chunkname][$thisindex]['data'],  84,   4));
							$RIFFchunk[$chunkname][$thisindex]['parsed']['eomlen']          = getid3_lib::LittleEndian2Int(substr($RIFFchunk[$chunkname][$thisindex]['data'],  88,   2));
							$RIFFchunk[$chunkname][$thisindex]['parsed']['attrib2']         = getid3_lib::LittleEndian2Int(substr($RIFFchunk[$chunkname][$thisindex]['data'],  90,   4));
							$RIFFchunk[$chunkname][$thisindex]['parsed']['future1']         =                              substr($RIFFchunk[$chunkname][$thisindex]['data'],  94,  12);
							$RIFFchunk[$chunkname][$thisindex]['parsed']['catfontcolor']    = getid3_lib::LittleEndian2Int(substr($RIFFchunk[$chunkname][$thisindex]['data'], 106,   4));
							$RIFFchunk[$chunkname][$thisindex]['parsed']['catcolor']        = getid3_lib::LittleEndian2Int(substr($RIFFchunk[$chunkname][$thisindex]['data'], 110,   4));
							$RIFFchunk[$chunkname][$thisindex]['parsed']['segeompos']       = getid3_lib::LittleEndian2Int(substr($RIFFchunk[$chunkname][$thisindex]['data'], 114,   4));
							$RIFFchunk[$chunkname][$thisindex]['parsed']['vt_startsecs']    = getid3_lib::LittleEndian2Int(substr($RIFFchunk[$chunkname][$thisindex]['data'], 118,   2));
							$RIFFchunk[$chunkname][$thisindex]['parsed']['vt_starthunds']   = getid3_lib::LittleEndian2Int(substr($RIFFchunk[$chunkname][$thisindex]['data'], 120,   2));
							$RIFFchunk[$chunkname][$thisindex]['parsed']['priorcat']        =                              substr($RIFFchunk[$chunkname][$thisindex]['data'], 122,   3);
							$RIFFchunk[$chunkname][$thisindex]['parsed']['priorcopy']       =                              substr($RIFFchunk[$chunkname][$thisindex]['data'], 125,   4);
							$RIFFchunk[$chunkname][$thisindex]['parsed']['priorpadd']       =                              substr($RIFFchunk[$chunkname][$thisindex]['data'], 129,   1);
							$RIFFchunk[$chunkname][$thisindex]['parsed']['postcat']         =                              substr($RIFFchunk[$chunkname][$thisindex]['data'], 130,   3);
							$RIFFchunk[$chunkname][$thisindex]['parsed']['postcopy']        =                              substr($RIFFchunk[$chunkname][$thisindex]['data'], 133,   4);
							$RIFFchunk[$chunkname][$thisindex]['parsed']['postpadd']        =                              substr($RIFFchunk[$chunkname][$thisindex]['data'], 137,   1);
							$RIFFchunk[$chunkname][$thisindex]['parsed']['hrcanplay']       =                              substr($RIFFchunk[$chunkname][$thisindex]['data'], 138,  21);
							$RIFFchunk[$chunkname][$thisindex]['parsed']['future2']         =                              substr($RIFFchunk[$chunkname][$thisindex]['data'], 159, 108);
							$RIFFchunk[$chunkname][$thisindex]['parsed']['artist']          =                              substr($RIFFchunk[$chunkname][$thisindex]['data'], 267,  34);
							$RIFFchunk[$chunkname][$thisindex]['parsed']['comment']         =                              substr($RIFFchunk[$chunkname][$thisindex]['data'], 301,  34); // "trivia" in other documentation
							$RIFFchunk[$chunkname][$thisindex]['parsed']['intro']           =                              substr($RIFFchunk[$chunkname][$thisindex]['data'], 335,   2);
							$RIFFchunk[$chunkname][$thisindex]['parsed']['end']             =                              substr($RIFFchunk[$chunkname][$thisindex]['data'], 337,   1);
							$RIFFchunk[$chunkname][$thisindex]['parsed']['year']            =                              substr($RIFFchunk[$chunkname][$thisindex]['data'], 338,   4);
							$RIFFchunk[$chunkname][$thisindex]['parsed']['obsolete2']       =                              substr($RIFFchunk[$chunkname][$thisindex]['data'], 342,   1);
							$RIFFchunk[$chunkname][$thisindex]['parsed']['rec_hr']          =                              substr($RIFFchunk[$chunkname][$thisindex]['data'], 343,   1);
							$RIFFchunk[$chunkname][$thisindex]['parsed']['rdate']           =                              substr($RIFFchunk[$chunkname][$thisindex]['data'], 344,   6);
							$RIFFchunk[$chunkname][$thisindex]['parsed']['mpeg_bitrate']    = getid3_lib::LittleEndian2Int(substr($RIFFchunk[$chunkname][$thisindex]['data'], 350,   2));
							$RIFFchunk[$chunkname][$thisindex]['parsed']['pitch']           = getid3_lib::LittleEndian2Int(substr($RIFFchunk[$chunkname][$thisindex]['data'], 352,   2));
							$RIFFchunk[$chunkname][$thisindex]['parsed']['playlevel']       = getid3_lib::LittleEndian2Int(substr($RIFFchunk[$chunkname][$thisindex]['data'], 354,   2));
							$RIFFchunk[$chunkname][$thisindex]['parsed']['lenvalid']        =                              substr($RIFFchunk[$chunkname][$thisindex]['data'], 356,   1);
							$RIFFchunk[$chunkname][$thisindex]['parsed']['filelength']      = getid3_lib::LittleEndian2Int(substr($RIFFchunk[$chunkname][$thisindex]['data'], 357,   4));
							$RIFFchunk[$chunkname][$thisindex]['parsed']['newplaylevel']    = getid3_lib::LittleEndian2Int(substr($RIFFchunk[$chunkname][$thisindex]['data'], 361,   2));
							$RIFFchunk[$chunkname][$thisindex]['parsed']['chopsize']        = getid3_lib::LittleEndian2Int(substr($RIFFchunk[$chunkname][$thisindex]['data'], 363,   4));
							$RIFFchunk[$chunkname][$thisindex]['parsed']['vteomovr']        = getid3_lib::LittleEndian2Int(substr($RIFFchunk[$chunkname][$thisindex]['data'], 367,   4));
							$RIFFchunk[$chunkname][$thisindex]['parsed']['desiredlen']      = getid3_lib::LittleEndian2Int(substr($RIFFchunk[$chunkname][$thisindex]['data'], 371,   4));
							$RIFFchunk[$chunkname][$thisindex]['parsed']['triggers']        = getid3_lib::LittleEndian2Int(substr($RIFFchunk[$chunkname][$thisindex]['data'], 375,   4));
							$RIFFchunk[$chunkname][$thisindex]['parsed']['fillout']         =                              substr($RIFFchunk[$chunkname][$thisindex]['data'], 379,   33);

							foreach (array('title', 'artist', 'comment') as $key) {
								if (trim($RIFFchunk[$chunkname][$thisindex]['parsed'][$key])) {
									$info['riff']['comments'][$key] = array($RIFFchunk[$chunkname][$thisindex]['parsed'][$key]);
								}
							}
							if ($RIFFchunk[$chunkname][$thisindex]['parsed']['filelength'] && !empty($info['filesize']) && ($RIFFchunk[$chunkname][$thisindex]['parsed']['filelength'] != $info['filesize'])) {
								$this->warning('RIFF.WAVE.scot.filelength ('.$RIFFchunk[$chunkname][$thisindex]['parsed']['filelength'].') different from actual filesize ('.$info['filesize'].')');
							}
							break;

						default:
							if (!empty($LISTchunkParent) && isset($LISTchunkMaxOffset) && (($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'] = $this->fread($chunksize);
							} elseif ($chunksize < 2048) {
								// only read data in if smaller than 2kB
								$RIFFchunk[$chunkname][$thisindex]['data'] = $this->fread($chunksize);
							} else {
								$this->fseek($chunksize, SEEK_CUR);
							}
							break;
					}
					break;
			}
		}

	} catch (getid3_exception $e) {
		if ($e->getCode() == 10) {
			$this->warning('RIFF parser: '.$e->getMessage());
		} else {
			throw $e;
		}
	}

	return $RIFFchunk;
}