Open8

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/サンプルコードリンク

https://github.com/rockchip-linux/mpp
https://github.com/airockchip/librga
https://github.com/rockchip-linux/rknn-toolkit2

他、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-A7Aradxa 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/サンプルコードリンク

https://github.com/allwinner-zh/media-codec

所感

日本ではそれほど入手性は良くないけど、Rock-5Bに比べてやや安価なのでちょっと面白いかも。
ちょっとSDKのドキュメントは不親切かも。

こーのいけこーのいけ

Axela AXC630C、AX8850など

TBW

概要

M5StackがLLMモジュール、LLM8850モジュールなどで採用している他、MaixCam2 でも採用されている。

チップデータシートなど

https://doc.switch-science.com/media/files/fbdb1f82-bef3-49f8-b3b2-a8a52d61ed2b.pdf

エンコーダ・デコーダ

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サポートがハードなのかソフトなのか分からんけど記載があったような…