Keyword - Windows

Entries feed - Comments feed

Monday, October 26 2015

This week in VideoLAN - 23

23rd week of VideoLAN reports

Yet another week, another new weekly report about the VideoLAN community and the VLC development community.

Features and changes


Protocol Redirections

We've added support for inter-module redirections.
In the past, the HTTP or FTP redirections were only done in the same module. That caused limitations, if we wanted for example to redirect to a different protocol, like HTTP-> FTP or HTTP -> HTTP2.
Now, a redirection will spawn a new module, that can support a different protocol.

OS X notifications

In the past, we've supported only Growl for notifications on OS X.

Since quite a few versions, OS X supports native notifications. So we've added support for those notifications. Growl is still possible as a fallback.
Those notifications are only visible if VLC is in the background, of course.

Evas video output

As you've probably seen, on this blog, lately, we've done a EFL/EMotion backend.

This was the first step, but it was done with a memcpy at every frame, which is BAD and SLOW.

Therefore, we've added a new video output to VLC, based on Evas, the canvas library of EFL. It supports directly YUV, RGB, and TBM (Tizen Buffer Manager).

We also added a new libVLC call, so you can get VLC to draw directly in an Evas Object: libvlc_media_player_set_evas_object.

We will use that for our Tizen port of VLC.

Subtitles font fallback

VLC font rendering engine was never good for non-western languages.

A few month ago, we've added support for harfbuzz to shape CTL correctly.

This week, Salah-Eddin added support for font fallback to our Freetype module, for Linux, Android and Windows.

On the following example, we have Korean, Japanese and Chinese characters:


This is how it used to render for 2.2.x: Without-fallback.png

Cool, no?

Core input

The week actually started with a rework of the demux controls in the core. This makes stream, the access and the access_demux modules more similar and simplifies the code.
Moreover, sometimes the demuxers can seek even if the access cannot (or the other way around); those cases should behave correctly now.

The old caching module was fixed when seeking near the end of the file. This was the cause of the WMA regression on the latest Android versions (1.6.x up to 1.6.4).


The ALSA device selection was fixed so that the "default" choice is always available. And the ALSA device selection menu was fixed too.

As usual, we've added misc changes in the mp4 demuxer, the OS X interface, the playlist demuxer.
Also the nightly builds on Windows were updated to more recent 3rd party libraries, notably codecs.


After last week, we kept on doing small bugfix releases for VLC/Android: we've published 1.6.5, 1.6.6 and during the last week.

The bugfixes are focused on seeking, small crashes and Android TV remote events.

We've added optional buttons to seek in the video player, like in the Beta application, like this: Nexus5_SeekButtons.jpg

We've rewritten the preferences view by using the new Android Preferences view supplied by appcompat 23.1. It should fix a few bugs we had, notably the title color of the preferences. It should also give us a slightly better Android TV preferences dialog.

For the next release, we've rewritten the MediaSession control using the new MediaSessionCompat. This means a new notification, new lock screen integration, better integration with external devices, and probably a good step on the road to Android Auto.

Finally, we've removed a permission for Android TV: AUDIO_RECORD.


This week, we released VLC for iOS 2.6.6, fixing numerous crashes and adding support for SSA styled subtitles.

Besides that, there was nothing very visible on iOS this week, because most of the work was done to support Apple TV, in the same codebase.

This mostly involves splitting some logic from the views and rewriting most of the views.
It also requires modifications of some of the external libraries, notably to support the cloud services.

And of course the usual fixes for UPnP browsing.

We've also had a few small commits in DVBlast, VLC/Tizen and VLC/WinRT.

That's pretty good for this week! See you soon!

Monday, October 12 2015

This week in VideoLAN - 21

21st week of VideoLAN reports

For the 21st time, here is the weekly report of what has happened in the VideoLAN community and VLC development, during the past week.

Features and changes


Last week started again with Felix committing, this time to port the CAOpenGLLayer to OS X.

The iOS AudioUnit output gain support for a correct mute implementation, and was moved to a modern Objective-C syntax.

The core gained stream_CustomNew(), to create custom streams; it also gained demux_New() and those 2 functions will be used for adaptive streaming, that need slave streams and demux.

The bluray module gained support for Blu-Ray ISO, through the new UDF implementation.

The HLS module now supports HLS discontinuities, which has been a pain to support for us, so far.
We've also added support for WebVTT and TTML in DASH.

The libass version was updated to 0.13.0 and this should remove the infamous "rebuilding font cache" on OS X and Windows Vista (and later). Anime fans will be happy :)

A Text-to-Speech subtitle renderer was added for Windows, like we did for OS X. It's useful for people with visual deficiencies, that can't read those subtitles very well. It's based on the SAPI 5.1 API.

Finally, we also got fixes for HLS, DASH, cache prefetching, Blu-Rays, OS/2, Closed Captioning sizes, Chromecast, TTML probing and the About view of the OS X interface.


DVBlast, the VideoLAN DVB server, had a 3.0 release.

This release is an important version, that was partially rewritten to use the libev library for the event loop.

It's also the first release supporting OS X.

The new features include PID and SID remapping and support for Deltacast ASI cards.

Download it now!


At the same time, multicat got a 2.1 release.

This release:

  • adds support for FreeBSD and OS X
  • supports changing source address with raw sockets
  • adds packets reordering based on sequence numbers instead of timestamps
  • adds capping, syslog logging, binding to specific interfaces,
  • and quite a few other things (see NEWS file in the tarball).

Tarballs are available now on the project page.


The Android port was busy to prepare a 1.6.0 and a 1.6.1 releases.

The most visible change of last week was a big interface speed up, in the video and audio lists and the thumbnailer, done by limiting the number of threads and removing some unneeded thread barriers.
We've also added an application-wide threadpool to help managing those threads.

libVLCjni was fixed to support and run correctly on Android 6.0. There is still work left to do for the new permissions model, but that will follow quite soon.

We've had numerous fixes for small regressions mentioned during the 1.4.x and 1.5.x development cycles, notably in MKV/FLV support, screen dimming, various crashes, and incomplete metadata.

The releases 1.6.0 and 1.6.1 were pushed in Beta and in Stage-Rollout on the market.


MobileVLCKit, the libVLC binding for iOS got support again for the VLCAudio class, including mute support.

There has been improvements on the snapshots events and methods.

The port to tvOS has also been worked on, notably by separating more cleanly the interface from the logic in the iOS apps, so we can have a different interface for tvOS.


The WinRT port got changes in the theme, and some colors should now be in your roaming settings.

One of the major crash in the Thumbnailer (start of the application) was fixed: it was due to a race condition when seeking to get the snapshot.

The Windows Indexer API is now used on the Windows 10 Mobile version, to get better search results.
We have more strings translated, and an update of the French translation.
Finally, the gestures are now correctly disabled in locked mode.

The releases 1.8.0 and 1.8.1 were pushed on the store, with all the fixes and features of this week and the previous week.


This week, quite a few changes happened to x264.

The largest changes were ARMv7 and ARMv8 optimizations, done by Martin and Janne, which total around 30 commits on the 40 commits pushed this week on x264.

Anton changed the predictors update and the the row VBV algorithms.

Finally, x264 also has received fixes for PowerPC on FreeBSD, and for the high bit depth lookahead cost compensation algorithm.

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

Wednesday, July 29 2015

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


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.


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.


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.


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 :)


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!

Monday, July 20 2015

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


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. :)


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.


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!

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!


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.


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 :)


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.


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.


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


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.


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.


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.


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.


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 4