Planet VideoLAN

Welcome on Planet VideoLAN. This page gathers the blogs and feeds of VideoLAN's developers and contributors. As such, it doesn't necessarly represent the opinion of all the developers, the VideoLAN project, ...

August 05, 2014

Jean-Baptiste Kempf

libdvdread, libdvdnav and libdvdcss releases

Dvdread and Dvdnav

libdvdread and libdvdnav have had a history of poor maintenance and numerous forks (and merges), with numerous lapse of time without active maintainers.

As a result, those libraries were in a sorry state, crashing a lot (crashing VLC more than libavcodec or filling up distribution BTS), while the DVD protections were getting stronger than ever...

Last year, after some work on libbluray, I decided to take over the maintenance of those DVD libraries. And here are the first releases of the new libdvdread, libdvdnav, coupled with a libdvdcss one...


Ogle -> Xine

libdvdread and libdvdnav started with the Ogle DVD player, in 1999.

Ogle split libdvdread from their player and released versions 0.8.0, 0.9.0, and 0.9.1 in 2001 and early 2002.

The code from Ogle was also imported and forked into the Xine project to create a xine plugin, named xine_dvdnav.

The code from Xine was split into a new library: libdvdnav, in March 2002. The CVS repository was hosted in a Sourceforge project and had an actual 1.0.0 release in May 2002. The project was quite active until October 2002, and then again in March-May 2003.

In April 2003, libdvdread was merged into libdvdnav, to simplify the integration for playback applications.

It then had regular updates, until June 2004, and then a few commits that arrived in 2005, then nothing.

In 2005, a project to create libdvdnav2 was created, but never took off...

MPlayer days

In April 2007, the MPlayer folks took over the project and forked it on the MPlayer infrastructure. They moved to C99, merged many MPlayer patches, cleaned up a bit the API and rewrote a buildsytem (sic!), and merged the OS X support.

The version numbers were upgraded to 4.1.1 from libdvdnav 0.1.10 and libdvdread 0.9.7.

In November 2007, the new maintainers started to split again libdvdread from libdvdnav, in 2 different libraries. The actual splitting work was done from April to August 2008.

After December 2008, the project was almost dead again.

At the end of 2009, but mostly in 2010, a bit of work was done by yours truly and the Handbrake guys, and, by almost by surprise, at the end of 2011 a release was done.


Then most of the work happened on the fork from Erik Hovland on Github.

At FOSDEM 2013, after a long discussion with VideoLAN developers, we decided to retake the repositories on VideoLAN infrastructure.

We simplified the buildsystem, thanks to Flameeyes and merged our VLC patches.

I spend then a long time merging the code from Erik and a few other forks, and in early 2014, rewrite the complete CVS/SVN history in order to account correctly to authors and move to Git:

Features and releases


One of the major problems we had with DVDs, was the introduction of the ARccOS protection system, in 2007, that started to be widespread in 2008.

Similar protections were added to DVDs to block libdvdread based players, notably DVDs with bogus titles, bogus chapters or with out-of-order valid titles.

Many of those protections (and some more) were crashing VLC, and are now fixed.

We also fixed and updated the support for various OSes, including Android, QNX and OS/2, cleaned the buildsystem and merged patches from downstream.

Those releases should not break the API, nor the ABI.


As I am now the maintainer of libdvdread, libdvdnav, and libdvdcss, I am happy to announce the new releases.

You can now find:

on the VideoLAN servers.

August 05, 2014 03:38 PM

July 26, 2014

Jean-Baptiste Kempf

VLC 2.1.5

Release of 2.1.5

Today, we did a small release of the stable version of VLC media player: 2.1.5.

It is just a maintenance release, before VLC 2.2.0 is ready.

The highlights are:

Hopefully, this is the last one before 2.2.0 is out!

You can grab your version on our website!

July 26, 2014 04:00 PM

July 19, 2014

Jean-Baptiste Kempf

VLC, Android and DVDs

DVD on Android

If you're like me, you probably have a large number of DVDs at your place.

Of course, the DVD format is outdated, but it has a few advantages:

Adding to the fact that you have probably numerous legally bought DVDs in your home, and that VLC plays DVDs since a long time, we've decided to add DVD support on VLC for Android.

It's also great when you travel, in car, trains or planes.

Therefore, we've added support for DVD ISOs (encrypted or not) and DVD menus interactivity in the latest VLC for Android version (

