Planet VideoLAN
June 18, 2009
Jean-Baptiste Kempf
Meet me at OpenVideoConference in NYC
Hello people,
I am going to the Open Video Conference, this week-end, in NYC: Open Video Conference .
So if you are in New York, and want to me someone from the VideoLAN team, don’t hesitate to contact me!
by JBK at June 18, 2009 04:34 PM
June 08, 2009
Barry Wardell
Specifying where to find Qt when compiling VLC
I'm doing most of my VLC development with Ubuntu Linux. Unfortunately, the latest Ubuntu version (9.04, aka Jaunty Jackalope) comes with Qt version 4.5.0. This version contains some bugs which make it undesirable for use with VLC. Many bugs have been subsequently fixed in 4.5.1, so I decided to use that instead.
I downloaded and installed the latest Qt SDK, a fairly straightforward process. It defaults to installing in /opt/qtsdk-2009.02 which was fine with me. Next, I had to try to get VLC to use this version of Qt instead of the standard Ubuntu version. This took a bit of figuring out, but eventually I found the QT4_CFLAGS and QT4_LIBS environment variables. After some trial and error, I found that the following commands did what I wanted:
export QT4_CFLAGS="-I/opt/qtsdk-2009.02/qt/include/ -I/opt/qtsdk-2009.02/qt/include/QtCore/ -I/opt/qtsdk-2009.02/qt/include/QtGui/"
export QT4_LIBS="-L/opt/qtsdk-2009.02/qt/lib/ -lQtCore -lQtGui"
I was then able to use ./configure && ./compile as normal to get VLC built against the newly installed Qt 4.5.1.
Update: xtophe pointed out in IRC that pkg-config files are distributed Qt. So a better solution is just to make sure pkg-config is able to find Qt's .pc files. I did this by setting the PKG_CONFIG_PATH environment variable:
export PKG_CONFIG_PATH=/opt/qtsdk-2009.02/qt/lib/pkgconfig/
June 06, 2009
Barry Wardell
Module vs. libVLC
GSoC officially started two weeks ago and unfortunately my project got off to a bit of a slow start. My PhD thesis took a bit longer to finish than expected and I only finally submitted it this week (after many a late night!), so up to then it consumed a lot of my time. The good news is that from now on I'm totally free to work on VLC for the rest of the summer.
The first thing I have been thinking about is whether I should implement the GUI as a module or using libVLC. I had some discussions on IRC and played around with both options. The results are in the qtmc and qtmc-libvlc branches of my git repository. The libVLC way was much easier to get going, especially given the nice tutorial in the wiki. Despite this, I have decided to take the harder route and create the interface as a module. I think it's the better option in the long run as it will allow for more flexibility and will mean that it will be possible to use multiple interfaces simultaneously.
Another decision I had to make was what to use for actually implementing the interface. Qt seems like the best option for the main interface - it's a very nice GUI toolkit and is already used for the current default VLC interface. Since it sounds like fun, I also want to try to incorporate OpenGL in some aspects of the interface. I did a bit of research and it sounds like Qt and OpenGL seem to work quite well together, so I don't think it will be a problem using both. This might also mean that I could reuse some of the stuff from the PVR GUI.
With all decisions made, I'm now starting to actually write code and create the interface module. Using the existing qt4 module (which is used for the default interface) as a reference, I created a new qtmc module. It took quite a lot of frustration and patience fiddling around with the build system, but eventually I managed to get it working. I now have a module which compiles and loads successfully in VLC. That's about all it does, though. Next, I will start to actually create the interface.
All my code is in 'modules/gui/qtmc' in the qtmc branch of my git repository. There's not much to see there yet, but that will change soon.
May 28, 2009
Jean-Baptiste Kempf
VLC 1.0.0 RC 2
1.0.0 RC2
VLC 1.0.0 RC2 (Second Release Candidate) is out!
As all releases of VLC 1.0.0, it introduces:
- many new codecs (True HD, DD+, AES3, RV40, SCTE-20, dirac…)
- various playback core improvements (frame-by-frame, live-recording, instant pausing, etc…)
- interface improvements
- interface customization
- better multi-channel audio support
- better subtitles support
- global hotkeys
- better integration in GTK environments
- better integration in KDE
- and so many other bugfixes
Skins contest
And there is a Skins2 contest going on!
Please spread the news!
by JBK at May 28, 2009 12:14 PM
May 23, 2009
Jean-Baptiste Kempf
last.fm, libre.fm and scrobbling
Introduction
You may have followed the ongoing dispute around last.fm. You may also have no idea what scrobbling is (it is a way to post the music names what you listen to).
Some alternative exists.
VLC and last.fm
VLC since 0.9.x can scrobble on all platforms to last.fm database and website. Since it was cool addition, and VLC gets more and more audio support, this seemed a good idea and people liked it.
VLC and libre.fm
Some of you know the alternative to last.fm: libre.fm. It is a free software platform that gets your scrobble and will display them, like last.fm.
So far, it is VERY limited compared to last.fm
VLC 1.0.0 and libre.fm
VLC 1.0.0 is able to be configured to scrobble to any scrobbler (like libre.fm): Configuration of VLC to use libre.fm.
Position of VLC team
So far, the default stays on last.fm, but the possibility to scrobble to something else is here. We will see how the future goes.
Do as your heart tells you and share your music!
by JBK at May 23, 2009 09:09 AM
Want to include vlc in your Qt application?
Qt and VLC
Well, we have a very easy howto for you: libVLC in Qt .
This will output the video inside the widget that you want using QWidget::winId() method.
This has been tested on Linux and Windows, using libVLC 0.9.9.
Need
If you can't build your application easily, remember to install libvlc-dev or to use the SDK for windows from the .zip files of the releases!
Participate
Don't hesitate to complete this!
by JBK at May 23, 2009 08:36 AM
May 06, 2009
Barry Wardell
First Steps
I don't officially start my Summer of Code project until May 23, but that doesn't mean I can't start working on it before then. To give myself a break from thesis writing, I spent some time recently working on GSoC.
For last year's GSoC, Dylan Yudaken worked on a project to enhance the PVR capabilities in VLC. As part of the project, he began developing a PVR-style interface for VLC. Although he never finished the interface, he made some good progress and published some working code in his git repository.
I decided that the first goal for my own project would be to try out this code and see any of it can be re-used. After a bit of work, I managed to get his code to compile. Unfortunately, trying to actually run it resulted in VLC crashing. His code is based on some 0.9 version of VLC and uses OpenGL - a combination which I discovered doesn't work with my computer.
Since OpenGL is working for me with newer (1.0-based) versions of VLC, I decided to try and sync Dylan's code to a newer version of the VLC code. With help on IRC from Dylan and working in a branch of my own, brand new git repository, I updated his code to work with the latest VLC version. Thankfully, this time it worked (mostly) and I was able to play around with the GUI:
I've committed my changes and pushed the code to the VLC git server so it's available there in the dylanza-pvr branch for anyone to try out.
Now that I have the code up and running, I'm planning on playing around with it a bit and deciding what parts would be useful for the media centre interface.
June 28, 2008
Jean-Paul Saman
VLC 0.8.6 on Neuros OSDv2.0

