Simple audio streaming server and client written in C, using backpressured pipelines, as part of course on Systems Programming.
The application is composed of four main components:
- rxc
A simple C library for defining streaming, back-pressured pipelines, similar to for example RxJava. - sas-core
A library containing procedures and data structures that are shared by the client and server. - sas-server
A streaming audio server implementation based on rxc. - sas-client
A streaming audio client implementation based on rxc.
As part of the assignment, we also had to design and implement our own reliable transport protocol on top of UDP for streaming the audio packets. Our protocol is similar to TCP and documented in PROTOCOL.txt
Download the source code by running the following code in your command prompt:
git clone https://github.com/fabianishere/sas.git
or simply grab a copy of the source code as a Zip file.
Create the build directory.
$ mkdir build
$ cd build
Brainfuck requires CMake and a C compiler (e.g. Clang or GCC) in order to run. Then, simply create the Makefiles:
$ cmake ..
and finally, build it using the building system you chose (e.g. Make):
$ make
In the build directory, start the server as follows:
./sas-server/sas-server
Next, start the client as follows:
./sas-client/sas-client <HOST> <PATH-TO-WAV>
where HOST
refers to the address hosting the server (e.g. localhost) and PATH-TO-WAV
refers to the (relative) path from the servers' current working directory
to some WAV file.
sas is available under the MIT license.