[prev in list] [next in list] [prev in thread] [next in thread] 

List:       helix-server-cvs
Subject:    [Server-cvs] admin/web/build/mserver
From:       ryuan () helixcommunity ! org
Date:       2011-12-21 8:04:41
[Download RAW message or body]

Update of /cvsroot/server/admin/web/build/mserver
In directory cvs01.internal.helixcommunity.org:/tmp/cvs-serv32065/build/mserver

Modified Files:
	config_pending.nc.html help.js toc.js 
Added Files:
	config_broad_mpeg2ts_ingress.html 
Log Message:
Committed to :  SERVER_14_2_GLOBECOMM_LR and SERVER_CURRENT_RN (HEAD).
Reviewed by :  Chytanya, Dean

Synopsis:
=========
Adding a new admin page for MPEG2TS ingress in 14.2.3 LR

Branches: SERVER_14_2_GLOBECOMM_LR, HEAD
Reviewed By: Chytanya, Dean

Description:
============
Added a new admin page for MPEG2TS Ingress.

Add below sections to the default config file.

    <!-- MPEG2TS Ingress Live -->
    <List Name="MPTSLive">
        <Var ShortName="hx-mptslive"/>
        <Var MountPoint="/mptslive/"/>
    </List>

<List Name="MPEG2TS_Ingress">
    <Var GlobalEnable="1"/>
    <Var RetryInterval="60"/>
</List>


Files affected:
===============
New Files:
server/admin/web/src/srvprxy/config_broad_mpeg2ts_ingress.html.wasm
server/admin/web/build/mserver/ config_broad_mpeg2ts_ingress.html
server/admin/web/build/server/ config_broad_mpeg2ts_ingress.html

Modified files:
server/admin/web/server.opt
server/admin/web/src/srvprxy/pageData.pm
server/admin/web/src/srvprxy/toc~server.js.wasm
server/admin/web/src/js/help.js.wasm

server/admin/web/build/server/toc.js
server/admin/web/build/server/help.js
server/admin/web/build/mserver/toc.js
server/admin/web/build/mserver/help.js

//Other files affected by modified pageData.pm \
server/admin/web/build/mproxy/config_pending.nc.html \
server/admin/web/build/mserver/config_pending.nc.html \
server/admin/web/build/proxy/config_pending.nc.html \
server/admin/web/build/server/config_pending.nc.html \
server/admin/web/build/server/datachannel.html

server-restricted/installer/server/retailservinst.cpp

Testing Performed:
================
Unit Tests:
1. Open admin, the MPEG2TS ingress admin page shows. If there is no license for \
MPEG2TS ingress, the admin page disappears. 2. Checked the IP validator for local \
address and multicast address

Integration Tests:
None

Leak Tests: None
Performance Tests: N/A

Platforms Tested: win-x86_64-vc10
Builds Verified: win-x86_64-vc10

QA Hints
========
None.






Index: config_pending.nc.html
===================================================================
RCS file: /cvsroot/server/admin/web/build/mserver/config_pending.nc.html,v
retrieving revision 1.11
retrieving revision 1.12
diff -u -d -r1.11 -r1.12
--- config_pending.nc.html	7 Dec 2011 06:06:24 -0000	1.11
+++ config_pending.nc.html	21 Dec 2011 08:04:38 -0000	1.12
@@ -113,6 +113,7 @@
 aTabTitles[ "51" ] = "Multiplexing";
 aTabTitles[ "52" ] = "Bookmarking";
 aTabTitles[ "56" ] = "Flash Media Encoding";
+aTabTitles[ "57" ] = "MPEG2-TS Encoding";
 
 var fChanges = ( isObj(diffConfig) && isObj(diffConfig.config) );
 

--- NEW FILE: config_broad_mpeg2ts_ingress.html ---

<HTML>
<HEAD>

<META http-equiv="Content-Type" content="text/html; charset=utf-8"> 
         <TITLE>MPEG2-TS Encoding</TITLE>

