Skip to content

Commit e4805c9

Browse files
rejeangroleauRejean Groleau
andauthored
gstreamer: plugin: finalize: free producer resources (#683)
When using gstreamer with gst/gst.h (as opposed to launching using command line tools such as gst-launch-1.0), on plugin finalize, all resources must be freed, otherwise a very substantial memory leak occurs. By resetting the pointer (removing all references or assigning to null) this change solved a huge memory leak (found, tested and fixed on a real target). Co-authored-by: Rejean Groleau <[email protected]>
1 parent 6bbd9fd commit e4805c9

File tree

1 file changed

+3
-4
lines changed

1 file changed

+3
-4
lines changed

src/gstreamer/gstkvssink.cpp

Lines changed: 3 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -645,10 +645,6 @@ gst_kvs_sink_finalize(GObject *object) {
645645
GstKvsSink *kvssink = GST_KVS_SINK (object);
646646
auto data = kvssink->data;
647647

648-
if (data->kinesis_video_stream) {
649-
data->kinesis_video_producer->freeStream(data->kinesis_video_stream);
650-
}
651-
652648
gst_object_unref(kvssink->collect);
653649
g_free(kvssink->stream_name);
654650
g_free(kvssink->content_type);
@@ -663,6 +659,9 @@ gst_kvs_sink_finalize(GObject *object) {
663659
if (kvssink->stream_tags) {
664660
gst_structure_free (kvssink->stream_tags);
665661
}
662+
if (data->kinesis_video_producer) {
663+
data->kinesis_video_producer.reset();
664+
}
666665
G_OBJECT_CLASS (parent_class)->finalize(object);
667666
}
668667

0 commit comments

Comments
 (0)