First release of dav1d, the AV1 decoder

tl;dr: dav1d has now a first release

If you want a quick summary of this post, about our AV1 decoder:

  • dav1d is good enough that it has an official release,
  • dav1d now covers all the spec and features of AV1 (including 12bits),
  • dav1d is very fast on modern desktop and it is getting faster on mobile chips.

Read the following for more details...

A few reminders about dav1d

If you follow this blog, you should know everything about dav1d.

AV1 is a new video codec by the Alliance for Open Media, composed of most of the important Web companies (Google, Facebook, Netflix, Amazon, Microsoft, Mozilla...).

AV1 has the potential to be up to 20% better than the HEVC codec, but the patents license is totally free, while HEVC patents licenses are insanely high and very confusing.

The reference decoder for AV1 is great, but it's a research codebase, so it has a lot to improve.

Therefore, the VideoLAN, VLC and FFmpeg communities have started to work on a new decoder, sponsored by the Alliance of Open Media, in order to create the reference optimized decoder for AV1.

Release

Today, we release the first usable version of dav1d, called 0.1.0, Gazelle.
It means you can use the API, ship the decoder, and expect a bit of support on it.

We launched dav1d, more than 2 months ago, during VDD, and we've been working a lot since:

  • we support all the features of AV1, even the less known ones,
  • we support, 8, 10, 12 bits, and all chroma subsamplings,
  • we support all AV1 files that were shared to us,
  • we spent a lot of time to make dav1d very fast, while keeping the binary size manageable.

On modern desktop, dav1d is very fast, compared to other decoders:

You can see more details on my previous post.

More performance to come.

But, since the previous blogpost, we've added more assembly for desktop, and we've merged some assembly for ARMv8, and for older machines (SSSE3).

We're now as fast as libaom, in single-thread, on ARMv8, and faster with more threads.

We've been also merging more SSSE3 code. (I haven't had enough time to bench it).
Which means that we will soon be faster than other decoders, on all platforms.

And, we've been experimenting with shaders, notably for the Film Grain feature.

Get it

You can get the tarball on our FTP: dav1d 0.1.0.

You can get the code and report issues on our gitlab project.

You can also join the project, or sponsor our work, by contacting me :)



dav1d: performance and completion of the first release

tl;dr: dav1d is in a very good shape

If you want a quick summary of this post:

  • dav1d now covers all the spec and features of AV1, for 8bits and 10bits depth,
  • dav1d is very fast, up to 400% faster (more fps) than the libaom decoder, and very often 100% faster.

Now is the right time to integrate it, in your products!

Read the following for more details...

A few reminders about dav1d

AV1 is a new video codec by the Alliance for Open Media, composed of most of the important Web companies (Google, Facebook, Netflix, Amazon, Microsoft, Mozilla...).

AV1 has the potential to be up to 20% better than the HEVC codec, but the patents license is totally free, while HEVC patents licenses are insanely high and very confusing.

The reference decoder for AV1 is great, but it's a research codebase, so it has a lot to improve.

Therefore, the VideoLAN, VLC and FFmpeg communities have started to work on a new decoder, sponsored by the Alliance of Open Media, in order to create the reference optimized decoder for AV1.

Features

We launched dav1d, exactly 2 months ago, during VDD.

We did a lot of work since. And by "we", I mean mostly the others. :)
There are now more than 500 commits from 29 contributors from different open source communities. This is a good result for a new open source project.

First, we've completed all the features, including Film Grain, Super-Res, Scaled References, and other more obscure features of the bitstream. This covers both 8 and 10bits, of course.
We also improved the public API.

Then, we've fuzzed the decoder a lot: we are now above 99% of functions covered, and 97% of lines covered on OSS-FUZZ; and we usually fix all the issues in a couple of days. This should assure you a secure decoding for AV1.

Finally, we've written a lot of assembly, mostly for modern desktop CPUs, but the work has been started for mobile and older desktop CPUs.
We even reduced the size of the C code!

Performance

Today, dav1d is very fast on AVX2 processors, which should cover a bit more than 50% of the CPUs used on the desktop. We wrote 95% of the code needed for AVX2, but there is still a bit more achievable.

We're readying the SSE and the ARM optimizations, to do the same. They will be very fast too, in the next weeks.

The following graphs are comparing dav1d and aomdec top-of-the-tree on master branches. (and yes, aomdec has CONFIG_LOWBITDEPTH=1).
This was done on Windows 10 64bits, using precompiled binaries.

The clips are taken from Netflix, Elecard, and Youtube, because they don't use the same parameters in the encoder, and don't have the same bitstream features.
Film Grain is not run on the CPU, so it is not visible here.

Haswell

Here, on Haswell (i7-4710, a 4 year old CPU with 4 cores), are the results:

And reported to in percentage compared to libaom:

We got in average 2.49x, and we even get 3.48x on the Youtube Summer clip!

Zen

With a more modern Zen machine (Ryzen 5 1600, 6 cores HT), here are the results:

And reported to in percentage compared to libaom:

The average is even higher at 3.49x, and we even get 5.27x on the Youtube Summer clip!

Global comparison

If we put both on the same graphs, here is what we have:

Threading

If you listened to our talks during VDD or during demuxed, we explained that dav1d threading was quite innovative, and should scale way better than libaom.

On an even less powerful machine, an i5-4590, with 4 cores/4 threads, here are our results, for the Youtube Summer clip:

You see that dav1d can scale better, in terms of threading, than libaom.

Conclusion

dav1d is very fast, dav1d is almost complete, dav1d is cool.

We're finishing the rough edges for a release soon, so that we can hope that Firefox 65 will ship with dav1d for AV1 decoding.

