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

July 29, 2015

Jean-Baptiste Kempf

This week in VideoLAN - 12

12th week of VideoLAN reports

The summer goes on, and here I publish another weekly report of what's happening in the VideoLAN community and VLC development teams!

This week was quite cool, and quite busy, with some of the team going to Spain for aKademy!akademy2015.jpg

Features and changes

VLC

The week started by the continuation of the OS X cleaning by Felix, preparing for the next releases of OS X and Xcode, removing the old QTCapture module, switching more code to ARC, splitting the code of the interface in smaller files and improve the code style of the OS X modules.
This important cleaning work went on until Wednesday night.

The Windows code is now calling SetThreadErrorMode() on Windows 7 and is calling a fallback for older versions. This is necessary for proper thread-safety of libVLC.

The helpers vlc_access_NewMRL(), vlc_access_Delete() were introduced in the core, along with inline function helpers like vlc_access_Tell(), vlc_access_Seek(), vlc_access_Eof(), vlc_access_Read() and vlc_access_Block().
All this should make the writing of an access modules easier.

And we got a new concat access module, to concatenate multiple access objects, using those new APIs.

Rémi went on by simplifying the peek() features of the stream filters: we have now a generic stream_Peek() front-end and now pf_peek are now gone from stream filter modules. At the same time, access_GetParentInput() and demux_GetParentInput() got removed from the core.

François added the support for alternative audio/groups in HLS, fixed relative paths in DASH, and finally merged both HLS and DASH modules into one adaptive module; this will make improvements in one format available in the other. He also added support in DASH/HLS for parsing the language, the role and the description of each track.

We deprecated libvlc_media_player_set_agl(), because this is an old Apple technology that noone uses anymore. And we fixed the plugins cache signature issue on OS X.

Finally, Rémi worked on ACCESS_GET_CONTENT_TYPE to remove the access_t.psz_demux variable that was used to force the demuxer from the access module. This was a dangerous design that did not work well with stream filters.

Android

The Android port got a few fixes on the audio output, notably a circular buffer to improve the whole VLC performance, a hack for 4.4.2, and stabilization for Android Lollipop.
In the core, we also added interlacing detection for MediaCodec acceleration.

On the interface side, the important changes were mostly on the Android TV version, notably adding Now Player Tile and fixing reported issues.

iOS

Last week was quite busy on iOS, culminating with a 2.6.3 release.

On the VLCKit SDK, we removed headers that are useless on iOS (MobileVLCKit). We also fixed crashes in the MediaLibraryKit SDK.

Then, more than 20 commits were pushed and 6 tickets closed to fix random crashes of the 2.6.x versions of VLC, including backports from the 2.7 branch.
The 2.6.3 tag was pushed on Friday, ending the week. :) It should be on the store in the next days.

WinRT

After a few calm weeks, the WinRT port got a lot of work this week.

First, we added a SlideShow subproject, to display nice animations in the background.
Then, we fixed the MediaFoundation backend, we fixed some issues with the new SDK and new VisualStudio version and the newer libVLC.

We then updated slightly the desktop design and the icons, in order to simplify the interface and the mini-player, and match the Windows 10 look.

The interface for Windows Phone was also improved for Windows Mobile 10.

Finally, quite a bit of work went into the hardware acceleration for Direct3D11. It's almost fully working for us :)

Tizen

The first code was pushed to the Mike git repository to build libVLC on Tizen.

Community and VDD

As you saw in the introduction, Rémi, Felix and me went to aKademy to speak with our KDE friends. It was in A Coruña.

We also finally announced VDD for this September, in Paris. Register now!

July 29, 2015 10:37 AM

July 20, 2015

Jean-Baptiste Kempf

This week in VideoLAN - 11

11th week of VideoLAN reports

Yet another weekly report of what's happening in the VideoLAN community and VLC development teams!

This week was quite hot, in the real world, and we're in the core of the summer; therefore this week was quite calm on all fronts :)

Features and changes

VLC

A large part of the OS X interface was rewritten by Felix, to use more modern code, notably Objective 2.0 features.
We've seen notably the usage of automatic properties synthesis, the removal of object instances in the xib files, the removal of the support of Mac OS X 10.6 and the class APIs reduction. All this should modernize the VLC OS X codebase quite a bit. :)

The port of VLC and libVLC to Tizen was started this week too. Currently, we have the core, the contrib, most modules and libVLC compiled with the Tizen SDK. More info here.

As often lately, we've seen also fixes for HLS, notably to fix a regression on Windows, where no HLS stream were working and one to correctly support AAC audio.

We've also added support for WebVTT subtitles inside MKV, fixed a few memory leaks, and a regression in the DirectShow input module.

This week was quite calm, as I said before. :)

Android

Last week, as promised, we've released VLC for Android 1.5.0, as a beta, on the store, for the testers from our communities.

