GStreamer issue playing OPUS audio with playbin2 pipeline Linux


We have a client SW that receive from a server OPUS packets that client should play.
The client is designed in Linux and use GStreamer playbin2 pipeline for this:

pipeline = gst_parse_launch ("playbin2 uri=appsrc:// ", NULL);

where the appsrc we fill with opus packets into a callback function that is called anytime player need data to play

g_signal_connect (pipeline, “source-setup”, G_CALLBACK (need_data_cb), NULL);

static void need_data_cb(GstElement *appsrc, guint unused_size, gpointer user_data)
GstBuffer *buffer = gst_buffer_new_and_alloc(NETPKT_DATASIZE);
GstFlowReturn ret;

//the OPUS packets that come from server are stored into a fifo buffer from where we extract it and add in buffer
av_fifo_generic_read(netpkt_stream, buffer, NETPKT_TTLSIZE, av_fifo_cb);

//give to player the OPUS pack to play
g_signal_emit_by_name(appsrc, “push-buffer”, buffer, &ret);

gst_buffer_unref (buffer);
if(ret != GST_FLOW_OK) {


The problem is that after exact 64 second the Sound stop(after playing certain number of OPUS packets).
Each opus packets have a duration of 177ms and is coded as OPUS bitrate 48000.

In Log I get this when it stop playing:

glow=red,2,300:GStreamer-WARNING **: failed to create thread: Error creating thread: Resource temporarily unavailable

(client:17452): GStreamer-WARNING **: adding flushing pad ‘src0’ to running element ‘multiqueue3612’, you need to use gst_pad_set_active(pad,TRUE) before adding it.[/glow]

I observed also the memmory used it increase by every packet played.

Can you help me with some hints what can I do or which is the cause of this behaviour?

The client code is designed like here[^]

Tanks in advance