Как убедиться, что образец фильтра Grabber больше не будет генерировать обратные вызовы при выключении моего графика фильтра DirectShow?

StackOverflow https://stackoverflow.com/questions/8323334

Вопрос

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

Это было полезно?

Решение

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

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

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top