Учет ссылок на объекты COM в коде DirectShow
От: Евгений Музыченко Франция https://software.muzychenko.net/ru
Дата: 03.08.19 13:30
Оценка:
Накидал простенький фильтр, в котором многие методы пока не реализованы и возвращают E_NOTIMPL. Вставляю его в граф, запускаю граф — что-то шевелится, а при остановке графа и освобождении (Release) ссылок на IGraphBuilder или IMediaControl код из quartz.dll стабильно пытается освободить ссылки на уже удаленные объекты, или лезет в память по некорректным адресам.

Несколько раз проверил учет ссылок в коде фильтра — вроде все правильно. Ссылок на IGraphBuilder и IMediaEventSink, как и положено, не освобождаю.

Как там, в коде DirectShow и конкретно в quartz.dll, с восстановлением после ошибок, когда метод фильтра/пина/сампла и прочего неожиданно возвращает E_NOTIMPL? Такое впечатление, что в этом случае код путается в учете ссылок.

Или там с этим все идеально, и надо таки искать ошибки у себя?
directshow фильтр filter pin sample ссылка reference addref release
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.