ストリーム形式の選択
ビデオ キャプチャ デバイスでは、さまざまな形式でビデオをキャプチャできます。 KSDATARANGE 構造体は、特定の色空間の幅、高さ、粒度、トリミング、フレーム レートに関する情報を伝達するために使用されます。 KS_DATARANGE_VIDEO および KS_DATARANGE_VIDEO2 構造体は、KSDATARANGE 構造体の拡張機能であり、ビデオ キャプチャ形式の記述に使用する必要があります。 ビデオ フレームのみを説明するには、KS_DATARANGE_VIDEOを使用します。 KS_DATARANGE_VIDEO2 を使用して、Bob または Weave の設定の有無にかかわらず、ビデオ フィールドとビデオ フレームを記述します。
ストリーム形式を選択するプロセスは、データ交差の実行と呼ばれます。 ストリーム クラス インターフェイスは、データ交差を実行するために、ストリーム クラス ミニドライバーに SRB_GET_DATA_INTERSECTION 要求を送信します。 ミニドライバーは、要求されたデータ範囲の有効性を判断し、指定されたデータ範囲から特定のストリーム形式を選択する役割を担います。通常は、KS_DATAFORMAT_VIDEOINFOHEADER または KS_DATAFORMAT_VIDEOINFOHEADER2 構造体を使用します。
最後に、ミニドライバーは、次に示すように、結果として生成される形式の特定のメンバーを設定する必要があります。
.
.
.
// Calculate biSizeImage for this request, and put the result in both
// the biSizeImage field of the bmiHeader AND in the SampleSize field
// of the DataFormat.
//
// Note that for compressed sizes, this calculation will probably not
// be just width * height * bitdepth
DataFormatVideoInfoHeaderOut->VideoInfoHeader.bmiHeader.biSizeImage =
DataFormatVideoInfoHeaderOut->DataFormat.SampleSize =
KS_DIBSIZE(DataFormatVideoInfoHeaderOut->VideoInfoHeader.bmiHeader);
.
.