# GStD framework

Source: [https://docs.qualcomm.com/doc/80-70020-50/topic/gstreamer-daemon.html](https://docs.qualcomm.com/doc/80-70020-50/topic/gstreamer-daemon.html)

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

- It's an enhancement to the `gst-launch` 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.

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

The custom application provides view and client logic. | Custom application design | Description |
| --- | --- |
| View | <ul class="ul" id="gstreamer-daemon__ul_nnv_xdm_qbc"><br>                                    <li class="li">Provides visual feedback of the GStD core state.</li><br><br>                                    <li class="li">Represents a graphical user interface, a web page, a<br>                                        command-line application.</li><br><br>                                    <li class="li">Allows you to see the view that's updated by the model.</li><br><br>                                </ul> |
| Client logic | <ul class="ul" id="gstreamer-daemon__ul_okb_b2m_qbc"><br>                                    <li class="li">Provides the custom functionality of the application.</li><br><br>                                    <li class="li">Allows you to use IPC to change the GStD core or model, and<br>                                        receive feedback through the GUI/view.</li><br><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 -D
        
        # 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-70020-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-70020-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-70020-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-70020-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.

**Parent Topic:** [Use GStreamer utilities for custom plugins](https://docs.qualcomm.com/doc/80-70020-50/topic/im-sdk-base-uitilities.html)

Last Published: Jan 30, 2026

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