We've therefore spent a lot of time fixing regressions and bugs for this release.

We've also fixed a few issues for the Android TV version: the previous weeks changes introduced some regressions, especially for the background video playback feature.

iOS

The iOS port got integration of CoreSpotlight to support global search for iOS 9.0.

We've also pushed a few fixes, as usual.

I know all this is a bit less than the usual work, but it's the summer. I hope we'll get more done next weeks... :D

That's all for this week! Have fun!

July 20, 2015 12:47 PM

July 13, 2015

Jean-Baptiste Kempf

This week in VideoLAN - 10

10th week of VideoLAN reports

This is my 10th weekly report of what's happening in the VideoLAN community and VLC development teams!

It's quite cool, that I've been able to not drop it :)

Compared to the previous week, this week was quite active, even if most changes were not very visible :)

Features and changes

On Monday, we removed the rest of the port of VLC on Symbian, and pushed more fixes for the OS/2 and Solaris ports.

Rémi went on with the work from the previous week about interruptible I/O in VLC' core. We have now vlc_mwait_i11e() and vlc_msleep_i11e().
Later during the week, vlc_cleanup_run() was completely removed from the core.

On Wednesday, Thomas fixed some important Android AudioTrack issue for the HDMI output of the Nexus Player.

We removed the ATMO video filter, because of the lack of maintenance, and the limited use-case.

At the end of the week, David did a large refactor of the resume dialog on the OS X interface and François added support of Atrac3+ inside Wav files.

Finally, we fixed numerous memory leaks in D3D9 and Qt interface, we pushed HLS and XML parsing fixes, and some large cleaning of the acoustid, remoteosd, audioscrobbler, fingerprinter and addons modules.

iOS

This week, we released 2 versions of VLC for iOS on the store: 2.6.1 on Wednesday, and 2.6.2 on Saturday!

Most of the changes of those 2 versions are fixes for regressions we've had in the 2.6.0 release, that were reported by users.

Quite a bit of work was continued on 2.7.0, notably on hardware acceleration, and network browsing support. We'll see when all this ends in users' pockets :)

Android

The cleaning of the core of the Android application was continued, once again. We should now be at the end of this work:

The audio device management was changed to better support HDMI on the Nexus Player.

Finally, numerous fixes were pushed for the Android TV port, including background video playback and better search integration.

This should give us a 1.5.0 release this week of VLC for Android!

That's all for this week! Have fun!

July 13, 2015 10:50 AM

July 06, 2015

Jean-Baptiste Kempf

This week in VideoLAN - 9

Yet another week in VideoLAN world

Yet another week, yet another weekly report about what has happened in the VideoLAN community and VLC development teams, during the last week.

As the previous week was very busy and that most Europe got a heat wave this week, this week looks almost calm. :)

Features and changes

VLC and libVLC

The week was started by Felix updating the VDA acceleration, after the work of the previous week on VideoToolbox. The code was cleaned, made more robust and defaulted to I420.

The Win32 core and Wasapi module were modified to use native TLS index support. The OS X threads were also fixed for a timeouting issue.

The iOS video output was made more resilient to failures that could happen on initialization.

GotoMeeting G2M3 and G2M4 decoding were added and mapped to the libavcodec module.

Wednesday, Rémi added a large piece of code in the core to introduce a per-thread sleep interruption framework. To make it short, solves the issue of our inputs that have blocking I/O and could lead to timeouts or deadlock, in case of network errors, for example.
This added interruptible poll(), read(), write() to the core API and helpers for send(), recv() and related functions.
This also lead to the removal of vlc_object_waitpipe() and the infamous vlc_object_alive() functions.

At the end of the week, support for iOS 6.x and OS X 10.6 was removed from the tree.

We've pushed fixes for the latency control of the Android AudioTrack audio output module, before Android 4.4.

iOS

The release 2.6.0 of VLC for iOS was finally deployed on the store.
This release brings notably:

The version 2.6.1, fixing more bugs, was done, tagged and pushed for approval 2 days later :)

The rest of the work, focused on 2.7.0, was not pushed yet on the main tree.

Android

The cleaning of the core of the Android application was continued.

After the big cleanup of libVLC's JNI binding, the majority of the work was on the Playback Service.
Instead of having a video player and an Audio Service, we merged everything to go inside a unique playback service. This should give us video playlists, loops, repeats and mixed video/audio playlists. This also mean cleaner code.

This also means that we can drop the permission PHONE_STATE for recent versions of Android. This was asked over and over from all the users.

We removed, again, some extern and static symbols to help use of the libVLC library.

We've rewritten chapters and title support for the application.

Also, a custom file picker was added for subtitle selection, in case your Android does not provide it.

Finally, we pushed all our changes to a version 1.4.99, on the beta channel.

