<<

VideoLAN VLC media player introduction

Rémi Denis-Courmont (Реми Дёни-Курмон) Saint Petersburg, Russia 3rd November 2018

24/10/18 1 Disclaimer

The views expressed therein are solely those of the author in private capacity.

They do not represent the views of the any third party that the author may be affiliated with, including, but not limited to employer or client.

24/10/18 2 About me

● 2003: Joined VideoLAN (student at École Centrale ) ● 2006: Volunteer (graduation) ● 2007: Nokia phones ● Today - System engineer mobile division

Largest committer in VLC history ! 24/10/18 3 École Centrale Paris VIA Centrale Network

● 1989: TokenRing deployment – IBM ● 1996: Ethernet upgrade – streaming set as new goal – 3Com ● 2002: Gigabit upgrade – Proper support (IPTV!) – ExtremeNetworks

24/10/18 5 VideoLAN (in 2004)

24/10/18 6 VideoLAN history

● 1996: Started as university project ● 1998: Version control switch-over ● 2000: Open-source licensing ● 2008: Independent foundation

24/10/18 7 VideoLAN

700+ Volunteers

VLC The foundation

● Main developers and contributors ● Revenues: donations only – No direct income from advertising ● Costs – VideoLAN Developers' Days – Traveling – Infrastructure – Legal – Hardware

24/10/18 9 VideoLAN Devs Days

● Open-source multimedia projects – FFmpeg/ – KDE multimedia – VLC media player – DVBlast – Open Broadcast Encoder – …

24/10/18 10 Multiple projects

● VLC media player ● DVBlast, Multicat ● VLMA streaming manager ● VLC designer ● VLMC video editor ● iCast.io ● VLS stream server ● VLCS channel server

24/10/18 11 Software libraries

● libbluray & libaacs ● ● Dav1d (AV-1 decoding) ● (DTS) ● (“H.265” HEVC encoding) ● X264 (“H.264” AVC encoding) ● X262 (MPEG-2 Video encoding) ● libdvbpsi DVB parsing

24/10/18● libdvbcsa DVB encryption 12 VLC Media Player

24/10/18 13 VLC key milestones

1998 : (re)start 1999 : Linux version functional 2001 : Windows port 2003 : VLC streaming output (server) 2009 : Version 1.0 2011 : Lesser GPL switch-over 2012 : Version 2.0 and Android

24/10/18 14 .org

24/10/18 15 90 millions for VLC 3.0.x 2.3 billions in total Every 6th Mac In top 15 on Windows

Most popular French software VLC media player

VLC Architecture

Our motto...

Play Everything ! 24/10/18 18 Portability

24/10/18 19 VLC VLMC Applications

libvlc (~6,000 LoCs)

libvlccore (~60,000 LoCs)

Decoder lavc x264 Encoder

Demuxer MKV Muxer

Interface Video Audio Filters

Modules Modules Modules Modules 24/10/18 20 Data flow

Subtitles Text renderer

Video Access Demux Video filters Video output codec

Audio Audio filters Audio output codec

Codec Encoder Encoder

Muxer

Meta data Interfaces Stream

24/10/18 21 Data flow

Subtitles Text renderer codec

Video Access Demux Video filters Video output codec

Audio Audio filters Audio output codec

Codec Encoder Encoder

Muxer

Meta data Interfaces Stream

24/10/18 22 VLC inputs: access

● Files, directories ● Digital TV ● Network streams: – HTTP, IPTV, MMS, RTMP

24/10/18 23 Data flow

Subtitles Text renderer codec

Video Access Demux Video filters Video output codec

Audio Audio filters Audio output codec

Codec Encoder Encoder

Muxer

Meta data Interfaces Stream

24/10/18 24 VLC inputs: demux

● MPEG-PS, MPEG-TS ● ASF / WMA / WMV ● AVI ● / WebM ● MP4 / MOV ● OGG / OGM ● DV, NSV, FLV...

24/10/18 25 Data flow

Subtitles Text renderer codec

Video Access_demux Video filters Video output codec

Audio Audio filters Audio output codec

Codec Encoder Encoder

Muxer

Meta data Interfaces Stream

24/10/18 26 VLC inputs: access_demux

● Optical discs ● Video camera (webcam) ● Microphone ● Network streams: – RT(S)P – HTTP adaptive/segmented: ● HLS ● DASH...

24/10/18 27 Data flow

Subtitles Text renderer codec

Video Access Demux Video filters Video output codec

Audio Audio filters Audio output codec

Codec Encoder Encoder

Muxer

Meta data Interfaces Stream

24/10/18 28 VLC video

● AV-1 ● H.26x: MPEG1, MPEG2, MPEG4, AVC, HEVC ● VPx and Video / VC-1 ● Dirac / VC-2 ● DV ● Over 200 video codecs in total

