VideoLAN Port VLC to Mobile OS Jean-Baptiste Kempf mercredi 14 - - PowerPoint PPT Presentation

videolan port vlc to mobile os
SMART_READER_LITE
LIVE PREVIEW

VideoLAN Port VLC to Mobile OS Jean-Baptiste Kempf mercredi 14 - - PowerPoint PPT Presentation

VideoLAN Port VLC to Mobile OS Jean-Baptiste Kempf mercredi 14 janvier 2015 Ecole Centrale Paris The Cone VLC 900 000 per day More than 1.5B over VLC lifetime 1 every 6 Mac Top 15 Windows Most used French software VLC VLMC


slide-1
SLIDE 1

VideoLAN Port VLC to Mobile OS

Jean-Baptiste Kempf

mercredi 14 janvier 2015

slide-2
SLIDE 2
slide-3
SLIDE 3
slide-4
SLIDE 4

Ecole Centrale Paris

slide-5
SLIDE 5

The Cone

slide-6
SLIDE 6

VLC

slide-7
SLIDE 7
slide-8
SLIDE 8

1 every 6 Mac Top 15 Windows 900 000 per day More than 1.5B

  • ver VLC lifetime

Most used French software

slide-9
SLIDE 9

libVLC libVLCcore VLC VLMC Applications Interface MKV Ogg Mux Demuxer x264 Vorbis Theora Decoder Filters Aout Vout Modules Modules Modules Modules

slide-10
SLIDE 10

14 janv. 2015 Jean-Baptiste Kempf 10

What we need to port VLC

➢ Compiler ➢ Libc

➢ Files, Unicode

➢ Threads

➢ + cancellation

➢ Network

➢ BSD sockets

➢ Modules

➢ dlopen

➢ Audio output

➢ Delay computation

➢ Video output

➢ YUV

➢ Interfaces

Requirements

slide-11
SLIDE 11

14 janv. 2015 Jean-Baptiste Kempf 11

iOS

➢ Technically, iOS is great :

➢ Same OS than OS X

➢ But

➢ Same bugs about pthread/signal ➢ Static modules only ➢ Multicast

➢ AudioUnit vs AuHal

➢ Stereo only

➢ OpenGL output

➢ Limitation in YUV → RGB shaders

iOS

slide-12
SLIDE 12

14 janv. 2015 Jean-Baptiste Kempf 12

Android

slide-13
SLIDE 13

14 janv. 2015 Jean-Baptiste Kempf 13

100 % Open Source

➢ 2.1+

Full video player

➢ All codecs, formats, protocols ➢ Hardware and multicore decoding

Full audio player

➢ Media library & Indexing ➢ Audio Background service

VLC for Android

slide-14
SLIDE 14

14 janv. 2015 Jean-Baptiste Kempf 14

Technically, Android is bad,

and it's a mess (android-x platforms vs SDK versions)

➢ Shared Modules

➢ limits of .so shared → static like iOS

➢ Bionic is broken ➢ pthread rwlock_t → AOSP android-11 + workarounds ➢ wchar_t functions → AOSP android-14 ➢ off_t 32bits… → #define ➢ multicast → disabled

Port to Android

slide-15
SLIDE 15

14 janv. 2015 Jean-Baptiste Kempf 15

Android Multimedia

slide-16
SLIDE 16

14 janv. 2015 Jean-Baptiste Kempf 16

Audio

➢ AudioTrack Java

➢ Slow

➢ AudioTrack native

➢ Missing delay computation

➢ OpenSL ES

➢ Buggy

➢ AudioFlinger

➢ Not portable

Port to Android : Audio

slide-17
SLIDE 17

14 janv. 2015 Jean-Baptiste Kempf 17

Video

➢ Android 2.1, 2.2

➢ SurfaceFlinger dlopen ➢ Using Android-9 headers ➢ RGB

➢ Android 2.3+

➢ Android NativeWindow ➢ 1 surface only, no rotation ➢ Android NativeWindowPriv ➢ anw.14.so ➢ RGB vs YUV ➢ Opaque

➢ OpenGL ES

➢ Buggy EGL

Port to Android : Video

slide-18
SLIDE 18

14 janv. 2015 Jean-Baptiste Kempf 18

Codec

➢ Android 2.3

➢ OMX + Binder = iOMX

➢ Android 3.0+ ➢ iOMX + gralloc ➢ Android 4.1+

➢ MediaCodec Java ➢ Broken

➢ Android 4.3+ ➢ MediaCodec Java

➢ Software and hardware rendering

Port to Android : Codecs

slide-19
SLIDE 19

14 janv. 2015 Jean-Baptiste Kempf 19

Project start

slide-20
SLIDE 20

14 janv. 2015 Jean-Baptiste Kempf 20

Release in July 2012

➣ Beta on Google Play ➣ Limited countries ➣ ARMv7 only ➣ Numerous crashes ➣ Good feedback ➣ GPLv3

Release

slide-21
SLIDE 21

14 janv. 2015 Jean-Baptiste Kempf 21

slide-22
SLIDE 22

14 janv. 2015 Jean-Baptiste Kempf 22

Video

slide-23
SLIDE 23

14 janv. 2015 Jean-Baptiste Kempf 23

Evolution

slide-24
SLIDE 24

14 janv. 2015 Jean-Baptiste Kempf 24

Evolution

slide-25
SLIDE 25

14 janv. 2015 Jean-Baptiste Kempf 25

Audio v2

slide-26
SLIDE 26

14 janv. 2015 Jean-Baptiste Kempf 26

Video v2

slide-27
SLIDE 27

14 janv. 2015 Jean-Baptiste Kempf 27

Port to WinRT

➢ Compiler ➢ Libc

➢ New access module, limited

➢ Threads

➢ 50ms wake-up

➢ Network

➢ WinRT sockets

➢ Modules

➢ dlopen limited

➢ Audio output

➢ Xaudio broken for delay

➢ Video output

➢ Direct2D (RGB only)

➢ Interfaces in C#

Requirements

slide-28
SLIDE 28

Thank You jb@videolan.org Jean-Baptiste Kempf