diff --git a/backends/gstreamer/src/lib.rs b/backends/gstreamer/src/lib.rs index c70a2aa9..9b9219fd 100644 --- a/backends/gstreamer/src/lib.rs +++ b/backends/gstreamer/src/lib.rs @@ -29,6 +29,7 @@ pub enum BackendError { Gstreamer(gst::Error), InvalidMediaFormat, InvalidSample, + MissingElement(&'static str), PadLinkFailed, PipelineBusError(String), PipelineFailed(&'static str), diff --git a/backends/gstreamer/src/player.rs b/backends/gstreamer/src/player.rs index 340de170..44d6493f 100644 --- a/backends/gstreamer/src/player.rs +++ b/backends/gstreamer/src/player.rs @@ -234,6 +234,14 @@ impl GStreamerPlayer { return Ok(()); } + // Check that we actually have the elements that we + // need to make this work. + for element in vec!["playbin", "queue"].iter() { + if gst::ElementFactory::find(element).is_none() { + return Err(BackendError::MissingElement(element)); + } + } + let player = gst_player::Player::new( /* video renderer */ None, /* signal dispatcher */ None, );