USB ビデオ クラスの実装
Microsoft 提供の USB ビデオ クラス (UVC) ドライバー (usbvideo.sys) は、ピン中心の AVStream ミニドライバーです。 オペレーティング システムによって列挙された USB ビデオ クラス?準拠デバイス インスタンスごとにフィルター ファクトリが作成されます。 また、ドライバーは、KSPIN_DESCRIPTOR構造体の DataFlow メンバーを関連する値に設定して、デバイス上の入力または出力ターミナルごとにピン ファクトリを作成します。
USB ビデオ クラス ドライバーは、フィルター、ノード、接続で構成されるカーネル ストリーミング (KS) トポロジ グラフを構築するために、デバイス記述子によって報告された内部デバイス トポロジを使用します。
USB ビデオ クラスは、デバイスでサポートされているコントロールの数と種類に基づいて、AVStream フィルターとピン記述子の KS オートメーション テーブルを介してフィルター、ピン、およびノードのプロパティ セットを動的に報告します。
USB ビデオ クラスは、デバイス上の各ビデオまたは静止画像データ エンドポイントでサポートされているデータ形式に基づいて、サポートされている KS データ範囲の対応する一覧と、それぞれの AVStream ピン記述子のデータ交差ハンドラーを報告します。 USB ビデオ クラス ドライバーは、カーネル ストリーミング プロキシ モジュールを介して情報をエクスポートします。
USB ビデオ クラス ドライバーは、オーディオ/ビデオ ストリームの同期もサポートしています。usbvideo.sys KS は、マスター クロックとして機能し、ビデオ サンプルにタイムスタンプを追加できます。 USB ビデオ クラスの仕様には、ハードウェアがクラス ドライバーにタイミング情報を提供する方法に関する詳細が含まれています。
USB ビデオ クラスと通信するために、ユーザー モード クライアントは DirectShow または Media Foundation インターフェイスを呼び出します。 これらのインターフェイスは、プラグインとしてカーネル ストリーミング プロキシによって定義される COM インターフェイス ラッパーです。Media Foundation の詳細については、Microsoft Windows SDK のドキュメントを参照してください。