Gstreamer custom sink renderer takes too long time !

Nicolas Dufresne nicolas at
Wed Sep 5 12:51:36 UTC 2018

Le mercredi 05 septembre 2018 à 12:41 +0000, Duchassin Frédéric a
écrit :
> Hello All !
> I try to make my own sink.
> My main problem is that my renderer is quite slow (about 50000ns to
> get out render() function) and give poor performance with high input
> bitrate. (packet lost !)
> For example a case which doesn’t work :
> This is the interval between each time I feed my sink (without
> renderer):
> dt=127654ns
> dt=138320ns
> dt=51995
> dt=55661
> dt=75326
> dt=139319
> dt=76660
> dt=91991
> dt=159318
> dt=91991
> dt=21664
> dt=54995
> dt=88324
> dt=135986
> dt=88324
> dt=18665
> dt=81326
> dt=51995
> dt=77659
> dt=100990
> dt=17665
> dt=78659
> As you can see, sometimes I feed my sink every 21 µs and as my
> renderer take 50µs, I can lose packet.
> Can you advice me about a way to stop feeding my sink during renderer
> ???
> Or if there is another way….

What we usually do is to make the renderer asynchronous. This way, you
don't wait for the renderer to finish, and can receive the following
frame immediately. Then, whenever a frame is submitted while another is
being rendered, you can skip it (ideally sending a QoS message to tell
the app you have done so).

You should also check that max-lateness/deadline-timeout and other sink
properties are configured correctly. That QoS is enabled also, since
some element can decide a head of time to drop a buffer is it's safe to
do so and that this buffer isn't going to make it.

> Thanks in for your help.
> Frederic
> _______________________________________________
> gstreamer-devel mailing list
> gstreamer-devel at

More information about the gstreamer-devel mailing list