windows-nt/Source/XPSP1/NT/multimedia/dshow/mfvideo/tvplayer/app/tvdemo.htm
2020-09-26 16:20:57 +08:00

1216 lines
38 KiB
HTML

<HTML>
<HEAD>
<TITLE>TV Player</TITLE>
</HEAD>
<BODY SCROLL="no" BGCOLOR="#0" OnLoad="Init();">
<SCRIPT LANGUAGE="JScript">
/******** ATVEF variables *****************/
var g_bAutoEnhancement = false; // Automatically show enhancement when available?
var g_iEnhState = 0; // 0 = No enhancement available
// 1 = enh available, waiting for trigger
// 2 = enh & trigger available, waiting for user
// 3 = enh & trigger available and being displayed
var g_pCurEnh; // Current enhancement. Valid if g_iEnhState >= 1
var g_pCurTrig; // Last trigger. Valid if g_iEnhState >= 2
/******* Other variables ******************/
// Misc Constants
var g_iStartChannel = 5;
var g_strIPAddress = "0.0.0.0";
var g_bUseWinProp = false;
var g_iBigITimeOut = 10000; // milliseconds for which Big I is shown
// Dimensions
var g_cDefaultAppHeight = 600; // Total height of app window in windowed mode
var g_cDefaultPanelHeight = 40; // Height of control panel (below screen)
var g_cTitleBarHeight = 20; // Height of title bar (above screen)
var g_cAspectRatio = 16.0/9.0; // Width/Height of screen area
// State variables
var g_InitializationState = 1; // 0 Creating Objects 1 Init 2 Run, 3 done
var g_bIsFullScreen = true; // Cached value of FullScCtl.FullScreen
var g_bSndBeforePause = true;
var g_bIsVideoRunning = true;
// Button controls
var g_nNumButs = 15;
var g_strButID; // Object IDs
var g_nButPos = new Array(
/* Fields: x, y, width, height, display?, x-base, y-base */
new Array( -35, 2, 15, 15, 'none', 2, 0), //maximize 0
new Array( -35, 2, 15, 15, '', 2, 0), //restore 1
new Array( -50, 2, 15, 15, '', 2, 0), //minimize 2
new Array( -20, 2, 15, 15, '', 2, 0), //close 3
new Array(-100, -25, 24, 18, '', 1, 1), //pause 4
new Array(-100, -25, 24, 18, 'none', 1, 1), //play 5
new Array( 26, -25, 24, 18, '', 1, 1), //ff 6
new Array( -50, -25, 24, 18, '', 1, 1), //rw 7
new Array( 75, -25, 24, 18, '', 1, 1), //not mute 8
new Array( 75, -25, 24, 18, 'none', 1, 1), //mute 9
new Array( 105, -25, 75, 15, '', 1, 1), //volume 10
new Array( -20, -25, 40, 18, '', 1, 1), //channel number 11
new Array(-150, -25, 30, 24, 'none', 1, 1), //show enhancement 12
new Array(-150, -25, 30, 24, 'none', 1, 1), //show enhancement disabled 13
new Array(-150, -25, 30, 24, 'none', 1, 1) //hide enhancement 14
);
/*************************************************************************/
/* Function: Init */
/*************************************************************************/
function Init(){
if(1 != g_InitializationState){
return; // already we have initialized
}/* end of if statement */
g_strButID = new Array(
document.Maximize,
document.Restore,
document.Minimize,
document.Close,
document.Pause,
document.Play,
document.FastForward,
document.Rewind,
document.NotMute,
document.Mute,
document.VolSlider,
document.ChannelNumberTextBox,
document.ShowEnh,
document.ShowEnhDisabled,
document.HideEnh
);
if (g_bUseWinProp == true)
{
//WinProp.BackgroundImage = "player1.bmp";
}
StatusBar.style.left = document.body.clientWidth/2 - 50;
StatusBar.style.top = document.body.clientHeight/2 - 15;
StatusBar.EdgeStyle = "Sunken";
StatusBar.FontFace = "Tahoma";
StatusBar.FontSize = 11;
StatusBar.Text = "Loading...";
StatusBar.ColorStatic = 0xffffff;
StatusBar.ColorHover = 0xffffff;
StatusBar.style.display = '';
ReadProfile();
try {
InitVidCtrl();
ViewCtl.Run();
StatusBar.style.display = 'none';
}
catch(e) {
HandleError(e);
return;
}
OnResize();
max_OnClick();
window.onresize = OnResize;
ChannelNumberTextBox.EdgeStyle = "Sunken";
ChannelNumberTextBox.FontFace = "Tahoma";
ChannelNumberTextBox.FontSize = 11;
ChannelNumberTextBox.Text = g_iStartChannel;
ChannelNumberTextBox.ColorStatic = 0xffffff;
ChannelNumberTextBox.ColorHover = 0xffffff;
VolSlider.Min = 0;
VolSlider.Max = 65535;
VolSlider.Value = 20000;
AtvefRecv.TuneTo("Channel37", g_strIPAddress);
ControlsDiv.style.visibility = 'visible';
ViewCtl.style.display = '';
g_InitializationState = 2;
}/* end of function Init */
/*************************************************************/
/* Name: ReadProfile */
/* Description: */
/*************************************************************/
function ReadProfile()
{
try
{
g_strIPAddress = TVProf.IPSinkAddress;
}
catch(e)
{
alert("HKLM\Software\\Microsoft\\Windows\\CurrentVersion\\Applets\\TVPlayer\\IPSinkAddress is not set in registry");
window.close();
}
try
{
audioDest = TVProf.AudioDestination;
SndCtl.ComponentType = audioDest;
}
catch(e)
{
//Continue to use default if registry value doesn't exist.
}
}
/*************************************************************/
/* Name: InitVidCtrl */
/* Description: */
/*************************************************************/
function InitVidCtrl()
{
ViewCtl.AutoSize = false;
//ViewCtl.MaintainAspectRatio = true;
tscontainer = new ActiveXObject("Tuner.SystemTuningSpaces");
bFoundTS = false;
for (iTS=0; iTS < tscontainer.Count; iTS++)
{
try
{
if (bFoundTS == false)
{
ts = tscontainer.Item(iTS);
bFoundTS = true;
}
}
catch(e)
{
}
}
tr = ts.CreateTuneRequest();
tr.Channel = g_iStartChannel;
ViewCtl.View(tr);
ViewCtl.Build();
//ViewCtl.VideoRendererActive.ColorKey = &HFF00FF;
}
/*************************************************************/
/* Name: OnReadyStateChange */
/* Description: Handles ready state changes of the control. */
/*************************************************************/
function OnReadyStateChange(state)
{
return;
}/* end of function OnReadyStateChange */
/*************************************************************/
/* Name: OnResize */
/* Description: Handles resizing of the control. */
/*************************************************************/
function OnResize()
{
try {
lAppWidth = document.body.clientWidth;
lAppHeight = document.body.clientHeight;
// Center line. Used as an offset for button positions.
xOffset = lAppWidth/2;
// One of the offsets from which button positions are measured. The other is 0.
yOffset = lAppHeight;
// In windowed mode buttons, title bar, and screen have their exclusive areas
// In fullscreen mode buttons are superimposed on screen
if (g_bIsFullScreen == false)
{
// TODO: Use the same logic that IE uses to resize the background BMP that we use for the panel
lPanelHeight = (lAppHeight * g_cDefaultPanelHeight) / g_cDefaultAppHeight;
lScreenHeight = lAppHeight - lPanelHeight - g_cTitleBarHeight;
lScreenTop = g_cTitleBarHeight;
}
else
{
lScreenHeight = lAppHeight;
lScreenTop = 0;
}
// In the horizontal dimension the screen stretches from edge to edge
// in both windowed and fullscreen modes.
lScreenWidth = lAppWidth;
lScreenLeft = 0;
// In windowed mode, round the corners of our app window using the WinProp object
if (g_bUseWinProp == true)
{
WinProp.width = lAppWidth;
WinProp.height = lAppHeight;
if (g_bIsFullScreen == false)
WinProp.SetRoundRectRgn(0, 0, lAppWidth+4, lAppHeight+4, 20, 20);
else
WinProp.SetRectRgn(0, 0, lAppWidth, lAppHeight);
}
for (i = 0; i < g_nNumButs; i++)
{
g_strButID[i].style.left = g_nButPos[i][5]*xOffset + g_nButPos[i][0];
g_strButID[i].style.top = g_nButPos[i][6]*yOffset + g_nButPos[i][1];
g_strButID[i].width = g_nButPos[i][2];
g_strButID[i].height = g_nButPos[i][3];
g_strButID[i].style.display = g_nButPos[i][4];
}
// Compute the largest possible size for the video control while maintaining the aspect ratio
if (lScreenWidth/lScreenHeight >= g_cAspectRatio)
{
// height is the constraining factor and we have paddings on the left and right
lVideoHeight = lScreenHeight;
lVideoWidth = lScreenHeight * g_cAspectRatio;
ViewCtl.style.top = lScreenTop;
ViewCtl.style.left = (lScreenWidth - lVideoWidth)/2;
}
else
{
// width is the constraining factor and we have paddings on the top and bottom
lVideoWidth = lScreenWidth;
lVideoHeight = lScreenWidth / g_cAspectRatio;
ViewCtl.style.left = lScreenLeft;
//ViewCtl.style.top = (lScreenHeight - lVideoHeight)/2;
ViewCtl.style.top = 2*g_cTitleBarHeight;
}
//alert("App = " + lAppWidth + "x" + lAppHeight);
//alert("Screen = " + lScreenWidth + "x" + lScreenHeight);
//alert("Video = " + lVideoWidth + "x" + lVideoHeight);
ViewCtl.width = lVideoWidth;
ViewCtl.height = lVideoHeight;
// Position the enhancement icon 5 pixels from the top left corner of the video
// document.all.TheBigI.style.top = ViewCtl.style.top + 5;
// document.all.TheBigI.style.left= ViewCtl.style.left + 5;
// ATVEF content can take up the entire screen area since it doesn't have an aspect ratio
/*
document.all.Atvef.width = lScreenWidth;
document.all.Atvef.height = lScreenHeight;
document.all.Atvef.style.top = lScreenTop;
document.all.Atvef.style.left = lScreenLeft;
*/
// Hack! The atvef page must be aligned with the video so that the video shows through correctly
document.all.Atvef.width = lVideoWidth;
document.all.Atvef.height = lScreenHeight - 2*g_cTitleBarHeight; /*lVideoHeight + (lScreenHeight - lVideoHeight)/2; */
document.all.Atvef.style.top = ViewCtl.style.top;
document.all.Atvef.style.left = ViewCtl.style.left;
}
catch(e) {
HandleError(e);
return;
}
}
/*************************************************************/
/* Name: play_OnClick */
/* Description: OnClick callback for play/pause button */
/*************************************************************/
function play_OnClick()
{
try {
ViewCtl.Run();
g_bVideoIsRunning = true;
SndCtl.Mute = g_bSndBeforePause;
// Switch from play button to pause immediately. Also store for OnResize.
Pause.style.display = '';
g_nButPos[4][4] = '';
Play.style.display = 'none';
g_nButPos[5][4] = 'none';
}
catch(e) {
HandleError(e);
}
}
/*************************************************************/
/* Name: pause_OnClick */
/* Description: OnClick callback for play/pause button */
/*************************************************************/
function pause_OnClick()
{
try {
//ViewCtl.Pause();
ViewCtl.Stop();
g_bVideoIsRunning = false;
g_bSndBeforePause = SndCtl.Mute;
SndCtl.Mute = true;
Pause.style.display = 'none';
g_nButPos[4][4] = 'none';
Play.style.display = '';
g_nButPos[5][4] = '';
}
catch(e) {
HandleError(e);
}
}
/*************************************************************/
/* Name: fwd_OnClick */
/* Description: OnClick callback for forward button */
/*************************************************************/
function fwd_OnClick()
{
try {
tr.Channel = tr.Channel + 1;
if (tr.Channel > tr.TuningSpace.MaxChannel)
tr.Channel = tr.TuningSpace.MinChannel;
ViewCtl.InputActive.Tune = tr;
ChannelNumberTextBox.text = tr.Channel;
}
catch(e) {
HandleError(e);
}
}
/*************************************************************/
/* Name: rew_OnClick */
/* Description: OnClick callback for rewind button */
/*************************************************************/
function rew_OnClick()
{
try {
tr.Channel = tr.Channel - 1;
if (tr.Channel < tr.TuningSpace.MinChannel)
tr.Channel = tr.TuningSpace.MaxChannel;
ViewCtl.InputActive.Tune = tr;
ChannelNumberTextBox.text = tr.Channel;
}
catch(e) {
HandleError(e);
}
}
/*************************************************************/
/*************************************************************/
function enhance_OnClick()
{
SetAutoEnhance();
}
/*************************************************************/
/* Name: max_OnClick
/* Description: Maximize the window
/*************************************************************/
function max_OnClick()
{
// Toggle display of Maximize and Restore buttons. To do this, just change the
// values in the g_nButPos array. OnResize() will do the rest.
g_nButPos[0][4] = 'none'; // Maximize
g_nButPos[1][4] = ''; // Restore
FullScCtl.FullScreen = true;
g_bIsFullScreen = true;
for (i = 0; i < g_nNumButs; i++)
{
g_strButID[i].BackColor = "0"; //"16711935";
}
/*
oHTA.windowState = "maximize";
WinProp.ShowWindow(3);
*/
}
/*************************************************************/
/* Name: restore_OnClick
/* Description: Restore the window
/*************************************************************/
function restore_OnClick()
{
// Toggle display of Maximize and Restore buttons. To do this, just change the
// values in the g_nButPos array. OnResize() will do the rest.
g_nButPos[0][4] = ''; // Maximize
g_nButPos[1][4] = 'none'; // Restore
FullScCtl.FullScreen = false;
g_bIsFullScreen = false;
for (i = 0; i < g_nNumButs; i++)
{
g_strButID[i].BackColor = "0";
}
/*
oHTA.windowState = "normal";
WinProp.ShowWindow(9);
*/
}
/*************************************************************/
/* Name: min_OnClick
/* Description: Minimize the window
/*************************************************************/
function min_OnClick()
{
//oHTA.windowState = "minimize";
if (g_bUseWinProp == true)
{
WinProp.ShowWindow(6);
}
}
/*************************************************************/
/* Name: close_OnClick
/* Description: Close the window
/*************************************************************/
function close_OnClick()
{
window.close();
}
/*************************************************************/
/* Name: muteon
/* Description: turn sound off
/*************************************************************/
function muteon()
{
SndCtl.Mute = true;
Mute.style.display = '';
NotMute.style.display = 'none';
g_nButPos[8][4] = 'none'; //array from which OnResize() reads button attributes
g_nButPos[9][4] = ''; //array from which OnResize() reads button attributes
}
/*************************************************************/
/* Name: muteoff
/* Description: turn sound on
/*************************************************************/
function muteoff()
{
SndCtl.Mute = false;
Mute.style.display = 'none';
NotMute.style.display = '';
g_nButPos[8][4] = ''; //array from which OnResize() reads button attributes
g_nButPos[9][4] = 'none'; //array from which OnResize() reads button attributes
}
/*************************************************************/
/* Name: enhOn_onClick */
/*************************************************************/
function showEnh_onClick()
{
// state must be 2
ChangeURL();
SetEnhState(3);
}
/*************************************************************/
/* Name: enhOff_onClick */
/*************************************************************/
function hideEnh_onClick()
{
// state must be 3
SwitchOffEnhancement();
SetEnhState(2);
}
/*************************************************************/
/* Name: SetVolume
/* Description: Sets the volume level
/*************************************************************/
function SetVolume(val)
{
SndCtl.Volume = val;
}
/*************************************************************/
/* Name: ShowButtons
/* Description: Unhides the button controls
/*************************************************************/
function ShowButtons()
{
ControlsDiv.style.display = '';
}
/*************************************************************/
/* Name: Drag, StartDrag, StopDrag
/* Description: Handles window moves
/*************************************************************/
var oldX;
var oldY;
var top;
var left;
function KeyUp()
{
ViewCtl.About();
}
/*************************************************************/
/* Name: HandleError
/* Description: Handles errors
/*************************************************************/
function HandleError(error)
{
r = "Script error "+ error + "\n" + error.srcText;
if (error.line > 0)
{
r += "\nat line " + error.line + ", character " + error.linepos;
}
window.alert(r);
}
/**********************ATVEF stuff**************************/
function HideBigI()
{
document.all.TheBigI.style.display = 'none';
}
function ShowBigI()
{
document.all.TheBigI.style.left = document.body.clientWidth - 80;
document.all.TheBigI.style.top = ViewCtl.style.top;
document.all.TheBigI.style.display = '';
window.setTimeout("HideBigI()", g_iBigITimeOut);
}
/*************************************************************/
/* Name: EnhancementNewHandler
/*************************************************************/
function EnhancementNewHandler(pEnh)
{
//window.alert("New Enhancement " + pEnh.SessionName);
if (g_iEnhState != 0)
{
alert("Debug error: Enh available, recd new enhancement");
return;
}
// State 0 -> whatever
ProcessEnhancement(pEnh);
}
/*************************************************************/
/* Name: EnhancementNewHandler
/*************************************************************/
function EnhancementUpdatedHandler(pEnh, flags)
{
//window.alert("Enhancement Updated " + pEnh.SessionName + " : " + flags);
// Clear current enhancement, triggers etc
SetEnhState(0);
// State 0 -> whatever
ProcessEnhancement(pEnh);
}
/*************************************************************/
/* Name: EnhancementNewHandler
/*************************************************************/
function EnhancementExpiredHandler(pEnh)
{
//window.alert("Enhancement Expired "+ pEnh.SessionName);
if (g_iEnhState < 1)
{
alert("Debug error: Enh not available, recd expired enhancement");
return;
}
if (g_iEnhState == 3)
{
// State 3 -> 2
SwitchOffEnhancement();
}
// State 2 -> 0
SetEnhState(0);
}
/*************************************************************/
/* Name: EnhancementNewHandler
/*************************************************************/
function TriggerNewHandler(pTrig, bActive)
{
// window.alert("New Trigger " + pTrig.Name + " " + pTrig.URL);
if (g_iEnhState == 0) // no enhancement
{
alert("Debug error: received trigger but no enhancement available");
return;
}
// The flowchart contains 3 checks here that we don't support
if ((g_iEnhState == 1) || // g_pCurTrig is invalid
(pTrig.URL != g_pCurTrig.URL))
{
if (pTrig.Name == "")
{
// Attempting to change URL, but trigger is nameless. Ignore.
alert("Nameless trigger, ignored");
return;
}
else
{
// For the demo assume all triggers are releasable
//alert("New trigger " + pTrig.Name + " " + pTrig.URL);
g_pCurTrig = pTrig;
iPrevState = g_iEnhState;
SetEnhState(2);
ShowBigI();
if ((g_bAutoEnhancement == true) ||
(iPrevState == 3)) // We were already viewing atvef
{
ChangeURL();
}
}
}
//if (pTrig.Script != "")
// alert(pTrig.Script);
if (g_iEnhState == 3)
document.frames("Atvef").window.execScript(pTrig.Script);
/*
// Come back to state 1
if (g_iEnhState == 3)
{
SwitchOffEnhancement(); //Optimization, don't do
SetEnhState(2);
}
if (g_iEnhState == 2)
{
SetEnhState(1);
}
// Now start going up again
g_pCurTrig = pTrig;
SetEnhState(2);
ShowBigI();
if (g_bAutoEnhancement == true)
{
// Automatically go from State 2 -> 3
ProcessTrigger(pTrig);
SetEnhState(3);
}
*/
}
/*************************************************************/
/* Name: EnhancementNewHandler
/*************************************************************/
function ChangeURL()
{
if (g_bIsVideoRunning == true)
{
// Hack! Since tv: does not tune to atvef content, let
// video run in background and have a colorkeyed region
// on the atvef page in place of the tv: object
// pause_OnClick();
// ViewCtl.style.display = 'none';
}
HideBigI();
NavigateAtvefTo(g_pCurTrig.URL);
document.all.Atvef.style.visibility = "visible";
}
/*************************************************************/
/* Name: ProcessEnhancement */
/*************************************************************/
function ProcessEnhancement(pEnh)
{
// current state must be 0
SetEnhState(1);
g_pCurEnh = pEnh;
}
/*************************************************************/
/* Name: SwitchOffEnhancement */
/*************************************************************/
function SwitchOffEnhancement()
{
// Switch to video
document.all.Atvef.style.visibility = "hidden";
// play_OnClick();
ViewCtl.style.display = '';
// Current state must be 3
SetEnhState(2);
}
/*************************************************************/
/* Name: Parse URL and navigate to it */
/*************************************************************/
function NavigateAtvefTo(strURL)
{
var strURL2;
if (strURL.substr(0,3) == "lid")
{
strURL2 = "file://C:\\atveftemp\\" + strURL.substr(6);
//alert("lid, " + strURL2);
}
else
{
strURL2 = strURL;
//alert("regular, " + strURL2);
}
document.all.Atvef.src = strURL2;
}
/*************************************************************/
/* Name: SetEnhState */
/*************************************************************/
function SetEnhState(newState)
{
if (newState == 0)
{
ShowEnh.style.display = 'none';
//ShowEnhDisabled.style.display = 'none';
HideEnh.style.display = 'none';
}
else if (newState == 1)
{
ShowEnh.style.display = 'none';
//ShowEnhDisabled.style.display = '';
HideEnh.style.display = 'none';
}
else if (newState == 2)
{
ShowEnh.style.display = '';
//ShowEnhDisabled.style.display = 'none';
HideEnh.style.display = 'none';
}
else if (newState == 3)
{
ShowEnh.style.display = 'none';
//ShowEnhDisabled.style.display = 'none';
HideEnh.style.display = '';
}
g_iEnhState = newState;
}
/*************************************************************/
/* Name: SetAutoEnhance */
/*************************************************************/
function SetAutoEnhance()
{
if (g_bAutoEnhancement == true)
{
g_bAutoEnhancement = false;
// autoEnh.value = "AutoEnhance on";
}
else
{
g_bAutoEnhancement = true;
// autoEnh.value = "AutoEnhance off";
if (g_iEnhState == 2)
{
ProcessTrigger(g_pCurTrig);
SetEnhState(3);
}
}
}
</SCRIPT>
<!--
<HTA:APPLICATION ID="oHTA"
APPLICATIONNAME="myApp"
BORDER="none"
BORDERSTYLE="normal"
CAPTION="yes"
ICON=""
MAXIMIZEBUTTON="yes"
MINIMIZEBUTTON="yes"
SHOWINTASKBAR="yes"
SINGLEINSTANCE="yes"
SYSMENU="yes"
VERSION="1.0"
>
-->
<!--
<DIV ID="WinPropDiv">
<OBJECT ID="WinProp" CLASSID="CLSID:11F4496D-85B1-40D7-8919-D3DF5732A1CF"
style="position:absolute;top=0;left=0">
</OBJECT>
</DIV>
-->
<OBJECT ID="TVProf" CLASSID="CLSID:EB24C040-9E6B-4469-A425-87DCCFFE4395">
</OBJECT>
<OBJECT ID="FullScCtl" CLASSID="CLSID:39FC3F46-F428-44D2-829B-74CD1DA76F44">
</OBJECT>
<OBJECT ID="SndCtl" CLASSID="CLSID:EFE22EF0-D363-4986-AC56-9989C61EC5E4">
</OBJECT>
<OBJECT id="AtvefRecv" ClassID="CLSID:79AF05FC-2378-11D3-BF62-00C04F8EC1B5">
</OBJECT>
<SCRIPT LANGUAGE="JScript" FOR=AtvefRecv EVENT="NotifyEnhancementNew(pEnh)">EnhancementNewHandler(pEnh)</SCRIPT>
<SCRIPT LANGUAGE="JScript" FOR=AtvefRecv EVENT="NotifyEnhancementUpdated(pEnh, flags)">EnhancementUpdatedHandler(pEnh, flags)</SCRIPT>
<SCRIPT LANGUAGE="JScript" FOR=AtvefRecv EVENT="NotifyEnhancementExpired(pEnh)">EnhancementExpiredHandler(pEnh)</SCRIPT>
<SCRIPT LANGUAGE="JScript" FOR=AtvefRecv EVENT="NotifyTriggerNew(pTrig, active)">TriggerNewHandler(pTrig, active)</SCRIPT>
<SCRIPT LANGUAGE="JScript" FOR=AtvefRecv EVENT="NotifyTriggerUpdated(pTrig, active, flags)">TriggerNewHandler(pTrig, active)</SCRIPT>
<DIV id="ViewCtlDiv">
<OBJECT ID="ViewCtl" style="display:none;position:absolute;"
CLASSID="CLSID:B0EDF163-910A-11D2-B632-00C04F79498E">
</OBJECT>
</DIV>
<SCRIPT LANGUAGE="JScript" FOR=ViewCtlDiv EVENT=OnClick>ShowButtons()</SCRIPT>
<IFRAME id="Atvef"
style="visibility:hidden;position:absolute;left:0;top:0;"
marginheight=0
marginwidth=0
frameborder=0
>
</IFRAME>
<IFRAME id="TheBigI"
style="display:none;position:absolute;left:10;top:10;"
marginheight=0
marginwidth=0
frameborder=0
width=48
height=48
src="bigi.htm"
scrolling=no
>
</IFRAME>
<DIV id=ControlsDiv style="visibility:hidden;zindex:2;">
<OBJECT ID="Maximize" style="display:none;position:absolute;"
CLASSID="CLSID:7A136DD3-BEBE-47BE-B6D9-E2CC7F816D43"
WIDTH=30 HEIGHT=30 >
<PARAM NAME="ResourceDll" VALUE="msmfcnt.dll">
<PARAM NAME="ImageStatic" VALUE="IDR_STATIC_MAX">
<PARAM NAME="ImageHover" VALUE="IDR_HOVER_MAX">
<PARAM NAME="ImagePush" VALUE="IDR_DOWN_MAX">
<PARAM NAME="ToolTip" VALUE="Maximize">
<PARAM NAME="ToolTipMaxWidth" VALUE="130">
<PARAM NAME="TransparentBlitType" VALUE="1">
<PARAM NAME="Windowless" VALUE="0">
<PARAM NAME="BackColor" VALUE="16711935">
</OBJECT>
<SCRIPT LANGUAGE="JScript" FOR=Maximize EVENT=OnClick>max_OnClick()</SCRIPT>
<OBJECT ID="Restore" style="display:none;position:absolute;"
CLASSID="CLSID:7A136DD3-BEBE-47BE-B6D9-E2CC7F816D43"
WIDTH=30 HEIGHT=30 >
<PARAM NAME="ResourceDll" VALUE="msmfcnt.dll">
<PARAM NAME="ImageStatic" VALUE="IDR_STATIC_RESTORE">
<PARAM NAME="ImageHover" VALUE="IDR_HOVER_RESTORE">
<PARAM NAME="ImagePush" VALUE="IDR_DOWN_RESTORE">
<PARAM NAME="ToolTip" VALUE="Restore">
<PARAM NAME="ToolTipMaxWidth" VALUE="130">
<PARAM NAME="TransparentBlitType" VALUE="1">
<PARAM NAME="Windowless" VALUE="0">
<PARAM NAME="BackColor" VALUE="16711935">
</OBJECT>
<SCRIPT LANGUAGE="JScript" FOR=Restore EVENT=OnClick>restore_OnClick()</SCRIPT>
<OBJECT ID="Minimize" style="display:none;position:absolute;"
CLASSID="CLSID:7A136DD3-BEBE-47BE-B6D9-E2CC7F816D43"
WIDTH=30 HEIGHT=30 >
<PARAM NAME="ResourceDll" VALUE="msmfcnt.dll">
<PARAM NAME="ImageStatic" VALUE="IDR_STATIC_MIN">
<PARAM NAME="ImageHover" VALUE="IDR_HOVER_MIN">
<PARAM NAME="ImagePush" VALUE="IDR_DOWN_MIN">
<PARAM NAME="ToolTip" VALUE="Minimize">
<PARAM NAME="ToolTipMaxWidth" VALUE="130">
<PARAM NAME="TransparentBlitType" VALUE="1">
<PARAM NAME="Windowless" VALUE="0">
<PARAM NAME="BackColor" VALUE="16711935">
</OBJECT>
<SCRIPT LANGUAGE="JScript" FOR=Minimize EVENT=OnClick>min_OnClick()</SCRIPT>
<OBJECT ID="Close" style="display:none;position:absolute;"
CLASSID="CLSID:7A136DD3-BEBE-47BE-B6D9-E2CC7F816D43"
WIDTH=30 HEIGHT=30 >
<PARAM NAME="ResourceDll" VALUE="msmfcnt.dll">
<PARAM NAME="ImageStatic" VALUE="IDR_STATIC_CLOSE">
<PARAM NAME="ImageHover" VALUE="IDR_HOVER_CLOSE">
<PARAM NAME="ImagePush" VALUE="IDR_DOWN_CLOSE">
<PARAM NAME="ToolTip" VALUE="Close">
<PARAM NAME="ToolTipMaxWidth" VALUE="130">
<PARAM NAME="TransparentBlitType" VALUE="1">
<PARAM NAME="Windowless" VALUE="0">
<PARAM NAME="BackColor" VALUE="16711935">
</OBJECT>
<SCRIPT LANGUAGE="JScript" FOR=Close EVENT=OnClick>close_OnClick()</SCRIPT>
<OBJECT ID="Pause" style="display:none;position:absolute;"
CLASSID="CLSID:7A136DD3-BEBE-47BE-B6D9-E2CC7F816D43"
WIDTH=30 HEIGHT=30 >
<PARAM NAME="ResourceDll" VALUE="msmfcnt.dll">
<PARAM NAME="ImageStatic" VALUE="IDR_FULLSTATIC_PAUSE">
<PARAM NAME="ImageHover" VALUE="IDR_FULLHOVER_PAUSE">
<PARAM NAME="ImagePush" VALUE="IDR_FULLDOWN_PAUSE">
<PARAM NAME="ToolTip" VALUE="Pause">
<PARAM NAME="ToolTipMaxWidth" VALUE="130">
<PARAM NAME="TransparentBlitType" VALUE="1">
<PARAM NAME="Windowless" VALUE="0">
<PARAM NAME="BackColor" VALUE="16711935">
</OBJECT>
<SCRIPT LANGUAGE="JScript" FOR=Pause EVENT=OnClick>pause_OnClick()</SCRIPT>
<OBJECT ID="Play" style="display:none;position:absolute;"
CLASSID="CLSID:7A136DD3-BEBE-47BE-B6D9-E2CC7F816D43"
WIDTH=30 HEIGHT=30 >
<PARAM NAME="ResourceDll" VALUE="msmfcnt.dll">
<PARAM NAME="ImageStatic" VALUE="IDR_FULLSTATIC_PLAY">
<PARAM NAME="ImageHover" VALUE="IDR_FULLHOVER_PLAY">
<PARAM NAME="ImagePush" VALUE="IDR_FULLDOWN_PLAY">
<PARAM NAME="ToolTip" VALUE="Play">
<PARAM NAME="ToolTipMaxWidth" VALUE="130">
<PARAM NAME="TransparentBlitType" VALUE="1">
<PARAM NAME="Windowless" VALUE="0">
<PARAM NAME="BackColor" VALUE="16711935">
</OBJECT>
<SCRIPT LANGUAGE="JScript" FOR=Play EVENT=OnClick>play_OnClick()</SCRIPT>
<OBJECT ID="Rewind" style="display:none;position:absolute;"
CLASSID="CLSID:7A136DD3-BEBE-47BE-B6D9-E2CC7F816D43"
WIDTH=30 HEIGHT=30 >
<PARAM NAME="ResourceDll" VALUE="msmfcnt.dll">
<PARAM NAME="ImageStatic" VALUE="IDR_STATIC_CHANNELDOWN">
<PARAM NAME="ImageHover" VALUE="IDR_HOVER_CHANNELDOWN">
<PARAM NAME="ImagePush" VALUE="IDR_DOWN_CHANNELDOWN">
<PARAM NAME="ToolTip" VALUE="Rewind">
<PARAM NAME="ToolTipMaxWidth" VALUE="130">
<PARAM NAME="TransparentBlitType" VALUE="1">
<PARAM NAME="Windowless" VALUE="0">
<PARAM NAME="BackColor" VALUE="16711935">
</OBJECT>
<SCRIPT LANGUAGE="JScript" FOR=Rewind EVENT=OnClick>rew_OnClick()</SCRIPT>
<OBJECT ID="FastForward" style="display:none;position:absolute;"
CLASSID="CLSID:7A136DD3-BEBE-47BE-B6D9-E2CC7F816D43"
WIDTH=30 HEIGHT=30 >
<PARAM NAME="ResourceDll" VALUE="msmfcnt.dll">
<PARAM NAME="ImageStatic" VALUE="IDR_STATIC_CHANNELUP">
<PARAM NAME="ImageHover" VALUE="IDR_HOVER_CHANNELUP">
<PARAM NAME="ImagePush" VALUE="IDR_DOWN_CHANNELUP">
<PARAM NAME="ToolTip" VALUE="FastForward">
<PARAM NAME="ToolTipMaxWidth" VALUE="130">
<PARAM NAME="TransparentBlitType" VALUE="1">
<PARAM NAME="Windowless" VALUE="0">
<PARAM NAME="BackColor" VALUE="16711935">
</OBJECT>
<SCRIPT LANGUAGE="JScript" FOR=FastForward EVENT=OnClick>fwd_OnClick()</SCRIPT>
<OBJECT ID="NotMute" style="display:none;position:absolute;"
CLASSID="CLSID:7A136DD3-BEBE-47BE-B6D9-E2CC7F816D43"
WIDTH=30 HEIGHT=30 >
<PARAM NAME="ResourceDll" VALUE="msmfcnt.dll">
<PARAM NAME="ImageStatic" VALUE="IDR_STATIC_SOUND">
<PARAM NAME="ImageHover" VALUE="IDR_HOVER_SOUND">
<PARAM NAME="ImagePush" VALUE="IDR_DOWN_SOUND">
<PARAM NAME="ToolTip" VALUE="Mute">
<PARAM NAME="ToolTipMaxWidth" VALUE="130">
<PARAM NAME="TransparentBlitType" VALUE="1">
<PARAM NAME="Windowless" VALUE="0">
<PARAM NAME="BackColor" VALUE="16711935">
</OBJECT>
<SCRIPT LANGUAGE="JScript" FOR=NotMute EVENT=OnClick>muteon()</SCRIPT>
<OBJECT ID="Mute" style="display:none;position:absolute;"
CLASSID="CLSID:7A136DD3-BEBE-47BE-B6D9-E2CC7F816D43"
WIDTH=30 HEIGHT=30 >
<PARAM NAME="ResourceDll" VALUE="msmfcnt.dll">
<PARAM NAME="ImageStatic" VALUE="IDR_FULLSTATIC_MUTE">
<PARAM NAME="ImageHover" VALUE="IDR_HOVER_MUTE">
<PARAM NAME="ImagePush" VALUE="IDR_DOWN_MUTE">
<PARAM NAME="ToolTip" VALUE="Turn Sound On">
<PARAM NAME="ToolTipMaxWidth" VALUE="130">
<PARAM NAME="TransparentBlitType" VALUE="1">
<PARAM NAME="Windowless" VALUE="0">
<PARAM NAME="BackColor" VALUE="16711935">
</OBJECT>
<SCRIPT LANGUAGE="JScript" FOR=Mute EVENT=OnClick>muteoff()</SCRIPT>
<OBJECT ID="VolSlider" style="display:none;position:absolute;"
CLASSID="CLSID:E2909DE3-0EE0-46E6-9258-E1CFE5AC73F9"
WIDTH=30 HEIGHT=30 >
<PARAM NAME="ResourceDll" VALUE="msmfcnt.dll">
<PARAM NAME="BackStatic" VALUE="IDR_STATIC_VOLSLIDER">
<PARAM NAME="BackHover" VALUE="IDR_HOVER_VOLSLIDER">
<PARAM NAME="BackPush" VALUE="IDR_DOWN_VOLSLIDER">
<PARAM NAME="ThumbStatic" VALUE="IDR_STATIC_VOLTHUMB">
<PARAM NAME="ThumbHover" VALUE="IDR_HOVER_VOLTHUMB">
<PARAM NAME="ThumbPush" VALUE="IDR_DOWN_VOLTHUMB">
<PARAM NAME="ToolTip" VALUE="Volume">
<PARAM NAME="ToolTipMaxWidth" VALUE="130">
<PARAM NAME="Windowless" VALUE="0">
<PARAM NAME="BackColor" VALUE="16711935">
</OBJECT>
<SCRIPT LANGUAGE="JScript" FOR=VolSlider EVENT=OnValueChange>SetVolume(VolSlider.Value)</SCRIPT>
<OBJECT ID="ShowEnhDisabled" style="display:none;position:absolute;"
CLASSID="CLSID:7A136DD3-BEBE-47BE-B6D9-E2CC7F816D43"
WIDTH=30 HEIGHT=30 >
<PARAM NAME="ResourceDll" VALUE="msmfcnt.dll">
<PARAM NAME="ImageStatic" VALUE="IDR_DISABLED_ENHANCE">
<PARAM NAME="ImageHover" VALUE="IDR_DISABLED_ENHANCE">
<PARAM NAME="ImagePush" VALUE="IDR_DISABLED_ENHANCE">
<PARAM NAME="ToolTip" VALUE="Waiting for trigger">
<PARAM NAME="ToolTipMaxWidth" VALUE="130">
<PARAM NAME="TransparentBlitType" VALUE="1">
<PARAM NAME="Windowless" VALUE="0">
<PARAM NAME="BackColor" VALUE="16711935">
</OBJECT>
<OBJECT ID="ShowEnh" style="display:none;position:absolute;"
CLASSID="CLSID:7A136DD3-BEBE-47BE-B6D9-E2CC7F816D43"
WIDTH=30 HEIGHT=30 >
<PARAM NAME="ResourceDll" VALUE="msmfcnt.dll">
<PARAM NAME="ImageStatic" VALUE="IDR_STATIC_ENHANCE">
<PARAM NAME="ImageHover" VALUE="IDR_HOVER_ENHANCE">
<PARAM NAME="ImagePush" VALUE="IDR_DOWN_ENHANCE">
<PARAM NAME="ToolTip" VALUE="Show enhancement">
<PARAM NAME="ToolTipMaxWidth" VALUE="130">
<PARAM NAME="TransparentBlitType" VALUE="1">
<PARAM NAME="Windowless" VALUE="0">
<PARAM NAME="BackColor" VALUE="16711935">
</OBJECT>
<SCRIPT LANGUAGE="JScript" FOR=ShowEnh EVENT=OnClick>showEnh_onClick()</SCRIPT>
<OBJECT ID="HideEnh" style="display:none;position:absolute;"
CLASSID="CLSID:7A136DD3-BEBE-47BE-B6D9-E2CC7F816D43"
WIDTH=30 HEIGHT=30 >
<PARAM NAME="ResourceDll" VALUE="msmfcnt.dll">
<PARAM NAME="ImageStatic" VALUE="IDR_STATIC_ENHANCE">
<PARAM NAME="ImageHover" VALUE="IDR_HOVER_ENHANCE">
<PARAM NAME="ImagePush" VALUE="IDR_DOWN_ENHANCE">
<PARAM NAME="ToolTip" VALUE="Switch off enhancement">
<PARAM NAME="ToolTipMaxWidth" VALUE="130">
<PARAM NAME="TransparentBlitType" VALUE="1">
<PARAM NAME="Windowless" VALUE="0">
<PARAM NAME="BackColor" VALUE="16711935">
</OBJECT>
<SCRIPT LANGUAGE="JScript" FOR=HideEnh EVENT=OnClick>hideEnh_onClick()</SCRIPT>
<!--
<OBJECT ID="AutoEnhancement" style="display:none;position:absolute;"
CLASSID="CLSID:7A136DD3-BEBE-47BE-B6D9-E2CC7F816D43"
WIDTH=30 HEIGHT=30 >
<PARAM NAME="ResourceDll" VALUE="msmfcnt.dll">
<PARAM NAME="ImageStatic" VALUE="IDR_FULLSTATIC_MENU">
<PARAM NAME="ImageHover" VALUE="IDR_FULLHOVER_MENU">
<PARAM NAME="ImagePush" VALUE="IDR_FULLDOWN_MENU">
<PARAM NAME="ToolTip" VALUE="Show Enhancement">
<PARAM NAME="ToolTipMaxWidth" VALUE="130">
<PARAM NAME="TransparentBlitType" VALUE="1">
<PARAM NAME="Windowless" VALUE="0">
<PARAM NAME="BackColor" VALUE="16711935">
</OBJECT>
<SCRIPT LANGUAGE="JScript" FOR=Enhancement EVENT=OnClick>SetAutoEnhance()</SCRIPT>
-->
<OBJECT ID="ChannelNumberTextBox" style="display:none;position:absolute;"
CLASSID="CLSID:F2A6C42D-5515-4013-85F4-1EC3D33950DA"
WIDTH=30 HEIGHT=30 >
<PARAM NAME="ResourceDll" VALUE="msmfcnt.dll">
<PARAM NAME="Windowless" VALUE="0">
<PARAM NAME="BackColor" VALUE="16711935">
</OBJECT>
</DIV> <!-- parent of all buttons, sliders, textbox -->
<OBJECT ID="StatusBar" style="display:show;position:absolute;top:300;left:300;"
CLASSID="CLSID:F2A6C42D-5515-4013-85F4-1EC3D33950DA"
WIDTH=150 HEIGHT=30 >
<PARAM NAME="ResourceDll" VALUE="msmfcnt.dll">
<PARAM NAME="Windowless" VALUE="0">
<PARAM NAME="BackColor" VALUE="0">
</OBJECT>
<span id=GUIDNULL style="display:none;zindex:4;">{00000000-0000-0000-0000-000000000000}</span>
<span id=GUIDTV style="display:none;zindex:5">{a799a800-a46d-11d0-a18c-00a02401dcd4}</span>
</BODY>
</HTML>