<div dir="ltr">Hi All,<br><br>I&#39;m working on a project based on several different hardware platforms. TI 34xx is one of my option. I&#39;m very interest on topic 2: how to integration GStreamer with OMX on GPU/DSP hardware solutions. My thoughts are as follows:<br>
<br>1.&nbsp; Supper source/sink element or tunneling solution is something depends how OMX was implemented on a specific hardware. OMX IL spec didn&#39;t specify how to partition different processing functions into OMX IL components (Refer to openmax_il_spec_1_1_1.pdf page 21, Figure 2-1). For example, in TI OMAP3, a C64x DSP was equiped, a super OMX component was provided by TI&nbsp; for audio streaming. <a href="http://omapzoom.org/gf/project/openmax/wiki/">http://omapzoom.org/gf/project/openmax/wiki</a>&nbsp;&nbsp; The super OMX component includes audio decode, PP, rendering functions which were processed by C64x DSP. In such case, seems a supper GstOpenMax sink element is the only choice?&nbsp; In another OpenMAX IL implementation, decoder, render provided by separate OMX complents, in such case, maybe separate GstOpenMAX elements support OMX tunneling is better.<br>
<br>2. I guess GstOpenMAX didn&#39;t want to give a recommendation or specification for OMX IL provider on how to paration there OMX IL components. Mybe I&#39;m not right?<br><br><br>Thanks &amp; Regards<br>Wang Fei.<br><br>
<br><br><br><div class="gmail_quote">2008/8/1 Dale Tian <span dir="ltr">&lt;<a href="mailto:daletian@yahoo.cn">daletian@yahoo.cn</a>&gt;</span><br><blockquote class="gmail_quote" style="border-left: 1px solid rgb(204, 204, 204); margin: 0pt 0pt 0pt 0.8ex; padding-left: 1ex;">
<div><div style="font-family: times new roman,new york,times,serif; font-size: 12pt;"><div>Victor:<br>Your analysis sounds great for playback use case.&nbsp; But for camera&nbsp; use case, we need similiar elements, supersrc and viewfinder, and&nbsp; also a convertor element for format translation.&nbsp; If omx provides demux and mux support, gstreamer layer will be very thin.&nbsp; So I prefer the tunneling solution, gsteamer layer will focus on use case organization, omx side will focus on efficient data processing and hardware abstraction. <br>
<br>Best regards,<br>Dale<br></div><div style="font-family: times new roman,new york,times,serif; font-size: 12pt;"><br><div style="font-family: arial,helvetica,sans-serif; font-size: 10pt;">----- 原始邮件 ----<br>发件人: Victor Manuel Jáquez Leal &lt;<a href="mailto:ceyusa@gmail.com" target="_blank">ceyusa@gmail.com</a>&gt;<br>
收件人:
 <a href="mailto:gstreamer-openmax@lists.sourceforge.net" target="_blank">gstreamer-openmax@lists.sourceforge.net</a><br>已发送: 2008/8/1(周五), 上午6:38:27<br>主题: Re: [Gstreamer-openmax] Discussion on the hardware accelerator solution in GstOpenMAX project.<div>
<div></div><div class="Wj3C7c"><br><br>Even though I haven&#39;t work in these things for a while, I used to and<br>have thoughts about them.<br><br>I haven&#39;t read the NXP tunneling implementation in gstopenmax but once<br>
we implemented something related: when the omx gst element is linked<br>with another omx gst element a tunnel is setup, but as no buffers<br>traverse the pipeline, because the buffer communication is done<br>beneath the omx layer, we had to push ghost buffer (empty buffers with<br>
calculated metadata), and those ghost buffers simulated the gst a/v<br>sync, nevertheless the real a/v sync was done by omx.<br><br>That solution is not sound: might work in some cases but we couldn&#39;t<br>assure it for every case.<br>
<br>We dismissed the super sinks since the beginning of the
 development,<br>because, as you mentioned, is not a flexible solution.<br><br>But we have a trade of: the first solution is not concordant with the<br>gstreamer philosophy, and the second is not concordant with the omx<br>
philosophy, because a semantic overlapping, as in the buffer<br>communication assumptions, the state management among the components,<br>etc.<br><br>Nowadays I&#39;m more convinced that a supersink could be the best<br>solution to integrate gst and omx in the A/V playback use case:<br>
<br>1. it&#39;s easy to build and setup the omx pipelines given the caps<br>2. it&#39;s easy to control the sync<br>3. it&#39;s easy add gst interfaces as volume, contrast, et all<br>4. it&#39;s easy to manage the state among the omx components<br>
5. no dirty hacks as ghostbuffers<br>6. afaik the supersink elements can be autoplugged by playbin2<br><br>I admit the supersinks break the flexibility offered by gst, but as<br>far as i can foresee, is the straight strategy to
 obtain the<br>performance promised by omx in his interop profile.<br><br>Maybe one day the interop profile won&#39;t be necessary when the pBuffer<br>in the bufferheader leave its readonly property...<br><br>Víctor Manuel Jáquez Leal<br>
