15 years of VLC and VideoLAN

15 years!

Today marks the 15th anniversary of VLC!



Technically, today is the 15th anniversary of the relicensing of all the VideoLAN software to the GPL license, as agreed by the École Centrale Paris, on February 1st, 2001.


If you've been to one of my talks, (if you haven't, you should come to one), you know that the project that became VideoLAN and VLC, is almost 5 years older than that, and was called Network 2000.

Moreover, the first commit on the VideoLAN Client project is from August 8th 1999, by Michel Kaempf had 21275 lines of code already, so the VLC software was started earlier in 1999.

However, the most important date for the birth of VLC is when it was allowed to be used outside of the school, and therefore when the project was GPL-ized: February 1st, 2001.

Facts and numbers

Since then, only on VLC, we've had around,

  • 700 contributors,
  • 70000 commits,
  • at least 2 billion downloads,
  • hundreds of millions users!

And all that, mostly with volunteers and without turning into a business!

We have now ports for Windows, GNU/Linux, BSD, OS X, iPhone and iPad, Android, Solaris, Windows Phones, BeOS, OS/2, Android TV, Apple TV, Tizen and ChromeOS.


If you read this blog, you know that we're working hard on VLC 3.0, to unify most of our mobile ports, adding more GPU decoding, better adaptive streaming and ChromeCast integration.

We're still here and working for our users.


So, for all our users supporting us, I just want to say: thank you!


These weeks in VideoLAN - 34

34th VideoLAN report

I was traveling quite a bit lately, so here is a double-week report about the VLC and VideoLAN communities.


Once again, the VideoLAN team was present at FOSDEM.

Here is a the usual Delirium Cafe photo!

FOSDEM 2016 Delirium

And of course, my talk about VLC 3.0.

FOSDEM 2016 VLC talk



The first change was related to ChromeCast: a new module was added, to split the control of the chromecast from the streaming part. More code on that feature should come in the next weeks.

Petri then got us support for a Bluray demuxer in our Bluray module. It was only an access_demux before, and will now allow to open ISO files of Blurays over the network, including FTP, SMB, NFS or HTTP. Additionally, you can now use the default drive with the MRL bluray://.

We fixed the support of Windows XP for the 3.0 release: but XP support is now only on a best-effort basis.

François also got support for ATSC A65, aka PSIP, or information like EPG and related, for ATSC broadcasted streams.
Almost at the same time, we received support for SCTE-18 / AES, aka alerting system inside broadcast.

Hugo added support for Metadata over UPnP, (notably artist, album, cover ART and related fields) and fixed quite a few issues on this module.
We finally will get proper UPnP support soon!

We also received fixes for TS sections, dialogs, win32 installer, TS seeking, DxVA decoding and MIDI. And also improved the features merged in the last weeks: keystore, the dialogs and SMB modules.

iOS / Apple TV

After the release of the Apple TV version in my last report, we produced 2 updates to fix bugs: 1.0.1 and 1.0.2.

We're still waiting for feedback to improve for the future releases.

On the main development branch, we mostly got:

  • improvements on FTP and Plex protocols,
  • support to play "next item" automatically,
  • support for a "play all" action,
  • support for 3D Touch Quick Actions,
  • and a few bugfixes.


Android development was quite busy too, as it's been the usual in the last few weeks.

The most visible change is that from now on, you will have only one version and apk for both Android TV and Android.

We also got:

  • a new File Browser for the Android TV version,
  • an option to select Android TVs or Android look, (useful for TV devices not officially Android TV),
  • support for the history view on TVs,
  • support for icons in the extensions,
  • media directories are now displayed on the main TV screen,
  • fixes for keyboard and remotes navigation,
  • fixes for bitrate display, preferences and equalizer,
  • improved now-playing support,
  • the About and License dialog in the TV interface,
  • numerous fixes for crashes,
  • memory reduction when the application background.


WinRT development was quite active too, mostly focusing on a complete UWP project.


  • improved the launch speed of the application,
  • reworked numerous exceptions,
  • fixed numerous crashes,
  • reduced the amount of WindowsPhone specific code,
  • improved the responsiveness of the application,
  • improved our Pivot-control,
  • improved the audio metadata,
  • added various interface fixes and improvements,
  • and many other small tweaks...

That's mostly it for those weeks, see you next time!

This week in VideoLAN - 33

33rd VideoLAN report

This is my second report in 2016 about what happened last week in the VLC and VideoLAN communities.

VLC on AppleTV

Of course, the big news of the week was the release of VLC for the AppleTV.

