Jump to content

Birds Eye View - Performance on NXP i.MX8

From RidgeRun Developer Wiki

Follow us on: YouTube Twitter LinkedIn Email Share this page

Share This Page

⇦ Performance/NVIDIA Jetson Home Contact us ⇨


RidgeRun's Birds Eye View (BEV) is designed for multi-camera surround-view processing on embedded Linux systems, and this page shows how it performs on an NXP i.MX8M Plus using the GstBEV plugin. In the benchmarked setup, BEV processed 4 and 6 H.264 input streams delivered over UDP/RTP at resolutions from 1024x768 to 1920x1080 and sustained about 25 fps in most cases, with CPU, memory, GPU, and latency measurements included for sizing reference. These results help developers estimate how BEV scales on i.MX8-based designs, especially when comparing 4-camera and 6-camera pipelines and evaluating the tradeoff between framerate, latency, and memory usage.

Benchmark Environment

Hardware:

  • NXP i.MX8M Plus

Software:

  • GStreamer

Methodology

The measurements were performed using four UDP streams of RTP H.264 video on the i.MX8M Plus which are decoded and processed with RidgeRun's Birds Eye View. The video streams used for the tests are sent by a PC in the same network as the i.MX8M Plus, and with resolutions of 1024x768, 1280x720 and 1920x1080 at 30 fps.

The following pipeline was used to send the video streams from the PC:

# Sender pipeline on the PC
GST_DEBUG=2 gst-launch-1.0 \
  videotestsrc pattern=ball ! $CAPS1 ! queue ! x264enc speed-preset=ultrafast tune=zerolatency ! $CAPS2 ! h264parse config-interval=1  ! rtph264pay ! udpsink host=<ip-address> port=3000 \
  videotestsrc pattern=ball ! $CAPS1 ! queue ! x264enc speed-preset=ultrafast tune=zerolatency ! $CAPS2 ! h264parse config-interval=1  ! rtph264pay ! udpsink host=<ip-address> port=3001 \
  videotestsrc pattern=ball ! $CAPS1 ! queue ! x264enc speed-preset=ultrafast tune=zerolatency ! $CAPS2 ! h264parse config-interval=1  ! rtph264pay ! udpsink host=<ip-address> port=3002 \
  videotestsrc pattern=ball ! $CAPS1 ! queue ! x264enc speed-preset=ultrafast tune=zerolatency ! $CAPS2 ! h264parse config-interval=1  ! rtph264pay ! udpsink host=<ip-address> port=3003 -v

The following pipeline was used to receive the video streams on the i.MX8M Plus, decode them and generate the birds eye view:

GST_DEBUG=2 gst-launch-1.0 \
udpsrc port=3000 ! application/x-rtp,media=video,encoding-name=H264 ! rtph264depay ! h264parse ! \
  queue max-size-buffers=3 leaky=downstream ! v4l2h264dec ! $CAPS3 ! queue max-size-buffers=3 leaky=downstream ! \
  imxvideoconvert_g2d ! $CAPS4 ! queue max-size-buffers=3 leaky=downstream ! bev.sink_0 \
udpsrc port=3001 ! application/x-rtp,media=video,encoding-name=H264 ! rtph264depay ! h264parse ! \
  queue max-size-buffers=3 leaky=downstream ! v4l2h264dec ! $CAPS3 ! queue max-size-buffers=3 leaky=downstream ! \
  imxvideoconvert_g2d ! $CAPS4 ! queue max-size-buffers=3 leaky=downstream ! bev.sink_1 \
udpsrc port=3002 ! application/x-rtp,media=video,encoding-name=H264 ! rtph264depay ! h264parse ! \
  queue max-size-buffers=3 leaky=downstream ! v4l2h264dec ! $CAPS3 ! queue max-size-buffers=3 leaky=downstream ! \
  imxvideoconvert_g2d ! $CAPS4 ! queue max-size-buffers=3 leaky=downstream ! bev.sink_2 \
udpsrc port=3003 ! application/x-rtp,media=video,encoding-name=H264 ! rtph264depay ! h264parse ! \
  queue max-size-buffers=3 leaky=downstream ! v4l2h264dec ! $CAPS3 ! queue max-size-buffers=3 leaky=downstream ! \
  imxvideoconvert_g2d ! $CAPS4 ! queue max-size-buffers=3 leaky=downstream ! bev.sink_3 \
bev name=bev calibration-file=<calibration_file> ! \
  queue max-size-buffers=3 leaky=downstream ! imxvideoconvert_g2d ! $CAPS4 ! glimagesink sync=false qos=false


