From VoiSmart Open Source Wiki

Jump to: navigation, search

Kstreamer is a kernel subsystem whose purpose is to handle streams, channels and routing through hardware or software devices along with an application interface to control such architecture.

A stream flows trough a pipeline which is a series of channels which connect nodes from a starting node to an end node. All the channels and nodes build a graph representing the whole streaming network.

There is only one system-wide streaming network shared among applications.

Kstreamer mimics Gstreamer (hence the name) in its vision of elements to be connected together, although with a much more essential and simplified approach.

Kstreamer is the middle-level layer on which vISDN is based.

Why Kstreamer?

  • Several non-VoIP or non-packet-oriented networks separate streams at layer-1, channels get handled separately at hardware and drivers level
  • Linux kernel is missing a way to uniformly describe channel interconnections, which are often real, hardware entities made by physical crossconnectors or TDM buses.
  • Other approaches (zaptel anyone?) are very implementation-specific
  • Other?


In its role as a middleware, Kstreamer offers interfaces to both the userland and to lower-level drivers.

The main interface between kstreamer and the userland is a Netlink socket. Refer to Kstreamer Netlink interface page for a in-depth description of it.

Some of the information is exported in /sys/

The low-level drivers, as usual for kernel drivers, register their available resources to Kstreamer and receive callbacks from the kernel.

Personal tools