http://www.mediawiki.org/wiki/Special:Code/MediaWiki/56380

Revision: 56380
Author:   dale
Date:     2009-09-15 18:12:33 +0000 (Tue, 15 Sep 2009)

Log Message:
-----------
some strict php fixes and error fixes

Modified Paths:
--------------
    
trunk/extensions/MetavidWiki/skins/mv_embed/flvServer/FLV/Util/AMFSerialize.php
    trunk/extensions/MetavidWiki/skins/mv_embed/flvServer/MvFlv.php
    trunk/extensions/MetavidWiki/skins/mv_embed/flvServer/mvFlvServer.php

Modified: 
trunk/extensions/MetavidWiki/skins/mv_embed/flvServer/FLV/Util/AMFSerialize.php
===================================================================
--- 
trunk/extensions/MetavidWiki/skins/mv_embed/flvServer/FLV/Util/AMFSerialize.php 
    2009-09-15 18:09:52 UTC (rev 56379)
+++ 
trunk/extensions/MetavidWiki/skins/mv_embed/flvServer/FLV/Util/AMFSerialize.php 
    2009-09-15 18:12:33 UTC (rev 56380)
@@ -46,7 +46,7 @@
      */
     function serialize( $var, $skipMark = false )
     {
-       $number='';     
+       $number = '';
         // process objects as hashed arrays
         if ( is_object( $var ) )
             $var = (array)$var;
@@ -94,7 +94,6 @@
             return ( $skipMark ? '':"\x01" ) . ( $var ? "\x01" : "\x00" );
 
         } else if ( is_numeric( $var ) ) {
-                       
             $number .= pack( 'd', $var );
 
             // reverse bytes if we are in little-endian hardware
@@ -121,7 +120,8 @@
                     if ( $this->isLittleEndian )
                         $tz = strrev( $tz );
                 }
-
+                               if(!isset($tz))
+                                       $tz='';
                 return ( $skipMark ? '':"\x0B" ) . $this->serialize( 
(float)$ms, true ) . pack( 'n', $tz );
             }
 

Modified: trunk/extensions/MetavidWiki/skins/mv_embed/flvServer/MvFlv.php
===================================================================
--- trunk/extensions/MetavidWiki/skins/mv_embed/flvServer/MvFlv.php     
2009-09-15 18:09:52 UTC (rev 56379)
+++ trunk/extensions/MetavidWiki/skins/mv_embed/flvServer/MvFlv.php     
2009-09-15 18:12:33 UTC (rev 56380)
@@ -3,88 +3,91 @@
 include_once 'FLV/FLV.php';
 
 define('MAX_FLV_TS', 16777.216);//it appears tag times restart after 16777.216 
seconds;
-define('KEY_FRAME_DISTANCE', 2); //max keyframe distance   
+define('KEY_FRAME_DISTANCE', 2); //max keyframe distance
 
-//define('META_KFDATA_EXT', '.KfMeta'); //file extension for cached keframe 
metadata 
+//define('META_KFDATA_EXT', '.KfMeta'); //file extension for cached keframe 
metadata
 define('META_DATA_EXT', '.meta');        //basic cached meta
 
 class MyFLV extends FLV {
-       
+
        /**
-        * On audio-only files the frame index will use this as minimum gap 
+        * On audio-only files the frame index will use this as minimum gap
         */
        private $audioFrameGap = 3;
-       
+
        private $origMetaOfs = 0;
        private $origMetaSize = 0;
        private $origMetaData;
        private $compMetaData;
-       
+
        //added segment vars:
        private $fullMeta=null;
        private $mDuration=null;
        var $wrapTimeCount=0;
-       
+
        function getKeyFrameByteTimes( $start_time_sec, $end_time_sec=null ){
-               //print "play   $start_time_sec to $end_time_sec";              
+               //print "play   $start_time_sec to $end_time_sec";
                //@@todo cache byte offsets in memcache if available
                if( $end_time_sec)
                        $this->mDuration = $end_time_sec - $start_time_sec;
-               //print "SET metaDuration to:  " . $this->metaDuration . "\n";  
                                
+               //print "SET metaDuration to:  " . $this->metaDuration . "\n";
                //print_r($fullMeta);
-               $meta =& $this->getKeyFrameMetaData();                  
+               $meta = $this->getKeyFrameMetaData();
                //die;
-               $start_byte=$end_byte=null;             
-               if($start_time_sec==0 && $end_time_sec==null)$this->play();
+               $start_byte=$end_byte=null;
+
+               if($start_time_sec==0 && $end_time_sec==null)
+                       $this->play();
+
                $start_time_ms = $start_time_sec*1000;
-               $end_time_ms = ($end_time_sec==null)?null:$end_time_sec*1000;   
                        
-               
-               for($i=0; $i < count($meta['times']); $i++){                    
+               $end_time_ms = ($end_time_sec==null)?null:$end_time_sec*1000;
+
+               for($i=0; $i < count($meta['times']); $i++){
                        //set to the keyframe right before a keyframe of the 
requested start time
                        if($meta['times'][$i] >= $start_time_ms && 
$start_byte==null){
                                
$start_byte=(isset($meta['times'][$i-1]))?$meta['filepositions'][$i-1]:$meta['filepositions'][$i];
-                               if($end_time_ms==null)break;                    
+                               if($end_time_ms==null)break;
                        }
-                       //set to the keyframe right after the keyframe of the 
end time: 
+                       //set to the keyframe right after the keyframe of the 
end time:
                        if($end_time_ms!=null){
                                if($meta['times'][$i] >= $end_time_ms){
                                        $end_byte= $meta['filepositions'][$i];
                                        break;
-                               }                               
-                       }               
-               }               
+                               }
+                       }
+               }
                return array($start_byte, $end_byte);
        }