WinRT

On the WinRT side of things, we've had build fixes mostly and more testing on the Direct3D11 support.

The rest of the changes are being tested for now and are not merged yet. We're working on it!

HKOscon Conference

François went to Hong-Kong, to represent us at the HKOscon and speak about VLC!

You can see a picture here!

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

July 06, 2015 07:15 AM

June 30, 2015

Jean-Baptiste Kempf

This week in VideoLAN - 8

Yet another week in VideoLAN world

Another week, another weekly report about what has happened in the VideoLAN community and VLC development teams, during the last week.

This week was pretty busy on most VLC related projects, as you'll see soon.

Features and changes

VLC and libVLC

The week started with more C11/C++11 integration, which is proving harder than expected, notably on the atomic integration side. Changes on this part went on the whole week.

SAT>IP servers integration was started by implementing the support of the RTSP dialect used on those SAT>IP servers. The UPnP part is still not present, yet.

We added support 9-bit and 10-bit GBR planar formats, that can be seen in professional files.

We've had numerous fixes on the Direct3D11 output, notably on cropping and displayed dimensions.

The VLC 2.2.0 regression for anamorphic snapshots was finally fixed, and, related to it, some transcoding sizing issues were fixed.

The OS X minimum version has upgraded to 10.7. This is required to use modern C++ features (C++11), which forces us to change the standard C++ library.

The OS X interface item management was completely reworked and splitted in a different class, which should simplify the maintenance of this part of the code.

A new hardware acceleration module for OS X and iOS was merged in the main line: the VideoToolbox decoder can decode H.263, H.264/MPEG-4 AVC, MPEG-4 Part 2.

Finally, some important work on the video picture pool in the core was started, to remove picture copies, use less locks and more atomics.

Android

All the Android video outputs have been merged together. There used to be 2 of them, one for Android 2.1+ and one for Android 2.3+.
It's interesting to know that at one point, we had 3 Android video outputs.

We've added a new libVLC function called libvlc_media_player_set_android_context that allows to set the JavaVM and Surface for a libVLC MediaPlayer instance.

This new function added to a cleanup in all the Android specific modules removes most static instances and variables, and will allow multiple surface and multiple players on Android, like on all the other OS. Finally, libVLCjni should be totally usable for 3rd party users, without restrictions. The buildsystem will now provide a libvlc-x.x.x.aar package to integrate libVLC directly in Android Studio.

We've also fixed minor UI issues on Android.

iOS

The biggest changes, this week, has been the integration of the VideoToolbox module, I spoke about earlier, for iOS. It will be used in VLC for iOS 2.7.0.

The 2.6.0 is still pending release, but should arrive soon.

WinRT

The Direct2D video output was removed from the WinRT project and replaced by the new Direct3D11 module, we've been speaking of, in the previous weeks.

This new module should be faster, and should allow hardware decoding and hardware rendering in the next releases. Stay tuned!

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

June 30, 2015 10:39 AM

June 22, 2015

Jean-Baptiste Kempf

This week in VideoLAN - 7

Yet another week in VideoLAN world

A new week, a new weekly report about what has happened in the VideoLAN community and VLC development teams, during the last week.

Features and changes

VLC and libVLC

Interestingly, this week was quite calmer than the previous weeks.

The Direct3D11 code was modified, simplified and fixed to match the allowed WinRT APIs. The hardware decoding was also improved, to be faster to load and compile in more situations.

2 annoying bugs were fixed for hardware decoding on the RaspberryPI, that could happen for some files in some specific formats.

The Mac OS X VLC binary was heavy reworked, in order to fix a mainloop issue that caused race conditions on the start of VLC, between the interface and the video output.

Quite a bit of work went on on the adaptive streaming common code, notably to fix DTS issues.

We also fixed a crash with Skins2, cleaned the new chapters/titles API, fixed filedescriptor leaks and an iOS dialog issue.

iOS

This week, iOS was quite a bit more busy.

First, we added support for SMB shares on VLC for iOS. This also includes parsing changes to VLCKit to support network shares.

The UPnP and FTP interface code was modified to be able to support UPnP shares. This was done by doing a shared class for all network browsing, that is also including PLEX client interface.

The chapters and title libVLC API was exposed to VLCKit and is now used in the application too. The next major release will use libVLC 3.0.0; therefore VLCKit gained all the new media properties libvlc received for 3.0.

The password storing is now using the system toolchain, and the bookmarks were rewritten.

Finally a new build of 2.6.0 was pushed on the Store, to fix an iOS 6.1 interface issue. We hope it will be approved soon.

Android

On Android, we started by using some of the new classes from Android Design Support Library to reduce our code and match the Material Design as much as possible.

We added autodetection of the USB keys, both on the Android and Android TV applications.

We now save the position and time in the last playlist played, for audio playback.

