manual: Fix buffer memory leak in appsrc example

g_signal_emit_by_name() is not like gst_app_src_push_buffer() due to reference
counting limitations of signals, it does *not* take ownership of the buffer.
This commit is contained in:
Sebastian Dröge 2016-04-27 09:21:31 +03:00
parent 95d6141112
commit 372ccb7943

View file

@ -733,7 +733,7 @@ cb_need_data (GstElement *appsrc,
/* this makes the image black/white */ /* this makes the image black/white */
gst_buffer_memset (buffer, 0, white ? 0xff : 0x0, size); gst_buffer_memset (buffer, 0, white ? 0xff : 0x0, size);
white = !white; white = !white;
GST_BUFFER_PTS (buffer) = timestamp; GST_BUFFER_PTS (buffer) = timestamp;
@ -742,6 +742,7 @@ cb_need_data (GstElement *appsrc,
timestamp += GST_BUFFER_DURATION (buffer); timestamp += GST_BUFFER_DURATION (buffer);
g_signal_emit_by_name (appsrc, "push-buffer", buffer, &ret); g_signal_emit_by_name (appsrc, "push-buffer", buffer, &ret);
gst_buffer_unref (buffer);
if (ret != GST_FLOW_OK) { if (ret != GST_FLOW_OK) {
/* something wrong, stop pushing */ /* something wrong, stop pushing */