As part of his internship at M2X dionoea got VLC to run on Neuros OSDv2.0 hardware. VLC 0.8.6 now can encode and decode using the DSP codecs. There are still some rough edges but it is a start. If you want to see it with your own eyes, then look at this video.
by jpsaman at June 28, 2008 02:19 PM
June 19, 2008
Geoffroy Couprie
YAY IT COMPILED!!
I just got VLC compiled for Windows CE! That's certainly not working, but I'm happy!
by Geoffroy Couprie at June 19, 2008 12:03 AM
June 17, 2008
Geoffroy Couprie
First issues when porting an application on Windows CE
Windows CE is a wonderful platform, but there are some problems I encountered that are worth mentioning.
I use mingw32ce from the cegcc project, which means I don't use newlib. All calls in the program go through a mingw dll and are redirected to the system libraries. With this configuration, I have to use functions from Windows CE, and that's sometimes very tricky.
Missing functions
rewind(file)can be replaced byfseek(file, 0L, SEEK_SET); clearerr(file);- GetVersion is not present, but can be replaced by GetVersionEx both on Windows NT and Windows CE (and even older versions):
if (GetVersion() < 0x80000000)
replaced by
OSVERSIONINFO osinf;
ZeroMemory(&osinf, sizeof(OSVERSIONINFO));
osinf.dwOSVersionInfoSize = sizeof(OSVERSIONINFO);
GetVersionEx(&osinf);
if(osinf.dwPlatformId == VER_PLATFORM_WIN32_NT || osinf.dwPlatformId == VER_PLATFORM_WIN32_CE)
or
if(osinf.dwPlatformId >1)
to keep compatibility with future versions.
- _wopen is replaced by _open
- _wunlink is replaced by _unlink
- _wstati64 replaced by _stat
These three functions are replaced by their ANSI version because their implementation in cegcc uses Unicode. As an example, see unlink.c in cegcc. You can easily reimplement the unicode version of these functions.
- asprintf and vasprintf are missing, and this is really painful, as they are widely used. Both are implemented in VLC, but there's a trick in vasprintf. Here's the old code:
static inline int vasprintf (char **strp, const char *fmt, va_list ap)
{
int len = vsnprintf (NULL, 0, fmt, ap) + 1;
char *res = (char *)malloc (len);
if (res == NULL)
return -1;
*strp = res;
return vsprintf (res, fmt, ap);
}
And now I'm crying loudly, because the behaviour of vsnprintf is different on different platforms. In glibc 2.1, vsnprintf returns the size it would have needed to store the string copied. BUT, in glibc 2.0 and in the Win32 API, vsnprintf returns -1 if it couldn't copy. So here's my workaround:
static inline int vasprintf (char **strp, const char *fmt, va_list ap)
{
int n, size = 50;
char *res, *np;
if ( (res = (char *) malloc (size)) == NULL )
return -1;
while (1) {
n = vsnprintf (res, size, fmt, ap);
/* If that worked, return the string. */
if (n > -1 && n < size)
{
*strp = res;
return n;
}
/* Else try again with more space. */
size *= 2; /* twice the old size */
if ( (np = (char *) realloc (res, size)) == NULL )
{
free(res);
return -1;
}
else
{
res = np;
}
}
}
Again, it's buggy, so wait for the new version.
strcollcan be replaced bywcscmp- tmpfile: i replaced
if ( (file = tmpfile ()) == NULL )
by
if(GetTempFileName(strpath,strprefix,0,buf) || ( (file = fopen(buf,"wb+")) ==NULL ))
Missing headers
- There's no errno.h for Windows CE. I had to copy the errno.h from cegcc.
- There are not the same signals. I had to copy signal.h from cegcc
Multithreading
I don't have SignalObjectAndWait, and it's painful. I tried the SetEvent solution from this website, but I'm not sure of the consequences, as I'm not a multithreading expert.
Unicode
Windows CE is full Unicode, I had to replace the ASCII functions by the Unicode ones.
UPDATES: 30/09/08-: _open and _unlink are internally unicode
Bugfix: vasprintf implementation - changed if( n > -1) to if( n == -1).
by Geoffroy Couprie at June 17, 2008 03:46 PM
June 04, 2008
Geoffroy Couprie
VLC media player, Windows CE, what's going on?
VLC media player is a powerful multimedia player, which can play nearly all video and audio formats, can be used as a streaming server and client, ca reencode various formats, etc. It can be used on a large number of OS, but the Windows CE has been broken for a long time, and now, I'm here to fix it!
Windows CE is one of Microsoft's OS, and is designed for embedded devices. It is highly configurable, and can be used on many types of hardware. Windows Mobile, the OS for PDAs and Smartphones, is based on Windows CE. This system is a bit different from the other Windows, so I'll have some work this summer!
The difficulty here is that VLC media player must be used on various plateforms, so I must not break the code for other systems. I also have to recompile for Windows CE all the libraries used. I'll use the cegcc development tools. I have chosen to use the Visual Studio remote tools and gdb combined with the Device simulator. With that, I'll be able to check the behaviour of my port on various virtual machines. And of course, I'll use it on my phone :)
by Geoffroy Couprie at June 04, 2008 11:57 AM
May 26, 2008
Jean-Paul Saman
VLC porting on Neuros Open Internet Television HDPlatform