On the other platforms, SSE and ARM assembly will follow very quickly, and we're already as fast on ARMv8. Stay tuned for more!

I would like to thank Ewout ter Hoeven (EwoutH) from the community who did all the testing, numbers and computations.



The VLC Technical Committee

VLC Technical Committee

I'm very proud to present to you the VLC Technical Committee, as elected during the last VDD conference: Denis Charmet, Rémi Denis-Courmont, Hugo Beauzée-Luyssen, Thomas Guillem and David Fuhrmann.

The role of the VLC Technical Committee (TC), is mostly a technical resolution committee, that will arise and decide when there are disagreements and bike-shedding in our community.

Members

The glorious members of this Technical Committee are:

  • Denis Charmet, the wisest of the VLC developers, and the most-tampered, claims to have never been in conflict with anyone in the community. Let's hope that does not change. (And he has the Mon€¥, so we have to like him...)
  • Rémi Denis-Courmont, the biggest contributor to VLC ever (and still the most active non-sponsored developer around VLC); without him, VLC would not exist anymore; the one that knows more about UB, threads and network than 99.999% of the developers.
  • Hugo Beauzée-Luyssen, active on the VideoLAN community since the late 2000s, C++1x lover (yet I saw him write Go, once!), very active on the Medialibrary, compilers, toolchain, CI/CD, code-coverage, fuzzing and other toolings; he also knows about UB, even in C++ :) (some say he is secretly in love with Windows, but he will deny this). Also member of the board, since quite some time now.
  • Thomas Guillem, one of the most (the most?) active on VLC development; knows wayyyyy too much about audio and video outputs, and codecs in VLC, a lot about Android (and too much about Tizen) and other weird OSes (he even has a mac on his desk). Probably the most knowledgeable about VLC, after Rémi. He loves C and will never switch to other punk langages!
  • David Fuhrmann, the youngest of the TC, is the macOS/iOS touch of this TC, and knows this weird language called Objective-C. Some people claims he even understands Xcode and the macOS toolchain! But in his every day life, he knows C++ (don't tell Hugo)!

As you can see, in all fairness:

there are 2 people of the board in the TC, 2 out of 5 are VideoLabs employees, no roots are part of the TC, nor am I. They know about C, C++, obj-C, and Linux, Windows, macOS.

Details

The fine prints of this Technical Committee:

  • The TC can be contacted to take action, or decide by itself to take an action, on any technical subject that did not reach consensus. If no issue there is, there is no need to call the TC.
  • Votes and discussion of the TC are private.
  • You can contact the TC at vlc-tc@videolaɴ.org
  • The VLC TC cannot take action on community issues or CoC.
  • The VLC TC can be fired by the GA or any other VideoLAN meeting with the majority of votes.

May they do good work! Good luck to them!



Introducing dav1d: a new AV1 decoder

Introducing dav1d

AV1 is a new video codec by the Alliance for Open Media, composed of most of the important Web companies (Google, Facebook, Netflix, Amazon, Microsoft, Mozilla...).

AV1 has the potential to be up to 20% better than the HEVC codec, but the patents license is totally free, while HEVC patents licenses are insanely high and very confusing.

The reference decoder for AV1 is great, but it's a research codebase, so it has a lot to improve.

Therefore, the VideoLAN, VLC and FFmpeg communities have started to work on a new decoder, sponsored by the Alliance of Open Media.

The goal of this new decoder is:

  • be small,
  • be as fast as possible,
  • be very cross-platform,
  • correctly threaded,
  • libre and (actually) Open Source.

Without further ado, the code: https://code.videolan.org/videolan/dav1d

Name

dav1d is called dav1d, because Dav1d is an AV1 Decoder

(Yes, that is a recursive acronym, no need to tell us...)

Video

You can see a talk during VDD 2018 about dav1d:

VDD2018 dav1d presentation.

Technical details

Some technical details about dav1d:

  • written in C99 (without VLAs),
  • has asm in NASM/GAS syntax (no intrinsics),
  • uses meson/ninja as buildsystem,
  • currently works on x86, x64, ARMv7, ARMv8,
  • runs on Windows, Linux, macOS, Android, iOS,
  • licensed under BSD.

Performance

Currently the source code of dav1d is 1/10th of lines of code compared to libaom and its weight is 1/3rd of the binary size of libaom.

It currently uses 1/4th of the memory usage of libaom and uses a very limited amount of stack.

Depending on the threads conditions (see the video talk linked above), dav1d is more or less faster than libaom 1.0.0, but slower than libaom HEAD.
dav1d having almost no assembly code yet, this is not surprising, and is actually a good starting point for the future.

Of course, those metrics will evolve once we add more assembly code, and when the project evolves a bit more.

Questions

Is it production-ready?

Not yet, but you can start testing it and check how the API works for you.

Can I help?

Yes! We need C, ASM developers, but also app integrators and testers to give us feedback.

I need to ship an AV1 decoder with my OS, my hardware, my app. Can I do that?

Yes. dav1d is licensed under BSD for this very reason.

Please talk to us, if you need to get adaptations for your use-case (hybrid decoders, or specific platforms, for example).

BSD is not copyleft, why?

We want AV1 to be as popular as possible. This requires fast decoders, running everywhere. Therefore, we want to help everyone, even non-open-source software.

See RMS opinion on this subject.



VLC for iOS and UWP 3.1.0 release

VLC 3.1.0 release

After a few months since the release of VLC 3.0, today we release VLC 3.1.0 on 2 mobile OSes: iOS and Windows Store (UWP).

This release brings ChromeCast integration to iOS and UWP, like it was present on desktop and Android versions.

ChromeCast and hardware encoding

However, it supports ChromeCast in a more performant way, because we added hardware encoders to those 2 platforms.
Indeed, here, for local streaming, we care more about speed and battery saving than we care about bandwidth efficiency, si hardware encoding is a good fit.

On iOS, we're using the standard VideoToolbox hardware encoding to produce H.264 streams, muxed in MKV.

On UWP, we're using Quick Sync Video for intel CPUs (that covers almost all CPUs since 3rd core generation).

In fact, VLC has a QSV encoder since 2013, but it's very rarely used, because people usually prefer software encode (x264). Here, we fixed it and modified it to work inside the UWP sandbox.

iOS

You should really read Caro's blogpost here!

But in that version you have:

  • ChromeCast,
  • 360 video support, with sensors,
  • Numerous bugfixes on the playback core (inherited mostly from VLC 3.0.1-3.0.3)
  • Some decoding speed improvements,
  • Quite a few interface bugs (see 3.1.0 milestone)

UWP

The version is similar to the iOS version, in the fact that it has hardware encoding and ChromeCast integration.

As explained, the hardware encoding is done using QSV.

But it features also a large rework of the codebase and fixes a very large number of crashes.

Also, funnily enough, we've worked on the 8.1 version too, and we will push that one soon on the store. This includes SurfaceRT devices, even if Microsoft has forgotten them!

So VLC 3.1.0, UWP version will be out for:

  • Windows 10 Desktop (x86)
  • XBox One
  • Windows 10 Mobile (ARM)
  • Windows 8.1 Desktop (x86)
  • Windows 8.1 RT (ARM)

Once we fixed an issue, we might even do Windows Phone 8.1.

The Windows 10 versions are on the store today, and we're waiting for a deployment issue to be fixed to push the 8.1 versions!

(Note: if you are from Windows Central, you can contact me for more details)

Have fun!



Welcome back!

After quite a bit of time far from the blog, I am back around here.

The biggest reason for this silence was that this was taking a lot of my time, but I had almost no positive feedback on those posts.

Let's see if we can do better this time :)

Here is a small cone, to make you more happy:

Large Cone



Last weeks in VideoLAN - 53

53rd VideoLAN report

During the core of the hot European summer, here is a weekly report about the last 2 weeks in the VLC and VideoLAN communities!

It was a bit calm, to be honest; and I'm a bit late to publish. Summer is the cause :)

Features

VLC

The week started by a lot of code cleanup and renaming for the Mac OS interface. We also had improvements focus on the Sierra release.

On the decoding side, we've had some improvement for hardware decoding in Direct3D11, focused on HEVC decoding.

We also had fixes for the OSX VideoToolbox decoder, notably to be able to restart the decoder when required.

A module supporting the AV1 from the Alliance for Open Media was merged too. So far, it's only a decoder, and disabled by default.

On the streaming side, the MP4 muxer timestamps were fixed. It was also backported to the 2.2.x branch.

We now have ARM64 assembly for our deinterlacer, which will be very useful for iOS, Apple TV and Android TV.

Finally, we had fixes for RTSP passwords saving in the keystore, improvements for RTSP support and the H264 packetizer, and we added support for UTF8 filenames in FTP directory listings, and support for DiscNumber and DiscTotal metadata in MP4, and DNxHR!

Android

On Android, we've mostly fixed crashes, updated translations and pushed 2.0.6 in production, on the play store.

The work is mostly done now on the new media library code, that will be merged later.

WinRT

On UWP, the focus has been on the XBox 1, and mostly on how we can upload files on the box, since we don't have access to the filesystem.

The current solution is using an HTTP webserver to upload the files from your browser, and support for USB disks.

That's all for those weeks, see you next!



Last week in VideoLAN - 52

52nd VideoLAN report

Another summer week passes by and here is a new weekly report about the VLC and VideoLAN communities!

Features

VLC

The week started with numerous additions to the Direct3D video accelerations and video outputs, to continue the support for 10bits decoding and HDR.

Related to those improvements, we added support for hardware decoding of HEVC decoding inside the TS format, by improving our HEVC packetizer.

We fixed (actually added) the support of QuickTime Videos inside MKV, aka MP4-inside-MKV; and also the support for QuickTime Audio inside MKV.

We improved again the ChromeCast support, by fixing small issues, notably when reloading and stopping the stream.

In the core, an important deadlock was killed, that was affecting Windows and Android platforms.

Finally, we also did a fix for hidden chapters in MKV, and improved the MIDI integration for Windows, and reworked a bit our contrib system.

Android

On Android, we finally fixed the support for old x86 Phones like the ZenPhone that claimed to be ARM phones. Those phones lie about their CPU with CPU_ABI, CPU_ABI AND they expose a fake /proc/cpuinfo to the applications! Thanks to a contact at ASUS, we got a phone and coded a work-around.

We also added support for saving audio-delay when using your Bluetooth headphones, so that you have a different audio-delay when using those headphones than without headphones.

Finally, we fixed a few crashes and regressions that were reported against the last release.

WinRT

On UWP, the biggest focus was on cleaning the code and on the Xbox 1 interface.

More to come soon, I hope!

libbluray

We've had a lot of small fixes for libbluray, mostly on fixing issues and crashes reported by static analyzers, but also build issues, Windows issues, and crashes reported by the users.

That's all for this summer week! See you next!



Last week in VideoLAN - 51

51st VideoLAN report

So, after a few crazy weeks, I'm coming back to a more regular schedule for my weekly reports about VLC and VideoLAN.

Features

VLC

Decoder fallback

The major change, during last week, was the possibility to restart the audio decoders when the audio device changes.
This is very useful when you switch from normal decoders to SPDIF/HDMI pass-through for DTS, Dolby and related codecs.

In the past, VLC could only restart the filters, not the decoders, so our Dolby and DTS decoders were actually filters. This was finally changed and now decoders are decoders.

For those who don't understand what all this means, it means that it will help us support more formats for pass-through over HDMI, like DolbyDigital+ or DTS-HD.

Modules

We've fixed the green line that appears only on AMD GPUs on Windows. This is scheduled for the next Windows update.

I've implemented the support for browsing FTP remote directories, so that it behaves similarly to SFTP or SMB.

On Windows, we've added the support for hardware decoding of 10bits HEVC , using DxVA and D3D11.

We also pushed improvements to the prefetcher module and to our TTML support; and we've fixed issues for DVD menus, SAT>IP protocol and HLS protocol.

Finally, please note that the license of the UPnP module was switched from GPL to LGPL.

Android

On Android, we've fixed a few issues related to old devices, and we've improved the libVLC Java bindings to support statistics.

WinRT

Last week on WinRT, we've removed all the code that was focusing on older versions of Windows.

The codebase now support only Windows 10 Universal with its Anniversary Edition version.

That's all for this week!

Thanks for the support and see you soon!



Last weeks in VideoLAN - 50

50th VideoLAN report

So, after a few crazy weeks, I was taken a bit by RealLife©®, and we've had 3 weeks without report. And this one is late. :)

Therefore, here is a new report about the VLC and VideoLAN communities, covering the last 3 weeks!

The report will be a bit more summarized that usual, and more dense in information, for obvious reasons. :)