We also fixed some issues for the Amazon Fire TV, added the option for background playback on Android and improved the 3rd party Intents.

Finally an important rework of the libVLC Video Surfaces and playback service was done, but was not yet merged. This will clean a lot the core code for VLC on Android, and should allow better 3rd party applications.

libvlcpp

After libVLC, and VLCKit, libVLCpp got the new chapters and title libVLC API exposed. This API will only work if you have libVLC 3.0.0.

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

June 22, 2015 12:05 PM

June 15, 2015

Jean-Baptiste Kempf

This week in VideoLAN - 6

Yet another week in VideoLAN world

Continuing what I did for the last few weeks, and to please my friend Kostya; this post will tell you the interesting things that happened in the VideoLAN community and VLC development teams, for the last week.

Features and changes

VLC and libVLC

The week started with a few bug fixes, notably to improve the seek over HTTP, in the mp4 demuxer, the audiotrack Android output and the iOS video output.

2 important new API were added to libVLC to correctly get information about chapters and titles, useful for DVD control: libvlc_media_player_get_full_title_descriptions and libvlc_media_player_get_full_chapter_descriptions.

On Wednesday, an extensive patchset was merged by François, modifying the adaptive logic from the DASH module, in order to rewrite the HLS demuxer using the same core logic.
The new HLS module should be easier to maintain, and will benefits from the improvements of the DASH module.

The skins2 module received numerous fixes for UTF-8 strings and Unicode filenames.

In the core, when looking for a codec, the lookup used to be a linear search, and this was just rewritten as a binary search.

Finally, we also got some OS/2 threading changes, Direct3D9 speed improvements for subtitles, more smooth streaming codec support, a new Xcode project to build VLC, improvements on our Doxygen documentation and better support for CC in mp4.

iOS

This week, the version 2.6.0 of VLC for iOS was tagged and pushed on the store for review.
This version:

The version 2.7.0 was started, directly after. It will drop support for iOS6 versions, and the work to support SMB networking was started this week.

Android

The refactoring work of the last weeks was continued. The audio playback background service was rewritten, with the objective of merging it with the video playback, in order to support video playlists.

The requested permissions were also simplified, and some were removed for the recent Android versions.

The VLC control widget is now resizable, we support more remote controls buttons (in both TV and normal modes), and we detect USB plugging/unplugging to refresh the library.

Finally, more code cleanups and MRL fixes in the library were merged.

WinRT

The WinRT port has seen mostly designs rework this week.

The MiniPlayer is now smaller and translucent, the application is faster to start, the palette were refreshed, and the code structure of the Background audio was completely re-done.

libdvbpsi

The work on libdvbpsi 2.0.0 was started, and it started by dropping the support for WinCE.

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

June 15, 2015 07:56 AM

June 09, 2015

Jean-Baptiste Kempf

This week in VideoLAN - 5

Another week in VideoLAN world

Continuing what I did the last few weeks, here is a new post summing up what happened, this past week, in the VideoLAN community and VLC development teams.

For some technical reasons, this post was delayed a bit. I hope it won't happen again. It still covers only what happened from Monday to Sunday, last week.

Features and changes

VLC and libVLC

A good Monday starts with Android MediaCodec bugfixes: this time, they were mostly done in order to fix issues with the Nexus 10 tablet.

The input core was modified by Rémi, to add vlc_write() and vlc_writev() helpers, to finish the work on SIGPIPE (see previous weeks).

Then, a lot of code was removed to avoid call to the infamous vlc_object_alive() call, in the core and some input access modules. The cleaning led to the removal of input_thread_t.b_eof and input_thread_t.b_error and the deprecation of input_thread_t.b_dead.
If you don't understand what this means (that'd be normal :) ), it's a great cleaning of an unsafe function in VLC.

Julian finally got all his rPI and rPI2 patches (27 of them) for MMAL hardware decoders and video filters merged. Decoding on the rPI with VLC 3.0.0 should be faster and more stable now.

We also fixed a build issues on OS/2 and a potential buffer overflow in the RealRTSP plugin.

The end of the week got VLC the DxVA2 + Direct3D9 0-copy video acceleration for Windows. This is what we already support on Android and Linux with VDPAU, to avoid copies between the CPU and the GPU: decoding and video output happen on the GPU. This reduces quite a bit the CPU usage when using hardware acceleration.

And at the same time, we got a D3D11 decoder and 0-copy video acceleration. This will be useful for Windows 8.1 and should be on Windows Phone 8.1 too, to finally get the full acceleration of the Lumia devices!

Android

The refactoring started last week on libVLC was continued, notably on the Media and MediaList classes and items.

We also started the integration of the Design Support Library to help VLC become more Material.
The real question here is why did they not release this library when they released Material Design last year???

