GstInterpipe - Building and Installation Guide

From RidgeRun Developer Wiki



Previous: Features and Limitations Index Next: Features Detailed Description




Getting the Code

GstInterpipe is an open-source project. RidgeRun is actively pushing the interpipes to the next GStreamer release and the link will be available soon. The project is hosted on Github

https://github.com/RidgeRun/gst-interpipe

To clone the latest version you may run:

git clone https://github.com/RidgeRun/gst-interpipe.git


As with every open source project, there's an open invitation to provide feedback to the maintainers as bug reports, feature requests and source code collaborations. The following table summarizes the recommended methods to collaborate with RidgeRun:

Collaboration Method
Bug report GitHub's issue tracker
Feature request GitHub's issue tracker
Patch Submission Pull request
Table 1. Recommended methods to collaborate with RidgeRun

Contact support@ridgerun.com with any questions.

Dependencies

The following packages are needed in order to build and use gst-interpipe:

  • gstreamer-1.0
  • gstreamer-plugins-base-1.0
  • gstreamer-app-1.0
  • gstreamer-check-1.0
  • gtk-doc

These are likely already installed in your OS distribution. In case you want to double check and install the missing packages, run the following commands according to your OS:

Debian Based

This includes Ubuntu, Kubuntu, Debian, etc...

sudo apt-get install libgstreamer1.0-dev libgstreamer-plugins-base1.0-dev gtk-doc-tools

Fedora

Tested on Fedora 34 and Fedora 35.

sudo dnf install gstreamer1-devel gstreamer1-plugins-base-devel gtk-doc

Mac OSX

Mac Ports

sudo port install gstreamer1 gstreamer1-gst-plugins-base

Homebrew

brew install gstreamer gst-plugins-base gtk-doc

Building the installing project

Linux distros

Using Autotools

Select the appropriate libdir according to your system.

Platform Libdir
x86 (Debian) --libdir /usr/lib/x86_64-linux-gnu/
Aarch64 (i.e: NVIDIA Jetson, Qualcomm RBx) --libdir /usr/lib/aarch64-linux-gnu/
Fedora 34/35 --libdir /usr/lib64/

In order to build the project run the following commands. Note that the libdir may vary according to your system.

./autogen.sh --libdir /usr/lib/$(uname -m)-linux-gnu/
make

The autogen.sh script will automatically run the configure script. In case a more complex configuration is needed, the configure step may be executed manually:

./autogen.sh --noconfigure
./configure --libdir /usr/lib/$(uname -m)-linux-gnu/ $ADVANCED_OPTIONS
make

Finally, the status of the current version may be checked by running the unit tests:

make check

The plugin is installed to the GStreamer's default plug-in location in the file system by running:

sudo make install

If you don't want to install the plugin in the default location, it may also be found by setting GST_PLUGIN_PATH to the library location. For example:

export GST_PLUGIN_PATH=$HOME/gst-interpipe/gst/interpipe/.libs
gst-inspect-1.0 interpipe

Using Meson

Go into the gst-interpipe directory and type the following commands to compile the Interpipe Project:

mkdir build
meson build --prefix=/usr
ninja -C build

Now you can install the interpipe libraries. Run this command:

sudo ninja -C build install


The status of the current version may be checked by running the unit tests:

ninja -C buildmeson test

Mac OSX Based

Using Autotools

Select the appropriate libdir according to your system.

Package Manager Libdir
Homebrew --prefix /usr/
Macports --libdir /opt/

In order to build the project run the following commands. Note that the prefix may vary according to your system.

# Change according to the table above
export XML_CATALOG_FILES="/usr/local/etc/xml/catalog"
./autogen.sh --prefix /usr/
make

The autogen.sh script will automatically run the configure script. In case a more complex configuration is needed, the configure step may be executed manually:

export XML_CATALOG_FILES="/usr/local/etc/xml/catalog"
./autogen.sh --noconfigure
./configure --prefix /usr/ $ADVANCED_OPTIONS
make

