<DIV id="info" style="text-align:center">-:--:--/-:--:--</DIV>\r
</TD></TR>\r
<TR><TD colspan="2">\r
-<INPUT type=button id="PlayOrPause" value=" Play " onClick='doPlayOrPause()'>\r
-<INPUT type=button value="Stop" onClick='document.getElementById("vlc").playlist.stop();'>\r
+<INPUT type=button id="PlayOrPause" value=" Play " onClick='doPlayOrPause();'>\r
+<INPUT type=button value="Stop" onClick='doStop();'>\r
\r
<INPUT type=button value=" << " onClick='doPlaySlower();'>\r
<INPUT type=button value=" >> " onClick='doPlayFaster();'>\r
<INPUT type=button value="Show" onClick='document.getElementById("vlc").Visible = true;'>\r
<INPUT type=button value="Hide" onClick='document.getElementById("vlc").Visible = false;'>\r
\r
-<INPUT type=button value="Version" onClick='alert(document.getElementById("vlc").VersionInfo);'>\r
+<INPUT type=button id="VersionBut" value="Version" onClick='alert(document.getElementById("vlc").VersionInfo);'>\r
<SPAN style="text-align:center">Volume:</SPAN>\r
<INPUT type=button value=" - " onClick='updateVolume(-10)'>\r
<SPAN id="volumeTextField" style="text-align: center">--</SPAN>\r
</TD>\r
</TR>\r
</TABLE>\r
-<SCRIPT LANGUAGE="JScript">\r
+<SCRIPT language="javascript">\r
<!--\r
-var sliderTimerId = 0;\r
+\r
+var prevState = 0;\r
+var monitorTimerId = 0;\r
var sliderScrolling = false;\r
+var ignoreSliderChange = false;\r
\r
-document.onreadystatechange=onVLCStateChange;\r
-function onVLCStateChange()\r
-{\r
- if( document.readyState == 'complete' )\r
- {\r
- updateVolume(0);\r
- }\r
-};\r
function updateVolume(deltaVol)\r
{\r
var vlc = document.getElementById("vlc");\r
vlc.audio.volume += deltaVol;\r
document.getElementById("volumeTextField").innerHTML = vlc.audio.volume+"%";\r
-\r
};\r
function formatTime(timeVal)\r
{\r
- var timeHour = timeVal;\r
+ var timeHour = Math.round(timeVal / 1000);\r
var timeSec = timeHour % 60;\r
if( timeSec < 10 )\r
- timeSec = '0'+timeSec;\r
+ timeSec = '0'+timeSec;\r
timeHour = (timeHour - timeSec)/60;\r
var timeMin = timeHour % 60;\r
if( timeMin < 10 )\r
- timeMin = '0'+timeMin;\r
+ timeMin = '0'+timeMin;\r
timeHour = (timeHour - timeMin)/60;\r
if( timeHour > 0 )\r
- return timeHour+":"+timeMin+":"+timeSec;\r
+ return timeHour+":"+timeMin+":"+timeSec;\r
else\r
- return timeMin+":"+timeSec;\r
-};\r
-function onPlay()\r
-{\r
- document.getElementById("PlayOrPause").value = "Pause";\r
+ return timeMin+":"+timeSec;\r
};\r
-function onPause()\r
+function monitor()\r
{\r
- document.getElementById("PlayOrPause").value = " Play ";\r
-};\r
-function onStop()\r
-{\r
- if( slider.Enabled )\r
+ var vlc = document.getElementById("vlc");\r
+ var newState = vlc.input.state;\r
+ if( vlc.log.messages.count > 0 )\r
{\r
- slider.Value = slider.Min;\r
- slider.Enabled = false;\r
+ var iter = vlc.log.messages.iterator();\r
+ while( iter.hasNext )\r
+ {\r
+ var msg = iter.next();\r
+ alert( msg );\r
+ }\r
+ vlc.log.messages.clear();\r
}\r
- info.innerText = "-:--:--/-:--:--";\r
- document.getElementById("PlayOrPause").value = " Play ";\r
-};\r
-\r
-var liveFeedText = new Array("Live", "((Live))", "(( Live ))", "(( Live ))");\r
-var liveFeedRoll = 0;\r
-\r
-function doUpdate()\r
-{\r
- var vlc = document.getElementById("vlc");\r
- if( vlc.playlist.isPlaying )\r
+ if( prevState != newState )\r
{\r
- if( ! sliderScrolling )\r
+ if( newState == 0 )\r
{\r
- if( vlc.input.length > 0 )\r
- {\r
- // seekable stream\r
- slider.Enabled = true;\r
- slider.Max = vlc.input.length;\r
- slider.Value = vlc.input.time;\r
- info.innerText = formatTime(vlc.input.time)+"/"+formatTime(vlc.input.length);\r
- document.getElementById("PlayOrPause").Enabled = true;\r
- }\r
- else {\r
- // non-seekable "live" stream\r
- if( slider.Enabled )\r
- {\r
- slider.Value = slider.Min;\r
- slider.Enabled = false;\r
- }\r
- liveFeedRoll = liveFeedRoll & 3;\r
- info.innerText = liveFeedText[liveFeedRoll++];\r
- }\r
+ // current media has stopped \r
+ onStop();\r
+ }\r
+ else if( newState == 1 )\r
+ {\r
+ // current media is openning/connecting\r
+ onOpen();\r
}\r
- sliderTimerId = setTimeout("doUpdate()", 1000);\r
+ else if( newState == 2 )\r
+ {\r
+ // current media is buffering data\r
+ onBuffer();\r
+ }\r
+ else if( newState == 3 )\r
+ {\r
+ // current media is now playing\r
+ onPlay();\r
+ }\r
+ else if( vlc.input.state == 4 )\r
+ {\r
+ // current media is now paused\r
+ onPause();\r
+ }\r
+ prevState = newState;\r
}\r
- else\r
+ else if( newState == 3 )\r
{\r
- onStop();\r
- sliderTimerId = 0;\r
+ // current media is playing\r
+ onPlaying();\r
}\r
+ monitorTimerId = setTimeout("monitor()", 1000);\r
};\r
+\r
+/* actions */\r
+\r
function doGo(targetURL)\r
{\r
- var options = new Array(":vout-filter=deinterlace", ":deinterlace-mode=linear");\r
- document.getElementById("vlc").playlist.add(targetURL, null, options);\r
+ var vlc = document.getElementById("vlc");\r
+ var options = new Array(":vout=directx");\r
+ vlc.playlist.clear();\r
+ //vlc.playlist.add(targetURL, null, options);\r
+ vlc.playlist.add(targetURL);\r
+ vlc.playlist.play();\r
+ vlc.log.verbosity = 3;\r
+ vlc.log.messages.clear();\r
+ if( monitorTimerId == 0 )\r
+ {\r
+ monitor();\r
+ }\r
};\r
function doPlayOrPause()\r
{\r
var vlc = document.getElementById("vlc");\r
- vlc.playlist.togglePause();\r
+ if( vlc.playlist.isPlaying )\r
+ {\r
+ vlc.playlist.togglePause();\r
+ }\r
+ else\r
+ {\r
+ vlc.log.messages.clear();\r
+ vlc.playlist.play();\r
+ if( monitorTimerId == 0 )\r
+ {\r
+ monitor();\r
+ }\r
+ }\r
+};\r
+function doStop()\r
+{\r
+ document.getElementById("vlc").playlist.stop();\r
+ if( monitorTimerId != 0 )\r
+ {\r
+ clearTimeout(monitorTimerId);\r
+ monitorTimerId = 0;\r
+ }\r
+ onStop();\r
};\r
function doPlaySlower()\r
{\r
var vlc = document.getElementById("vlc");\r
vlc.input.rate = vlc.input.rate * 2;\r
};\r
-function vlc::Play()\r
+\r
+/* events */\r
+\r
+function onOpen()\r
+{\r
+ document.getElementById("info").innerHTML = "Opening...";\r
+ document.getElementById("PlayOrPause").value = "Pause";\r
+};\r
+function onBuffer()\r
+{\r
+ document.getElementById("info").innerHTML = "Buffering...";\r
+ document.getElementById("PlayOrPause").value = "Pause";\r
+};\r
+function onPlay()\r
+{\r
+ onPlaying();\r
+ document.getElementById("PlayOrPause").value = "Pause";\r
+};\r
+var liveFeedText = new Array("Live", "((Live))", "(( Live ))", "(( Live ))");\r
+var liveFeedRoll = 0;\r
+function onPlaying()\r
{\r
- if( ! sliderTimerId )\r
+ if( ! sliderScrolling )\r
{\r
- sliderTimerId = setTimeout("doUpdate()", 1000);\r
+ var slider = document.getElementById("slider");\r
+ if( vlc.input.length > 0 )\r
+ {\r
+ // seekable media\r
+ slider.Enabled = true;\r
+ slider.Max = slider.width;\r
+ ignoreSliderChange = true;\r
+ slider.Value = vlc.input.position*slider.width;\r
+ ignoreSliderChange = false;\r
+ document.getElementById("info").innerHTML = formatTime(vlc.input.time)+"/"+formatTime(vlc.input.length);\r
+ }\r
+ else\r
+ {\r
+ // non-seekable "live" media\r
+ if( slider.Enabled )\r
+ {\r
+ slider.Value = slider.Min;\r
+ slider.Enabled = false;\r
+ }\r
+ liveFeedRoll = liveFeedRoll & 3;\r
+ document.getElementById("info").innerHTML = liveFeedText[liveFeedRoll++];\r
+ }\r
}\r
- onPlay();\r
};\r
-function vlc::Pause()\r
+function onPause()\r
{\r
- if( sliderTimerId )\r
+ document.getElementById("PlayOrPause").value = " Play ";\r
+};\r
+function onStop()\r
+{\r
+ vlc.log.verbosity = -1;\r
+ if( slider.Enabled )\r
{\r
- clearTimeout(sliderTimerId)\r
- sliderTimerId = 0;\r
+ slider.Value = slider.Min;\r
+ slider.Enabled = false;\r
}\r
- onPause();\r
+ document.getElementById("info").innerHTML = "-:--:--/-:--:--";\r
+ document.getElementById("PlayOrPause").value = " Play ";\r
};\r
-function vlc::Stop()\r
+//-->\r
+</SCRIPT>\r
+<SCRIPT language="JScript">\r
+<!--\r
+\r
+document.onreadystatechange=onVLCStateChange;\r
+function onVLCStateChange()\r
{\r
- if( sliderTimerId )\r
+ if( document.readyState == 'complete' )\r
{\r
- clearTimeout(sliderTimerId)\r
- sliderTimerId = 0;\r
+ updateVolume(0);\r
}\r
- onStop();\r
};\r
function slider::Scroll()\r
{\r
var vlc = document.getElementById("vlc");\r
- slider.Text = formatTime(slider.Value);\r
- info.innerText = slider.Text+"/"+formatTime(vlc.input.length);\r
- if( vlc.Time != slider.Value )\r
+ var slider = document.getElementById("slider");\r
+ var oldPos = vlc.input.position;\r
+ var newPos = slider.Value/slider.width;\r
+ if( (vlc.input.state == 3) && (oldPos != newPos) )\r
{\r
- vlc.Time = slider.Value;\r
+ vlc.input.position = newPos;\r
+ slider.Text = formatTime(vlc.input.time);\r
+ document.getElementById("info").innerHTML = slider.Text+"/"+formatTime(vlc.input.length);\r
}\r
+ sliderScrolling = true;\r
};\r
function slider::Change()\r
{\r
+ var vlc = document.getElementById("vlc");\r
+ var slider = document.getElementById("slider");\r
+ var oldPos = vlc.input.position;\r
+ var newPos = slider.Value/slider.width;\r
if( sliderScrolling )\r
{\r
sliderScrolling = false;\r
}\r
- else if( vlc.Time != slider.Value )\r
+ else if( !ignoreSliderChange && (vlc.input.state == 3) && (oldPos != newPos) )\r
{\r
- vlc.Time = slider.Value;\r
+ vlc.input.position = newPos;\r
}\r
};\r
//-->\r