<div dir="ltr">Hi all,<div><br></div><div>I had a strange problem with GstCollectPads in both gst 0.10 and gst 1.0. Basically, we have an element that has a collect pad with two sinks. The beginning of the pipeline is as follows:</div>
<div><br></div><div>souphttpsrc1->queue->sink1 of the collect pad </div><div>                                                                                   </div><div>souphttpsrc2->queue->sink2 of the collect pad</div>
<div><br></div><div>In this element, we use gst_collect_pads_set_function() to specify the callback function. The code has been working well most of the time. However, I sometimes notice that sink1 of the collect pad has a buffer of length 0 when the call back function is called. This is really strange. The reference manual says: "...<span style="color:rgb(85,85,85);font-family:Verdana,Arial,sans-serif;font-size:14px;line-height:14.933333396911621px">this sets a callback that will be invoked instead when all the pads added to the collection have buffers queued." </span>My understanding is that the callback function should only be called when both sink pads have buffers queued. But in reality, we are getting callbacks when one of the sink pads has zero length buffer. </div>
<div><br></div><div>To be specific, in the callback function, we first use gst_pad_get_element_private() to get the private data of the sink pad. We then get the buffer:</div><div><div><span class="" style="white-space:pre">    </span>GstBuffer * buf = gst_collect_pads_read_buffer(data->collect, data, 1024);</div>
<div><span class="" style="white-space:pre">    </span>GstMapInfo info;</div><div><span class="" style="white-space:pre">   </span>gst_buffer_map (buf, &info, GST_MAP_READ);</div><div><span class="" style="white-space:pre">     </span>int size = info.size;</div>
</div><div><br></div><div>"size" sometimes is zero.<br></div><div><br></div><div>Does anybody know why the callback function is called in this case?</div><div><br></div><div>Regards,</div><div><br></div><div>LM</div>
</div>