This summer I had an wonderful opportunity to work on Xiph.org foundations' Icecast Streaming Server as part of Google Summer of Code 2021 program. I worked on adding a return channel from listeners to source.
Icecast Server is used as a streaming server to broadcast to various listeners. A return channel allows for possibility of receiving feedback from listeners to source. This return channels makes the streams interactive for conducting polls etc.
A uniform return channel should allow for any data to be transmitted from listener to source, by uniform we mean that the channel itself should be general enough and not specific to any specific type of data.
The main objectives of my projects were:
- Implementing a return channel for listeners.
This was done by adding an endpoint to receive messages from listeners and then implementing the infrastructure to store these messages for the intended source they are meant for.
- Implementing a return channel for sources.
Since our server sits between our client and source, we need to add a return channel for data to flow from server to our source. This was done by requesting messages from a particular endpoint for a specific mountpoint. These are returned as reportXML document.
I am happy to share that these objectives were met during the GSoC period. However adding the documentation and tests still needs to done.
Instead of traditional PR workflow , we at Xiph followed a rebase approach, so no PRs only commits.
- Add rchannel queue.
- Add rchannel receiving handler.
- Send a reportxml response.
- Add get rchannel handler
- Refactoring moving queue to its own source file.
- Pull requests
I would like to thank my mentors for helping me reach this milestone.
- Phillip Schafft
- Chris Montgomery
- Thomas Daede
- Nathan Egge
- and all the xiph.org Foundation members for being so open and welcoming.
I would also like to thank my fellow GSoC Student and good friend Rohit Verma for being part of this journey alongside.