けど使えない(´・ω・`)
Android端末でUVC(USB Video Class)カメラを接続してプレビュー表示・録画・静止画撮影するためのアプリをGoogle Playで公開しています。
リンクはこちら
広告付きの無料版
広告無しの有料版、追加機能有り
これらのアプリではUSBホスト機能を使ってUVCカメラへアクセスしているのですが、GooglePlayのアプリ紹介ページやこのサイトの動作確認ページに書いている通り、MediaTek製, Rockchip製およびAllwinner製のCPU/SOCを搭載した端末では動作しない事があります(と言うかほとんどの場合動きません)。
手元にLenovoのIdeaTab A1000Fと言うAndroid端末がありますが、この端末のCPUがまさにMediaTek製でうまく動かすことが出来ません。
いろいろ調べた結果幾つか新たにわかったことがあるので記事にしたいと思います。
で、わかったことというのは、これらの端末には、
- USBホスト機能自体がうまく動かない、もしくは存在しない。
当然UVCカメラを繋いでもうんともすんとも言わない端末(´・ω・`) - アイソクロナス転送に不具合のある端末
アイソクロナス転送を開始しようとしてIOCTL呼び出しをしても常にエラーが返ってくるタイプ。
この場合は、USBの出力電流の問題さえクリアしていれば、カメラの検出&初期化まではインタラプト転送なので問題なく行うことが出来ます。
その結果インジケーターの付いているカメラであれば点灯する=カメラ側は映像を送ることが出来る状態にも関わらず、アイソクロナス転送出来ないのでカメラから映像を受け取ることが出来ず映像を表示できません。
の少なくとも2タイプ有るようです。
また、ハードウエアなのかカーネルの問題なのかUSBの出力電流に制限が有ることも多いようです。
前者については、ハードウエアが対応していてカーネルを書き換える事ができれば対処できるかもしれませんが、いずれにしてもアプリ側ではどうしようもありません。
後者については、出力電流の問題をクリアしてバルク転送可能なカメラであれば表示できる場合もあることがわかりました。でもバルク転送可能なカメラって一般向けの最近の普通のWebカメラ等ではほとんどないんだよねぇ(゜レ゜) 手持ちのUVC機器で言うとFEBON100にバルク転送用ファームウエアを書き込んだものだけです。
と言う事で新事実は判ったものの結局のところ使えないという事実は変わらず…m(__)m
ちゃんちゃん
2015/05/18ちょっとだけ追記:
FEBON100にバルク転送用ファームウエアを書き込んだものとA1000Fの組み合わせでは数秒ぐらいは映像を表示することが出来ました。でも数秒過ぎるとカーネル内でぶっ飛ぶのかハードウエアで制限がかかるのかA1000Fが強制的にリセットされてしまいます。
セルフパワーのUSBハブを挟んでA1000Fからの出力電流が数十mAレベルでもだめなのでこの機種はだめですね。
アイソクロナス転送が出来ないだけでそこに至るまでのネゴシエーションはうまく行ってて、カメラのランプは点く=カメラ側はデータ送る気満々でホストに読み込んでもらうのを待ってる状態なだけに悔しいですね。