VLC media player development and general info on VideoLAN.

Entries feed - Comments feed

Monday, November 23 2015

This week in VideoLAN - 27

27th week of VideoLAN reports

And we're back to normal, so here is the (now usual) report detailing the work in the VideoLAN community, from last week.

Paris Open Source Summit

The VideoLAN team was at the Paris Open Source Summit, in the association village.

Our stand was featuring the Android TV version decoding 4K playback on a Sony TV, a few tablets running various versions of VLC, the Nexus player with VLC playing DVDs on Android TV.

We also had hellium-balloons, lots of candies and free t-shirts.

Paris Open Source Summit

Features and changes


This week, we've started by updating the VideoToolbox decoder for iOS to support 4K decoding on iPhone6S and iPhone6S+.

We've improved the Blu-Ray module to correctly save-and-select the subtitles when activated from the Top Menu, and not from the VLC menu. We also got fixes for the next/previous chapters buttons.
Also, a way to call the pop-up menu was merged in the core.

As it's now customary, our Freetype decoder was improved again: on Windows, it can now support Fonts fallback when the font name or filename are not in English. This is great for asian names, but also for German, where all the font names are translated. (The bug was opened 5 years ago).

The iOS and OS X Freetype font fallback was implemented, at the end of the week. We should now have support for ComplexTextLayout and fonts fallback working on all the major platforms, and the Freetype module should be as nice as the QuartzText renderer, on OS X.

We've also improved the seeking for CD-G files (karaoke), and the fix came from a new contributor!

The adaptive streaming module was also modified to improve the bandwidth detection and tweak the adaptivity algorithm (moving average/vertical horizontal filter with an observation window of 250ms) and merge more code between HLS and Dash.

The last part of the core input seeking/decoding deadlock were merged and fixed. See previous weeks for details. :)

We've also added support for embedded cue-sheets in FLAC.

Finally, we updated PNG library for CVE and the iOS Dialog Provider was also largely rewritten to support tvOS.


We've spent most of the week stabilizing the Android 1.7.0 release.

Notably, we've improved the playlist look, refactored and removed most of the dialogs (using Snackbars), changed the file deletion logs, and fixed the playback service and the notification.

We've also been working on the next big features: video playlists and extensions. Those will be merged later. :)


We've did a lot of fixes in the streaming panel, so it has all the features of the iOS and Android versions.


We've pushed the tvOS beta in Testflight, for the people who registered :)

A lot of features have been merged on the project. A blogpost will follow with the complete features.

Monday, November 16 2015

This week in VideoLAN - 26

26th week of VideoLAN reports

This week-end, I really did not feel like writing anything about last week, because... you know... fuck it.





But then, I realized that I shouldn't stop living because some assholes believe the way I live is the wrong one.

So after crying a bit, here is the short (and late) report about last week in the VideoLAN community.

Features and changes


Once again, a week started with fixes about our adaptive streaming support ( :) ), notably the Smooth Streaming part, to support the Language attribute and per-stream Timescale.
Also, the computation of the bandwidth was reworked to supported split-streams (audio and video separated).

During the week, we've also fixed the streams selection (like the language) when changing quality during the adaptivity of the streaming.

We've also improved our chained OggFlac support (#14972 and #10328).

We've continued to fix the seeking, the flushing and pausing regressions in the core, that I spoke about last week.

On the Blu-Ray menu integration side, we've fixed the selection of audio tracks and subtitles tracks from the Blu-Ray menus (and not the usual VLC topbar), and a problem in chapters handling.

Salah fixed an extremely weird bug on our Freetype integration, because of the new font fallback system: #15840).

Finally, we've also worked on the Youtube integration, we've cleaned our audio output and our hardware decoder on Android and fixed a rotation regression.


Since this week, and the next update, VLC on Android will require Android 2.2 (API 8).
I dislike this decision, but the fact that it allows to correctly drop a permission and the fact that the Percent library requires it forced us to do it. If you have a clean way to revert this, please feel free. :)

The audio playlist was rewritten by using the RecyclerView class: this is cleaner, shorter and more Android-like. It will allow us to add more features to this playlist too, (like the duration of each track).

The video list was also updated to use the RecyclerView class. However, this is a bit a smaller change than the playlist.

