<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 3.2//EN">
<HTML>
<HEAD>
<META HTTP-EQUIV="Content-Type" CONTENT="text/html; charset=iso-8859-1">
<META NAME="Generator" CONTENT="MS Exchange Server version 6.5.7650.28">
<TITLE>RE: [gst-devel] GStreamer plug-ins for OpenMAX IL, code for review</TITLE>
</HEAD>
<BODY>
<!-- Converted from text/plain format -->

<P><FONT SIZE=2>&gt; Hi,<BR>
&gt;<BR>
&gt; On 9:38:19 pm 28/11/2006 &quot;Felipe Contreras&quot; &lt;felipe.contreras@gmail.com&gt;<BR>
&gt; wrote:<BR>
&gt;<BR>
&gt; &gt; &gt;&nbsp; Next problem is the mp3-decoder does not work. Apart from not<BR>
&gt; &gt; &gt;&nbsp; finding the decoder, the plugin should also error out here (abort<BR>
&gt; &gt; &gt; the processing).<BR>
&gt; &gt; &gt;&nbsp; $ gst-launch filesrc location=song.mp3 ! omxdec_mp3 ! omxsink_alsa<BR>
&gt; &gt; &gt;&nbsp; Setting pipeline to PAUSED ...<BR>
&gt; &gt; &gt;&nbsp; Component OMX_Mp3Decoder not found, sorry...<BR>
&gt; &gt; &gt;&nbsp; Pipeline is PREROLLING ...<BR>
&gt; &gt; &gt;<BR>
&gt; In gstomxaudioenc.c the mp3encoder is hardcoded to be<BR>
&gt;&nbsp;&nbsp; .omx_component = &quot;OMX_AmrEncoder&quot;,<BR>
&gt; but from my openmax registry the name appears to be &quot;OMX.st.ffmpeg.mp3dec&quot;.<BR>
&gt;<BR>
&gt; $ cat $HOME/.omxregistry<BR>
&gt; OMX.st.alsa.alsasink ==&gt; /usr/lib/omxilcomponents//libomxalsa.so<BR>
&gt; OMX.volume.component ==&gt; /usr/lib/omxilcomponents//libomxvolcontrol.so<BR>
&gt; OMX.st.ffmpeg.mp3dec ==&gt; /usr/lib/omxilcomponents//libomxffmpeg.so<BR>
&gt;<BR>
&gt; I have the impression the wrapper contain a hard-coded list of<BR>
&gt; omx-components they wrap, regardless of wheter those components are<BR>
&gt; available or not. Wouldn't it be possible to do this dynamically?<BR>
<BR>
Actually the wrapper doesn't know anything about the components; the client, in<BR>
this case the GStreamer plug-in, is the one that has the hard-coded component<BR>
names.<BR>
<BR>
I was thinking on making a property on the GStreamer elements, it's not<BR>
complicated at all.<BR>
<BR>
&gt; &gt; &gt;&nbsp; This even crashes :(<BR>
&gt; &gt; &gt;&nbsp; $ GST_DEBUG=&quot;*:2&quot; gst-launch videotestsrc ! omxenc_h263 !<BR>
&gt; &gt; &gt;&nbsp; ffdec_h263 ! xvimagesink<BR>
&gt; &gt; &gt;&nbsp; 0:00:00.222504000&nbsp; 9811 0x8051a18 WARN&nbsp;&nbsp;&nbsp; GST_PLUGIN_LOADING<BR>
&gt; &gt; &gt;&nbsp; gstplugin.c:261:gst_plugin_register_func: plugin<BR>
&gt; &gt; &quot;/home/ensonic/buzztard/lib/gstreamer-0.10/libgstbml.so&quot; failed to<BR>
&gt; &gt; &gt;&nbsp; initialise Setting pipeline to PAUSED ...<BR>
&gt; &gt; &gt;&nbsp; Component OMX_VideoEncoder not found, sorry...<BR>
&gt; &gt; &gt;&nbsp; Pipeline is PREROLLING ...<BR>
&gt; &gt; &gt;&nbsp; 0:00:00.665092000&nbsp; 9810 0x81f2be8 ERROR&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; omx_videoenc<BR>
&gt; &gt; &gt;&nbsp; gstomxvideoenc.c:792:gst_gomx_videoenc_sink_setcaps:&lt;omxench2630&gt;<BR>
&gt; &gt; &gt;&nbsp; bad resolution 320x240<BR>
&gt; &gt; &gt;&nbsp; 0:00:00.665316000&nbsp; 9810 0x81f2be8 WARN&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; basesrc<BR>
&gt; &gt; &gt;&nbsp; gstbasesrc.c:1614:gst_base_src_loop:&lt;videotestsrc0&gt; error:<BR>
&gt; &gt; &gt;&nbsp; Internal data flow error.<BR>
&gt; &gt; &gt;&nbsp; 0:00:00.665430000&nbsp; 9810 0x81f2be8 WARN&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; basesrc<BR>
&gt; &gt; &gt;&nbsp; gstbasesrc.c:1614:gst_base_src_loop:&lt;videotestsrc0&gt; error:<BR>
&gt; &gt; &gt;&nbsp; streaming task paused, reason not-negotiated (-4)<BR>
&gt; &gt; &gt;&nbsp; ERROR: from element /pipeline0/videotestsrc0: Internal data flow<BR>
&gt; &gt; &gt;&nbsp; error. Additional debug info:<BR>
&gt; &gt; &gt;&nbsp; gstbasesrc.c(1614): gst_base_src_loop (): /pipeline0/videotestsrc0:<BR>
&gt; &gt; &gt;&nbsp; streaming task paused, reason not-negotiated (-4)<BR>
&gt; &gt; &gt;&nbsp; ERROR: pipeline doesn't want to preroll.<BR>
&gt; &gt; &gt;&nbsp; Setting pipeline to NULL ...<BR>
&gt; &gt; &gt;&nbsp; Segmentation fault<BR>
&gt; &gt;<BR>
&gt; &gt; Thanks for pointing that out. In fact the mp3 decoder is in early<BR>
&gt; &gt; stages of development and is probably the only one that is not<BR>
&gt; &gt; properly working with the TI implementation. So I guess it also<BR>
&gt; &gt; wouldn't work with the omxil one.<BR>
&gt; &gt;<BR>
&gt; &gt; But yes, it should not crash if the component doesn't exist. Our<BR>
&gt; &gt; wrapper still needs error handling, better logging and other important<BR>
&gt; &gt; things.<BR>
&gt;<BR>
&gt; Yes I noticed that I don't have those openmax codecs you wrap, so it should<BR>
&gt; not register any of those elements.<BR>
<BR>
It might be possible to do that, but not if we retrieve the name of the OpenMAX<BR>
component from an element's property.<BR>
<BR>
&gt; &gt; &gt;&nbsp; I think its a good start, but needs some work on the robustness.<BR>
&gt; &gt; &gt;&nbsp; Now we need a decission about where development should take place?<BR>
&gt; &gt; &gt;&nbsp; Would a freedesktop.org cvs repository be okay for ti?<BR>
&gt; &gt; &gt;&nbsp; If so shall we import the current sources? Or do you use CVS<BR>
&gt; &gt; &gt;&nbsp; internally and we could use that as a basis?<BR>
&gt; &gt;<BR>
&gt; &gt; I agree.<BR>
&gt; &gt;<BR>
&gt; &gt; We could use any repository and import the current sources. Personally<BR>
&gt; &gt; I would prefer git, or Subversion, but any would do. Do you guys plan<BR>
&gt; &gt; to move from CVS to something different?<BR>
&gt; &gt;<BR>
&gt; I think svn would be possible on freenode.org. The gomx project could also<BR>
&gt; become a sf.net project.<BR>
<BR>
We would prefer an account on the GStreamer repositories, just like gst-ffmpeg,<BR>
but if that's not possible we will setup it in SF.<BR>
<BR>
--<BR>
Felipe Contreras</FONT>
</P>

</BODY>
</HTML>