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 Paris) ● 2006: Volunteer (graduation) ● 2007: Nokia Linux phones ● Today - System software engineer NVIDIA mobile division
Largest committer in VLC history ! 24/10/18 3 École Centrale Paris VIA Centrale Network
● 1989: TokenRing deployment – IBM ● 1996: Ethernet upgrade – Video streaming set as new goal – 3Com ● 2002: Gigabit upgrade – Proper multicast 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/libav – x264 – KDE multimedia – VLC media player – DVBlast – Open Broadcast Encoder – …
24/10/18 10 Multiple projects
● VLC media player ● DVBlast, Multicat ● VLMA streaming server manager ● VLC Skin designer ● VLMC video editor ● iCast.io ● VLS stream server ● VLCS channel server
24/10/18 11 Software libraries
● libbluray & libaacs ● Libdvdcss ● Dav1d (AV-1 decoding) ● libdca (DTS) ● X265 (“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 : source code (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 videolan.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 Ogg MKV Muxer
Interface Video Audio Filters
Modules Modules Modules Modules 24/10/18 20 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 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 ● Matroska / 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 codecs
● AV-1 ● H.26x: MPEG1, MPEG2, MPEG4, AVC, HEVC ● VPx and Theora ● Windows Media 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 D-Bus MPRIS HTTP remote
24/10/18 34 Languages
● C11 67.5% – Core libraries, most modules ● C++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: File format & 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 (Intel) ● VDPAU (NVIDIA) ● Android MediaCodec ● DxVA 2, Video Tool Box
24/10/18 44 Outputs
● OpenGL as default on Linux – Bye bye Xvideo!! ● Direct3D 11 ● ChromeCast 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
● Meson build system
24/10/18 55 Open video codecs
● Daala (Mozilla/Xiph) video codec ● AV-1 – Alliance for Open Media – Bit stream finally frozen – Decoding almost works (dav1d library) – 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: – Google Native Client (NaCl) – Web Assembly – Mir – 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