Features

VLC

We've added support for codecs with colors in 12bit-depth, in YUV 4:2:0, 4:2:2 and 4:4:4. Of course, nothing can display that yet, but it can happen in some HEVC samples. It will be dithered down before displaying.

The Windows users will be happy, because we're reintroducing the MIDI support, using a new library called FluidLite, in order to replace FluidSynth.

A new protocol to control and distribute satellite signals on a LAN called SAT>IP was implemented in a new access module.

There was a lot of work and rework on our adaptive support, notably to change timings and drain, but also to start supporting HLS using mp4 fragments.

Some work on URL and URI was done to support more cases and improve test coverage. 2 new functions called vlc_uri_resolve() and vlc_uri_compose() were introduced.
At the same time, modifications on the HTTP redirections were merged.

On Windows, we merged the VP9 hardware decoding, using the DxVA APIs.
This code requires very recent video cards to be usable.

Finally, an important work was done to merge the access and stream-filter behavior and semantics. The 2 type of modules still exist, but a large part of the code is now common.
This allows now block-based stream filters.

To achieve this, we now have introduced the vlc_stream_Eof(), vlc_stream_ReadBlock() and vlc_stream_ReadPartial() functions.

Finally, we added support for MP4 chapters in Unicode, and we fixed some Qt sizing issues with Qt5, a DLL loading potential security issue for Win32, MP4 subtitles size, a WMV integer overflow, a crash in smem, the Qt right-click menu on the playlist, SFTP browsing, and the audio fingerprinter. We also improved the HTTP/2 stack, our TS demuxer when dealing with scrambled content, and a few other minor things I forgot.