<SCRIPT SRC="xblib.js"></SCRIPT>
<SCRIPT SRC="string.js"></SCRIPT>
<SCRIPT SRC="client.js"></SCRIPT>
<SCRIPT SRC="results.js"></SCRIPT>
<SCRIPT SRC="help.js"></SCRIPT>
<SCRIPT SRC="Docs/home.js"></SCRIPT>
<SCRIPT>
if ( isX11 )
{
   document.write( '<LINK REL=stylesheet HREF="main_nav4_x.css" TYPE="text/css">' );
}
else if ( isIE && isMac )
{
   document.write( '<LINK REL=stylesheet HREF="main_ie_mac.css" TYPE="text/css">' );
}
else if ( isNav4 && isMac )
{
   document.write( '<LINK REL=stylesheet HREF="main_nav4_mac.css" TYPE="text/css">' \
); }
else
{
   document.write( '<LINK REL=stylesheet HREF="main.css" TYPE="text/css">' );
}
var contextID = "57";
</SCRIPT>

<SCRIPT SRC="propview.js"></SCRIPT>
<SCRIPT SRC="enumproplist.js"></SCRIPT>
<SCRIPT SRC="propview_nolist.js"></SCRIPT>
<SCRIPT SRC="port.js"></SCRIPT>

<SCRIPT SRC="servvar.get.html?mpeg2tsingress=config.MPEG2TS_Ingress&serverData=config&diffConfig=diffconfig&mptsfs=config.FSMount.MPTSLive"></SCRIPT>


<SCRIPT language="JavaScript">
var propFS =
[   
    new PropObj( 'MountPoint', "/mptslive/", false, true, null, null, "mountpoint", \
"Mount Point", true ), ];

var propSetSources =
[
    new PropObj( 'Enable', "1", false, true, 0, 1, "int", "Enable Source" ),
    new PropObj( 'StreamName', "", false, true, null, null, "string", "Stream Name"),
    new PropObj( 'LocalAddress', "", false, false, null, null, "ipzero", "Local \
Address" ),  new PropObj( 'MulticastAddress', "", false, false, null, null, "ip", \
"Multicast Address" ),  new PropObj( 'LocalPort', "", false, true, 1024, 55555, \
"int", "Local Port" ),  new PropObj( 'ProgramNumber', "", false, false, 1, 9999, \
"int", "Program Number" ),  new PropObj( 'VideoPID', "", false, false, 1, 9999, \
"int", "Video PID" ),  new PropObj( 'AudioPID', "", false, false, 1, 9999, "int", \
"Audio PID" ),  new PropObj( 'InitialTimeout', "60", false, false, 1, 3600, "int", \
"Initial Timeout" ),  new PropObj( 'StreamTimeout', "60", false, false, 1, 99999, \
"int", "Stream Timeout" ),      new PropObj( 'AudioBitRate', "", false, false, 1, \
9999, "int", "Audio Bit Rate" ),  new PropObj( 'VideoBitRate', "", false, false, 1, \
9999, "int", "Video Bit Rate" ), ];

var propSetMain =
[
    new PropObj('GlobalEnable', "1", false, true,  0, 1, "int", "Enable MPEG2TS \
Input" ),  new PropObj('RetryInterval', "60", false, true,  1, 999, "int", "Retry \
Interval" ), ];

initAllPortsList( serverData);
var propList = new PropList( "MPEG2TS_Ingress", mpeg2tsingress, propSetMain, \
propSetSources); var propFSList = new PropList('MPEG2TS_Mount_Point', mptsfs , \
propFS, null);

function MPEG2TSIngressPropView ()
{
    this.base = NestedPropListView ;
    this.base( "MPEG2TS Ingress", propList, "Source Path", 
               "config.MPEG2TS_Ingress.", "servvar",
               "theForm", "theList", "theEdit" );
    this.m_itemDefValue = "Source";
    this.m_resultsTitleListIndex = 2;
	this.m_resultsTitlePropIndex = 3;
    this.propViewParam = new PropListView("MPEG2TS Mount Point", propFSList, \
"config.FSMount.MPTSLive.", "configvar", "theForm");  }