To obtain the measurements on the different performance indicators, we used the following tools:

  • CPU Usage and memory usage: /proc/pid/stats
  • Latency: GstShark
  • GPU Usage: GPU Top
  • Framerate: GstShark

Performance Results

Table 1 presents the performance results for 4 input video streams, while Table 2 presents the results for 6 input video streams. The result shows that the CPU usage, latency, framerate and CPU usage is nearly the same for all the resolutions tested.

Table 1: Performance results with Birds Eye View on an i.MX8M Plus with 4 input videos
Parameter Result
Resolution 1024x768 1280x720 1920x1080
CPU Usage(%) 23.15 23.34 23.53
Memory Usage(MiB) 187.22 183.91 190.34
Latency(s) 0.252585 0.250167 0.252863
GPU Usage(%) 24 26 26
Framerate(fps) 25.541 24.703 22.897


Table 2: Performance results with Birds Eye View on an i.MX8M Plus with 6 input videos
Parameter Result
Resolution 1024x768 1280x720 1920x1080
CPU Usage(%) 35.41 34.93 36.54
Memory Usage(MiB) 333.37 341.82 409.06
Latency(s) 0.635835 0.610770 0.613545
GPU Usage(%) 42 44 45
Framerate(fps) 25.006 24.997 24.910

FAQ

Which NXP platform was used for the benchmark?
The benchmark was run on an NXP i.MX8M Plus platform.
How many video inputs were tested?
The page includes results for both 4 input video streams and 6 input video streams. This is useful for understanding how Birds Eye View scales as the number of cameras increases.
What kind of input streams were used?
The measurements used RTP H.264 video streams sent over UDP from a PC on the same network as the i.MX8M Plus. The i.MX8M Plus received, decoded, converted, and stitched those streams into a bird's-eye-view output.
What resolutions and frame rates were tested?
The test streams used 1024x768, 1280x720, and 1920x1080 resolutions at 30 fps.
What framerate did BEV achieve on NXP i.MX8M Plus?
For 4 input streams, the measured BEV framerate was about 25.541 fps at 1024x768, 24.703 fps at 1280x720, and 22.897 fps at 1920x1080. For 6 input streams, the measured framerate stayed close to 25 fps across all tested resolutions, with 25.006 fps at 1024x768, 24.997 fps at 1280x720, and 24.910 fps at 1920x1080.
How much CPU usage was observed?
With 4 input streams, CPU usage stayed around 23% across the tested resolutions. With 6 input streams, CPU usage increased to about 35% to 37%, showing that adding more camera inputs has a clear effect on processing load.
How much GPU usage was observed?
GPU usage ranged from 24% to 26% for 4 input streams and from 42% to 45% for 6 input streams. This indicates that GPU load rises significantly when the number of input streams increases.
How much memory did the pipeline use?
For 4 input streams, memory usage was roughly 184 MiB to 190 MiB. For 6 input streams, memory usage increased substantially, ranging from about 333 MiB to 409 MiB, with the highest memory usage reported at 1920x1080.
What latency was measured?
With 4 input streams, latency was about 0.25 seconds across the tested resolutions. With 6 input streams, latency increased to about 0.61 to 0.64 seconds. This shows that the 6-camera configuration adds a noticeable delay compared with the 4-camera case.
Does resolution have a large impact on BEV performance on this platform?
On this page, the number of input streams appears to have a stronger effect than resolution for most metrics. Framerate remains fairly stable across the tested resolutions, while CPU, GPU, memory, and latency increase more noticeably when moving from 4 inputs to 6 inputs.
How were the measurements collected?
CPU usage and memory usage were measured with /proc/pid/stats, latency and framerate were measured with GstShark, and GPU usage was measured with GPU Top.
What decode and conversion elements were used in the pipeline?
The receive pipeline used v4l2h264dec for H.264 decoding and imxvideoconvert_g2d for color conversion before passing each stream to the BEV element.
Can I treat these numbers as guaranteed performance for every i.MX8 design?
No. These results are a reference for the tested i.MX8M Plus setup and pipeline only. Actual performance will vary depending on SoC variant, system memory configuration, decoder and display setup, network conditions, calibration data, and any additional processing stages in the full application.
Where can I compare these results with other BEV platforms?
You can compare this page with Birds Eye View/Performance/PC and Birds Eye View/Performance/NVIDIA Jetson. For profiling details, see Birds Eye View/Performance/Profiling. For i.MX8-specific pipelines, review Birds Eye View/GStreamer/i.MX8 Pipelines. If you need help optimizing BEV on NXP hardware, visit Birds Eye View/Contact us.



⇦ Performance/NVIDIA Jetson Home Contact us ⇨


Cookies help us deliver our services. By using our services, you agree to our use of cookies.