Apple TV is the latest platform to which we added VLC support, to continue the VLC everywhere route, after VLC on ChromeOS, VLC for Android TV and VLC for Windows Phone that we added last year.

You can read more about it on Felix's blog and on our website.

We hope you will enjoy VLC on this new platform.

Features and changes


Monday started with the addition of a NFS protocol implementation to VLC. This will allow us to access and browse files and directories on NFS shares, on all our ports, including Windows, Android and iOS, where this protocol is not natively included.

We then got multiple fixes on the new Keystore API and the corresponding implementations, notably in the SMB and SFTP modules.

The AVI demuxer module was fixed to help reducing the number of connections for distant streams on interleaved files. This should reduce the load on the servers, when playing those files.

Multiple fixes and improvements were pushed on the TLS code, continuing the work from the previous week. Notably, to use I/O vectors for sending and receiving messages.
Then, the TLS code was abstracted to allow TLS sessions not directly above TCP, like in the TLS over TLS case. This big refactoring was necessary to add the support of HTTPS through HTTPS proxies.

Finally, we received numerous fixes for crashes, memory leaks and small issues.


On Android this week, we had quite a few changes too.

We now have a manual way add network servers, like FTP, SFTP, SMB, NFS or FTPS.

On the Android TV, we've improved the settings, reworked heavily the playlist and the advanced options navigation, and refactored completely the video listing, to allow alphabetical sorting and browsing.

Finally, we changed the seek buttons to 10 seconds, instead of 30; we now show bitrate information in media information dialog for audio files and we improved the playlist items' look and navigation.

Try a nightly build to test all those features!

iOS / Apple TV

So, as said in the introduction, VLC for Apple TV was introduced this week, in its version 1.0.0.

Based on the iOS version, it's finally a bit different, to accommodate the specialties of this platform. Especially the casting we introduced is not seen in any other port of VLC.

You should read more about it on Felix's blog.

At the same time, we released VLC for iOS 2.7.2, fixing minor reported bugs.

That's mostly it for this busy week, see you next!

This week in VideoLAN - 32

32nd VideoLAN report

Another year, and another week working on VLC and VideoLAN.

Happy New Year 2016!

Features and changes


Another week started with improvements on the new HTTP/2 stack.
We mostly got support for HTTPS through HTTP proxy and HTTP tunnel (RFC7639) but also a better documentation and better cookies handling.

The large work of the week was the merge of the new Keystore API for the VLC core.
It allows to store user passwords and credentials in the secure storage provided by the Operating System. This is notably for HTTP or SMB passwords.

This was implemented for HTTP, RTSP, SFTP, FTP(S), SMB. And we have now a KDE Kwallet, a Gnome libsecret and a plaintext backends to store those in the disk.
Hopefully, one for iOS/OSX and Windows will follow soon.

The TLS support has a new shinny test, that helped improve the GnuTLS module, which provides TLS on most platforms. This is going to be important for HTTP/2.

To also help this HTTP/2 module, the core got a new socket function named vlc_socketpair() to create a pair of sockets.

The H.264/HEVC packetizers were made faster, using some SSE2 optimizations.

We also should detect now JP2K inside TS streams.

Finally, we've had fixes for securetransport, improvements for the OS X interface, and improvements on the EAC3 detection in TS.


Android port got quite busy this week, with more than 50 commits from Geoffrey.

