Birds Eye View - GstBEV Plugin
| ⇦ Calibration Guide Legacy | Home | GStreamer/Generic Pipelines ⇨ |
| Getting Started |
|---|
| How BEV Works |
| User Guide |
| Calibration Guide |
| Calibration Guide Legacy |
| GStreamer |
| Performance |
| Contact Us |
The GstBEV element is RidgeRun's GStreamer plugin for generating a single birds-eye-view output from multiple calibrated camera streams. In practice, the plugin takes multiple RGBA inputs through request sink pads, uses a calibration JSON file to map those inputs into a top-down composition, and produces one RGBA output stream that can be displayed, encoded, or fed into a larger video pipeline. This page will show you how to check if the plugin is installed, the caps and properties of the element, and a simple validation pipeline to verify its functionality.
For product context, start with Birds Eye View. For setup steps, see Quickstart Guide, Building and Installation, and Calibration Guide.
Quick validation
The fastest way to verify that the plugin is installed and registered is to inspect it with GStreamer:
gst-inspect-1.0 bev
A healthy installation should produce the following output:
gst-inspect-1.0 bev
Factory Details:
Rank none (0)
Long-name Bird's Eye View
Klass Mixer/Video
Description Generates a bird's eye view transformation from N input images
Author Jimena Salas <jimena.salas@ridgerun.com>
Plugin Details:
Name panorama
Description GStreamer plugin for image transformations using libpanorama
Filename /usr/lib/aarch64-linux-gnu/gstreamer-1.0/libgstpanorama.so
Version 0.2.0
License Proprietary
Source module libpanorama
Binary package libpanorama
Origin URL www.ridgerun.com
GObject
+----GInitiallyUnowned
+----GstObject
+----GstElement
+----GstAggregator
+----GstBev
Pad Templates:
SRC template: 'src'
Availability: Always
Capabilities:
video/x-raw
format: RGBA
width: [ 1, 2147483647 ]
height: [ 1, 2147483647 ]
framerate: [ 0/1, 2147483647/1 ]
Type: GstAggregatorPad
Pad Properties:
emit-signals : Send signals to signal data consumption
flags: readable, writable
Boolean. Default: false
SINK template: 'sink_%u'
Availability: On request
Capabilities:
video/x-raw
format: RGBA
width: [ 1, 2147483647 ]
height: [ 1, 2147483647 ]
framerate: [ 0/1, 2147483647/1 ]
Type: GstAggregatorPad
Pad Properties:
emit-signals : Send signals to signal data consumption
flags: readable, writable
Boolean. Default: false
Element has no clocking capabilities.
Element has no URI handling capabilities.
Pads:
SRC: 'src'
Pad Template: 'src'
Element Properties:
calibration-file : Path to the calibration file containing all the bird's eye view parameters
flags: readable, writable, changeable only in NULL or READY state
String. Default: null
latency : Additional latency in live mode to allow upstream to take longer to produce buffers for the current position (in nanoseconds)
flags: readable, writable
Unsigned Integer64. Range: 0 - 18446744073709551615 Default: 0
min-upstream-latency: When sources with a higher latency are expected to be plugged in dynamically after the aggregator has started playing, this allows overriding the minimum latency reported by the initial source(s). This is only taken into account when larger than the actually reported minimum latency. (nanoseconds)
flags: readable, writable
Unsigned Integer64. Range: 0 - 18446744073709551615 Default: 0
name : The name of the object
flags: readable, writable
String. Default: "bev0"
parent : The parent of the object
flags: readable, writable
Object of type "GstObject"
start-time : Start time to use if start-time-selection=set
flags: readable, writable
Unsigned Integer64. Range: 0 - 18446744073709551615 Default: 18446744073709551615
start-time-selection: Decides which start time is output
flags: readable, writable
Enum "GstAggregatorStartTimeSelection" Default: 0, "zero"
(0): zero - Start at 0 running time (default)
(1): first - Start at first observed input running time
(2): set - Set start time with start-time property
Example Pipeline
Consider the pipeline depicted in Fig. 1, the GstBEV element receives a calibration file and the input of N cameras converted to RGBA format and outputs a single top-down birds eye view RGBA image.

Before testing with cameras, the simplest test is using GStreamer's videotestsrc and the calibration.json file that is provided in the evaluation package. In the following example, Birds Eye View will receive 6 video streams of 1280x720:
# Path to the calibration file provided with the evaluation package CALIBRATION_FILE=birds_eye_view.json # Video resolution and format CAPS="video/x-raw,width=1280,height=720,format=RGBA" # Pipeline gst-launch-1.0 -e bev name=bev0 calibration-file=$CALIBRATION_FILE \ videotestsrc is-live=true ! $CAPS ! queue ! bev0.sink_0 \ videotestsrc is-live=true ! $CAPS ! queue ! bev0.sink_1 \ videotestsrc is-live=true ! $CAPS ! queue ! bev0.sink_2 \ videotestsrc is-live=true ! $CAPS ! queue ! bev0.sink_3 \ videotestsrc is-live=true ! $CAPS ! queue ! bev0.sink_4 \ videotestsrc is-live=true ! $CAPS ! queue ! bev0.sink_5 \ bev0. ! queue ! nvvidconv ! nvv4l2h264enc bitrate=20000000 ! h264parse ! mp4mux ! filesink location=test.mp4
Note that the path to the calibration file is set using the calibration-file element property. Each video stream is connected to the bev element using the <element_name>.sink_<n> syntax.
The next step is to test with your own cameras. For this, make sure that your custom calibration.json and your pipeline use the same resolution caps for the inputs, otherwise the element output will be incorrect.
FAQ
- What does the GstBEV plugin do?
- It combines multiple calibrated camera streams into one birds-eye-view output stream using RidgeRun's BEV processing pipeline.
- How do I check whether GstBEV is installed correctly?
- Run
gst-inspect-1.0 bev. A valid installation should list the element, its pads, and its properties. - Does the calibration file matter?
- Yes. The calibration file is essential because it defines how the input images are transformed and stitched into the final top-down view.
- Why should my caps match the calibration file?
- The calibration data is tied to image geometry. If your runtime caps do not match the calibrated dimensions and format, the output may be distorted or unusable.
- Where can I find tested performance numbers?
- Use the dedicated RidgeRun performance pages for PC, NVIDIA Jetson, and NXP i.MX8.
Need help integrating GstBEV?
If you are moving from evaluation to product integration, contact RidgeRun for help with calibration workflows, platform bring-up, GStreamer optimization, and multi-camera pipeline tuning: Contact Us.
Related pages
- Birds Eye View
- Quickstart Guide
- Building and Installation
- Calibration Guide
- Generic Pipelines
- Performance