Hi,
I have few basic questions about Mali packages.
Please understand my lack of understanding in this field.
My company designed a new board in purpose of playing HD videos on Linux DirectFB envionment.And the video player would may be VLC player.
In my case which packages are required for the best graphic performance?
OpenGL ES can enhance the graphic performance?
Does it because fbdev uses 3D APIs?
If 3D APIs are not required, can I replace OpenGL ES with OpenCL?
Additionally do I need to port OpenCL to enable NEON? Or NEON can be utilized without OpenCL or OpenGL ES?
PLEASE please help me.
Project time schedule is quite desperating..
Thank you.
Hi Moonami,
NEON is a co-processor and the only requirement is that you have compiler support to be able to compile code which uses it. NEON has no dependency on any APIs, and works the same as SSE on Intel, for example. Write NEON in either assembly or intrinsics, or use a vectorizing compiler, and it will run on any processor with NEON.
OpenGL ES is a 3D graphics API, and OpenCL is a compute API. Both use the GPU to accelerate workloads, but only for applications which target the API (VLC probably does not, but ffmpeg can optionally be built with OpenCL support for some filters https://trac.ffmpeg.org/wiki/HWAccelIntro)
In the case of VLC, I don't believe OpenGL ES or OpenCL are necessary at all for video decode. I'm not familiar with exactly how VLC works, but my money would be on it using ffmpeg, or OpenMAX (or ffmpeg uses OpenMAX) or something along those lines to decode the video. OpenMAX is an API which grants access to hardware blocks designed specifically for decoding video, so if your SoC has such hardware there should be a userland library, possibly OpenMAX, providing access to it, but this is treading into territory I'm not so familiar with.
Hope this helps,
Chris
Chris, I really appreciate to your answer.
And I guess I may need OpenCL package to accelerate video decoding of VLC player.
This article below says VLC player's decode performance can be reached up to 10x speeds when it use hardware acceleration.
OpenCL Software Development Services GPGPU Acceleration
And there is 'Use GPU accelerated decoding' check box in VLC player too.
It can bewrong, so I'd better find some more information though..
And then, I have new question..
My board has MFC hardware codec. And if I assume that I add gstreamer framework layer that linked to MFC hardware codec,
Will this MFC with gstreamer have better graphical performance compared to GPU accelerated(by OpenCL) FFMPEG software codec and gstreamer framework layer added?
Nari
Hi Nari,
No problem, it's what we're here for
And I guess I may need OpenCL package to accelerate video decoding of VLC player. This article below says VLC player's decode performance can be reached up to 10x speeds when it use hardware acceleration. OpenCL Software Development Services GPGPU Acceleration
They are not using OpenCL to perform the decoding of the video, they use OpenCL to accelerate some image filtering/processing (denoise, deshake, scaling) on the decoded video frames, and they observe a 10x speedup compared to doing this processing on the CPU. They are NOT decoding the video stream itself using OpenCL, this is still being done with some other API.
And there is 'Use GPU accelerated decoding' check box in VLC player too. It can bewrong, so I'd better find some more information though..
I can't say I know what this refers to, but I'd take a look at the code and see what it hooks up to. Best case it uses OpenCL to perform the video decode, but this almost certainly will be less performant than performing the video decode on MFC.
My board has MFC hardware codec. And if I assume that I add gstreamer framework layer that linked to MFC hardware codec, Will this MFC with gstreamer have better graphical performance compared to GPU accelerated(by OpenCL) FFMPEG software codec and gstreamer framework layer added?
Yes MFC is ultimately what you should be using to perform the video decode. From what I understand, the Android framework, gstreamer, and XBMC (possibly through gstreamer) make use of MFC to perform video decode. The odroid forums have some talk of XBMC using MFC so it's worth taking a look there.
When you say "graphical performance", I assume you mean video decode performance, and not 3D rendering performance, in which case yes MFC will be much faster and more power efficient than decoding on the CPU, using FFMPEG software codec, OpenCL accelerated, or similar. I'm stressing the difference here between "graphics" and "video" as this seems to be the cause of much of the confusion
Thank you for your reply, Chris.
You've been so much help to me!