This week in VideoLAN - 28

28th week of VideoLAN reports

Another week, another weekly report about VideoLAN and VLC development.

I'm still here. :)

Features and changes


Following last week's work on Freetype font fallback on OS X and iOS, after a few fixes, we removed the QuartzText and the WinGDI text renderers.
The Freetype renderer should always be the best one, now.

We've added a new libVLC event: libvlc_MediaPlayerChapterChanged to detect a change of chapters and we've fixed the libvlc_MediaPlayerTitleChanged event, that was not fired in all cases.

The core handling of objects was changed, to notably have a lock per parent-object and not per instance; this should reduce the lock contention.
Also in the core, the variables callbacks were changed in order to be privatized and some string-related functions were renamed.

Also in the core, an important change was introduced in the flush mechanism for decoders and packetizers, adding a custom pf_flush function.

The HLS support was improved by adding support for inconsistent HLS playlist numbering, fixing live pruning, using targetduration hints for HLS updates and other small fixes.

On the Blu-Ray side, we've fixed interactive titles selection, subtitles that disappeared too quickly, and implemented overlay wiping to fix some HDMV menus selections.

Finally, our plugin now supports NowPlaying events and we've pushed fixes for the Qt interface, for an XSS in the HTTP interface, the new Youtube URLs, and improved our OS/2 support.


On Android, we've polished the 1.7.0 release, fixing the menu's look, some crashes and some alignments in the video player. This version should go live during this week :)

We've worked quite a bit on the ChromeOS version, more news about this, next week :)

However, the biggest work was done for the next release, by adding support for video playlists, something that was requested for years...
The core of the feature is done, the playback is correctly working, and you can play a group or all the elements from a directory.
What is currently missing is an interface to manage those.


On iOS, we've integrated the new subtitles renderer based on Freetype, improved our fonts support and fixed some crashes in the core.

We've also improved the notifications, the information panels, the media library and the SMB browsing.

A lot of features were added to the tvOS port, but once again, this is still only for testers. The release is on its way, as soon as we can push it on the store.

libbluray and other libraries

On libbluray, we've fixed the Android compilation (no BD-J support and untested), fixed small numbering parsing issues, and fixed support for Windows pathes that are in non-ASCII folders.

On libudfread, we've made the same changes for Android compilation.

That's all for this week, folks, see you next one!

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.

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!

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!

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!

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!

page 1 of 47