As we support full DVD ISOs, you don't need to rip the DVD, remove the protection or do any transcoding: you just need to do an image of the DVD. This is totally legal in most countries, notably in Europe, since this is for your own usage (or your family).

DVD in action

Here are a few screenshots of VLC on Android with a DVD.

DVD menu interactivity: DVD menu on Android

DVD playback with audio, subtitles selection and menu buttons: DVD menu on Android with OSD

Recycle your old device

Finally, the great thing is that this works quite well also on older Android machines, like on this Motorola Defy. It's a Cortex A-8 800Mhz, running Android 2.2, and was out 4 years ago!

DVD playback on Defy

DVD menu on Motorola Defy

Have fun!

July 19, 2014 03:35 PM

July 12, 2014

Jean-Baptiste Kempf

Blu-Ray playback libraries updates (BD-J)

Triumvirat update

6 months after the first libbdplus release, and my post about the open Blu-Ray playback stack state, we've updated a bit the libraries.

We have seen, in the last weeks, the release of:

So, the three libraries of the stack have been updated with a few important features.

What's new

For libaacs and libbdplus, the updates are minor and are mostly for fixing compilation against new libgcrypt, build system issues and a speed issue in libaacs when using MMC to retrieve the MKB.

For libbluray, this update is a major update.

This release is the first release where the BD-J (the Java interactivity layer) is actually usable.

The Java code was tested on Linux, Windows and MacOS, and it should work with J2ME and J2SE and with both the OpenJDK and Sun/Oracle's JDK projects.

It's quite big, since it adds more 200 commits, mostly in the Java code base (the diff is more than 15kLoC).

In addition to BD-J, it fixes numerous issues on Win32, improves cross-compilation and allows to compile without libxml.


In addition, here are 2 photos of VLC on a rPI, with a USB BD-drive, using VLC 2.2.0 hardware acceleration for decoding.

Note: this is not my setup.

HW.jpg VLC_Playing_BluRay.jpg


Pierre Dandumont made a couple of video of a Blu-Ray with menus.

July 12, 2014 10:49 PM

July 11, 2014

Ludovic Fauvet

Mirrorbits is now on github!

Few months back I started working on a new project for the VideoLAN organization called Mirrorbits. Fast-forward, now in July 2014 it is finally online and open-sourced on Github!

Mirrorbits is a geographic download redirector written in Go. Let me rephrase that, it’s an application server that finds the best mirror to redirect a given user based on its location, pretty much like a CDN but using a pure software stack. For example, to distribute VLC we have to rely on a bunch of mirrors (around 70) located around the world and to make you able to download VLC faster we use mirrorbits to find the most suitable mirror for you. That means finding a mirror close to you, that is up and which has the file you requested. At first glance it can seem to be a pretty easy task to achieve but in reality there’s a lot of things to take care of. Take a look at the main features to find out all the things it can do.

The software is still in a early stage but is already used in production since April of this year, handling an average of 1 million downloads each day without a single hiccup and with a very low footprint. The system does not require a lot of attention and can run for months without human intervention since most of the usual tasks are fully automated. If a mirror goes down it will temporary be disabled until it recovers, all the scans of the mirrors (via rsync / ftp) are done in the background, …

Unlike other redirectors that only support the standard HTTP redirect, mirrorbits also has a JSON query API to be able to generate your own customized download page for showing alternate mirrors or a sponsor logo along with a countdown. On the control side it has a simple but yet powerful CLI to do the general maintenance.

Usage: mirrorbits [OPTIONS] COMMAND [arg...]

A smart download redirector.

add       Add a new mirror
disable   Disable a mirror
edit      Edit a mirror
enable    Enable a mirror
export    Export the mirror database
list      List all mirrors
refresh   Refresh the local repository
reload    Reload configuration
remove    Remove a mirror
scan      (Re-)Scan a mirror
stats     Show download stats
upgrade   Seamless binary upgrade
version   Print version informations

But that’s not all, it also has a web interface to get details about any served file, get real-time download statistics and see the number of downloads for each mirror.

Feel free to use mirrorbits for your own purpose but keep in mind that it’s still a very young project. And since I did not have the time to write a documentation yet you can contact me directly by email to get personal support.

To get the latest news about the project you can either star it on Github or follow the twitter account @mirrorbits.

July 11, 2014 12:00 AM