gst_bin_remove (GST_BIN_CAST (chain->chain.bin), chain->vis);
/* add new plugin and set state to playing */
- chain->vis = gst_object_ref (playsink->visualisation);
+ chain->vis = playsink->visualisation;
gst_bin_add (GST_BIN_CAST (chain->chain.bin), chain->vis);
gst_element_set_state (chain->vis, GST_STATE_PLAYING);
GstBin *bin;
gboolean res;
GstPad *pad;
+ GstElement *elem;
chain = g_new0 (GstPlayVisChain, 1);
chain->chain.playsink = playsink;
chain->blockpad = gst_element_get_static_pad (chain->resample, "src");
if (playsink->visualisation) {
- chain->vis = gst_object_ref (playsink->visualisation);
- } else {
- chain->vis = gst_element_factory_make ("goom", "vis");
- if (!chain->vis)
- goto no_goom;
+ GST_DEBUG_OBJECT (playsink, "trying configure vis");
+ chain->vis = try_element (playsink, playsink->visualisation, FALSE);
}
+ if (chain->vis == NULL) {
+ GST_DEBUG_OBJECT (playsink, "trying goom");
+ elem = gst_element_factory_make ("goom", "vis");
+ chain->vis = try_element (playsink, elem, TRUE);
+ }
+ if (chain->vis == NULL)
+ goto no_goom;
+
gst_bin_add (bin, chain->vis);
res = gst_element_link_pads (chain->queue, "src", chain->conv, "sink");
playsink->audio_tee_vissrc = NULL;
}
srcpad =
- gst_element_get_static_pad (GST_ELEMENT_CAST (playsink->vischain->
- chain.bin), "src");
+ gst_element_get_static_pad (GST_ELEMENT_CAST (playsink->
+ vischain->chain.bin), "src");
gst_pad_unlink (srcpad, playsink->videochain->sinkpad);
}
add_chain (GST_PLAY_CHAIN (playsink->videochain), FALSE);
if (playsink->vischain) {
GST_DEBUG_OBJECT (playsink, "setting up vis chain");
srcpad =
- gst_element_get_static_pad (GST_ELEMENT_CAST (playsink->vischain->
- chain.bin), "src");
+ gst_element_get_static_pad (GST_ELEMENT_CAST (playsink->
+ vischain->chain.bin), "src");
add_chain (GST_PLAY_CHAIN (playsink->vischain), TRUE);
activate_chain (GST_PLAY_CHAIN (playsink->vischain), TRUE);
if (playsink->audio_tee_vissrc == NULL) {