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

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

1 ответ

Решение

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

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

Другие вопросы по тегам