UVC(USB Video Class)とは
UVC(USB Video Class)は、ビデオカメラやWEBカメラといった、主にUSBカメラ(規格上は逆方向通信も可能であるので、例えばUSBディスプレイにも応用可能)の通信方法に関する規格です。Motion-Jpeg, MPEG-1, MPEG-2, MPEG-4, H.264, 非圧縮ビデオの転送が定義されています。さらに、ズームやホワイトバランスの調整等、カメラに必要な制御方法も定義されています。USB3.0ではストレージに並び、応用が期待されているデバイスクラスです。
UVCに対応したカメラは、ホストドライバ不要で動作します。ただし「必ず」動作するとは限りません。UVCはあくまでもカメラ用のUSB通信を保証するだけです。例えばUVCでは画像の横サイズは2Bytes(最大65,535Pixels)指定できますが、そのような画像を(WindowsであればDirectXが)表示できるかは分かりません(おそらく無理でしょう)。ホスト側がカメラの性能についていけるか、都度確認が必要です。
UVC1.0と1.1の違い
現在、UVCにはバージョン1.0(1.0a)と1.1があります。UVC1.1では、カメラのより細かい制御ができるようになりました。転送性能に違いはありません。主な変更を挙げます。
ディスクリプタ Processing Unit | 長さが9+nBytesから10+nBytesに変更され、以下追加。 bmVideoStandards |
ディスクリプタ Class-Specific VS Interface Output Header | 長さが8Bytesから9+(p*n)Bytesに変更され、以下追加。 bControlSize bmaControls(n) |
リクエスト Video Probe and Commit Control | 長さが26Bytesから34Bytesに変更され、以下追加。 dwClockFrequency bmFramingInfo bPreferredVersion bMinVersion bMaxVersion |
リクエスト Processing Unit | 以下コントロールセレクタ追加。 PU_ANALOG_VIDEO_STANDARD_CONTROL PU_ANALOG_LOCK_STATUS_CONTROL |
リクエスト VideoStreaming Interface Control | 以下リクエスト方法追加。 GET_INFO |