Skip to content

Simple streaming audio server in C

License

Notifications You must be signed in to change notification settings

fabianishere/sas

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

1 Commit
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

sas

Simple audio streaming server and client written in C, using backpressured pipelines, as part of course on Systems Programming.

Design

The application is composed of four main components:

  1. rxc
    A simple C library for defining streaming, back-pressured pipelines, similar to for example RxJava.
  2. sas-core
    A library containing procedures and data structures that are shared by the client and server.
  3. sas-server
    A streaming audio server implementation based on rxc.
  4. sas-client
    A streaming audio client implementation based on rxc.

Streaming Protocol

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

Getting Started

Obtaining the source code

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.

Building the project

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

Usage

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.

License

sas is available under the MIT license.

Releases

No releases published

Packages

No packages published