summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorFabrice Bellet <fabrice@bellet.info>2019-07-19 15:55:49 +0200
committerFabrice Bellet <fabrice@bellet.info>2019-07-19 15:55:49 +0200
commitc6cd50b87d9a322b0e583ecec47db6b28de90020 (patch)
tree362d75318e07a4c4cf5f5331f4282e15784d8960
parent222073f8d26269668d50cea517f63ab5104f12bd (diff)
downloadpidgin-c6cd50b87d9a322b0e583ecec47db6b28de90020.tar.gz
handle audiomixer empty caps possibility
-rw-r--r--libpurple/media/backend-fs2.c34
1 files changed, 18 insertions, 16 deletions
diff --git a/libpurple/media/backend-fs2.c b/libpurple/media/backend-fs2.c
index fa81cfb36e..f9e6d864ab 100644
--- a/libpurple/media/backend-fs2.c
+++ b/libpurple/media/backend-fs2.c
@@ -2195,23 +2195,25 @@ src_pad_added_cb(FsStream *fsstream, GstPad *srcpad,
sinkpad = gst_element_get_static_pad (stream->src, "src");
caps = gst_pad_get_current_caps (sinkpad);
- convert = gst_element_factory_make("audioconvert", NULL);
- resample = gst_element_factory_make("audioresample", NULL);
- capsfilter = gst_element_factory_make("capsfilter", NULL);
-
- gst_bin_add_many(GST_BIN(priv->confbin), convert,
- resample, capsfilter, NULL);
- gst_element_link_many(gst_pad_get_parent_element (srcpad),
- convert, resample, capsfilter, NULL);
-
- g_object_set (capsfilter, "caps", caps, NULL);
- gst_element_set_state (convert, GST_STATE_PLAYING);
- gst_element_set_state (resample, GST_STATE_PLAYING);
- gst_element_set_state (capsfilter, GST_STATE_PLAYING);
-
- srcpad = gst_element_get_static_pad (capsfilter, "src");
+ if (caps) {
+ convert = gst_element_factory_make("audioconvert", NULL);
+ resample = gst_element_factory_make("audioresample", NULL);
+ capsfilter = gst_element_factory_make("capsfilter", NULL);
+
+ gst_bin_add_many(GST_BIN(priv->confbin), convert,
+ resample, capsfilter, NULL);
+ gst_element_link_many(gst_pad_get_parent_element (srcpad),
+ convert, resample, capsfilter, NULL);
+
+ g_object_set (capsfilter, "caps", caps, NULL);
+ gst_element_set_state (convert, GST_STATE_PLAYING);
+ gst_element_set_state (resample, GST_STATE_PLAYING);
+ gst_element_set_state (capsfilter, GST_STATE_PLAYING);
+
+ srcpad = gst_element_get_static_pad (capsfilter, "src");
+ gst_object_unref (caps);
+ }
gst_object_unref (sinkpad);
- gst_object_unref (caps);
}
}