$frameCount, 'looped' => $isLooped, 'duration' => $duration ); } static function readGCT( $fh, $bpp ) { if ($bpp > 0) { for( $i=1; $i<=pow(2,$bpp); ++$i ) { fread( $fh, 3 ); } } } static function decodeBPP( $data ) { $buf = unpack( 'C', $data ); $buf = $buf[1]; $bpp = ( $buf & 7 ) + 1; $buf >>= 7; $have_map = $buf & 1; return $have_map ? $bpp : 0; } static function skipBlock( $fh ) { while ( !feof( $fh ) ) { $buf = fread( $fh, 1 ); $block_len = unpack( 'C', $buf ); $block_len = $block_len[1]; if ($block_len == 0) return; fread( $fh, $block_len ); } } }