{"repo":"christf/snapcastc","free":true,"listed":false,"github":"https://github.com/christf/snapcastc","clone":"git clone https://github.com/christf/snapcastc.git","description":"C implementation of snapcast focussing on audio quality and ease of maintenance.","language":"C","stars":49,"topics":["snapcast","mpd","audio","streaming","c","synchronous","opus","playback","fifo","raspberry-pi"],"license":"GPL-3.0","category":"media-processing","readme_excerpt":"SnapCastC This program consists of a client and a server component allowing synchronous audio playback over the network. This Software is heavily inspired by snapcast. The server obtains its input from a fifo which is fed by any audio player (or even converter) that supports playing to this fifo. The server can be controlled by the existing android app. This Implementation focuses on a small maintainable single-threaded design while aiming for good audio quality. After all, music is meant to be enjoyed. The code currently relies on poll/epoll/timefd/alsa and thus is specific to Linux. Patches for other platforms are welcome. Non-Goals Low Latency Latency is induced by snapcast to compensate short network outages. The design of snapcast (reading from an input pipe) induces significant latency. Pipes in Linux by default buffer up to 64KB of data. On my machine I can see that once in a while the input pipe will not be read for multiple seconds. To compensate I am running snapcast with a very large buffer. That being said, care has been taken to allow immediate playback and pausing when using elastic pipes. Low CPU Usage While it is important for clients to run on small devices, audio quality is valued above CPU utilization. The smallest target platform is Raspberry PI B. On this device which is clocked to 800Mhz, when using Opus, snapcastc-client utilizes 14% CPU. snapcastc-server utilizes 36% CPU during regular playback for a single stream. When starting a stream the buffers ar","default_branch":null,"files":null,"tree":[],"storefront":"/r/christf","claimed":false,"request_supported":{"post":"https://gitbuyer.com/r/christf/snapcastc/request-supported","requests":0},"note":"indexed from public GitHub; nothing is for sale on this page. Clone it from GitHub. Paid listings live at /search."}