Я использую DirectShowNet и, когда мой график остановлен, я освобождаю com-объекты.
Проблема заключается в том, что, хотя я пытаюсь освободить COM-объекты [фильтры, интерфейс], иногда эта очистка вызывает график DirectShow, а не STOPPED. Он «приостанавливается».
Если я не убираю [отпускаю com-объекты], все в порядке [кроме утечек памяти] ...
Вот как я делаю очистку:
if (videoWindow != nullptr)
{
Marshal::ReleaseComObject(videoWindow);
videoWindow = nullptr;
}
if (mediaControl != nullptr)
{
Marshal::ReleaseComObject(mediaControl);
mediaControl = nullptr;
}
if (graphBuilder != nullptr)
{
Marshal::ReleaseComObject(graphBuilder);
graphBuilder = nullptr;
}
....
Что может быть не так?Я неправильно использую фильтры?Чем может быть вызван этот «неостановимый граф»?