GStreamer Based Image Signal Processor - Performance - rb5

From RidgeRun Developer Wiki


Previous: Performance/imx8 Index Next: Troubleshoot





Benchmark environment

The following setup was used for all the benchmarks:

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



Previous: Performance/imx8 Index Next: Troubleshoot