Skip to content

DavidVentura/snapcast-client

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

97 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Implementation of the client-side of the Snapcast protocol (snapclient).

The player works as a proof of concept, though it sometimes crashes when using the ALSA backend and adjusting the latency.

Only PCM/Flac/Opus are implemented, and only File/Pulse/Alsa/Tcp work for output devices.

The Flac codec has slight clipping and I don't know why.

To use the TCP module, (or to avoid having to link to libpulse), you can enable the 'simple protocol' module:

pactl load-module module-simple-protocol-tcp rate=48000 format=s16le channels=2 playback=true port=12345 listen=127.0.0.1

Build

For Coreelec, bash build.sh will run the build process in a 32-bit Docker container.

Latency

This implementation behaves very similarly as the official one in regards to latency; measured with the scope and an 'audio/video sync test' playback:

Measurement notes:

  • Tests on the ALSA back-end
  • Yellow = this repo
  • Cyan = official snapclient
  • Blue plays via USB-C -> Screen -> Audio out
  • Yellow plays via the Audio out port on my computer

It seems like this implementation is ~8ms lower latency, compared to the official one. I'm not sure why, as it should compensate for audio buffer size. I kinda hope it's due to the audio cards.

0ms added latency on the rs implementation:

5ms added latency on the rs implementation:

8ms added latency on the rs implementation:

About

No description, website, or topics provided.

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages