User:Thannoy
General presentation
Hello ! My name is Anthony LOISEAU.
I am working around VLC with Remiii, Sinseman44 and Poe (RatatouilleTeam) in Actech (Angers, France).
Why does Actech help videolan? (through us and through a hosting donation)
Because VLC is a great tool. We use it and we are proud to promote it in our next comming product (check our under-development website for more informations about our next IP PVR).
see you!
Contact
email : myNickName @actech-innovation.com
IM : myNickName @jabber.org
IRC : myNickName
VLC project
My work will be mainly focussed on mozilla-plugin and activeX parts of VLC.
Mozilla plugin
The file projects/mozilla/control/npolibvlc.cpp describe the API which should be accessible by moz-plugin. The dedicated page for its API is here.
List of methods which should be accessible
Here is the list extracted from the file projects/mozilla/control/npolibvlc.cpp by a script(will be given soon, need doc, clean and a little debug maybe) :
(release 0.9 - [rev 25203, 2008-02-20_16h20])
- .playlist.items.count : INT32
- .playlist.items.clear([]) : VOID
- .playlist.items.remove(['number']) : VOID
- .playlist.itemCount : INT32
- .playlist.isPlaying : BOOLEAN
- .playlist.play([]) : VOID
- .playlist.prev([]) : VOID
- .playlist.clear([]) : VOID
- .playlist.stop([]) : VOID
- .playlist.next([]) : VOID
- .playlist.add(['STRING', 'STRING', 'OBJECT']) : INT32
- .playlist.removeItem(['number']) : VOID
- .playlist.togglePause([]) : VOID
- .playlist.playItem(['number']) : VOID
- .VersionInfo : STRINGN
- .log.verbosity : DOUBLE
- .log.messages.count : INT32
- .log.messages.clear([]) : None
- .log.messages.iterator([]) : OBJECT
- .video.fullscreen : BOOLEAN
- .video.subtitle : INT32
- .video.crop : STRINGZ
- .video.height : INT32
- .video.width : INT32
- .video.teletext : INT32
- .video.aspectRatio : STRINGZ
- .video.toggleTeletext([]) : VOID
- .video.toggleFullscreen([]) : VOID
- .input.rate : DOUBLE
- .input.state : INT32
- .input.hasVout : BOOLEAN
- .input.length : DOUBLE
- .input.fps : DOUBLE
- .input.time : DOUBLE
- .input.position : DOUBLE
- .audio.volume : INT32
- .audio.track : INT32
- .audio.channel : INT32
- .audio.mute : BOOLEAN
- .audio.toggleMute([]) : VOID
- .versionInfo([]) : STRINGN
VLC tips
First steps in compile process
First compile tentatives are more difficult than further ones, mainly because of missing third-party packages. You can get a list of those packages here : Contrib_Status
The proper way to compile is described in many places (boostrap, configure, make, make install). At configure stage, you can be informed of missing needed packages. You should look its output to find many problem origins.
I suggest you to store its output to a file. Like this you will be able to get a look at ".. no" ending lines at anytime. To do such, you can use "tee" command on linux (it archive a copy of the output to a file) :
./configure --all --your --args=here | tee my_configure.out
When a package is missing, saying for example "ffmpeg/avcodec.h", you have to find a package about it (in fact libavcodec-dev in this case)...
On debian based distros, you can find libavcodec-dev in those ways :
apt-cache search avcodev # or with a graphic tool: synaptic
and you can install this package in those ways (with root privileges) :
apt-get install libavcodec-dev # or with a graphic tool: synaptic
\ keywords : compile /
debian etch gettext and git-core
On debian etch (4.0r3), some packages are quite old. Too old for videolan. You can get up-to-date packages using backports : [1]. Its usage is explained on its website.
Packages I have packported are:
- git-core
- git-email
- gitk
- wine (only needed to work on ActiveX API, IDL cross compiler)
- wine-dev (only needed to work on ActiveX API, IDL cross compiler)
What about gettext? Only release 0.16.1 is available, even in backports. For now I have modified configure.ac in this way:
AM_GNU_GETTEXT_VERSION(0.16.1)
instead of 0.17.
NB : You can use backport grapicaly with synaptic through "force version" menu item
mozilla-sdk under debian Etch
If you have problems finding mozilla-sdk, try to install package libxul-dev and add to your ./configure the parameter --with-mozilla-sdk-path=/usr/lib/xulrunner/sdk
Resume :
su apt-get install libxul-dev exit
./configure '--with-mozilla-sdk-path=/usr/lib/xulrunner/sdk' ...with-your-other-params... # with other-params including "--enable-mozilla", otherwise I don't think mozilla-sdk is useful for you
\ keywords : mozilla-sdk mozilla-config.h libxul-dev configure /, not tested
undefined symbol: XpmReadFileToImage
Recently, I have had a problem running mozilla plug-in. It was because for libvlcplugin.so, ld never tries to find symbol XpmReadFileToImage into the right lib (libXpm.so). Here is a workaround which have worked for me :
1- su # ask for root console 2- vi /etc/ld.so.preload 3- if the file is empty then add /usr/lib/libXpm.so else append /usr/lib/libXpm.so to its content. each libs must be separated by a space endif 4- close vi (ESC : w q)
\ keywords : undefined symbol: XpmReadFileToImage /usr/lib/libXpm.so /
Tools
Firebug
Having a JS debugger is very useful to test mozilla-plugin. Firebug is a wonderful Firefox extension for that stuff.
Links
Contributions
For you to better understand what I am focused on.
Inner pages
Some large (and some unuseful) data/pages are in inner-pages to let main pages readable. Here a some of them.
(feel free to copy/move them if you think it is useful)
Usefull internal links
Usefull external links
- http://www.getfirebug.com/ : Very usefull JS, HTML debugger and tool-set.
- http://code.revolunet.com/VLCjs/EN : JS libraries to help using VLC HTML plugins