In a joint effort, "Neuros Technology" and "M2X" will, as part of the "TI-Neuros Open Source Bounties" , port VLC to the "next generation of Neuros OSD" solution. The "VLC" porting project was kicked off on May 28, 2008, with developers directly from VLC community. Jean-Paul Saman, one of the VLC maintainers, will be leading this porting effort.
Aiming to get an efficient and powerful multimedia framework on its Davinci Linux based Open Internet Television HD Platform, a highly optimized multimedia platform based on an ARM-DSP dual core system, Neuros has chosen to use VLC among many other alternatives due to its extensive multimedia functionality, openness, and portability.
The role of VLC in Neuros HDPlatform architecture is to be the playback and encoding engine for all multimedia contents. For codecs, VLC uses plugins to carry out its video decoding/encoding on DSP, while all audio operations are done on ARM side. For Audio/Video I/O, VLC interfaces with the system by directly working with its standard Linux A/V system, for example, frame buffer for video output and V4L2 for video capturing. On application side, VLC implements MPRIS specification and exposes a DBUS interface thus to cleanly separate the multimedia core from applications.
This porting will be based on VLC stable version 0.8.6g (in fact, porting starts with 0.8.6-bugfix, a branch that includes some bugfixes for 0.8.6g since it was released), porting will be carried out in phases, from basic multimedia platform bring up, to full playback and full recording support, with complete system integration done in Q3 of 2008.
As 'open' itself states, all VLC source code files, new or modified during the porting, will be submitted to the central source code repository of the VideoLAN team, under the same license GPLV2 as the rest of the VLC source code.
<!--break-->
by jpsaman at May 26, 2008 07:46 PM
May 24, 2008
Jean-Paul Saman
VideoLAN at LinuxTAG
The VideoLAN project will have a presence at LinuxTag in Berlin this year. LinuxTag is held on 28th till 31st until May 2008, It is the first time the team visits Berlin and we are looking forward to meet all those German VLC-fans.
Hope to see you there.
Jean-Paul Saman.
by jpsaman at May 24, 2008 12:15 PM
Welcom to my new site.
Welcome to my new site.
As you can see it is still under construction, but as time will advance it will gain more information.
A lot has happened in the past years. Apart from my continues work on Open Source Projects, visiting and organising Open Source congresses. I also started a company called M2X in 2004. OK that is almost four years ago now, but it still feels good.
M2X allows me to follow my dream of working with Open Source software during my professional life. Visit the company website for more information about services offered.
Some of you will already know me because of my work for the Open Source community as developer for VLC and organizer of T-DOSE. For those that do not know me yet, follow the links.
Cya,
Jean-Paul Saman.