VLC Media Player Introduction
Total Page:16
File Type:pdf, Size:1020Kb
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 ● Opus, Vorbis, Speex ● 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 .