<html><body>
<p>Hi,<br>
<br>
Felipe is itegrating the changes ... you need to set up GIT and clone 
<table width="100%" border="0" cellspacing="0" cellpadding="0">
<tr valign="top"><td width="100%" valign="middle"><a href="git://github.com/felipec/gst-openmax.git"><u><font size="4" color="#0000FF">git://github.com/felipec/gst-openmax.git</font></u></a><font size="4"> </font></td></tr>
</table>
<br>
<br>
BR, bruno<br>
<img src="cid:10__=4EBBFE04DFAB3F518f9e8a93df938690@nxp.com" width="16" height="16" alt="Inactive hide details for &quot;Ling Shi&quot; &lt;shil66@gmail.com&gt;">&quot;Ling Shi&quot; &lt;shil66@gmail.com&gt;<br>
<br>
<br>

<table width="100%" border="0" cellspacing="0" cellpadding="0">
<tr valign="top"><td style="background-image:url(cid:20__=4EBBFE04DFAB3F518f9e8a93df938690@nxp.com); background-repeat: no-repeat; " width="40%">
<ul><b><font size="2">&quot;Ling Shi&quot; &lt;shil66@gmail.com&gt;</font></b><font size="2"> </font>
<p><font size="2">2008-07-30 03:15 PM</font></ul>
</td><td width="60%">
<table width="100%" border="0" cellspacing="0" cellpadding="0">
<tr valign="top"><td width="1%" valign="middle"><img src="cid:30__=4EBBFE04DFAB3F518f9e8a93df938690@nxp.com" border="0" height="1" width="58" alt=""><br>
<div align="right"><font size="2">To</font></div></td><td width="100%"><img src="cid:30__=4EBBFE04DFAB3F518f9e8a93df938690@nxp.com" border="0" height="1" width="1" alt=""><br>
<font size="2">&quot;Felipe Contreras&quot; &lt;felipe.contreras@nokia.com&gt;, &quot;Bruno Smets&quot; &lt;bruno.smets@nxp.com&gt;</font></td></tr>

<tr valign="top"><td width="1%" valign="middle"><img src="cid:30__=4EBBFE04DFAB3F518f9e8a93df938690@nxp.com" border="0" height="1" width="58" alt=""><br>
<div align="right"><font size="2">cc</font></div></td><td width="100%"><img src="cid:30__=4EBBFE04DFAB3F518f9e8a93df938690@nxp.com" border="0" height="1" width="1" alt=""><br>
<font size="2">gstreamer-openmax@lists.sourceforge.net, gstreamer-embedded@lists.sourceforge.net</font></td></tr>

<tr valign="top"><td width="1%" valign="middle"><img src="cid:30__=4EBBFE04DFAB3F518f9e8a93df938690@nxp.com" border="0" height="1" width="58" alt=""><br>
<div align="right"><font size="2">Subject</font></div></td><td width="100%"><img src="cid:30__=4EBBFE04DFAB3F518f9e8a93df938690@nxp.com" border="0" height="1" width="1" alt=""><br>
<font size="2">Re: [Gstreamer-openmax] Discussion on the hardware accelerator solution in GstOpenMAX project.</font></td></tr>
</table>

