<?xml version="1.0" encoding="UTF-8"?><rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
		>
<channel>
	<title>Comments on: GStreamer Dynamic Pads, Explained</title>
	<atom:link href="http://www.jonobacon.org/2006/11/03/gstreamer-dynamic-pads-explained/feed/" rel="self" type="application/rss+xml" />
	<link>http://www.jonobacon.org/2006/11/03/gstreamer-dynamic-pads-explained/</link>
	<description>At home with Jono Bacon, Community Manager and Author</description>
	<lastBuildDate>Sat, 11 Feb 2012 21:46:00 +0000</lastBuildDate>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.3.1</generator>
	<item>
		<title>By: GStreamer, RTP and live streaming &#8212; Alexandre Bourget</title>
		<link>http://www.jonobacon.org/2006/11/03/gstreamer-dynamic-pads-explained/comment-page-1/#comment-130774</link>
		<dc:creator>GStreamer, RTP and live streaming &#8212; Alexandre Bourget</dc:creator>
		<pubDate>Fri, 19 Jun 2009 07:05:13 +0000</pubDate>
		<guid isPermaLink="false">http://www.jonobacon.org/?p=810#comment-130774</guid>
		<description>&lt;p&gt;[...] http://www.jonobacon.org/2006/11/03/gstreamer-dynamic-pads-explained/ [...]&lt;/p&gt;