Android

On Android, we've pushed 2.0.3, 2.0.4 and 2.0.5 to fix the most important issues and regressions reported.

However, we also added a few features notably:

  • Support for HTTP proxies,
  • Support for HTTPS self-signed certificates,
  • Subtitles style modification in preferences,
  • Improvements for SMB browsing,
  • Support for more ARMv8 devices.

And we also added, in the main branch, some modifications about preferences, and adding new ones.

iOS

The iOS buildsystem was modified to support full cocoapod building, so you can compile just the application, without compiling VLC and libVLC.

This important change introduced quite a bit of cleaning of the code and of the project. :D

WinRT

On WinRT, we've prepared a MediaCenter Mode for the Xbox 1.

We fixed numerous interface issues and crashes, that were reported in 2.0.1.

A few fixes where pushed also to address issues happening with specific themes or specific resolutions in responsive mode.

That's all for those weeks! There is probably a bit more I forgot about, but you should have the important parts.

See you soon!



Last weeks in VideoLAN - 49

49th VideoLAN report

So, after two busy weeks, you can get a new weekly report about the VLC and VideoLAN communities!

Releases

Android

10 days ago, we released VLC for Android 2.0.

After a long period of development, we're finally at a release that supports more features than the old 0.9.x versions and the 1.7.x versions.

Video List

UWP

And last week, we released the new VLC for Windows 10, numbered 2.0 too.

It is a continuation of the work we did for WinRT, the kickstarter, focused on Windows 8.1, Windows Phone 8.1 and Windows RT.

The new application should supersede the old one.

Black.png

Features

VLC

In the last 2 weeks, we improved the ChromeCast support, notably to work on transmitting the pause status and the title between the device and VLC, and we also changed the interface to scan for devices, since it was a bit confusing.

We added support for some uncompressed video format inside MKV, for the AlbumArtist meta-tag inside mp4 and we now support more MicroDVD subtitles styles.

Our new Kwallet module was transitioned from using libKwallet to DBus. This will be better to support both Qt4 and Qt5 applications with libVLC, because those versions are not ABI compatible.

The core gained a new stream FIFO API, with functions like vlc_stream_fifo_New, vlc_stream_fifo_Queue, vlc_stream_fifo_Write and vlc_stream_fifo_Close.
This change, in addition to the new chained_demux implementation in the core, removes the need for stream_Demux (now removed).

We also improved the security when loading of DLLs on Windows.

And for Android, AudioTrack DTS pass-through was implemented.

