Fix small defects

git-svn-id: http://php-reader.googlecode.com/svn/trunk@119 51a70ab9-7547-0410-9469-37e369ee0574
This commit is contained in:
svollbehr
2008-12-07 19:28:51 +00:00
parent 78ae76a6f6
commit 977067f651
3 changed files with 72 additions and 11 deletions

View File

@@ -151,11 +151,13 @@ final class MPEG_Audio extends MPEG_Audio_Object
else
$this->_reader->setOffset($offset);
/* Check for VBR headers */
$offset = $this->_reader->getOffset();
/* Check for VBR headers */
$firstFrame = new MPEG_Audio_Frame($this->_reader, $options);
$this->_frames[] =
$firstFrame = new MPEG_Audio_Frame($this->_reader, $options);
$postoffset = $this->_reader->getOffset();
$this->_reader->setOffset
($offset + 4 + self::$sidesizes
@@ -168,15 +170,25 @@ final class MPEG_Audio extends MPEG_Audio_Object
$this->_lameHeader =
new MPEG_Audio_LAMEHeader($this->_reader, $options);
}
// A header frame is not counted as an audio frame
array_pop($this->_frames);
}
$this->_reader->setOffset($offset + 4 + 32);
if ($this->_reader->readString8(4) == "VBRI") {
require_once("MPEG/Audio/VBRIHeader.php");
$this->_vbriHeader = new MPEG_Audio_VBRIHeader($this->_reader, $options);
// A header frame is not counted as an audio frame
array_pop($this->_frames);
}
$this->_reader->setOffset($offset);
$this->_reader->setOffset($postoffset);
// Ensure we always have read at least one frame
if (empty($this->_frames))
$this->_readFrames(1);
/* Read necessary frames */
if ($this->getOption("readmode", "lazy") == "lazy") {
@@ -214,6 +226,54 @@ final class MPEG_Audio extends MPEG_Audio_Object
}
}
/**
* Returns <var>true</var> if the audio bitstream contains the Xing VBR
* header, or <var>false</var> otherwise.
*
* @return boolean
*/
public function hasXingHeader() { return $this->_xingHeader === null; }
/**
* Returns the Xing VBR header, or <var>null</var> if not found in the audio
* bitstream.
*
* @return MPEG_Audio_XINGHeader
*/
public function getXingHeader() { return $this->_xingHeader; }
/**
* Returns <var>true</var> if the audio bitstream contains the LAME VBR
* header, or <var>false</var> otherwise.
*
* @return boolean
*/
public function hasLameHeader() { return $this->_lameHeader === null; }
/**
* Returns the LAME VBR header, or <var>null</var> if not found in the audio
* bitstream.
*
* @return MPEG_Audio_LAMEHeader
*/
public function getLameHeader() { return $this->_lameHeader; }
/**
* Returns <var>true</var> if the audio bitstream contains the Fraunhofer IIS
* VBR header, or <var>false</var> otherwise.
*
* @return boolean
*/
public function hasVbriHeader() { return $this->_vbriHeader === null; }
/**
* Returns the Fraunhofer IIS VBR header, or <var>null</var> if not found in
* the audio bitstream.
*
* @return MPEG_Audio_VBRIHeader
*/
public function getVbriHeader() { return $this->_vbriHeader; }
/**
* Returns the bitrate estimate. This value is either fetched from one of the
* headers or calculated based on the read frames.
@@ -264,7 +324,7 @@ final class MPEG_Audio extends MPEG_Audio_Object
/**
* Returns the playtime estimate as a string in the form of
* [hours]:minutes:seconds.milliseconds.
* [hours:]minutes:seconds.milliseconds.
*
* @param integer $seconds The playtime in seconds.
* @return string
@@ -276,7 +336,7 @@ final class MPEG_Audio extends MPEG_Audio_Object
/**
* Returns the exact playtime given in seconds as a string in the form of
* [hours]:minutes:seconds.milliseconds. In lazy reading mode the frames are
* [hours:]minutes:seconds.milliseconds. In lazy reading mode the frames are
* read from the file the first time you call this method to get the exact
* playtime of the file.
*
@@ -323,7 +383,7 @@ final class MPEG_Audio extends MPEG_Audio_Object
$this->_cumulativeBitrate += $frame->getBitrate();
$this->_frames[] = $frame;
if ($limit !== false && $i == $limit) {
if ($limit !== false && ($i + 1) == $limit) {
$this->_lastFrameOffset = $this->_reader->getOffset();
break;
}

View File

@@ -197,7 +197,7 @@ abstract class MPEG_Object
/**
* Formats given time in seconds into the form of
* [hours]:minutes:seconds.milliseconds.
* [hours:]minutes:seconds.milliseconds.
*
* @param integer $seconds The time to format, in seconds
* @return string

View File

@@ -42,7 +42,8 @@ require_once("MPEG/Object.php");
/**
* This class represents a MPEG Program Stream encoded file as described in
* ISO/IEC 13818-1 Systems standard.
* MPEG-1 Systems (ISO/IEC 11172-1) and MPEG-2 Systems (ISO/IEC 13818-1)
* standards.
*
* The Program Stream is a stream definition which is tailored for communicating
* or storing one program of coded data and other data in environments where
@@ -65,7 +66,7 @@ final class MPEG_PS extends MPEG_Object
private $_length;
/**
* Constructs the MPEG_ProgramStream class with given file and options.
* Constructs the class with given file and options.
*
* @param string|Reader $filename The path to the file, file descriptor of an
* opened file, or {@link Reader} instance.
@@ -133,7 +134,7 @@ final class MPEG_PS extends MPEG_Object
/**
* Returns the exact playtime given in seconds as a string in the form of
* [hours]:minutes:seconds.milliseconds.
* [hours:]minutes:seconds.milliseconds.
*
* @param integer $seconds The playtime in seconds.
* @return string