GstNetBalancer - Building and installation guide

From RidgeRun Developer Wiki



Previous: Getting Started/Getting the Code Index Next: User Guide






Dependencies

The GstNetBalancer plugin has the following dependencies:

GStreamer

The GStreamer packages are likely already installed in your Ubuntu OS distribution. In case you want to double-check and install the missing packages, run the following commands.

sudo apt install libgstreamer1.0-dev libgstreamer-plugins-base1.0-dev gstreamer1.0-plugins-base libgstreamer-plugins-bad1.0-dev gstreamer1.0-plugins-bad

Meson

The GstNetBalancer plugin makes use of the Meson build system. To build correctly this plugin you need to use the latest version of Meson:

First, make sure python dependencies and ninja are installed

sudo apt install python3 python3-pip python3-setuptools python3-wheel ninja-build

Then, use pip3 to install Meson.

sudo -H pip3 install meson

Building the project

To build the GstNetBalancer plugin natively on the hardware, on its simplest form, run:

meson build --prefix /usr/
ninja -C build
sudo ninja -C build install

Check the element

After installing the plugin test that the plugin is being properly picked up by GStreamer by running:

gst-inspect-1.0 netbalancer

with expected output:

Factory Details:
  Rank                     none (0)
  Long-name                Network traffic balancer
  Klass                    Filter/Network
  Description              Balance network packages to respect bandwidth over time
  Author                   Melissa Montero <melissa.montero@ridgerun.com>

Plugin Details:
  Name                     netbalancer
  Description              Distribute network packages over time
  Filename                 /usr/lib/x86_64-linux-gnu/gstreamer-1.0/libgstnetbalancer.so
  Version                  0.1.0
  License                  Proprietary
  Source module            gst-net-balancer
  Binary package           gst-net-balancer source release
  Origin URL               www.ridgerun.com

GObject
 +----GInitiallyUnowned
       +----GstObject
             +----GstElement
                   +----GstBaseTransform
                         +----GstNetBalancer

Pad Templates:
  SINK template: 'sink'
    Availability: Always
    Capabilities:
      ANY
  
  SRC template: 'src'
    Availability: Always
    Capabilities:
      ANY

Element has no clocking capabilities.
Element has no URI handling capabilities.

Pads:
  SINK: 'sink'
    Pad Template: 'sink'
  SRC: 'src'
    Pad Template: 'src'

Element Properties:
  name                : The name of the object
                        flags: readable, writable
                        String. Default: "netbalancer0"
  parent              : The parent of the object
                        flags: readable, writable
                        Object of type "GstObject"
  qos                 : Handle Quality-of-Service events
                        flags: readable, writable
                        Boolean. Default: false
  bandwidth           : Bandwidth in kbps to distribute over time
                        flags: readable, writable
                        Unsigned Integer64. Range: 0 - 9223372036854775807 Default: 2500 
  distribution-factor : Number of intervals in which you are going to divide the secondand the bandwidth to distribute it
                        flags: readable, writable
                        Unsigned Integer. Range: 1 - 4294967295 Default: 50 
  min-delay           : Microseconds to wait between packets
                        flags: readable, writable
                        Unsigned Integer. Range: 0 - 4294967295 Default: 0 

Example Pipelines

Please refer to the Examples page for reference pipelines.

Troubleshooting

The first level of debug to troubleshoot a failing evaluation binary is to inspect GStreamer debug output.

GST_DEBUG=2 gst-launch-1.0

If the output doesn't help you figure out the problem, please contact support@ridgerun.com with the output of the GStreamer debug and any additional information you consider useful.

RidgeRun also offers professional support hours that you can invest in any embedded Linux-related task you want to assign to RidgeRun, such as hardware bring-up tasks, application development, GStreamer pipeline fine-tuning, drivers, etc.



Previous: Getting Started/Getting the Code Index Next: User Guide