ぐるぐる先生からlibjpeg-turboが古いんじゃぁとっとと新しくせんかぁってメールが来たので、libjpeg-turbo1.4.0を1.5.0(今の公式最新)に変更したついでに新バージョンをリリースしたねん。
変更内容:
- libjpeg-turbo1.4.0を1.5.0に変更
- x86向けのバイナリでSIMDが有効に出来てなくてmjpeg展開がとろくさかったのを修正。
端末の性能とカメラからの映像の解像度にもよるけど最大で2倍ぐらいは早くなった - 映像フレーム受信時にタイムタンプを更新するのを忘れてたのを修正
受信スレッドのピンポンバッファからコピーしてフレーム処理スレッド(mjpeg展開したりテクスチャに書き込んだりするところ)にキューする時に忘れてたm(_ _)m - バックグラウンドモードで動作する際に従来は通常のサービスとして動かしてたのをフォアグラウンドサービスとして動くように修正。
Android6.x以降やとkillされてまう時があるみたいやねん - 静止画をjpegとして保存する際の処理を高速化
- 一定時間(5秒)後に画面上のアイコン等を殆ど全てを非表示にする設定・処理を追加
- 互換性ON(libusb/libuvcを使う時)にカメラと端末によってはクラッシュすることがあるのを修正。
変なステータスを返してきよるカメラがあってん
あと、これは実際には使っとらんのやけど64ビット用のバイナリをビルドできるようにした。なんでや言うたらNexus9/Nexus6p/Nexus5xで試してみたんやけど32ビットバイナリの方が速いねん(。・_・。) コンパイラの最適化が上手くいっとらんのか端末自体がそんなもんなんかようわからへんけど。
これも自分のアプリではまだ使こてないんやけど諸般の事情でUVC1.1とUVC1.5のh264ストリームもちゃんと扱えるようなりました。いまはmjpegとyuvしか選択できへんけど希望があればh264,mjpeg,yuvの優先順位を変更できるようにするかも。
一応プログラム上はVP8でも動くはずやけど、VP8で送ってくるカメラが無い…というか有るんやろか?
オレオレバックエンドライブラリにUSB3の処理を一部追加した。残念ながら今のところテストできる端末がないからとりあえずはディスクリプタの解析を実装したところで中断したけど。
Nexus6p/Nexus5xはtypeCコネクタやけどUSB2やったし。
GALAXY S5はコネクタはマイクロUSB3やねんけどUSB3のOTGケーブルでUSB3のカメラを繋いでもカメラからはUSB2なんじゃぁって返ってくる。USB3のハードディスク繋いでもUSB2で動きよる。ようするに端末(のUSBコントローラー)がどう振る舞おうとしているかはわからへんけど、機器から見るとUSB2のホストやっちゅうことみたいや。理由は中の人しかわからへんけど、使こてるQUALCOMMのチップ自体はUSB2/3両対応やからハードウエアかカーネルドライバあたりでUSB3は無効にされとるみたいやわ。