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
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

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