How is the _src_create() call-back invoked?

Tim Müller tim at centricular.com
Fri Jul 3 00:23:15 PDT 2015


On Thu, 2015-07-02 at 18:56 -0600, John P Poet wrote:

Hi,

> I am working on a new src plugin for a 16 input Euresys Picolo H.264
> card.  It is based on GstPushSrc.  It works pretty well if I only only
> access a few inputs.  However, if I create sixteen separate pipelines
> to read from all sixteen input, then I start dropping audio packets.
> 
> 
> I added a thread specifically for reading from the audio input, and
> that solved the problem with not reading from the card quick enough,
> but my _src_create() call-back is not being invoked often enough to
> keep up.  My GstBufferList slowly grows in size because my 'read'
> thread is filling it up faster than the _src_create() is emptying it.

It sounds like downstream is not reading/processing buffers fast enough
then. What's your full pipeline? Do you have a queue after the source?

> I came across gst_pad_push_list(), but I get the impress that that is
> not usable from within a _src_create() call-back.  Is that correct?

That's correct. Also see
https://bugzilla.gnome.org/show_bug.cgi?id=750241


> How can I either get the _src_create() routine to be called more
> often, or push more buffers per invocation?  Should I not be using
> _src_create(), but some other method?
> 
> 
> The load on the machine is less than 1, so I don't think it is a
> resource problem.  

I think you need to figure out why downstream is processing buffers
slower than you create them, or if a queue helps.

 Cheers
  -Tim

-- 
Tim Müller, Centricular Ltd - http://www.centricular.com



More information about the gstreamer-devel mailing list