These weeks in VideoLAN - 38

38th week of VideoLAN reports

Another double-week report about VideoLAN and VLC development.

Features

VLC

After the major work of the previous weeks on the topic, the week started with quite a few fixes on credentials and dialogs.

We then repaired the Avahi service discovery (that has been broken for years), so that it can discover SMB, FTP, SFTP and NFS shares on Linux.

The Qt playlist now allows to sort by disc number, and the search field is accessible with Ctrl+K shortcut.

The Windows Direct3D11 module was improved to avoid some GPU buffer copies; this will restrict the module to versions of Windows more recent than Windows 7 SP1, since we need D3D11.1. In a similar way, we've improved the Direct3D9 for performance, device management and to get more debug information.

François made, once again, improvements on the TS module, notably about EPG and channels management; and simplified the standards (DVB, ARIB, ATSC) selection. The support for DVB subtitles was improved too.

We've then had some major MKV demuxer code cleaning, code simplification, but also some parsing speed improvements.

An external contributor gave us support for the OggSpots codec.

Petri added support for public key authentication in our SFTP module.

We fixed regressions and a crash on the MediaCodec module for Android.

Finally, we've had fixes for ALAC inside MKV issues, HTTP redirect, SFTP browsing, Qt recents, and for crashes in chroma conversions.

Android

In the last 2 weeks, we've published 3 betas of the future 2.0.0 VLC for Android: 1.9.0, 1.9.1 and 1.9.2.

It brings a lot of features, but notably:

  • network disk browsing (Windows shares, UPnP, NFS, FTP, SFTP...),
  • favorite folders and URLs,
  • video playlists (and control),
  • Full Android 6.0 compatibility (including permissions)
  • rewritten notifications and control,
  • rewritten history (permanent, not like in the 0.9 days, and disable in preferences),
  • cleaner preferences
  • lots of small improvements

It is also a merge of Android TV and Android versions, so that every device can optionally get the Android TV interface.

Please note that we have a new repository for examples on how to use libVLC on Android. It contains both a Java application and a Native application.

WinRT

On the WinRT front, we've been quite active on performance and interface.

The interface should now be mostly usable with a keyboard or a gamepad, to be more Universal.

The interface got a few refinement, notably to simplify the main user interface and use only the SlideShow in the music pages.

Hopefully a new beta quite soon.

libdvdcss

A few fixes on libdvdcss, this week, to fix the cache on Linux systems. A 1.4.1 release will probably follow.

That's all for these 2 weeks! See you next!



This week in VideoLAN - 37

37th week of VideoLAN reports

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

Yes, I'm still here, and code is still happening :)

Features

VLC

The week started by numerous patches cleaning the codebase. This is a trend we've seen a lot in VLC lately, and is a great sign.

Thomas removed a few weird JNI interdependencies between modules, libVLC and libVLCjni for Android. The modules do not depend anymore on code in the libVLCjni library.
Related to that, the way to get access to the JavaVM pointer inside VLC is now simpler, and the applications using libVLC does not need to pass it anymore explicitly.

We then got quite a few patches for the adaptive streaming module, to cleanup the connection process and possibly allow the connections to use VLC's core.

To continue the work of the previous weeks, we got a few changes on the keystore APIs:

  1. a new module was introduced for in-memory storage, so that the keys are valid during the same session,
  2. a new module named plaintext_file was introduced, disabled by default for obvious security reasons, since the storage is in plaintext,
  3. a new module named crypt_file was introduced, and should be usable when the system can store securely files,
  4. the crypto module was implement for Android 6.0 and later, where the data will be stored in the secure-zone, using Android Keystore System,
  5. and, of course, small fixes in the core and related modules for those APIs.

So, in practice, we're almost good, for storing passwords. We're just missing Windows and iOS.

We also got numerous fixes in the Qt module, notably to fix resizing issues and crashes in the customize dialog.
And the Qt module was renamed from qt4 to qt, since it's compatible with both Qt4 and Qt5.