24/10/18 29 Data flow

Subtitles Text renderer codec

Video Access Demux Video filters Video output codec

Audio Audio filters Audio output codec

Codec Encoder Encoder

Muxer

Meta data Interfaces Stream

24/10/18 30 VLC audio codecs

● Over 100 audio codecs ● MPEG 2 Layer I/II/III

● AC-3/A52

● AAC

● WMA

, ,

● MIDI

● ...

24/10/18 31 Data flow

Subtitles Text renderer codec

Video Access Demux Video filters Video output codec

Audio Audio filters Audio output codec

Codec Encoder Encoder

Muxer

Meta data Interfaces Stream

24/10/18 32 VLC subtitles codecs

● DVB (digital TV) ● VCD, DVD, BluRay ● Text files

● “Only” a dozen subtitle codecs!

24/10/18 33 Control flow

E.S. output Input thread

Video Output Playlist Audio Output

GUI -Bus MPRIS HTTP remote

24/10/18 34 Languages

● C11 67.5% – Core libraries, most modules ● ++14 19.0% – Qt5 GUI, modules w/ C++ libraries ● Objective C 4.6% – MacOS/iOS modules ● Lua 1.0% – Playlist parsers / website scrapers ● Assembler 0.2%

24/10/18 35 What's new?

VLC 3.0 Highlights

Network browsing

● Browsing directories ● No longer just files

● SMB/CIFS (Windows file sharing) ● FTP, FTPS ● UPnP AV / DLNA ● SFTP (SSH) ● Cloud access under discussion

24/10/18 41 HTTP

● HTTP cookies

● Adaptive/segmented streaming: – Apple live streaming “HLS” – HDS (Adobe Dynamic Streaming) – MPEG DASH

● HTTP(S) 2.0 (standardized SPDY)

24/10/18 42 Input

● More compressed archive formats ● Desktop audio capture on Windows

● Always more combinations: & codec

24/10/18 43 Hardware decoding

DemuxDemux DecodeDecode FilterFilter RenderRender CPUCPU GPUGPU CPUCPU GPUGPU

DemuxDemux DecodeDecode FilterFilter RenderRender CPUCPU GPUGPU GPUGPU GPUGPU

● VA-API () ● VDPAU (NVIDIA) ● Android MediaCodec ● DxVA 2, Video Tool Box

24/10/18 44 Outputs

● OpenGL as default on Linux – Bye bye Xvideo!! ● Direct3D 11 ● output

24/10/18 48 Audio

● Ambisonic sound – Beyond surround: object-oriented channels

Object Object

Object Object

24/10/18 49 Misc.

● Tick-less audio (pause) ● Journal log (SystemD) ● Unicode support in console

24/10/18 50 What's next?

VLC 4.0 New features

VLC 4.0 statistics

● 5203 changes (as of 25/11/2018) ● 72 developers – 25 developers with 10+ changes ● No release plan yet ● My take on it: summer 2019

build system

24/10/18 55 Open video codecs

(/Xiph) ● AV-1 – – Bit stream finally frozen – Decoding almost works (dav1d ) – Encoding will take some more years, probably – May kill H.266 in the egg?

24/10/18 56 Video rendering

● High bits depths – Decoding is “easy” – Rendering is hard – depends on platform support – Tone mapping needed if monitor is SDR ● Stereoscopy (“3D”) – Not really happening (outside cinemas) ? ● Ultra-wide angle (“360”) – Only on Windows this far ☹

24/10/18 57 User interface

● New playlist – An actual list, not a complex tree – No more bugs (yeah right) ● New media library – Unified – Networked – Cached

24/10/18 58 Wayland

● Outputs – EGL / OpenGL – Simple/native wl_scaler – Vulkan? ● Input events: windowing, keyboard, mouse

● Screen capture not allowed ☹ ● D-Bus MPRIS instead of global hotkeys

24/10/18 59 Misc

● WebVTT encoding ● HEIF file format ● HDMI audio pass-through

24/10/18 60 What’s beyond?

VLC future

Probably not yet

● OpenGL 4.x – Memory objects ● Vulkan ● Hardware video encoders ● Tick-less video output ● RTSP 2.0 input

24/10/18 62 Missing platforms

● “Missing” platforms: – Native Client (NaCl) – Web Assembly – – SteamOS – Windows on ARM – living room consoles

24/10/18 63

Why join?

● Important but human-sized project ● Always new stuff in need of doing ● Great for the CV – high demand for multimedia devs

● Face to face meetings – Europe (usually Paris) – Food & Drinks

24/10/18 65 Contribute

IRC: #videolan on FreeNode irc://irc.freenode.net/#videolan http://www.videolan.org/developers/ http://forum.videolan.org/

24/10/18 66 Thanks for listening

Time for Questions