</description>
		<content:encoded><![CDATA[<p>[...] <a href="http://www.jonobacon.org/2006/11/03/gstreamer-dynamic-pads-explained/" rel="nofollow">http://www.jonobacon.org/2006/11/03/gstreamer-dynamic-pads-explained/</a> [...]</p>]]></content:encoded>
	</item>
	<item>
		<title>By: Christian Schaller</title>
		<link>http://www.jonobacon.org/2006/11/03/gstreamer-dynamic-pads-explained/comment-page-1/#comment-130274</link>
		<dc:creator>Christian Schaller</dc:creator>
		<pubDate>Wed, 18 Mar 2009 11:12:21 +0000</pubDate>
		<guid isPermaLink="false">http://www.jonobacon.org/?p=810#comment-130274</guid>
		<description>&lt;p&gt;Hi Jono,
I am actually using your tutorials to teach myself some basic python/gstreamer hacking. One thing you might want to change in your example is naming your alsasink element &#039;sink&#039; as it confused the hell out of me when I then saw &#039;sink&#039; again in the pad.link argument.&lt;/p&gt;
</description>
		<content:encoded><![CDATA[<p>Hi Jono,
I am actually using your tutorials to teach myself some basic python/gstreamer hacking. One thing you might want to change in your example is naming your alsasink element &#8216;sink&#8217; as it confused the hell out of me when I then saw &#8216;sink&#8217; again in the pad.link argument.</p>]]></content:encoded>
	</item>
	<item>
		<title>By: GroteBozeWolf</title>
		<link>http://www.jonobacon.org/2006/11/03/gstreamer-dynamic-pads-explained/comment-page-1/#comment-82720</link>
		<dc:creator>GroteBozeWolf</dc:creator>
		<pubDate>Sat, 14 Jul 2007 15:47:07 +0000</pubDate>
		<guid isPermaLink="false">http://www.jonobacon.org/?p=810#comment-82720</guid>
		<description>&lt;p&gt;I would like to create a never stopping stream of data (to send to an icecast server, with shout2send..). In my case, i want to play files, using a playlist. But i don&#039;t understand how to make gstreamer aware of loading the next file, if the other one is ended. I understand i have to change something in the pipeline.&lt;/p&gt;

&lt;p&gt;The pipeline for one file is: filesrc file1.mp3 ! decodebin ! audioconvert ! lame ! etc.&lt;/p&gt;

&lt;p&gt;After file1.mp3 is finished, i have to make filesrc aware to load a new file, or i have to cut filesrc file1 from the pipeline and reconnect anew filesrc element. But how do i do that?&lt;/p&gt;
</description>
		<content:encoded><![CDATA[<p>I would like to create a never stopping stream of data (to send to an icecast server, with shout2send..). In my case, i want to play files, using a playlist. But i don&#8217;t understand how to make gstreamer aware of loading the next file, if the other one is ended. I understand i have to change something in the pipeline.</p>

<p>The pipeline for one file is: filesrc file1.mp3 ! decodebin ! audioconvert ! lame ! etc.</p>

<p>After file1.mp3 is finished, i have to make filesrc aware to load a new file, or i have to cut filesrc file1 from the pipeline and reconnect anew filesrc element. But how do i do that?</p>]]></content:encoded>
	</item>
	<item>
		<title>By: Kyle</title>
		<link>http://www.jonobacon.org/2006/11/03/gstreamer-dynamic-pads-explained/comment-page-1/#comment-69054</link>
		<dc:creator>Kyle</dc:creator>
		<pubDate>Tue, 19 Jun 2007 00:35:50 +0000</pubDate>
		<guid isPermaLink="false">http://www.jonobacon.org/?p=810#comment-69054</guid>
		<description>&lt;p&gt;How would you set up a queue to play many files sequentially or randomly?  Would you have a pipeline in your play pipeline or just have a boolean test after it is done playing and if it isn&#039;t the last in the a queue list and then play that file?  Thanks for nay response.&lt;/p&gt;
</description>
		<content:encoded><![CDATA[<p>How would you set up a queue to play many files sequentially or randomly?  Would you have a pipeline in your play pipeline or just have a boolean test after it is done playing and if it isn&#8217;t the last in the a queue list and then play that file?  Thanks for nay response.</p>]]></content:encoded>
	</item>
	<item>
		<title>By: Lone Wolves - Web, game, and open source development</title>
		<link>http://www.jonobacon.org/2006/11/03/gstreamer-dynamic-pads-explained/comment-page-1/#comment-21186</link>
		<dc:creator>Lone Wolves - Web, game, and open source development</dc:creator>
		<pubDate>Sat, 27 Jan 2007 16:56:59 +0000</pubDate>
		<guid isPermaLink="false">http://www.jonobacon.org/?p=810#comment-21186</guid>
		<description>&lt;p&gt;[...] Anoher thing I wanted an excuse for was learning gstreamer, so naturally I picked python-gstreamer. Sadly there&#039;s a huge lack of documentation for it. There are only a few good tutorials around, first and foremost Jona Bacon&#039;s excellent tutorials [1][2][3]. I wanted my hack to work over TCP as well, because I have multiple music libraries. One on my home server, one on my desktop, a bit more on my laptop, etcetera. I want to be able to stream from other machines to my server which I&#039;ll hook up to my stereo. I could not find any tutorials on using tcpserversource and tcpclientsink elements, so honoring Jona&#039;s request that everyone &#8220;should write an article about something that you have discovered that isn’t particularly well documented&#8221;, here&#039;s mine about tcpserversource and tcpclientsink. [...]&lt;/p&gt;
</description>
		<content:encoded><![CDATA[<p>[...] Anoher thing I wanted an excuse for was learning gstreamer, so naturally I picked python-gstreamer. Sadly there&#8217;s a huge lack of documentation for it. There are only a few good tutorials around, first and foremost Jona Bacon&#8217;s excellent tutorials [1][2][3]. I wanted my hack to work over TCP as well, because I have multiple music libraries. One on my home server, one on my desktop, a bit more on my laptop, etcetera. I want to be able to stream from other machines to my server which I&#8217;ll hook up to my stereo. I could not find any tutorials on using tcpserversource and tcpclientsink elements, so honoring Jona&#8217;s request that everyone &ldquo;should write an article about something that you have discovered that isn’t particularly well documented&rdquo;, here&#8217;s mine about tcpserversource and tcpclientsink. [...]</p>]]></content:encoded>
	</item>
	<item>
		<title>By: jonobacon@home &#187; Using Gnonlin with GStreamer and Python</title>
		<link>http://www.jonobacon.org/2006/11/03/gstreamer-dynamic-pads-explained/comment-page-1/#comment-15903</link>
		<dc:creator>jonobacon@home &#187; Using Gnonlin with GStreamer and Python</dc:creator>
		<pubDate>Wed, 27 Dec 2006 20:03:24 +0000</pubDate>
		<guid isPermaLink="false">http://www.jonobacon.org/?p=810#comment-15903</guid>
		<description>&lt;p&gt;[...] In GStreamer there is a concept called Dynamic Pads. What this means is that with some objects in GStreamer, pads only get added when other things have been processed, and one such item is the gnlcomposition. Before the gnlcomposition can know what pads should be added, it needs to check which gnlfilesources it has and automatically figure out which elements are required to process the media that you want to play. All of this happens automatically, but it means that you cannot assume that it will have a pad - once the gnlcomposition has figured out what it is doing with its gnlfilesources it will then provide a pad. See GStreamer Dynamic Pads, Explained for more details on this. [...]&lt;/p&gt;
</description>
		<content:encoded><![CDATA[<p>[...] In GStreamer there is a concept called Dynamic Pads. What this means is that with some objects in GStreamer, pads only get added when other things have been processed, and one such item is the gnlcomposition. Before the gnlcomposition can know what pads should be added, it needs to check which gnlfilesources it has and automatically figure out which elements are required to process the media that you want to play. All of this happens automatically, but it means that you cannot assume that it will have a pad &#8211; once the gnlcomposition has figured out what it is doing with its gnlfilesources it will then provide a pad. See GStreamer Dynamic Pads, Explained for more details on this. [...]</p>]]></content:encoded>
	</item>
	<item>
		<title>By: Tristan</title>
		<link>http://www.jonobacon.org/2006/11/03/gstreamer-dynamic-pads-explained/comment-page-1/#comment-9702</link>
		<dc:creator>Tristan</dc:creator>
		<pubDate>Wed, 22 Nov 2006 00:30:55 +0000</pubDate>
		<guid isPermaLink="false">http://www.jonobacon.org/?p=810#comment-9702</guid>
		<description>&lt;p&gt;David,&lt;/p&gt;

&lt;p&gt;I see where you&#039;re coming from.&lt;/p&gt;

&lt;p&gt;Here, self.filesrc is a GStreamer filesrc element, which is a Python object. This object has various properties, one of which is a &quot;name&quot; field, which in this case is equal to &quot;source&quot;. This name is how GStreamer refers to the element.&lt;/p&gt;

&lt;p&gt;I agree that it&#039;s a bit confusing, that an element can have a (Python) object name that&#039;s different from its GStreamer name; I tend to set them to be the same whenever I create an element, so I don&#039;t get mixed up :)&lt;/p&gt;
</description>
		<content:encoded><![CDATA[<p>David,</p>

<p>I see where you&#8217;re coming from.</p>

<p>Here, self.filesrc is a GStreamer filesrc element, which is a Python object. This object has various properties, one of which is a &#8220;name&#8221; field, which in this case is equal to &#8220;source&#8221;. This name is how GStreamer refers to the element.</p>

<p>I agree that it&#8217;s a bit confusing, that an element can have a (Python) object name that&#8217;s different from its GStreamer name; I tend to set them to be the same whenever I create an element, so I don&#8217;t get mixed up <img src='http://www.jonobacon.org/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' /> </p>]]></content:encoded>
	</item>
	<item>
		<title>By: Kushal Das</title>
		<link>http://www.jonobacon.org/2006/11/03/gstreamer-dynamic-pads-explained/comment-page-1/#comment-9217</link>
		<dc:creator>Kushal Das</dc:creator>
		<pubDate>Sun, 19 Nov 2006 03:53:15 +0000</pubDate>
		<guid isPermaLink="false">http://www.jonobacon.org/?p=810#comment-9217</guid>
		<description>&lt;p&gt;while running the above example follwing error is coming:&lt;/p&gt;

&lt;p&gt;python: Python/ceval.c:2531: PyEval_EvalCodeEx: Assertion `tstate != ((void *)0)&#039; failed.
Aborted&lt;/p&gt;
</description>
		<content:encoded><![CDATA[<p>while running the above example follwing error is coming:</p>

<p>python: Python/ceval.c:2531: PyEval_EvalCodeEx: Assertion `tstate != ((void *)0)&#8217; failed.
Aborted</p>]]></content:encoded>
	</item>
	<item>
		<title>By: David Nielsen</title>
		<link>http://www.jonobacon.org/2006/11/03/gstreamer-dynamic-pads-explained/comment-page-1/#comment-5674</link>
		<dc:creator>David Nielsen</dc:creator>
		<pubDate>Sun, 05 Nov 2006 02:50:01 +0000</pubDate>
		<guid isPermaLink="false">http://www.jonobacon.org/?p=810#comment-5674</guid>
		<description>&lt;p&gt;well at least we are all learning from this.. I had never touched GStreamer code before but now I&#039;m getting into it by reading Jono&#039; examples..&lt;/p&gt;
</description>
		<content:encoded><![CDATA[<p>well at least we are all learning from this.. I had never touched GStreamer code before but now I&#8217;m getting into it by reading Jono&#8217; examples..</p>]]></content:encoded>
	</item>
	<item>
		<title>By: Jonathan Hitchcock</title>
		<link>http://www.jonobacon.org/2006/11/03/gstreamer-dynamic-pads-explained/comment-page-1/#comment-5629</link>
		<dc:creator>Jonathan Hitchcock</dc:creator>
		<pubDate>Sat, 04 Nov 2006 15:04:16 +0000</pubDate>
		<guid isPermaLink="false">http://www.jonobacon.org/?p=810#comment-5629</guid>
		<description>&lt;p&gt;Insert &quot;not a gstreamer fundi&quot; disclaimer here, but doesn&#039;t your decodebin element want to link to the &#039;convert&#039; element, and not to the &#039;sink&#039; element?&lt;/p&gt;

&lt;p&gt;In other words, your callback:&lt;/p&gt;

&lt;p&gt;def OnDynamicPad(self, dbin, pad, islast):
      print &quot;OnDynamicPad Called!&quot;
      pad.link(self.convert.get_pad(&quot;sink&quot;))&lt;/p&gt;

&lt;p&gt;Should be, if I&#039;m right:
  def OnDynamicPad(self, dbin, pad, islast):
      print &quot;OnDynamicPad Called!&quot;
      pad.link(self.convert.get_pad(&quot;convert&quot;))&lt;/p&gt;

&lt;p&gt;Not so?&lt;/p&gt;

&lt;p&gt;Still, we get the point - thanks for the explanation!&lt;/p&gt;
</description>
		<content:encoded><![CDATA[<p>Insert &#8220;not a gstreamer fundi&#8221; disclaimer here, but doesn&#8217;t your decodebin element want to link to the &#8216;convert&#8217; element, and not to the &#8216;sink&#8217; element?</p>

<p>In other words, your callback:</p>

<p>def OnDynamicPad(self, dbin, pad, islast):
      print &#8220;OnDynamicPad Called!&#8221;
      pad.link(self.convert.get_pad(&#8220;sink&#8221;))</p>

<p>Should be, if I&#8217;m right:
  def OnDynamicPad(self, dbin, pad, islast):
      print &#8220;OnDynamicPad Called!&#8221;
      pad.link(self.convert.get_pad(&#8220;convert&#8221;))</p>

<p>Not so?</p>

<p>Still, we get the point &#8211; thanks for the explanation!</p>]]></content:encoded>
	</item>
</channel>
</rss>

