28
VideoLAN Port VLC to Mobile OS Jean-Baptiste Kempf mercredi 14 janvier 2015

Port VLC to Mobile OS · Full audio player Media library & Indexing Audio Background service VLC for Android. 14 janv. 2015 Jean-Baptiste Kempf 14 Technically, Android is bad, and

  • Upload
    others

  • View
    12

  • Download
    0

Embed Size (px)

Citation preview

Page 1: Port VLC to Mobile OS · Full audio player Media library & Indexing Audio Background service VLC for Android. 14 janv. 2015 Jean-Baptiste Kempf 14 Technically, Android is bad, and

VideoLAN

Port VLC to Mobile OS

Jean-Baptiste Kempf

mercredi 14 janvier 2015

Page 2: Port VLC to Mobile OS · Full audio player Media library & Indexing Audio Background service VLC for Android. 14 janv. 2015 Jean-Baptiste Kempf 14 Technically, Android is bad, and
Page 3: Port VLC to Mobile OS · Full audio player Media library & Indexing Audio Background service VLC for Android. 14 janv. 2015 Jean-Baptiste Kempf 14 Technically, Android is bad, and
Page 4: Port VLC to Mobile OS · Full audio player Media library & Indexing Audio Background service VLC for Android. 14 janv. 2015 Jean-Baptiste Kempf 14 Technically, Android is bad, and

Ecole Centrale Paris

Page 5: Port VLC to Mobile OS · Full audio player Media library & Indexing Audio Background service VLC for Android. 14 janv. 2015 Jean-Baptiste Kempf 14 Technically, Android is bad, and

The Cone

Page 6: Port VLC to Mobile OS · Full audio player Media library & Indexing Audio Background service VLC for Android. 14 janv. 2015 Jean-Baptiste Kempf 14 Technically, Android is bad, and

VLC

Page 7: Port VLC to Mobile OS · Full audio player Media library & Indexing Audio Background service VLC for Android. 14 janv. 2015 Jean-Baptiste Kempf 14 Technically, Android is bad, and
Page 8: Port VLC to Mobile OS · Full audio player Media library & Indexing Audio Background service VLC for Android. 14 janv. 2015 Jean-Baptiste Kempf 14 Technically, Android is bad, and

1 every 6 MacTop 15 Windows

900 000 per day

More than 1.5B over VLC lifetime

Most used French software

Page 9: Port VLC to Mobile OS · Full audio player Media library & Indexing Audio Background service VLC for Android. 14 janv. 2015 Jean-Baptiste Kempf 14 Technically, Android is bad, and

libVLC

libVLCcore

VLC VLMC Applications

Interface

MKVOggMuxDemuxer

x264VorbisTheoraDecoder

FiltersAoutVout

Modules ModulesModulesModules

Page 10: Port VLC to Mobile OS · Full audio player Media library & Indexing Audio Background service VLC for Android. 14 janv. 2015 Jean-Baptiste Kempf 14 Technically, Android is bad, and

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

Page 11: Port VLC to Mobile OS · Full audio player Media library & Indexing Audio Background service VLC for Android. 14 janv. 2015 Jean-Baptiste Kempf 14 Technically, Android is bad, and

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

Page 12: Port VLC to Mobile OS · Full audio player Media library & Indexing Audio Background service VLC for Android. 14 janv. 2015 Jean-Baptiste Kempf 14 Technically, Android is bad, and

14 janv. 2015 Jean-Baptiste Kempf 12

Android

Page 13: Port VLC to Mobile OS · Full audio player Media library & Indexing Audio Background service VLC for Android. 14 janv. 2015 Jean-Baptiste Kempf 14 Technically, Android is bad, and

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

Page 14: Port VLC to Mobile OS · Full audio player Media library & Indexing Audio Background service VLC for Android. 14 janv. 2015 Jean-Baptiste Kempf 14 Technically, Android is bad, and

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

Page 15: Port VLC to Mobile OS · Full audio player Media library & Indexing Audio Background service VLC for Android. 14 janv. 2015 Jean-Baptiste Kempf 14 Technically, Android is bad, and

14 janv. 2015 Jean-Baptiste Kempf 15

Android Multimedia

Page 16: Port VLC to Mobile OS · Full audio player Media library & Indexing Audio Background service VLC for Android. 14 janv. 2015 Jean-Baptiste Kempf 14 Technically, Android is bad, and

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

Page 17: Port VLC to Mobile OS · Full audio player Media library & Indexing Audio Background service VLC for Android. 14 janv. 2015 Jean-Baptiste Kempf 14 Technically, Android is bad, and

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

Page 18: Port VLC to Mobile OS · Full audio player Media library & Indexing Audio Background service VLC for Android. 14 janv. 2015 Jean-Baptiste Kempf 14 Technically, Android is bad, and

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

Page 19: Port VLC to Mobile OS · Full audio player Media library & Indexing Audio Background service VLC for Android. 14 janv. 2015 Jean-Baptiste Kempf 14 Technically, Android is bad, and

14 janv. 2015 Jean-Baptiste Kempf 19

Project start

Page 20: Port VLC to Mobile OS · Full audio player Media library & Indexing Audio Background service VLC for Android. 14 janv. 2015 Jean-Baptiste Kempf 14 Technically, Android is bad, and

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

Page 21: Port VLC to Mobile OS · Full audio player Media library & Indexing Audio Background service VLC for Android. 14 janv. 2015 Jean-Baptiste Kempf 14 Technically, Android is bad, and

14 janv. 2015 Jean-Baptiste Kempf 21

Page 22: Port VLC to Mobile OS · Full audio player Media library & Indexing Audio Background service VLC for Android. 14 janv. 2015 Jean-Baptiste Kempf 14 Technically, Android is bad, and

14 janv. 2015 Jean-Baptiste Kempf 22

Video

Page 23: Port VLC to Mobile OS · Full audio player Media library & Indexing Audio Background service VLC for Android. 14 janv. 2015 Jean-Baptiste Kempf 14 Technically, Android is bad, and

14 janv. 2015 Jean-Baptiste Kempf 23

Evolution

Page 24: Port VLC to Mobile OS · Full audio player Media library & Indexing Audio Background service VLC for Android. 14 janv. 2015 Jean-Baptiste Kempf 14 Technically, Android is bad, and

14 janv. 2015 Jean-Baptiste Kempf 24

Evolution

Page 25: Port VLC to Mobile OS · Full audio player Media library & Indexing Audio Background service VLC for Android. 14 janv. 2015 Jean-Baptiste Kempf 14 Technically, Android is bad, and

14 janv. 2015 Jean-Baptiste Kempf 25

Audio v2

Page 26: Port VLC to Mobile OS · Full audio player Media library & Indexing Audio Background service VLC for Android. 14 janv. 2015 Jean-Baptiste Kempf 14 Technically, Android is bad, and

14 janv. 2015 Jean-Baptiste Kempf 26

Video v2

Page 27: Port VLC to Mobile OS · Full audio player Media library & Indexing Audio Background service VLC for Android. 14 janv. 2015 Jean-Baptiste Kempf 14 Technically, Android is bad, and

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

Page 28: Port VLC to Mobile OS · Full audio player Media library & Indexing Audio Background service VLC for Android. 14 janv. 2015 Jean-Baptiste Kempf 14 Technically, Android is bad, and

Thank You

[email protected]

Jean-Baptiste Kempf