diff --git a/web/includes/functions.php b/web/includes/functions.php index de6f4beaf..c00003853 100644 --- a/web/includes/functions.php +++ b/web/includes/functions.php @@ -2141,12 +2141,12 @@ function validHtmlStr( $input ) { return( htmlspecialchars( $input, ENT_QUOTES ) ); } -function getStreamHTML( $monitor, $scale=100 ) { +function getStreamHTML( $monitor, $scale=100, $mode="stream" ) { //FIXME, the width and height of the image need to be scaled. if ( ZM_WEB_STREAM_METHOD == 'mpeg' && ZM_MPEG_LIVE_FORMAT ) { $streamSrc = $monitor->getStreamSrc( array( "mode=mpeg", "scale=".$scale, "bitrate=".ZM_WEB_VIDEO_BITRATE, "maxfps=".ZM_WEB_VIDEO_MAXFPS, "format=".ZM_MPEG_LIVE_FORMAT ) ); return getVideoStream( "liveStream".$monitor->Id(), $streamSrc, reScale( $monitor->Width(), $scale ), reScale( $monitor->Height(), $scale ), ZM_MPEG_LIVE_FORMAT, $monitor->Name() ); - } else if ( canStream() ) { + } else if ( $mode == "stream" and canStream() ) { $streamSrc = $monitor->getStreamSrc( array( 'mode=jpeg', 'scale='.$scale, 'maxfps='.ZM_WEB_VIDEO_MAXFPS, 'buffer='.$monitor->StreamReplayBuffer() ) ); if ( canStreamNative() ) return getImageStream( "liveStream".$monitor->Id(), $streamSrc, reScale( $monitor->Width(), $scale ), reScale( $monitor->Height(), $scale ), $monitor->Name() ); @@ -2154,7 +2154,9 @@ function getStreamHTML( $monitor, $scale=100 ) { return getHelperStream( "liveStream".$monitor->Id(), $streamSrc, reScale( $monitor->Width(), $scale ), reScale( $monitor->Height(), $scale ), $monitor->Name() ); } else { $streamSrc = $monitor->getStreamSrc( array( 'mode=single', "scale=".$scale ) ); - Info( "The system has fallen back to single jpeg mode for streaming. Consider enabling Cambozola or upgrading the client browser."); + if ( $mode == "stream" ) { + Info( "The system has fallen back to single jpeg mode for streaming. Consider enabling Cambozola or upgrading the client browser."); + } return getImageStill( "liveStream".$monitor->Id(), $streamSrc, reScale( $monitor->Width(), $scale ), reScale( $monitor->Height(), $scale ), $monitor->Name() ); } } // end function getStreamHTML diff --git a/web/skins/classic/views/cycle.php b/web/skins/classic/views/cycle.php index a49e43953..772e37f22 100644 --- a/web/skins/classic/views/cycle.php +++ b/web/skins/classic/views/cycle.php @@ -18,71 +18,49 @@ // Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. // -if ( !canView( 'Stream' ) ) -{ - $view = "error"; - return; +if ( !canView( 'Stream' ) ) { + $view = "error"; + return; } -if ( empty($_REQUEST['mode']) ) -{ - if ( canStream() ) - $mode = "stream"; - else - $mode = "still"; -} -else -{ - $mode = validHtmlStr($_REQUEST['mode']); +if ( empty($_REQUEST['mode']) ) { + if ( canStream() ) + $mode = "stream"; + else + $mode = "still"; +} else { + $mode = validHtmlStr($_REQUEST['mode']); } $group = ''; $groupSql = ''; -if ( !empty($_REQUEST['group']) ) -{ - $group = validInt($_REQUEST['group']); - $row = dbFetchOne( 'SELECT * FROM Groups WHERE Id = ?', NULL, array($group) ); - $groupSql = " and find_in_set( Id, '".$row['MonitorIds']."' )"; +if ( !empty($_REQUEST['group']) ) { + $group = validInt($_REQUEST['group']); + $row = dbFetchOne( 'SELECT * FROM Groups WHERE Id = ?', NULL, array($group) ); + $groupSql = " and find_in_set( Id, '".$row['MonitorIds']."' )"; } $sql = "SELECT * FROM Monitors WHERE Function != 'None'$groupSql ORDER BY Sequence"; $monitors = array(); $monIdx = 0; -foreach( dbFetchAll( $sql ) as $row ) -{ - if ( !visibleMonitor( $row['Id'] ) ) - continue; - if ( isset($_REQUEST['mid']) && $row['Id'] == $_REQUEST['mid'] ) - $monIdx = count($monitors); - $row['ScaledWidth'] = reScale( $row['Width'], $row['DefaultScale'], ZM_WEB_DEFAULT_SCALE ); - $row['ScaledHeight'] = reScale( $row['Height'], $row['DefaultScale'], ZM_WEB_DEFAULT_SCALE ); - $monitors[] = $row; +foreach( dbFetchAll( $sql ) as $row ) { + if ( !visibleMonitor( $row['Id'] ) ) + continue; + if ( isset($_REQUEST['mid']) && $row['Id'] == $_REQUEST['mid'] ) + $monIdx = count($monitors); + $row['ScaledWidth'] = reScale( $row['Width'], $row['DefaultScale'], ZM_WEB_DEFAULT_SCALE ); + $row['ScaledHeight'] = reScale( $row['Height'], $row['DefaultScale'], ZM_WEB_DEFAULT_SCALE ); + $monitors[] = new Monitor( $row ); } $monitor = $monitors[$monIdx]; $nextMid = $monIdx==(count($monitors)-1)?$monitors[0]['Id']:$monitors[$monIdx+1]['Id']; -$montageWidth = $monitor['ScaledWidth']; -$montageHeight = $monitor['ScaledHeight']; -$widthScale = ($montageWidth*SCALE_BASE)/$monitor['Width']; -$heightScale = ($montageHeight*SCALE_BASE)/$monitor['Height']; +$montageWidth = $monitor->ScaledWidth(); +$montageHeight = $monitor->ScaledHeight(); +$widthScale = ($montageWidth*SCALE_BASE)/$monitor->Width(); +$heightScale = ($montageHeight*SCALE_BASE)/$monitor->Height(); $scale = (int)(($widthScale<$heightScale)?$widthScale:$heightScale); -if ( false && (ZM_WEB_STREAM_METHOD == 'mpeg' && ZM_MPEG_LIVE_FORMAT) ) -{ - $streamMode = "mpeg"; - $streamSrc = getStreamSrc( array( "mode=".$streamMode, "monitor=".$monitor['Id'], "scale=".$scale, "bitrate=".ZM_WEB_VIDEO_BITRATE, "maxfps=".ZM_WEB_VIDEO_MAXFPS, "format=".ZM_MPEG_LIVE_FORMAT ) ); -} -elseif ( $mode == 'stream' && canStream() ) -{ - $streamMode = "jpeg"; - $streamSrc = getStreamSrc( array( "mode=".$streamMode, "monitor=".$monitor['Id'], "scale=".$scale, "maxfps=".ZM_WEB_VIDEO_MAXFPS ) ); -} -else -{ - $streamMode = "single"; - $streamSrc = getStreamSrc( array( "mode=".$streamMode, "monitor=".$monitor['Id'], "scale=".$scale ) ); -} - noCacheHeaders(); $focusWindow = true; @@ -94,33 +72,17 @@ xhtmlHeaders(__FILE__, translate('CycleWatch') );
- +