У меня есть пример, иллюстрирующий мою проблему.
Пример: 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