GStreamer Based Image Signal Processor - Performance - rb5
GStreamer Image Signal Processor |
---|
Image Signal Processor Basics |
Docs |
Getting Started |
Examples |
Performance |
Troubleshoot |
Contact Us |
Benchmark environment
The following setup was used for all the benchmarks:
- Qualcomm Robotics RB5 Development Kit
- Linux Ubuntu (LU) 20.04 from Thundercomm SDK
The measurements are taken considering the following criteria:
- Average behaviour: measurements considering typical image processing pipelines. The CPU consumption excludes the video source overhead.
- Limit performance: measurements by stressing the GStreamer element
GStreamer Bayer10 Support
GStreamer has support for 8-bit Bayer only. Please follow RidgeRun Wiki on Building custom v4l2src to support 10 bit Bayer.
Environment
Please, enable the HDMI with the following instructions: Qualcomm_Robotics_RB5/Development_in_the_Board/Device_Setup/HDMI_Setup and set the following environment variables (if you are remotely connected to the RB5):
export WAYLAND_DISPLAY=wayland-0 export XDG_RUNTIME_DIR=/usr/bin/weston_socket
CSC Benchmarking
Instruments:
- CPU: RidgeRun Profiler
- RAM: RidgeRun Profiler
- Framerate: GstPerf
Pipeline:
WIDTH=1920 HEIGHT=1080 SRC_FORMAT=RGBA TGT_FORMAT=NV12 # Average Behaviour: CPU and RAM gst-launch-1.0 videotestsrc is-live=true ! "video/x-raw,format=$SRC_FORMAT,width=$WIDTH,height=$HEIGHT,framerate=(fraction)30/1" ! queue ! ispclcsc ! "video/x-raw,format=$TGT_FORMAT" ! perf ! fakesink -v # Limit Performace: Framerate gst-launch-1.0 videotestsrc num-buffers=1 ! imagefreeze ! "video/x-raw,format=$SRC_FORMAT,width=$WIDTH,height=$HEIGHT,framerate=(fraction)30/1" ! queue ! ispclcsc ! "video/x-raw,format=$TGT_FORMAT" ! perf ! fakesink -v
Conf1: RGBA -> NV12
Conf2: NV12 -> RGBA
Resolution | CPU Load (overall) | Framerate (Conf1) | Framerate (Conf2) | RAM Consumption |
---|---|---|---|---|
720p | <2% | 303.9 | 256.5 | 41.86 MiB |
1080p | <2% | 167.4 | 131.1 | 41.84 MiB |
4K | 2.3% | 52.7 | 39.2 | 67.53 MiB |
Debayer Benckmarking
Instruments:
- CPU: RidgeRun Profiler
- RAM: RidgeRun Profiler
- Framerate: GstShark
Pipeline:
WIDTH=1920 HEIGHT=1080 GST_DEBUG="GST_TRACER:7" GST_TRACERS="proctime(filter=ispcldebayer)" gst-launch-1.0 videotestsrc is-live=true ! "video/x-bayer,format=(string)bggr,width=$WIDTH,height=$HEIGHT,framerate=(fraction)30/1" ! queue ! ispcldebayer ! fakesink -v
Resolution | CPU Load (overall) | Framerate | RAM Consumption |
---|---|---|---|
720p | <2% | 181.8 | 51.95 MiB |
1080p | <2% | 126.6 | 60.73 MiB |
4K | ~4% | 24.3 | 107.65 MiB |
AWB Benchmarking
Instruments:
- CPU: RidgeRun Profiler
- RAM: RidgeRun Profiler
- Framerate: GstShark
Pipeline:
WIDTH=1920 HEIGHT=1080 GST_DEBUG="GST_TRACER:7" GST_TRACERS="proctime(filter=ispcldebayer)" gst-launch-1.0 videotestsrc is-live=true ! "video/x-bayer,format=(string)bggr,width=$WIDTH,height=$HEIGHT,framerate=(fraction)30/1" ! queue ! ispclawb ! fakesink -v
Resolution | CPU Load (overall) | Framerate | RAM Consumption |
---|---|---|---|
720p | <2% | 125.0 | 43.12 MiB |
1080p | <2% | 85.47 | 44.55 MiB |
4K | ~3% | 22.7 | 59.63 MiB |
Histogram Equalization Benchmarking
Instruments:
- CPU: RidgeRun Profiler
- RAM: RidgeRun Profiler
- Framerate: GstPerf
Pipeline:
WIDTH=1920 HEIGHT=1080 FORMAT=NV12 # Average Behaviour: CPU and RAM gst-launch-1.0 videotestsrc is-live=true ! "video/x-raw,format=$FORMAT,width=$WIDTH,height=$HEIGHT,framerate=(fraction)30/1" ! queue ! ispcleq ! perf ! fakesink -v # Limit Performace: Framerate gst-launch-1.0 videotestsrc num-buffers=1 ! imagefreeze ! "video/x-raw,format=$FORMAT,width=$WIDTH,height=$HEIGHT,framerate=(fraction)30/1" ! queue ! ispcleq ! perf ! fakesink -v
Resolution | CPU Load (overall) | Framerate (NV12) | Framerate (GRAY8) | RAM Consumption |
---|---|---|---|---|
720p | <2% | 132.5 | 138.7 | 41.86 MiB |
1080p | <2% | 88.5 | 90.7 | 41.84 MiB |
4K | 4.8% | 30.5 | 31.75 | 67.53 MiB |