クアルコム社SnapdragonとGStreamerを使用した映像処理

IoT向けSnapdragonを使用した組み込み機器における映像処理

組み込み機器に物体認識や物体検出、顔認識などのAI機能を実装するにあたって、プロセッサーの画像/映像処理性能は重要な要素の1つとなります。Qualcomm Snapdragonと言えば多くのAndroidスマートフォンに搭載されているSoCとして有名ですが、弊社でお取り扱いしているIoT向けSnapdragonプラットフォームでもその高いスペックは健在で、多くのお客様に導入、検討いただいています。

Snapdragonで画像や映像などを扱う場合、GStreamerというマルチメディアフレームワークを活用している例が多く見られます。SnapdragonにはCPU/GPU/DSPなど複数のプロセッサーが搭載されており、これらの豊富なリソースを活用してエッジ端末で取得した画像/映像に対してリアルタイムに様々なAIアルゴリズムを実行することが可能となっています。

まず今回はQualcomm QCS610を搭載した評価キット上で、GStreamerを用いてMIPI-CSIカメラ/USBカメラ/IPカメラ映像のストリーミングまでやってみたいと思います。次回以降の記事ではクアルコム社が用意しているGStreamer プラグインを使用し、Snapdragonのハードウェアアクセラレーターを利用したビデオ処理やAI処理の例などをご紹介していく予定です。

テスト環境準備

使用したもの

C610 Open Kit (Qualcomm QCS610搭載評価キット)

Windows PC

DisplayPort対応ディスプレイ

IPカメラ (AXIS M2025-LE)

USBカメラ (Logicool C922n)

MIPIカメラモジュール (Sony社IMX415搭載モジュール)

※下図ではC610 Open KitにLCDが付いた画像を使用していますが、本ページの操作ではLCDは使用していません。

機材一式

Weston環境セットアップ

Weston環境を整えるため、評価キットのマニュアル(TurboX C410 C610 Open Kit Software User Manual)に記載されているダウンロードリンクから必要なファイル(Turbox-C610-aarch64_AI_Demo_Firmware.tgz)を入手します。

Open KitのADB debugポートとWindows PCを接続し、PCのコマンドプロンプト上で下記コマンドを実施していきます。コマンド先頭に(Open Kit)と記載があるものはシェルを起動した状態であることを表しています。

> adb root
> adb disable-verity
> adb reboot
> adb root
> adb shell mount -o remount,rw /
> adb push Turbox-C610-aarch64_AI_Demo_Firmware.tgz /data/
> adb shell
(Open Kit) $ tar -zxvf /data/Turbox-C610-aarch64_AI_Demo_Firmware.tgz -C /data/
(Open Kit) $ tar -zxvf /data/Turbox-C610-aarch64_AI_Demo_Firmware/aarch64-weston-dp.tgz -C /
(Open Kit) $ export XDG_RUNTIME_DIR=/dev/socket/weston
(Open Kit) $ chmod 0700 $XDG_RUNTIME_DIR
(Open Kit) $ /usr/bin/weston --tty=1 --device=msm_drm --idle-time=0 &

ディスプレイにこのような出力が確認できれば正常に起動できています。

※もし上記コマンドで画面に出力がない場合は下記手順で一度Westonのプロセスを終了させてから改めて起動をお試しください。

(Open Kit) $ killall weston
(Open Kit) $ /usr/bin/weston --tty=1 --device=msm_drm --idle-time=0 &

これで準備が完了です。各種カメラから映像を取得するためのGStreamerコマンド例をご紹介します。

GStreamerコマンド例

MIPI CSIカメラ

(Open Kit) $ gst-launch-1.0 -e qtiqmmfsrc name=camsrc ! "video/x-raw(memory:GBM),format=NV12,camera=0,width=1920,height=1080,framerate=30/1" ! waylandsink sync=false x=1000 y=600 width=640 height=480

USBカメラ

(Open Kit) $ gst-launch-1.0 v4l2src device=/dev/video3 ! videoconvert ! videoscale ! video/x-raw, width=1920, height=1080, framerate=30/1 ! waylandsink sync=false x=100 y=100 width=640 height=480

v4l2srcdeviceは上記例では/dev/video3を指定していますが、環境によっては異なる場合がありますので、デバイスファイルを確認のうえ適切な値をご設定ください。

IPカメラ (AXIS IPカメラの場合)

(Open Kit) $ gst-launch-1.0 rtspsrc location=rtsp://[user]:[password]@[IP address]/axis-media/media.amp ! rtph264depay ! h264parse ! queue ! qtivdec skip-frames=yes turbo=yes ! waylandsink sync=false x=1000 y=600 width=640 height=480

rtspsrclocationに関する設定は各社IPカメラによって異なりますので各機種に合わせてご設定ください。

本ページではQualcomm QCS610を搭載した評価キットを例としてDisplayPort出力の設定方法とGStreamerの使用例の一部を紹介しました。今後はGStreamerにAI推論のプラグインを組み合わせた使用例などのコンテンツも追加していく予定です。

今回使用した評価キットはThundercomm社のTurboX C610 Open Kitでした。下記画像から詳細仕様ページへリンクしていますのでご興味をお持ちいただけましたらぜひご覧ください。

お問い合わせ/お見積もり

本ページの内容に関するご質問や製品詳細情報をご希望の方はこちらからお問い合わせください。

クアルコム メーカー情報Topへ