Finally, numerous fixes were pushed, notably for Direct3D11, our contribs, some in the core, youtube playback regressions, the Mac OS interface, crashes for MMDevice device, and for the MediaCodec decoders. And more that I forget...

Android

As I said, we released 2.0, and we also pushed 2.0.1 and 2.0.2 to fix the most important crashes reported.

WinRT

Same, we released 2.0, the first beta version of the UWP application. Fixup releases are coming soon!

iOS

On iOS, we pushed the promised update and we had a few refactoring, notably on the network login view.

libbluray

The libbluray code was modified to support 8.3 filenames, like in AVCHD directories we see in camcorders. This is the first step for full AVCHD support in VLC :)

That's all for those weeks! Not too bad :)

See you soon!



Announcing VLC for UWP 2.0 beta

VLC for Windows 10 beta

If you follow this blog, after a long development period (and a lot of issues), VideoLAN is finally releasing the beta of VLC for Windows 10, numbered 2.0.0.

This beta is the first version targeting Windows 10 and running on the Universal Windows Platform, aka UWP.

Features

The Windows 10 application has all the features available on iOS and Android and a few more.

Like the classic VLC, it supports a very large number of formats, but it also has a medialibrary triaging audio and video media, a full player with subtitles, audio/video synchronisation, an audio mini-player and a network shares browser! We also support Cortana, Live Tiles, Pining and Continuum!

The only important missing feature is DVD/Bluray playback and TV tuners that are not yet possible through the UWP APIs.

And of course, it's completely open source, available under the GPLv2.0 license!

You should try it now!

Video Library

We have a medialibrary, with video management:

VideoList.small.png

and a video player with subtitles, subtitles download, chapters, audio/video sync:

VideoPlayback.small.png

We even support a PiP mode to browse your library while playing a video:

PiPView.small.png

Audio Library

We have, of course, audio management, sorted by albums,

AlbumList.small.png

artists,

ArtistsView.small.png

and you can get detailed information about artists.

Artist Biography

Dark Mode

If you live in a cave, you might prefer our Dark Theme:

Black.png

The accent color is, of course, modifiable and it will change the VLC cone color too!

Network

We support DLNA/UPnP, Windows Shares, FTP(S), SFTP, NFS protocols to discover and browse your local servers or NAS.

NetworkBrowsing.small.png

Windows 10

We support some Windows 10 specific features, like Cortana (supported in English and French), Live Tiles, Artists and Album pining to the start menu, Drag & Drop, and Continuum, if you have a Lumia 950 or Lumia 950XL

Under the hood, we use some technologies exclusive to Windows 10, like some DirectX 11.1 features for video and low-latency audio. This should give you enhanced battery life and allow smooth 4K playback.

Platforms supported

This release works now on:

  • Windows 10 desktop and tablets,
  • Windows 10 mobile,

but also, when a few remaining issues are fixed:

  • Xbox one,
  • Surface Hub,
  • Hololens.

And, in a few weeks, we will update the application to also support:

  • Windows 8.1,
  • Windows RT 8.1,
  • Windows Phone 8.1.

Important remarks

NotaBene 0: This application is NOT replacing the desktop application.

NotaBene 1: This application is a new entry on the store compared to the 2 WinRT applications, because Microsoft could not offer a simple upgrade path.

NotaBene 2: Please report bugs!

NotaBene 3: the Xbox one version should be out this summer, when the store is open to 3rd party UWP applications; the Windows 8.1/Windows Phone 8.1 version should come during the next month, if all goes as expected.

Here is a photo of the application running on the Xbox 1:

XBox.jpg

And a gif on the Hololens:

Windows10Holo.gif

You should try it now!



Announcing VLC for Android 2.0

VLC for Android 2.0

After a long development period, VideoLAN is finally releasing VLC for Android 2.0.
Our last major release was 1.7.0, more than 6 months ago!

VLC for Android 2.0 is a major update to VLC for Android, that adds numerous features, notably:
support for new releases of Android, network shares browsing and playback, video playlists, subtitles downloader, pop-up video view and support for multiwindows, an optional history panel, favorite network shares and URLs, and a merge between the Android TV and Android packages.

We also offer faster decoding, using our new asynchronous hardware decoder and we've updated most of our codecs and formats support.

Video Player

Download it now!

Features

So here is an overview of the new features.

Permissions and Android N

The first good news is that we have decreased the number of dangerous permissions that VLC was using. The only permission that is now considered as dangerous is the access to media files, which is expected for a media player.

On top of that, we support the Android N runtime permissions:

Runtime Permissions

And we still support Android 2.2!

Network Browsing

One of the most requested features, since the creation of the application, was the playback of network shares and local servers in VLC. It's mostly done :)

We support DLNA/UPnP, Windows Shares, FTP(S), SFTP, NFS protocols to discover and browse your local servers or your NAS. And we also detect associated subtitles over the network!

Network Browsing

Subtitles Download

If you want to download subtitles directly from OpenSubtitles, without going to the website, it's now directly integrated in the application:

Download subtitles

Video Playlists

As we've done for audio, we support basic video playlists.

Video Playlists

Pop-up

Another often requested feature, was the popup-video view, mostly for tablets.
It's now implemented and we do support Samsung MultiWindow and LG Dual Window extensions to allow 2 applications on the same screen.

Popup Video Window

History

The history feature that was present in the 0.9.x days is also back, but can be disabled.

You can see now all the features in our menu!

Sidebar Menu

Advanced Options

We've improved the options of the video player and we simplified the landscape/portrait modes

Video Advanced options

TV

The Android TV interface has been improved and ​was merged to​ the same package as the normal Android one."

Therefore, if your device form-factor is more suited to the TV look or you just prefer it, you can select it in the preferences.

