Using gstreamer for playback
Implementing an engine to play music was a good exercise to learn about threading. However, for a real program, you could simply use gstreamer
for the music playback. So, let's see how to use this library in our music player.
Remove the following dependencies in your Cargo.toml
:
crossbeam = "^0.3.0" pulse-simple = "^1.0.0" simplemad = "^0.8.1"
And remove their corresponding extern crate
statements. We can also remove the mp3
and player
modules as we'll use gstreamer
instead. Now, we can add our dependencies for gstreamer
:
gstreamer = "^0.9.1" gstreamer-player = "^0.9.0"
And add their corresponding extern crate
statements:
extern crate gstreamer as gst; extern crate gstreamer_player as gst_player;
At the beginning of the main
function, we need to initialize gstreamer
:
gst::init().expect("gstreamer initialization failed");
We no longer need our State
structure, so we remove it and the state
field in the App
structure. And now, we can update our playlist
module. First, let...