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...
The exact hardware and software requirements to run VLC obviously depend on the intended usage.
Still, the most basic requirements to run VLC are constant:
- Audio playback requires an audio output plugin for the target platform. VLC already has audio outputs for WinCE (waveOut), and Linux (ALSA and/or PulseAudio).
- Video rendering requires a video display plugin. As for audio, VLC already supports WinCE (DirectX and/or GDI), desktop Linux (XVideo and/or plain X11), and provides partial support for embedded Linux via direct framebuffer access.
- Some kind of user interface is required. That's why VLC does not actually properly work on any smartphone model at the moment - it lacks a proper user interface for any of those (Hint: the VLC team needs help!).
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.
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 is a Java platform as far as third party software is concerned. Running VLC on BlackBerry is completely impossible.
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.
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).
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(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.
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.
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 is practically dead.
Qtopia (Qt Extended)
Qtopia is officially discontinued.
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 is a Sony-Ericsson user interface based on Symbian. The situation as regards VLC is the same as with S60.
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.