first try at qt->phonon revert, no builds yet, please review

epel9
Rex Dieter 16 years ago
parent f688b27ec4
commit 76dc6da471

@ -1,3 +1,8 @@
gstreamer-logo.svg
phonon-4.3.0.tar.bz2
phonon-4.3.1.tar.bz2
hi128-phonon-gstreamer.png
hi16-phonon-gstreamer.png
hi22-phonon-gstreamer.png
hi32-phonon-gstreamer.png
hi48-phonon-gstreamer.png
hi64-phonon-gstreamer.png

@ -0,0 +1,43 @@
diff -Naurw phonon-4.2.96/phonon/globalconfig.cpp phonon-4.2.96.pulseaudio/phonon/globalconfig.cpp
--- phonon-4.2.96/phonon/globalconfig.cpp 2008-11-27 16:41:41.000000000 +0100
+++ phonon-4.2.96.pulseaudio/phonon/globalconfig.cpp 2009-01-08 21:29:18.000000000 +0100
@@ -31,6 +31,7 @@
#include "phononnamespace_p.h"
#include <QtCore/QList>
+#include <QtCore/QHash>
#include <QtCore/QVariant>
QT_BEGIN_NAMESPACE
@@ -167,6 +168,15 @@
| ((override & HideUnavailableDevices) ? FilterUnavailableDevices : 0)
);
}
+ // make PulseAudio the global default (assume it is already default in this list)
+ if (!list.isEmpty()) {
+ int firstIndex = list.first();
+ if (backendIface->objectDescriptionProperties(Phonon::AudioOutputDeviceType,
+ firstIndex)["name"].toString() == "PulseAudio") {
+ list.removeFirst();
+ defaultList.prepend(firstIndex);
+ }
+ }
defaultList += list;
}
@@ -222,6 +232,15 @@
| ((override & HideUnavailableDevices) ? FilterUnavailableDevices : 0)
);
}
+ // make PulseAudio the global default (assume it is already default in this list)
+ if (!list.isEmpty()) {
+ int firstIndex = list.first();
+ if (backendIface->objectDescriptionProperties(Phonon::AudioCaptureDeviceType,
+ firstIndex)["name"].toString() == "PulseAudio") {
+ list.removeFirst();
+ defaultList.prepend(firstIndex);
+ }
+ }
defaultList += list;
}

