* @ingroup Media
*/
class GIFMetadataExtractor {
- static $gif_frame_sep;
- static $gif_extension_sep;
- static $gif_term;
+ /** @var string */
+ private static $gifFrameSep;
+
+ /** @var string */
+ private static $gifExtensionSep;
+
+ /** @var string */
+ private static $gifTerm;
const VERSION = 1;
/**
* @throws Exception
- * @param $filename string
+ * @param string $filename
* @return array
*/
static function getMetadata( $filename ) {
- self::$gif_frame_sep = pack( "C", ord( "," ) );
- self::$gif_extension_sep = pack( "C", ord( "!" ) );
- self::$gif_term = pack( "C", ord( ";" ) );
+ self::$gifFrameSep = pack( "C", ord( "," ) );
+ self::$gifExtensionSep = pack( "C", ord( "!" ) );
+ self::$gifTerm = pack( "C", ord( ";" ) );
$frameCount = 0;
$duration = 0.0;
while ( !feof( $fh ) ) {
$buf = fread( $fh, 1 );
- if ( $buf == self::$gif_frame_sep ) {
+ if ( $buf == self::$gifFrameSep ) {
// Found a frame
$frameCount++;
self::readGCT( $fh, $bpp );
fread( $fh, 1 );
self::skipBlock( $fh );
- } elseif ( $buf == self::$gif_extension_sep ) {
+ } elseif ( $buf == self::$gifExtensionSep ) {
$buf = fread( $fh, 1 );
if ( strlen( $buf ) < 1 ) {
throw new Exception( "Ran out of input" );
// strip out trailer.
$xmp = substr( $xmp, 0, -257 );
-
} else {
// unrecognized extension block
fseek( $fh, -( $blockLength + 1 ), SEEK_CUR );
} else {
self::skipBlock( $fh );
}
- } elseif ( $buf == self::$gif_term ) {
+ } elseif ( $buf == self::$gifTerm ) {
break;
} else {
if ( strlen( $buf ) < 1 ) {
}
/**
- * @param $fh
- * @param $bpp
+ * @param resource $fh
+ * @param int $bpp
* @return void
*/
static function readGCT( $fh, $bpp ) {
if ( $bpp > 0 ) {
- for ( $i = 1; $i <= pow( 2, $bpp ); ++$i ) {
+ $max = pow( 2, $bpp );
+ for ( $i = 1; $i <= $max; ++$i ) {
fread( $fh, 3 );
}
}
}
/**
- * @param $data
+ * @param string $data
* @throws Exception
* @return int
*/
}
/**
- * @param $fh
+ * @param resource $fh
* @throws Exception
*/
static function skipBlock( $fh ) {
* saying how long the sub-block is, followed by the sub-block.
* The entire block is terminated by a sub-block of length
* 0.
- * @param $fh FileHandle
- * @param $includeLengths Boolean Include the length bytes of the
+ * @param resource $fh File handle
+ * @param bool $includeLengths Include the length bytes of the
* sub-blocks in the returned value. Normally this is false,
* except XMP is weird and does a hack where you need to keep
* these length bytes.
$data .= fread( $fh, ord( $subLength ) );
$subLength = fread( $fh, 1 );
}
+
return $data;
}
-
}