GstInterpipe - Building and Installation Guide
Open-source project from RidgeRun. |
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 |
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