Therefore, we've started using the provided SnackBar and FloatingActionButton classes from this library. And we got the best commit log ever:

Replace some Toasts by Snackbars

And finally, we fixed a lot of small issues due to our big refactoring. Hopefully, we're getting closer to a release.

iOS

The iOS development is accelerating quite a bit, lately. We've pushed 2 betas of VLC 2.6.0 last week.

More than 20 bugs have been fixed on this release, especially on the mini-player, the playlist and the video output. Release incoming :)

WinRT

Most of the work on the WinRT port was done in the underlying library, to support hardware decoding. Everything is not yet plugged in, yet, though.

We also did adaptations for Windows 10, for TV shows support and numerous small issues reported on our bugtracker.

The next version will be able to get all this together :)

libdvbpsi 1.3.0

libdvbpsi 1.3.0 was released this week, adding a few descriptors:

And fixing bugs in some tables and descriptors.

Conferences

Last week, I went to web2day and SSTIC to speak about VLC.

The web2day conference was a classic VLC/VideoLAN presentation, focused on mobile applications.

The SSTIC talk was focused on DRM integration in VLC, libdvdcss, libbluray, and legal topics with HADOPI. It's quite more technical than the usual talks I give, and it was in French. But you should really watch the video of the talk.

That's all for this week!

June 09, 2015 09:54 AM

June 02, 2015

Ludovic Fauvet

What happened to Sourceforge?

Disclaimer: I’m a VLC developer, member of the board of VideoLAN and managing the infrastructure behind the distribution of VLC. Views and opinions expressed here are my own and do not express the opinions of the VideoLAN organization.

You may have heard all the recent fuss about the Sourceforge vs Gimp controversy. If not you should read this great article written by a member of the Gimp team.

The full story between VLC and Sourceforge

In 2010 the VideoLAN team decided to delegate the binary distribution of VLC media player to Sourceforge. Back in the time, SF.net (like Slashdot) were still the property of a company called Geeknet. The binaries were uploaded by us, and the service provided was good enough even if some users were sometimes confused by the advertisements that appeared on the download pages.

We quickly became the most downloaded software to date hosted on Sourceforge (in less than two years!). Even today, two years after we left SF.net we’re still #2 totalling more than 895.5M downloads there.

Later, in 2012 Geeknet started to add more banners to their pages and did not bother filtering ads that were obvious scam, misleading users to click on these fake “downloads” buttons. Some if not all of these advertisers were distributing VLC bundled with crapware (as we like to call them).

Spoiler: it's a scam

We alerted SF.net quite a few time asking them to be more careful about these ads and they acted like they were willing to help us, telling they’ll look into it, month after month. But nothing really changed on this side, they removed few ads but they came back eventually. In consequence they also offered to share some revenues with us. They gave few thousands dollars every couple of month to the non-profit (which was welcome since we’re all volunteers) but we were still unhappy because a lot of VLC users were still impacted by these misleading ads.

Then came Dice Holdings who bought most of the online media business of Geeknet (including Sourceforge) in September 2012. Soon after, our previous contact at SF.net left the boat, leaving us without any way to reach the new team for quite some time.

The situation worsened again, we received literally dozens of emails each week from angry users complaining about some bundled software and toolbars that were added to the installer. Sourceforge did not (yet) modify our installer in any way, instead our users were clicking on some of these misleading ads. I remember counting more than seven “download” button on our SF.net page! 1

Misleading link to the Gimp project deliberately added by Sourceforge

We couldn’t continue to operate this way so in April 2013 I started working on a new way to distribute VLC. We rented few servers, contacted some mirrors and everything was ready a couple of weeks later. We were finally able to pull the plug from the Sourceforge website.

The situation improved drastically for us past this change, no more complaints about misleading ads or user being tricked into downloading bundled crapware. But this was also the starting point of Sourceforge being SNAFU. One possible explanation could be that they lost their biggest project which was making a significant portion of their revenues since VLC was the most downloaded software on Sourceforge at the time. Interestingly enough, the Gimp project took the same decision few months later, aggravating the Sourceforge situation.

Soon after we were contacted by one of their employee asking if we would be interested to come back and share more revenues by bundling third-party software with VLC. But since we’ve always refused to do so in the past we declined their offer and continued improving our own distribution platform. Few weeks later they launched DevShare: “A Sustainable Way To Fund Open Source Software”… by bundling third party offerings in opt-in.

Oddly at the same period we faced a large DDOS on our new download infrastructure affecting our main distribution server and taking down some of our mirrors during few days. We still don’t know who was behind this attack and their motivations but the coincidence is striking, I let you draw your own conclusions.

Since then, we never updated the binaries hosted there, the SF.net team did it regulary and we never had to complain about it since the binaries were left untouched.

