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, ...

VLC for Android

January 23, 2017

LAVA events

Rémi Duraffort

For some releases now, LAVA server is publishing events every time:

  • a Job status change (Submitted, Running, ...)
  • a Device status change (Idle, Reserved, ...)

The stream of events is public and anyone can subscribe and receive updates.

A dump of the streams for the production and the staging instances is available …

January 23, 2017 08:25 AM

January 19, 2017

Testing LAVA with DummySys

Rémi Duraffort

For more than 3 years now, I have been working on LAVA. Looking at the documentation:

LAVA is an automated validation architecture primarily aimed at testing deployments of systems based around the Linux kernel on ARM devices, specifically ARMv7 and later.

In order to test LAVA, you need:

  • a wide …

January 19, 2017 09:21 AM

September 21, 2016

Other uses of futex

Rémi Denis-Courmont

Revisiting the condition variable with futex and pondering thread synchronization primitives.

September 21, 2016 03:05 PM

September 02, 2016

Unveiling interesting numbers about VLC downloads

Ludovic Fauvet

Every year in September the VideoLAN community organize the Open Multimedia Conference also known as the VideoLAN Developers Days or for short VDD. This year it will take place in Berlin the 3rd and 4th of September. For this occasion I gathered some interesting data from the VideoLAN download servers.

First, let me start with a bit of context. VideoLAN is a (French) non-profit organization with 31 active members as of today. The non-profit acts as an umbrella for a lot of multimedia related projects like libVLC, x264, DVBlast, libbluray and more. But of course, the most known is also the one that eats up most our bandwidth: VLC media player.

On the infrastructure side we rely on amazingly nice peoples and organizations all over the world that donate some of their bandwidth for a good cause. We host the main replication server also known as the rsync master and all the mirrors use the rsync protocol to fetch updates multiple times a day.

When you’re heading up to the VideoLAN website to download VLC, a piece of software written in Go, called mirrorbits, will find in just a fraction of a second the closest mirror to you that is alive and serving the file you’re looking at. That way downloads are fast and reliable. Note: actually most of the numbers presented here were exported from the mirrobits database.

Currently we have 87 mirrors in 44 countries and the total size of our repository is 46 GB. During the past year we had no major incident and no downtime (thanks to the redundancy) so that’s pretty close to a 100% availability.

Just for the past month (August 2016), which is usually not the highest of the year in terms of traffic, 568 TB were downloaded from our mirrors. That’s an average of 1.7 Gbit/s for the month and we counted 23,794,472 downloads for the same period. These numbers do not include the mobile ports (Android, iOS, WinRT) or the Linux versions which are served by their respective platforms.

Let’s focus a bit on VLC. We only have (somewhat) accurate statistics for Windows (both 32 and 64-bit) and MacOS but it gives an interesting scale anyway: MacOS count approximately for 110 th of the total. The Windows 64-bit version is surprisingly low but that’s because the 32-bit one is the default choice (and works on both 32 and 64-bit architectures).

On this other chart you can compare the trend of the downloads for some of the recent versions of VLC1. The peak of a release usually includes the automatic updates that are started in the week that follows (to ensure there is no major regression). For example the 2.2.2 and 2.2.3 were quite short-lived releases which did not get pushed through auto-updates because of bugs.

Let’s finish with a fun fact. Few months ago I’ve setup a live downloads counter on the VideoLAN website (just below the big Download VLC button). It started as a fun experiment but stayed that way ever since. Behind the scene is a websocket that connects to our download server as soon as you load the page, and receives updates until you leave the page. Simple.

So that should give us an idea of how many users we have on our frontpage at any given time. After aggregating the results I got the improbable number of 985 simultaneously connected users on the frontpage. We’re a popular website but still, 985 is a lot and it grows month after months… weird. At best we should have around 300 connections tops. But since we don’t disconnect the websockets after a while it means you can basically stay connected forever! And some of these connections are up since weeks. So what are all these people doing here you may ask. Well, the reason is probably that a lot of these users went for a quick visit and didn’t close their tab since! Amazing.

That’s all for today folks! I hope you liked this article. Don’t forget to follow me on Twitter and if you’re around Berlin this weekend, come and say hi!

  1. For more accurate VLC downloads statistics by version and refreshed every day, you can head to [return]

September 02, 2016 03:40 PM

August 25, 2016

Last weeks in VideoLAN - 53

Jean-Baptiste Kempf

53rd VideoLAN report

During the core of the hot European summer, here is a weekly report about the last 2 weeks in the VLC and VideoLAN communities!

It was a bit calm, to be honest; and I'm a bit late to publish. Summer is the cause :)



The week started by a lot of code cleanup and renaming for the Mac OS interface. We also had improvements focus on the Sierra release.

On the decoding side, we've had some improvement for hardware decoding in Direct3D11, focused on HEVC decoding.

We also had fixes for the OSX VideoToolbox decoder, notably to be able to restart the decoder when required.

A module supporting the AV1 from the Alliance for Open Media was merged too. So far, it's only a decoder, and disabled by default.

