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