I have an issue where I create a source with Decoder::new_vorbis(file) and play it later with mixer.add(source). It isn't playing anything at all. I verified that a sinewave will play instead.
Then I checked what the Decoder returns. It does return samples if I just iterate over it, but it returns Some(0) for current_span_length - which you must only return if there are no more samples.
Going through the call stack SymphoniaDecoder::current_span_length returns Some(self.buffer.len()). I think the decoder would need to decode a packet if self.buffer.is_empty() to report an accurate span length.