# Sensor Stream Client

The ssp\_client application receives network packets from the ssp\_server, de-serializes and decodes them, and makes them available for processing.

For example, you could use the code with BundleFusion or another, comparable algorithm. This is beneficial if you’re ingesting multiple sensor streams, and want to run computer vision algorithms such as skeleton tracking. And also lends itself perfectly to projects involving sensors in multiple locations, i.e. if you want to combine streams from a variety of drones operating in different locations into one stream.&#x20;

You can have Sensor Stream Client receive multiple streams and ingest the data for a spatial computing/computer vision pipeline.

## Processing Examples

To provide an example, [**ssp\_client\_opencv**](https://github.com/moetsi/Sensor-Stream-Pipe/blob/master/clients/ssp_client_opencv.cc) converts the encoded frames into displayable OpenCV, whereas [**ssp\_client\_k4a**](https://github.com/moetsi/Sensor-Stream-Pipe/blob/master/clients/ssp_client_k4a.cc) connects with remote Azure Kinect body tracking and [**ssp\_client\_pointcloud**](https://github.com/moetsi/Sensor-Stream-Pipe/blob/master/clients/ssp_client_pointcloud.cc) generates a pointcloud from your Kinect DK data.

These three different clients provide three examples of output format, but you can adapt this code for final processing however you like.

Have a look at [ssp\_client\_template](https://github.com/moetsi/Sensor-Stream-Pipe/blob/master/clients/ssp_client_template.cc) for a bare-bones template that you can play around with.

```
./bin/ssp_client_opencv <port> (<log level>) (<log file>)
./bin/ssp_client_k4a <port> (<log level>) (<log file>)
./bin/ssp_client_pointcloud <port> (<output_folder>) (<log level>) (<log file>)
```

Due to the enqueuing process as described in the ssp\_server section, it is recommended that you start the ssp\_client application first.

#### **Parallel processing**

By default, the ssp\_client can receive frames from multiple servers in parallel, and will process the input using a [fair queuing method](http://zguide.zeromq.org/page:all#Divide-and-Conquer).
