<div dir="ltr">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><br><span style="color: rgb(51, 102, 255);">Please check other comments in line.<br>
</span><br><br><div class="gmail_quote">On Wed, Jul 30, 2008 at 4:39 PM, Felipe Contreras <span dir="ltr">&lt;<a href="mailto:felipe.contreras@nokia.com">felipe.contreras@nokia.com</a>&gt;</span> wrote:<br><blockquote class="gmail_quote" style="border-left: 1px solid rgb(204, 204, 204); margin: 0pt 0pt 0pt 0.8ex; padding-left: 1ex;">
Hi,<br>
<div class="Ih2E3d"><br>
On Wed, 2008-07-30 at 15:00 +0800, ext Ling Shi wrote:<br>
&gt; Hi, all<br>
&gt; I&#39;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; &nbsp; 1) OpenMAX is an industry standard<br>
&gt; &nbsp; 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>
<br>
</div>The current Maemo Products don&#39;t use OpenMAX IL, they use TI&#39;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:<br>
<a href="http://omapzoom.org/gf/project/openmax/wiki/" target="_blank">http://omapzoom.org/gf/project/openmax/wiki/</a><br>
<div class="Ih2E3d"><br>
&gt; 2. What&#39;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. &nbsp;It&#39;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>
<br>
</div>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.<br>
<div class="Ih2E3d"><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; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;|<br>
&gt; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;super omx sink<br>
&gt; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;|<br>
&gt; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;+--------------------------------------------+<br>
&gt; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; | &nbsp; &nbsp;hardware accelerator &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; |<br>
&gt; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;+--------------------------------------------+<br>
<br>
</div>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.</blockquote><div><br><span style="color: rgb(51, 102, 255);">[Shi Ling]</span><br style="color: rgb(51, 102, 255);"><span style="color: rgb(51, 102, 255);">You idea is exaclty same with me. I also think it&#39;s not a good solution.<br>
</span><br></div><div>&nbsp;</div><blockquote class="gmail_quote" style="border-left: 1px solid rgb(204, 204, 204); margin: 0pt 0pt 0pt 0.8ex; padding-left: 1ex;"><br>
<div class="Ih2E3d"><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; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; | &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; | &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;|<br>
&gt; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;omx dec &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;omx pp &nbsp; &nbsp; &nbsp; omx sink<br>
&gt; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; | &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; | &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;|<br>
&gt; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;+--------------------------------------------+<br>
&gt; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; | &nbsp; &nbsp;hardware accelerator &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; |<br>
&gt; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;+--------------------------------------------+<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>
<br>
</div>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&#39;t been implemented yet.<br></blockquote><div><span style="color: rgb(51, 102, 255);">[Shi Ling] <br>Yes, so many things need to be improved in the future.<br><br></span></div><blockquote class="gmail_quote" style="border-left: 1px solid rgb(204, 204, 204); margin: 0pt 0pt 0pt 0.8ex; padding-left: 1ex;">
<br>
<br>
Best regards.<br>
<br>
--<br>
<font color="#888888">Felipe Contreras<br>
<br>
</font></blockquote></div><br></div>