-       function playTimeReq( $start_time_sec, $end_time_sec=null ){    
-               //print "play   $start_time_sec to $end_time_sec";              
+       function playTimeReq( $start_time_sec, $end_time_sec=null ){
+               //print "play   $start_time_sec to $end_time_sec";
                //@@todo cache byte offsets in memcache if available
                if( $end_time_sec)
                        $this->mDuration = $end_time_sec - $start_time_sec;
-               //print "SET metaDuration to:  " . $this->metaDuration . "\n";  
                                
+               //print "SET metaDuration to:  " . $this->metaDuration . "\n";
                //print_r($fullMeta);
-               $meta =& $this->getKeyFrameMetaData();  
+               $meta =& $this->getKeyFrameMetaData();
                //die;
-               $start_byte=$end_byte=null;             
+               $start_byte=$end_byte=null;
                if($start_time_sec==0 && $end_time_sec==null)$this->play();
                $start_time_ms = $start_time_sec*1000;
-               $end_time_ms = ($end_time_sec==null)?null:$end_time_sec*1000;   
                        
-               
-               for($i=0; $i < count($meta['times']); $i++){                    
+               $end_time_ms = ($end_time_sec==null)?null:$end_time_sec*1000;
+
+               for($i=0; $i < count($meta['times']); $i++){
                        //set to the keyframe right before a keyframe of the 
requested start time
                        if($meta['times'][$i]>=$start_time_ms && 
$start_byte==null){
                                
$start_byte=(isset($meta['times'][$i-1]))?$meta['filepositions'][$i-1]:$meta['filepositions'][$i];
-                               if($end_time_ms==null)break;                    
+                               if($end_time_ms==null)break;
                        }
-                       //set to the keyframe right after the keyframe of the 
end time: 
+                       //set to the keyframe right after the keyframe of the 
end time:
                        if($end_time_ms!=null){
                                if($meta['times'][$i]>=$end_time_ms){
                                        $end_byte= $meta['filepositions'][$i];
                                        break;
-                               }                               
-                       }               
-               }               
-               $this->play($start_byte, $end_byte);            
-       }       
+                               }
+                       }
+               }
+               $this->play($start_byte, $end_byte);
+       }
        function computeMetaData()
        {
                ini_set("max_execution_time","0");//computeMetaData can take 
some time
@@ -95,69 +98,69 @@
                $this->compMetaData['keyframes']['filepositions'] = array();
                $this->compMetaData['keyframes']['times'] = array();
                $this->compMetaData['lasttimestamp'] = -1;
-               
+
                $this->origMetaOfs = 0;
                $this->origMetaSize = 0;
                $this->origMetaData = null;
-               
+
                $skipTagTypes = array();
                while ($tag = $this->getTag( $skipTagTypes ))
                {
                        // pre-calculate the timestamp as seconds
-               $ts = $tag->timestamp/1000;             
-               if ($tag->timestamp > 0 && $tag->type==FLV_Tag::TYPE_VIDEO ){   
+               $ts = $tag->timestamp/1000;
+               if ($tag->timestamp > 0 && $tag->type==FLV_Tag::TYPE_VIDEO ){
                        $ts = (MAX_FLV_TS*$this->wrapTimeCount) + $ts;
                        if($ts < $this->compMetaData['lasttimestamp']){
                                $this->wrapTimeCount++;
                                $ts = MAX_FLV_TS + $ts;
-                       }                                               
+                       }
                        //print "set end time to $ts \n";
-                       $this->compMetaData['lasttimestamp'] = $ts; 
-               }               
-           
+                       $this->compMetaData['lasttimestamp'] = $ts;
+               }
+
                switch ($tag->type)
                {
-                       case FLV_Tag::TYPE_VIDEO :                              
        
+                       case FLV_Tag::TYPE_VIDEO :
                                //Optimization, extract the frametype without 
analyzing the tag body
                                if ((ord($tag->body[0]) >> 4) == 
FLV_Tag_Video::FRAME_KEYFRAME)
                                {
                                                
$this->compMetaData['keyframes']['filepositions'][] = $this->getTagOffset();
                                                
$this->compMetaData['keyframes']['times'][] = $ts;
                                }
-                       
+
                        if ( !in_array(FLV_TAG::TYPE_VIDEO, $skipTagTypes) )
                        {
                                $this->compMetaData['width'] = $tag->width;
                                $this->compMetaData['height'] = $tag->height;
                                $this->compMetaData['videocodecid'] = 
$tag->codec;
-                                               //Processing one video tag is 
enough               
+                                               //Processing one video tag is 
enough
                                array_push( $skipTagTypes, FLV_Tag::TYPE_VIDEO 
);
-                       }                   
+                       }
                                break;
-                       
+
                        case FLV_Tag::TYPE_AUDIO :
-                       
-                                       //Save audio frame positions when there 
is no video 
+
+                                       //Save audio frame positions when there 
is no video
                                /*if (!$flv->hasVideo && $ts - $oldTs > 
$this->audioFrameGap)
                                {
                                        
$this->compMetaData['keyframes']['filepositions'][] = $this->getTagOffset();
                                        
$this->compMetaData['keyframes']['times'][] = $ts;
                                        $oldTs = $ts;
                                }
-                       
-                       if ( !in_array( FLV_Tag::TYPE_AUDIO, $skipTagTypes) )  
+
+                       if ( !in_array( FLV_Tag::TYPE_AUDIO, $skipTagTypes) )
                        {
                                $this->compMetaData['audiocodecid'] = 
$tag->codec;
                                $this->compMetaData['audiofreqid'] = 
$tag->frequency;
                                $this->compMetaData['audiodepthid'] = 
$tag->depth;
                                $this->compMetaData['audiomodeid'] = $tag->mode;
-                           
+
                                                //Processing one audio tag is 
enough
                                array_push( $skipTagTypes, FLV_Tag::TYPE_AUDIO 
);
                        } */
-                                       
+
                                break;
-                                       
+
                        case FLV_Tag::TYPE_DATA :
                        if ($tag->name == 'onMetaData')
                        {
@@ -167,19 +170,19 @@
                        }
                                break;
                }
