Android NDKとNexus9を使って64bit ARMのバイナリを試してみた話の続き。
一昨日書いたソースコードで、インラインアセンブラで記述した2つの整数を加算する部分をアセンブラで書き直してみた。
アセンブラ部分のソースコードadd.s (c:\work\jni\add.s)はこのようになった。
.global addvalues .text .align 4 addvalues: ADD x0,x0,x1; ret;
Android NDKとNexus9を使って64bit ARMのバイナリを試してみた話の続き。
一昨日書いたソースコードで、インラインアセンブラで記述した2つの整数を加算する部分をアセンブラで書き直してみた。
アセンブラ部分のソースコードadd.s (c:\work\jni\add.s)はこのようになった。
.global addvalues .text .align 4 addvalues: ADD x0,x0,x1; ret;
Android 5.0 Lollipopで32bit ARMバイナリが動かない。
昨日、NDKで64bit ARMのバイナリを作って動かしていて、比較で32bit ARMのバイナリをNexus9(Android 5.0)で動かそうとして気がついた。
error: only position independent executables (PIE) are supported.
というエラーが出るという症状だ。
調べてみると、StackOverflowというサイトに原因と対処法が載っていた。
→ Executable file cannot run on Android L
Android 5.0(Lollipop)からセキュリティ強化のため実行できるバイナリの形式が制限されているらしい。
PIEという形式でないと駄目だそうだ。
続きを読む
Android NDKとNexus9を使って64bit ARMのバイナリを試してみた。
ちなみに去年(2014年)、iOSで64bit ARMのバイナリをコンパイルして動かすのを試している。
→ iOSのJailbreak環境で64bit ARM(AARCH64)のバイナリを試してみた
→ iOSのJailbreak環境で64bit ARM(AARCH64)のインラインアセンブラを試す
今回は、Android NDKで64bit ARMのバイナリをコンパイルするのを試してみる。
続きを読む
OvrvisionのデモソフトなどがOculus Riftが繋がってない状態で起動するとクラッシュするようだ。
Oculus Riftが繋がっているかどうかちゃんと判定するのって難しくないだろうにと思う。
ということで、Oculus RiftがPCに繋がっているかどうかの判定を実際に自前でソフトを書いてみる。
Oclulus RiftはUSBのHIDデバイスとして認識されているので、特定のVID,PIDのデバイスに対してOpenしてみて、失敗したらOculus Riftが繋がっていないと判定すればいいだけなので簡単だ。
Oculus Rift DK1のVID 0x2833のPID 0x0001で、DK2のPIDは0x0021だった。
USBのHIDデバイスへのアクセスは、昔自分で書いたtiny_hid_dllというライブラリをそのまま使ったら簡単にできた。
続きを読む
Ovrvision以外にも、webカメラタイプのものがいくつか出ている。
以前Minoru Stereo 3D webcamというのを購入していた。
2011年ごろに書いたLYNX-3Dの話の中にちょっと映っている。2011年より前に買っていたようだ。
どこかに仕舞ってあるはずなのだけど、見つからない。
USBでPCに接続するとカメラデバイスが2つ認識される。
ドライバーをインストールすると、仮想ドライバーのような仕組みでサイドバイサイドで撮影される1つのカメラデバイスとして認識されるようになるようだ。
OpenCVでこのステレオカメラを簡易操作するソースコードが作成されて公開されていたりする。。
続きを読む
昨日書いたソフトのキャプチャー部分をOvrvision SDKを使って書き直してみた。
Ovrvision SDKのexampleソースコードをビルドして動かしてみたり、ソースコードの中身を眺めたりしている。wizapplyというライブラリがアプリ作りに使われているけど、OculusやOvrvisionには関係なさそうだ。SDKの使い方が逆に分かりにくい感じだった。
なんとかSDKのリファレンスと一緒に眺めて、なんとなくはSDKの使い方が理解できたようだ。
続きを読む
Ovrvision用のキャプチャーソフトを書いてみている。
USB接続の2つのカメラデバイスとしてWindowsに認識されているので、2つのカメラからの同時キャプチャーをすればよい。
OpenCVでする場合、
CvCapture *capture1,*capture2; capture1 = cvCaptureFromCAM(0); // Right camera capture2 = cvCaptureFromCAM(1); // Left camera frame1 = cvQueryFrame(capture1); frame2 = cvQueryFrame(capture2);
などとすればよい。
しかし、ノートPCで既に内蔵のwebカメラがある場合にカメラが3つとなり、その場合にちょっと困る。
内蔵カメラデバイスをデバイスマネージャーから無効に設定するとよいかと思ったら、動くこともあれば動かないこともあり、どうも安定しない。
続きを読む
先日入手したOvrvisionを試してみている。
Oculus Rift DK1に取り付けてソフトを自作するのを試してみた。
続きを読む
Android つ部勉強会に行ってきた。
続きを読む