summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorSebastian Reichel <sre@ring0.de>2017-10-02 19:52:12 +0200
committerSebastian Reichel <sre@ring0.de>2017-10-02 20:24:19 +0200
commit059297e0850b3b711fcd6b134991ea766f327281 (patch)
treef0d75fda1f82f352ef398667e4eb5520e04a5adb
parentc41b6053cf403051bb06278acb686072ec58cda4 (diff)
downloadserial-barcode-scanner-059297e0850b3b711fcd6b134991ea766f327281.tar.bz2
audio: improve gstreamer1.0 support
Add proper error message when required gstreamer plugin is missing.
-rw-r--r--src/audio/audio.vala14
1 files changed, 10 insertions, 4 deletions
diff --git a/src/audio/audio.vala b/src/audio/audio.vala
index 76e01b3..9afb840 100644
--- a/src/audio/audio.vala
+++ b/src/audio/audio.vala
@@ -15,7 +15,7 @@
[DBus (name = "io.mainframe.shopsystem.AudioPlayer")]
public class AudioPlayerImplementation {
- private dynamic Gst.Element p;
+ private dynamic Gst.Element? p;
string path;
public signal void end_of_stream();
@@ -30,18 +30,24 @@ public class AudioPlayerImplementation {
return true;
}
- public AudioPlayerImplementation(string path) {
+ public AudioPlayerImplementation(string path) throws IOError {
this.path = path;
var alsa = Gst.ElementFactory.make("alsasink", "alsa");
- p = Gst.ElementFactory.make("playbin2", "play");
+ if (alsa == null)
+ throw new GLib.IOError.FAILED("Cannot find alsa GStreamer plugin");
+
+ p = Gst.ElementFactory.make("playbin", "player");
+ if (p == null)
+ throw new GLib.IOError.FAILED("Cannot find playbin2 GStreamer plugin");
+
p.set("audio-sink", alsa);
p.get_bus().add_watch(Priority.DEFAULT, bus_callback);
}
public void play_system(string file) {
p.set_state(Gst.State.NULL);
- p.uri = "file://" + path + "system/"+file;
+ p.uri = "file://" + path + "system/" + file;
p.set_state(Gst.State.PLAYING);
}