MPEG2TSIngressPropView.prototype = new NestedPropListView ;
var propView = new MPEG2TSIngressPropView();

MPEG2TSIngressPropView.prototype.preValidateSubList = function ( subListName )
{
    var sourcePathVal = theForm["MountPoint"].value;
    if (sourcePathVal.charAt(sourcePathVal.length -1 ) != '/' || \
sourcePathVal.charAt(0) != '/')  {
        this.errMsg = "Mountpoint must begin and end with a forward slash ('/').";
        return rejectInput( theForm["MountPoint"], this.errMsg );
    }
    
    return true;
}

MPEG2TSIngressPropView.prototype.postValidateSubList = function ( subListName )
{
    var localAddress = getCtrlValue( theForm.LocalAddress );
    var multiAddress = getCtrlValue( theForm.MulticastAddress );
    
    if(!localAddress && !multiAddress)
    {
        return rejectInput( theForm.LocalAddress,
            "Local Address and Multicast Address cannot be both empty at the same \
time." );  }
    
    if ( localAddress)
	{	
		var localip = new IPAddress( localAddress );
		if ( ! (localip && localip.isIPv4 && !localip.isMulticast) )
		{
			return rejectInput( theForm.LocalAddress,
				"Local Address requires a unicast IPV4 address." );
		}
	}
    	
	if ( multiAddress )
	{										 
		var ip = new IPAddress( multiAddress );
		if ( ! (ip && ip.isMulticast && ip.isIPv4) )
		{
			return rejectInput( theForm.MulticastAddress,
				"Multicast Address requires a Class D IPV4 address." );
		}
	}
   
    var subList = this.getSubList();

	if ( subList.m_status || subList.prop( "LocalPort" ).isDirty() )
	{
		var port = getCtrlValue( theForm.LocalPort );
		var conflict = findPortConflictName( port );
		if ( conflict )
		{
			return rejectInput( theForm.LocalPort, getConflictErrMsg( conflict, "MPEG2TS \
Ingress Port" ) );  }

		// check the port against other MPEG2TS sources
		function _checkPortConflict( otherSubList, prop )
		{
			// don't compare this sublist with itself
			if ( otherSubList == subList ) return;

			if ( prop.getValue() == port )
			{
				conflict = otherSubList.toString();
				return 1;
			}
		}
		propList.propSearch( "LocalPort", _checkPortConflict );
		if ( conflict )
		{
			return rejectInput( theForm.LocalPort, 
				"The '" + subListName + "' Listen Port conflicts with the '" + conflict + "' \
Listen Port." );  }
	}
    return true;
}

MPEG2TSIngressPropView.prototype.postValidate = function ()
{
    if ( ! this.propViewParam.validate( true ) )
    {
        return false;
    }

    this.propViewParam.buildParamString();
    if(this.propViewParam.m_submitString.length > 0 )
    {
        this.m_serverMethod = "configvar";
    }
    else
    {
        this.m_serverMethod = "servvar";
    }
    this.m_submitString += this.propViewParam.m_submitString;
    
    return true;
}

MPEG2TSIngressPropView.prototype.postSubmit = function ()
{
    if(this.propViewParam.m_submitString.length > 0)
    {   
        this.propViewParam.m_propList.commit();
    }
}

var theForm;

function onLoad ()
{
    theForm = document.theForm;
   
    checkForPendingChanges( diffConfig );
   
    propView.onLoad( window );
    propView.propViewParam.onLoad( window, true);

}   // onLoad 
</SCRIPT>
</HEAD>
<BODY 
   CLASS="CONFIG" 
   onLoad="_configOnLoadDefault( onLoad );"
   onUnLoad="_configOnUnLoadDefault(  );"
