<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
</head>
<body text="#000000" bgcolor="#FFFFFF">
<div class="moz-cite-prefix">On 16/5/19 1:11 pm, R C wrote:<br>
</div>
<blockquote type="cite"
cite="mid:8e654d6d-7dfd-9845-5ab5-d12c53e4f420@gmail.com">
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<p><font size="+1"><tt>so while messing with it, I forgot to
change teh second part, and even though it seems
incosistent, can someone explain why this works? (I am just
putting the declarations here, rewritting to ugly got's
into something nicr is not the problem)</tt></font></p>
<p><font size="+1"><tt><br>
</tt></font></p>
<p><font size="+1"><tt>in the main part the declarations I had
are:</tt></font></p>
<p><font size="+1"><tt>// Create the elements<br>
data.source = gst_element_factory_make("uridecodebin",
"source");<br>
data.audioconvert = gst_element_factory_make("audioconvert",
"audioconvert");<br>
data.audiosink = gst_element_factory_make("autoaudiosink",
"audiosink");<br>
data.videoconvert = gst_element_factory_make("videoconvert",
"videoconvert");<br>
data.videosink = gst_element_factory_make("autovideosink",
"videosink");</tt></font></p>
<p><font size="+1"><tt><br>
</tt></font></p>
<p><font size="+1"><tt>and I forgot to make the changes in the
second part (pad_added_handler), surprised it worked, and
seems counter-intuitive?</tt></font></p>
<p><font size="+1"><tt>GstPad *audiosink_pad =
gst_element_get_static_pad(data->audioconvert, "sink");<br>
GstPad *videosink_pad =
gst_element_get_static_pad(data->videoconvert, "sink");<br>
</tt></font></p>
</blockquote>
<br>
"sink" is the name of the pad on the element you're retrieving from
(audio/videoconvert in this case) not the name of the element.<br>
<br>
<blockquote type="cite"
cite="mid:8e654d6d-7dfd-9845-5ab5-d12c53e4f420@gmail.com">
<p><font size="+1"><tt> </tt></font></p>
<p><font size="+1"><tt>but .. why?? How can it even find the
right GstElement, since none of the are named "sink"?<br>
</tt></font></p>
</blockquote>
<br>
The element is the 'data->audio/videoconvert' parameters you pass
into 'gst_element_get_static_pad'.<br>
<br>
Cheers<br>
-Matt<br>
<br>
<blockquote type="cite"
cite="mid:8e654d6d-7dfd-9845-5ab5-d12c53e4f420@gmail.com">
<p><font size="+1"><tt>docs:</tt></font></p>
<p><font size="+1"><tt>******************************************************************<br>
</tt></font></p>
<h3>gst_element_get_static_pad ()</h3>
<pre class="programlisting"><a class="link" href="https://gstreamer.freedesktop.org/data/doc/gstreamer/head/gstreamer/html/GstPad.html" title="GstPad" moz-do-not-send="true"><span class="returnvalue">GstPad</span></a> *
gst_element_get_static_pad (<em class="parameter"><code><a class="link" href="https://gstreamer.freedesktop.org/data/doc/gstreamer/head/gstreamer/html/GstElement.html" title="GstElement" moz-do-not-send="true"><span class="type">GstElement</span></a> *element</code></em>,
<em class="parameter"><code>const <a href="https://gstreamer.freedesktop.org/usr/share/gtk-doc/html/glib/glib-Basic-Types.html#gchar" moz-do-not-send="true"><span class="type">gchar</span></a> *name</code></em>);</pre>
<p>Retrieves a pad from <em class="parameter"><code>element</code></em>
by name. This version only retrieves already-existing (i.e.
'static') pads.</p>
<p><b>Parameters</b></p>
<p>element a <a class="link"
href="https://gstreamer.freedesktop.org/data/doc/gstreamer/head/gstreamer/html/GstElement.html"
title="GstElement" moz-do-not-send="true"><span class="type">GstElement</span></a>
to find a static pad of.</p>
<p>name the name of the static <a class="link"
href="https://gstreamer.freedesktop.org/data/doc/gstreamer/head/gstreamer/html/GstPad.html"
title="GstPad" moz-do-not-send="true"><span class="type">GstPad</span></a>
to retrieve.</p>
<h4>Returns</h4>
<p>the requested <a class="link"
href="https://gstreamer.freedesktop.org/data/doc/gstreamer/head/gstreamer/html/GstPad.html"
title="GstPad" moz-do-not-send="true"><span class="type">GstPad</span></a>
if found, otherwise <a
href="https://gstreamer.freedesktop.org/usr/share/gtk-doc/html/glib/glib-Standard-Macros.html#NULL:CAPS"
moz-do-not-send="true"><code class="literal">NULL</code></a>.
unref after usage.</p>
<p>MT safe. <br>
</p>
<p>************************************************************************<br>
</p>
<p><br>
</p>
<p><br>
</p>
<p><font size="+1"><tt>thanks,</tt></font></p>
<p><font size="+1"><tt><br>
</tt></font></p>
<p><font size="+1"><tt>Ron<br>
</tt></font></p>
<p><font size="+1"><tt><br>
</tt></font></p>
<p><br>
</p>
<div class="moz-cite-prefix">On 5/15/19 8:33 PM, R C wrote:<br>
</div>
<blockquote type="cite"
cite="mid:9a76bcb8-5103-7b6f-c11b-7d4007afd511@gmail.com">
<meta http-equiv="content-type" content="text/html;
charset=UTF-8">
<p><tt><font size="+1">Hello,</font></tt></p>
<p><tt><font size="+1">I am trying to get a little more familiar
with gstreamer, and thought I'd do some</font></tt></p>
<p><tt><font size="+1">of the "basic" programming tutorial
examples.</font></tt></p>
<p><tt><font size="+1"><br>
</font></tt></p>
<p><tt><font size="+1">I </font></tt>did play with the 3rd
example:</p>
<p><a class="moz-txt-link-freetext"
href="https://gstreamer.freedesktop.org/documentation/tutorials/basic/dynamic-pipelines.html?gi-language=c"
moz-do-not-send="true">https://gstreamer.freedesktop.org/documentation/tutorials/basic/dynamic-pipelines.html?gi-language=c</a></p>
<p><br>
</p>
<p>If I copy the example, and compile it, it works, no surprise
there. But when I change it and do the "exercise", I get some
weirdness.<br>
</p>
<p><br>
</p>
<p>What I noticed is (well I probably missed something)... but
the function call:</p>
<pre class=" language-c"><code class=" language-c">data<span class="token punctuation">.</span>sink <span class="token operator">=</span> gst_element_factory_make <span class="token punctuation">(</span><span class="token string">"autoaudiosink"</span><span class="token punctuation">,</span> <span class="token string">"sink"</span><span class="token punctuation">)</span><span class="token punctuation">;
</span>According to the docs, the 2nd parameter can be 'whatever' you want to name it.
Since I wanted to do the video part too, I figure I should change the name to
"audio-something", and changed the second function call to:
</code><code class=" language-c"> data.convert = gst_element_factory_make ("audioconvert", "convert"); (original)
data.sink = gst_element_factory_make ("autoaudiosink", "audiosink"); (changed name)<span class="token punctuation"></span></code>
of course in the even handler (pad_added_handler), the name needs to be changed in to:
<code class=" language-c">GstPad *sink_pad = gst_element_get_static_pad (data->convert, "audiosink");<span class="token punctuation">
Browsing through the code, that should be it, BUT it seems "</span></code><code class=" language-c">sink_pad</code>"<code class=" language-c"><span class="token punctuation"></span></code><code class=" language-c"></code> always is NULL
and the pipeline elements don't/can't be linked. (see errors below)
since this is supposed to be a simple example, what am I missing?
thanks,
Ron
errors:
# ./basic-tutorial-3
Pipeline state changed from NULL to READY:
Received new pad 'src_0' from 'source':
(basic-tutorial-3:14679): GStreamer-CRITICAL **: 20:22:54.991: gst_pad_is_linked: assertion 'GST_IS_PAD (pad)' failed
It has type 'video/x-raw' which is not raw audio. Ignoring.
(basic-tutorial-3:14679): GStreamer-CRITICAL **: 20:22:54.992: gst_object_unref: assertion 'object != NULL' failed
Received new pad 'src_1' from 'source':
(basic-tutorial-3:14679): GStreamer-CRITICAL **: 20:22:54.992: gst_pad_is_linked: assertion 'GST_IS_PAD (pad)' failed
(basic-tutorial-3:14679): GStreamer-CRITICAL **: 20:22:54.992: gst_pad_link_full: assertion 'GST_IS_PAD (sinkpad)' failed
Type is 'audio/x-raw' but link failed.
(basic-tutorial-3:14679): GStreamer-CRITICAL **: 20:22:54.992: gst_object_unref: assertion 'object != NULL' failed
Error received from element source: Internal data stream error.
Debugging information: gstbasesrc.c(2950): gst_base_src_loop (): /GstPipeline:test-pipeline/GstURIDecodeBin:source/GstSoupHTTPSrc:source:
streaming stopped, reason not-linked (-1)
</pre>
</blockquote>
<br>
<fieldset class="mimeAttachmentHeader"></fieldset>
<pre class="moz-quote-pre" wrap="">_______________________________________________
gstreamer-devel mailing list
<a class="moz-txt-link-abbreviated" href="mailto:gstreamer-devel@lists.freedesktop.org">gstreamer-devel@lists.freedesktop.org</a>
<a class="moz-txt-link-freetext" href="https://lists.freedesktop.org/mailman/listinfo/gstreamer-devel">https://lists.freedesktop.org/mailman/listinfo/gstreamer-devel</a></pre>
</blockquote>
<p><br>
</p>
</body>
</html>