Freigeben über


KS-Datenformate und Datenbereiche

KS-Pins geben Datenformate und Bereiche mithilfe der KSDATAFORMAT - und KSDATARANGE-Strukturen an. Ein Datenformat gibt ein einzelnes Attribut eines Datenstroms an, z. B. eine Audiosamplinggröße von 16 Bit. Ein Datenbereich gibt mehrere Formate an, z. B. einen Audio-Samplingbereich von 16-24 Bit.

Ein Minidriver enthält ein Array von KSDATARANGE-Strukturen in jeder KSPIN_DESCRIPTOR Struktur, die es bereitstellt. Von Microsoft bereitgestellte Formate werden in ksmedia.h aufgezählt.

Eine KSDATARANGE-Struktur weist dieselben Elemente wie eine KSDATAFORMAT-Struktur auf; Der Minidriver kann jedoch Wildcardwerte für die Hauptformat-, Unterformat- und Bezeichnerm-Elemente von KSDATARANGE angeben.

Minidriver verwenden erweiterte Versionen dieser Strukturen, um medienspezifische Werte zu definieren. Informationen dazu, wie dies in der Audio- und Videoaufnahme funktioniert, finden Sie unter: Audiodatenformate und Datenbereiche und Auswählen eines Datenstromformats.

Clients verwenden die folgenden Eigenschaften, um die Unterstützung des Datenformats von Pins abzufragen, die von einer bestimmten Pinfactory auf dem Filter instanziiert werden:

  • KSPROPERTY_PIN_DATARANGES. Der KS-Filter meldet alle Datenbereiche, die von Pins unterstützt werden, die von der Pin-Factory instanziiert wurden. Dazu gehört jedes Datenformat, das der Pin jemals unterstützen kann.

  • KSPROPERTY_PIN_CONSTRAINEDDATARANGES. Der KS-Filter meldet alle Datenbereiche, die von der Pin-Factory instanziierten Pins unterstützt werden, je nach aktuellem internem Treiberstatus.

  • KSPROPERTY_PIN_PROPOSEDATAFORMAT. Clients können diese Eigenschaft verwenden, um abzufragen, ob von der Pinfactory instanziierte Pins ein bestimmtes Datenformat unterstützen.

  • KSPROPERTY_PIN_DATAINTERSECTION. Clients können diese Eigenschaft verwenden, um eine Reihe von Datenformaten anzubieten.

Sobald ein Pin instanziiert wurde, kann ein Benutzermodusclient das aktuelle Datenformat ermitteln oder eine Änderung des Datenformats über KSPROPSETID_Connection Eigenschaftsanforderungen anfordert. Der Client verwendet z. B. KSPROPERTY_CONNECTION_PROPOSEDATAFORMAT , um festzustellen, ob eine Pin ein bestimmtes Datenformat unterstützt. Der Client verwendet KSPROPERTY_CONNECTION_DATAFORMAT , um das Datenformat zu ändern.

KS-Minidriver und Clients können Datenformate dynamisch aushandeln. Wenn sich das Datenformat eines Datenstroms ändert, spezifiziert der Minidriver die KSSTREAM_HEADER_OPTIONSF_DATADISCONTINUITY-Flagge im OptionsFlags-Element eines KSSTREAM_HEADER. Der Minidriver übergibt das neue Datenformat selbst, das in einer KSDATAFORMAT-Struktur beschrieben ist, im entsprechenden Datenpuffer.