From 65941a3c5168a1a5ea8fb5f961353ceea1a4228f Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Fernando=20Jim=C3=A9nez=20Moreno?= Date: Thu, 29 Nov 2018 12:01:42 +0100 Subject: [PATCH] Check that we have the required elements to instantiate a gst-player --- backends/gstreamer/src/lib.rs | 1 + backends/gstreamer/src/player.rs | 8 ++++++++ 2 files changed, 9 insertions(+) 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, );