Fast forward, end of May 2015 we heard about the Gimp binaries being bundled with the SourceForge installer and their admin access taken over by some sf-editor1. We were quite surprised to discover that the same happened to VLC, the project has been taken over without notice, removing all access to it but luckily the binaries weren’t touched. Maybe because we’re now signing all of them for the Windows platform. And we’re now trying to get our access restored to avoid any further damage.

It’s sad to see that what used to be a great company ten years ago is now in a blatant disregard for the rights and work of the open-source community.


  1. The smallest button was indeed the legit one [return]

June 02, 2015 09:57 PM

June 01, 2015

Jean-Baptiste Kempf

This week in VideoLAN - 4

A new week in VideoLAN world

Continuing what I did the last three weeks, here is a new post summing up what happened, this past week, in the VideoLAN community and VLC development teams.

VideoLAN

For once, I'll speak about the VideoLAN team before speaking about VLC.

This week-end, we had the Q2 meeting of the VideoLAN non-profit organization. We met in Hamburg, hosted by Google.

We spoke about VLC development, VLC new features, VLC mobile ports, libVLC, libav and the non-profit life, including the next VideoLAN Dev Days.

Here is a photo of the group: WP_20150530_14_35_31_Pro.jpg

Features and changes

VLC

The week started with a classic fight we have with COM threading on Windows, for the Qt interface.

Then, the Direct3D11 video output, that we plan to use for Windows 10, WinRT and Windows Phone, got subpictures blending support. This should get sharper subtitles for WinRT and Windows Phone, and less CPU used. Some related work on DxVA acceleration was done too.

The buildsystem was then broken (and fixed) by yours truly, to use C++11 atomics; this is the ongoing change to have a more modern toolchain for VLC.

A really cool new feature was added to the OS X interface: the keyboard backlight will dim during playback! This might not work totally if you are on automatic mode. So far, we can't do that on other platforms.

Finally, a long-standing issue, where you could not get the AVI duration over HTTP or FTP protocols, was fixed. This should notably help, in the UPnP cases over HTTP :)

... and many other small fixes.

Android

This week on Android was a refactoring week. Thomas and I did more than 100 commits on refactoring and cleaning the foundation of our VLC for Android application.

The major changes are, of course, not really visible, but are mostly focused on refactoring the libVLCjni code to match better libvlc, libvlcpp and get rid of the kludges that accumulated on the Android application. Some of those commits are quite extensive, but they should not break too much the application.

We also fixed a couple of issues and added the access to Media Information in the browsing view for videos.

iOS

A contrario from the previous weeks, iOS development has been extremely busy, with more than 100 commits too. The work was focused on the 2.6.0 release, and fixing a large number of tickets.

The most important fixes went into the library, GDrive, the equalizer, the playback view (including cropping), UPnP and thumbnails.

The mini-player was also extended quite a bit and the ARMv7s slice was re-activated.

The 2.6.0 release is now almost ready.

WinRT

There were less commit in the interface, this week. However, quite a bit of work on the hardware decoding was done, and is pending merges!

More news about that next week.

libraries

We've seen quite a few fixes in libvlcpp, libaacs, VLCKit and the web plugins, but nothing newsworthy :)

See you, next week!

Of course, I have probably forgotten some minor things, but that should be most of it!

Have fun, and see you next week!

June 01, 2015 08:29 AM

May 25, 2015

Jean-Baptiste Kempf

This week in VideoLAN - 3

This week in ...

Continuing what I did the last two weeks, here is a third post summing up what happened, this past week, in the VideoLAN community and VLC development teams.

Features and changes

VLC

The week started with the continuation of the work on the VLC Windows threads implementation, by Rémi.
In a similar way, the work on blocking SIGPIPE in libVLC went on. It went on during the whole week, notably to correctly maintain support for old BSD and OS X.

We then got a complete rewrite of the Jamendo service discovery, made by a developer of the Jamendo team.

Support was added for 2 uncommon video file types, created by some QNAP recording devices.

The Android MediaCodec module was reworked, cleaned and split in order to create a new video decoder module using the NDK MediaCodec API, instead of the SDK API. This should be cleaner, and faster than the old one, because written directly in C. However, it will only work on Android 5.0 and later.

A set of patches was merged on Wednesday to rework the browsing of network directories, like SMB, FTP or UPnP. Those patches will allow better filtering, better browsing recursivity, and add this browsing capability to the Samba module of VLC.

The SMB browsing module based on libDSM was reworked too and was fixed to support Guest login detection.

The sharpen video filter should be now faster, by improving the possible auto-vectorization.

Finally the week ended with some rework on the internal variable system of VLC, removing some types, some cases, some locking and simplifying the code.

Android

This week, we released version 1.4.1 of VLC on Android to the store. This is an interesting release, containing a large amount of fixes, stabilizing version 1.4.0, that was never pushed to the store. It should now feature the new browsing view, the MediaCodec NDK module, and lots of small changes of the interface.

