UsbWebCamera/UsbWebCameraPro/UVCStreamerではMJPEGモードに対応したカメラだと高速に描画できます。でもいつもネックになるのがMJPEGのデコードです。ぶっちゃけ、ここ1〜2年の機種でカメラとの通信と描画だけだと1ミリ秒もかかりません。なのでいつもMJPEGをどない早く展開しようかと悩んでます。
初期はlibjpegと言うjpegエンコード/デコードライブラリを使っていました。それをlibjpeg-turboに変更することで平均約30%程度高速にデコードにできるようになったというのは以前の記事に書きましたが、今回更に15%程度早く展開できるようになりました\(^o^)/ カラースペース変換を更に1回省略できたのが高速化の鍵ですね。後はリスタートマーカーを使ってマルチスレッドのjpeg展開ライブラリを自前で実装するぐらいしか無くなってきました。だれか作って公開してないかなぁm(_ _)m
Nexus9で1280×720だとMJPEGデコード+描画で22ミリ秒/フレーム…約45FPSぐらいです。フルHD 1920×1080まで行くとさすがに30ミリ秒/フレームぐらいなので約30FPSまで落ちてしまいますが。
ということで(どういうことやねん)、640×480以下なら最大120FPSでるというUSB接続のカメラをポチッとしてしまいました。送料込みで約50ドルでした。なんちゃってスローモーション撮影とかできるようになったりして^^
ものはこれね
ちなみに、またそのうち記事にしますがh264でのストリーミングもできるようになりました。えらい大変だった(´・ω・`)。h264対応のカメラは高価で数も少ないですが持ってる人は楽しみにしといてくださいね。
UVCStreamerでストリーミングする際に消費電力が少なくて済むかも(MJPEGをデコード&h264へ再エンコードって処理を省略できるから)って言うぐらいのメリットしかないのであえて買う必要はないと思いますけど。
h264モードは次の次のアップデートで対応予定です。年内にでけるといいなぁ^^