Something Like Directshow For The Pandora?


xyta

Active Member
Joined
Aug 28, 2009
Messages
886
Hi,
AFAIK, up to now most player and multimedia software for the Pandora is lacking support for hardware acceleration (TI DSP and PowerVR gfx) which results in a low speed and high battery consumption.

Many coders of such software are good at high level languages like C/C++, but have no clue how to optimise their software for a limited platform like the Pandora.

So I wonder if an HW acceleration API exists or could be implemented on the Pandora. In Windows this stuff is done by the DirectShow API:

http://en.wikipedia.org/wiki/DirectShow

Does something similar exist for Linux?? I don't know...
If not, my idea would be to convince some of the OMAP/ARM gurus here to write something like this.

At the moment it seems that there are several media player solutions available on the Pandora which are all lacking HW acceleration. And I think it would make no sense if every software player developer had to implement HW acceleration on his own. ;)

EDIT:

After reading the DirectShow article linked in my post :p I've found out that there are already multimedia framewortks like Xine and GStreamer in Linux... And there's a project for GStreamer+Angstöm+OMAP: MyGStreamer

https://gforge.ti.com/gf/project/gstreamer_ti/

Is MyGstreamer already implemented in the Pandora Angström?
 
while playing media there is 2 kinds of hardware accelerations :
- decoding hardware acceleration
- display hardware acceleration

For decoding, we already have decoding accelerated with the NEON co-processor (gstreamer, ffmpeg and vlc have this already). We could/may/will have DSP hardware acceleration (at least for H264 and VP8 as these code already exist).
For display acceleration, there is 2 solutions : XVideo and Xrender. These 2 are already available too. We are currently using Xrender instead of Xvideo for an yet unknown reason (XVideo should be faster)

So no need to call for help...
 
Hi,

TI Gstreamer plugins need DSP/Link to be able to access the DSP (see my thread entitled "Plans for utilizing the DSP?" in this forum) which isn't available for Pandora just yet. It's likely that when the switch to 2.6.35 or some newer kernel version occurs, it'll be quite easy to obtain (via OE) but I'm thinking of trying to build it with the current kernel anyway.

Once we have the ti-gstreamer dependencies in place (DSP/Link, CMEM and the OMAP3 local power manager, all of which are kernel modules) we have hardware accelerated video/audio/image encoding/decoding, and not just for a single app (gstreamer is a framework, as you mentioned).

Aside from gstreamer, the Cortex A8's NEON instruction set (not related to the DSP, it's an instruction set supported by the main ARM processor itself) offers some interesting possibilities for decoding. I know there's a small application called omapfbplay, as well as a port of mplayer which utilizes NEON instructions and offers the same performance level with omapfbplay. They both work on the BeagleBoard (developed by BeagleBoard people, even) and should be trivial to get working on the Pandora. edit: sebt3 beat me to it, and appearantly plenty of other video playing apps already use NEON
 
I wouldn't call NEON "hardware acceleration", and it'll never compete well with the hardware blocks on the DSP which can accelerate motion compensation, deblocking, and presumably iDCT transformation (this part was not documented last I checked). Naturally, we want access to this.. I assume gstreamer_ti is doing just that.

I don't know what options we have for XVideo, but if it works with overlays then DSS2 should be used to access the first scalable overlay, which is currently being reserved for applications on Pandora. This would allow free color space conversion and filtered scaling, or at least the hardware allows the former; I don't know if the drivers expose it yet.
 
Exophase said:
I wouldn't call NEON "hardware acceleration", and it'll never compete well with the hardware blocks on the DSP
I cannot agree more, but apps using neon are running faster than without :)
I know that gcc is doing a very poor job at producting code for the NEON, but the ffmpeg team have writen their own code for the NEON (meaning asm) which is _way_ faster than using the ARM core to manipulate float/double instruction.
But yeah, once we can use the DSP, these neon optimisation will look lame.
Exophase said:
I don't know what options we have for XVideo
I don't know either. I only know 2 thing :
- We have it (it's loaded by xorg, see grep -i xvideo /var/log/xorg.0.log)
- No video apps use it. For those I packaged, it may be my build environement that have XVideo broken. But since gmplayer (from the codecpack) don't use it either, the problem might be elsewhere.
And It could even be me thinking that Xvideo is faster than Xrender and being very wrong...
 
Last edited by a moderator:
^ Sorry for the off topic, but seeing the quote in your signatur I'm sure Exophase regrets it now :D
 
mali said:
^ Sorry for the off topic, but seeing the quote in your signatur I'm sure Exophase regrets it now :D
We all know he is always serious : he is fucking exophase :D
But if someone want to have context, they will click on the referer link and will see that this was just jocking :)
But Exo, If you feel uneasy with my sig (I guess not), I'll change it at your request (I'll try to find your "I'm fucking exo" post then :D ... kidding)
 
Last edited by a moderator:
Please keep the sig, it's a good disclaimer to keep me from being liable for anything I say ;D

(I think like three people already have that other quote in question in their sigs.. heheh)
 
xyta said:
Hi,
AFAIK, up to now most player and multimedia software for the Pandora is lacking support for hardware acceleration (TI DSP and PowerVR gfx) which results in a low speed and high battery consumption.

Many coders of such software are good at high level languages like C/C++, but have no clue how to optimise their software for a limited platform like the Pandora.

So I wonder if an HW acceleration API exists or could be implemented on the Pandora. In Windows this stuff is done by the DirectShow API:

http://en.wikipedia.org/wiki/DirectShow

Does something similar exist for Linux??
openmax?


http://felipec.wordpress.com/2008/12/12/gst-openmax-demo-on-the-beagleboard/
 
Last edited by a moderator:
Hiiiiiiii exoooooo!

Also, I'd be excited to see how stuff works once we get DSP and xvideo support going. There are already some pretty good success stories of video playback. These optimizations will only make things even better. :p
 
Back
Top