rpms/phonon/F-11 phonon-4.2.0-ogg-mime-type.patch, NONE, 1.1 phonon-4.3.50-fix-decodebin-usage.patch, NONE, 1.1 phonon-4.3.50-gstreamer-fix-seekable-query-failed.patch, NONE, 1.1 phonon-4.3.50-phonon-allow-stop-empty-source.patch, NONE, 1.1 phonon-4.3.80-fix-gstreamer-pulseaudio-deadlock.patch, NONE, 1.1 phonon-4.3.80-kde223662.patch, NONE, 1.1 phonon.spec, 1.43, 1.44

Rex Dieter rdieter at fedoraproject.org
Thu Jan 21 20:48:03 UTC 2010


Author: rdieter

Update of /cvs/pkgs/rpms/phonon/F-11
In directory cvs1.fedora.phx.redhat.com:/tmp/cvs-serv26472

Modified Files:
	phonon.spec 
Added Files:
	phonon-4.2.0-ogg-mime-type.patch 
	phonon-4.3.50-fix-decodebin-usage.patch 
	phonon-4.3.50-gstreamer-fix-seekable-query-failed.patch 
	phonon-4.3.50-phonon-allow-stop-empty-source.patch 
	phonon-4.3.80-fix-gstreamer-pulseaudio-deadlock.patch 
	phonon-4.3.80-kde223662.patch 
Log Message:
sync w/devel


phonon-4.2.0-ogg-mime-type.patch:
 backend.cpp |    9 +++++++++
 1 file changed, 9 insertions(+)

--- NEW FILE phonon-4.2.0-ogg-mime-type.patch ---
Index: gstreamer/backend.cpp
===================================================================
--- gstreamer/backend.cpp	(revision 862019)
+++ gstreamer/backend.cpp	(working copy)
@@ -226,6 +227,15 @@
         }
     }
     g_list_free(factoryList);
+    if (availableMimeTypes.contains("audio/x-vorbis")
+        && availableMimeTypes.contains("application/x-ogm-audio")) {
+        if (!availableMimeTypes.contains("audio/x-vorbis+ogg"))
+            availableMimeTypes.append("audio/x-vorbis+ogg");
+        if (!availableMimeTypes.contains("application/ogg"))  /* *.ogg */
+            availableMimeTypes.append("application/ogg");
+        if (!availableMimeTypes.contains("audio/ogg")) /* *.oga */
+            availableMimeTypes.append("audio/ogg");
+    }
     availableMimeTypes.sort();
     return availableMimeTypes;
 }

phonon-4.3.50-fix-decodebin-usage.patch:
 gsthelper.cpp   |    2 +-
 mediaobject.cpp |    2 +-
 2 files changed, 2 insertions(+), 2 deletions(-)

--- NEW FILE phonon-4.3.50-fix-decodebin-usage.patch ---
Index: gstreamer/mediaobject.cpp
===================================================================
--- gstreamer/mediaobject.cpp   (revision 1040729)
+++ gstreamer/mediaobject.cpp   (working copy)
@@ -484,7 +484,7 @@
     gst_object_ref (GST_OBJECT (m_pipeline));
     gst_object_sink (GST_OBJECT (m_pipeline));

-    m_decodebin = gst_element_factory_make ("decodebin", NULL);
+    m_decodebin = gst_element_factory_make ("decodebin2", NULL);
     g_signal_connect (m_decodebin, "new-decoded-pad", G_CALLBACK (&cb_newpad), this);
     g_signal_connect (m_decodebin, "unknown-type", G_CALLBACK (&cb_unknown_type), this);
     g_signal_connect (m_decodebin, "no-more-pads", G_CALLBACK (&cb_no_more_pads), this);