Here is the audio player on the TV:

Audio Player for Android TV

RTL and CTL

Finally, we've done a lot of work to support Right-To-Left and Complex Text Layout subtitles. As you can see here with Malayalam:

Android CTL

We also improved the interface to support RTL layouts.

Thanks

Thanks a lot for the support, hoping that you will love this release. :)

Download it now!

Video List



This week in VideoLAN - 48

48th VideoLAN report

Another week passes by and here is a new weekly report about the VLC and VideoLAN communities!

Features

VLC

Like our previous week, most of the work was focused on stabilizing features and bug fixing. Therefore, the changelog will be quite short too. :D

A new type of module was introduced, named demux filter; they are used to filter or intercept demuxer controls commands and demuxing.
The first use case of this type of module is the ChromeCast demux filter, to show the correct playback time when using the ChromeCast, that we merged this week too.

Some work was done to support the next version of macOS: Sierra. This notably concerns the input capture plugin.
Also, on MacOS X, the interface for renderers was merged.

The 2 SPDIF modules, ac3 and dts have been merged into a single one.

In the core, we've seen fixes for UTF-8 support, media discoverers API, libVLC parsing calls memleaks, tests, buildsystem and Windows threads.

Android

On Android, we've done the same kind of bugfixing as last week, and we have released 2.0.0 RC4 and pushed it on the store.

Not many issues are remaining for the release, now.

WinRT/UWP

On WinRT, we are also in the bugfixing phase, with a lot of commits to make sure the application does not crash too much.

Indeed, we're closing to an open beta release, but the number of crashes was still too high, especially when using the application for a long time.

We also fixed the background audio support on Windows 10 Mobile phones; and reworked the thumbnailer.

The application should be opened in beta to everyone soon.

iOS

The iOS application got a few fixes, notably for remote playlists and XDCAM support and we're pushing an update named 2.7.8 this week.

That's it for this week, stay tuned!



This week in VideoLAN - 47

47th VideoLAN report

A new week, a new weekly report about the VLC and VideoLAN communities!

Features

VLC

After an intense previous week, most of the work was focused on stabilizing features and bug fixing. Therefore, the changelog will be quite short. :D

In the core, we pushed multiple fixes for preparsing and input slaves and we added tests for those features. We also fixed issues in the media discoverer code.

On the modules side, we notably had fixes in the bluray, the oss, the adaptive streaming, the OS X video output and the UPnP modules.

Finally, we added an OpenGL provider for Windows, in order to add back the support for OpenGL visualisations, like projectM.

Android

Same story on Android, we focused on fixing issues, to prepare the release 2.0.

We pushed RC2 and RC3 on the store to fix crashes reported by the first set of devices where the application was pushed.

We redesigned a bit the speed setting, as requested in our Google+ group.

WinRT

On WinRT, the focus was also on bug fixing and preparing a release. The more important bugs were on Cortana integration and metadata management.

However, we also activated the downloading of subtitles from Internet, notably the OpenSubtitles website.

We also improved the browsing of local network servers, similar to what we did to the Android port.

That's it for this week, stay tuned!



This week in VideoLAN - 46

46th VideoLAN report

A new week, a new weekly report about the VLC and VideoLAN communities!

Vienna Meeting

This week-end was the Q2 meeting of the VideoLAN asso, hosted in Vienna, by PSPDFKit.

VideoLAN in Vienna

We gathered to fix pending issues for VLC 3.0, and we worked on the mobile apps and the VideoLAN server infrastructure. It was a great week-end!

Features

VLC

During the week-end, we released VLC 2.2.4, to fix 2 security issues, one in VLC, one in a 3rd party library! It is already released and pushed to our users.

Core and libVLC

The input core was modified to support network slaves, aka external subtitles or audio tracks, over the network. In the past, it was only working for local subtitles.
The libVLC API added for this is called libvlc_media_player_add_slave.

The core threading code was improved for recent versions of Windows: it can use futeces and generic semaphore, starting from Windows 8.

We also added the libvlc_media_player_(get|set)_role calls for libVLC, to set the media role (notification, video, audio) that are reflected to the audio output mixer. This is notably used for the PulseAudio output.

Finally, the preparser was reworked to allow interruption and have a default timeout. Applications can also now cancel their preparsing requests with libvlc_MetadataCancel.

Modules

The Qt interface received the first renderers selection dialog. You should be able to detect your ChromeCast from this interface, and stream to it. :)

The UPnP module was improved to support more type of servers, more metadata per item and the code was heavily cleaned. (The library we use is still very bad though).

The OS X interface got new HUD panels and widgets for the dark mode.

Finally, we added the first AppStream Metadata for Linux distributions, a few Qt minor changes, support for GoPro highlights chapters in MP4 and some OS X interface fixes.

Android

Nothing very exciting on Android, just the beta 1.9.13, 2.0.0-rc1 and 2.0.0-rc2 releases, pushed to the store.

For 1.9.13, we mostly focused on activating subtitles over the network, and improving the support for subtitles.

2.0.0-rc1 was mostly focused on fixing the UPnP support and 2.0.0-rc2 was minor fixes for bugs reported by several beta testers. :)

WinRT

On WinRT, we reimplemented the playlists management, and the support for playlists in the PlaybackService.

The Search page, that was hidden, is now visible again, and we support favorites for streams and servers, like the Android version.

The notifications and toasts were reworked to be less intrusive, and Cortana support was improved.

Finally, the new equalizer got a facelift.

And of course, numerous bugs were fixed, so we can have a proper release soon!

That's already quite a bit for last week, see you next!



This week in VideoLAN - 45

45th VideoLAN report