We added return information from the VideoPlayer activity, so that applications calling VLC with an Intent could get some result information at the end of playback, on the playback status.

The support for some content:// URI has always been broken in VLC. This was fixed :)

The Deletion dialogs were reworked and fixed, and some small bugs were fixed and translations were updated before the release.

After the release, the support for libarchive was added and a lot of code was cleaned.

iOS

After the beta from the previous week, a lot of commits were done to fix the various issues reported.

I hope that there the release is now just around the corner :)

WinRT

This week, we released version 1.4.1 of VLC on WinRT to the store. It was mostly done to fix a subtitle issue we had on some hardware, and the look of Flyouts.

Then, the week was mostly spent to port the code to the Windows 10 SDK, and restructure the project files accordingly, which took a lot many commits.

The support for DiscNumber and AlbumArtist was also added in the code, for the next release.

libvlcpp and libraries

libvlcpp finally got it's first official release, numbered 0.1.0; it should be now usable in your projects, without big issues. Please try it and report :)

libbluray, libdvdread and the other discs libraries got a few commits to fix crashes and stability issues.

The webplugins also had a few bugs fixed on the ActiveX version.

See you, next week!

Of course, I have probably forgotten some minor things, but that should be most of it!

Have fun, and see you next week!

May 25, 2015 08:31 AM

May 18, 2015

Jean-Baptiste Kempf

This week in VideoLAN - 2

This week in ...

Continuing what I started last week, here is a second post summing up what happened, this past week, in the VideoLAN community and VLC development teams.

Features and changes

VLC

Monday started with fixes for UPnP on VLC, especially on Windows, due to a bug that is inside libupnp, only on Windows. It should fix most of the infamous issues, of VLC and UPnP/DLNA.

The work on adaptive streaming and DASH done by François was continued. Notably, it should add support for TLS (HTTPS), improve the debug messages, split more the code, support subsegments in segmentBase and improve seeking to subsegments.

Some important networking code was changed and simplified, and a core API was added to help TLS connections: vlc_tls_Read, vlc_tls_Write and vlc_tls_GetLine.

In the Mac OS X interface, the about dialog, the add-ons manager dialog and the error panel were heavily reworked.

The core now uses MSG_NOSIGNAL in network calls to avoid SIGPIPE firing that could happen when using libVLC.

The poll() reimplementation for Windows was rewritten, and large changes in the threads implementation were merged, notably in the vlc_cond_broadcast and vlc_cond_signal functions.

Quite a bit of cleaning got into the Freetype module, configure and the buildsystem.

Android

As often, we tried to fix some of the issues we had with Mediacodec on some devices, and we fixed some issues on PPS/SPS changes.

On the interface side, the work on browsing was continued, this week, adding a new Material button, splitting correctly the preferences part, and adding an arrow to browse back.

Also, some useless animations on activity changes were removed, crashes and memory leaks were tracked and fixed.

Finally the version 1.4.0 of VLC for Android was released and pushed out to the beta channel! We're waiting for issues, before pushing it to everyone.

iOS

This week, a lot of work was merged, around 190 patches.

VLC for iOS now supports the Apple Watch! You can control your playback directly from the watch.

The media library and playlists were reworked to allow a mini-player like the Android and WinRT versions of VLC.

Numerous changes were merged to fix a lot of bugs reported in 2.5.0.

The OpenGLES2 video output also had a fix for a bug when the View and Superview had different sizes.

Finally, the version 2.6.0 beta of VLC for iOS was released and pushed to the beta channel!

New releases of VLCKit and MediaLibraryKit have been done too, to support those changes.

WinRT

This week got us the release of the version 1.4.0 of the WinRT port of VLC. It should bring subtitles and DLNA back to the x86 version. It should also add better local metadata support.

The release was made possible thanks to fixes in the internal way we open files.

The work is still in progress, and we'll probably do a new release, next week, that will work on ARM too, and on Windows Phone.

libbluray

We prepared a release of libbluray, named 0.8.1, to fix an important crash in bd_open().

It should also fix some non-checked allocation failures.

Web plugins

The web plugins compilation on OS X was fixed, by moving the platform target to X.6.

libvlcpp

The C++ bindings got support for 2 new added APIs this week: one for Equalizer and one for the imem/libvlc_media_new_callbacks; and an example application was added for this API.

Some improvements on the C++/CX Media constructor were also added.

See you, next week!

Of course, I have probably forgotten some minor things, but that should be most of it!

Have fun, and see you next week!

May 18, 2015 08:42 AM

May 10, 2015

Jean-Baptiste Kempf

This week in VideoLAN - 1

This week in ...

It's can be sometimes quite difficult to follow what's going on inside the VideoLAN community and VLC development, without reading numerous mailing lists. Therefore, I'm going to start to write a post every week doing a short summary of the interesting news.