<br>On Wed, Jul 30, 2008 at 9:00 AM, Ling Shi &lt;<a href="mailto:shil66@gmail.com" target="_blank">shil66@gmail.com</a>&gt; wrote:<br>&gt; Hi, all<br>&gt; I&#39;m in a research project to port gstreamer into embedded system. Now, we<br>
&gt; encounter the issue on how to integrate hardware accelerators (DSP/GPU) into<br>&gt; gst. After evaluating different solution, we think GstOpenMAX project may be<br>&gt; 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 has<br>&gt; DSP. Can anyone tell me if N8xx use GstOpenMAX? If no, does N8xx plan to use<br>&gt; it in the future?<br>
&gt;<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 only<br>&gt; support none-tunnel communication.&nbsp; It&#39;s not the best solution in hardware,<br>
&gt; because of bad performance. So, we plan to improve it by adding tunneled or<br>&gt; proprietary communication. Do you have such plan? If yes, can we involve in<br>&gt; design?<br>&gt;<br>&gt; In addition, most accelerators work as a decoder and a render. It means, the<br>
&gt; encoded data sent to it will directly be decoded and rendered, and will not<br>&gt; be retrieved back again. How the gst or omx organize its pipeline in this<br>&gt; situation? We are evaluating two
 solutions.<br>&gt;<br>&gt; ===Solution 1===<br>&gt; We can design a super omx sink component to cover decoder and render. This<br>&gt; 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>&gt;<br>&gt; ===Solution 2===<br>&gt; We
 can separate omx decoder, omx post processer, and omx sink elements. We<br>&gt; enhance decoder, post processor, and sink plugin in GstOpenMAX. If<br>&gt; GstOpenMAX plugin found its neighborhood are GstOpenMAX plugin, it will try<br>
&gt; to establish tunneled communication or proprietary communication firstly. It<br>&gt; means, although we have 3 OMX plugin in gst pipeline, there is no data in<br>&gt; gst pad and omx port. The last two gst/omx plugin only provide control<br>
&gt; function, but not support process data flow. Of cause, If the connection is<br>&gt; failed, it will use 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 2<br>&gt; solutions? Which one is feasible? Do you have other solutions?<br>
&gt;<br>&gt; Thank
 you very much.<br>&gt; -------------------------------------------------------------------------<br>&gt; This SF.Net email is sponsored by the Moblin Your Move Developer&#39;s challenge<br>&gt; Build the coolest Linux based applications with Moblin SDK &amp; win great<br>
&gt; prizes<br>&gt; Grand prize is a trip for two to an Open Source event anywhere in the world<br>&gt; <a href="http://moblin-contest.org/redirect.php?banner_id=100&amp;url=/" target="_blank">http://moblin-contest.org/redirect.php?banner_id=100&amp;url=/</a><br>
&gt; _______________________________________________<br>&gt; Gstreamer-openmax mailing list<br>&gt; <a href="mailto:Gstreamer-openmax@lists.sourceforge.net" target="_blank">Gstreamer-openmax@lists.sourceforge.net</a><br>&gt; <a href="https://lists.sourceforge.net/lists/listinfo/gstreamer-openmax" target="_blank">https://lists.sourceforge.net/lists/listinfo/gstreamer-openmax</a><br>
&gt;<br>&gt;<br><br>-------------------------------------------------------------------------<br>This SF.Net email is sponsored by the Moblin Your Move Developer&#39;s challenge<br>Build the coolest Linux based applications with Moblin SDK &amp; win great prizes<br>
Grand prize is a trip for two to an Open Source event anywhere in the world<br><a href="http://moblin-contest.org/redirect.php?banner_id=100&amp;url=/" target="_blank">http://moblin-contest.org/redirect.php?banner_id=100&amp;url=/</a><br>
_______________________________________________<br>Gstreamer-openmax mailing list<br><a href="mailto:Gstreamer-openmax@lists.sourceforge.net" target="_blank">Gstreamer-openmax@lists.sourceforge.net</a><br><a href="https://lists.sourceforge.net/lists/listinfo/gstreamer-openmax" target="_blank">https://lists.sourceforge.net/lists/listinfo/gstreamer-openmax</a><br>
</div></div></div></div></div><br>


      <hr size="1"><a href="http://cn.mail.yahoo.com/" target="_blank"> 雅虎邮箱,您的终生邮箱!</a></div><br>-------------------------------------------------------------------------<br>
This SF.Net email is sponsored by the Moblin Your Move Developer&#39;s challenge<br>
Build the coolest Linux based applications with Moblin SDK &amp; win great prizes<br>
Grand prize is a trip for two to an Open Source event anywhere in the world<br>
<a href="http://moblin-contest.org/redirect.php?banner_id=100&amp;url=/" target="_blank">http://moblin-contest.org/redirect.php?banner_id=100&amp;url=/</a><br>_______________________________________________<br>
Gstreamer-openmax mailing list<br>
<a href="mailto:Gstreamer-openmax@lists.sourceforge.net">Gstreamer-openmax@lists.sourceforge.net</a><br>
<a href="https://lists.sourceforge.net/lists/listinfo/gstreamer-openmax" target="_blank">https://lists.sourceforge.net/lists/listinfo/gstreamer-openmax</a><br>
<br></blockquote></div><br></div>