Gstreamer: освободить ОЗУ при закрытии и перезагрузить поток rtspC++

Программы на C++. Форум разработчиков
Anonymous
Gstreamer: освободить ОЗУ при закрытии и перезагрузить поток rtsp

Сообщение Anonymous »

Разрабатываю видеостену на 36-64 потока, столкнулся с проблемой увеличения памяти при перезапуске потоков
У меня есть пример, иллюстрирующий мою проблему.
Пример: https://github.com /Deymoss/Rtsp-player
При запуске приложения создается конвейер, в результате приложение изначально занимает 54МБ ОЗУ, при запуске потока объем увеличивается до ~110 МБ, когда закрываю поток, память не освобождается, при повторном запуске того же потока объем ОЗУ увеличивается до 120 МБ и т. д., то же самое касается файловых дескрипторов (подозреваю, что BUS создает их)
Как правильно очистить память и всю информацию о потоке при закрытии?
В данный момент я устанавливаю для конвейера значение NULL и не делать unref, а если раскомментировать эти строки:

Код: Выделить всё

gst_bus_set_sync_handler(m_videoPipe->bus, nullptr, nullptr, nullptr);
gst_object_unref(m_videoPipe->pipeline);
gst_object_unref(m_videoPipe->bus);
В потреблении памяти ничего не меняется, хотя счетчик ссылок каждого элемента и самого конвейера в конце функции равен нулю

Подробнее здесь: https://stackoverflow.com/questions/783 ... tsp-stream

Вернуться в «C++»