Перезапуск обработки в AVStream

AVStream останавливает обработку, если выполняются одно из следующих условий:

  • В среде, ориентированной на закрепление, данные в настоящее время недоступны.

  • В среде, ориентированной на фильтры, по крайней мере один контакт, для которого элемент Flagsструктуры KSPIN_DESCRIPTOR_EX не задает KSPIN_FLAG_FRAMES_NOT_REQUIRED_FOR_PROCESSING, не имеет данных, ожидающих обработки. По умолчанию этот флаг не установлен.

  • Подпрограмма обратного вызова диспетчера обработки мини-драйвера возвращает STATUS_PENDING независимо от доступности кадра. Обратите внимание, что диспетчеризация обработки может быть AVStrMiniFilterProcess или AVStrMiniPinProcess в зависимости от того, реализует ли мини-накопитель обработку, ориентированную на пин-код , или обработку, ориентированную на фильтрацию.

AVStream инициирует обработку, когда новые данные поступают в ранее пустую очередь. Таким образом, если диспетчер обработки мини-драйвера возвращает STATUS_PENDING при заполнении связанных очередей, он никогда не будет вызываться для возобновления обработки. Если мини-диск задает STATUS_PENDING, он должен вызвать KsPinAttemptProcessing или KsFilterAttemptProcessing , чтобы возобновить обработку.

Не возвращайте STATUS_SUCCESS из диспетчера обработки, если мини-диск фактически не обрабатывает данные. Это приводит к тому, что AVStream немедленно вызывает мини-диск, что приводит к бесконечному циклу между AVStream и диспетчером обработки.