VideoLAN

VLC media player development and general info on VideoLAN.

Entries feed - Comments feed

Monday, July 6 2015

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:

  • Apple Watch support,
  • Mini-player for browsing while playing,
  • Support for video looping,
  • Better support for Plex servers,
  • Better thumbnailing,
  • Lots of fixes.

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!

Tuesday, June 30 2015

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!

Monday, June 22 2015

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!

Monday, June 15 2015

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:

  • supports the Apple Watch,
  • adds a mini-player to control playback when browsing movies or audio,
  • adds better playlists support,
  • improves the interface and thumbnails,
  • fixes numerous issues and crashes.

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!

Tuesday, June 9 2015

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:

  • 0x10 Smoothing Buffer
  • 0x11 STD descriptor
  • 0x12 IBP descriptor
  • 0x1b MPEG-4 video descriptor
  • 0x1c MPEG-4 audio descriptor

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!

Monday, June 1 2015

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!

- page 1 of 29