We got a large patchset to fix crashes and security issues in the RealRTSP module (disabled by default). They were backported for 2.2.3.

The Windows green line issue on Direct3D was fixed and backported for 2.2.3, and hopefully, for good. :)

The TS demuxer had improvements for the EIT and the EPG, notably for now_playing information.

Finally, we got various improvements, notably for the duration of some MP4 files, and numerous fixes for leaks and buildsystem improvements.

Android

As we're preparing for Android 2.0.0, we've focused on adding the last missing features and bug fixing:

  • the libraries were split between libvlc and libvlcjni,
  • prepare the storage of users and passwords in the crypto store,
  • improvements for external displays handling,
  • improve the switch to video for some streams,
  • add a new video playlist icon,
  • fix playlist item duplication,
  • fix crashes FilePicker and parsing subdirectories
  • fix video lock control,
  • prepare for Appcompat 23.2,
  • we now pause onaudiofocus loss, instead of stopping the stream,
  • and finally JNI vout refactoring.

WinRT

The WinRT translations system was moved to a new version of the Multilingual Toolkit, which was one of the major remaining issue for the port to UWP.

We improved the UI, notably for album and artists views, the video player, activate mouse gestures and improve libVLCX in UWP mode.

libbluray

On libbluray, we've had improvements on the loading of libmmbd and libbdplus, which are incompatible between each other.

We've also had improvements on Xlet and BDLocator and minor fixes.

On libaacs, we've mostly seen fixes for Windows directories that contain non-ASCII paths.



This week in VideoLAN - 36

36th VideoLAN report

And back to a normal schedule, this post is a weekly report about what happened in the VLC and VideoLAN communities, this week.

Features

VLC

This week was a calm week on VLC, for once.

We now receive the UPnP server icon, in the service discovery, and it should be also available through libVLC.

On the TS demuxer side, we now do full sections assembling which will allow to do CRC32 checks.

At the same time, we received 2 Japanese TV fixes, one for ISDB-T, one for ARIB-25 decoding.

The adaptative module was renamed to adaptive.

So the week was mostly composed of numerous fixes for leaks, small crashes, const missing, library versions checks, extremely minor bugs and small 2.2.2 regressions.
We also got some Taglib improvements, but also leaks fixes and cleanups.

Android

In the same way, the Android part was calmer.

In the network servers view, you can now edit the favorites, but also the favorites addition and deletion actions are now available through the context menu.

The UPnP servers now have an icon, thanks to the improvements of VLC's core.

We received other fixes, like Android TV playlist sorting, a few crashes, better directories and network servers parsing.

WinRT

A contrario, the WinRT port was quite active.

At the end of the week, the first UWP version was running on x86 (Windows 10 TH2) and ARM (Windows 10 mobile).

As you can see here for Music: MusicPlayer-W10.png

and Video: VideoPlayer-W10.png

A lot of fixes for the interface got in, but also compilation issues, fixes for WP8.1;we also got important changes on the Pivot and the SlideShow and on the responsive sizing and animations.

libbluray

We've had a few fix about Fonts management and loading during BD-J menus.

There was a fix in the HDMV state machine, and a fix for the color loading.

Finally, we now have a new function bd_open_files to replace bd_register_file. This new function came with improvements on the system file access functions.

Hopefully, we'll have a new release soon.

That's all for this week! Thanks a lot and see you next!



These weeks in VideoLAN - 35

35th VideoLAN report

After the celebration of the 15th anniversary of VLC and the release of VLC 2.2.2, here are we back to normal weeks and here is a new report, on time.

Once again, this post is a double-week report about the VLC and VideoLAN communities; and they were very very busy.

Features and changes

VLC

Core, input

The first thing that happened after FOSDEM, was that the HTTP support for gzip and deflate was removed and split into a new module named inflate.