@ -0,0 +1,59 @@
Index: gstreamer/mediaobject.h
===================================================================
--- gstreamer/mediaobject.h (revision 932755)
+++ gstreamer/mediaobject.h (revision 932756)
@@ -185,7 +185,7 @@
/*
* @param encodedUrl percent-encoded QString for source compat reasons. Should change to QUrl
*/
- bool createPipefromURL(const QString &encodedUrl);
+ bool createPipefromURL(const QUrl &url);
bool createPipefromStream(const MediaSource &);
private Q_SLOTS:
Index: gstreamer/mediaobject.cpp
===================================================================
--- gstreamer/mediaobject.cpp (revision 932755)
+++ gstreamer/mediaobject.cpp (revision 932756)
@@ -347,11 +347,8 @@
*
* returns true if successful
*/
-bool MediaObject::createPipefromURL(const QString &encodedUrl)
+bool MediaObject::createPipefromURL(const QUrl &url)
{
- // Convert back to URL
- QUrl url(encodedUrl, QUrl::StrictMode);
-
// Remove any existing data source
if (m_datasource) {
gst_bin_remove(GST_BIN(m_pipeline), m_datasource);
@@ -361,7 +358,7 @@
// Verify that the uri can be parsed
if (!url.isValid()) {
- m_backend->logMessage(QString("%1 is not a valid URI").arg(encodedUrl));
+ m_backend->logMessage(QString("%1 is not a valid URI").arg(url.toString()));
return false;
}
@@ -875,8 +872,7 @@
switch (source.type()) {
case MediaSource::Url: {
- QString urlString = source.url().toEncoded();
- if (createPipefromURL(urlString))
+ if (createPipefromURL(source.url()))
m_loading = true;
else
setError(tr("Could not open media source."));
@@ -884,8 +880,7 @@
break;
case MediaSource::LocalFile: {
- QString urlString = QUrl::fromLocalFile(source.fileName()).toString();
- if (createPipefromURL(urlString))
+ if (createPipefromURL(QUrl::fromLocalFile(source.fileName())))
m_loading = true;
else
setError(tr("Could not open media source."));

@ -0,0 +1,16 @@
Index: gstreamer/mediaobject.cpp
===================================================================
--- gstreamer/mediaobject.cpp (revision 932979)
+++ gstreamer/mediaobject.cpp (revision 932980)
@@ -141,9 +141,9 @@
if (m_resumeState)
return;
- if (m_state == Phonon::PlayingState || m_state == Phonon::PausedState) {
+ if (m_pendingState == Phonon::PlayingState || m_pendingState == Phonon::PausedState) {
m_resumeState = true;
- m_oldState = m_state;
+ m_oldState = m_pendingState;
m_oldPos = getPipelinePos();
}
}

@ -1,57 +1,108 @@
%define phonon_version_major 4.3
Summary: Multimedia framework api
Name: phonon
Version: 4.3.1
Release: 12%{?dist}
Group: Applications/Multimedia
Release: 101%{?dist}
Group: System Environment/Libraries
License: LGPLv2+
URL: http://phonon.kde.org/
Source0: ftp://ftp.kde.org/pub/kde/stable/4.2.1/phonon-%{version}.tar.bz2
BuildRoot: %{_tmppath}/%{name}-%{version}-%{release}-root-%(%{__id_u} -n)
# build only the xine backend
Patch0: phonon-4.3.1-xineonly.patch
# bump PulseAudio's priority in the xine backend
Source10: http://gstreamer.freedesktop.org/data/images/artwork/gstreamer-logo.svg
Source11: hi16-phonon-gstreamer.png
Source12: hi22-phonon-gstreamer.png
Source13: hi32-phonon-gstreamer.png
Source14: hi48-phonon-gstreamer.png
Source15: hi64-phonon-gstreamer.png
Source16: hi128-phonon-gstreamer.png
# Make PulseAudio the default when listed by the backend.
# Note that this currently only works for the Xine backend. Device selection in
# the GStreamer backend is weird: there is a setting for "sink" which cannot be
# set through systemsettings, and listed devices are only those supported by the
# "sink". So it never lists "PulseAudio" as a supported device, you have to pick
# it as a "sink", and then the device setting is ignored entirely.
Patch0: phonon-4.2.96-pulseaudio.patch
Patch1: phonon-4.2.96-xine-pulseaudio.patch
# make InitialPreference=9
Patch2: phonon-4.3.1-xine-InitialPreference.patch
Patch2: qt-x11-opensource-src-4.5.2-gst-pulsaudio.patch
## define to build phonon-backend-xine only
#define xine_only 1
Patch10: phonon-4.3.1-xineonly.patch
## Upstream patches
Patch100: phonon-4.3.2-gstreamer-utf8-url.patch
Patch101: phonon-4.3.2-gstreamer-volumefader.patch
# fix for non-ascii filenames in xine backend
Patch100: phonon-4.3.2-kdebug#172242.patch
Patch102: phonon-4.3.2-kdebug#172242.patch
# escape '#' too
Patch101: phonon-4.3.2-kdebug#172242-2.patch
Patch103: phonon-4.3.2-kdebug#172242-2.patch
BuildRequires: automoc4 >= 0.9.86
BuildRequires: cmake >= 2.6.0
BuildRequires: glib2-devel
BuildRequires: gstreamer-devel
BuildRequires: gstreamer-plugins-base-devel
BuildRequires: kde-filesystem
BuildRequires: libxcb-devel
BuildRequires: libxml2-devel
BuildRequires: pkgconfig
BuildRequires: qt4-devel >= 4.5.1
BuildRequires: qt4-devel >= 4.4.0
BuildRequires: xine-lib-devel
Requires: phonon-backend%{?_isa} >= %{version}
## can switch to Requires instead of Conflicts once bootstrapping is done
#Requires: qt4%{?_isa} >= %{_qt4_version}
Conflicts: qt4 < 4.5.2-21
%description
%{summary}.
%package devel
Summary: Developer files for %{name}
Group: Development/Libraries
Requires: %{name} = %{version}-%{release}
Requires: qt4-devel
Requires: pkgconfig
%description devel
%{summary}.
%package backend-xine
Summary: Xine phonon backend
Summary: xine phonon backend
Group: Applications/Multimedia
Requires: %{name} = %{version}-%{release}
Provides: phonon-backend%{?_isa} = %{version}-%{release}
Requires: phonon%{?_isa} >= %{phonon_version_major}
%description backend-xine
%{summary}.
%package backend-gstreamer
Summary: Gstreamer phonon backend
Group: Applications/Multimedia
Epoch: 2
Requires: %{name} = %{version}-%{release}
Provides: phonon-backend%{?_isa} = %{version}-%{release}
Obsoletes: %{name}-backend-gst < 4.2.0-4
Provides: %{name}-backend-gst = %{version}-%{release}
%description backend-gstreamer
%{summary}.
%prep
%setup -q -n phonon-%{version}%{?alphatag}
%patch0 -p1 -b .xineonly
%patch0 -p1 -b .pulseaudio
%patch1 -p1 -b .xine-pulseaudio
%patch100 -p1 -b .xine_nonascii
%patch101 -p1 -b .xine_nonascii-2
%patch2 -p4 -b .gst-pulseaudio
%patch100 -p0 -b .gstreamer-utf8-url
%patch101 -p0 -b .gstreamer-volumefader
%patch102 -p1 -b .xine_nonascii
%patch103 -p1 -b .xine_nonascii-2
# not working? use -C .../xine hack below instead for now -- Rex
%if 0%{?xine_only}
%patch10 -p1 -b .xineonly
%endif
%build
@ -60,39 +111,90 @@ pushd %{_target_platform}
%{cmake} ..
popd
make %{?_smp_mflags} -C %{_target_platform}
make %{?_smp_mflags} -C %{_target_platform}%{?xine_only:/xine}
%install
rm -rf %{buildroot}
make install/fast DESTDIR=%{buildroot} -C %{_target_platform}
make install/fast DESTDIR=%{buildroot} -C %{_target_platform}%{?xine_only:/xine}
# move the oxygen-only phonon-xine icons to hicolor
mv %{buildroot}%{_datadir}/icons/oxygen \
%{buildroot}%{_datadir}/icons/hicolor
%if ! 0%{?xine_only}
# gstreamer icons
install -D -m 0644 %{SOURCE10} %{buildroot}%{_datadir}/icons/hicolor/scalable/apps/phonon-gstreamer.svg
install -D -m 0644 %{SOURCE11} %{buildroot}%{_datadir}/icons/hicolor/16x16/apps/phonon-gstreamer.png
install -D -m 0644 %{SOURCE12} %{buildroot}%{_datadir}/icons/hicolor/22x22/apps/phonon-gstreamer.png
install -D -m 0644 %{SOURCE13} %{buildroot}%{_datadir}/icons/hicolor/32x32/apps/phonon-gstreamer.png
install -D -m 0644 %{SOURCE14} %{buildroot}%{_datadir}/icons/hicolor/48x48/apps/phonon-gstreamer.png
install -D -m 0644 %{SOURCE15} %{buildroot}%{_datadir}/icons/hicolor/64x64/apps/phonon-gstreamer.png
install -D -m 0644 %{SOURCE16} %{buildroot}%{_datadir}/icons/hicolor/128x128/apps/phonon-gstreamer.png
%endif
%clean
rm -rf %{buildroot}
%post backend-xine
touch --no-create %{_datadir}/icons/hicolor &> /dev/null ||:
%if ! 0%{?xine_only}
%post -p /sbin/ldconfig
%posttrans backend-xine
gtk-update-icon-cache %{_datadir}/icons/hicolor &> /dev/null ||:
%postun -p /sbin/ldconfig
%post backend-gstreamer
touch --no-create %{_kde4_iconsdir}/hicolor &> /dev/null ||:
%postun backend-gstreamer
if [ $1 -eq 0 ] ; then
touch --no-create %{_kde4_iconsdir}/hicolor &> /dev/null ||:
gtk-update-icon-cache %{_kde4_iconsdir}/hicolor &> /dev/null ||:
fi
%posttrans backend-gstreamer
gtk-update-icon-cache %{_kde4_iconsdir}/hicolor &> /dev/null ||:
%endif
%post backend-xine
touch --no-create %{_kde4_iconsdir}/hicolor &> /dev/null ||:
%postun backend-xine
if [ $1 -eq 0 ] ; then
touch --no-create %{_datadir}/icons/hicolor &> /dev/null ||:
gtk-update-icon-cache %{_datadir}/icons/hicolor &> /dev/null ||:
touch --no-create %{_kde4_iconsdir}/hicolor &> /dev/null ||:
gtk-update-icon-cache %{_kde4_iconsdir}/hicolor &> /dev/null ||:
fi
%posttrans backend-xine
gtk-update-icon-cache %{_kde4_iconsdir}/hicolor &> /dev/null ||:
%files backend-xine
%if ! 0%{?xine_only}
%files
%defattr(-,root,root,-)
%doc COPYING.LIB
%{_libdir}/libphonon*.so.4*
%{_datadir}/dbus-1/interfaces/org.kde.Phonon.AudioOutput.xml
# kde4-specific dirs
%dir %{_kde4_libdir}/kde4/plugins/phonon_backend/
%dir %{_kde4_datadir}/kde4/services/phononbackends/
%files devel
%defattr(-,root,root,-)
%dir %{_includedir}/KDE
%{_includedir}/KDE/Phonon/
%{_includedir}/phonon/
%{_libdir}/pkgconfig/phonon.pc
%{_libdir}/libphonon*.so
%files backend-gstreamer
%defattr(-,root,root,-)
%{_kde4_libdir}/kde4/plugins/phonon_backend/phonon_gstreamer.so
%{_kde4_datadir}/kde4/services/phononbackends/gstreamer.desktop
%{_datadir}/icons/hicolor/*/apps/phonon-gstreamer.*
%endif
%files backend-xine
%defattr(-,root,root,-)
%{_kde4_libdir}/kde4/plugins/phonon_backend/phonon_xine.so
%{_kde4_datadir}/kde4/services/phononbackends/xine.desktop
@ -100,6 +202,11 @@ fi
%changelog
* Tue Sep 29 2009 Rex Dieter <rdieter@fedoraproject.org> - 4.3.1-101
- revert to kde/phonon
- inflate to Release: 101
- -backend-gstreamer: Epoch: 2
* Sun Jul 26 2009 Fedora Release Engineering <rel-eng@lists.fedoraproject.org> - 4.3.1-12
- Rebuilt for https://fedoraproject.org/wiki/Fedora_12_Mass_Rebuild

@ -0,0 +1,60 @@
diff -up qt-x11-opensource-src-4.5.2/src/3rdparty/phonon/gstreamer/audiooutput.cpp.than qt-x11-opensource-src-4.5.2/src/3rdparty/phonon/gstreamer/audiooutput.cpp
--- qt-x11-opensource-src-4.5.2/src/3rdparty/phonon/gstreamer/audiooutput.cpp.than 2009-08-16 14:20:43.000000000 +0200
+++ qt-x11-opensource-src-4.5.2/src/3rdparty/phonon/gstreamer/audiooutput.cpp 2009-08-16 14:45:56.000000000 +0200
@@ -141,7 +141,9 @@ bool AudioOutput::setOutputDevice(int ne
// Save previous state
GstState oldState = GST_STATE(m_audioSink);
const QByteArray oldDeviceValue = GstHelper::property(m_audioSink, "device");
- const QByteArray deviceId = deviceList.at(newDevice).gstId;
+ const QByteArray deviceId = (deviceList.at(newDevice).gstId == "PulseAudio"
+ ? "default"
+ : deviceList.at(newDevice).gstId);
m_device = newDevice;
// We test if the device can be opened by checking if it can go from NULL to READY state
diff -up qt-x11-opensource-src-4.5.2/src/3rdparty/phonon/gstreamer/devicemanager.cpp.than qt-x11-opensource-src-4.5.2/src/3rdparty/phonon/gstreamer/devicemanager.cpp
--- qt-x11-opensource-src-4.5.2/src/3rdparty/phonon/gstreamer/devicemanager.cpp.than 2009-08-15 12:39:08.000000000 +0200
+++ qt-x11-opensource-src-4.5.2/src/3rdparty/phonon/gstreamer/devicemanager.cpp 2009-08-16 14:45:13.000000000 +0200
@@ -50,6 +50,8 @@ AudioDevice::AudioDevice(DeviceManager *
//get name from device
if (gstId == "default") {
description = "Default audio device";
+ } else if (gstId == "PulseAudio") {
+ description = QObject::tr("Pass all audio through the PulseAudio Sound Server.\n").toUtf8();
} else {
GstElement *aSink= manager->createAudioSink();
@@ -175,6 +177,18 @@ GstElement *DeviceManager::createAudioSi
}
}
+ if (!sink) {
+ sink = gst_element_factory_make ("pulsesink", NULL);
+ if (canOpenDevice(sink)) {
+ m_backend->logMessage("AudioOutput using pulse audio sink");
+ m_audioSink = "pulsesink";
+ }
+ else if (sink) {
+ gst_object_unref(sink);
+ sink = 0;
+ }
+ }
+
#ifdef USE_ALSASINK2
if (!sink) {
sink = gst_element_factory_make ("_k_alsasink", NULL);
@@ -306,8 +320,12 @@ void DeviceManager::updateDeviceList()
QList<QByteArray> list;
if (audioSink) {
- list = GstHelper::extractProperties(audioSink, "device");
- list.prepend("default");
+ if (m_audioSink == "pulsesink") {
+ list.append("PulseAudio");
+ } else {
+ list = GstHelper::extractProperties(audioSink, "device");
+ list.prepend("default");
+ }
for (int i = 0 ; i < list.size() ; ++i) {
QByteArray gstId = list.at(i);

@ -1,2 +1,8 @@
8e3924f417fea67f72b2105faed2119c gstreamer-logo.svg
767cb68052c108e95f293f30acdef3fb phonon-4.3.1.tar.bz2
60de9d7e1cddd019f09fd036f0e5413a hi128-phonon-gstreamer.png
7ca265e0cf75b3b4c81e1490d3dba3be hi16-phonon-gstreamer.png
0a9f69d901aded140d4fed969c22e14f hi22-phonon-gstreamer.png
12db12c009b722a6dc141f78feb7e330 hi32-phonon-gstreamer.png
86c34a1b81d44980b1381f94ed6b7a23 hi48-phonon-gstreamer.png
153505c71ec021b0a3bd4b74f2492e93 hi64-phonon-gstreamer.png

Loading…
Cancel
Save