After a couple of very busy weeks, we're back on a normal schedule. Therefore, here is the weekly report about the VLC and VideoLAN communities!

Features

VLC

We started the week by adding the support for MPEG-2 and VC-1 hardware decoders on Android in the mediacodec module.
We also fixed some MPEG-4 regressions on this module.

Hugo fixed a few issues on the UPnP module, and mostly added the support for Windows Media Sharing servers, in this module.
We also added support for subtitles over UPnP, using the work done in the core the previous week.

The Matroska demuxer got a few fixes for some regressions, but mostly implemented the fast-seek option, that is imprecise, but faster than the normal seek. This is useful when computing thumbnails, for example.

Some changes on the libVLC parsing events were done, to simplify the handling in client applications. If you were using the not-stable-yet libVLC 3.0, beware!

Near the end of the week, the core got some important changes on threads manipulation, with the introduction of vlc_thread_self() and vlc_thread_id(). The usage of futeces was introduced in the core: see Rémi's post about it.

The MMDevice audio output on Windows now supports device change events.

The Windows 64bits build will now have high-entropy ASLR activated, which should reduce the possibility of exploitation of security issues.

On Windows, we also fixed the raising issue of the Qt tooltip that we had with Qt5, the 2.2.3 DirectDraw regression and a small D3D improvement when handling large pictures.

Finally, a few H264 annex-B parsing issues were fixed and the video headers were modified to support, in the future, VR videos (nothing working yet).

Android

On the Android side, we're going on fixing issues for the 2.0.0 release.

This week, we:

  • improved the subtitles downloader, to activate it from within the player, and for any video,
  • improved the interface for scanning, the browsing and the video player animations,
  • improved the audio player on Android TV,
  • improved the speed of MKV thumbnails,
  • fixed a few remaining small issues.

All this was pushed in the update 1.9.12 on the play store. Hopefully, the 2.0.0 release will come this week. :)

WinRT / UWP

As last week, the WinRT port has been very busy again, with almost 100 commits.

As for Android, we're focusing on preparing the release, and fixing the biggest bugs people have reported.

On the libVLC backend, we fixed a few performance issues, we added more codecs support, and we improved the UPnP and SMB browsing.

On the interface side, we improved the thumbnailing and parsing process, we fixed numerous bugs that happened when resizing (and Windows 10 Mobile look) and we fixed a few crashes.

We also improved the settings and activated the access to the equalizer.

Hopefully, we'll be able to open the beta to the public soon.

That's all for this week! See you next!



These weeks in VideoLAN - 44

44th VideoLAN weekly report

Once again, unfortunately, the report skipped a week :(

But this report, the 44th report, is quite important for 2 reasons:

  • it's been over one year I've started those reports, since the first one was published on May 10th, last year;
  • and this post is the 300th blogpost on this very blog!

This also mean I skipped 8 weekly reports, and did dual-reports for those weeks, which is not too bad, compared to what I hoped to achieve...

So, without waiting any further, here is the report about what happened in the last 2 weeks in the VideoLAN and VLC development community! It was a couple of busy weeks!

Features and changes

VLC

The week started by some work on the supported MIME-types for the .desktop file for VLC on Linux, by a Debian developer, which cleaned and merged all our different mimetypes support correctly.

Then, a very large patchset for seeking in the MKV (matroska) files was merged. It rewrites most of the seeking support and builds an index when playing the file. This new code fixes quite a few bugs we had on the matroska support.

We added support for subtitles over the network, with a set of functions named libvlc_media_slaves_add, libvlc_media_slaves_get (and related).
At the same time, we now auto-detect subtitles in networking shares; this is currently tested on SMB and UPnP.

We've had improvements on the Qt main window resizing, and on the playlist model.

The work on DVB scan was continued, notably to support device limits.

Another batch for ChromeCast was merged, mostly focusing on seeking and stopping the stream. We're still missing a few bits, though :)

And finally, we improved again our adaptive streaming support, our Blurays menus support, added support for vorbis and flac inside MP4, improved WMV metadata and prepared support for streaming output on Android.

VLC core for WinRT

The VLC engine has seen many changes for WinRT, in the last few weeks, mostly to merge the existing patches we had pending.

The 3rd party libraries (contribs) were updated and patched to correctly compile for the WinRT/UWP version.
At the same time, we merged numerous patches for the core, the modules and the buildsystem.

We improved quite a bit the Direct3D11 output, both for desktop and the WinRT version. We notably fixed the green line issue and added support for more hardware decoders on Windows Phone/RT.
We also accelerated the chroma conversions when using hardware decoding.

Finally, the WinRT audio module now supports volume changes. This was forbidden in Windows 8 apps, but is allowed in Windows 10.

Android

As we're approaching the 2.0.0 release, the Android port was quite calm.

We pushed 2 beta releases on the store: 1.9.10 and 1.9.11 to fix minor issues, mostly to fix subtitles regression and improve the thumbnails look.

We then added support for the network subtitles and subtitles downloading for network media.

This will be in the next release, that should come soon.

iOS

We released VLC 2.7.7 for iOS and 1.0.6 for AppleTV, to fix minor issues, update the software decoders, and activate AC3 and E-AC3 decoding on 64bit device and the Apple TV.

Since then, there were fixes for onedrive support, for subtitles over FTP and for SPDIF pass-through support.

WinRT / UWP

The WinRT port was extremely busy, these past two weeks.

Indeed, we are preparing a beta version named 1.9.0, that would prepare for the first true UWP version, that will be named 2.0.0.

We've added most of the features that you usually see on the Android and iOS versions of VLC, notably UPnP and network shares browsing, support for HTTPS and adaptive streaming, better hardware decoding, dialogs support, as many codecs as the desktop version, and so on.
Moreover, the engine use the runtime 12.0_app instead of the 11.0 one we used on the WinRT version.

On the UI side, we now support correctly Windows 10 integration, with Cortana, drag and drop, tablet mode and a lot of fixes so that the application looks responsive enough on all the devices, from mobile to the Xbox 1. We polished this UI and fixed a few important regressions, notably on the playback and the thumbnailer.

The application is currently in private beta mode, so that the biggest issues are fixed before opening it up. :)