-           
+
                //Does this actually help with memory allocation?
                unset($tag);
                }
-               
+
                if (! empty($this->compMetaData['keyframes']['times']))
                        $this->compMetaData['lastkeyframetimestamp'] = 
$this->compMetaData['keyframes']['times'][ 
count($this->compMetaData['keyframes']['times'])-1 ];
-       
+
                $this->compMetaData['duration'] = 
$this->compMetaData['lasttimestamp'];
-               
+
                return $this->compMetaData;
        }
-       
+
        function setMetaData( $metadata, $origMetaOfs = 0, $origMetaSize = 0 )
        {
                $this->compMetaData = $metadata;
@@ -191,50 +194,50 @@
        {
                if($this->fullMeta)return $this->fullMeta;
                if(is_file($this->fname . META_DATA_EXT)){
-                       $this->fullMeta = unserialize(file_get_contents 
($this->fname . META_DATA_EXT));                
+                       $this->fullMeta = unserialize(file_get_contents 
($this->fname . META_DATA_EXT));
                }else{
                        $this->computeMetaData();
                        if (! is_array($this->origMetaData)){
                                $this->fullMeta = $this->compMetaData;
                        }else{
                                $this->fullMeta = array_merge( 
$this->origMetaData, $this->compMetaData );
-                       }                       
-                       //free non-merged arrays: 
+                       }
+                       //free non-merged arrays:
                        unset($this->origMetaData);
-                       unset($this->compMetaData);                     
+                       unset($this->compMetaData);
                        //convert floats to int
                        foreach($this->fullMeta['keyframes']['times'] as 
$inx=>& $ts){
                                $ts = (int)($ts*1000);
-                       }       
+                       }
                        if(!file_put_contents($this->fname . META_DATA_EXT, 
serialize($this->fullMeta))){
                                 throw( new FLV_FileException('Unable to write 
out cached keyframe output to '.$this->fname) );
-                       }       
-               }                               
+                       }
+               }
                return $this->fullMeta;
        }
        function getKeyFrameMetaData(){
-               $meta = & $this->getMetaData();
+               $meta = $this->getMetaData();
                return $meta['keyframes'];
        }
        function getSegmentMetaData(){
                //pull base cached metadata
                //update duration & return new array
-               $meta = & $this->getMetaData();
-               $meta['keyframes'] = array();           
-               //@@todo update all the other metadata to match segment outupt  
+               $meta = $this->getMetaData();
+               $meta['keyframes'] = array();
+               //@@todo update all the other metadata to match segment outupt
                return $meta;
-       }               
+       }
        function play( $from = 0, $play_to=null )
        {
                fseek($this->fp, 0);
-               
+
                // get original file header just in case it has any special flag
                echo fread($this->fp, $this->bodyOfs + 4);
-               
+
                // output the metadata if available
-               $meta = $this->getSegmentMetaData();    
+               $meta = $this->getSegmentMetaData();
                //$meta = $this->getMetaData();
-                       
+
                if (! empty($meta))
                {
                        //serialize the metadata as an AMF stream
@@ -252,25 +255,25 @@
                        $out.= pack('N', 0);
                        //StreamID
                        $out.= pack('Cn', 0, 0);
-                       
+
                        echo $out;
                        echo $serMeta;
-                       
+
                        // PrevTagSize for the metadata
                        echo pack('N', strlen($serMeta) + strlen($out) );
                }
-               
+
                $chunkSize = 4096;
                $skippedOrigMeta = empty($this->origMetaSize);
-               //seek to offset point: 
+               //seek to offset point:
                fseek($this->fp, $from);
                while (! feof($this->fp))
                {
                        // if the original metadata is present and not yet 
skipped...
                        if (! $skippedOrigMeta)
-                       {                               
+                       {
                                $pos = ftell($this->fp);
-                       
+
                                // check if we are going to output it in this 
loop step
                                if ( $pos <= $this->origMetaOfs &&
                                         $pos + $chunkSize > $this->origMetaOfs 
)
@@ -278,10 +281,10 @@
                                        // output the bytes just before the 
original metadata tag
                                        if ($this->origMetaOfs - $pos > 0)
                                                echo fread($this->fp, 
$this->origMetaOfs - $pos);
-                                       
+
                                        // position the file pointer just after 
the metadata tag
                                        fseek($this->fp, $this->origMetaOfs + 
$this->origMetaSize);
-                                       
+
                                        $skippedOrigMeta = true;
                                        continue;
                                }

Modified: trunk/extensions/MetavidWiki/skins/mv_embed/flvServer/mvFlvServer.php
===================================================================
--- trunk/extensions/MetavidWiki/skins/mv_embed/flvServer/mvFlvServer.php       
2009-09-15 18:09:52 UTC (rev 56379)
+++ trunk/extensions/MetavidWiki/skins/mv_embed/flvServer/mvFlvServer.php       
2009-09-15 18:12:33 UTC (rev 56380)
@@ -1,15 +1,15 @@
 <?php
 /*
- * mv_flvServer.php 
+ * mv_flvServer.php
  *
  * @date Jul 25, 2008
- * 
+ *
  * this should enable serving segments of flv files
- * 
+ *
  * called with: mv_flvServer.php?file=myClip.flv&t=0:01:00/0:02:00
- * 
+ *
  * flash does not like get arguments in media files? so best to use mod-rewrite
- * something like: 
+ * something like:
  * /flvserver/my_file/start_time/end_time
  */
 define('BASE_LOCAL_CLIP_PATH', '/metavid/video_archive');
@@ -24,12 +24,11 @@
 if(!function_exists('filter_input')){
        die('you version of php lacks <b>filter_input()</b> function</br>');
 }
-
 do_request();
 function do_request(){
        $file_req = filter_input(INPUT_GET, 'file', FILTER_SANITIZE_STRING);
        $time_req = filter_input(INPUT_GET, 't', FILTER_SANITIZE_STRING);
-       
+
        //try to grab the file from /filename format
        if($file_req==''){
                if(isset($_SERVER['PHP_SELF'])){
@@ -43,12 +42,15 @@
        $file_req = str_replace(array('../','./'), '', $file_req);
        if($file_req=='')die('error: missing file name');
        $file_loc =BASE_LOCAL_CLIP_PATH.'/'.$file_req;
-       if(!is_file($file_loc))die('error: requested file not found');
-       
-       //if 't' is empty no seeking necessary: 
-       if($time_req==''){
+       if(!is_file($file_loc))
+               die('error: requested file not found:'. $file_loc);
+
+       //if 't' is empty no seeking necessary:
+       if( $time_req == '' ){
+               header('Content-type: '.FLASH_VIDEO_CONTENT_TYPE);
+               header('Content-Length: ' . filesize($file_loc) );
                output_full_file($file_loc);
-       }else{  
+       }else{
                //@@todo support more time request formats
                if(strpos( $time_req,'/')!==false){
                        list($start_time_ntp, 
$end_time_ntp)=explode('/',$time_req);
@@ -57,12 +59,13 @@
                }else{
                        $start_sec      = npt2seconds($time_req);
                        $end_sec        = null;
-                       if($start_sec==0)output_full_file($file_loc);
+                       if( $start_sec==0 )
+                               output_full_file($file_loc);
                }
                if($start_sec > $end_sec)die('error: requested invalid time 
range');
                //print "DO: $start_sec $end_sec \n";
                require_once('MvFlv.php');
-               //open up the metavid Flv object:       
+               //open up the metavid Flv object:
                $flv = new MyFLV();
                try {
                        $flv->open( $file_loc );
@@ -71,15 +74,15 @@
                }
                header('Content-type: '.FLASH_VIDEO_CONTENT_TYPE);
                $one_year = 60*60*24*365;
-               header("Expires: " . gmdate( "D, d M Y H:i:s", time() + 
$one_year  ) . " GM");  
+               header("Expires: " . gmdate( "D, d M Y H:i:s", time() + 
$one_year  ) . " GM");
                //small meta file to parse no big deal:
                list($start_byte, $end_byte) = 
$flv->getKeyFrameByteTimes($start_sec, $end_sec);
-               //send out content length: 
+               //send out content length:
                header('Content-Length: ' . ($end_byte - $start_byte) );
-               $flv->play($start_byte, $end_byte);     
+               $flv->play($start_byte, $end_byte);
                //$end = microtime(true);
-               //file_put_contents('/tmp/time.log', "<hr/>EXTRACT METADATA 
PROCESS TOOK " . number_format(($end-$start), 2) . " seconds<br/>");        
-               $flv->close();                  
+               //file_put_contents('/tmp/time.log', "<hr/>EXTRACT METADATA 
PROCESS TOOK " . number_format(($end-$start), 2) . " seconds<br/>");
+               $flv->close();
        }
 }
 
@@ -88,13 +91,13 @@
        header('Content-Type: '.FLASH_VIDEO_CONTENT_TYPE);
        while (ob_get_level() > 0) {
                ob_end_flush();
-       } //turn off output buffering   
+       } //turn off output buffering
        @readfile($file_loc);
        die();
 }
 
 function npt2seconds($str_time){
-       $time_ary = explode(':', $str_time);    
+       $time_ary = explode(':', $str_time);
        $hours=$min=$sec=0;
        if(count($time_ary)==3){
                $hours=$time_ary[0];
@@ -105,7 +108,7 @@
                $sec=$time_ary[1];
        }else if(count($time_ary)==1){
                $sec=$time_ary[0];
-       }       
+       }
        return ($hours*3600) + ($min*60) + $sec;
 }
 ?>



_______________________________________________
MediaWiki-CVS mailing list
[email protected]
https://lists.wikimedia.org/mailman/listinfo/mediawiki-cvs

Reply via email to