diff options
author | Sebastian Dröge <sebastian@centricular.com> | 2022-05-22 16:28:59 +0300 |
---|---|---|
committer | Sebastian Dröge <sebastian@centricular.com> | 2022-05-22 16:28:59 +0300 |
commit | a0455b5e00fbcb146bffb6695759ad6cafb0d8ab (patch) | |
tree | 63e3677224e351b8a86ccbc602ce46967009b975 /audio/spotify/src | |
parent | d6fa9218227f5e208dcd1641445630daaea6afe9 (diff) |
spotifyaudiosrc: Update to librespot 0.4
Diffstat (limited to 'audio/spotify/src')
-rw-r--r-- | audio/spotify/src/spotifyaudiosrc/imp.rs | 17 |
1 files changed, 11 insertions, 6 deletions
diff --git a/audio/spotify/src/spotifyaudiosrc/imp.rs b/audio/spotify/src/spotifyaudiosrc/imp.rs index caadd381..402af8ad 100644 --- a/audio/spotify/src/spotifyaudiosrc/imp.rs +++ b/audio/spotify/src/spotifyaudiosrc/imp.rs @@ -26,6 +26,7 @@ use librespot::playback::{ config::PlayerConfig, convert::Converter, decoder::AudioPacket, + mixer::NoOpVolume, player::{Player, PlayerEvent}, }; @@ -326,7 +327,7 @@ impl SpotifyAudioSrc { None }; - let cache = Cache::new(credentials_cache, files_cache, max_size)?; + let cache = Cache::new(credentials_cache, None, files_cache, max_size)?; let credentials = match cache.credentials() { Some(cached_cred) => { @@ -358,7 +359,8 @@ impl SpotifyAudioSrc { let state = self.state.clone(); - let session = Session::connect(SessionConfig::default(), credentials, Some(cache)).await?; + let (session, _credentials) = + Session::connect(SessionConfig::default(), credentials, Some(cache), false).await?; let player_config = PlayerConfig { passthrough: true, @@ -370,7 +372,7 @@ impl SpotifyAudioSrc { let sender_clone = sender.clone(); let (mut player, mut player_event_channel) = - Player::new(player_config, session, None, || { + Player::new(player_config, session, Box::new(NoOpVolume), || { Box::new(BufferSink { sender }) }); @@ -413,9 +415,12 @@ struct BufferSink { } impl Sink for BufferSink { - fn write(&mut self, packet: &AudioPacket, _converter: &mut Converter) -> SinkResult<()> { - let ogg = packet.oggdata().unwrap(); - let buffer = gst::Buffer::from_slice(Vec::from(ogg)); + fn write(&mut self, packet: AudioPacket, _converter: &mut Converter) -> SinkResult<()> { + let oggdata = match packet { + AudioPacket::OggData(data) => data, + AudioPacket::Samples(_) => unimplemented!(), + }; + let buffer = gst::Buffer::from_slice(oggdata); // ignore if sending fails as that means the source element is being shutdown let _ = self.sender.send(Message::Buffer(buffer)); |