> 
<TABLE border="0" cellpadding="0" cellspacing="0" width="100%">
<TR><TD align="left" valign="bottom" width="100%" NOWRAP>
   <P class="headline">BROADCASTING</P>
</TD></TR>
<TR>
</TABLE>
<BR>
<TABLE border="0" cellpadding="0" cellspacing="0" width="476">
<tr><TD class="bodyText">
Media encoders that output MPEG-2 Transport Streams can be used with Helix Server by \
sending media directly to the server address or to a multicast address. It is not \
required to know the exact PIDs associated with the Program, Audio and Video streams \
as Helix Server will use the first streams found within the Transport Stream when set \
to 0. <BR><BR>
These incoming streams are available for playback with RTSP, RTMP and HLS clients. To \
connect to an incoming stream, it is required to use the /mptslive/ mountpoint \
prefixed by the appropriate translation mountpoint. For example, /rtsplive/ for RTSP \
playback, /rtmplive/ for RTMP playback and /m3ugen/ for HLS playback. </td></tr>
</TABLE>
<BR>
<FORM 
   method="POST" 
   action="javascript:propView.doSubmit();" 
   onsubmit="return propView.validate()" 
   onreset="onLoad(); return false;"
   name="theForm"
> 
<table border="0" cellspacing="0" cellpadding="0" width="476" style="width:476;">
<TR><TD bgcolor="#E6E6E6" width="19"><img src="images/spacer.gif"  BORDER="0" \
HEIGHT="17" HSPACE="0" NAME="IMG_DIRTY_TAB" VSPACE="0" WIDTH="19"></TD> <TD \
bgcolor="#E6E6E6" class="TabText" width="243" NOWRAP>MPEG2-TS Encoding</TD> <TD \
bgcolor="#FFFFFF" width="20"><img src="images/diagonal.gif"></TD> <TD \
bgcolor="#FFFFFF" width="194" align="right"><SPAN ID="RESTART_IMG_SPAN" \
STYLE="visibility:hidden;"><A HREF="javascript://" onclick="displayChanges()"><img \
src="images/spacer.gif"  BORDER="0" HEIGHT="16" HSPACE="8" NAME="RESTART_IMG" \
VSPACE="0" WIDTH="102"></A></SPAN><A CLASS="linkText" HREF="javascript://" \
onclick="contextHelp()">HELP</A></TD> </TR>
</TABLE>
<table class="formTable" border="0" cellspacing="0" cellpadding="6" width="476">
    <tr>
    <TD class="input" valign="top" align="RIGHT" width="44%">
    		<span class="offsetLabel">Mount Point<FONT color="red">*</FONT></span>
    	</td>
    	<TD class="input" valign="top" align="left" width="56%">
    		<input CLASS="longInput" MAXLENGTH="255" NAME="MountPoint" SIZE="20" \
TYPE="text" VALUE="">  </td>
    </tr>
    <tr>
    <TD class="input" valign="top" align="RIGHT" width="44%">
    		<span class="offsetLabel">Enable MPEG2TS Input</span>
    	</td>
    	<TD class="input" valign="top" align="left" width="56%">
    		<select CLASS="input" NAME="GlobalEnable" SIZE="1" WIDTH="253">
                <OPTION value="1">Yes</OPTION>
                <OPTION value="0">No</OPTION>
            </SELECT>
    	</td>
    </tr>
    <tr>
    <TD class="input" valign="top" align="RIGHT" width="44%">
    		<span class="offsetLabel">Retry Interval</span>
    	</td>
    	<TD class="input" valign="top" align="left" width="56%">
    		<input CLASS="input" MAXLENGTH="255" NAME="RetryInterval" SIZE="6" TYPE="text" \
VALUE=""><SPAN CLASS="unitsOffset">&nbsp;seconds</SPAN>  </td>
    </tr>
<tr>
    <TD class="input" valign="top" width="44%">
          <TABLE CLASS="PROPLIST_LABEL" width="199" BORDER="0" CELLSPACING="0" \
