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, ...
You'll see that this week has been busy on VLC's core and the WinRT port.
On , Rémi rewrote the core part dealing with temporary files, introduced
vlc_memfd() and rewrote the timeshifting code related to those files.
François worked on the background rendering of closed captions and subtitles, and improved the default style of subtitles.
, the part of core dealing with caching was splitted from the core and moved into 2 modules: cache_read and cache_block. The core updated accordingly and should allow to have different and new caching strategies.
And indeed, Friday, we received a new stream filter module named prefetch.
We also got fixes in our HLS and DASH support to handle correctly absolute paths and also to simplify the manifests/playlists reloading.
The core was also fixed for a long standing bug on URL parsing with parameters.
, we've added a new module, only for developers, named accesstweaks to simulate access failures and limitations (like limited seeking and slow access) to properly code demuxers.
And to finish, we also got bluray improvements, iOS vout cleaning; but also fixes for memory leaks, for Direct3D11 crashes and for MediaCodec transitions.
The WinRT port was quite active this week, with around 70 commits.
The week started with the cleaning of the Direct3D initializations, the DXGI calls and the libraries linked in.
We then fixed some issues about file management, deadlocks when creating the library and thumbnails.
We also removed a memory copy in the access plugin, for all files; that could improve quite a bit the performance and improve the seeking.
On the interface side, the support for chapters was added, to allow change while playing.
Also on the player, the look of the slider was updated to allow more precise seeking, and the volume slider to match the look of the rest of VLC.
Also, the light theme is back. :D
The colors and the symbols for all the actions were updated to be more consistent around the UI. The animations of the transitions were updated and made faster; and the file browser interface was improved, and adapted for Windows Phone.
The rest of the work was done, in the VLC core, to improve greatly the VLC for Android performance, by using hardware acceleration in a better way.
This code is still on-going and is not merged yet, so it's not visible yet.
And unfortunately, iOS is not much better than Android, since just a minor change on Dropbox login was merged.
Once again, the reason is because of the work on the core, on Video Toolbox and on deinterlacing.
That's all for this week! Have fun!
By the way, don't forget to register now for VDD, this September, in Paris.
We're going back to one report per week, as holidays are over.
But, to be honest, this week has not been the busiest, I guess mostly because of holidays.
Yet another week started with MediaCodec fixes, which prevented all MediaCodec decoding on most Samsung devices! Ooops
François fixed numerous issues with Closed Captions, in the decoder and the text renderer.
This also fixed some background alignment issues that we've had for years...
Felix merged his 0-copy code for the hardware decoding for iOS. This should get very good performances on iOS.
We had a couple of important fixes for the pulseaudio module, that were backported to 2.2.2; and we're now generating Diffie-Hellman parameters dynamically, instead of hardcoding them.
Finally, we had a MKV subtitles regression, an H.264 extradata parsing issue and a large number of memory leaks, that are now past history.
The Android project was moved to the latest version of the Android SDK, and to the last version of AppCompat and we had a few compatibility issues to fix.
We also updated our buildsystem to gradle 2.6, and updated the build-tools and gradle plugins accordingly.
We eventually fixed the loading for playlists and added an option to not rescan the database, if necessary.
In the end, we released VLC for Android 1.5.2 to the store, as a beta version.
As mentioned above, the most important part for iOS this week is the addition of 0-copy hardware decoding.
We also saw a small bug fixed that could make some files invisible from the media library.
That's not much, but the complete hardware decoding is big enough to explain this
WinRT was way more interesting, with a couple of releases.
After the 1.5.0 version for Windows, we published a version named 1.6.0, and then one 1.6.1, fixing numerous issues, notably:
The code between Windows Phone and Windows is now more than 90% the same code.
Expect 1.6.2 and 1.7.0 quite soon.
The x264 project also received almost 20 commits, this week; mostly to fix build issues with Visual Studio, inclusion in C++ projects, and a few other minor bugs.
This week is a bit special, since I will report about the last 2 weeks, because of lack of connectivity last week.
So here is a double weekly report of what has happened in the VideoLAN community and VLC development teams!
The big change of subtitles handling of the previous week involved quite a few fixes for the Closed Caption module, the tx3g codec, the freetype, quartztext and win32 text renderers. There are a few fixes pending that have yet to be merged, but let's hope the biggest work is done.
Linked to this, we've added support to Closed Captions inside VC1 and AVC streams; the decoder was also improved, notably to support time interpolation. We've also added support to SBV subtitles (Youtube).
Once again, we've fixed things and added more support to the adaptive streaming module; the goal is to allow user selection in the interface of the resolution or adaptive algorithm.
The work on the code of the OS X interface went on: panels modernization, cleaning the creation and the destruction of the main interface, moving more code to ARC, etc...
Finally, we've fixed issues with decoding TS with encrypted programs, but also with bitrate control when encoding.
We've added the support for a new flag on our Intent, named
title, so that you can override the title when launching VLC. The intent should now even support playlists.
We've fixed a few bugs on controlling from the remote on the Android TV version.
We've also reworked completely the network browsing code on the TV.
We've also fixed the deletion of the playlists, and issues when resuming an interrupted scan of our library.
Expect 1.5.2 and maybe 1.6.0 in beta soon.
VLC for iOS got quite a few changes lately.
First, the 2.6.4 version was pushed on the store, to fix a UPnP browsing issue.
Then, the VideoToolbox changes got merged into the iOS port. Hardware decoding should land in 2.7.0.
2.7.0 will also get, on iOS 9, a global search feature, using CoreSpotlight, as described in the iOS 9 preview. It should also now work fine with split-view.
Finally, some work has been started on an watchOS 2 application. More news on that later
VLC for Windows Store was even more busy, in the 2 last weeks.
We finally got a release, named 1.5.0, adding numerous features, and notably targetting Windows 10.
You should read Thomas' post about it.
In summary, new hardware acceleration, new interface, integration on Windows 10, and many more.
NB: We still support Windows RT and Windows 8.1.
That's all for those weeks! Have fun!
Don't forget to register now for VDD, this September, in Paris.
Another week started with MediaCodec fixes, which went on for a few days and terminated with the addition of hardware accelerated Audio decoding on Android.
libVLC received new events for audio corking, muting, volume changing and audio devices:
I backported the first few to libVLC 2.2.2.
The internal of VLC subtitles were completely rewritten, changing the way we're passing the text information from demuxers to decoders to text renderers.
We are now passing some structured text around, with styles information attached to it, instead of pseudo-HTML. This allowed to remove a large piece of duplicated code from text renderers, and put the complexity on the parsing side, not on the rendering side.
We added a new speech-to-text subtitle renderer for OS X, that speaks the subtitles instead of showing them on the screen. Of course, this is not for everyone, but it should help in accessibility cases for vision-impaired people.
The OS X interface cleanup work was continued during the whole week, by David, and will probably go on the next weeks.
Finally, we got fixes for AudioTrack (once again), notably for SPDIF support; for numerous memory leaks and some uninitialized variables.
This week was rather calm (but not too calm) on the Android side of things, mainly because of the work on the other projects.
First, we integrated the VLC core changes to improve performance. VLC 1.5.1 should be quite competitive on this matter.
Then, we rewrote completely most of the video player advanced options, using icons in a new single panel.
We also improved the integration of
vlc:// protocol and the Intents for 3rd party apps and websites when they try to launch VLC.
Finally, we improved the libVLC JNI API to support SurfaceTexture directly.
The work for VLC for iOS 2.7.0 was continued greatly this week. And VLC 2.6.3 was pushed on the store.
A large amount of work was done to support RTL languages, as it was announced for iOS 9.
This requires more usage of AutoLayout in our code.
Also, the thumbnail cache was improved, the side menu is getting a lift and a few crashes were fixed.
Some important work was done on MobileVLCKit to make it usable as a shared library framework.
Finally, the integration of VideoToolbox was merged for the iOS project.
Most of the changes are about the interface, to prepare the integration for Windows 10, to get a more consistent interface, and to listen to user's feedback.
The rest of the changes are on the Direct3D11 hardware decoding.
We'll see how all this gets merged and released soon.
x264 got a new release, and a bit of code merged in the master branch.
It notably adds:
That's all for this week! Have fun!
Don't forget to register now for VDD, this September, in Paris.
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.
vlc_access_Delete() were introduced in the core, along with inline function helpers like
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,
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.
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
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!
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
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.
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.
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!
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
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
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.
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
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!
As the previous week was very busy and that most Europe got a heat wave this week, this week looks almost calm.
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
write() to the core API and helpers for
recv() and related functions.
This also lead to the removal of
vlc_object_waitpipe() and the infamous
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.
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.
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!
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!
This week was pretty busy on most VLC related projects, as you'll see soon.
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.
Finally, some important work on the video picture pool in the core was started, to remove picture copies, use less locks and more atomics.
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.
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.
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!
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.
This week, iOS was quite a bit more busy.
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.
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.
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!
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.
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.
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.
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.
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.
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!
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.
A good Monday starts with Android MediaCodec bugfixes: this time, they were mostly done in order to fix issues with the Nexus 10 tablet.
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.
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.
The next version will be able to get all this together
libdvbpsi 1.3.0 was released this week, adding a few descriptors:
And fixing bugs in some tables and descriptors.
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!