<table border="0" cellspacing="0" cellpadding="0">
<tr valign="top"><td width="58"><img src="cid:30__=4EBBFE04DFAB3F518f9e8a93df938690@nxp.com" border="0" height="1" width="1" alt=""></td><td width="336"><img src="cid:30__=4EBBFE04DFAB3F518f9e8a93df938690@nxp.com" border="0" height="1" width="1" alt=""></td></tr>
</table>
</td></tr>
</table>
<br>
<font size="4">Felipe and Bruno,<br>
Thank for your reply. We have a very similar idea on how to use OMX in gst. Now, I got more confidence to use, involve, and contribute into this project.<br>
<br>
Brouno,<br>
Could you tell me where can find your change? Is it possible for me to study your code before release?<br>
<br>
Felipe,<br>
TI OMAP 3xxx is just one of our target platform. I just got an TI OMAP 3xxx board in test. I will investigate the OMX IL code from omap zoom. <br>
</font><font size="4" color="#3366FF"><br>
Please check other comments in line.</font><font size="4"><br>
<br>
</font><br>
<font size="4">On Wed, Jul 30, 2008 at 4:39 PM, Felipe Contreras &lt;</font><a href="mailto:felipe.contreras@nokia.com"><u><font size="4" color="#0000FF">felipe.contreras@nokia.com</font></u></a><font size="4">&gt; wrote:</font>
<ul><font size="4">Hi,</font><br>
<font size="4"><br>
On Wed, 2008-07-30 at 15:00 +0800, ext Ling Shi wrote:<br>
&gt; Hi, all<br>
&gt; I'm in a research project to port gstreamer into embedded system. Now,<br>
&gt; we encounter the issue on how to integrate hardware accelerators<br>
&gt; (DSP/GPU) into gst. After evaluating different solution, we think<br>
&gt; GstOpenMAX project may be the best one for us, because<br>
&gt;<br>
&gt;   1) OpenMAX is an industry standard<br>
&gt;   2) more and more DSP/GPU vendor support OpenMAX<br>
&gt;<br>
&gt; But, I still have several questions on this project.<br>
&gt; 1. Does Nokia N8xx serials use GstOpenMAX?<br>
&gt; I know Nokia engineers lead this project. I also know N8xx serials use<br>
&gt; gstreamer as default playback engine, and it uses TI OMAP 2420, which<br>
&gt; has DSP. Can anyone tell me if N8xx use GstOpenMAX? If no, does N8xx<br>
&gt; plan to use it in the future?<br>
</font><br>
<font size="4">The current Maemo Products don't use OpenMAX IL, they use TI's DSP<br>
directly through the open source version of the DSP bridge (DSP<br>
gateway).<br>
<br>
The plan is to use OpenMAX IL so we can choose between different<br>
implementations without much effort.<br>
<br>
TI has started to provide their OpenMAX IL source code:</font><u><font size="4" color="#0000FF"><br>
</font></u><a href="http://omapzoom.org/gf/project/openmax/wiki/" target="_blank"><u><font size="4" color="#0000FF">http://omapzoom.org/gf/project/openmax/wiki/</font></u></a><br>
<font size="4"><br>
&gt; 2. What's GstOpenMAX plan to support DSP/GPU in the future?<br>
&gt; I review several plugins in GstOpenMAX and find current design can<br>
&gt; only support none-tunnel communication.  It's not the best solution in<br>
&gt; hardware, because of bad performance. So, we plan to improve it by<br>
&gt; adding tunneled or proprietary communication. Do you have such plan?<br>
&gt; If yes, can we involve in design?<br>
</font><br>
<font size="4">Indeed, as Bruno mentions, NXP has contributed code that adds support<br>
for tunneled communication. It is maintained in a separate branch and<br>
will soon be merged to the master branch.</font><br>
<font size="4"><br>
&gt; In addition, most accelerators work as a decoder and a render. It<br>
&gt; means, the encoded data sent to it will directly be decoded and<br>
&gt; rendered, and will not be retrieved back again. How the gst or omx<br>
&gt; organize its pipeline in this situation? We are evaluating two<br>
&gt; solutions.<br>
&gt;<br>
&gt; ===Solution 1===<br>
&gt; We can design a super omx sink component to cover decoder and render.<br>
&gt; This is the solution is used by N8xx.<br>
&gt; src ! demux ! sink<br>
&gt;                          |<br>
&gt;                        super omx sink<br>
&gt;                          |<br>
&gt;                    +--------------------------------------------+<br>
&gt;                     |    hardware accelerator                 |<br>
&gt;                    +--------------------------------------------+<br>
</font><br>
<font size="4">The disadvantage of this solution is that it requires the creation of<br>
many elements to cover all the possible combination of elements. This<br>
becomes specially a problem when you add for example some filtering,<br>
like a volume control, etc.</font></ul>
<font size="4" color="#3366FF"><br>
[Shi Ling]<br>
You idea is exaclty same with me. I also think it's not a good solution.</font><font size="4"><br>
</font><br>
<font size="4"> </font>
<ul><br>
<font size="4"><br>
&gt; ===Solution 2===<br>
&gt; We can separate omx decoder, omx post processer, and omx sink<br>
&gt; elements. We enhance decoder, post processor, and sink plugin in<br>
&gt; GstOpenMAX. If GstOpenMAX plugin found its neighborhood are GstOpenMAX<br>
&gt; plugin, it will try to establish tunneled communication or proprietary<br>
&gt; communication firstly. It means, although we have 3 OMX plugin in gst<br>
&gt; pipeline, there is no data in gst pad and omx port. The last two<br>
&gt; gst/omx plugin only provide control function, but not support process<br>
&gt; data flow. Of cause, If the connection is failed, it will use<br>
&gt; none-tunnel communication.<br>
&gt;<br>
&gt; src ! demux ! decoder ! post processor ! sink<br>
&gt;                             |                     |                  |<br>
&gt;                      omx dec          omx pp       omx sink<br>
&gt;                             |                     |                  |<br>
&gt;                    +--------------------------------------------+<br>
&gt;                     |    hardware accelerator                 |<br>
&gt;                    +--------------------------------------------+<br>
&gt;<br>
&gt; It seems solution 2 is more flexible. How about your suggestion on the<br>
&gt; 2 solutions? Which one is feasible? Do you have other solutions?<br>
</font><br>
<font size="4">This is exactly how NXP implemented it and seems to be working fine.<br>
<br>
The problem I see with both solutions is that there will be A/V sync<br>
issues when using OMX sinks in tunneling mode. The idea is to solve<br>
these issues by mapping the OMX clock to the GST clock. However, this<br>
hasn't been implemented yet.</font></ul>
<font size="4" color="#3366FF">[Shi Ling] <br>
Yes, so many things need to be improved in the future.<br>
</font>
<ul><font size="4"><br>
<br>
Best regards.<br>
<br>
--</font><font size="4" color="#888888"><br>
Felipe Contreras<br>
</font></ul>
<br>
</body></html>