Hello community, here is the log from the commit of package kaffeine checked in at Mon Apr 10 09:23:35 CEST 2006. -------- --- KDE/kaffeine/kaffeine.changes 2006-04-09 16:46:43.000000000 +0200 +++ kaffeine/kaffeine.changes 2006-04-10 03:46:42.000000000 +0200 @@ -1,0 +2,5 @@ +Mon Apr 10 03:46:16 CEST 2006 - jpr@suse.de + +- Improve gstreamer 0.10 by getting visualization to work + +------------------------------------------------------------------- ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ Other differences: ------------------ ++++++ kaffeine.spec ++++++ --- /var/tmp/diff_new_pack.86RfOX/_old 2006-04-10 09:23:19.000000000 +0200 +++ /var/tmp/diff_new_pack.86RfOX/_new 2006-04-10 09:23:19.000000000 +0200 @@ -17,7 +17,7 @@ Group: Productivity/Multimedia/Video/Players Summary: Xine-Based Multimedia Player Version: 0.7.1 -Release: 20 +Release: 22 %define rversion %version BuildRoot: %{_tmppath}/%{name}-%{version}-build Requires: kdelibs3 >= %( echo `rpm -q --queryformat '%{VERSION}' kdelibs3`) @@ -130,6 +130,8 @@ /opt/kde3/share/services/gstreamer_part.desktop %changelog -n kaffeine +* Mon Apr 10 2006 - jpr@suse.de +- Improve gstreamer 0.10 by getting visualization to work * Sun Apr 09 2006 - jpr@suse.de - Move gstreamer part to 0.10 * Fri Mar 24 2006 - dmueller@suse.de ++++++ kaffeine-gstreamer-0-10.patch ++++++ --- /var/tmp/diff_new_pack.86RfOX/_old 2006-04-10 09:23:20.000000000 +0200 +++ /var/tmp/diff_new_pack.86RfOX/_new 2006-04-10 09:23:20.000000000 +0200 @@ -62,7 +62,15 @@ AC_SUBST(CFLAGS_GST) --- kaffeine/player-parts/gstreamer-part/gstreamer_part.cpp +++ kaffeine/player-parts/gstreamer-part/gstreamer_part.cpp -@@ -358,7 +358,7 @@ +@@ -333,6 +333,7 @@ + } + gchar *uri = g_strdup(url.local8Bit()); + kdDebug() << "GStreamerPart: play URL: " << uri << endl; ++ g_message ("GST Uri %s", uri); + g_object_set(G_OBJECT(m_play), "uri", uri, NULL); + g_free(uri); + +@@ -358,7 +359,7 @@ g_object_set(G_OBJECT(m_play), "suburi", NULL, NULL); } @@ -71,7 +79,7 @@ { // KMessageBox::error(0, i18n("Playback failed. Reason unknown.")); // if (m_url != m_logoPath) -@@ -393,12 +393,12 @@ +@@ -393,12 +394,12 @@ gst_object_unref(GST_OBJECT (cdda)); return; } @@ -86,7 +94,72 @@ { gst_element_set_state(cdda, GST_STATE_NULL); gst_object_unref(GST_OBJECT (cdda)); -@@ -849,27 +849,21 @@ +@@ -517,7 +518,8 @@ + emit setStatusBarText(i18n("Mute") + ": " + i18n("On")); + else + emit setStatusBarText(i18n("Mute") + ": " + i18n("Off")); +- g_object_set(G_OBJECT(m_audiosink), "mute", m_mute, NULL); ++ // FIXME this is not really muting ++ g_object_set(G_OBJECT(m_play), "volume", m_mute ? 0.0 : 2.0, NULL); + } + + void GStreamerPart::gstStateChanged() +@@ -674,9 +676,51 @@ + GstElement* visual = gst_element_factory_make (name.ascii(), "visualization"); + if (visual) + { +- g_object_set(G_OBJECT (m_play), "vis-plugin", visual, NULL); +- g_object_unref(m_visual); +- m_visual = visual; ++ GstElement *vis_bin, *vis_capsfilter = NULL; ++ GstPad *pad = NULL; ++ GstCaps *caps = NULL; ++ ++ vis_capsfilter = gst_element_factory_make ("capsfilter", "vis_capsfilter"); ++ if (!GST_IS_ELEMENT (vis_capsfilter)) { ++ kdWarning() << "GStreamer: Initialization of visualization capsfilter failed (" << name << ")" << endl; ++ } ++ ++ vis_bin = gst_bin_new ("vis_bin"); ++ if (!GST_IS_ELEMENT (vis_bin)) { ++ kdWarning() << "GStreamer: Initialization of visualization bin failed (" << name << ")" << endl; ++ } ++ ++ gst_bin_add_many (GST_BIN (vis_bin), visual, vis_capsfilter, NULL); ++ ++ /* Sink ghostpad */ ++ pad = gst_element_get_pad (visual, "sink"); ++ gst_element_add_pad (vis_bin, gst_ghost_pad_new ("sink", pad)); ++ gst_object_unref (pad); ++ ++ /* Source ghostpad, link with visual */ ++ pad = gst_element_get_pad (vis_capsfilter, "src"); ++ gst_element_add_pad (vis_bin, gst_ghost_pad_new ("src", pad)); ++ gst_element_link_pads (visual, "src", vis_capsfilter, "sink"); ++ gst_object_unref (pad); ++ ++ /* Get allowed output caps from visualisation element */ ++ pad = gst_element_get_pad (visual, "src"); ++ caps = gst_pad_get_allowed_caps (pad); ++ gst_object_unref (pad); ++ ++ if (caps && !gst_caps_is_fixed (caps)) { ++ g_object_set (vis_capsfilter, "caps", caps, NULL); ++ } ++ ++ GST_DEBUG ("visualisation caps: %" GST_PTR_FORMAT, caps); ++ if (GST_IS_CAPS (caps)) { ++ gst_caps_unref (caps); ++ } ++ ++ g_object_set(G_OBJECT (m_play), "vis-plugin", vis_bin, NULL); ++ if (m_visual) ++ g_object_unref(m_visual); ++ m_visual = vis_bin; + m_visualPluginName = name; + } + else +@@ -849,27 +893,21 @@ */ bool GStreamerPart::initGStreamer() { @@ -121,7 +194,7 @@ QString name, cat; while (factories) { -@@ -884,7 +878,7 @@ +@@ -884,7 +922,7 @@ m_videoPluginList.append(name); factories = g_list_next(factories); } @@ -130,8 +203,21 @@ /* initialize GStreamer objects */ m_play = gst_element_factory_make ("playbin", "player"); -@@ -950,10 +944,15 @@ - g_object_set(G_OBJECT(m_play), "video-sink", m_videosink, "audio-sink", m_audiosink, "vis-plugin", m_visual, NULL); +@@ -939,21 +977,20 @@ + /* + * Visualization + */ +- kdDebug() << "GStreamerPart: Using visualization plugin: " << m_visualPluginName << endl; +- if (m_visualPluginName != "none") +- { +- m_visual = gst_element_factory_make (m_visualPluginName.ascii(), "visualization"); +- if (!m_visual) +- kdWarning() << "GStreamer: Initialization of visualization plugin failed" << endl; +- } ++ slotSetVisualPlugin (m_visualPluginName); + +- g_object_set(G_OBJECT(m_play), "video-sink", m_videosink, "audio-sink", m_audiosink, "vis-plugin", m_visual, NULL); ++ g_object_set(G_OBJECT(m_play), "video-sink", m_videosink, "audio-sink", m_audiosink, NULL); //subtitle font //g_object_set(G_OBJECT(m_play), "subtitle-font-desc", "sans normal 14", NULL); - g_signal_connect(m_play, "error", G_CALLBACK (cb_error), this); @@ -150,7 +236,7 @@ g_signal_connect(m_play, "notify::source", G_CALLBACK(got_source), this); gst_element_set_state(m_play, GST_STATE_READY); return true; -@@ -961,23 +960,28 @@ +@@ -961,23 +998,28 @@ /******************* CALLBACKS ************************/ @@ -182,7 +268,7 @@ if (gst_tag_list_get_string(taglist, GST_TAG_TITLE, &string) && string) { gp->m_title = string; -@@ -1024,21 +1028,25 @@ +@@ -1024,21 +1066,25 @@ gp->m_videoCodec = string; //kdDebug() << "GStreamerPart: 'Video Codec': " << string << endl; } ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ Remember to have fun...