Hi,<br><br><div class="gmail_quote">On Thu, Nov 4, 2010 at 11:35 AM, HaroldJRoth <span dir="ltr">&lt;<a href="mailto:dlafferty@gmail.com">dlafferty@gmail.com</a>&gt;</span> wrote:<br><blockquote class="gmail_quote" style="margin: 0pt 0pt 0pt 0.8ex; border-left: 1px solid rgb(204, 204, 204); padding-left: 1ex;">
<div><div></div>GstBaseSink doesn&#39;t drop the buffers.  If it did, the queue element would<br></div>
not be able to fill up.  </blockquote><div><br>right.<br> </div><blockquote class="gmail_quote" style="margin: 0pt 0pt 0pt 0.8ex; border-left: 1px solid rgb(204, 204, 204); padding-left: 1ex;">I&#39;m pretty sure that the &quot;sync&quot; is set to false.<br>
</blockquote><div><br>if you&#39;re using the default value, it&#39;s TRUE. You may try and set the max-lateness property but using GST_CLOCK_TIME_NONE for your timestamps makes the basesink log out a message (you can see it with GST_DEBUG=basesink:5) and not to drop anything.<br>
 </div><blockquote class="gmail_quote" style="margin: 0pt 0pt 0pt 0.8ex; border-left: 1px solid rgb(204, 204, 204); padding-left: 1ex;">
So, I&#39;m guessing that my GstBaseSink specialisation does not properly pull<br>
an element out of the queue buffer.  Either my GstBaseSink should signal<br>
that its ready to take another, or my GstBaseSink should signal that an item<br>
has been removed.  Currently, my GstBaseSink carries out the default<br>
behaviour, which results in it getting Paused by what I beleive to be a<br>
signal coming from the queue.<br></blockquote><div><br>it&#39;s likely that basesink behaves that way because of the timestamps you&#39;re feeding it with and its default working mode. Either you set your sink&#39;s sync property to FALSE or (better) you  fix the timestamps in the source element.<br>
 </div><blockquote class="gmail_quote" style="margin: 0pt 0pt 0pt 0.8ex; border-left: 1px solid rgb(204, 204, 204); padding-left: 1ex;">
<br>
BTW, do you know of a mechanism for viewing the signal processing in the<br>
GstBaseSink?<br></blockquote><div><br>GST_DEBUG=basesink:5 is the best I&#39;m aware of. You can also do like gst-launch and connect an handler to the deep-notify signal in your pipeline (you&#39;ll get plenty of data).<br>
<br><a href="http://www.gstreamer.net/data/doc/gstreamer/head/gstreamer/html/GstObject.html#GstObject-deep-notify">http://www.gstreamer.net/data/doc/gstreamer/head/gstreamer/html/GstObject.html#GstObject-deep-notify</a><br>
<br>Regards<br> <br></div><blockquote class="gmail_quote" style="margin: 0pt 0pt 0pt 0.8ex; border-left: 1px solid rgb(204, 204, 204); padding-left: 1ex;">
<div><div></div><div class="h5"><br>
<br>
<br>
Marco Ballesio wrote:<br>
&gt;<br>
&gt;&gt; E.g.<br>
&gt;&gt;<br>
&gt;&gt; GstBuffer * buffer = gst_buffer_new();<br>
&gt;&gt; GST_BUFFER_SIZE (buffer) = g_data_packet.pkt_len;<br>
&gt;&gt; GST_BUFFER_MALLOCDATA (buffer) = (guint8*)g_malloc<br>
&gt;&gt; (g_data_packet.pkt_len);<br>
&gt;&gt; GST_BUFFER_DATA (buffer) = GST_BUFFER_MALLOCDATA (buffer);<br>
&gt;&gt;<br>
&gt;&gt; GST_DEBUG (&quot;feed buffer %p, len -%u&quot;, buffer, g_data_packet.pkt_len);<br>
&gt;&gt;<br>
&gt;&gt; // @todo change to memcpy or something sensible<br>
&gt;&gt; for (int i = 0 ; i &lt; g_data_packet.pkt_len; i++) {<br>
&gt;&gt;        GST_BUFFER_DATA(buffer)[i] = g_data_packet.data[i];<br>
&gt;&gt; }<br>
&gt;&gt; GST_BUFFER_TIMESTAMP(buffer)   =GST_CLOCK_TIME_NONE;<br>
&gt;&gt;<br>
&gt;<br>
&gt; I suggest you to fix this event if the &quot;sync=false&quot; works , unless it is<br>
&gt; really what you want.<br>
&gt;<br>
&gt;<br>
&gt;&gt;<br>
&gt;&gt; of b) should I revise the GstBaseSink to restart the pipeline?  (Don&#39;t<br>
&gt;&gt; know<br>
&gt;&gt; what the code would look like)<br>
&gt;&gt;<br>
&gt;<br>
&gt; I&#39;m not a great expert about dynamic pipelines, but afaik you should add<br>
&gt; all<br>
&gt; the elements when the pipeline is in NULL (or PAUSED) state, then trigger<br>
&gt; the state changes to PLAYING.<br>
&gt;<br>
&gt; At least in my experience, violations may bring you to unpredictable<br>
&gt; results<br>
&gt; (and extra-hackish-code to write for manually dealing with state changes).<br>
&gt;<br>
&gt; Regards<br>
&gt;<br>
&gt;<br>
<br>
</div></div>The elements in my pipeline are fixed.  I don&#39;t add or remove elements.  I<br>
am talking about sending a signal from the GstBaseSink to it upstream, and<br>
adjacent, queue.  However, I don&#39;t think I can get away with telling the<br>
queue to state transition from PAUSED to PLAYING, as its buffer is full.<br>
--<br>
View this message in context: <a href="http://gstreamer-devel.966125.n4.nabble.com/Queue-Flow-Control-req-d-by-GstBaseSink-or-GST-BUFFER-TIMESTAMP-problems-tp3025912p3026734.html" target="_blank">http://gstreamer-devel.966125.n4.nabble.com/Queue-Flow-Control-req-d-by-GstBaseSink-or-GST-BUFFER-TIMESTAMP-problems-tp3025912p3026734.html</a><br>

<div class="im">Sent from the GStreamer-devel mailing list archive at Nabble.com.<br>
<br>
------------------------------------------------------------------------------<br>
</div>The Next 800 Companies to Lead America&#39;s Growth: New Video Whitepaper<br>
David G. Thomson, author of the best-selling book &quot;Blueprint to a<br>
Billion&quot; shares his insights and actions to help propel your<br>
business during the next growth cycle. Listen Now!<br>
<a href="http://p.sf.net/sfu/SAP-dev2dev" target="_blank">http://p.sf.net/sfu/SAP-dev2dev</a><br>
<div><div></div><div class="h5">_______________________________________________<br>
gstreamer-devel mailing list<br>
<a href="mailto:gstreamer-devel@lists.sourceforge.net">gstreamer-devel@lists.sourceforge.net</a><br>
<a href="https://lists.sourceforge.net/lists/listinfo/gstreamer-devel" target="_blank">https://lists.sourceforge.net/lists/listinfo/gstreamer-devel</a><br>
</div></div></blockquote></div><br>