<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. 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 <ceyusa@gmail.com><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 <<a ymailto="mailto:shil66@gmail.com" href="mailto:shil66@gmail.com">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 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>><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 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>