libbluray

We released a new version of libbluray, numbered 0.9.3

This release:

  • adds a bd_open_files() function, deprecating old global file system hooks;
  • adds flags for on-disc menu support to DISC_INFO,
  • improves Java building and Linux integration
  • enable UDF/ISO support by default,
  • improves BDJ_EVENT_CHAPTER, main title detection,
  • improve BD-J compability, and fixes numerous bugs on BD-J,
  • improves libaacs and libmmbd detection.
  • fixes a large number of bugs too long to describe here :)

That's all for those weeks! See you soon!



This week in VideoLAN - 43

43rd VideoLAN weekly reports

After my 42nd report last week, and some nice encouragements, here is another weekly report about VideoLAN and VLC development.

I was far from a computer last week, so here are 2 weeks in one.

Features

VLC

Renderers

The previous week, we started to introduce the concept of renderers in VLC.
Those are distant devices displaying audio and/or video, instead of playing it locally. The usual device people know are ChromeCasts, UPnP/DLNA renderers, AirPlay, WiDi or DIAL devices.

A new type of VLC module was introduced: renderer discovery. Like Service Discovery, they can find those renderers devices on the network, using one of the discovery protocols.

The renderer discovery capability was implemented in our mDNS module.

The Chromecast code was heavily reworked at the same time, and after 4/5 redesigns, we're almost happy with the code :)

The interface is still missing, but it should come soon!

Other features

The S/PDIF passthrough was implemented in the WASAPI module for Windows. This is important, as this module will be the default, starting in 3.0, for most Windows users.

The work on DVB scanning is still going on. We had numerous patches this week on this topic.

Our mDNS module now supports IPv6 and our MKV demuxer started to get a heavy lifting.

We also had fixes for the TS demuxer and muxer, the libVLC headers, the VideoToolbox decoder, Hurd compilation and improvements on the Direct3D11 video output!

Android

The Android port got 2 more beta releases for 2.0.0: 1.9.9 and 1.9.10.

We added numerous fixes, notably in the popup video view, the binder, keyboard and pad management, title display and the video view.

And of course, improvements for the subtitles download feature.

Hopefully, we will push the release soon.

WinRT

If you follow Thomas on Twitter, you will know that the WinRT port has been quite busy lately.

Cortana is now integrated in the application, so you can ask VLC to launch an album or the last video viewed.

Drag and Drop should now work almost everywhere, and you can drop just a subtitle on a playing video, if you want.

The Stream and the File dialogs have been relifted; the Settings dialog in the same way.

The mini-player and the command bar controller have been merged, together, if you have a Windows Preview build.

On the backend, some work was done on the thumbnailer, and the music and video libraries have been merged into one single library.

Some video information is now pulled from TheMovieDB.

Finally, some work was done to adapt the interface to Windows 10 Mobile.

Soon a release? :)

iOS/tvOS

On AppleTV, search was implemented for local servers browsing.

And we also got support for repeat on the AppleTV application.

We should get updates on those 2 applications soon, on the App Store.

That's all for those 2 weeks, see you soon!



This week in VideoLAN - 42

42nd week of VideoLAN reports

After a very busy week last week, here is another weekly report about VideoLAN and VLC development.

42

I'm surprised we're already at 42 and I haven't stopped doing it!

Sometimes, I'm not sure it's really useful, since I don't see many comments...

But lately, some people who don't comment on this blog told me, in real life, that I should continue, so here is a new report.

Features

VLC

Once again, we started the week with fixes for the WinRT/UWP build.

We got numerous small fixes for the Qt interface, notably for resizing issues of the main interface and in the preferences.

Marvin improved the Mac OS interface status-bar icon look and behavior.

François continued his work on the DVB scanning, notably splitting in a better way the DVB access from the TS demuxer module, which is a cleaner design.

VLC has also now gained the ability to auto-rotate the JPEG photos using the EXIF data.

Finally, a vlc_close function was introduced to be able to use posix_close instead of close when available.

Android

This week, we published version 1.9.8 of VLC for Android, adding notably subtitles download for local files, and media information on the Android TV version.
In this version, we pushed numerous fixes too, notably for repeat, metadata, resuming files and popup video support.

Then, the bindings for the keyboard and remote was changed too: left/right arrows seek, down arrow shows the controller, up arrow show the advanced options and center play/pause.

We also fixed numerous issues with RTL languages and layouts; and improved the code with more databinding.

iOS

On Tuesday, we pushed VLC 2.7.5 for iOS and VLC 1.0.4 for tvOS. Those release are mostly targeting improvements in SMB shares browsing.

Since then, we've readied VLC 2.7.6/1.0.5, focusing on improving the shares browsing, Dropbox, TouchID and the video filters.

WinRT

On WinRT, the week was quite busy.

We improved the speed and reliability of the libVLC core, notably so that we can use more features of the UWP platform and so we can have a stable 64bit build.

We also improved the interface, based on people's feedback on our screenshots, notably for the settings and the global navigation.

The video player was also re-themed and you can have PiP when browsing the application, if a video is still playing.

That's quite a bit for this week! Thanks a lot and see you next!



page 1 of 51