Какое событие фильтра Directshow я могу использовать, чтобы разблокировать поток исходного потока при отключении фильтра?
У меня есть фильтр DirectShow, написанный на Delphi 6 с использованием библиотеки компонентов DSPACK. Это видео-фильтр push-источника. Фильтр блокирует событие, которое сигнализируется в другом потоке, который генерирует видеокадры. Когда кадр готов, он записывается в общую область памяти, к которой метод FillBuffer() обращается, когда он разблокирован. Есть ли удобное событие DirectShow, которое я могу использовать, чтобы разблокировать поток FillBuffer(), когда фильтр отключается DirectShow? Если нет, то какова "стандартная практика" в этой области?
1 ответ
Стандартная практика WaitForMultipleObjects
Функция и друзья. Вас ждет одно из событий, которое разблокирует ваш FillBiffer
: доступность нового видеокадра из внешнего источника, остановка поступления запроса на ваш фильтр и т. д.