CameraStack Server now has a reference port for the NXP i.MX 8M Mini. The i.MX 8M Mini is a very widely used embedded Linux processor, and it is a common choice for network cameras, video intercoms, access-control terminals and vision systems. On this port, the processor becomes a complete ONVIF network camera: multiple hardware H.264 profiles, JPEG snapshots, text OSD, motion and object analytics, RTSP streaming with TLS, and the shared ONVIF service set.
We built and tested it on a Geniatech XPI-iMX8MM board with an OmniVision OV5640 MIPI camera. Nothing in the port depends on that board beyond its sensor: it builds against NXP’s BSP and its GStreamer plugins, which every i.MX 8M Mini board carries.
An ONVIF camera in 111 lines of platform code
Platforms with a vendor GStreamer stack are the simplest kind of CameraStack port. The vendor has already done the hard hardware work: its GStreamer elements drive the camera, the hardware encoder and the image processing blocks. CameraStack’s shared GStreamer core knows how to build a complete camera from elements like these, so the port only has to describe the platform. A small adapter names the elements to use for capture, encoding, snapshots and analysis, and the core builds and runs the pipelines. ONVIF, authentication, profiles, events and RTSP delivery come for free from the same portable core used on every other platform.
NXP’s BSP provides exactly that, with GStreamer elements for camera capture, the VPU H.264 encoder and the G2D graphics engine. At the first complete server milestone, the i.MX 8M Mini adapter had 111 lines of code beyond boilerplate: 62 declaring defaults and capabilities, and 49 describing the hardware processing recipes. That was enough for a hardware-encoded 1080p30 H.264 profile, authenticated ONVIF management, discovery, JPEG snapshots and ONVIF metadata, served through either of CameraStack’s RTSP backends. No shared CameraStack code was added to get there.
The adapter has since grown to cover multiple profiles, overlays, analytics, rotation and demand-driven encoding, and the port carries focused optimisations and improvements for the BSP’s GStreamer libraries. It is still a single file of platform description on top of the shared core.
The same approach runs CameraStack on Raspberry Pi, NVIDIA Jetson and the Rockchip RK3588. If your SoC has a working vendor GStreamer stack, bringing CameraStack up on it is a short integration job.
Keeping the CPU for the camera
The port keeps image work on the i.MX 8M Mini’s hardware blocks and leaves the four Cortex-A53 cores free for the rest of the product. The VPU encodes the video, and G2D does the scaling, so the CPU only ever converts a 128x72 analysis image. The complete server runs at about 11 percent of one core while streaming.
The same small analysis image feeds up to four ONVIF MotionRegionDetector polygons, the ImageTooDark tampering event and object detection. PicoDet-S, YOLOX-Nano and PP-YOLOE-S run on the CPU at one inference per second, and detections are tracked and published as ONVIF scene metadata, the same as on the NPU platforms.
Encoding is demand-driven. An encoder with no viewers stops while the other profile keeps streaming, and wakes when a client asks for its stream again. Armed motion rules keep capture and analysis running while both encoders are idle, so events and metadata stay available without a video viewer.
Portrait video through ONVIF
The i.MX 8M Mini port also brought configurable rotation to CameraStack. A client sets 0, 90, 180 or 270 degrees through the standard ONVIF video source configuration, and G2D rotates the image before it reaches the shared processing branches. A quarter turn produces true portrait video: a profile configured as 1920x1080 delivers 1080x1920 pictures, and the secondary profile delivers 360x640. Snapshots, overlays and analytics coordinates all follow the rotated image, so a doorway or corridor camera can be mounted on its side and still produce correct metadata.
With rotation off, the capture buffers go straight to the encoder without a conversion pass. The rotation contract is shared, and other CameraStack platforms now support it too.
A common platform, ready to build on
The i.MX 8M Mini sits in a large number of shipping designs, and plenty of them already have a MIPI camera connector or a product roadmap that wants one. For those teams, the camera software is now an integration on top of the NXP BSP rather than a new project.
Building an i.MX 8M Mini camera? The port details are on the i.MX 8M Mini chipset page, and evaluation builds are available: get in touch.