diff options
author | Fabrice Bellet <fabrice@bellet.info> | 2019-07-19 15:55:49 +0200 |
---|---|---|
committer | Fabrice Bellet <fabrice@bellet.info> | 2019-07-19 15:55:49 +0200 |
commit | c6cd50b87d9a322b0e583ecec47db6b28de90020 (patch) | |
tree | 362d75318e07a4c4cf5f5331f4282e15784d8960 | |
parent | 222073f8d26269668d50cea517f63ab5104f12bd (diff) | |
download | pidgin-c6cd50b87d9a322b0e583ecec47db6b28de90020.tar.gz |
handle audiomixer empty caps possibility
-rw-r--r-- | libpurple/media/backend-fs2.c | 34 |
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); } } |