Index: gstreamer/gsthelper.cpp
===================================================================
--- gstreamer/gsthelper.cpp     (revision 1040694)
+++ gstreamer/gsthelper.cpp     (working copy)
@@ -121,7 +121,7 @@
 {
     GstElement *playbin = 0;
     //init playbin and add to our pipeline
-    playbin = gst_element_factory_make("playbin", NULL);
+    playbin = gst_element_factory_make("playbin2", NULL);

     //Create an identity element to redirect sound
     GstElement *audioSinkBin =  gst_bin_new (NULL);


phonon-4.3.50-gstreamer-fix-seekable-query-failed.patch:
 mediaobject.cpp |    4 ++++
 1 file changed, 4 insertions(+)

--- NEW FILE phonon-4.3.50-gstreamer-fix-seekable-query-failed.patch ---
diff -Naur phonon-4.3.50.orig/gstreamer/mediaobject.cpp phonon-4.3.50/gstreamer/mediaobject.cpp
--- phonon-4.3.50.orig/gstreamer/mediaobject.cpp    2009-10-11 02:24:30.000000000 +0200
+++ phonon-4.3.50/gstreamer/mediaobject.cpp 2009-10-11 02:28:25.000000000 +0200
@@ -852,6 +852,10 @@
         else
             m_backend->logMessage("Stream is non-seekable", Backend::Info, this);
     } else {
+        if (m_seekable) {
+            m_seekable = false;
+            emit seekableChanged(m_seekable);
+        }
         m_backend->logMessage("updateSeekable query failed", Backend::Info, this);
     }
     gst_query_unref (query);


phonon-4.3.50-phonon-allow-stop-empty-source.patch:
 mediaobject.cpp |    2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

