Hi Edward,<br><br>&gt;Those are two things:<br>
 &gt; * Getting the parent element (of what ? a pad ? another element ?) =&gt;<br>
&gt;use the appropriate gst_*_get_parent().<br><br>Yes. I tried it in the same way.<br>gst_element_get_parent() gave me &quot;pipeline0&quot; and not the parent element name. Is it because I&#39;m casting it?<br>Now, two questions...<br>
1. it there a way to get the GstElement object corresponds to a particular GstPad object? A macro or something? I was expecting GST_ELEMENT to do the casting. <br>I&#39;m referring to <br><pre><span id="l678"><font style="font-family: arial narrow,sans-serif;" size="2">element = <span class="chl" id="m0">GST_ELEMENT</span> (GST_OBJECT_PARENT (rpad));</font><br>
</span></pre>from line no 678,<br><a href="http://www.google.com/codesearch?hl=en&amp;q=GST_ELEMENT+show:7kqxMMVD25A:h1NDCsbGCXw:9xQ-bHfcgJ4&amp;sa=N&amp;cd=5&amp;ct=rc&amp;cs_p=http://gstreamer.freedesktop.org/src/gst-editor/gst-editor-0.7.0.tar.bz2&amp;cs_f=gst-editor-0.7.0/libs/gst/editor/gsteditorpad.c">http://www.google.com/codesearch?hl=en&amp;q=GST_ELEMENT+show:7kqxMMVD25A:h1NDCsbGCXw:9xQ-bHfcgJ4&amp;sa=N&amp;cd=5&amp;ct=rc&amp;cs_p=http://gstreamer.freedesktop.org/src/gst-editor/gst-editor-0.7.0.tar.bz2&amp;cs_f=gst-editor-0.7.0/libs/gst/editor/gsteditorpad.c</a> <br>
<br>2. Is there any api to query the running pipeline? Some string that contains the pipeline name, at least?<br><br>&nbsp;
 &gt;* Getting the GstElementFactory details of an instance. =&gt;<br>
&gt;gst_element_get_factory() =&gt; gst_element_factory_get_*().<br>
<br>You are talking about gst_element_factory_get_longname(), right? This needs the return value of gst_element_factory_find(&quot;element name&quot;) to be passed, where the element name is unknown at compile time. What I intend to do is something like this.<br>
<font size="2"><span style="font-family: arial narrow,sans-serif;"><br>gst-launch-0.10 filesrc location=file.avi ! ffdemux_avi ! queue ! &lt;my decoder plugin&gt; ! alsasink</span></font><br>
<br>Is it possible to extract the demuxer name (run time) from my decoder element?<br><br>Thanks a lot,<br>Gireesh<br><br><br><div class="gmail_quote">On Thu, Nov 6, 2008 at 9:44 PM, Edward Hervey <span dir="ltr">&lt;<a href="mailto:edward.hervey@collabora.co.uk" target="_blank">edward.hervey@collabora.co.uk</a>&gt;</span> wrote:<br>


<blockquote class="gmail_quote" style="border-left: 1px solid rgb(204, 204, 204); margin: 0pt 0pt 0pt 0.8ex; padding-left: 1ex;">
<div>On Thu, 2008-11-06 at 21:33 +0530, Gireesh Kumar M wrote:<br>
&gt; Hi Edward,<br>
&gt;<br>
&gt; Thanks for your reply.<br>
&gt; Yes, it&#39;s essential to check the return values, but this is just a<br>
&gt; sample code by which I wanted to demonstrate what I&#39;m trying to do.<br>
<br>
</div> &nbsp;Fair enough, in that case don&#39;t mention the segfaults.<br>
<div><br>
&gt; What I&#39;m keen to know are<br>
&gt; 1. is there any api which will directly give me the parent element<br>
&gt; details (something like gst_get_factory_name())<br>
<br>
</div> &nbsp;Those are two things:<br>
 &nbsp;* Getting the parent element (of what ? a pad ? another element ?) =&gt;<br>