On the streaming side, the MP4 muxer timestamps were fixed. It was also backported to the 2.2.x branch.

We now have ARM64 assembly for our deinterlacer, which will be very useful for iOS, Apple TV and Android TV.

Finally, we had fixes for RTSP passwords saving in the keystore, improvements for RTSP support and the H264 packetizer, and we added support for UTF8 filenames in FTP directory listings, and support for DiscNumber and DiscTotal metadata in MP4, and DNxHR!


On Android, we've mostly fixed crashes, updated translations and pushed 2.0.6 in production, on the play store.

The work is mostly done now on the new media library code, that will be merged later.


On UWP, the focus has been on the XBox 1, and mostly on how we can upload files on the box, since we don't have access to the filesystem.

The current solution is using an HTTP webserver to upload the files from your browser, and support for USB disks.

That's all for those weeks, see you next!

August 25, 2016 03:50 PM

August 20, 2016

A faster YAML loader

Rémi Duraffort

That's the second issue I had when playing with the LAVA log viewer.

In the new versions of LAVA, the logs are formatted in YAML:

- {"dt": "2016-08-18T14:24:01.096308", "lvl": "info", "msg": "start: 1 tftp-deploy (max 300s)"}
- {"dt": "2016-08-18T14:24:01.099413", "lvl": "debug", "msg": "start: 1.1 download_retry …

August 20, 2016 06:16 AM

August 12, 2016

Playing with CSS rules

Rémi Duraffort

While working on improving the log viewer in LAVA I ran into an issue.

The issue is really simple: how to add display: block or display: none to a list of nodes while another JS script is adding more of theses nodes to the page.

The classical approach is to …

August 12, 2016 01:30 PM

August 08, 2016

Last week in VideoLAN - 52

Jean-Baptiste Kempf

52nd VideoLAN report

Another summer week passes by and here is a new weekly report about the VLC and VideoLAN communities!



The week started with numerous additions to the Direct3D video accelerations and video outputs, to continue the support for 10bits decoding and HDR.

Related to those improvements, we added support for hardware decoding of HEVC decoding inside the TS format, by improving our HEVC packetizer.

We fixed (actually added) the support of QuickTime Videos inside MKV, aka MP4-inside-MKV; and also the support for QuickTime Audio inside MKV.

We improved again the ChromeCast support, by fixing small issues, notably when reloading and stopping the stream.

In the core, an important deadlock was killed, that was affecting Windows and Android platforms.

Finally, we also did a fix for hidden chapters in MKV, and improved the MIDI integration for Windows, and reworked a bit our contrib system.


On Android, we finally fixed the support for old x86 Phones like the ZenPhone that claimed to be ARM phones. Those phones lie about their CPU with CPU_ABI, CPU_ABI AND they expose a fake /proc/cpuinfo to the applications! Thanks to a contact at ASUS, we got a phone and coded a work-around.

We also added support for saving audio-delay when using your Bluetooth headphones, so that you have a different audio-delay when using those headphones than without headphones.

Finally, we fixed a few crashes and regressions that were reported against the last release.


On UWP, the biggest focus was on cleaning the code and on the Xbox 1 interface.

More to come soon, I hope!


We've had a lot of small fixes for libbluray, mostly on fixing issues and crashes reported by static analyzers, but also build issues, Windows issues, and crashes reported by the users.

That's all for this summer week! See you next!

August 08, 2016 04:54 PM

August 03, 2016

Last week in VideoLAN - 51

Jean-Baptiste Kempf

51st VideoLAN report

So, after a few crazy weeks, I'm coming back to a more regular schedule for my weekly reports about VLC and VideoLAN.



Decoder fallback

The major change, during last week, was the possibility to restart the audio decoders when the audio device changes.
This is very useful when you switch from normal decoders to SPDIF/HDMI pass-through for DTS, Dolby and related codecs.

In the past, VLC could only restart the filters, not the decoders, so our Dolby and DTS decoders were actually filters. This was finally changed and now decoders are decoders.

For those who don't understand what all this means, it means that it will help us support more formats for pass-through over HDMI, like DolbyDigital+ or DTS-HD.


We've fixed the green line that appears only on AMD GPUs on Windows. This is scheduled for the next Windows update.

I've implemented the support for browsing FTP remote directories, so that it behaves similarly to SFTP or SMB.

On Windows, we've added the support for hardware decoding of 10bits HEVC , using DxVA and D3D11.

We also pushed improvements to the prefetcher module and to our TTML support; and we've fixed issues for DVD menus, SAT>IP protocol and HLS protocol.

Finally, please note that the license of the UPnP module was switched from GPL to LGPL.


On Android, we've fixed a few issues related to old devices, and we've improved the libVLC Java bindings to support statistics.


Last week on WinRT, we've removed all the code that was focusing on older versions of Windows.

The codebase now support only Windows 10 Universal with its Anniversary Edition version.

That's all for this week!

Thanks for the support and see you soon!

August 03, 2016 11:37 AM