Hi,
I have created an rtsp client using Gstreamer.
After running the program, the memory usage increases for a while.
Then it maintains a constant memory usage.
However, there are cases where the memory increases to 0.01 MB irregularly.
Is there any way to solve the problem?
This is my pipeline.
g_pipeline = gst_pipeline_new ("new pipeline");
source = gst_element_factory_make ("rtspsrc", NULL);
depay = gst_element_factory_make ("rtph264depay", NULL);
parse = gst_element_factory_make ("h264parse", NULL);
decode = gst_element_factory_make ("nvv4l2decoder", NULL);
sink = gst_element_factory_make ("appsink", NULL);
fps_sink = gst_element_factory_make ("fpsdisplaysink", NULL);
filter1 = gst_element_factory_make ("capsfilter", NULL);
filter2 = gst_element_factory_make ("capsfilter", NULL);
conv = gst_element_factory_make ("nvvidconv", NULL);
GstCaps *caps1, *caps2;
caps1 = gst_caps_from_string ("video/x-raw(memory:NVMM)");
caps2 = gst_caps_from_string ("video/x-raw");
g_object_set (G_OBJECT (filter1), "caps", caps1, NULL);
g_object_set (G_OBJECT (filter2), "caps", caps2, NULL);
gst_caps_unref (caps1);
gst_caps_unref (caps2);
gst_bin_add_many(GST_BIN(g_pipeline[m_uniqueId]), source, depay, parse, decode, filter1, conv, filter2, fps_sink, NULL);
gst_element_link_many (depay, parse, decode, filter1, conv, filter2, fps_sink, NULL);
g_signal_connect(source, "pad-added", G_CALLBACK(new_pad_call_back0), NULL);
g_signal_connect(sink, "new-sample", G_CALLBACK(new_sample0), NULL);
I use following options.
g_object_set(G_OBJECT(sink), "emit-signals", true, NULL);
g_object_set(G_OBJECT(sink), "async", false, "sync", false, "max-lateness", 0, NULL);
g_object_set(G_OBJECT(sink), "max-buffers", 1, NULL);
g_object_set(G_OBJECT(sink), "drop", true, NULL);
g_object_set(G_OBJECT (source), "latency", 0, NULL);
g_object_set (G_OBJECT (fps_sink), "text-overlay", false, "video-sink", sink, NULL);
g_object_set (G_OBJECT (fps_sink), "sync", false, NULL);