<div dir="ltr">Hi Josh<br><div class="gmail_extra"><br></div><div class="gmail_extra">Nothing wrong in the receiving end not keeping up with the sending end. In that case the sender should eventually stop handing out shmbuf upstream, which I believe it does. Adding a leaky queue upstream will then lead to dropping buffers, which is predictable. However, what seems to happen is that shmsink stops sending shmbuf into shm area or stop signal them as sent over its control pipe, if shm-size is below some currently not understood threshold, even though the receiving end acknowledge the buffers sent and the buffers becomes available again.<br>
<br></div><div class="gmail_extra">(To the Gst developers)<br></div><div class="gmail_extra">BTW, are shmsrc/sink now available for the OS X platform? If not, do you have any plans for it?<br><br></div><div class="gmail_extra">
BTW2. A neat feature of shmsink, especially when used by external programs, would be if it had 2 extra commands added. These should be:<br><br></div><div class="gmail_extra">  1) Stop handing out more buffers upstream.<br>
</div><div class="gmail_extra">  2) Start handing out more buffers upstream.<br></div><div class="gmail_extra">  3) Drop all buffers handed out upstream until now, but not yet sent.<br><br></div><div class="gmail_extra">A video mixer application like Snowmix could then much better do resource control. Imagine you have a video mixer with 10-20 gstreamer pipeline inputs, it can really save a lot of CPU and memmove bandwidth, if the mixer can temporarily halt pipeline not currently being mixed. Now that is already possible, but not  before the shmsink has used up all available shm area. Just a thought. Limiting the amount of unnecessary memmove becomes important when doing many pipelines of 1920x1080 @60fps.<br>
<br></div><div class="gmail_extra">best regards<br></div><div class="gmail_extra">Peter MM <br></div><div class="gmail_extra"><br><br><br></div><div class="gmail_extra">Best regards<br></div><div class="gmail_extra"><br><div class="gmail_quote">
On Thu, Sep 19, 2013 at 3:05 PM, Josh Doe <span dir="ltr"><<a href="mailto:josh@joshdoe.com" target="_blank">josh@joshdoe.com</a>></span> wrote:<br><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">
<div class="im">On Wed, Sep 18, 2013 at 7:26 PM, Peter Maersk-Moller <<a href="mailto:pmaersk@gmail.com">pmaersk@gmail.com</a>> wrote:<br>
> Hi Olivier<br>
><br>
> Tried your pipelines and it works (ie. not locking). However experimented a<br>
> bit further and ended up with these two pipelines<br>
><br>
> gst-launch-1.0 -v videotestsrc ! $RAWVIDEO ! queue ! identity ! shmsink<br>
> wait-for-connection=1 socket-path=/tmp/tmpsock shm-size=15000000 sync=true<br>
><br>
> gst-launch-1.0 shmsrc socket-path=/tmp/tmpsock ! $RAWVIDEO ! queue !<br>
> fakesink<br>
><br>
> Now if I first define RAWVIDEO as shown below:<br>
><br>
> RAWVIDEO='video/x-raw, format=(string)I420, width=(int)1280,<br>
> height=(int)720, framerate=(fraction)30/1'<br>
><br>
> Then around 9-10 frames give or take are acknowledged in shmpipe.c before<br>
> freezing. 15000000 is 10.8 frames in that size in I420.<br>
><br>
> If i increase shm-size to shm-size=20000000, then it will run without<br>
> freezing. And I can't see why.<br>
<br>
</div>I've experienced this as well, having to bump the shm-size up<br>
significantly to avoid any blocking. I'd think a warning would be<br>
better than blocking if the receiving end can't keep up with the<br>
sending side, but I'd have to look at the implementation to see if/how<br>
this could be done.<br>
<span class="HOEnZb"><font color="#888888"><br>
-Josh<br>
</font></span><div class="HOEnZb"><div class="h5">_______________________________________________<br>
gstreamer-devel mailing list<br>
<a href="mailto:gstreamer-devel@lists.freedesktop.org">gstreamer-devel@lists.freedesktop.org</a><br>
<a href="http://lists.freedesktop.org/mailman/listinfo/gstreamer-devel" target="_blank">http://lists.freedesktop.org/mailman/listinfo/gstreamer-devel</a><br>
</div></div></blockquote></div><br></div></div>