VLC on smartphones

Increasingly often, the happy (or prospective) owner of a smartphone asks where/when/if the VLC port for his/her gadget is available. This is not so easy...

Requirements

The exact hardware and software requirements to run VLC obviously depend on the intended usage.

Basics

Still, the most basic requirements to run VLC are constant:

Performance considerations

Any non-antique smartphone should be able to playback audio directly. However, video playback is typically much more demanding. To date, most smartphone processors are incapable of decoding video in real-time at casual resolutions (say like TV or DVD). If you are happy with poststamp resolution fitting the small screen of the device, then this might not be a problem. Otherwise, acceleration will be needed for both video decoding and video scaling (adjusting the video dimension to the screen resolution).

Smartphones almost all run ARM processors. If you're lucky, it supports the ARM NEON SIMD instructions set. At the time of writing, this is found on some of the recent high-end devices such as iPhone 3GS, Palm Pre, Nokia N900, and any other OMAP3xxx-based devices. Then VLC can use the NEON optimization already found in the FFmpeg library, which should allow acceptable (but not great) video decoding up to DVD resolution.

If the processor does not support NEON, or if you want bigger resolution (uh, high-definition on small screen?!), a DSP (Digital Signal Processor) must be used. Most devices have one; that's how the built-in media player typically works. Unfortunately, VLC does not support any DSP at the moment, so a lot of extra work would be needed. Also, the DSP typically only supports a few formats probably H.264 a.k.a. MPEG-4/AVC, MPEG-4 part 2 and/or Windows Media Video.

Platforms

Android

Android is a Java-based platform. There is some support for native code, with the native development kit. However, it is not clear that this would be sufficient to run VLC. In any case, this would probably be quite challenging.

BlackBerry OS

BlackBerry is a Java platform as far as third party software is concerned. Running VLC on BlackBerry is completely impossible.

iPhone OS

There is already an unofficial port of VLC for iPhones and iPod Touch. I have not been able to test it, but I assume it reuses much of the existing MacOS platform code found in VLC. An up-to-date VLC version should perform quite well at least on iPhone 3GS, thanks to the powerful OMAP3430 system-on-chip.

LiMo Platform

If the proponents of the LiMo Platform would allow third party code, it should be possible to run VLC. However, I do not know what interface they use for video rendering (If you know more, let me know).

Maemo

VLC 1.1 runs on Maemo 5 already. This was fairly straightforward as the platform is similar to desktop Linux especially Debian and Ubuntu. In particular, it supports XVideo and PulseAudio. However the DSP is currently not supported by VLC. There is also no good UI.

MOAP

MOAP(S) and MOAP(L) are japanese mobile phone platforms based on Symbian and Linux respectively. They are closed platform so porting VLC is out-of-question.

Moblin

The Intel mobile operating system is a special case as it runs on x86 processors. This is unique as it could leverage existing optimizations for VLC on PCs. It seems quite close to desktop Linux distribution, so porting VLC should be fairly easy.

MotoMagx

The Linux mobile phone platform from Motorola is derived from MontaVista Mobilinux. It has shipped several millions of Linux phones already. While web or Java is recommended for development, native code can be used according to Motorola. Getting VLC to cooperate with Java and getting the necessary code signatures might be tricky (see also Android above).

Openmoko

Openmoko is practically dead.

Qtopia (Qt Extended)

Qtopia is officially discontinued.

Series 60

Series 60 (S60) is the Nokia smartphone user interface on top of Symbian. Symbian uses an esoteric variant of the C++ programming language. Porting the VLC core to Symbian is in principle feasible. However, it would require a lot of extra work compared to Linux, Windows or MacOS platforms.

UIQ

UIQ is a Sony-Ericsson user interface based on Symbian. The situation as regards VLC is the same as with S60.

webOS

webOS runs on the Palm smartphones. While those devices are powerful enough to run VLC, access to the native platform is restricted.

Windows Mobile (Windows CE)

VLC has run on Windows CE for a long time, although most devices are not very powerful. There is even a VLC user interface, although it is very incomplete.

So when is VLC available?

The VideoLAN team is quite small and struggling to keep VLC up on normal computers. The VideoLAN team welcomes any help.

The lack of user interface and the relative slowness of the devices are pretty big challenges. If you don't need a user interface and can compile VLC yourself, it's available for Windows CE and Maemo 5 already.