We've reworked our notification to always show the next and previous buttons: if the playlist is too short, they will restart the current media.

We've added an option in the preferences to remember the brightness level in the video player, if you want.

Geoffrey also did a large refactoring to move the Java code around, so that it makes more sense for the new developers working on our project.

We've also fixed a few crashes reported in the beta program.


Like last week, most of the work was done on Apple TV instead of the iOS application, while we're waiting for the version 2.7.0 to be updated on the store.

Even more than last week, the commits were quite numerous, but I can't speak too much about those features, yet. I hope this will change soon. :)


The work on WinRT was resumed quite a bit, adding new features and fixes to the application:

  • a network panel was added to play and save your streams, like Android and iOS,
  • updated artists and similar artists pages look and features,
  • an updated sidebar menu,
  • updates on colors consistency,
  • speed-ups and crash fixes.

I hope we can provide a release in the next weeks.

That's all for this week! See you soon!

Monday, November 9 2015

This week in VideoLAN - 25

25th week of VideoLAN reports

Here is a new report detailing the work that happened during the last week in the VideoLAN community.

The last weeks have been crazy busy in VLC development, so this week was finally calmer, because we've focused on bug fixing and testing. :)

Features and changes


The week started with the removal of the old Smooth Streaming input, deprecated by the new demux code added last week. As the new one is less hackish and has more code in common with HLS and DASH, this should be a big win.

Then, Thomas added a flush and a drain function for the audio filters in the core, and started using it for the new SoXR resampler. It was merged internally, later during the week, with the video filter flush.

We've added support for the Closed Captions (608) from DirecTV in our H.264 playback packetizer.

libbluray was updated to 0.9.1 to support more BD-J menus.

The core was fixed to correctly preparse directories items, which should fix the Android directories view. A test was added to be sure that this will not be broken again.

Finally, a potential crash was fixed in libvlc_media_release, we've had more fixes in the adaptive streaming code, deadlocks during pause were fixed, and we've had a few fixes about block discontinuities.


On Android, this week, we've been working on the 1.7.0 release, fixing some important bugs and regressions.

We've started the week by fixing the fact that some NowPlaying meta were ignored for webradios.

The SoXR resampler was activated in the Android builds; this should remove most the distortions people were hearing, in the past releases.

We've removed the ArrayAdapter from the Video List, to speed up the view and, at the same time, fixed some navigation issues, introduced by the new sidebar code.

On ChromeOS, we've replaced the Directory browsing to support the native open dialog.

Finally, we've worked on the broacast and control intents and removed the RemoteControlClient class, replaced by the new MediaSessionCompat code.


This week was quite calm on the iOS front, because most of the work was done for the Apple TV port.

I can't detail too much the new features, but there were quite a lot of commits, and some very exciting ones, so that we can have a correct first release soon. :)

More news on that later. :)


After the numerous fixes of last week, we've fixed some issues on still-frames menus, and we've pushed the libbluray 0.9.1 release, on our website.

Please test and report broken Blu-Rays!

That's quite a bit for this week! See you soon!

Tuesday, November 3 2015

This week in VideoLAN - 24

24th week of VideoLAN reports

The last few weeks were extremely busy, so here is the latest weekly report about VLC development, hoping it won't be too disappointing. :)

Features and changes



The week started with a workaround of a very problematic Qt5.5 regression. Qt5.5 is breaking 2 important behaviors of VLC: video and hotkeys.
One is a Qt regression that was introduced in Qt5.5 and one was probably an issue in VLC, but could also be an issue in the X server. We worked-around the latter. The former is still blocked by the Qt developers.

Adaptive streaming

The adaptive streaming module got a lot of changes, notably to better support byte-range requests, and to add timeline seeking. This was a preparation for some smooth streaming support.
And indeed, at the end of the week, the Smooth Streaming support was added to the adaptive module, deprecating the old smooth streaming module. We now have only one logic for HLS, Dash and Smooth.

Related to smooth streaming, our mp4 mux got support for VC-1 and WMAPro muxing; while the mp4 demux got support for WMAPro.
The mp4 demux also got support for some Youtube-specific metadata.

Core and modules

In the input core, the preparsing was moved inside a thread, to avoid getting VLC stucked at exit.

