aboutsummaryrefslogtreecommitdiff
path: root/plugins/rtp/src
diff options
context:
space:
mode:
authorMarvin W <git@larma.de>2021-04-11 12:31:03 +0200
committerMarvin W <git@larma.de>2021-04-11 12:31:03 +0200
commit6ebdec1d78a7ad1b8668a2ba6eceb34515c75384 (patch)
tree1bbbe53125181e374506ee8bf5a14116c9c19b72 /plugins/rtp/src
parent5e11986838057a5cdbdf9d271316513da1bd4764 (diff)
downloaddino-6ebdec1d78a7ad1b8668a2ba6eceb34515c75384.tar.gz
dino-6ebdec1d78a7ad1b8668a2ba6eceb34515c75384.zip
GStreamer compat
Diffstat (limited to 'plugins/rtp/src')
-rw-r--r--plugins/rtp/src/device.vala30
-rw-r--r--plugins/rtp/src/plugin.vala4
2 files changed, 24 insertions, 10 deletions
diff --git a/plugins/rtp/src/device.vala b/plugins/rtp/src/device.vala
index 20762f77..3c9a38d2 100644
--- a/plugins/rtp/src/device.vala
+++ b/plugins/rtp/src/device.vala
@@ -130,11 +130,13 @@ public class Dino.Plugins.Rtp.Device : MediaDevice, Object {
filter.@set("caps", get_best_caps());
pipe.add(filter);
element.link(filter);
- if (media == "audio") {
+ if (media == "audio" && plugin.echoprobe != null) {
dsp = Gst.ElementFactory.make("webrtcdsp", @"$id-dsp");
- dsp.@set("probe", plugin.echoprobe.name);
- pipe.add(dsp);
- filter.link(dsp);
+ if (dsp != null) {
+ dsp.@set("probe", plugin.echoprobe.name);
+ pipe.add(dsp);
+ filter.link(dsp);
+ }
}
tee = Gst.ElementFactory.make("tee", @"$id-tee");
tee.@set("allow-not-linked", true);
@@ -149,15 +151,19 @@ public class Dino.Plugins.Rtp.Device : MediaDevice, Object {
filter = Gst.ElementFactory.make("capsfilter", @"$id-caps-filter");
filter.@set("caps", get_best_caps());
pipe.add(filter);
- filter.link(plugin.echoprobe);
- plugin.echoprobe.link(element);
+ if (plugin.echoprobe != null) {
+ filter.link(plugin.echoprobe);
+ plugin.echoprobe.link(element);
+ } else {
+ filter.link(element);
+ }
}
plugin.unpause();
}
private void destroy() {
if (mixer != null) {
- if (is_sink && media == "audio") {
+ if (is_sink && media == "audio" && plugin.echoprobe != null) {
plugin.echoprobe.unlink(mixer);
}
int linked_sink_pads = 0;
@@ -177,11 +183,17 @@ public class Dino.Plugins.Rtp.Device : MediaDevice, Object {
if (filter != null) {
filter.set_locked_state(true);
filter.set_state(Gst.State.NULL);
- filter.unlink(plugin.echoprobe);
+ if (plugin.echoprobe != null) {
+ filter.unlink(plugin.echoprobe);
+ } else {
+ filter.unlink(element);
+ }
pipe.remove(filter);
filter = null;
}
- plugin.echoprobe.unlink(element);
+ if (plugin.echoprobe != null) {
+ plugin.echoprobe.unlink(element);
+ }
}
element.set_locked_state(true);
element.set_state(Gst.State.NULL);
diff --git a/plugins/rtp/src/plugin.vala b/plugins/rtp/src/plugin.vala
index 62e0d411..40ad1e0f 100644
--- a/plugins/rtp/src/plugin.vala
+++ b/plugins/rtp/src/plugin.vala
@@ -70,7 +70,7 @@ public class Dino.Plugins.Rtp.Plugin : RootInterface, VideoCallPlugin, Object {
// Audio echo probe
echoprobe = Gst.ElementFactory.make("webrtcechoprobe", "echo-probe");
- pipe.add(echoprobe);
+ if (echoprobe != null) pipe.add(echoprobe);
// Pipeline
pipe.auto_flush_bus = true;
@@ -178,6 +178,7 @@ public class Dino.Plugins.Rtp.Plugin : RootInterface, VideoCallPlugin, Object {
if (devices.any_match((it) => it.matches(device))) return Source.CONTINUE;
devices.add(new Device(this, device));
break;
+#if GST_1_16
case Gst.MessageType.DEVICE_CHANGED:
message.parse_device_changed(out device, out old_device);
if (device.properties.has_name("pipewire-proplist") && device.device_class.has_prefix("Audio/")) return Source.CONTINUE;
@@ -185,6 +186,7 @@ public class Dino.Plugins.Rtp.Plugin : RootInterface, VideoCallPlugin, Object {
old = devices.first_match((it) => it.matches(old_device));
if (old != null) old.update(device);
break;
+#endif
case Gst.MessageType.DEVICE_REMOVED:
message.parse_device_removed(out device);
if (device.properties.has_name("pipewire-proplist") && device.device_class.has_prefix("Audio/")) return Source.CONTINUE;