--- NEW FILE phonon-4.3.50-phonon-allow-stop-empty-source.patch ---
diff -Naur phonon-4.3.50.orig/phonon/mediaobject.cpp phonon-4.3.50/phonon/mediaobject.cpp
--- phonon-4.3.50.orig/phonon/mediaobject.cpp   2009-02-26 22:33:54.000000000 +0100
+++ phonon-4.3.50/phonon/mediaobject.cpp    2009-10-12 22:48:22.000000000 +0200
@@ -114,7 +114,7 @@
 void MediaObject::stop()
 {
     K_D(MediaObject);
-    if (d->backendObject() && isPlayable(d->mediaSource.type())) {
+    if (d->backendObject() && d->mediaSource.type() != MediaSource::Invalid) {
         INTERFACE_CALL(stop());
     }
 }


phonon-4.3.80-fix-gstreamer-pulseaudio-deadlock.patch:
 b/gstreamer/mediaobject.cpp |    5 +++--
 gstreamer/mediaobject.cpp   |    2 ++
 2 files changed, 5 insertions(+), 2 deletions(-)

--- NEW FILE phonon-4.3.80-fix-gstreamer-pulseaudio-deadlock.patch ---
>From 104872f266cf6675e27cc6e122300f4ed5baf3ab Mon Sep 17 00:00:00 2001
From: Colin Guthrie <cguthrie at mandriva.org>
Date: Wed, 13 Jan 2010 22:57:29 +0000
Subject: [PATCH] gstreamer: Fix a problem where the fact a reset was needed was lost.

If you create the path (createPath()) *before* setting the media source,
(setCurrentSource()) the gstreamer backend would forget the fact that a reset
was needed and ultimately end up in an error state.

This change simply does not wipe out the m_resetNeeded flag when
the source is set and leaves it as it is.

This fixes the test case application posted on
https://qa.mandriva.com/show_bug.cgi?id=56807
---
 gstreamer/mediaobject.cpp |    4 +++-
 1 files changed, 3 insertions(+), 1 deletions(-)

diff --git a/gstreamer/mediaobject.cpp b/gstreamer/mediaobject.cpp
index 15eb080..40e4246 100644
--- a/gstreamer/mediaobject.cpp
+++ b/gstreamer/mediaobject.cpp
@@ -916,7 +916,9 @@ void MediaObject::setSource(const MediaSource &source)
     // Go into to loading state
     changeState(Phonon::LoadingState);
     m_loading = true;
-    m_resetNeeded = false;
+    // IMPORTANT: Honor the m_resetNeeded flag as it currently stands.
+    // See https://qa.mandriva.com/show_bug.cgi?id=56807
+    //m_resetNeeded = false;
     m_resumeState = false;
     m_pendingState = Phonon::StoppedState;
 
-- 
1.6.6

commit 6fbea9b56a12281819a8c04afd5caa53cfeee39f
Author: cguthrie <cguthrie at 283d02a7-25f6-0310-bc7c-ecb5cbfe19da>
Date:   Thu Jan 21 18:23:12 2010 +0000

    gstreamer: Fix a problem encountered when playing, stopping and playing again.
    
    As reported by Harald Fernengel, a similar problem to that fixed in r1076454
    also exists when you play->stop->play a media object.
    
    This should fix the issue by marking a reset needed whenever we reach the stopped state.
    Thanks to Harald for finding the problem and pointing the way to the fix.
    
    git-svn-id: svn+ssh://svn.kde.org/home/kde/trunk/kdesupport/phonon@1078188 283d02a7-25f6-0310-bc7c-ecb5cbfe19da

diff --git a/gstreamer/mediaobject.cpp b/gstreamer/mediaobject.cpp
index 509e749..d1707dd 100644
--- a/gstreamer/mediaobject.cpp
+++ b/gstreamer/mediaobject.cpp
@@ -741,6 +741,8 @@ void MediaObject::changeState(State newstate)
 
     case Phonon::StoppedState:
         m_backend->logMessage("phonon state changed: Stopped", Backend::Info, this);
+        // We must reset the pipeline when playing again
+        m_resetNeeded = true;
         m_tickTimer->stop();
         break;
 

phonon-4.3.80-kde223662.patch:
 audiooutput.cpp |   16 ++++++++++++----
 backend.cpp     |    3 ---
 2 files changed, 12 insertions(+), 7 deletions(-)

--- NEW FILE phonon-4.3.80-kde223662.patch ---
--- trunk/kdesupport/phonon/xine/audiooutput.cpp	2009/12/27 16:57:19	1066664
+++ trunk/kdesupport/phonon/xine/audiooutput.cpp	2010/01/21 20:13:50	1078226
@@ -26,6 +26,7 @@
 #include <sys/ioctl.h>
 #include <iostream>
 #include <QSet>
+#include <phonon/pulsesupport_p.h>
 #include "mediaobject.h"
 #include "backend.h"
 #include "events.h"
@@ -48,10 +49,6 @@
 AudioOutput::AudioOutput(QObject *parent)
     : AbstractAudioOutput(new AudioOutputXT, parent)
 {
-    // Always initialise the "device" in use.
-    // This is needed for PulseAudio support as subsequent calls to setOutputDevice()
-    // are suppressed
-    setOutputDevice(0);
 }
 
 AudioOutput::~AudioOutput()
@@ -132,6 +129,17 @@
 {
     K_XT(AudioOutput);
     xine_audio_port_t *port = 0;
+
+    PulseSupport *pulse = PulseSupport::getInstance();
+    if (pulse->isActive()) {
+        // Here we trust that the PA plugin is setup correctly and we just want to use it.
+        const QByteArray &outputPlugin = "pulseaudio";
+        debug() << Q_FUNC_INFO << "PA Active: use output plugin:" << outputPlugin;
+        port = xine_open_audio_driver(xt->m_xine, outputPlugin.constData(), 0);
+        debug() << Q_FUNC_INFO << "----------------------------------------------- audio_port created";
+        return port;
+    }
+
     if (!deviceDesc.isValid()) {
         // use null output for invalid devices
         port = xine_open_audio_driver(xt->m_xine, "none", 0);
--- trunk/kdesupport/phonon/xine/backend.cpp	2009/12/27 16:57:19	1066664
+++ trunk/kdesupport/phonon/xine/backend.cpp	2010/01/21 20:13:50	1078226
@@ -588,9 +588,6 @@
 
 QByteArray Backend::audioDriverFor(int audioDevice)
 {
-    if (PulseSupport::getInstance()->isActive())
-        return "pulseaudio";
-
     instance()->checkAudioOutputs();
     const Backend *const that = instance();
     for (int i = 0; i < that->m_audioOutputInfos.size(); ++i) {


Index: phonon.spec
===================================================================
RCS file: /cvs/pkgs/rpms/phonon/F-11/phonon.spec,v
retrieving revision 1.43
retrieving revision 1.44
diff -u -p -r1.43 -r1.44
--- phonon.spec	18 Jan 2010 11:01:07 -0000	1.43
+++ phonon.spec	21 Jan 2010 20:48:02 -0000	1.44
@@ -4,7 +4,7 @@
 Summary: Multimedia framework api
 Name:    phonon
 Version: 4.3.80
-Release: 3%{?dist}
+Release: 5%{?dist}
 Group:   System Environment/Libraries
 License: LGPLv2+
 URL:     http://phonon.kde.org/
@@ -26,8 +26,16 @@ Source16: hi128-phonon-gstreamer.png
 # maybe we can just wait for the improvie PA support to land.
 Patch1:  phonon-4.3.50-xine_pulseaudio.patch
 
+## Mandriva/upstreamable patches
+Patch50: phonon-4.2.0-ogg-mime-type.patch
+Patch51: phonon-4.3.50-fix-decodebin-usage.patch
+Patch52: phonon-4.3.50-gstreamer-fix-seekable-query-failed.patch
+Patch53: phonon-4.3.50-phonon-allow-stop-empty-source.patch
+Patch54: phonon-4.3.80-fix-gstreamer-pulseaudio-deadlock.patch
+
 ## Upstream patches
-Patch100: phonon-4.3.80-gstreamer-resetneeded.patch
+# http://bugs.kde.org/223662
+Patch100: phonon-4.3.80-kde223662.patch
 
 BuildRequires: automoc4 >= 0.9.86
 BuildRequires: cmake >= 2.6.0
@@ -89,12 +97,21 @@ Provides:  %{name}-backend-gst = %{versi
 %if 0%{?pa_keep_old_hacks}
 %patch1 -p1 -b .xine_pulseaudio
 %endif
-%patch100 -p0 -b .resetneeded
+
+%patch50 -p0 -b .ogg-mime-type
+%patch51 -p0 -b .fix-decodebin-usage
+%patch52 -p1 -b .gstreamer-fix-seekable-query-failed
+%patch53 -p1 -b .phonon-allow-stop-empty-source
+%patch54 -p1 -b .gstreamer-pulseaudio-deadlock
+%patch100 -p3 -b .kde223662
+
 
 %build
 mkdir -p %{_target_platform}
 pushd %{_target_platform}
-%{cmake} ..
+%{cmake} \
+  -DUSE_INSTALL_PLUGIN=TRUE \
+  ..
 popd
 
 make %{?_smp_mflags} -C %{_target_platform}%{?xine_only:/xine}
@@ -191,6 +208,12 @@ gtk-update-icon-cache %{_kde4_iconsdir}/
 
 
 %changelog
+* Thu Jan 21 2010 Rex Dieter <rdieter at fedoraproject.org> - 4.3.80-5
+- no sound with phonon-xine/pulseaudio (kde#223662, rh#553945)
+
+* Thu Jan 21 2010 Rex Dieter <rdieter at fedoraproject.org> - 4.3.80-4
+- snarf mdv patches
+
 * Mon Jan 18 2010 Than Ngo <than at redhat.com> - 4.3.80-3
 - backport GStreamer backend bugfixes, fix random disappearing sound under KDE
 



More information about the scm-commits mailing list