Welcome to mirror list, hosted at ThFree Co, Russian Federation.

github.com/sdroege/gst-plugin-rs.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorSebastian Dröge <sebastian@centricular.com>2022-05-22 16:28:59 +0300
committerSebastian Dröge <sebastian@centricular.com>2022-05-22 16:28:59 +0300
commita0455b5e00fbcb146bffb6695759ad6cafb0d8ab (patch)
tree63e3677224e351b8a86ccbc602ce46967009b975 /audio/spotify/src
parentd6fa9218227f5e208dcd1641445630daaea6afe9 (diff)
spotifyaudiosrc: Update to librespot 0.4
Diffstat (limited to 'audio/spotify/src')
-rw-r--r--audio/spotify/src/spotifyaudiosrc/imp.rs17
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));