use the appropriate gst_*_get_parent().<br>
 &nbsp;* Getting the GstElementFactory details of an instance. =&gt;<br>
gst_element_get_factory() =&gt; gst_element_factory_get_*().<br>
<div><div></div><div><br>
&gt; 2. Is it possible to extract the element information by any other<br>
&gt; means?<br>
&gt;<br>
&gt; Thanks again,<br>
&gt; Gireesh<br>
&gt;<br>
&gt; On Thu, Nov 6, 2008 at 7:54 PM, Edward Hervey<br>
&gt; &lt;<a href="mailto:edward.hervey@collabora.co.uk" target="_blank">edward.hervey@collabora.co.uk</a>&gt; wrote:<br>
&gt; &nbsp; &nbsp; &nbsp; &nbsp; On Thu, 2008-11-06 at 18:46 +0530, Gireesh Kumar M wrote:<br>
&gt; &nbsp; &nbsp; &nbsp; &nbsp; &gt; Hi All,<br>
&gt; &nbsp; &nbsp; &nbsp; &nbsp; &gt;<br>
&gt; &nbsp; &nbsp; &nbsp; &nbsp; &gt; Is there any way to extract the parent element information<br>
&gt; &nbsp; &nbsp; &nbsp; &nbsp; from a<br>
&gt; &nbsp; &nbsp; &nbsp; &nbsp; &gt; gstreamer element?<br>
&gt; &nbsp; &nbsp; &nbsp; &nbsp; &gt; I tried it using the following code snippets but none of<br>
&gt; &nbsp; &nbsp; &nbsp; &nbsp; them worked.<br>
&gt; &nbsp; &nbsp; &nbsp; &nbsp; &gt;<br>
&gt; &nbsp; &nbsp; &nbsp; &nbsp; &gt;<br>
&gt; &nbsp; &nbsp; &nbsp; &nbsp; &gt; GstElement *elem =<br>
&gt; &nbsp; &nbsp; &nbsp; &nbsp; &gt; GST_ELEMENT_CAST(gst_element_get_parent(GST_ELEMENT(pad)));<br>
&gt;<br>
&gt;<br>
&gt; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;Yay, casting a GstPad to a GstElement (!?!?!?).<br>
&gt; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;Yay, not checking for the return value of<br>
&gt; &nbsp; &nbsp; &nbsp; &nbsp; gst_element_get_parent().<br>
&gt;<br>
&gt; &nbsp; &nbsp; &nbsp; &nbsp; &gt; g_print(&quot;In element %s\n&quot;,<br>
&gt; &nbsp; &nbsp; &nbsp; &nbsp; gst_element_get_name(elem)); //-------this<br>
&gt; &nbsp; &nbsp; &nbsp; &nbsp; &gt; displays current element name properly<br>
&gt; &nbsp; &nbsp; &nbsp; &nbsp; &gt;<br>
&gt; &nbsp; &nbsp; &nbsp; &nbsp; &gt; elem = GST_ELEMENT_CAST(gst_element_get_parent(elem));<br>
&gt;<br>
&gt;<br>
&gt; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;Yay, not checking for the return value of<br>
&gt; &nbsp; &nbsp; &nbsp; &nbsp; gst_element_get_parent().<br>
&gt;<br>
&gt; &nbsp; &nbsp; &nbsp; &nbsp; &gt; g_print(&quot;Parent element is %s\n&quot;,<br>
&gt; &nbsp; &nbsp; &nbsp; &nbsp; &gt; gst_element_get_name(elem)); //---this displays pipeline0<br>
&gt; &nbsp; &nbsp; &nbsp; &nbsp; &gt;<br>
&gt; &nbsp; &nbsp; &nbsp; &nbsp; &gt;<br>
&gt; &nbsp; &nbsp; &nbsp; &nbsp; &gt; elem = GST_ELEMENT_CAST(gst_element_get_parent(elem));<br>
&gt; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;//--this<br>
&gt;<br>
&gt;<br>
&gt; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;Yay, not checking for the return value of<br>
&gt; &nbsp; &nbsp; &nbsp; &nbsp; gst_element_get_parent().<br>
&gt;<br>
&gt; &nbsp; &nbsp; &nbsp; &nbsp; &gt; &nbsp;throws the following error<br>
&gt; &nbsp; &nbsp; &nbsp; &nbsp; &gt; g_print(&quot;Grand Parent element is %s\n&quot;,<br>
&gt; &nbsp; &nbsp; &nbsp; &nbsp; gst_element_get_name(elem));<br>
&gt; &nbsp; &nbsp; &nbsp; &nbsp; &gt;<br>
&gt; &nbsp; &nbsp; &nbsp; &nbsp; &gt; /*(gst-launch-0.10:488): GStreamer-CRITICAL **:<br>
&gt; &nbsp; &nbsp; &nbsp; &nbsp; gst_object_get_name:<br>
&gt; &nbsp; &nbsp; &nbsp; &nbsp; &gt; assertion `GS<br>
&gt; &nbsp; &nbsp; &nbsp; &nbsp; &gt; T_IS_OBJECT (object)&#39; failed<br>
&gt; &nbsp; &nbsp; &nbsp; &nbsp; &gt; Caught SIGSEGV accessing address (nil)<br>
&gt; &nbsp; &nbsp; &nbsp; &nbsp; &gt; Spinning. &nbsp;Please run &#39;gdb gst-launch 488&#39; to continue<br>
&gt; &nbsp; &nbsp; &nbsp; &nbsp; debugging,<br>
&gt; &nbsp; &nbsp; &nbsp; &nbsp; &gt; Ctrl-C to quit<br>
&gt; &nbsp; &nbsp; &nbsp; &nbsp; &gt; , or Ctrl-\ to dump core. */<br>
&gt; &nbsp; &nbsp; &nbsp; &nbsp; &gt;<br>
&gt; &nbsp; &nbsp; &nbsp; &nbsp; &gt;<br>
&gt; &nbsp; &nbsp; &nbsp; &nbsp; &gt; Then I tried,<br>
&gt; &nbsp; &nbsp; &nbsp; &nbsp; &gt;<br>
&gt; &nbsp; &nbsp; &nbsp; &nbsp; &gt; GstElement *elem =<br>
&gt; &nbsp; &nbsp; &nbsp; &nbsp; &gt; GST_ELEMENT_CAST(gst_element_get_parent(GST_ELEMENT(pad)));<br>
&gt;<br>
&gt;<br>
&gt; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;Yay, not checking for the return value of<br>
&gt; &nbsp; &nbsp; &nbsp; &nbsp; gst_element_get_parent().<br>
&gt; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;YAY, casting a GstPad to a GstElement (!?!?!?!)<br>
&gt;<br>
&gt; &nbsp; &nbsp; &nbsp; &nbsp; &gt; elem = GST_ELEMENT_CAST(gst_element_get_parent(elem));<br>
&gt; &nbsp; &nbsp; &nbsp; &nbsp; &gt;<br>
&gt; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;Yay, not checking for the return value of<br>
&gt; &nbsp; &nbsp; &nbsp; &nbsp; gst_element_get_parent().<br>
&gt;<br>
&gt; &nbsp; &nbsp; &nbsp; &nbsp; &gt; GstElementClass *kl = GST_ELEMENT_GET_CLASS(elem);<br>
&gt;<br>
&gt;<br>
&gt; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;Yay, not checking for the return value of<br>
&gt; &nbsp; &nbsp; &nbsp; &nbsp; GST_ELEMENT_GET_CLASS().<br>
&gt;<br>
&gt; &nbsp; &nbsp; &nbsp; &nbsp; &gt; g_print(&quot;In element %s\n&quot;,<br>
&gt; &nbsp; &nbsp; &nbsp; &nbsp; &gt; gst_object_get_name((GstObject*)(kl.details-&gt;longname));<br>
&gt; &nbsp; &nbsp; &nbsp; &nbsp; &gt;<br>
&gt; &nbsp; &nbsp; &nbsp; &nbsp; &gt; This again gave pipeline0, where I&#39;m expecting the actual<br>
&gt; &nbsp; &nbsp; &nbsp; &nbsp; name of the<br>
&gt; &nbsp; &nbsp; &nbsp; &nbsp; &gt; element. It would be great if anyone can guide me.<br>
&gt;<br>
&gt;<br>
&gt; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;So, to summarize: You&#39;re asking for the parent of the parent<br>
&gt; &nbsp; &nbsp; &nbsp; &nbsp; of the<br>
&gt; &nbsp; &nbsp; &nbsp; &nbsp; pad.<br>
&gt; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;The parent of the pad : The element to which the pad (maybe)<br>
&gt; &nbsp; &nbsp; &nbsp; &nbsp; belongs.<br>
&gt; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;The parent of the element to which the pad belongs : a<br>
&gt; &nbsp; &nbsp; &nbsp; &nbsp; pipeline.<br>
&gt;<br>
&gt; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;There&#39;s nothing wrong in what it&#39;s returning, but please...<br>
&gt; &nbsp; &nbsp; &nbsp; &nbsp; if you<br>
&gt; &nbsp; &nbsp; &nbsp; &nbsp; haven&#39;t noticed by now... always check the return values of<br>
&gt; &nbsp; &nbsp; &nbsp; &nbsp; functions/methods. It&#39;ll avoid you from calling<br>
&gt; &nbsp; &nbsp; &nbsp; &nbsp; methods/functions with<br>
&gt; &nbsp; &nbsp; &nbsp; &nbsp; invalid arguments.<br>
&gt;<br>
&gt; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;Edward<br>
&gt;<br>
&gt; &nbsp; &nbsp; &nbsp; &nbsp; &gt;<br>
&gt; &nbsp; &nbsp; &nbsp; &nbsp; &gt; Many thanks in advance,<br>
&gt; &nbsp; &nbsp; &nbsp; &nbsp; &gt; Gireesh<br>
&gt;<br>
&gt;<br>
&gt; &nbsp; &nbsp; &nbsp; &nbsp; &gt;<br>
&gt; &nbsp; &nbsp; &nbsp; &nbsp; -------------------------------------------------------------------------<br>
&gt; &nbsp; &nbsp; &nbsp; &nbsp; &gt; This SF.Net email is sponsored by the Moblin Your Move<br>
&gt; &nbsp; &nbsp; &nbsp; &nbsp; Developer&#39;s challenge<br>
&gt; &nbsp; &nbsp; &nbsp; &nbsp; &gt; Build the coolest Linux based applications with Moblin SDK &amp;<br>
&gt; &nbsp; &nbsp; &nbsp; &nbsp; win great prizes<br>
&gt; &nbsp; &nbsp; &nbsp; &nbsp; &gt; Grand prize is a trip for two to an Open Source event<br>
&gt; &nbsp; &nbsp; &nbsp; &nbsp; anywhere in the world<br>
&gt; &nbsp; &nbsp; &nbsp; &nbsp; &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; &nbsp; &nbsp; &nbsp; &nbsp; &gt; _______________________________________________<br>
&gt; &nbsp; &nbsp; &nbsp; &nbsp; Gstreamer-embedded mailing list<br>
&gt; &nbsp; &nbsp; &nbsp; &nbsp; <a href="mailto:Gstreamer-embedded@lists.sourceforge.net" target="_blank">Gstreamer-embedded@lists.sourceforge.net</a><br>
&gt; &nbsp; &nbsp; &nbsp; &nbsp; <a href="https://lists.sourceforge.net/lists/listinfo/gstreamer-embedded" target="_blank">https://lists.sourceforge.net/lists/listinfo/gstreamer-embedded</a><br>
&gt;<br>
&gt;<br>
&gt;<br>
<br>
</div></div></blockquote></div><br>