<div dir="ltr">Hi All,<br><br>I'm working on a project based on several different hardware platforms. TI 34xx is one of my option. I'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. Supper source/sink element or tunneling solution is something depends how OMX was implemented on a specific hardware. OMX IL spec didn'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 for audio streaming. <a href="http://omapzoom.org/gf/project/openmax/wiki/">http://omapzoom.org/gf/project/openmax/wiki</a> 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? 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't want to give a recommendation or specification for OMX IL provider on how to paration there OMX IL components. Mybe I'm not right?<br><br><br>Thanks & Regards<br>Wang Fei.<br><br>
<br><br><br><div class="gmail_quote">2008/8/1 Dale Tian <span dir="ltr"><<a href="mailto:daletian@yahoo.cn">daletian@yahoo.cn</a>></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. But for camera use case, we need similiar elements, supersrc and viewfinder, and also a convertor element for format translation. If omx provides demux and mux support, gstreamer layer will be very thin. 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 <<a href="mailto:ceyusa@gmail.com" target="_blank">ceyusa@gmail.com</a>><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'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 <<a href="mailto:shil66@gmail.com" target="_blank">shil66@gmail.com</a>> wrote:<br>> Hi, all<br>> I'm in a research project to port gstreamer into embedded system. Now, we<br>
> encounter the issue on how to integrate hardware accelerators (DSP/GPU) into<br>> gst. After evaluating different solution, we think GstOpenMAX project may be<br>> the best one for us, because<br>><br>> 1) OpenMAX is an industry standard<br>
> 2) more and more DSP/GPU vendor support OpenMAX<br>><br>> But, I still have several questions on this project.<br>> 1. Does Nokia N8xx serials use GstOpenMAX?<br>> I know Nokia engineers lead
this project. I also know N8xx serials use<br>> gstreamer as default playback engine, and it uses TI OMAP 2420, which has<br>> DSP. Can anyone tell me if N8xx use GstOpenMAX? If no, does N8xx plan to use<br>> it in the future?<br>
><br>> 2. What's GstOpenMAX plan to support DSP/GPU in the future?<br>> I review several plugins in GstOpenMAX and find current design can only<br>> support none-tunnel communication. It's not the best solution in hardware,<br>
> because of bad performance. So, we plan to improve it by adding tunneled or<br>> proprietary communication. Do you have such plan? If yes, can we involve in<br>> design?<br>><br>> In addition, most accelerators work as a decoder and a render. It means, the<br>
> encoded data sent to it will directly be decoded and rendered, and will not<br>> be retrieved back again. How the gst or omx organize its pipeline in this<br>> situation? We are evaluating two
solutions.<br>><br>> ===Solution 1===<br>> We can design a super omx sink component to cover decoder and render. This<br>> is the solution is used by N8xx.<br>> src ! demux ! sink<br>> |<br>
> super omx sink<br>> |<br>> +--------------------------------------------+<br>> | hardware accelerator |<br>
> +--------------------------------------------+<br>><br>> ===Solution 2===<br>> We
can separate omx decoder, omx post processer, and omx sink elements. We<br>> enhance decoder, post processor, and sink plugin in GstOpenMAX. If<br>> GstOpenMAX plugin found its neighborhood are GstOpenMAX plugin, it will try<br>
> to establish tunneled communication or proprietary communication firstly. It<br>> means, although we have 3 OMX plugin in gst pipeline, there is no data in<br>> gst pad and omx port. The last two gst/omx plugin only provide control<br>
> function, but not support process data flow. Of cause, If the connection is<br>> failed, it will use none-tunnel communication.<br>><br>> src ! demux ! decoder ! post processor ! sink<br>> | | |<br>
>
omx dec omx pp omx sink<br>> | | |<br>> +--------------------------------------------+<br>> | hardware accelerator |<br>
> +--------------------------------------------+<br>><br>> It seems solution 2 is more flexible. How about your suggestion on the 2<br>> solutions? Which one is feasible? Do you have other solutions?<br>
><br>> Thank
you very much.<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 & win great<br>
> 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&url=/" target="_blank">http://moblin-contest.org/redirect.php?banner_id=100&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>
><br>><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 & 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&url=/" target="_blank">http://moblin-contest.org/redirect.php?banner_id=100&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's challenge<br>
Build the coolest Linux based applications with Moblin SDK & 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&url=/" target="_blank">http://moblin-contest.org/redirect.php?banner_id=100&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>