]> git.sesse.net Git - vlc/blobdiff - activex/test.html
Force fallback to realtime clock when clock selection is not supported...
[vlc] / activex / test.html
index e4a45421969432c5825694284f447f479ee57231..2dc4f696a7d956a918f2474b92cea6d9c607a034 100644 (file)
@@ -44,8 +44,8 @@ Insert MSComctlLib.Slider.2 activex control
 <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
 &nbsp;\r
 <INPUT type=button value=" << " onClick='doPlaySlower();'>\r
 <INPUT type=button value=" >> " onClick='doPlayFaster();'>\r
@@ -53,7 +53,7 @@ Insert MSComctlLib.Slider.2 activex control
 <INPUT type=button value="Show" onClick='document.getElementById("vlc").Visible = true;'>\r
 <INPUT type=button value="Hide" onClick='document.getElementById("vlc").Visible = false;'>\r
 &nbsp;\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
@@ -62,108 +62,130 @@ Insert MSComctlLib.Slider.2 activex control
 </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
@@ -175,51 +197,109 @@ function doPlayFaster()
     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