The audio output core was modified in regards to its thread-handling, notably when VLC is paused. This allowed to fix an important Alsa module issue, by reducing the locking scope.

We've added support for SoundCloud private tracks, fixed a Youtube issue when using HTTPS, fixed the vimeo quality (low-res was selected before).

Finally, we've added a new resampler module based on soxr. This module should provide better quality for less CPU than the current resamplers we have.


We also fixed:

  • the fact that VLC was not 100% fullscreen at the start (#2685),
  • a busy-loop in the input core,
  • some issues for Blu-Ray Java integration,
  • some Blu-Ray audio selection regression,
  • some Android video output issues with the subpictures,
  • some regressions in the video output when seeking,
  • some Qt dialog issues,
  • some lua 5.2 compatibility issues,
  • add we added support of the ttml file extension.


A massive work this week was to about the Android permissions.

In the end, we:

  • removed the READ_PHONE_STATE permission from all builds for ALL Android versions, starting from Android 2.1,
  • removed the READ_LOGS permission from all releases. The logs feature will only work in debug builds and starting from Android 4.1.
  • removed the VIBRATE permissions from the TV builds.
  • removed the WRITE_SETTINGS permissions from the TV builds too.

This will be in the next release we do, probably 1.7.0.

We also prepared the app for Android 6.0:

  • ask WRITE_SETTINGS permission at runtime, when setting the audio ringtone.
  • ask READ and WRITE storage permissions at runtime, to read your media files. Without VLC is a bit useless, to be honest.

This will be activated when we do a release targeting the new SDK (too buggy at the moment).

We also rewrote the sidebar menu, fixed numerous crashes, and fixed some sorting issues in the audio view.


We first worked to finish the iOS 2.7.0 release, to fix a few remaining issues, and update translations.

The tvOS application development is accelerating fast.

We now have correct SMB, UPnP and Plex browsing, and support for the Cloud providers. The playback over HTTP, FTP and HTTPS works fine too.

We've improved the video player and added more animations, and we worked on the speed of the app.


We've had numerous changes on libbluray, notably to fix some Java menu issues on the following Blu-Rays: Cabin in the Woods, The Grand Budapest Hotel, Birdman...

We've improved the Java security model in BDJThreadGroup.

Finally, we've added the class file manipulation functionality from the asm library. This will allow to fix the playback of Penguins of Madagascar.

We've also had fixes on libdvdcss for Android.

That's pretty good for this week! See you soon!

Monday, October 26 2015

This week in VideoLAN - 23

23rd week of VideoLAN reports

Yet another week, another new weekly report about the VideoLAN community and the VLC development community.

Features and changes


Protocol Redirections

We've added support for inter-module redirections.
In the past, the HTTP or FTP redirections were only done in the same module. That caused limitations, if we wanted for example to redirect to a different protocol, like HTTP-> FTP or HTTP -> HTTP2.
Now, a redirection will spawn a new module, that can support a different protocol.

OS X notifications

In the past, we've supported only Growl for notifications on OS X.

Since quite a few versions, OS X supports native notifications. So we've added support for those notifications. Growl is still possible as a fallback.
Those notifications are only visible if VLC is in the background, of course.

Evas video output

As you've probably seen, on this blog, lately, we've done a EFL/EMotion backend.

This was the first step, but it was done with a memcpy at every frame, which is BAD and SLOW.

Therefore, we've added a new video output to VLC, based on Evas, the canvas library of EFL. It supports directly YUV, RGB, and TBM (Tizen Buffer Manager).

We also added a new libVLC call, so you can get VLC to draw directly in an Evas Object: libvlc_media_player_set_evas_object.

We will use that for our Tizen port of VLC.

Subtitles font fallback

VLC font rendering engine was never good for non-western languages.

A few month ago, we've added support for harfbuzz to shape CTL correctly.

This week, Salah-Eddin added support for font fallback to our Freetype module, for Linux, Android and Windows.

On the following example, we have Korean, Japanese and Chinese characters:


This is how it used to render for 2.2.x: Without-fallback.png

Cool, no?

Core input

The week actually started with a rework of the demux controls in the core. This makes stream, the access and the access_demux modules more similar and simplifies the code.
Moreover, sometimes the demuxers can seek even if the access cannot (or the other way around); those cases should behave correctly now.

The old caching module was fixed when seeking near the end of the file. This was the cause of the WMA regression on the latest Android versions (1.6.x up to 1.6.4).


The ALSA device selection was fixed so that the "default" choice is always available. And the ALSA device selection menu was fixed too.

As usual, we've added misc changes in the mp4 demuxer, the OS X interface, the playlist demuxer.
Also the nightly builds on Windows were updated to more recent 3rd party libraries, notably codecs.


After last week, we kept on doing small bugfix releases for VLC/Android: we've published 1.6.5, 1.6.6 and during the last week.

The bugfixes are focused on seeking, small crashes and Android TV remote events.

We've added optional buttons to seek in the video player, like in the Beta application, like this: Nexus5_SeekButtons.jpg

We've rewritten the preferences view by using the new Android Preferences view supplied by appcompat 23.1. It should fix a few bugs we had, notably the title color of the preferences. It should also give us a slightly better Android TV preferences dialog.

For the next release, we've rewritten the MediaSession control using the new MediaSessionCompat. This means a new notification, new lock screen integration, better integration with external devices, and probably a good step on the road to Android Auto.

Finally, we've removed a permission for Android TV: AUDIO_RECORD.


This week, we released VLC for iOS 2.6.6, fixing numerous crashes and adding support for SSA styled subtitles.

Besides that, there was nothing very visible on iOS this week, because most of the work was done to support Apple TV, in the same codebase.

This mostly involves splitting some logic from the views and rewriting most of the views.
It also requires modifications of some of the external libraries, notably to support the cloud services.

And of course the usual fixes for UPnP browsing.

We've also had a few small commits in DVBlast, VLC/Tizen and VLC/WinRT.

That's pretty good for this week! See you soon!

Monday, October 19 2015

This week in VideoLAN - 22

22nd week of VideoLAN reports

A new week, a new weekly report about the VideoLAN community and where the VLC development is going.

Compared to the very busy previous week, this one might look a bit calm. :D

Features and changes


The week started with fixes in quite a few modules: the new SAPI module, HLS, videotoolbox, TTML, MMAL raspberryPi decoder, OS X interface and several encoders.

As prepared during the previous week, the new SSA renderer for OS X and iOS was plugged.

There were numerous changes to our MP4 demuxer, notably to better support fragments. This was required to support seeking in DASH streams dumped to files.

The Tizen audio output was modified to detect, at runtime (instead of compile time), the API level supported by the platform.

The Disc Total metadata was added to VLC core, VLC Qt interface, and libVLC.
Parsing Disc number/Disc Total metadata in MP4 and MP3 files was also added.

The Soundcloud parser was completely rewritten.

We've added support for the SAT>IP protocol and discovery in our UPnP stack.

Finally, a new module for OS X notifications was added, to support the native notifications, instead of Growl.


This week was a bug-fixing week in Android: we've published 1.6.2, 1.6.3 and 1.6.4 during the week.

All of those releases were focused on fixing small issues like:

  • crashes on broken phones from Wiko and QMobile,
  • fixing wake-lock or screen-dimming on older phones,
  • small crashes in the interface,
  • updating to the last version of appcompat library.


On iOS, we've released the VLC/iOS version 2.6.6 in beta. It should fix the biggest crashes, and adds support for SSA-styled subtitles.

On the development branch, we've worked on AutoLayouts, RTL, the sidebar menu.
We've also added support for Touch ID, to unlock the application and synchronization of recently played streams via iCloud.

On tvOS, a bit more work was done to split the interface from the logic. As I already said, the goal is to have one-logic and 2 different interfaces, a bit like we do on Android and Android TV.

We now support UPnP, SAP and SMB in the tvOS application.


On WinRT, we've actually pushed 1.8.2, 1.8.3, 1.8.4 on the store for both Windows Phone and Windows RT.

The main features are:

  • you can force the landscape orientation in the settings,
  • you can access now a Stretch Zoom,
  • resizing of numerous widgets depending on the scale and DPI,
  • fixing of some green screen issues,
  • improvements of the crash reports,
  • fixing some crashes :)

We've also had commits in DVBlast, libdvdread, libbluray and VLC/Tizen.

That's all for this week! And thanks for all the fish!

- page 1 of 32