• Pierre d'Herbemont's avatar
    Source Tree Layout Cleanup: (As decided at videolan-meeting #2) · 2e888fde
    Pierre d'Herbemont authored
        projects/ - contains projects that link to libvlc other than vlc and the bindings.
        extras/package - contains the packaging specific files.
        extras/deprecated - deprecated files.
        extras/buildsystem - contains non-default buildsystem stuff.
        extras/analyser - contains code analyser (such as editor specific files) specific files.
    2e888fde
test.html 8.36 KB
<HTML>
<TITLE>VLC ActiveX plugin test page</TITLE>
<BODY>
<TABLE>
<TR><TD colspan="2">
MRL:
<INPUT size="90" id="targetTextField" value="">
<INPUT type=submit value="Go" onClick="doGo(document.getElementById('targetTextField').value);">
</TD></TR>
<TR><TD colspan="2">
<!--
Insert VideoLAN.VLCPlugin.2 activex control
-->
<OBJECT classid="clsid:9BE31822-FDAD-461B-AD51-BE1D1C159921"
        codebase="http://downloads.videolan.org/pub/videolan/vlc/latest/win32/axvlc.cab#Version=0,8,6,0"
        width="640"
        height="480"
        id="vlc"
        events="True">
<param name="MRL" value="" />
<param name="ShowDisplay" value="True" />
<param name="AutoLoop" value="False" />
<param name="AutoPlay" value="False" />
<param name="Volume" value="50" />
<param name="StartTime" value="0" />
</OBJECT>
</TD></TR>
<TR><TD>
<!--
Insert MSComctlLib.Slider.2 activex control
-->
<OBJECT classid="clsid:F08DF954-8592-11D1-B16A-00C0F0283628"
        width="540"
        height="20"
        id="slider"
        events="True">
<param name="TickStyle" value="3" />
<param name="Min" value="0" />
<param name="Max" value="0" />
<param name="Value" value="0" />
<param name="Enabled" value="False" />
</OBJECT>
</TD><TD width="15%">
<DIV id="info" style="text-align:center">-:--:--/-:--:--</DIV>
</TD></TR>
<TR><TD colspan="2">
<INPUT type=button id="PlayOrPause" value=" Play " onClick='doPlayOrPause();'>
<INPUT type=button value="Stop" onClick='doStop();'>
&nbsp;
<INPUT type=button value=" << " onClick='doPlaySlower();'>
<INPUT type=button value=" >> " onClick='doPlayFaster();'>
&nbsp;
<INPUT type=button value="Show" onClick='document.getElementById("vlc").Visible = true;'>
<INPUT type=button value="Hide" onClick='document.getElementById("vlc").Visible = false;'>
&nbsp;
<INPUT type=button id="VersionBut" value="Version" onClick='alert(document.getElementById("vlc").VersionInfo);'>
<SPAN style="text-align:center">Volume:</SPAN>
<INPUT type=button value=" - " onClick='updateVolume(-10)'>
<SPAN id="volumeTextField" style="text-align: center">--</SPAN>
<INPUT type=button value=" + " onClick='updateVolume(+10)'>
<INPUT type=button value="Mute" onClick='document.getElementById("vlc").audio.toggleMute();'>
</TD>
</TR>
</TABLE>
<SCRIPT language="javascript">
<!--

var prevState = 0;
var monitorTimerId = 0;
var sliderScrolling = false;
var ignoreSliderChange = false;

function updateVolume(deltaVol)
{
    var vlc = document.getElementById("vlc");
    vlc.audio.volume += deltaVol;
    document.getElementById("volumeTextField").innerHTML = vlc.audio.volume+"%";
};
function formatTime(timeVal)
{
    var timeHour = Math.round(timeVal / 1000);
    var timeSec = timeHour % 60;
    if( timeSec < 10 )
        timeSec = '0'+timeSec;
    timeHour = (timeHour - timeSec)/60;
    var timeMin = timeHour % 60;
    if( timeMin < 10 )
        timeMin = '0'+timeMin;
    timeHour = (timeHour - timeMin)/60;
    if( timeHour > 0 )
        return timeHour+":"+timeMin+":"+timeSec;
    else
        return timeMin+":"+timeSec;
};
function monitor()
{
    var vlc = document.getElementById("vlc");
    var newState = vlc.input.state;
    if( vlc.log.messages.count > 0 )
    {
        var iter = vlc.log.messages.iterator();
        while( iter.hasNext )
        {
            var msg = iter.next();
            alert( msg );
        }
        vlc.log.messages.clear();
    }
    if( prevState != newState )
    {
        if( newState == 0 )
        {
            // current media has stopped 
            onStop();
        }
        else if( newState == 1 )
        {
            // current media is openning/connecting
            onOpen();
        }
        else if( newState == 2 )
        {
            // current media is buffering data
            onBuffer();
        }
        else if( newState == 3 )
        {
            // current media is now playing
            onPlay();
        }
        else if( vlc.input.state == 4 )
        {
            // current media is now paused
            onPause();
        }
        prevState = newState;
    }
    else if( newState == 3 )
    {
        // current media is playing
        onPlaying();
    }
    monitorTimerId = setTimeout("monitor()", 1000);
};

/* actions */

function doGo(targetURL)
{
    var vlc = document.getElementById("vlc");
    var options = new Array(":vout=directx");
    vlc.playlist.clear();
    //vlc.playlist.add(targetURL, null, options);
    vlc.playlist.add(targetURL);
    vlc.playlist.play();
    vlc.log.verbosity = 3;
    vlc.log.messages.clear();
    if( monitorTimerId == 0 )
    {
        monitor();
    }
};
function doPlayOrPause()
{
    var vlc = document.getElementById("vlc");
    if( vlc.playlist.isPlaying )
    {
        vlc.playlist.togglePause();
    }
    else
    {
        vlc.log.messages.clear();
        vlc.playlist.play();
        if( monitorTimerId == 0 )
        {
            monitor();
        }
    }
};
function doStop()
{
    document.getElementById("vlc").playlist.stop();
    if( monitorTimerId != 0 )
    {
        clearTimeout(monitorTimerId);
        monitorTimerId = 0;
    }
    onStop();
};
function doPlaySlower()
{
    var vlc = document.getElementById("vlc");
    vlc.input.rate = vlc.input.rate / 2;
};
function doPlayFaster()
{
    var vlc = document.getElementById("vlc");
    vlc.input.rate = vlc.input.rate * 2;
};

/* events */

function onOpen()
{
    document.getElementById("info").innerHTML = "Opening...";
    document.getElementById("PlayOrPause").value = "Pause";
};
function onBuffer()
{
    document.getElementById("info").innerHTML = "Buffering...";
    document.getElementById("PlayOrPause").value = "Pause";
};
function onPlay()
{
    onPlaying();
    document.getElementById("PlayOrPause").value = "Pause";
};
var liveFeedText = new Array("Live", "((Live))", "(( Live ))", "((  Live  ))");
var liveFeedRoll = 0;
function onPlaying()
{
    if( ! sliderScrolling )
    {
        var slider = document.getElementById("slider");
        if( vlc.input.length > 0 )
        {
            // seekable media
            slider.Enabled = true;
            slider.Max = slider.width;
            ignoreSliderChange = true;
            slider.Value = vlc.input.position*slider.width;
            ignoreSliderChange = false;
            document.getElementById("info").innerHTML = formatTime(vlc.input.time)+"/"+formatTime(vlc.input.length);
        }
        else
        {
            // non-seekable "live" media
            if( slider.Enabled )
            {
                slider.Value = slider.Min;
                slider.Enabled = false;
            }
            liveFeedRoll = liveFeedRoll & 3;
            document.getElementById("info").innerHTML = liveFeedText[liveFeedRoll++];
        }
    }
};
function onPause()
{
    document.getElementById("PlayOrPause").value = " Play ";
};
function onStop()
{
    vlc.log.verbosity = -1;
    if( slider.Enabled )
    {
        slider.Value = slider.Min;
        slider.Enabled = false;
    }
    document.getElementById("info").innerHTML = "-:--:--/-:--:--";
    document.getElementById("PlayOrPause").value = " Play ";
};
//-->
</SCRIPT>
<SCRIPT language="JScript">
<!--

document.onreadystatechange=onVLCStateChange;
function onVLCStateChange()
{
    if( document.readyState == 'complete' )
    {
        updateVolume(0);
    }
};
function slider::Scroll()
{
    var vlc = document.getElementById("vlc");
    var slider = document.getElementById("slider");
    var oldPos = vlc.input.position;
    var newPos = slider.Value/slider.width;
    if( (vlc.input.state == 3) && (oldPos != newPos) )
    {
        vlc.input.position = newPos;
        slider.Text = formatTime(vlc.input.time);
        document.getElementById("info").innerHTML = slider.Text+"/"+formatTime(vlc.input.length);
    }
    sliderScrolling = true;
};
function slider::Change()
{
    var vlc = document.getElementById("vlc");
    var slider = document.getElementById("slider");
    var oldPos = vlc.input.position;
    var newPos = slider.Value/slider.width;
    if( sliderScrolling )
    {
        sliderScrolling = false;
    }
    else if( !ignoreSliderChange && (vlc.input.state == 3) && (oldPos != newPos) )
    {
        vlc.input.position = newPos;
    }
};
//-->
</SCRIPT>
</BODY>
</HTML>