Datenbereichsschnittpunkte in AVStream

Ein Datenformat ist ein einzelner Satz von Parametern, die einen Aspekt einer Verbindung beschreiben. Beispielsweise kann ein Audiodatenformat ein bestimmtes Audioformat bei X-Beispielen pro Sekunde und Y-Bits pro Beispiel angeben.

Ein Datenbereich gibt eine Sequenz gültiger Parameter an. Für instance kann ein Audiodatenbereich ein bestimmtes Audioformat bei A-B-Beispielen pro Sekunde und C-D-Bits pro Sample angeben.

Der Minidriver stellt eine Liste von Datenbereichen bereit, die er für einen bestimmten Pin im DataRanges-Member der entsprechenden KSPIN_DESCRIPTOR-Struktur unterstützt.

In AVStream können Minidriver ihre eigenen Datenbereichsüberschneidungshandler bereitstellen, indem sie einen Zeiger auf eine vom Minidriver bereitgestellte Rückrufroutine im IntersectHandler-Member einer KSPIN_DESCRIPTOR_EX bereitstellen. Damit AVStream die Bereiche überschneiden kann, legen Sie diesen Member auf NULL fest. Informationen zum Definieren der Rückrufroutine finden Sie unter AVStrMiniIntersectHandlerEx .

Wenn ein Minidriver einen Intersect-Handler bereitstellt, empfängt der Minidriver zwei Datenbereiche, die im Haupttyp, Unterformat und Bezeichner übereinstimmen. Darüber hinaus stimmen die erforderlichen Attribute der Datenbereiche überein.

Wenn sich die Bereiche überschneiden und ausreichend Pufferspeicher im Data-Parameter der AVStrMiniIntersectHandlerEx-Rückrufroutine bereitgestellt wird, wählt die Schnittmengenroutine ein Format in der Schnittmenge aus und gibt es an den Aufrufer im Puffer zurück, auf den von Data verwiesen wird.

Wenn sich die beiden Datenbereiche nicht überschneiden, gibt der Handler STATUS_NO_MATCH zurück.

Wenn der Minidriver eine AVStrMiniPinSetDataFormat-Versendung angegeben hat, ruft AVStream diese Versendung auf, um den Minidriver darüber zu informieren, dass AVStream ein bestimmtes Format für die Pin festlegt. Stellen Sie einen Zeiger auf Ihre AVStrMiniPinSetDataFormat-Rückrufroutine im SetDataFormat-Element der KSPIN_DISPATCH-Struktur bereit. (Minidriver, die Clients der Streamklasse sind, erhalten SRB_SET_DATA_FORMAT anstelle von AVStrMiniPinSetDataFormat.)

Der Minidriver kann ein vorgeschlagenes Format ablehnen, indem STATUS_NO_MATCH von AVStrMiniPinSetDataFormat zurückgegeben wird.

Zusätzlich zum anfänglichen Aufruf von AVStrMiniPinSetDataFormat vor dem Erstellen des Pins kann Ihr Minidriver einen zweiten AVStrMiniPinSetDataFormat-Aufruf empfangen, bevor der Pin in den RUN-Zustand übergeht. Wenn Ihr AVStream- oder Stream-Klassenclient ein Minidriver für die Videoaufzeichnung ist und Sie eine solche Benachrichtigung erhalten, enthält diese Versendung die tatsächlichen Oberflächenparameter. Wenn möglich, sollte der Minidriver bei dieser zweiten Formatänderung nicht fehlschlagen. Gehen Sie nicht davon aus, dass ein zweiter Dispatch-Aufruf erfolgt.

Der Minidriver sollte Daten in jedem Format erfassen, das in der letzten erfolgreichen AVStrMiniPinSetDataFormat-Versendung enthalten war.