Bug 145 - Use GStreamer instead of sipXtapi for the media stack
Summary: Use GStreamer instead of sipXtapi for the media stack
Status: NEW
Alias: None
Product: reSIProcate
Classification: Unclassified
Component: recon (librecon) (show other bugs)
Version: unspecified
Hardware: All All
: P1 enhancement
Assignee: Owner of all unassigned bugs
Depends on: 151
  Show dependency treegraph
Reported: 2021-03-30 13:28 CDT by Daniel Pocock
Modified: 2021-07-01 05:27 CDT (History)
0 users

See Also:


Note You need to log in before you can comment on or make changes to this bug.
Description Daniel Pocock 2021-03-30 13:28:14 CDT
There was a previous issue about using libjingle as the media stack:

Some work has been done on a branch that might provide insights to use any arbitrary media stack:

The GStreamer media framework supports a range of audio and video formats.  Developers have recently added WebRTC support, here is a walkthrough of the C API:

and here are complete examples in the repository:

with the corresponding HTML and JavaScript:

GStreamer is licensed under the LGPL:

From a licensing perspective, this means that applications that are using the GStreamer shared libraries can use any license.  Applications that need to be statically linked to reSIProcate and GStreamer may need to release their source code under the terms of the LGPL or simply not enable the GStreamer component at compile time.  This is the same license that sipXtapi uses so there is no loss of flexibility.

To ensure maximum flexibility,
- the API could be generalized further to support multiple interchangeable media libraries, and/or
- the media library could be operated in a separate process
Comment 1 Daniel Pocock 2021-03-30 13:45:01 CDT
I created a separate issue for running the media stack in a separate process
Comment 2 Daniel Pocock 2021-04-13 17:08:34 CDT
Some discussions on the gstreamer-devel mailing list:

setting up rtpbin from an SDP offer

using webrtcbin for regular RTP and SRTP flows

gstreamer / Farstream / reSIProcate interoperability
Comment 3 Daniel Pocock 2021-07-01 05:27:06 CDT
GStreamer is written in C

There is a project providing C++ bindings, gstreamermm, based on gtkmm


gstreamermm v1.10 available in Debian buster:

Here is a sample application for the C++ bindings: