VideoLAN for Android (pre-alpha)

Today while browsing teh interwebz, I came across some information about how to build VLC media player for android. As someone who uses VLC quite a bit on my desktop, I was quite excited at the prospect of running it on my Android devices, so I went ahead and built a pre-alpha package for it!

There seems to be some confusion about these builds. A few notes:

I DID NOT WRITE THE SOURCE FOR VLC-Android.
It was written by the VideoLAN dev team. I simply compiled it based on their wiki and posted the binaries for convenience. I never made any claim that I had contributed any code to this project and stated in the original post that I pulled from their GIT repo and followed their wiki instructions. Please don't falsely attribute work that others have spent so much time on.

VLC-Android IS NOT ANYWHERE NEAR RELEASE.
I reiterate. This is pre-alpha. That means that I built it directly from their source at the time. This build is NOT supported by VideoLAN (and is in fact already out-of-date). They'll announce when there's a legit release. So I ask you, please don't pester the VideoLAN people about this. I respect their work and didn't build this to hammer them with support requests and questions.

I apologize to the VLC team for any unintended ill-effects. I simply thought it was impressive even at these early stages and wanted to share it with others.

For those of you who aren't familiar with VLC, it is one of the most popular open-source media programs available. It supports virtually every media format available, which is quite frankly, awesome.

So why is this so cool for Android? If it can be optimized, especially with the onset of dual-core phones, you can say goodbye to the old days of having to re-encode your video and audio files to a “supported format” for your device.

For those who are looking for more information about VLC, you can find their website here: VideoLAN: VLC Official Site. There is a ton of awesome information on that site about the project as well as media-related libraries. I recommend digging around if you have some free time!

Compiling VLC yourself

For those who want to build these things themselves, information is available on their wiki: VLC Wiki: AndroidCompile. I had zero problems building the system using the Android NDK v6b, although I have heard of several people having quite a few difficulties when attempting to perform the build.

For those who are uninterested or unfamiliar with compilation, I have built the two variants of VLC for Android and they are available on this page.

Because VLC for Android makes use of the NDK, only specific builds will work on specific devices. Be sure to read the information below to find out which build works for your device.
VLC for Android (NEON) VLC-neon.apk 5841596 bytes 3aa1f3b0778aef6b070d7f797afac0a6
VLC for Android (NONEON) VLC-noneon.apk 6014601 bytes 7d2c8d22f2f9a834a3086fcbe85c594c

NEON vs NONEON

There are two builds available of VLC for Android, known as NEON and NONEON. The difference is in the processor type.

Because VLC for Android makes use of the NDK (Native Development Kit), it is compiling native-level binaries that will only work on the processor class for which they were designed. This means that the same build will not work across all devices.

Specifically, when building the native VLC libraries for Android, you have to specify whether the target supports NEON floating-point extensions. Certain devices contain a dedicated floating-point unit (FPU) which is used to do floating-point calculations such as division (think fractions). Other devices don't have a dedicated FPU, and instead need to emulate one in software.

Although VLC could be built to simply always emulate an FPU and thus work across devices, making use of the dedicated NEON FPU is advantageous from a processing perspective as it offloads work that the CPU has to do.

So that's all well and good, but how does one go about checking if their device supports NEON or not? It's actually quite simple. Using either a file manager on your device or simply ADB, locate a file called /proc/cpuinfo and open it.

When you do, you'll see something like this:

Processor	: ARMv7 Processor rev 2 (v7l)
processor	: 0
BogoMIPS	: 1597.74

Features	: swp half thumb fastmult vfp edsp thumbee neon vfpv3
CPU implementer	: 0x41
CPU architecture: 7
CPU variant	: 0x1
CPU part	: 0xc09
CPU revision	: 2

Hardware	: mapphone_CDMA
Revision	: 0000
Serial		: 0000000000000000

If you see the word neon on the Features line, then your device supports NEON extensions. If it's not there, then you'll have to use the NONEON variant of VLC.

Support

VLC for Android is still in pre-alpha stages, and I am simply building it from their GIT repository using their wiki instructions. As such, don't expect any degree of support for these APKs from the VideoLAN group or myself, and expect bugs.

I am only providing this information and these builds for fun, so that others that are interested in this project can play around with the build.

That being said, enjoy!

tl;dr

VLC for Android is awesome!

Compilation instructions are here.