ようやくMacとUVC接続できるようになったものの、表示させたカラーバーのスクロール速度がとても遅くて、1ラスタずつスクロールしていると縦方向480ラスタを移動するのに1分ちょっとかかってしまっています。1秒間に8フレームも送れていない計算になります。
確かにFull speedには出せない転送速度は出てはいるものの、High speedにしては遅すぎるので、ちょっと調べて見ました。具体的にはSOF割り込みの回数(sof_total) と アイソクロナス転送要求の回数 (datain_total)、そして1秒あたりの転送要求回数 (datain_sec)を数えてみました。High speedでは マイクロフレーム(125usec)毎にSOFと転送がかかるので、1秒間に8000回のSOF/転送が発生するはずなのですが、10秒ほどカメラを動かすと次のような結果となりました。
どうやら半分しか転送処理が走っていないようです。アイソクロナス転送で送るラスターデータを、その度に作成してから送信していたので、どうやら1回あたりのデータ作成とその送信処理が125usec以内に間に合わなかったために、2回に1回しか送信ができていなかったようです。そこで、あらかじめRGBのデータを用意しておきて、それにUVCのヘッダ情報を加えるだけに処理を簡略化してみました。
今度は、毎秒8000回の送信が回るようになり、画面のスクロール速度も倍になりました。現在はアイソクロナス転送で使用するエンドポイントのサイズを1024バイトにしているので、これで想定通り64Mbpsで送れていることになります。さて、High speedでは1マイクロフレームで、アイソクロナス転送を3回送ることが可能な仕様になっていますので、今度はこれに挑戦してみることにします。