Finally, the status of the current version may be checked by running the unit tests:

make check

The plugin is installed to the GStreamer's default plug-in location in the file system by running the following command. Not that for Homebrew no sudo is required.

make install

If you don't want to install the plugin in the default location, it may also be found by setting GST_PLUGIN_PATH to the library location. For example:

export GST_PLUGIN_PATH=$HOME/gst-interpipe/gst/interpipe/.libs
gst-inspect-1.0 interpipe

Using Meson

Go into the gst-interpipe directory and type the following commands to compile the Interpipe Project:

mkdir build
meson build --prefix=/usr
ninja -C build

Now you can install the interpipe libraries. Run this command:

ninja -C build install

Again, Homebrew doesn't require sudo.


The status of the current version may be checked by running the unit tests:

ninja -C buildmeson test

Troubleshooting

Can't locate gtkdoc-common.pl

If you see the following error when building:

Can't locate gtkdoc-common.pl in @INC (@INC contains: /usr/share/gtk-doc/data /etc/perl /usr/local/lib/aarch64-linux-gnu/perl/5.26.1 /usr/local/share/perl/5.26.1 /usr/lib/aarch64-linux-gnu/perl5/5.26 /usr/share/perl5 /usr/lib/aarch64-linux-gnu/perl/5.26 /usr/share/perl/5.26 /usr/local/lib/site_perl /usr/lib/aarch64-linux-gnu/perl-base) at ../../common/gstdoc-scangobj line 38.

Run the following instructions:

cd common
git checkout master
git pull origin master

I/O error : Attempt to load network entity (Mac OSX)

If you see the following error when building:

  DOC   Scanning header files
  DOC   Building XML
  DOC   Building HTML
I/O error : Attempt to load network entity http://docbook.sourceforge.net/release/xsl/current/html/chunk.xsl
warning: failed to load external entity "http://docbook.sourceforge.net/release/xsl/current/html/chunk.xsl"
compilation error: file /usr/local/Cellar/gtk-doc/1.32_1/share/gtk-doc/data/gtk-doc.xsl line 11 element import
xsl:import : unable to load http://docbook.sourceforge.net/release/xsl/current/html/chunk.xsl
make[3]: *** [html-build.stamp] Error 5
make[2]: *** [all-recursive] Error 1
make[1]: *** [all-recursive] Error 1
make: *** [all] Error 2

Export the following variable and rebuild the project:

export XML_CATALOG_FILES="/usr/local/etc/xml/catalog"

Unable to access GStreamer common repository

Interpipes clones the GStreamer common repository as a submodule. If you see the following error while configuring the project:

fatal: unable to access 'https://gitlab.freedesktop.org/gstreamer/common.git/': server certificate verification failed. CAfile: /etc/ssl/certs/ca-certificates.crt CRLfile: none

Make sure to update the ca-certificates package, you can use the following command:

sudo apt install ca-certificates

Meson installation failure due to GTK documentation

if you see this error when installing:

ERROR: Error in gtkdoc helper script

Reconfigure the build with the enable-gtk-doc option set to false:

meson build --reconfigure -Denable-gtk-doc=false

And rerun installation steps with Ninja:

ninja -C build
sudo ninja -C build install

Verify plug-in installed

To verify that the plug-in was correctly installed, you should run:

$ gst-inspect-1.0 interpipe
Plugin Details:
  Name                     interpipe
  Description              Elements to communicate buffers across pipelines
  Filename                 /usr/lib/x86_64-linux-gnu/gstreamer-1.0/gstreamer-1.0/libgstinterpipe.so
  Version                  1.0.2
  License                  Proprietary
  Source module            gst-interpipe
  Binary package           GstInterpipe
  Origin URL               http://www.ridgerun.com

  interpipesrc: Inter pipeline source
  interpipesink: Internal pipeline sink

  2 features:
  +-- 2 elements


Previous: Features and Limitations Index Next: Features Detailed Description