Hi, gstreamer-devel:<br><br>&nbsp;&nbsp;&nbsp; Normally, it should be no problem if you just change your gstreamer from 0.10.9 to 0.10.21. &quot;max-size-buffers&quot; should also work.<br><br>&nbsp;&nbsp;&nbsp; So, I think you should provide more debug infos and do some tests(E.g: put a probe before your video/audio sinks and see whether there is buffers flow into them; Turn on debug infos on basesink and your sink elements and see what the sinks exactly do during preroll) yourself and figure out why the preroll can&#39;t be performed. <br>
<br>Eric Zhang<br><br><div class="gmail_quote">2008/12/28 Sameer Naik <span dir="ltr">&lt;<a href="mailto:sameer.subscriptions@damagehead.com">sameer.subscriptions@damagehead.com</a>&gt;</span><br><blockquote class="gmail_quote" style="border-left: 1px solid rgb(204, 204, 204); margin: 0pt 0pt 0pt 0.8ex; padding-left: 1ex;">
Hi,<br>
I have written a &nbsp;gstreamer plugin that does video decoding on specialized<br>
hardware, and also written a videosink plugin that opens the framebuffer<br>
device,etc . For optimizing the entire pipeline the videosink plugin has the<br>
_pad_alloc functionality, that directly makes available the framebuffer memory<br>
to the decoder plugin, so that the output images can directly be written to<br>
the video memory. I would also mention, that the videosink can make available<br>
3 such buffers (triple buffering) to the decoder, so effectively the decoder<br>
should not request for more than three buffers at the same time, in which case<br>
if it does the _pad_alloc function will not return any buffer.<br>
Now, if i construct my pipeline as such<br>
<br>
gst-launch filesrc location=file.mpeg ! demultiplexer name=demux ! videodecoder<br>
! queue ! videosink &nbsp;demux. ! audiodecoder ! audioconvert ! queue ! audiosink<br>
<br>
what happens is, due to the queue element (after the videodecoder), the part<br>
of the bin goes into its own thread. as a result, the videodecoder ends up<br>
making a lot more buffer requests to the videosink, than the videosink can<br>
really allocate.<br>
Due to this, in gstreamer version 0.10.9 i would add the queue before the<br>
videodecoder. like so<br>
<br>
gst-launch filesrc location=file.mpeg ! demultiplexer name=demux ! queue !<br>
videodecoder ! videosink &nbsp;demux. ! audiodecoder ! audioconvert ! queue !<br>
audiosink<br>
<br>
and everything works fine.<br>
<br>
But the current version 0.10.21 does not allow me to do this, as in the<br>
pipeline does not PREROLL.<br>
<br>
I would like to know, whether it is possible to control how the queue<br>
functions so that it does not store more than 3 buffers. i tried specifying<br>
max-size-buffers=3 on the queue, but it did not help.<br>
I would also be interested in knowing any other ways this can be taken care<br>
of.<br>
<br>
Reagrds<br>
~Sameer<br>
<br>
<br>
------------------------------------------------------------------------------<br>
_______________________________________________<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>
</blockquote></div><br>