CELLPADDING="0"><TR>  <TD NOWRAP align="left" class="input">Sources</TD>
          <TD NOWRAP align="right"><A href="javascript://" \
onclick="propView.createSubList()"><IMG src="images/add_g.gif" HSPACE=1 ALT="Add New \
Source Name" BORDER=0></A><A href="javascript://" \
onclick="propView.removeSubList()"><IMG src="images/delete_g.gif" HSPACE=1 \
ALT="Remove Current Source Name" BORDER=0></A><A href="javascript://" \
onclick="propView.copySubList()"><IMG src="images/copy_g.gif" HSPACE=1 ALT="Copy \
Current Source Name" BORDER=0></A></TD>  </TR></TABLE>
          <DIV STYLE="overflow:hidden;"><FONT CLASS="input"><SELECT  \
CLASS="longInput" NAME="theList" SIZE="8" WIDTH="199">  <SCRIPT>
                 if ( isMac && isNav4 )
                 {
                    document.write( "<OPTION>XXXXXXXXXXXXXXXXXXXXXXXXXXXXXX" );
                 }
              </SCRIPT>
          </SELECT></FONT></DIV>
    </TD>
    <TD class="input" valign="top" width="56%">
        Source Name
        <BR>
        <input CLASS="longInput" MAXLENGTH="255" NAME="theEdit" SIZE="20" TYPE="text" \
VALUE="">

        <BR>    
        Enable Source
        <BR>
        <select CLASS="input" NAME="Enable" SIZE="1" WIDTH="253">
            <OPTION value="1">Yes</OPTION>
            <OPTION value="0">No</OPTION>
        </SELECT>

        <BR>
        Stream Name
        <BR>
        <input CLASS="longInput" MAXLENGTH="255" NAME="StreamName" SIZE="20" \
TYPE="text" VALUE="">

        <BR>    
        Local Address
        <BR>
        <input CLASS="longInput" MAXLENGTH="255" NAME="LocalAddress" SIZE="20" \
TYPE="text" VALUE="">

        <BR>
        Multicast Address
        <BR>
        <input CLASS="longInput" MAXLENGTH="255" NAME="MulticastAddress" SIZE="20" \
TYPE="text" VALUE="">

        <BR>    
        Local Port
        <BR>
        <input CLASS="longInput" MAXLENGTH="255" NAME="LocalPort" SIZE="20" \
TYPE="text" VALUE="">

        <BR>
        Program Number
        <BR>
        <input CLASS="longInput" MAXLENGTH="255" NAME="ProgramNumber" SIZE="20" \
TYPE="text" VALUE="">

        <BR>    
        Video PID
        <BR>
        <input CLASS="longInput" MAXLENGTH="255" NAME="VideoPID" SIZE="20" \
TYPE="text" VALUE="">

        <BR>
        Audio PID
        <BR>
        <input CLASS="longInput" MAXLENGTH="255" NAME="AudioPID" SIZE="20" \
TYPE="text" VALUE="">

        <BR>
        Initial Timeout
        <BR>
        <input CLASS="Input" MAXLENGTH="255" NAME="InitialTimeout" SIZE="16" \
TYPE="text" VALUE=""><SPAN CLASS="unitsOffset">seconds</SPAN>

        <BR>    
        Stream Timeout
        <BR>
        <input CLASS="Input" MAXLENGTH="255" NAME="StreamTimeout" SIZE="16" \
TYPE="text" VALUE=""><SPAN CLASS="unitsOffset">seconds</SPAN>

        <BR>
        Video Bit Rate
        <BR>
        <input CLASS="Input" MAXLENGTH="255" NAME="VideoBitRate" SIZE="16" \
TYPE="text" VALUE=""><SPAN CLASS="unitsOffset">kilobits per second</SPAN>

        <BR>
        Audio Bit Rate
        <BR>
        <input CLASS="Input" MAXLENGTH="255" NAME="AudioBitRate" SIZE="16" \
