Push source scheduling and the create function

Martin Kelly martin at surround.io
Fri May 6 19:19:11 UTC 2016


On 05/06/2016 10:40 AM, Martin Kelly wrote:
> On 04/29/2016 12:19 PM, Tim Müller wrote:
>> On Fri, 2016-04-29 at 08:53 -0700, Martin Kelly wrote:
>>
>> Possibly the difference is related to the "preroll" mechanism we have
>> in GStreamer. Basically, at least in a non-live pipeline sinks will
>> block when they receive the first buffer, and only when *all* sinks in
>> a pipeline have received a first buffer. If just one sink does not
>> receive a buffer, all the other sub-pipelines will be blocked/waiting.
>> I wonder if that's what you're seeing here. If you use separate
>> pipelines they all operate 100% independently of course.
>
> That explanation would make sense to me, but in this case ahcsrc is
> live, and so is my custom video element. I will try setting sync=false
> on the udpsink and see if it makes a difference.
>

Looks like setting async=false fixes my issue; thanks! I think the issue 
is that each my bins generates data at drastically varying rate, from 
many buffers per second to very rare buffers every few minutes. Although 
adding the "async" property fixes the problem, is there a cleaner way I 
should be handling this?

Another followup: I see both "sync" and "async" properties on fakesink. 
Could you clarify the distinction between them and when each should be used?

Thanks again,
Martin


More information about the gstreamer-devel mailing list