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, ...
Moreover, the first commit on the
VideoLAN Client project is from August 8th 1999, by Michel Kaempf had 21275 lines of code already, so the VLC software was started earlier in 1999.
However, the most important date for the birth of VLC is when it was allowed to be used outside of the school, and therefore when the project was GPL-ized: February 1st, 2001.
Since then, only on VLC, we've had around,
And all that, mostly with volunteers and without turning into a business!
We're still here and working for our users.
So, for all our users supporting us, I just want to say: thank you!
Here is a the usual Delirium Cafe photo!
The first change was related to ChromeCast: a new module was added, to split the control of the chromecast from the streaming part. More code on that feature should come in the next weeks.
Petri then got us support for a Bluray demuxer in our Bluray module. It was only an access_demux before, and will now allow to open ISO files of Blurays over the network, including FTP, SMB, NFS or HTTP. Additionally, you can now use the default drive with the MRL
François also got support for ATSC A65, aka PSIP, or information like EPG and related, for ATSC broadcasted streams.
Almost at the same time, we received support for SCTE-18 / AES, aka alerting system inside broadcast.
Hugo added support for Metadata over UPnP, (notably artist, album, cover ART and related fields) and fixed quite a few issues on this module.
We finally will get proper UPnP support soon!
We also received fixes for TS sections, dialogs, win32 installer, TS seeking, DxVA decoding and MIDI. And also improved the features merged in the last weeks: keystore, the dialogs and SMB modules.
We're still waiting for feedback to improve for the future releases.
On the main development branch, we mostly got:
Android development was quite busy too, as it's been the usual in the last few weeks.
We also got:
WinRT development was quite active too, mostly focusing on a complete UWP project.
That's mostly it for those weeks, see you next time!
Of course, the big news of the week was the release of VLC for the AppleTV.
We hope you will enjoy VLC on this new platform.
Monday started with the addition of a NFS protocol implementation to VLC. This will allow us to access and browse files and directories on NFS shares, on all our ports, including Windows, Android and iOS, where this protocol is not natively included.
We then got multiple fixes on the new Keystore API and the corresponding implementations, notably in the SMB and SFTP modules.
The AVI demuxer module was fixed to help reducing the number of connections for distant streams on interleaved files. This should reduce the load on the servers, when playing those files.
Multiple fixes and improvements were pushed on the TLS code, continuing the work from the previous week. Notably, to use I/O vectors for sending and receiving messages.
Then, the TLS code was abstracted to allow TLS sessions not directly above TCP, like in the TLS over TLS case. This big refactoring was necessary to add the support of HTTPS through HTTPS proxies.
Finally, we received numerous fixes for crashes, memory leaks and small issues.
On Android this week, we had quite a few changes too.
We now have a manual way add network servers, like FTP, SFTP, SMB, NFS or FTPS.
On the Android TV, we've improved the settings, reworked heavily the playlist and the advanced options navigation, and refactored completely the video listing, to allow alphabetical sorting and browsing.
Finally, we changed the seek buttons to 10 seconds, instead of 30; we now show bitrate information in media information dialog for audio files and we improved the playlist items' look and navigation.
Try a nightly build to test all those features!
So, as said in the introduction, VLC for Apple TV was introduced this week, in its version 1.0.0.
Based on the iOS version, it's finally a bit different, to accommodate the specialties of this platform. Especially the
casting we introduced is not seen in any other port of VLC.
You should read more about it on Felix's blog.
At the same time, we released VLC for iOS 2.7.2, fixing minor reported bugs.
That's mostly it for this busy week, see you next!
Today, we are proud to announce VLC on the Apple TV. It’s a full port of VLC media player combined with platform specific features.
VLC for Apple TV integrates with a plethora of devices and services on your local network and includes a custom way of casting files directly to the TV from your other computers using a web browser!
Immediately after Apple announced the future of television, we started to develop for the new box and now it is finally ready to be published. This is the first app we release with the increased limit of 2000 TestFlight beta testers, who had access to our app since mid November and greatly influenced the result. We were excited about the amazing amount of feedback we received.
Our mission for VLC for the Apple TV was to fulfill our claim “plays it all” and we got close: it supports virtually all formats under the sun (like the iOS version of VLC). Before demonstrating VLC’s advanced playback experience on the Apple TV, let’s discuss about ways how to actually access content!
VLC on the Apple TV automatically discovers storage and shares on your local network (using the SMB, UPnP media server, FTP and PLEX protocols). You can browse them with the clicker or the Remote, select the content you want and it will play.
During playback, you’ll be able to add subtitles from OpenSubtitles.org. Login credentials can be securely stored on your Apple TV and will be synchronized to your iPad or iPhone (and the other way around) to ease access.
However, what about network streams and files you don’t have stored on your server? This is where Remote Playback steps in. On this view, VLC shows an address (and an IP) on your Apple TV. Open it using your web browser. Drop a file to play it on the big screen, drop multiple files to queue them. Until storage hits its limits on the Apple TV, the files will remain available locally on device.
For playback of a network stream URL on your TV, just paste it to the field and push return. Once playback concludes, you will find it in the Network Stream view for future use. Like for files, you can send multiple URLs rows in a row and they will be attached to the playback queue.
Finally, the web interface can be used for play/pause and seeking.
Speaking about network streams. URLs recently played on iPad or iPhone will appear along with the ones played on the big screen automatically.
VLC for the Apple TV supports the basic play, pause and seek. Additionally, you can navigate by chapter and titles or pick from multiple audio and subtitles tracks.
Watching a talk and you’d wish the speaker would be a bit quicker? Set your custom playback speed, a feature we missed from any other player on the Apple TV so far. As VLC is increasingly used to watch talks and documentation in education, it was naturally of high importance for us to include this feature from the start.
You enjoy listening to web radio or music? We believe that just showing album art is a bit boring so we integrated with the community service hatchet.is to show artist imagery and biographies – give it a go!
Let’s go back to subtitles for a second: VLC on the Apple TV supports any kind of text (srt, SSA, WebVTT, …) or bitmap subtitles including full support for Right-to-Left languages like Arabic and Hebrew, complex text layout for Malayalam as well as further Asian languages.
What to do when subtitles are not included with your media? Within the playback view, you can find VLC’s first integration on embedded platforms ever with OpenSubtitles.org!
When looking closely, one content source known from VLC’s iOS port is missing so far: Cloud Services! Support for Dropbox, OneDrive and Box is currently in beta testing using the TestFlight platform. It will appear shortly after.
The day Apple announced the new device, we immediately started porting VLC to their new operating system and finally, our initial version was approved! We are excited about this first new port of VLC in 2016 after concluding 2015 with a port to Chrome OS and are really looking forward to your feedback!
I can’t thank Tobias enough for his dedication during the last quarter to make this possible.
Happy New Year 2016!
Another week started with improvements on the new HTTP/2 stack.
We mostly got support for HTTPS through HTTP proxy and HTTP tunnel (RFC7639) but also a better documentation and better cookies handling.
The large work of the week was the merge of the new Keystore API for the VLC core.
It allows to store user passwords and credentials in the secure storage provided by the Operating System. This is notably for HTTP or SMB passwords.
This was implemented for HTTP, RTSP, SFTP, FTP(S), SMB. And we have now a KDE Kwallet, a Gnome libsecret and a plaintext backends to store those in the disk.
Hopefully, one for iOS/OSX and Windows will follow soon.
The TLS support has a new shinny test, that helped improve the GnuTLS module, which provides TLS on most platforms. This is going to be important for HTTP/2.
To also help this HTTP/2 module, the core got a new socket function named
vlc_socketpair() to create a pair of sockets.
The H.264/HEVC packetizers were made faster, using some SSE2 optimizations.
We also should detect now JP2K inside TS streams.
Finally, we've had fixes for securetransport, improvements for the OS X interface, and improvements on the EAC3 detection in TS.
Android port got this week, with more than 50 commits from Geoffrey.
In summary, we:
After releasing VLC for iOS 2.7.1 last week, we prepared a version named 2.7.2 fixing more issues reported, notably for UPnP playback, changing subtitles size and passcode lock.
This release is in review on the store.
At the same time, we've prepared the release of the Apple TV version, that will be out this week, (if everything happens according to schedule).
The WinRT port is getting in shape and was quite too this week, with almost 50 commits from Thomas!
The largest part of the work was the improvement of the Database speed, playing with threads, bindings and properties.
We fixed a large number of bugs on this part.
We also improved and fixed the look for the navigation, when switching from Light Mode to Dark Mode.
That's all, this week for VLC! All my best wishes for 2016!
Technically, we're already in 2016, but this report will cover the last 2 weeks of 2015 and only a few days of 2016.
As one can expect if one has read my previous reports, we had quite a few improvements on the HTTP/2 pipeline (multiple cookies, test cases, ...) and on the HEVC/H.264 packetizers (test cases, SEI...).
When using libVLC, it's now simple to know if the titles are menus or are interactive, with the
In the decoder core, the call
decoder_AbortPictures was added, to finish our work on asynchronous decoding; notably to support flushing when doing asynchronous decoding.
Some related work on draining/flushing was also done in avcodec and mediacodec modules.
We've added a way to have tunneled-playback through mediacodec on Android for surface with punch holes. This is only for developers who work on a specific platforms and SOCs, since you must know what you are doing.
In the streaming output, we've added
sout_MuxFlush to be able to flush, notably useful when seeking the input.
We've also got quite a few commits on the ChromeCast module, preparing the work that will come soon, to have a proper support of those devices.
On OSX, we've had a large rewrite of the messages and the information dialogs.
Finally, we've had improvements on the H.264 and HEVC demuxers, and on the adaptive streaming modules, fixes on the iOS video output, and a lot of small fixes for leaks and crashes.
On iOS, we've released VLC for iOS 2.7.0. Finally !
It has brought quite many new features and improvements:
Be careful, this version requires iOS 7 to run.
We also released a version 2.7.1 to fix the important bugs we saw in 2.7.0.
A large addition was added to the master branch, to support sources extensions.
A bit like on the desktop version, where we have services discovery, one might want to add new source of content, to the VLC on Android application, like ISP-specific TV channels, like Google-Drive browsing, podcasts, or social-network videos.
Those sources extensions will appear a bit later, on the Play Store.
We've also added support for Search inside the audio playlist and a playlist in the video view, when using a second-screen!
On WinRT, the work was done to improve the navigation stack, and the way we move inside the application, including the hamburger menu. We've improved the MiniPlayer too.
Finally, we've done major refactoring of files and projects to be have a better file layout.
As you might have seen, we've finally done a new release for libdvdcss!
So, that's all for the last weeks!
For everyone, I wish you a happy new year, and give you all my wishes of health and success!
For once, just a very short blogpost, to announce that libdvdcss 1.4.0 is out!
This release is a major release of libdvdcss, released a bit more than one year after 1.3.0. It's focused on stability, cleaning, deprecating and small improvements.
In terms of commits, this is also a very large release, with more than 150 commits (on a total of 486 since libdvdcss creation).
The biggest feature of 1.4.0 of libdvdcss is the support of ISOs over the network, with the introduction of the
dvdcss_open_stream() function in the API.
This is the first time in a long long time, that we add a call to libdvdcss.
We've also added an optional header file, named
version.h, to help detecting the version, if you ever use libdvdcss statically (very rare case, I believe).
Finally, we've spent a lot of time to clean, and make a big lift-up to this library. If there are not too many regressions, the cleanups will go on, next year.
In this release, we've dropped the support for:
If you are on those OSes, please keep using the old libdvdcss versions.
You can download it now, on your favorite website!
Today, we will release a new major version of VLC for iOS. Note that due to adapted review guidelines, it is branded “VLC for Mobile” on the iOS App Store now.
We have been working on this update for the last few months, so it adds a lot of features:
On the playback and networking side, we added
This release includes a lot of UI improvements, bug fixes and last but not least a newly designed sidebar menu!
Finally, this release drops support for iOS 6.1. VLC now requires iOS 7.0 or later.
Stay tuned, we have more exciting things in the pipeline, which we will happily present very soon.
It shares most of the code with the Android version, but includes a few ChromeOS specific modifications.
We've had good feedback on it, but there is still a bit of work to do, from our side, but from Google's side!
That was the last desktop OS that we were not on. Try it!
The second large work of the week was the rework of the NAL (SPS/PPS) parsing and usage for H.264 and HEVC (42 commits, this week).
This impacted most of the hardware and software decoders, packetizers and muxers.
For both HTTP/2 and NAL parsing, I believe we'll see more commits next week too.
We've added the support to raw RGB and GREY video inside mp4.
Finally, we've also fixed build issues, memory leaks and small improvements on the Chromecast and the Youtube modules.
On Android, we've started to fix a few regressions that were in the 1.7.x releases, notably small crashes and wake-keeping when playing.
We've re-added the History section that was present a long time ago. It's completely rewritten, though.
We've improved our databinder, our video playlists, and our Android TV behavior.
And of course, merged everything for the ChromeOS port.
It might be long to review, because of the holiday season!
And of course, we've already fixed a few bugs on the master branch, but no major feature, until we get a release
The WinRT port was quite busy last week, with more than 50 commits!
The biggest changes were mostly done:
We hope this redesign/rework will be done and pushed on the store, in the next weeks.
That's quite a busy week, see you next time!
ChromeOS is one of the last Operating Systems where you could not run VLC and play all your media as you wished.
Today, I'm pleased to tell you that you can use it now! DOWNLOAD!
A few months ago, the Chrome team announced the possibility to run some Android applications on Chrome OS using the new Android Runtime for Chrome. Starting from that moment, we wanted to support this runtime.
VLC is mostly a native application on all platforms, using low-level APIs to output video, audio and get access to threads. VLC is using mostly
C++ and hand-crafted
ASM to get the best performance, as required for a realtime application.
Therefore the ARC solution was a , and helped us to recycle 95% of the Android code and optimizations we did in the last months (some are not released yet).
Of course, some work was required, nothing is magical, but way less than other solutions.
VLC on ChromeOS supports:
We would LOVE help to improve this port! Join the community, fork the code and send patches!
The current version was tested on the 2 ChromeBooks we had access to:
It is possible that there are issues with other machines, and we ADVISE to use the latest Chrome 48 or the current beta version, to test VLC.
Please report the bugs, if you can!
Currently, the Chromebit by ASUS is untested, because it seems to be not available in France yet, and ASUS did not answer to our query to get access to one.
Any testing on this would be welcome!
In the same way, ARChon Runtime is currently not supported, because it was not tested at all.
Help on this is welcome too!
You can download it here!
Be careful, it's just the first release, but for now, Enjoy!
This report is a bit special, since the previous week-end was the VideoLAN meeting in Barcelona, so I did not do a post last week.
The VideoLAN team met for our 4th quarter meeting, in Barcelona, Spain, in the offices of Skyscanner.
We were around 20 for 2 days, and worked on quite a few things around VLC.
During the week-end, we worked on:
So, all in all, a quite busy week-end
So let's discuss a bit more in details, what got merged, in the last weeks.
The fight against the deadlocks in the input and video output core went on during the last 2 weeks. To solve this, the core got 2 new functions named
vout_Cancel() for the video output and the function
vlc_fifo_TimedWaitCond() which allowed to introduce an interruptible mwait in the decoder core.
We should now be close to the end of these issues.
Related to this, all the decoders and packetizers now have a
pf_flush function that they can implement. This flush was notably re-implemented in the libavcodec module.
VLC now has support asynchronous decoding, in the core: the methods
decoder_QueueSub were introduced for that, and the preroll was fixed and simplified accordingly.
Finally, we have now
timespec_get() (to fix issues on Win64 snapshot numbering) and
timegm() replacements in our
On the bluray side, the menus are now activated by default, we've improved the speed of transitions, and the overlay, and we also fixed numerous issues on titles detection, chapters count, end-of-file behavior and static menus.
We fixed the listing of numerous UPnP shares, including the Plex ones and UPnP module was made interruptible.
We fixed the support for AVC Intra files without SPS/PPS, and we added support for HEVC NAL parsing, at the same time.
This led to a big of the H264 and HEVC packetizers and parsers. This will allow us to record in HEVC codec.
Finally, a large piece of code was added to VLC last week: a new HTTP/2 stack.
It's around 5000 LoC and it supports HTTP 2.0 protocol, and supports seeking by reusing the TCP connection and the TLS session.
The code is currently only used for HTTP/2, because it is still missing some features compared to the HTTP 1.1 module (proxies, cookies, auth...)
On OS X, we've had an important rework of the simple preferences interface.
We've also reworked and fixed the starting of the interface from command-line.
In the Qt interface, we've fixed the layouts for the Right-To-Left (RTL) languages.
Android development got quite busy in the last 2 weeks: we've released VLC 1.7.0, 1.7.1 and 1.7.2.
We've fixed the video playlists feature introduced the previous week, we've improved the Android TV audio player, and fixed numerous reported issues.
Then, we've pushed the last fix for Android 6.0 Marshmallow support to VLC's core. It was mostly related to PIC issues (Position Independent Code) in 3rd party libraries. We will now be able to target Sdk 23!
Finally, we've merged the asynchronous decoding, which should improve, once again, the performance of VLC on Android. VLC should be now the fastest player in town.
We're still waiting.
The WinRT port got quite busy too. Large refactoring to the applications were made to clean and simplify the old code and increase the speed of the application.
The look was refreshed too.
Finally, the port to UWP projects was merged. It should allow us to compile the application as a UWP application, without dropping support for 8.1.
That's quite a lot for those weeks, see you next time!
I'm still here.
Following last week's work on Freetype font fallback on OS X and iOS, after a few fixes, we removed the QuartzText and the WinGDI text renderers.
The Freetype renderer should always be the best one, now.
We've added a new libVLC event:
libvlc_MediaPlayerChapterChanged to detect a change of chapters and we've fixed the
libvlc_MediaPlayerTitleChanged event, that was not fired in all cases.
The core handling of objects was changed, to notably have a lock per parent-object and not per instance; this should reduce the lock contention.
Also in the core, the variables callbacks were changed in order to be privatized and some string-related functions were renamed.
Also in the core, an important change was introduced in the flush mechanism for decoders and packetizers, adding a custom
The HLS support was improved by adding support for inconsistent HLS playlist numbering, fixing live pruning, using targetduration hints for HLS updates and other small fixes.
On the Blu-Ray side, we've fixed interactive titles selection, subtitles that disappeared too quickly, and implemented overlay wiping to fix some HDMV menus selections.
Finally, our last.fm plugin now supports
NowPlaying events and we've pushed fixes for the Qt interface, for an XSS in the HTTP interface, the new Youtube URLs, and improved our OS/2 support.
On Android, we've polished the 1.7.0 release, fixing the menu's look, some crashes and some alignments in the video player. This version should go live during this week
We've worked quite a bit on the ChromeOS version, more news about this, next week
However, the biggest work was done for the next release, by adding support for video playlists, something that was requested for years...
The core of the feature is done, the playback is correctly working, and you can play a group or all the elements from a directory.
What is currently missing is an interface to manage those.
On iOS, we've integrated the new subtitles renderer based on Freetype, improved our fonts support and fixed some crashes in the core.
We've also improved the notifications, the information panels, the media library and the SMB browsing.
A lot of features were added to the tvOS port, but once again, this is still only for testers. The release is on its way, as soon as we can push it on the store.
On libudfread, we've made the same changes for Android compilation.
That's all for this week, folks, see you next one!
And we're back to normal, so here is the (now usual) report detailing the work in the VideoLAN community, from last week.
The VideoLAN team was at the Paris Open Source Summit, in the association village.
Our stand was featuring the Android TV version decoding 4K playback on a Sony TV, a few tablets running various versions of VLC, the Nexus player with VLC playing DVDs on Android TV.
We also had hellium-balloons, lots of candies and free t-shirts.
This week, we've started by updating the VideoToolbox decoder for iOS to support 4K decoding on iPhone6S and iPhone6S+.
We've improved the Blu-Ray module to correctly save-and-select the subtitles when activated from the Top Menu, and not from the VLC menu. We also got fixes for the next/previous chapters buttons.
Also, a way to call the pop-up menu was merged in the core.
As it's now customary, our Freetype decoder was improved again: on Windows, it can now support Fonts fallback when the font name or filename are not in English. This is great for asian names, but also for German, where all the font names are translated. (The bug was opened 5 years ago).
The iOS and OS X Freetype font fallback was implemented, at the end of the week. We should now have support for ComplexTextLayout and fonts fallback working on all the major platforms, and the Freetype module should be as nice as the QuartzText renderer, on OS X.
We've also improved the seeking for CD-G files (karaoke), and the fix came from a new contributor!
The adaptive streaming module was also modified to improve the bandwidth detection and tweak the adaptivity algorithm (moving average/vertical horizontal filter with an observation window of 250ms) and merge more code between HLS and Dash.
We've also added support for embedded cue-sheets in FLAC.
Finally, we updated PNG library for and the iOS Dialog Provider was also largely rewritten to support tvOS.
We've spent most of the week stabilizing the Android 1.7.0 release.
Notably, we've improved the playlist look, refactored and removed most of the dialogs (using Snackbars), changed the file deletion logs, and fixed the playback service and the notification.
We've also been working on the next big features: video playlists and extensions. Those will be merged later.
We've pushed the tvOS beta in Testflight, for the people who registered
A lot of features have been merged on the project. A blogpost will follow with the complete features.
This week-end, I really did not feel like writing anything about last week, because... you know... fuck it.
But then, I realized that I shouldn't stop living because some assholes believe the way I live is the wrong one.
So after crying a bit, here is the short (and late) report about last week in the VideoLAN community.
Once again, a week started with fixes about our adaptive streaming support ( ), notably the Smooth Streaming part, to support the Language attribute and per-stream Timescale.
Also, the computation of the bandwidth was reworked to supported split-streams (audio and video separated).
During the week, we've also fixed the streams selection (like the language) when changing quality during the adaptivity of the streaming.
We've also improved our chained OggFlac support (#14972 and