Как сделать так, чтобы фильтр Sample Grabber не генерировал больше обратных вызовов при закрытии графа фильтра DirectShow? - PullRequest
1 голос
/ 30 ноября 2011

У меня есть приложение DirectShow, написанное на Delphi 6 с использованием библиотеки компонентов DSPACK.Когда я закрываю свои графики фильтров (остановка воспроизведения), я получаю нарушение прав доступа из-за обратного вызова из фильтра Sample Grabber DirectShow, который происходит после того, как объект, которому принадлежит метод обратного вызова, был уничтожен.Это происходит не каждый раз, но довольно часто.Может ли кто-нибудь указать мне пример кода или документ, в котором говорится, какие шаги мне нужно предпринять, чтобы закрыть мои графики таким образом, чтобы убедиться, что все ожидающие обратные вызовы Sample Grabber были получены или устранены?

1 Ответ

1 голос
/ 30 ноября 2011

А как насчет выдачи ISampleGrabber::SetCallback(NULL, ... до остановки / выпуска графика фильтра?

Более того, вы можете установить внутренний флаг, указывающий завершение, и проверить его в обратных вызовах, которые вы должны немедленно вернуть без дальнейшей обработки.

...