I use Gstreamer with kvssink to stream to aws. My pipeline started with appsrc and i emit-signal to a g_main_loop in a Gthread for gstreamer push-buffer.
app is a structure of user data
app->VideoDataBuffer is an new array of unsigned char pointer
This code seem to leak about 0.1 mo / 5 secondes but stream perfectly =>
VideoBuffer = gst_buffer_new_allocate(NULL, app->VideoLengthBuffer, NULL);
gst_buffer_fill(VideoBuffer, 0, app->VideoDataBuffer, app->VideoLengthBuffer);
g_signal_emit_by_name(app->VideoSource, "push-buffer", VideoBuffer, &ret);
gst_buffer_unref(VideoBuffer);
This code not leak but rollback many time =>
VideoBuffer = gst_buffer_new_allocate(NULL, app->VideoLengthBuffer, NULL);
gst_buffer_append_memory(VideoBuffer, gst_memory_new_wrapped(GST_MEMORY_FLAG_READONLY,
app->VideoDataBuffer, app->VideoLengthBuffer, 0, app->VideoLengthBuffer, NULL, NULL));
g_signal_emit_by_name(app->VideoSource, "push-buffer", VideoBuffer, &ret);
gst_buffer_unref(VideoBuffer);