DEV Community

jiahui dong
jiahui dong

Posted on Originally published at resume.tensorview.cc

Architecting High-Performance Multi-Camera Streaming with RGA Hardware Acceleration

This article was first published on my site: https://resume.tensorview.cc/blog/rk3588-rga-multi-camera.html
RGA + DMA zero-copy for three high-res camera streams

In a recent RK3588 Embedded Linux project I owned the vision capture path: three high-resolution streams (coaxial, USB, wireless) previewed at once. CPU soft conversion would choke the UI thread under that throughput.

Legacy CPU soft-decode path: heavy memory traffic fights the UI thread.
Legacy CPU soft-decode path: heavy memory traffic fights the UI thread.

The architectural decision

I designed around the on-SoC RGA from day one. A DMA path feeds raw YUV from contiguous buffers into RGA for YUV→RGB and scaling, skipping extra CPU cache churn.

RGA hardware path: CPU only configures; pixels stay on DMA.
RGA hardware path: CPU only configures; pixels stay on DMA.

Technical challenges

  • Strict alignment: posix_memalign 4K page-aligned pools keep DMA stable and avoid tearing / faults.
  • Heterogeneous sources: a unified buffer layer configures RGA from V4L2 metadata (UYVY vs YUYV, MIPI vs USB).

Live preview UI: switch coaxial / FOV / RX with hardware controls in one panel.
Live preview UI: switch coaxial / FOV / RX with hardware controls in one panel.

Outcome

All three cameras preview smoothly with negligible CPU on the video path, leaving headroom for business logic and UI. Hardware-aware design still wins in embedded.


Original post: https://resume.tensorview.cc/blog/rk3588-rga-multi-camera.html

Top comments (0)