The issue, of course, lies in the fact that some weeks will be more interesting than others. :)

Those kind of posts might also become a long list of unrelated things... If so, I'm sorry in advance, but I'll do my best to just speak about the most important :)

Features and changes

VLC

Last week-end, we merged the text shaping patch using the Harfbuzz library for our freetype module. This will solve the issues with some Arabic and South-East Asia languages, where the glyph were not merged correctly.

The first version of the TTML decoder was merged and was activated last week.

readdir was implemented in the FTP access, this will allow browsing of the FTP servers, that are announced in a service discovery.

$o is now usable to get the total number of tracks metadata, in the str_format_meta, to modify your VLC Window title.

libvpx was updated to 1.4.0 for the next releases.

The brightness/chroma adjustment filter was ported to support 9bits and 10bits chromas.

The default compression value for the PNG encoder was lowered to create faster snapshots (and backported to 2.2.2).

The height of the audio bar of the audiobargraph modules is now customizable.

Crashes were fixed in the TS, MP4, image and playlists demuxers.

And quite a few improvements were done in the MP4 and DASH modules.

Voice and Gestures control

I've also been coding some voice and gestures control for VLC, using RealSense SDK on Windows.

Try it!

Android

VLC for Android mostly had a bugfixing week.

The directory browser got improved a bit, in order to merge it with the folder preferences.

The AudioService has been moved from URI to MediaWrapper, which will allow to pass media options for playback (and should bring support for more format).

Some Samsung CPU are banned from Hardware decoding (Samsung Galaxy Core, Samsung Galaxy Ace 4), because they are too buggy.

The mini audio player was restored in most audio browsing activities. This was a regression due to the move to AppCompat 21.

A Play action was added to folders, and the Play as audio action was fixed.

And finally, we did a lot of code cleanup after running Coverity analysis.

iOS

Not much was done on VLC for iOS this week, beside bugfixes. The reason is that Felix, Caro and Tobias are all working on a branch, that should be merged soon. We'll speak about it when it's merged in the main line.

What I can say is that the next release of VLC for iOS should be named 2.6.0.

WinRT

A contrario, the WinRT port has been quite busy.

We're preparing a 1.4.0 release for WinRT (Metro) that should fix most of the important regressions we had (subtitles, DLNA) and should also fix the missing metadatas. For that, we've updated the libVLC core, patched taglib library, and reworked the whole media creation in the code.

The winrt access module now is way more clean and accepts both URLs and WinRT Tokens.

We still have one big bug to fix, so let's hope that we can release next week :)

libbluray, libdvd*

After numerous BD-J fixes last week, this week was a stabilization week for libbluray, so nothing exiting here.

libaacs, on the contrary, got quite a bit of cleanup, and notably the split of system-dependent code to different files. Quite a few potential crashes were fixed.

libbdplus got common code merged from libbluray and libaacs.

Web plugins

The rework with libvlcpp is coming to the end.

This week, a few bugs and regressions were fixed, especially on return types. And compilation with MSVC should be fixed.

Association

This week, we've been discussing updates on our development bounties list we have. We're discussing new ones, and increasing the prices of some other. We'll discuss that at our next meeting, at the end of the month.

We've been discussing also the possibility of moving our servers outside of France, because of the new spying laws.

We've also given commit access to Tobias, to the iOS port and libraries. May he fix all our remaining bugs.

And that's all for this week!

May 10, 2015 08:51 PM

May 03, 2015

Jean-Baptiste Kempf

Control VLC with your voice and gestures

RealSense

In VLC, we have hundreds of modules to do many crazy things, including karaoke or puzzle filter!

Today, I coded 2 nice features, using Intel® RealSense™ technology: one is a voice control plugin for VLC, and the other is a gestures control plugin for VLC.

With the voice control plugin, you can ask VLC to play, pause, stop, just with voice commands, like in 2001: a space Odyssey.

With the gestures one, you can move your hands before the 3D camera, a la minority report.

Builds

Binary

You can find the Windows binary for VLC 2.2.1 (should work in all 2.2.x versions) here:

You need to install them in the plugins/control folder in your VLC installation (usually in C:\Program Files (x86)\VideoLAN\VLC) and restart VLC.

You need to have RealSense runtime installed too, if you don't have it.

Finally, you need to activate them in the preferences. (advanced -> Interface -> Control Interfaces).

IntelRealSense.png

Source

Of course, I provide, the source of the plugin here, so you can hack on it, and recompile it.

To build it, you need the latest version of the RealSense SDK, with a version above 4, and you need to point to the right headers. Here is another patch to help you build it, if you need.

Documentation

Voice

The voice module should understand the following control:

Gestures

The gestures recognized should be:

Have fun!

May 03, 2015 05:23 PM