TYPE="text" VALUE=""><SPAN CLASS="unitsOffset">kilobits per second</SPAN>

        <BR>
    </TD>
</TR>
<TR>
   <TD colspan="2" bgcolor="#E6E6E6" VALIGN="middle" width="100%" class="body" \
                ALIGN="left">
      <FONT color="red">*A server restart is required to effect changes applied to \
this field.</FONT>  </TD>
</TR>
<SCRIPT>
if ( ! isNav4 )
{
	document.write( '</TABLE><table class="formTable" border="0" cellspacing="0" \
cellpadding="6" width="476">' ); }
else
{
	document.write( "<TR </TR>" );
}
</SCRIPT>
<TR>
   <TD colspan="2" bgcolor="#E6E6E6" valign="middle" align="right">
      <img src="images/spacer.gif"  BORDER="0" HEIGHT="17" HSPACE="0" \
NAME="IMG_DIRTY_APPLY" VSPACE="0" WIDTH="19"><input type="image" \
src="images/apply.gif" alt="Apply changes made to this page" name="Apply changes made \
to this page" value="Apply" border="0">&nbsp;<A HREF="javascript://" \
onclick="window.onLoad();"><img src="images/reset.gif"  ALT="Cancel un-applied \
changes" BORDER="0" HSPACE="0" VSPACE="0"></A>  </TD>
</TR>
</TABLE>
</FORM>
<SCRIPT>
   if ( isMac && isNav4 )
   {
      document.write( '<LAYER ID="MACFIX" BGCOLOR="#FFFFFF" WIDTH="476" HEIGHT="800" \
PAGEX="0" PAGEY="0" STYLE="position:absolute;"></LAYER>' );  }
</SCRIPT>

<DIV ID="DIV_DYNFORM" style="position:absolute;visibility:hidden"></DIV>
</BODY>
</HTML>


Index: toc.js
===================================================================
RCS file: /cvsroot/server/admin/web/build/mserver/toc.js,v
retrieving revision 1.13
retrieving revision 1.14
diff -u -d -r1.13 -r1.14
--- toc.js	11 Nov 2011 05:38:24 -0000	1.13
+++ toc.js	21 Dec 2011 08:04:38 -0000	1.14
@@ -58,6 +58,7 @@
 	new TOCLink( "Windows Media Encoding", "config_broad_wm.html", tmpParent );
 	new TOCLink( "Live Archiving ", "config_broad_archive.html", tmpParent );
 	new TOCLinkLicensed( "Broadcast Redundancy", "config_broad_redun.html", tmpParent, \
"BroadcastRedundancy.Enabled", true ); +    new TOCLinkLicensed( "MPEG2-TS Encoding", \
"config_broad_mpeg2ts_ingress.html", tmpParent, "DataTypes.MPEG2TSIngress.Enabled", \
false);  
 	// *** Broadcast Distribution ***
 	tmpParent = new TOCLink( "Broadcast Distribution", "" );

Index: help.js
===================================================================
RCS file: /cvsroot/server/admin/web/build/mserver/help.js,v
retrieving revision 1.8
retrieving revision 1.9
diff -u -d -r1.8 -r1.9
--- help.js	7 Dec 2011 06:06:25 -0000	1.8
+++ help.js	21 Dec 2011 08:04:38 -0000	1.9
@@ -85,6 +85,7 @@
 	,"config_snmp"				: "SNMP_plugin"
 	,"config_multiplexer"		: "multiplexer"
     ,"config_broad_rtmp_ingress"     : "broadcast_rtmp_ingress"
+    ,"config_broad_mpeg2ts_ingress" : "broadcast_mpeg2ts_ingress"
 };
 
 function getHelpTopicForPage ( page )


_______________________________________________
Server-cvs mailing list
Server-cvs@helixcommunity.org
http://lists.helixcommunity.org/mailman/listinfo/server-cvs


[prev in list] [next in list] [prev in thread] [next in thread] 

Configure | About | News | Add a list | Sponsored by KoreLogic