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

VLC

Qt

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.

Miscellaneous

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.

Android

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.

iOS

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.

DVD/Bluray

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!