2 Installation

2.1 Requirements  

Upipe has the following dependencies:

Upipe has the following optional dependencies:

2.2 Build  

Upipe comes with a pretty standard autotools build system, so

./bootstrap && ./configure && make

should be enough to build it. Unit tests can be built and run with:

make check

2.3 Execution  

Upipe is a set of developement headers for pipes and librares for applications, and thus runs inside an application. Simple examples are however provided in the tests/ and examples/ directories.

2.4 Debugging  

Upipe's code makes intensive use of the container_of macro. Debugging with gdb can be made easier by adding the following lines to your .gdbinit file:

set print pretty on
define container_of
p ((struct $arg1*)((void*)$arg0 - (void*)&((struct $arg1*)0)->$arg2))

Then, supposing you big structure is upipe_foo, and you have a member called upipe to which you have a pointer (also called upipe), you can call it from gdb's shell to get a pointer to upipe_foo:

(gdb) container_of upipe upipe_foo upipe
$5 = (struct upipe_foo *) 0x7f9db9873000
(gdb) print *$5
$6 = {

Valid XHTML 1.0 StrictGenerated by cmassiot on Fri Feb 2 23:57:18 2018 using MkDoc