<html><head><style type="text/css"><!-- DIV {margin:0px;} --></style></head><body><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;ceyusa@gmail.com&gt;<br>收件人:
 gstreamer-openmax@lists.sourceforge.net<br>已发送: 2008/8/1(周五), 上午6:38:27<br>主题: Re: [Gstreamer-openmax] Discussion on the hardware accelerator solution in GstOpenMAX project.<br><br>Even though I haven't work in these things for a while, I used to and<br>have thoughts about them.<br><br>I haven'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'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'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's easy to build and setup the omx pipelines given the caps<br>2. it's easy to control the sync<br>3. it's easy add gst interfaces as volume, contrast, et all<br>4. it'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'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 ymailto="mailto:shil66@gmail.com" href="mailto:shil66@gmail.com">shil66@gmail.com</a>&gt; wrote:<br>&gt; Hi, all<br>&gt; I'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'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'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'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 ymailto="mailto:Gstreamer-openmax@lists.sourceforge.net" href="mailto:Gstreamer-openmax@lists.sourceforge.net">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'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 ymailto="mailto:Gstreamer-openmax@lists.sourceforge.net" 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></div></div></div><br>


      <hr size=1><a href="http://cn.mail.yahoo.com/"> 雅虎邮箱,您的终生邮箱!</a></body></html>