The biggest improvement of the past two weeks was the new API for dialogs that replaced the old one; it should be more consistent, easier to use, and is finally exposed through libVLC!
All calling applications can now manage the dialogs without the old hacks that existed.

We have now libvlc_dialog_get_context, libvlc_dialog_set_context, libvlc_dialog_set_callbacks functions to setup, and the functions libvlc_dialog_dismiss, libvlc_dialog_post_action, libvlc_dialog_post_login to do the interactions.

Network Discovery

A new module to discover mDNS/ZeroConf/Avahi/Bonjour services was merged.
It is based on libmicrodns, works on all platforms and discovers NFS, SFTP, FTP and SMB shares.

Finally, libvlc_media_discoverer_list_get was added to libVLC to have a list of services discoveries supported in this instance.

Codecs, Demuxer and filters

Vikram shared with us a large patch to support zero-copy between GStreamer decoder and the normal video output modules, when we're using GStreamer decoders inside VLC.

Tristan added new VP8 and VP9 encoders based on libvpx.

François split the big TS demuxer in multiple files and improved a lot the support for metadata and EPG. Support for PSIP and ETT tables were added too.

Finally, we've also mapped the Vidvox Hap codec and Resolume DXV codec to our libavcodec module.

We've merged a new video filter for edge detection, as you can see here: Edge Detection

Mac OS X / iOS

The Mac OS interface, got itself a complete status bar menu, to control VLC without bringing it to the front.

In addition the OS X and iOS port, got their support for a wallet keystore module, with values that can be shared through iCloud.

The old dialogs support for OS X and iOS was removed.

A large number of Mac OS X dialogs were moved to AutoLayout, so that we can support RTL in a simpler and more correct way.

A module named bonjour was added to provide the same features as the libmicrodns module.

Miscellaneous

We also got improvements for Vimeo and Youtube support, large changes in the UPnP module, fixes on Freetype and Ogg seeking, and vmem.

We've merged quite a few patches to improve our Windows Phone and WinRT compatibility.

Android

Networking

On Android, we've finally activated SMB, mDNS and UPnP, and we've added support for NFS shares.

Once the keystore module is merged, the Android version of VLC, should support most of the common network shares.

We've added the notion of favorite network shares too.

Extensions

The extensions can now have a refresh callback and can set their icons through a custom URI.

The extensions can also easily warn if VLC is not installed.

libVLC interaction

We've added the support for the LUA extensions and the new Dialog APIs mentioned earlier in this post.

We've also improved the support for the different libc we have on different versions of Android.

TV

We've improved the support of TV running Android without being officially Android TV.

We've refactor the network discovery and added the network browsing on the TV interface.

We've done large code cleaning on the TV specific classes, and fixed numerous bugs in the main views and the remote controls.

Phone

Finally, we've added an option to disable the album art on the lockscreen, for privacy reasons!

WinRT

The WinRT port was quite busy preparing the Windows 10 port, also known as UWP.

These weeks, a lot of the design was reworked, notably in the Artist and Album sections, to better fit the new Windows 10 look.

The pivot and the sidebar were also improved for colors and behaviors. Settings and a few other pages were also fixed to support Windows 10 Mobile buttons.

The application is now working as WP8.1, Win8.1 and UWP flavours, depending on how you compile the application.

libbluray & libaacs

libaacs received the new aacs_decrypt_bus() needed for BD+ when the bus is encrypted.

libbluray was fixed to detect if the DRM implementation (AACS or MMBD) is actually working, and fallbacks in the other cases.

And both libraries got a few other minor fixes, mostly crashes related.

That's all for this week! Have fun!



15 years of VLC and VideoLAN

15 years!

Today marks the 15th anniversary of VLC!


Cone-Video-large.png

GPL

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.

VideoLAN_GPL.jpeg

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.

Future

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.

Thanks

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

Cone-Video-large.png



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.

FOSDEM

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

Features

VLC

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

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

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

Thomas:

  • 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!