VLC For Android May Arrive In Early 2011 90
dkd903 writes "The development of an Android client for VLC has been going on for months now, but it has been slowed down by the fact that Android's multimedia output libraries are in Java. VLC itself is based on C and so translating them to Java is difficult and takes time. With the newer Android NDK, however, using native codes for Android apps has been becoming easier. So, the VLC developers have developed two basic modules for audio and video output based on the new NDK and most of the VLC libraries have been ported to Android."
Video on mobile phones (Score:1)
Re:Video on mobile phones (Score:4, Insightful)
This isn't going to use battery at all, especially since VLC's codecs aren't hardware accelerated...
And in Java, which is well-known for its efficient support of complex bit-twiddling algorithms.
Re: (Score:1)
Android programs aren't Java. Yes, they're written in Java, but the bytecode is targeted for Dalvik, which is not a JVM. Have you seen video on an Android phone? It's very smooth on 4G or WiFi, a little less so on 3G.
Re: (Score:2)
Agreed. But there was an implication that one couldn't do VLC on Android because it's Java. It's Java syntax, but the underlying VM isn't Java. That means that the performance problems that plague Java do not plague Dalvik (Android) applications.
Undoubtedly Android VLC uses these libraries rather than the usual suspects.
Re: (Score:2)
Erm, they're written in a Java syntax but there isn't all the standard Java classes available. It's still running in a virtual machine, albeit a register instead of stack based one. It may be more optimal for a mobile device but it's still like writing in VB or some other easy option for coding.
Still nowhere near as efficient as coding in C++, C or Objective C then compiling to a native executable.
Coding on Android has none of the advantages of Java (apart from some familiarity of the syntax) and most of th
Re: (Score:2)
Re: (Score:2)
You absolutely do NOT want a garbage collector on a mobile device with limited memory and CPU power.
This is just one of the many things that Apple got 101% right in iOS.
Re: (Score:1)
Why not? It is not mission critical (beside that phone must work all the time) so that it needs real-time behavior. It is their choice to have one app and responsive UI vs. real multi-tasking, as in android, where OS can unload RAM from apps.
Re: (Score:1)
ObjC comes with garbage collection.
You just outed yourself as a mac-using hipster.
Re: (Score:2)
Objective-C runtime only has GC on the desktop. This thread is about mobile. There's no GC on iOS.
Re:Video on mobile phones (Score:5, Insightful)
You absolutely do NOT want a garbage collector on a mobile device with limited memory and CPU power.
This is just one of the many things that Apple got 101% right in iOS.
My mobile phone [htc.com] has over six thousand times the compute power and over a million times the memory of the first computer I worked on [wikipedia.org], and that supported 18 concurrent users. More than that, my mobile phone has over five hundred times the compute power and one hundred times the memory of the first dedicated LISP workstation [wikipedia.org] I worked on, and that had a full GUI and generational garbage collection. The idea that modern phones have limited memory or limited CPU power is an idea which only beginners or amateurs could possibly believe.
Back at the beginning of the automobile age, cars were so primitive that they didn't have automatic oil pumps. If the driver didn't remember to keep pumping oil, the engine would seize. We no longer think that's good engineering. Nowadays, our cars have automatic oil pumps, which use a tiny fraction of the engine's power to prevent it happening. Back at the very beginning of the computer age, software systems were so primitive that they didn't have automatic memory management. If the programmer didn't remember to keep freeing memory, the memory system would silt up and the machine would freeze. Do you really think that's good engineering?
Re: (Score:2)
Re: (Score:3)
Interpreted languages are very different now than they were 10-15 years ago. First, most are compiled into bytecode, which is pseudo assembly that can be compiled faster than source code. Second, the interpreter does dynamic recompilation and optimization on the fly, something C and C++ don't do (these code blocks were hand tuned in assembly in the past, but that is rare because the compiler is better than most humans at instruction order because of out of order optimization. While it may not be faster than
Re: (Score:2)
I would hope the optimizations made for Dalvik (the android runtime) also exist in the NDK VM
There is no "NDK VM" - the "N" there stands for "native", as in native compiled code. There's nothing to optimize there.
Re: (Score:2)
Pedant. And the parent didn't even mention virtual machines...
Re: (Score:2)
JVM != VM. And yes, he/she mentioned java which 99% of the time means a JVM.
Re: (Score:1)
I _really_ wish people would use sarcasm more to make their point around here.
Re: (Score:2)
Standard codecs don't need the acceleration (Score:2)
You can easily change out or extend nearly every component of a CODEC on VLC. So, here's how it'll work
1) Someone will port the code to run on Android
2) Someone will say "wow it works, but H.264 is so slow it makes my eyes want to bleed"
3) Someone will make it faster by optimizing for ARM.
4) Someone will add hardware decoding for a specif
Re: (Score:1)
Can't tell from the summary... (Score:2)
Windows 7 Desktop Sharing? (Score:1, Offtopic)
I know it's not VNC (or is it?) or Android, but I'm looking for a way to share my local Windows 7 desktop across the LAN to another Windows 7 user who watches as I do something onscreen. And a recorder to play it back. If the recorder can take a microphone narration, that's perfect.
Is something like that built into Windows 7? Or is there a free app that can do it?
Re: (Score:3, Informative)
VNC = Virtual Network Computing [wikipedia.org]
VLC = VLC media player (former VideoLAN Client) [wikipedia.org]
Re: (Score:3)
Re:codec support (Score:4, Insightful)
Re: (Score:2)
VLC gets it's codec support from a selection of libraries, primarily libavcodec. There isn't much it won't play. I've thrown everything from old realmedia to quicktime to mpeg to x264 in mkv container with vorbis audio at VLC, and it's all worked.
Try interlaced vc1. It's remarkably common on blurays because - for some damn reason - the bluray spec does not include 25fps progressive video - so all of those euro programs that are native 25fps have to be encoded as 50fps interlaced. Sometimes you get vc1 and sometimes you get h264 (which has MBAFF for interlaced-but-really-progressive which works great as a workaround for bluray). Lots of BBC content like Doctor Who, Torchwood and Being Human are in 1080i50 vc1.
A glimmer of hope from OpenSL ES (Score:1)
here's the actual story link (Score:2)
http://gigaom.com/video/vlc-for-android-coming-soon/ [gigaom.com]
Not that there's much to it.
Android does have a C/C++ (Score:2, Insightful)
Re: (Score:1)
support so I dont have a clue what the VLC guys are going on about... more info here [android.com]
That the NDK was not up to scratch until the 2.3 release?
Like the news story says
"With the newer Android NDK, however, using native codes for Android apps has been becoming easier."
Re: (Score:2, Redundant)
Sounds like the author of this article isn't an actual programmer.
Also, I don't think that porting VLC to android would be the difficult or meaningful part, it's all about the codecs.
A direct port to Android would mean for a horrible interface, and a rewrite of the interface would just mean creating something new and calling it "VLC".
Re: (Score:3)
Re: (Score:2)
Erm, until Android 2.3 the NDK didn't have any method for audio output (other than passing the audio back to java, which is slow and stupid). I'd say that's a pretty big barrier.
Fortunately they made the NDK much more awesome for 2.3.
Re: (Score:1)
I found that very painful with the previous version of the NDK. I am sure the guys from VLC tried to run their code since a long time but found it not easy. I got some openGL code running with it but when I started to have problems and needed to debug my app it was too painful...
Re: (Score:2)
I know it's tempting to only read the headline and shoot some people down, but perhaps you could read the summary too:
"With the newer Android NDK, however, using native codes for Android apps has been becoming easier. So, the VLC developers have developed two basic modules for audio and video output based on the new NDK and most of the VLC libraries has been ported to Android"
Re: (Score:2)
Being able to run native code is no good if you don't have access to the APIs that you need to get the job done (such as audio).
Re: (Score:2)
What's Android actually use for audio output, in the kernel? (Or is it userspace?) You could go straight to that with the NDK, though you might have to build some additional libraries.
Re: (Score:2)
I don't know, but using a non-public (i.e. undocumented) API like that is not a good idea - it can go away, or change in a binary incompatible way, with any OS update, even minor.
Re: (Score:2)
Sure, there's warnings about that all over the NDK, but for something like vlc it seems like an acceptable risk.
only starting now? (Score:2)
the NDK has been available for years - what has taken them so long to find this out? create a texture, pass a pointer to it and compile the codec natively. nit more than a one-day job if you know what you are doing. the issue is more about the optimizations of the codecs, not the language barrier.
Re: (Score:2)
yes - the issue with video tools is more the optimization and performance of the codecs, they are typically built for desktop environments and do not compile well for mobile platforms. just search slashdot for my 36 hour porting effort of lemmings to many platforms.. that was a complete game, not a mere codec.. the codec job is much easier. it is very trivial if you know what you are doing. google even made it easier recently:
http://developer.android.com/sdk/ndk/index.html
>> Android NDK, Revision 4b (
Re: (Score:2)
Mhmm (Score:1)
They're using Java for the frontend and some of the backend, with C++ for the codecs, obviously.
Re: (Score:2)
No, they aren't using Java. This is a bad article.
Do want (Score:2)
Really, do want.
Re: (Score:2)
Why? VLC has to be one of the worst libavcodec-based media players in existence.
Re: (Score:2)
Sounds like the 4096 CPUs guy:
http://xkcd.com/619/ [xkcd.com]
Re: (Score:2)
What other libavcodec-based player would you suggest then?
Re: (Score:2)
Citation needed. I keep trying other things and I keep coming back to vlc.
Re: (Score:2)
I don't care how "good" a "libavcodec-based" player is if it doesn't play everything out-of-the box.
VLC has played everything I had, out of the box, in all the systems I've tested (Linux, Windows and Mac for now).
I want that on my Android.
I must be from the future... (Score:1)
One more for the N900 and Maemo. (Score:2)
Not only does it have VLC, it also has mplayer and friends. That, and you can get USB out of it too.
Local video, networked video, and no VM in between you and your media.
Re: (Score:2)
Yes, it actually does.
If you mean "Does it have Android?", yes. (Score:2)
Not for the faint of heart, but there's Android (Nitdroid) for the N900:
Link [engadget.com]
Re: (Score:3)
Codes? (Score:3)
With the newer Android NDK, however, using native codes for Android apps has been becoming easier.
Codes, plural? What exactly is "one code"?
patience please (Score:2)
I love the idea of VLC. I can't imagine the blood, sweat and tears that went into this labor of love. It does a few things that QuickTime can't.
But the fact is that after so many years it is still buggy on my Macs (can't even start, stop or scroll thru a video reliably) and I have never been able to export even a simple video to another format (could be my ignorance). QuickTime on Mac is relatively solid, exports flawlessly, and offers some commonsense play options that VLC lacks.
Are we expecting a miracle
Use of native multimedia decoders in Android (Score:1)
Based on Qt? (Score:2)
VLC is oft quoted as being based on Qt, and I notice that Qt is being ported to Android (and iOS). I wonder if these facts are related.