VideoLAN

VLC media player development and general info on VideoLAN.

Entries feed - Comments feed

Monday, May 25 2015

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!

Monday, May 18 2015

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!

Sunday, May 10 2015

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!

Sunday, May 3 2015

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:

  • "Play"
  • "Pause"
  • "Stop"
  • "Next"
  • "Previous"
  • "Volume Up"
  • "Volume Down"

Gestures

The gestures recognized should be:

  • waving to stop
  • swiping to go to the next video
  • "V sign" to go to the previous video
  • tap in front of the camera to toggle play/pause
  • "Thumb Up" to increase the volume
  • "Thumb Down" to decrease the volume
  • "Full Hand Pinch" to mute the sound''

Have fun!

Thursday, April 30 2015

libbluray 0.8.0

libbluray 0.8.0

After releasing new DVD libraries, it's time we released new bluray libraries. :)

Libbluray 0.8.0 was released a few days ago, with quite a few new features:

  • Support for BD ISOs directly in the library,
  • Support for streams/virtual devices, through callbacks, like we did for DVD,
  • Support for BD-J Security Manager, to protect and isolate from security issues in the loaded Java code,
  • Access to UDF volume identifier directly in DISC_INFO,
  • Fixes support for Java-8 compilation.

And numerous fixes, of course.

This 0.8.0 release contains almost 200 commits, which makes it quite important, but on par with 0.7.0 and 0.6.0.

You can grab it on you can find on our FTP.

libaacs 0.8.1

At the same time, a release was done for libaacs 0.8.1, to fix a few crashes and build issues. It's also on our FTP.

Enjoy!

Wednesday, April 29 2015

New libDVD releases: streaming DVD ISOs

Past releases

Following my blogpost about the history of the free DVD stack, last August, and the announces of libdvdread and libdvdnav 5.0.0, with libdvdcss 1.3.0, I kept updating the projects.

libdvdnav 5.0.1/5.02

There were not many regressions in DVDnav, so I quickly released libdvdnav 5.0.1 and 5.0.2, to fix remaining crashes.

libdvdread 5.0.1

However, DVDread was in a less good shape, so I released, in January, libdvdread 5.0.1 with numerous fixes and 2 minor features: DragonFly BSD bswap and a new md5 implementation.

Streaming DVD

In January, the major feature I integrated in libdvdread and libdvdnav is the capability to open ISO and devices through the network, as virtual devices/files, using callbacks.

The allows to use the same architecture to play ISOs or virtual devices, from SMB shares, SFTP or HTTP, with decryption and menu navigation.

Streaming releases

This feature was integrated in libdvdcss 1.3.99, libdvdread 5.0.2 and libdvdnav 5.0.3, all released at the end of January.

libdvdread 5.0.3

We had just a small problem remaining with the streaming feature: during the read IFO phase, we had too many seeks and read of the files. That took way too much network resources, so we added a small cache in libdvdread 5.0.3, to work around this issue.

We just released libdvdread 5.0.3 that you can find on our FTP.

libdvdcss 1.3.99

Just a word on libdvdcss 1.3.99: it's a major cleanup release of the codebase, and there could be some regressions still lingering around.

So I'm waiting for regressions, and I will release 1.4.0 when the important issues are fixed!

- page 1 of 28