# GStreamer daemon

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

GStreamer daemon (GStD) is a process that simplifies the task of creating custom
        GStreamer applications. It also eliminates the boilerplate code that needed to write
        applications from scratch.

GStD runs independently and exposes a public interface over a variety of IPC mechanisms
            for other processes to communicate with and control the daemon. The design behind GStD
            follows a model-view-controller (MVC) architecture.

## GStD project

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

GStD provides core and IPC end point. | 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, and so on. |
| IPC | <ul class="ul" id="gstreamer-daemon__ul_fqq_hdm_qbc"><br>                                    <li class="li">Allows client applications to change the state of the GStD<br>                                        core using an interprocess communication mechanism, such as<br>                                        TCP, HTTP, DBus, sockets, and so on.</li><br><br>                                    <li class="li">Enables custom applications to modify the state of the GStD<br>                                        core. For example. IPC can be used to do the following:<ul class="ul" id="gstreamer-daemon__ul_adx_2dm_qbc"><br>                                            <li class="li">Create a new 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">Enables  you to see the view that is is updated by the<br>                                        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">Enables you to use IPC to modify 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 is 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 on 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

- **[Local use cases](https://docs.qualcomm.com/doc/80-70014-50/topic/local-use-cases.html)**
- **[TCP use cases](https://docs.qualcomm.com/doc/80-70014-50/topic/tcp-use-cases.html)**
- **[HTTP use cases](https://docs.qualcomm.com/doc/80-70014-50/topic/run-http-use-cases.html)**

Last Published: Oct 27, 2025

[Previous Topic
Efficient data/control flow for ML pipelines](https://docs.qualcomm.com/bundle/publicresource/80-70014-50/topics/efficient-data-control-flow.md) [Next Topic
Local use cases](https://docs.qualcomm.com/bundle/publicresource/80-70014-50/topics/local-use-cases.md)