GitHubで見つけたSTM32用UVCの試験ブログラムからコードを引っ張ってきて使ってみたら、わりとアッサリと動いてくれました。もともとのコードはグレーから白に全画面の色が変化するだけなので、いまひとつ
表示にはWindows 10のカメラアプリを使用。ソフトでは160×120の画面情報を送っているのですがカメラアプリが自動的に拡大表示してくれているようです。
Ubuntu上でもcheeseを使って同じように表示できることを確認できたのですが、Mac上でPhoto Boothを使って画像を表示しようとすると、Photo Boothが例外エラーで止まってしまいます。どうして!? WIndowsはMacの上の仮想マシンで動いているのに。。。
画面情報はIsochronous転送で1ms毎に 1ラスタ分のデータを送信していますので、120ラスタから成る1画面を送るには120msかかることになり、8.3FPSに相当します。1ラスタ分のデータを送信するペイロードは、ヘッダ2バイトとYUVデータ320バイトの合計322バイト長になります。エンドポイントのwMaxPacketSIzeを倍にして、1度に2ラスタ分を送ろうと試みたのですが、そうするとカメラを認識してくれません。どうやらwMaxPacketSizeが512バイトを超えるとカメラとして動いてくれないようです。Mac OSX(or WIndows?)のUSBバンド幅の管理制御によって制限を受けているのでしょうか??
動いている実感に欠けます。そこで、XMOSのサンプルのようにRGBのカラーバーを表示して、スクロールさせてみました。
表示にはWindows 10のカメラアプリを使用。ソフトでは160×120の画面情報を送っているのですがカメラアプリが自動的に拡大表示してくれているようです。
Ubuntu上でもcheeseを使って同じように表示できることを確認できたのですが、Mac上でPhoto Boothを使って画像を表示しようとすると、Photo Boothが例外エラーで止まってしまいます。どうして!? WIndowsはMacの上の仮想マシンで動いているのに。。。
画面情報はIsochronous転送で1ms毎に 1ラスタ分のデータを送信していますので、120ラスタから成る1画面を送るには120msかかることになり、8.3FPSに相当します。1ラスタ分のデータを送信するペイロードは、ヘッダ2バイトとYUVデータ320バイトの合計322バイト長になります。エンドポイントのwMaxPacketSIzeを倍にして、1度に2ラスタ分を送ろうと試みたのですが、そうするとカメラを認識してくれません。どうやらwMaxPacketSizeが512バイトを超えるとカメラとして動いてくれないようです。Mac OSX(or WIndows?)のUSBバンド幅の管理制御によって制限を受けているのでしょうか??