In summary, we:

  • reworked all the existing snackbars for deletion (or related actions),
  • reworked the advanced options dialog,
  • added a context menu to delete and play as audio for all files in the file browser (even the ones we don't know the type),
  • adding file deletion in more context menus,
  • added an option to disable the playback history,
  • reduced the number of refreshs in the video, audio and playlist views,
  • improved auto-scroll in the playlist,
  • moved the targetSDK to MarshMallow,
  • added an option to disable gestures,
  • allowed to cancel a swipe on an item in the playlist,
  • added Media Information panel for audio,
  • improved video list and media information fragments post file deletions,
  • moved the 'save playlist' feature to advanced options,
  • change the icon for the Google Drive extension,
  • added other look and small fixes improvements.



After releasing VLC for iOS 2.7.1 last week, we prepared a version named 2.7.2 fixing more issues reported, notably for UPnP playback, changing subtitles size and passcode lock.

This release is in review on the store.

At the same time, we've prepared the release of the Apple TV version, that will be out this week, (if everything happens according to schedule).


The WinRT port is getting in shape and was quite busy too this week, with almost 50 commits from Thomas!

The largest part of the work was the improvement of the Database speed, playing with threads, bindings and properties.

We fixed a large number of bugs on this part.

We also improved and fixed the look for the navigation, when switching from Light Mode to Dark Mode.

That's all, this week for VLC! All my best wishes for 2016!

These weeks in VideoLAN - 31

31st VideoLAN report

After the holiday season, this is the last of the weekly reports for 2015 for VideoLAN and VLC development!

Technically, we're already in 2016, but this report will cover the last 2 weeks of 2015 and only a few days of 2016. :)


Features and changes


As one can expect if one has read my previous reports, we had quite a few improvements on the HTTP/2 pipeline (multiple cookies, test cases, ...) and on the HEVC/H.264 packetizers (test cases, SEI...).

When using libVLC, it's now simple to know if the titles are menus or are interactive, with the libvlc_media_player_get_full_title_descriptions call.

In the decoder core, the call decoder_AbortPictures was added, to finish our work on asynchronous decoding; notably to support flushing when doing asynchronous decoding.
Some related work on draining/flushing was also done in avcodec and mediacodec modules.

We've added a way to have tunneled-playback through mediacodec on Android for surface with punch holes. This is only for developers who work on a specific platforms and SOCs, since you must know what you are doing. :)

In the streaming output, we've added sout_MuxFlush to be able to flush, notably useful when seeking the input.

We've also got quite a few commits on the ChromeCast module, preparing the work that will come soon, to have a proper support of those devices.

On OSX, we've had a large rewrite of the messages and the information dialogs.

Finally, we've had improvements on the H.264 and HEVC demuxers, and on the adaptive streaming modules, fixes on the iOS video output, and a lot of small fixes for leaks and crashes.


On iOS, we've released VLC for iOS 2.7.0. Finally ! :)

It has brought quite many new features and improvements:

  • full iOS 9 support including split screen and iPad Pro,
  • re-written Apple Watch application for watchOS 2,
  • system-wide search for content stored locally within the app using “CoreSpotlight”,
  • Touch ID support to unlock the app,
  • full support for Right-To-Left languages,
  • support for SMB (Windows shares) file servers,
  • highly improved subtitles rendering with font fallback for non-western languages,
  • list of recently played network streams and stored login credentials are shared across devices using iCloud.

Be careful, this version requires iOS 7 to run.

We also released a version 2.7.1 to fix the important bugs we saw in 2.7.0.


On Android, we've done 3 minor releases, 1.7.3, 1.7.4 and 1.7.5.
Those releases fix a lot of bugs, but also improve the Android TV version, notably on the audio player and the now-playing cards.

A large addition was added to the master branch, to support sources extensions.

A bit like on the desktop version, where we have services discovery, one might want to add new source of content, to the VLC on Android application, like ISP-specific TV channels, like Google-Drive browsing, podcasts, or social-network videos.

Those sources extensions will appear a bit later, on the Play Store. :)

We've also added support for Search inside the audio playlist and a playlist in the video view, when using a second-screen!


On WinRT, the work was done to improve the navigation stack, and the way we move inside the application, including the hamburger menu. We've improved the MiniPlayer too.

Finally, we've done major refactoring of files and projects to be have a better file layout.


As you might have seen, we've finally done a new release for libdvdcss!

Happy New Year!

So, that's all for the last weeks!

For everyone, I wish you a happy new year, and give you all my wishes of health and success!

libdvdcss 1.4.0 release

libdvdcss 1.4.0

For once, just a very short blogpost, to announce that libdvdcss 1.4.0 is out!

This release is a major release of libdvdcss, released a bit more than one year after 1.3.0. It's focused on stability, cleaning, deprecating and small improvements.

In terms of commits, this is also a very large release, with more than 150 commits (on a total of 486 since libdvdcss creation).


The biggest feature of 1.4.0 of libdvdcss is the support of ISOs over the network, with the introduction of the dvdcss_open_stream() function in the API.
This is the first time in a long long time, that we add a call to libdvdcss. :)

We've finished the porting to Android, with key caching. NOTE that the default Android cannot open a USB DVDs player, nor can VLC for Android use them.

We've also added an optional header file, named version.h, to help detecting the version, if you ever use libdvdcss statically (very rare case, I believe).

Finally, we've spent a lot of time to clean, and make a big lift-up to this library. If there are not too many regressions, the cleanups will go on, next year.


In this release, we've dropped the support for:

  • HP-UX,
  • Windows 9x and Windows NT 4.0, (you need 2000 now),
  • BeOS (replaced by Haiku).

If you are on those OSes, please keep using the old libdvdcss versions.


You can download it now, on your favorite website!

page 1 of 49