Hello Tim!

Thanks for clearing up the detail about NEON, I'll read up on that.
However, the thing that I'm trying to get at here is that as far as I
know, the Windows Mobile platform doesn't have any form of hardware
support for decoding XviD either, but still manages to play it back
fine with processors that are far outclassed in terms of pure
computational horsepower by a Cortex A8 or Snapdragon, even completely
discounting the additional instruction sets and other features found
in the newer processors.

Please correct me if I'm mistaken, but it seems to me that even
without any specialized support for instruction sets or hardware
support on either side, Android is just less efficient. Or am I just
completely confused, and WinMo devices have had specialized
instruction sets and/or even hardware support for this sort of thing
all along?


Kind regards,
Simon



By the way, here's the message Vedran sent, which did not get posted:

Hi Simon,

(I've put you in CC because for some reason my mails to android-
developers are still not getting through.)

I've also asked myself the same question.

The thing is that Android API probably doesn't expose low level APIs
for doing hardware accelerated surface scaling and color space ( YUV->
RGB ) conversion. These are two basic conditions for building
efficient video decoders since they offload the CPU from doing "stupid
work" where every byte of every frame must be processed individually
by the CPU. This hardware is present in most 2D accelerators in
mainstream hardware for at least 10 years now, so it should be in
every android device also.

This is probably the main reason for high CPU usage, since it destorys
both the CPU cache and uses resources.


Other than scaling and color, other things can be accelerated by using
DSP hardware that could be different on different android devices.
Also using VFP/NEON instructions can help, but for scaling and
colorspace conversion, it's best to offload it to dedicated hardware.

It is possible that hw scaling and colorspace conversion could work
with OpenGL ES, but not all devices support that. I guess that even
the devices without OpenGL ES hw acceleration still have sufficient 2D
and video acceleration to support this.

NDK r3 and r4 added some OpenGL ES and VFP/NEON support. It's unclear
from the ChangeLog if this can be used on Android 2.2 only or if it
works on older Androids.

You can try your look by looking at Android platform source code and
finding where is low level video implemented for the standard media
player.

And lets hope somebody from google has a better answer :)

Vedran



On Jul 6, 2:35 pm, Tim <tdh...@gmail.com> wrote:
> On Jul 6, 10:25 am, Simon Broenner <simonbroen...@gmail.com> wrote:
>
> > RockPlayer
> > because it uses CPU features that aren't even available on these older
> > Qualcomm chips - probably needed because otherwise the performance
> > wouldn't be up to par, even on a Cortex A8 or Snapdragon...
>
> True but it still doesn't use NEON 
> instructions:http://www.diffthink.com/forum/viewtopic.php?f=2&t=11
>
> > So what exactly is the problem with Android? Why is it so difficult to
> > develop efficient decoders for video formats that aren't natively
> > supported? Are codecs usually written in a way that makes them
> > impossible to implement with the tools available for Android
> > (Assembly?)?
>
> It takes time to implement a codec using SIMD/DSP instructions. It's
> nothing to do with the NDK.

-- 
You received this message because you are subscribed to the Google
Groups "Android Developers" group.
To post to this group, send email to android-developers@googlegroups.com
To unsubscribe from this group, send email to
android-developers+unsubscr...@googlegroups.com
For more options, visit this group at
http://groups.google.com/group/android-developers?hl=en

Reply via email to