Мое приложение требует, чтобы конвейер gstreamer был перезапущен несколько раз. Но после установки конвейера в GST_STATE_NULL и вызова unref в конвейере память кажется не освобожденной. После каждого перезапуска память, связанная с процессом, продолжает увеличиваться.
Мне удалось воспроизвести проблему только с элементами videotestsr c -fakesink, как показано ниже:
// g ++ -Wall testpage_Simple. cpp -o testpage_Simple $ (pkg-config --cflags --libs gstreamer-1.0)
#include <gst/gst.h>
GstElement *pipeline;
GstElement *src;
GstElement *sink;
void clearPipeline () {
// g_print ("clearPipeline ");
gst_element_set_state (pipeline, GST_STATE_NULL);
gst_object_unref (pipeline);
}
void createPipeline () {
pipeline = gst_pipeline_new ("pipelinePlay");
src = gst_element_factory_make ("videotestsrc", "source");
sink = gst_element_factory_make ("fakesink", "sink");
gst_bin_add_many (GST_BIN (pipeline), src, sink, NULL);
if (gst_element_link (src, sink)!= TRUE) {
g_printerr ("src, sink could not be linked.\n");
}
gst_element_set_state (pipeline, GST_STATE_PLAYING);
}
gint main (gint argc, gchar * argv[])
{
gst_init (NULL, NULL);
system("gst-launch-1.0 --gst-version");
g_print ("Start Test - ");
// for (int i=1; i<=10; i++) {
system ("top -b -n 1 | grep testpage | awk '{print $6}'");
createPipeline();
clearPipeline();
// }
g_print ("End of test !! ");
system ("top -b -n 1 | grep testpage | awk '{print $6}'");
gst_deinit();
return 0;
}
Пример выходных данных в Ubuntu 19.04 (показаны только значения столбца RES из верхней команды для этого процесса) :
GStreamer Core Library версия 1.16.1
Начало теста - 7140
Конец теста !! 8504
Мы наблюдали сходную тенденцию памяти в Ubuntu 18.04 и gstreamer 1.12.4.
Это ожидаемое поведение или я что-то упустил при очистке конвейера ??
Я проверил ссылку ниже. Похоже, похожая проблема, но этот вопрос остается без ответа
Утечка памяти GStreamer после перезапуска конвейера
Я попытался предложить кеш диска в приведенной ниже ссылке, с похожей проблемой , Но это тоже не помогло.
http://gstreamer-devel.966125.n4.nabble.com/Properly-freeing-resources-td4658631.html