[vlc-devel] [Paul ROUGET <paul.rouget at no-log.org>] VLC MediaControl and Mozilla Plugin

System administration admin at via.ecp.fr
Tue Jun 6 19:25:15 CEST 2006


----- Forwarded message from Paul ROUGET <paul.rouget at no-log.org> -----

From: Paul ROUGET <paul.rouget at no-log.org>
Date: Tue, 06 Jun 2006 00:59:10 +0200
To: vlc-devel at videolan.org
Subject: VLC MediaControl and Mozilla Plugin
User-Agent: Thunderbird 1.5.0.4 (X11/20060516)
X-Spam-Status: No, score=-4.7 required=5.0 tests=FORGED_RCVD_HELO,
	UNIFIED_PATCH,UPPERCASE_25_50 autolearn=failed version=3.0.3

The deleted attachment is at:
    <http://people.via.ecp.fr/~admin/20060606-videolan/mediaControl.patch>
 
I've done some work around the VLC Mozilla plugin in order to make the 
MediaControl API
avaible from JavaScript.

  You can find a sample JS code at the end of this mail.

  This is an early draft. It's buggy. I don't know if it works under 
Windows.
Take a look at the new vlcintf.idl to understand how to use the 
mediaControl API.

Some points:
  - I've implemented a nsIException in order to throw mediaControl 
Exception.
  - Some methods are not implemented because they're just not not 
implemented on the VLC side (like get/set_fullscreen).
  - I force the return of a nsISupport object instead a NPObject (cf. 
FIXME 6)
  - Why not put the argv of VLC in a <embed>  attribute ? (cf. FIXME 7 & 8)
  - I didn't succeed to make a new library dedicated to this binding (I 
don't know well autotools), so I build this code in the plugin library.
  In order to make this component registrable by Mozilla, the code must 
be in the components directory. The plugin code has to be
  in the plugins directory, so you have to link or copy the plugin 
library (wich embed the binding code) in the components directory of 
Mozilla.
  Yes, I know, it's terribly ugly :)

  Some notes about security:
  This code is as able as a XPCom component, so is not accessible 
without any chrome priviledge by default. The component implements an 
interface
named nsISecurityCheckedComponent, it provides the permission for this 
component to be used in a classic web page, so there's some security
issue (for example, currently, you can use the snapshot method and save 
a picture where you want in the disk, and that with a simple JS code). I 
think
the mediaControl object should be accessible only if it's explicitely 
specified in the pref file (pref.js). (cf. FIXME 1 & 2 & 5)

  This patch works fine under Linux with VLC 0.8.5.

Ok, I hope you'll like this code and I'm really sorry for my poor English :)

--%<---

var vlc = null;
var mc = null;
var pos1;
var pos2;

function foobar() {
	try {
		vlc = document.getElementById("vlc");
		mc = vlc.getMediaControl();

		var pos1 = mc.createPosition();
		pos1.key = pos1.MEDIA_TIME;
		pos1.origin= pos1.ABSOLUTE_POSITION;
		pos1.value = 0;

		var pos2 = mc.createPosition();
		pos2.key = pos2.MEDIA_TIME;
		pos2.origin= pos2.ABSOLUTE_POSITION;
		pos2.value = 10000;

		mc.start(pos1);
		setTimeout(js_render_text, 1000);
		js_playlist();
		js_snapshit();
	} catch(e) {alert(e);}
}

function js_playlist() {
         try {
                 var aPl = mc.playlist();
                 aPl.add("/home/paul/toto.avi");
                 var size = aPl.size();
                 var i = 0;
                 for (i = 0; i < size; i++) {
                         alert(aPl.itemAt(i));
                 }
         } catch(e) {alert(e);}
}

function js_snapshot() {
         try {
                 var aImg = mc.snapshot(pos2);
                 aImg.saveAs("/tmp/foobar.png");
         } catch(e) {alert(e);}
}

function js_render_text() {
         try {
                 mc.render_text("Foobar", pos1, pos2);
         } catch(e) {alert(e);}
}

--%<---

-- 
Paul ROUGET

http://www.xulfr.org - Technologies Mozilla
http://blog.sexylizard.org


----- End forwarded message -----

-- 
System administration <admin at via.ecp.fr>
VIA, École Centrale Paris, France

-- 
This is the vlc-devel mailing-list, see http://www.videolan.org/vlc/
To unsubscribe, please read http://developers.videolan.org/lists.html



More information about the vlc-devel mailing list