/
/
# What does this implement/fix? Spotify Connect through the Soloist engine reported the raw 32-bit audio it captures from the engine as its source format, which classifies as hi-res, so a 96 kbps stream looked identical to a lossless one. It now reports the quality tier Spotify was actually asked for, the same way the Spotify music provider and the go-librespot engine already do. Spotify only serves lossless for music, so a podcast or audiobook chapter is reported as Ogg Vorbis whatever the quality setting says. Worth being clear: external sources do not currently surface a quality badge anywhere, so this corrects the underlying data rather than a value anyone can see today. It matters because that data is what any future display would read, and because the old format claim was also driving the internal audio depth. Separately, closing a process could wait forever on a child that never closes its pipes, which left the process behind and hid the error that caused the shutdown. Pausing an external source for more than 20 seconds hits exactly that path. **Changes** - Spotify Connect reports the configured quality tier as its source format instead of the internal capture format - spoken content is never reported as lossless - the internal audio depth for live sources follows the audio that actually arrives, so reporting a tier can never narrow the stream - the capture format is handed out per stream, so ffmpeg's probe can no longer write back onto the one format every stream shares - closing a process no longer waits forever on a child that never closes its pipes - corrected the two Spotify Connect READMEs and the plugin AudioSource docs, which still described the old behaviour Tested on a real Spotify Connect session (playback, pause, quality tiers), plus locally against the core stream path for unconverted passthrough and realtime pacing. **Related issue (if applicable):** - follow-up on #5942 ## Types of changes - [ ] Bugfix (non-breaking change which fixes an issue) — `bugfix` - [ ] New feature (non-breaking change which adds functionality) — `new-feature` - [ ] Enhancement to an existing feature — `enhancement` - [ ] New music/player/metadata/plugin provider — `new-provider` - [ ] Breaking change (fix or feature that would cause existing functionality to not work as expected) — `breaking-change` - [ ] Refactor (no behaviour change) — `refactor` - [ ] Documentation only — `documentation` - [x] Maintenance / chore — `maintenance` - [ ] CI / workflow change — `ci` - [ ] Dependencies bump — `dependencies` ## Checklist - [x] The code change is tested and works locally. - [x] `pre-commit run --all-files` passes. - [x] `pytest` passes, and tests have been added/updated under `tests/` where applicable. - [ ] For changes to shared models, the companion PR in `music-assistant/models` is linked. - [ ] For changes affecting the UI, the companion PR in `music-assistant/frontend` is linked. - [x] I have read and complied with the project's [AI Policy](https://github.com/music-assistant/.github/blob/main/AI_POLICY.md) for any AI-assisted contributions. - [ ] I have [raised a PR against the documentation repository](https://github.com/music-assistant/music-assistant.io/blob/main/CONTRIBUTING.md) targeting the main or beta branch as appropriate.