Как убедиться, что образец фильтра Grabber больше не будет генерировать обратные вызовы при выключении моего графика фильтра DirectShow?
-
26-10-2019 - |
Вопрос
У меня есть приложение DirectShow, написанное в Delphi 6 с использованием библиотеки компонентов DSPACK. Когда я выключаю свои графики фильтров (Stop Play), я получаю нарушение доступа из -за обратного вызова образца Grabber DirectShow, происходящего после того, как объект, которому принадлежит метод обратного вызова. Это происходит не каждый раз, но довольно часто. Может ли кто -нибудь указать мне на образец кода или документ, который сообщает мне о шагах, которые мне нужно предпринять, чтобы выключить мои графики таким образом, чтобы убедиться, что все ожидающие обратные вызовы Grabber были получены или устранены?
Решение
Как насчет выпуска ISampleGrabber::SetCallback(NULL, ...
Перед остановкой/выпуском графа фильтра?
Более того, вы можете установить внутренний флаг, указывающий на прекращение, и проверить его в обратных вызовах, которые вы должны сразу же вернуть без дальнейшей обработки.