UVC対応カメラを作る場合のUSBデバイスコントローラに関して

UVC対応カメラを作ろうとした場合、USBデバイスコントローラとしてどのようなものを用いれば良いでしょうか。弊社で取り扱った範囲で代表的な例を以下に挙げてみました。

汎用USBカメラコントローラを用いる

リコーのR5U8710やSonixのSN9C291等が該当します。ビデオ入力インターフェース、ISP及びUSBデバイスコントローラを内蔵し、UVCの機能にも対応しています。必要な機能が1チップに収められているためカメラ全体のハードウェア構成がシンプルになり、コストも低く抑えられます。但し、これらのコントローラは製品として古めの物になっていしまい、イメージセンサの性能を活かせないことがあるという制約があります。

汎用USBデバイスコントローラを用いる

CypressのFX3等が該当します。ビデオ入力可能なインターフェースがあることが前提になります。USBデバイスの機能は持っていますが、UVCの機能はカメラ開発者が用意する必要があります(メーカーがサンプルプログラムとして用意している場合もあります)。ISPの機能はないため、ISPをどうするかという課題があります。

他用途のSoCを用いる

アクションカメラや監視カメラ等のビデオ処理が主目的のSoCの中にはUSBデバイスコントローラを内蔵しているものもあります。このようなSoCはビデオ処理以外の機能も豊富です。例えば、アクションカメラ向けのSoCであれば、ディスプレイ、ストレージ、Wi-Fi、オーディオ等の機能も含まれているでしょう。それらの豊富な機能を制御するためにOSとしてLinuxを採用していることが多いのですが、LinuxにはUSBガジェットというUSBデバイスになるためのフレームワークがあり、UVCにも対応しています。そのため、USBデバイスコントローラのドライバを用意すれば(フレームワークの範囲内で)UVCの機能を実現できます。