How to send every comes source video buffer to the udp sink without of a buffering?

Denis Shienkov denis.shienkov at gmail.com
Mon Dec 25 13:38:34 UTC 2017


Hi all,

I have implemented the own sender application, which uses the appsrc
element. This source receive the image buffer from the some external
"entity" and calls the gst_app_src_push_buffer() function with the
current timestamp (sets this timestamp to the buffer's property).

My resulting pipeline contains the following elements:

m_appsrc ! videoconvert ! x264enc ! rtph264pay ! udpsink

(with default caps and properties of each element)

so, the resulting frames are sends to the udpsink.

But the problem is that the udpsink begin to send the frames only
after the  "push-buffers" was called more than ~48 times.  So, the
receiver receives the first frame with a delay ~48 frames. So, if
the sender will call the gst_app_src_push_buffer() every second,
then the receiver got a first frame only after the ~48 seconds! So,
I need to call the gst_app_src_push_buffer() to fastest as possible,
to minimise the delay, but, it is nonsense, as it eats  a RAM and CPU!

Is it possible to configure the x264enc, or rtph264pay (I don't know
what I need), to that the udpsink will send the *every encoded frame*,
immediatelly after a *source frame* comes to the appsrc? And do not
wait for 48 source buffers for this?

BR,
Denis


More information about the gstreamer-devel mailing list