# GStD framework

GStreamer daemon (GStD) controls the audio-video streaming using an inter-process communication protocol (IPC).

- It’s an enhancement to the [`\[gst-launch\]`](https://gstreamer.freedesktop.org/documentation/tools/gst-launch.html?gi-language=c) tool.
- It allows you to create a pipeline, and control the settings such as play and pause when the pipeline is active.

GStD deploys in two parts:

- **Daemon** starts the process in the background.
- **Control application**, which can be written in any language, can run on the same processor or a separate machine.

## Known issue

GStD is currently not supported on Dragonwing IQ-9075 and Dragonwing IQ-8275.

## GStD project

The GStD project includes the core, the GstdClient, and IPC interfaces.

:class: longtable table-wrap
 :widths: 30 70
 :header-rows: 1

| GStD design components | Description |
| --- | --- |
| Core | Holds the current state of the GStreamer daemon pipelines along with their respective states, elements in each pipeline, and properties of each element. |
| IPC | <ul><br><li><p>Allows client applications to change the GStD core state using an IPC mechanism such as TCP, HTTP, DBus, sockets.</p></li><br><li><p>Allows the custom applications to change the state of the GStD core. For example, IPC is used to do the following:</p><br><blockquote><br><div><ul class="simple"><br><li><p>Create a pipeline.</p></li><br><li><p>Set the state to play.</p></li><br><li><p>Change an element property while the pipeline is running.</p></li><br></ul><br></div></blockquote><br></li><br></ul> |

| Custom application design | Description |
| --- | --- |
| View | <ul class="simple"><br><li><p>Provides visual feedback of the GStD core state.</p></li><br><li><p>Represents a graphical user interface, a web page, a command-line application.</p></li><br><li><p>Allows you to see the view that’s updated by the model.</p></li><br></ul> |
| Client logic | <ul class="simple"><br><li><p>Provides the custom functionality of the application.</p></li><br><li><p>Allows you to use IPC to change the GStD core or model, and receive feedback through the GUI/view.</p></li><br></ul> |

A GStreamer client (GstdClient) is distributed with the project. It’s a command-line based application that communicates with GStD through TCP.

- GstdClient allows you to create and start pipelines.
- Unlike `gst-launch`, GstdClient allows you to have several active pipelines with the ability to control the pipeline and receive feedback after the pipeline has been created.

For more information about GStD, see [https://developer.ridgerun.com/wiki/index.php/GStreamer_Daemon](https://developer.ridgerun.com/wiki/index.php/GStreamer_Daemon).

## Run GStD

1. Start GStD:

gstd
        # This will start the process in the background. Using 'gstd &' is not required becauses gstd daemonizes itself by default.
        
        # To run gstd in foreground
        gstd -e
        
        # To view a list of all supported options,
        gstd --help-all
        Copy to clipboard
2. Start GstdClient:

gst-client
        # gstd prompt will appear like,
        # gstd>
        # In the prompt, we can interact with the server creating/playing pipelines, etc.
        
        # To list all the possible commands
        gstd> help
        
        # Alternatively, instead of opening gstd prompt, can give the command as argument to gst-client
        gst-client list_pipelines
        Copy to clipboard

- [Run local use cases](https://docs.qualcomm.com/doc/80-70029-50/topic/local-use-cases.html)
Control the GStD framework using a control application that's running on same processor.
- [Run TCP use cases](https://docs.qualcomm.com/doc/80-70029-50/topic/tcp-use-cases.html)
Control the GStD framework using a control application that's remotely interfacing through TCP.
- [Run HTTP use cases](https://docs.qualcomm.com/doc/80-70029-50/topic/run-http-use-cases.html)
Control the GStD framework using a control application that's remotely interfacing through HTTP.
- [Enable message support through MQTT](https://docs.qualcomm.com/doc/80-70029-50/topic/mqtt-configuration.html)
Message Queuing Telemetry Transport (MQTT) is a lightweight publish-subscribe protocol for communication between devices. Qualcomm IM SDK supports the MQTT protocol to send messages to a host device.

Last Published: Apr 02, 2026

[Previous Topic
GSt debug](https://docs.qualcomm.com/bundle/publicresource/80-70029-50/topics/imsdk_debug_gst.md) [Next Topic
Run local use cases](https://docs.qualcomm.com/bundle/publicresource/80-70029-50/topics/local-use-cases.md)