KS のデータ形式とデータ範囲

KS ピンは、KSDATAFORMAT および KSDATARANGE 構造体を使用してデータ形式と範囲を指定します。 データ形式は、16 ビットのオーディオ サンプリング サイズなど、データ ストリームの 1 つの属性を指定します。 データ範囲は、16-24 ビットのオーディオ サンプリング範囲など、複数の形式を指定します。

ミニドライバーには、提供される各 KSPIN_DESCRIPTOR 構造体に KSDATARANGE 構造体の配列が含まれています。 Microsoft が提供する形式は ksmedia.h で列挙されます。

KSDATARANGE 構造体には、KSDATAFORMAT 構造体と同じメンバーがあります。ただし、ミニドライバーは、KSDATARANGE のメジャー形式、サブフォーマット、および指定子メンバーにワイルドカード値を指定できます。

ミニドライバーは、これらの構造体の拡張バージョンを使用して、メディア固有の値を定義します。 オーディオとビデオのキャプチャでこれがどのように機能するかについては、「オーディオ データ形式とデータ範囲」と「ストリーム形式の選択」を参照してください。

クライアントは、次のプロパティを使用して、フィルター上の特定のピン ファクトリによってインスタンス化されたピンのデータ形式のサポートを照会します。

  • KSPROPERTY_PIN_DATARANGES KS フィルターは、ピン ファクトリによってインスタンス化されたピンでサポートされているすべてのデータ範囲を報告します。 これには、ピンがサポートできるすべてのデータ形式が含まれます。

  • KSPROPERTY_PIN_CONSTRAINEDDATARANGES KS フィルターは、現在の内部ドライバーの状態を考慮して、ピン ファクトリによってインスタンス化されたピンでサポートされているすべてのデータ範囲を報告します。

  • KSPROPERTY_PIN_PROPOSEDATAFORMAT クライアントは、このプロパティを使用して、ピン ファクトリによってインスタンス化されたピンが特定のデータ形式をサポートしているかどうかを照会できます。

  • KSPROPERTY_PIN_DATAINTERSECTION クライアントは、このプロパティを使用して、さまざまなデータ形式を提供できます。

ピンがインスタンス化されると、ユーザー モード クライアントは、現在のデータ形式を決定したり、KSPROPSETID_Connection プロパティ要求を通じてデータ形式の変更を要求したりできます。 たとえば、クライアントは KSPROPERTY_CONNECTION_PROPOSEDATAFORMAT を使用して、ピンが特定のデータ形式をサポートしているかどうかを判断します。 クライアントは、KSPROPERTY_CONNECTION_DATAFORMAT を使用してデータ形式を変更します。

KS ミニドライバーとクライアントは、データ形式を動的にネゴシエートできます。 ストリームのデータ形式が変更されると、ミニドライバーは、KSSTREAM_HEADERの OptionsFlags メンバーにKSSTREAM_HEADER_OPTIONSF_DATADISCONTINUITY フラグを指定します。 ミニドライバーは、KSDATAFORMAT 構造体で説明されている新しいデータ形式自体を、対応するデータ バッファーに渡します。