Neustarten der Verarbeitung in AVStream

AVStream beendet die Verarbeitung, wenn eine der folgenden Bedingungen zutrifft:

  • In einer pinzentrierten Umgebung sind derzeit keine Daten auf dem Pin verfügbar.

  • In einer filterorientierten Umgebung enthält mindestens ein Pin, für den das Flags-Element der KSPIN_DESCRIPTOR_EX-Struktur nicht KSPIN_FLAG_FRAMES_NOT_REQUIRED_FOR_PROCESSING festgelegt wird, keine Daten, die auf die Verarbeitung warten. Standardmäßig ist dieses Flag nicht festgelegt.

  • Die Rückrufroutine für die Verarbeitung des Minidrivers gibt unabhängig von der Frameverfügbarkeit STATUS_PENDING zurück. Beachten Sie, dass der Verarbeitungsversand entweder AVStrMiniFilterProcess oder AVStrMiniPinProcess sein kann, je nachdem, ob der Minidriver die pinzentrische Verarbeitung oder die filterzentrische Verarbeitung implementiert.

AVStream initiiert die Verarbeitung, wenn neue Daten in einer zuvor leeren Warteschlange eintreffen. Wenn der Verarbeitungsversand des Minidrivers daher STATUS_PENDING zurückgibt, wenn die zugeordneten Warteschlangen voll sind, wird der Minidriver nie aufgerufen, um die Verarbeitung fortzusetzen. Wenn der Minidriver STATUS_PENDING festlegt, muss der Minidriver KsPinAttemptProcessing oder KsFilterAttemptProcessing aufrufen, um die Verarbeitung fortzusetzen.

Geben Sie keine STATUS_SUCCESS aus der Verarbeitungsversendung zurück, wenn der Minidriver keine Daten verarbeitet. Dies führt dazu, dass AVStream den Minidriver sofort wieder aufruft, was zu einer Endlosschleife zwischen AVStream und dem Verarbeitungsversand führt.