Freigeben über


Zurücksetzen des Zustands in AVStream-Codecs

Um die Streamdaten zu verwerfen und den Streamingstatus zurückzusetzen, sendet die Medienstreamingpipeline MFT_MESSAGE_COMMAND_FLUSH an einen MFT. Wenn ein HW MFT eine MFT_MESSAGE_COMMAND_FLUSH empfängt, sendet der MFT IOCTL_KS_RESET_STATE mit dem Wert KSRESET_BEGIN an die Eingabe- und Ausgabepins. Minidriver sollten abonnieren, um eine Benachrichtigung zum Zurücksetzen zu erhalten, indem sie einen AVStrMiniPinReset-Rückruf im Element Zurücksetzen von KSPIN_DISPATCH angeben.

Wenn der Treiber diese IOCTL empfängt, sollten alle ausstehenden Klonzeiger gelöscht und alle vorherigen internen Zustände zurückgesetzt werden. Nachdem der Treiber ausstehende E/A-Anforderungen geleert hat, empfängt er eine weitere IOCTL_KS_RESET_STATE mit dem Wert KSRESET_END.

An diesem Punkt sollte der Minidriver bereit sein, neue Eingaben aus dem nächsten Stream zu akzeptieren.

Beachten Sie, dass der Miniantrieb die Topologieverbindung zwischen den Eingabe- und Ausgabepins angeben muss, damit das Zurücksetzen ordnungsgemäß funktioniert, indem ein Array vom Typ KSTOPOLOGY_CONNECTION im Connections-Member der KSFILTER_DESCRIPTOR-Struktur angegeben wird.

Im folgenden Szenario wird auch eine Zurücksetzungs-IOCTL gesendet. Wenn der Treiber das KSSTREAM_HEADER_OPTIONSF_ENDOFSTREAM-Flag für einen Streamheader festlegt und den Streamzeiger entsperrt, löscht KS die Warteschlange, wodurch ein IOCTL_KS_RESET_STATE Aufruf mit dem Wert KSRESET_END in den Treiber generiert wird.

Wenn der Treiber in diesem Fall eine Endanforderung ohne vorherige Startanforderung empfängt, sollte der Treiber KSPIN festlegen. ResetState auf KSRESET_END. Dieser Fall gilt nur für Ausgabepins.