 Hello. Today we're going to talk about VLC in the last place called the VLC 3.0. I'm going to speak about a few stuff about VLC if this screen actually works. It doesn't. Okay, give me a second. Yes? Okay. So my name is Somatis Kempf. I'm the president of the Videran non-profit organization. I'm one of the oldest still alive and working VLC developers. The older one is at the back of this room. I'm a French geek. I've been working on computers since a long time. And I've been doing a lot of stuff on VLC. Okay. So Videran is an organization whose goal is that everyone use these codes on their laptops even if it makes no sense because it has no sense with video. It's a very long story that started a long time ago at the École Centrale Paris which is the university south of France, south of Paris, 30 km south of Paris. And the story was that students wanted to have a faster network to play video games in the 1990s. And this campus that you can see is actually a private campus for a public university which is extremely unusual for France. And so the French government couldn't pay for the students network because it was on the private campus. So in order to play video games, of course, do, they wanted to have a fast network because their network they had was token ring. I don't know if there are some oldies in the room who knows what token ring is but it's extremely slow and very lot of latency. It's fine when you're using mugs and pine to read emails and networking but we want to shoot people that do while it's slow. And when you have high latency at FPS, you die. So they wanted a new network for that and of course the university couldn't pay because it was a public university on a private campus. So they went to see the people who actually built the campus in the 1960s and it's a big company, it's like a group week, which is basically building half of the buildings in France and they had also a TV station. And I said, well, we don't understand anything you're talking to us about networking but the TV station actually cares because the future of television is satellite. So only years later it's easy to laugh, but yeah, it's not. And at that time in 1994 you had like big satellite dishes that cost thousands of dollars and decoders cost also the same, right? And when you have two thousand students on the campus you are not going to buy two thousand decoders and two thousand satellite dish. I know some people love to have that on buildings where everyone has a satellite dish but it's horrible and very expensive. So the idea was to put just one big satellite dish on top of one of the buildings and then stream it directly on the network. Okay, today, 10 years after YouTube, it's obvious, but in 1994 the best computer is a Pentium 60 and 4886 DX. So doing MPEG 2 decoding of SD at real time was like science fiction. But of course it didn't know that. So they actually did it. It took them two years to get something, a prototype. The prototype was great. It was working on a huge machine with 64 megabytes of RAM. At that time it was huge. And of course the demo was crashing after 45 seconds because it was leaking memory but at that point the demo stopped at 32 seconds and everyone was happy. So that project was called Project Network 2000. There was absolutely nothing open source. But after the project they said, well, maybe other people will care about that one. And they started a new project called Video LAN because it's a video on a local network. Amazing names, as you know. And that's how the Video LAN project started. It took them three years to manage to get GPL because the university wanted to sell this for whatever reason. I think the MIT had MPEG 1 decoders that they managed to sell. So that was the idea. But in 2001 the project Video LAN gets open source and one of the project Video LAN clients became VLC is a popular project. It's important to know that there are other projects on Video LAN that are not only VLC. So the code, right? Completely stupid icon for a media player. It has actually been no reason and no nothing related to video. But it's absolutely genius, right? Because who in their right mind would use that? No one. So it's so distinctive on your laptop, on your computer, on your phone that you know it. And like 25% of the traffic that comes to a Video LAN.org website is people googling on code player. Like no idea where VLC, code player. When I go anywhere in India, in the middle of nowhere, I say, yeah, you know, I work on VLC. No, VLC, no, no, no. Yeah, yeah, the code that plays video. Oh yeah, yeah, that, I'm using that forever. Of course, it's a student joke that started. But we cannot change it, right? It's so distinctive. Every week we have someone complaining back. It's like, oh, software is not finished. It's bad. Yeah, software is never finished until all your users are done. But so VLC got popular because it was actually a software able to play everything. A long time ago, when I was young, on Windows you had to download correct backs. So you downloaded a video player. I was just doing the video player. You did the correct back because you wanted to play something else. And every two or three weeks there was a new correct, a new exit version, a new Divics version. And so you downloaded the correct back. It still didn't work. So you downloaded another correct back that was fighting with the first correct back. And now you had no video at all, even the video that you had in the past. And of course that was a big mess. Video LAN and VLC is a cross-platform project. So correct backs means nothing. So they took the idea of having everything golden inside the player and put that on Windows. And that was one of the reasons why VLC got popular. The second reason is that VLC was the only way to give it on macOS for a long time. And finally, and of course none of you ever did that, but at that point in 2001, 3, 5, when you were downloading stuff on Emule, Idonkey, DC, or whatever other, it had to be a software that you of course never did because that's very bad. So don't do that. It took, if you had like a 56k connection, it took you one day to download the Divix. And after one day, you realize that well, either the file is corrupted or the James Bond movie you were trying to download was actually a Disney movie or the other way around, right? So you were frustrated. But as VLC was a client of the networking, VLC doesn't care. VLC tried to play it. Well, of course the metadata are not downloaded yet, so technically you cannot play it. But let's try. And so VLC is a very, very resilient player compared to a lot of others because it was done on a network, as a network. And on a network, you can't expect that all the data are coming in the right way. Of course, if you're only boss HTTP people, you expect all the data, but normally you don't. So that was one of the reasons why VLC, and it's like chose. Like when you go online, there are people who tell you that if a file is not playing in VLC, the file is broken, well, maybe just there is a bug in VLC, you know? So we spent a lot of time to actually be sure that we play everything. And like people actually make like man's and jokes with like, oh, VLC could even play VHS if you put the VHS in the DVD drive. No, it doesn't. Except if you're like, actually you can play VHS with VLC if you have like a device, but anyway. So, and VLC is popular because it runs everywhere. And when I mean everywhere, I mean, of course the usual Windows Linux Mac, the usual BSDs and Solaris, but also Windows Phone, iOS, Android, and the last version still run on OS 2. Yeah, there are probably like five users of OS 2 in the world and one of them is actually coding on VLC. But it's quite interesting because the reason why we can do that and VLC is extremely portable is because it was correctly designed. It's very portable because there is a very small core and then lots of modules and depending on your platform you add more or less modules. So when you move to a new platform you basically just have a new way to output audio, a way to output video and a way to have a kind of UI and then you've got everything that we've supported all the formats. So, VLC is popular. To give you numbers, we are talking about around one million downloads per day on our website. So that's outside of the course Linux distribution that's outside people who love to download spyware with download.com or CNET or all those kind of stuff. That's when the Intel VLC then starts. But that gives you an idea like already on our website one million per day. Estimation is four hundred fifty, five hundred million users on all platforms. This is very difficult because we don't have telemetry or spying that everyone likes to do even open source software today. But it's more than three hundred three hundred fifty on a desktop and one hundred on mobile. Since we started counting it's around three billion. So just the last thing about video LAN is a community for a long time as I said it was developed by students who were like just in a university, master degree and now video LAN is a non-profit organization that I created in 2008 so way after the project was started. And now the video LAN project like all built-in software that are free software. So for example video LAN dev days that we do every year if you see there is around 80 people but maybe like one third or one fourth are actually working on VLC and the others are working on ffmpeg x264 x264 or other competing projects with VLC but that's fine because we all work together and we benefit from a lot of their software. But it's important to understand that video LAN non-profit does not employ anyone and that's quite important because like to have such a large software with so many users and so many platforms without employees from the main non-profit is I think extremely rare. So now I'm going to actually talk about VLC3. So VLC3 is the last release that we did. It was out not so long ago. So the previous version was called VLC2.2 Weatherworks. You know this very comfy which from this web because most of our code names are from this web. It was out in February 2015, sorry three years ago we had like a .0 and then a quick update 2.2.1. It's interesting because this 2.2.1 was downloading more than 200 million downloads on our website and that's interesting to get the average user base because as if you counted people say well people did updates and so on on a single version we had 200 million. It was quite stable, not many regressions, not many people complained so it should be good is probably one of the best release ever since 086 the famous one. So 3.0 another very veterinary, a very stern person again. We are talking around 20,000 commits, 17,000 commits on the core, 3,000 on the other way the same on iOS and Windows. It took us quite a bit of time to be honest but the reason why is that we wanted to do the good things and also because 2.2 was quite stable and people were quite happy it was quite easy to keep it out. One of the focus was to actually do conversion between the desktop and the mobile versions and I think we fixed so many bugs. So what's the highlight? We have hardware decoding on all platforms and by default and that took us a long time because so many people have broken drivers so many people don't have hardware acceleration try to get hardware acceleration on the end and have fun. But for example on Samsung Galaxy Note 8 we can have 8K decoding on the last Intel chip on Windows we got 4K and 8K decoding and that's on very small devices. So we support now by default hardware decoding and zero copy. So the problem is that as you see memcpy is murder. It's actually a job from one of the old VLC contributors but it's important to know that now that we're talking about 4K video, 60fps, 8K, 10 bits we're talking about gigabits per second. So if you memcpy a frame you basically kill your old preference and on the desktop it's almost OK on the mobile. So the big focus of 3.0 was to get that from the mobile to VLC. We support 360 video, 3D audio so spatial audio we have now support for network browsing support 10 bits HDR and so many stuff. We also spend a lot of time to support like old formats a lot of quick time files from the 1990s that were never played by VLC but fixed and so many other small issues that we spent a lot of time so people can remember that VLC plays absolutely everything that's what we're doing. Last thing we support Chromecast so many people ask us for that it was quite difficult because the Chromecast architecture is not done for what we do. Platforms, we support a lot of platforms more we support Windows from Xp to 10 Mac to 10.7 to the last Android 2.3 I think we are the last one to support that and iOS 7 also. So as I said, big focus is hardware decoding and we did it on all the platforms so like 3D 9 for Windows Vista, Direct 3D 11 for Windows 10, Media Connect for Android VDPIU for some Linux users VAPI for the others ML for the others again for Raspberry Pi and all that is zero copy and zero copy display and also we now output almost everything in OpenGL so we can do transformations like HDR shaders and transformation in 3D so you can play a few videos. So as I said, now we can host directly networking shares so NFS, SMB, DLNA, UPnP we can also support all the zip and half files so now we can support SRTs subtitled that are auto-detected when they are inside the zip inside the zip of a network we spend a lot of time to fix adaptive streaming so that you can have a video that can be played on any networking condition which is quite important mostly for mobile and we spend a lot of time to get pro-raised menus to work and DVD over the network. One important thing is that we spend a lot of focus on having the libVLC interface so that you be improved. In the past, the API to get information based on the engine wasn't that good but now we actually use libVLC on Android and iOS and UWP so now we've been improving this API and now you could use libVLC to create your own media player without any problem. And we spend a lot of time doing the bindings for other languages if you don't like it. In 3.0 we have a new subtitle under in stack which is quite interesting because people think that rendering text is easy, actually it's not and usually you use someone else's stack to do that. You use GTK or Qt. But we can't use that because those are not available on Android or iOS and if you just use the OS rendering stack it's going to be different from one file to another and as subtitles get more and more complex it's difficult. So we have a new rendering layout based on Arbus that can actually render complex text layout from Southeast Asian and Indian text and can also support multiple fonts from multiple languages at the same time. Here you can see some Japanese next to some Korean and actually works and all this work from a subtitle rendering was actually done by a guy who is in the middle zone in Aleppo in Syria and who has only two hours of internet per day but said well what can I do and the problem we had is that almost none of the VRC developers are actually outside of Europe. So we have a lot of difficulty understanding what are the issues with complex text layout because we don't need that and someone from an Arabic country is actually able to see those issues. So he fixed that for the last years and so we have a very nice rendering of the title. Yes, VR as I said we support a lot of 360 videos equirectangular cubemap but we also support 3D audio up to third order. I think there is no other software that can render ambisonic to the third order for people. We've improved of course the UI for Android TV and Android, classic Android we bought it to Tizen even that no one cares anymore. And here is the Apple TV version of 3.0. So now that I've talked about 3.0 the question is what happens after because I mean what do we do now? One of the thing is actually finishing the VR integration VR is a mess there are so many headsets all of them are incompatible with each others we can't work on the different devices and different OSes so now that we can play any 360 and any video we need to display them so we're working on that it's already quite advanced and then you will be able to see actually 3D movies directly on your HMD or your phone if you have a Galaxy S or Samsung S and then we're going to work on VLC 4.0 Otto Tric Empire Photograph I believe refer to the whole Dsquared 45 books to know we're working on improving the video output architecture to be more efficient especially because most of the compositors on Windows and on links are going to change and so we want to be more efficient we're going to rewrite the playlist and the input in order to keep time stamp the whole chain so when you do conversions the video are going to be in better shape and we're going to change the interface and to have a kind of media library like we have on Android so one of the good things with input manager rewrite and please rewrite is that maybe we're finally going to be able to have gap less audio because now it's almost gap less but not really maybe you have 20 or 50 milliseconds of crop between two items which is not really good to be actually good for audio we need to have that then you're going to ask me why do you tell about audio well I don't but my users do the thing is that we've learned with a video on the project is that you don't fight your users even if you think that they are stupid they shouldn't do something the user is always right and also like I can't go and tell 20 million people don't do that so a lot of VLC usage around maybe 15 to 20% is audio playback and I'm just like no use something else they don't care so instead of fighting your users maybe they are right and you're wrong so actually fix it so we are improving the input to improve audio and same reason we are going to improve the media library because when you want to have audio you need a kind of media library like iTunes or something so we already have that on Android it used to be in Java we wrote that to C++ so that we can plot it on other platforms it's now ported already on iOS and on the desktop and then we are going to use that on the desktop to actually use VLC so maybe a new UI like the version we have on UWP which is the version we have on the Windows Store that looks a bit more like that maybe something else I don't know exactly but we are going to work on that finally we have two research projects that are quite interesting the first one is completely insane it's called VLC.js the idea is to compile all the C++ and see an assembly code from VLC to WebAssembly and running inside the web browser yes it sounds insane but the standard stack of media playback on HTML5 is extremely annoying and not working people do horrible stuff like HLS.js where they are demuxing HLS and TS inside JavaScript and then remixing that to MP4 and there is a big problem with the browsers is that they evolve all the time so today they support this kind of codex but what are they going to support next or in two years you don't know that one of the idea is to take the 15 years of knowledge of the video and project and move that to the web so you can watch DVDs directly or you won't can watch new codex and you can even extend because VLC as I said is a sort of module so you can add a new filter add a new codex directly inside your browser so yes it seems insane it is actually kind of working I can't do the demo because Firefox was updated and now it crashes but we have like now 720p H264 video directly running on Firefox the second big project is not insane but a bit more difficult it's hardening VLC VLC is basically one million lines of code but we depend on 70 to 60 library external libraries and a lot of them are parsers of decoders and demuxers and of course all of them are actually written in C so they are insecure and we are not going to fix all the bugs it's like impossible and we will never see one so instead of actually fixing the bug VLC is going to crash but let's try to make it that it's not important if it does so we are actually working on having a sandbox discussing on how to get a sandbox inside VLC usually what you now see is people to have like put the whole application inside a sandbox that's what you see with flatpacks and snap and so on but this doesn't work for VLC because I'm going to ask all the permissions right I need to have low level hardware access for video which means that I'm basically root I need to have this low level access to audio which means that I have access to your slash dev and so on so in the end you realize that I want all the permissions from the sandbox except the GPS and I'm sure I will find a reason to use the GPS in VLC but like this is bad so one of the idea is to actually not do that but put a sandbox inside VLC on all the stage of the video decoding pipeline yeah give me like two seconds and so to put directly those sandbox inside VLC and it's quite difficult because you need to move from one module to another around 25 250 megabits per second from one module to another but it's actually doable and so we are going to work on that thanks you have questions