WebRTC/配信向けARM/RISC-V系SoCの動画機能
What's this
最近ちょっと調べていたので、SBCなどで入手しやすい各種SoCの動画エンコーダ・画像処理機能について網羅的にまとめてみる
ただし、まだ書き掛け
テンプレート
こんな感じで書いていく
(メーカー名・SoC名など)
概要
チップデータシートなど
エンコーダ・デコーダ
画像処理機能
AI支援
その他特徴的な機能
SDK/サンプルコードリンク
所感
RK3588、RV1106等RockChip系
概要
ARM quad-core Cortex-A76 + quad-core Cortex-A55(RK3588)など
ボードとして有名なのはRock 5BやOrange Pi 5など
https://rockchips.net/product/rk3588/ より
- 8nm process technology featuring quad-core Cortex-A76 and quad-core Cortex-A55 processors.
- ARM Mali-G610 MC4 GPU with embedded high-performance 2D image acceleration module.
- 6.0 TOPs NPU supporting a variety of AI applications.
- 8K video codec with 8K@60fps output for high-resolution display.
- Multiple display interfaces supporting multi-screen display.
- Super 32MP ISP with HDR and 3DNR, compatible with multiple camera inputs.
- Extensive high-speed interfaces, including PCIe, Type-C, SATA, and Gigabit Ethernet.
- Operating systems: Android and Linux.d and Linux OS
色んなモデルがあるが、SDKはある程度共通(AI系がrknn1と2がある)
RV1106G3などもI/Oが少なくチップの性能は低くなるものの小型で面白い。ハードウエアエンコーダも同じように載っているので色々遊べそう。特にこの Pico Por などは有線LANが実装されているので、カメラをCSI・マイクをI2Sで接続さえ出来れば結構面白いことが出来そう。JetKVMはRV1106を使っている。
エンコーダ・デコーダ
Supports multi-video decoding for H.265/H.264/AV1/AVS2, up to 8K at 60fps
8K @30fps video encoders for H.264/H.265
とあるが、mppライブラリにはAV1,AVS2デコードのコードが入ってないような…?
でもjellyfinのドキュメントにはAV1デコード出来るようなことが書いてある…?
同ドキュメントによると1080p@480fps or 4k@120fpsでトランスコード出来るって書いてあるので思ったより速いっぽい。WebRTCや配信などの等速が保証出来れば良い環境には十分すぎるほど
画像処理機能
RGA (Raster Graphic Acceleration Unit)として、CPUとは別のユニットがSoCのメモリを読み書きして回転・クロップ・スケーリング・色空間変換(RGB<=>YUVなど)を非同期に行える機能。
処理速度は1~3 Pixels / Cycleとあるのでかなり速いと思う(ちゃんと測ったことはない)
AI支援
RK3566/RK3568 Series/RK3588 Series/RK3562 Series/RV1103/RV1106はRKNPU2、RK1808/RV1109/RV1126/RK3399ProはRKNPUと、SDKが非互換
ユーザとしてはrknn-toolkit2を使う感じ。rknn-toolkit2ではモデルの変換を行うコードなども含まれているので、推論だけをするときはrknn-toolkit-lite2を使えば良い。rknn-toolkit2はx86 PCなどに入れると良いっぽい。x86 PCにはNVIDIA GPUを積んでおいたほうがいいかもしれない(なくても大丈夫かも)
最初の頃はなんか使いにくそうという所感だったが、年月が経って色々周辺が揃ってきてrkllmではLLMの推論も出来るようになっている
その他特徴的な機能
rk3588だとHDMI-Inputが付いているのが面白い。HDMI-CSI変換を使わなくて良いので楽。だけどちょっと癖があるみたい。
参考: https://rigaya34589.blog.fc2.com/blog-entry-1671.html
SDK/サンプルコードリンク
他、rockchip-linuxやairockchipのorgの下に色々ある
所感
Rock-5B/Orange Pi 5などRK3588のボードは入手性が割と良い。ちょっとお高いのがネックか。
小型のRV1106も面白く、SDKが共通なので色々遊びやすそう。
https://rockchips.net/rk3688-vs-rk3668/ 3688になると32 TOPSになるってあるけど、いつ出るのかな…?
rknn-P3って書いてあるあたり、もしかしたらrk3588のrknn2と互換性が無いかもしれない
TBW
AllWinner A773など
概要
radxa Cubie-A7A や radxa Cubie-A7Z などに載っている。AllWinnerといばなんか安めのAndroid端末とかに良く搭載されているようなイメージ。
CPU: 2× Cortex-A76 + 6× Cortex-A55, The
maximum main frequency is 2.0 GHz.
GPU: Imagination BXM-4-64
MC1, Efficient Graphics
and Rendering
チップデータシートなど
エンコーダ・デコーダ
- Encoding: 4K@30fps H.264/H.265
- Decoding: 4K@60fps H.265 / VP9 / AVS2, 4K@30fps H.264
画像処理機能
AI支援
NPU: 3 TOPS@INT8, Integrated
Vivante VIP9000 NPU, native INT8 /
INT16 / FP16 / BF16, multi-precision
mixed computing
その他特徴的な機能
SDK/サンプルコードリンク
所感
日本ではそれほど入手性は良くないけど、Rock-5Bに比べてやや安価なのでちょっと面白いかも。
ちょっとSDKのドキュメントは不親切かも。
Axela AXC630C、AX8850など
TBW
概要
M5StackがLLMモジュール、LLM8850モジュールなどで採用している他、MaixCam2 でも採用されている。
チップデータシートなど
エンコーダ・デコーダ
Video Encoding
H.264 HP/MP/BP Level 5.1
• H.265 MP Level 5.0
• I-/P-frames
• Real-time multi-stream
H.264/H.265 encoding: 4K@30 fps + 1080p@30 fps + 720p@30 fps
• CBR/VBR/FIXQP bit rate
control mode
• 8 ROI encoding
• JPEG snapping performance: 3840 × 2160@40 fps
Video Decoding
• H.264 HP/MP/BP: Level 4.2
• Max. decoding performance: 1080p@60 fps
• I-/P-/B-frames
• JPEG decoding: 1080p@60fps
これも複数解像度同時エンコード対応?
画像処理機能
ISP
• Max. 4K@30fps AI ISP
• Supports 3A (AF, AWB, AE)
• Supports AI-3DNR, 3DNR
• Supports AI-RLTM
• Supports 2f HDR
• Supports FPN removal and
DPC
• Supports fisheye correction
• Supports DIS and EIS
• Supports defogging
• Supports lens shading
AI支援
pulsar2とかでモデルを変換して使う形。あとでかく。
その他特徴的な機能
レンズの歪み補正やAF/AWB/AEなどを積んでいるので、ちゃんと使えれば単純にCSIから画像を撮って垂れ流しにするよりも綺麗な絵を出すことが出来そうな感じがある。
SDK/サンプルコードリンク
https://github.com/AXERA-TECH 以下に色々
所感
AX630CはRK3588などに比べると低消費電力なのが魅力。AX8550はしっかりファンが付いてだいぶごっつくなるが推論速度はかなり速くなりそうで期待が持てる。ただ、メモリはそこまででもなさそうだからそんなに大きなモデルをロード出来なかったり、複数モデルの同時ロードとかには弱いかもしれない。
TBW
SG2002 (Sipeed Lichee RV Nanoなど)
概要
コアのRISC-V/ARMの切り替えが可能な変わり種SoC
Lichee RV NanoをベースにHDMIキャプチャなどを付けたNanoKVMやカメラを内蔵した MaixCam Pro などのバリエーションが作られている
SOPHGO がチップメーカーなのかな?
上に書いた通り、NanoKVMの中身。
チップデータシートなど
エンコーダ・デコーダ
- H.264 Baseline/Main/High profile
- H.265 Main profile
- H.264/H.265 both support I frames and P frames
- MJPEG/JPEG baseline
- H.264 codec maximum resolution: 2880x1620 (5M)
- H.265 encoding maximum resolution: 2880x1620 (5M)
- H.264 codec performance
- 2880x1620@30fps + 720x576@30fps
- 1920x1080@30fps encoding + 1920x1080@30fps decoding
- H.265 encoding performance
- 2880x1620@30fps + 720x576@30fps
- JPEG maximum codec performance
- 2880x1620@30fps
- Supports multiple rate control modes such as CBR/VBR/FIXQP.
- Supports Region of Interest (ROI) encoding
H.264のパフォーマンスのところで "+" って書いてあるのは複数解像度の同時エンコーディングが出来るということなのかな…?
画像処理機能
スケーリング・色空間変換など色々な機能あり。CannyやSobel、2値化などもあって多機能なように見えて実は回転・フリップが無いような…?
https://developer.sophgo.com/thread/471.html のIVEに色々書いてある
AI支援
その他特徴的な機能
SDK/サンプルコードリンク
所感
RISC-Vでも結構面白いことが出来そうな気がしてくる
WebRTC用途などで考えるともう一つ重要な機能としてオーディオ系の機能でAECのサポートがあるかどうかが気になってちょっと調べてたんだけど、ちゃんとまとめてなかったからもう一度調べ直さなきゃ…
何かのチップがAECサポートがハードなのかソフトなのか分からんけど記載があったような…
消費電力のざっくりした目安とかも調べておきたい