diff options
| author | abcd <abcd@gentoo.org> | 2010-01-16 14:44:33 -0500 |
|---|---|---|
| committer | abcd <abcd@gentoo.org> | 2010-01-16 14:44:33 -0500 |
| commit | 5230f9a235753e9ea61260c58c499caf61a3e37d (patch) | |
| tree | 0fcc2a04a948272c7eca317d38377295976af5d5 | |
| parent | c61db944789bb1b586248b5531d08a004dc52f0d (diff) | |
| download | kde-5230f9a235753e9ea61260c58c499caf61a3e37d.tar.gz kde-5230f9a235753e9ea61260c58c499caf61a3e37d.tar.bz2 kde-5230f9a235753e9ea61260c58c499caf61a3e37d.zip | |
[media-sound/phonon] Add aqua support
| -rw-r--r-- | media-sound/phonon/Manifest | 3 | ||||
| -rw-r--r-- | media-sound/phonon/files/phonon-4.4-qt7.patch | 352 | ||||
| -rw-r--r-- | media-sound/phonon/phonon-9999.ebuild | 59 |
3 files changed, 407 insertions, 7 deletions
diff --git a/media-sound/phonon/Manifest b/media-sound/phonon/Manifest index 7ceb5b69c5b..7df1f3ecd75 100644 --- a/media-sound/phonon/Manifest +++ b/media-sound/phonon/Manifest @@ -1,2 +1,3 @@ -EBUILD phonon-9999.ebuild 1331 RMD160 21165d9e2851a1609a50cec67fb37915204a0b12 SHA1 4c5f1383ff24c2b14d1ac4389fd90798691c2009 SHA256 411e6285b03b203f43d2c6bba9b79d0a66c24f79d1cf933eb5670ae0a31a8f9e +AUX phonon-4.4-qt7.patch 15299 RMD160 ec017cf0dbbd79577a29c595f5bd6cbe9df7e199 SHA1 565b2c407acea17bcfeb5e24c82b14dbb398af38 SHA256 68b51882663ed0a8ef0bfa4bbb9acc8d113e033f7704cddba6add8adb061c6e3 +EBUILD phonon-9999.ebuild 2979 RMD160 e728f70763039339f738ab95ae0df18f0cad506a SHA1 ddde63b7c9a7351d9063f6b50c7db526a4bca501 SHA256 3bf0470c3d7ea671e9c0f795cb48791822864ef488d3c3d6f402d178bc12cc79 MISC metadata.xml 263 RMD160 7a5466a0574ed183b274d960395a08ea1dfba410 SHA1 7ddd4a4281433a2c5944a22945a7a8f78b7eb511 SHA256 72ea86ea8d558544b77c265bded5a81dd0b6ec9325909b8ab7e41838171a6718 diff --git a/media-sound/phonon/files/phonon-4.4-qt7.patch b/media-sound/phonon/files/phonon-4.4-qt7.patch new file mode 100644 index 00000000000..974fe11d2a4 --- /dev/null +++ b/media-sound/phonon/files/phonon-4.4-qt7.patch @@ -0,0 +1,352 @@ +Desc: Fix the QuickTime7 plugin for MacOS. Probably needs 10.6. +Author: Heiko Przybyl <zuxez@cs.tu-berlin.de> +--- phonon-4.4_pre20090520/qt7/backendinfo.mm.orig 2009-10-10 17:54:22 +0200 ++++ phonon-4.4_pre20090520/qt7/backendinfo.mm 2009-10-10 17:52:13 +0200 +@@ -22,6 +22,7 @@ + #include <AudioUnit/AudioUnit.h> + #include <CoreServices/CoreServices.h> + ++#include <QtGui/qmacdefines_mac.h> + #import <QTKit/QTMovie.h> + + #ifdef QUICKTIME_C_API_AVAILABLE +--- phonon-4.4_pre20090520/qt7/quicktimevideoplayer.h.orig 2009-10-10 19:42:17 +0200 ++++ phonon-4.4_pre20090520/qt7/quicktimevideoplayer.h 2009-10-10 20:25:49 +0200 +@@ -20,6 +20,7 @@ + + #include "backendheader.h" + ++#include <QtGui/qmacdefines_mac.h> + #import <QTKit/QTDataReference.h> + #import <QTKit/QTMovie.h> + +--- phonon-4.4_pre20090520/qt7/CMakeLists.txt.orig 2009-10-10 22:09:10 +0200 ++++ phonon-4.4_pre20090520/qt7/CMakeLists.txt 2009-10-10 22:09:19 +0200 +@@ -43,6 +43,7 @@ if (BUILD_PHONON_QT7) + ) + + automoc4_add_library(phonon_qt7 MODULE ${phonon_qt7_SRCS}) ++ set_target_properties(phonon_qt7 PROPERTIES PREFIX "") + target_link_libraries(phonon_qt7 + ${QT_QTGUI_LIBRARY} ${QT_QTOPENGL_LIBRARY} + ${PHONON_LIBS} +@@ -46,7 +46,6 @@ if (BUILD_PHONON_QT7) + target_link_libraries(phonon_qt7 + ${QT_QTGUI_LIBRARY} ${QT_QTOPENGL_LIBRARY} + ${PHONON_LIBS} +- "-framework QuickTime" + "-framework AudioUnit" + "-framework AudioToolbox" + "-framework CoreAudio" +@@ -53,6 +54,6 @@ if (BUILD_PHONON_QT7) + "-framework QuartzCore" + "-framework QTKit" + ) +- install(TARGETS phonon_qt7 DESTINATION ${PLUGIN_INSTALL_DIR}) ++ install(TARGETS phonon_qt7 DESTINATION ${PLUGIN_INSTALL_DIR}/plugins/phonon_backend) + + endif (BUILD_PHONON_QT7) +--- phonon-4.4_pre20090520/qt7/audioeffects.h.orig 2009-10-10 20:42:45 +0200 ++++ phonon-4.4_pre20090520/qt7/audioeffects.h 2009-10-10 20:42:54 +0200 +@@ -37,7 +37,7 @@ namespace QT7 + AudioEffectAudioNode(int effectType); + int m_effectType; + +- ComponentDescription getAudioNodeDescription() const; ++ AudioComponentDescription getAudioNodeDescription() const; + void initializeAudioUnit(); + + QVariant parameterValue(const Phonon::EffectParameter &value) const; +--- phonon-4.4_pre20090520/qt7/audioeffects.mm.orig 2009-10-10 20:42:41 +0200 ++++ phonon-4.4_pre20090520/qt7/audioeffects.mm 2009-10-10 21:52:44 +0200 +@@ -29,9 +29,9 @@ AudioEffectAudioNode::AudioEffectAudioNo + { + } + +-ComponentDescription AudioEffectAudioNode::getAudioNodeDescription() const ++AudioComponentDescription AudioEffectAudioNode::getAudioNodeDescription() const + { +- ComponentDescription d; ++ AudioComponentDescription d; + d.componentType = kAudioUnitType_Effect; + d.componentSubType = m_effectType; + d.componentManufacturer = kAudioUnitManufacturer_Apple; +@@ -62,10 +62,10 @@ QVariant AudioEffectAudioNode::parameter + } else { + // Use default value: + AudioUnit tmpAudioUnit; +- ComponentDescription description = getAudioNodeDescription(); +- Component component = FindNextComponent(0, &description); ++ AudioComponentDescription description = getAudioNodeDescription(); ++ AudioComponent component = AudioComponentFindNext(0, &description); + BACKEND_ASSERT3(component, "Could not get parameters of audio effect.", NORMAL_ERROR, QVariant()) +- OSErr err = OpenAComponent(component, &tmpAudioUnit); ++ OSErr err = AudioComponentInstanceNew(component, &tmpAudioUnit); + BACKEND_ASSERT3(err == noErr, "Could not get parameters of audio effect.", NORMAL_ERROR, QVariant()) + AudioUnitParameterInfo info; + UInt32 size = sizeof(info); +@@ -87,10 +87,10 @@ void AudioEffectAudioNode::setParameterV + m_alteredParameters.remove(parameter.id()); + if (m_audioUnit){ + AudioUnit tmpAudioUnit; +- ComponentDescription description = getAudioNodeDescription(); +- Component component = FindNextComponent(0, &description); ++ AudioComponentDescription description = getAudioNodeDescription(); ++ AudioComponent component = AudioComponentFindNext(0, &description); + BACKEND_ASSERT2(component, "Could not get parameters of audio effect.", NORMAL_ERROR) +- OSErr err = OpenAComponent(component, &tmpAudioUnit); ++ OSErr err = AudioComponentInstanceNew(component, &tmpAudioUnit); + BACKEND_ASSERT2(err == noErr, "Could not get parameters of audio effect.", NORMAL_ERROR) + AudioUnitParameterInfo info; + UInt32 size = sizeof(info); +@@ -121,10 +121,10 @@ QList<Phonon::EffectParameter> AudioEffe + QList<Phonon::EffectParameter> effectList; + // Create a temporary audio unit: + AudioUnit audioUnit; +- ComponentDescription description = m_audioNode->getAudioNodeDescription(); +- Component component = FindNextComponent(0, &description); ++ AudioComponentDescription description = m_audioNode->getAudioNodeDescription(); ++ AudioComponent component = AudioComponentFindNext(0, &description); + BACKEND_ASSERT3(component, "Could not get parameters of audio effect.", NORMAL_ERROR, effectList) +- OSErr err = OpenAComponent(component, &audioUnit); ++ OSErr err = AudioComponentInstanceNew(component, &audioUnit); + BACKEND_ASSERT3(err == noErr, "Could not get parameters of audio effect.", NORMAL_ERROR, effectList) + + UInt32 size = 0; +@@ -149,29 +149,25 @@ QList<Phonon::EffectParameter> AudioEffe + + QString AudioEffect::name() + { +- ComponentDescription description = m_audioNode->getAudioNodeDescription(); +- Component component = FindNextComponent(0, &description); ++ AudioComponentDescription description = m_audioNode->getAudioNodeDescription(); ++ AudioComponent component = AudioComponentFindNext(0, &description); + BACKEND_ASSERT3(component, "Could not get audio effect name.", NORMAL_ERROR, QLatin1String("<unknown effect>")) + +- ComponentDescription cDesc; +- Handle nameH = NewHandle(0); +- GetComponentInfo(component, &cDesc, nameH, 0, 0); +- HLock(nameH); +- char *namePtr = *nameH; +- int len = *namePtr++; +- namePtr[len] = 0; +- QString qsName = QString::fromUtf8(namePtr); +- DisposeHandle(nameH); ++ CFStringRef n; ++ AudioComponentCopyName(component, &n); ++ // Or use CFStringGetCString? ++ QString qsName = QString::fromUtf8(CFStringGetCStringPtr(n, kCFStringEncodingUTF8)); + return qsName; + } + + QString AudioEffect::description() + { +- ComponentDescription description = m_audioNode->getAudioNodeDescription(); +- Component component = FindNextComponent(0, &description); ++ AudioComponentDescription description = m_audioNode->getAudioNodeDescription(); ++#if 0 ++ AudioComponent component = AudioComponentFindNext(0, &description); + BACKEND_ASSERT3(component, "Could not get audio effect description.", NORMAL_ERROR, QLatin1String("<unknown effect>")) + +- ComponentDescription cDesc; ++ AudioComponentDescription cDesc; + Handle descH = NewHandle(0); + GetComponentInfo(component, &cDesc, 0, descH, 0); + HLock(descH); +@@ -180,6 +176,9 @@ QString AudioEffect::description() + descPtr[len] = 0; + QString qsDesc = QString::fromUtf8(descPtr); + DisposeHandle(descH); ++#else ++ QString qsDesc; ++#endif + return qsDesc; + } + +@@ -187,19 +186,19 @@ QList<int> AudioEffect::effectList() + { + QList<int> effects; + +- ComponentDescription d; ++ AudioComponentDescription d; + d.componentType = kAudioUnitType_Effect; + d.componentSubType = 0; + d.componentManufacturer = 0; + d.componentFlags = 0; + d.componentFlagsMask = 0; +- Component component = FindNextComponent(0, &d); ++ AudioComponent component = AudioComponentFindNext(0, &d); + + while (component) { +- ComponentDescription cDesc; +- GetComponentInfo(component, &cDesc, 0, 0, 0); ++ AudioComponentDescription cDesc; ++ AudioComponentGetDescription(component, &cDesc); + effects << cDesc.componentSubType; +- component = FindNextComponent(component, &d); ++ component = AudioComponentFindNext(component, &d); + } + return effects; + } +--- phonon-4.4_pre20090520/qt7/audiomixer.h.orig 2009-10-10 21:55:44 +0200 ++++ phonon-4.4_pre20090520/qt7/audiomixer.h 2009-10-10 21:56:01 +0200 +@@ -41,7 +41,7 @@ namespace QT7 + float volume(int bus = 0); + + protected: +- ComponentDescription getAudioNodeDescription() const; ++ AudioComponentDescription getAudioNodeDescription() const; + void initializeAudioUnit(); + + private: +--- phonon-4.4_pre20090520/qt7/audiomixer.mm.orig 2009-10-10 21:56:20 +0200 ++++ phonon-4.4_pre20090520/qt7/audiomixer.mm 2009-10-10 21:56:33 +0200 +@@ -30,9 +30,9 @@ AudioMixerAudioNode::AudioMixerAudioNode + m_volume = 1.0f; + } + +-ComponentDescription AudioMixerAudioNode::getAudioNodeDescription() const ++AudioComponentDescription AudioMixerAudioNode::getAudioNodeDescription() const + { +- ComponentDescription description; ++ AudioComponentDescription description; + description.componentType = kAudioUnitType_Mixer; + description.componentSubType = kAudioUnitSubType_StereoMixer; + description.componentManufacturer = kAudioUnitManufacturer_Apple; +--- phonon-4.4_pre20090520/qt7/audionode.h.orig 2009-10-10 20:39:39 +0200 ++++ phonon-4.4_pre20090520/qt7/audionode.h 2009-10-10 20:40:01 +0200 +@@ -73,7 +73,7 @@ namespace QT7 + + // Only the following methods needs to + // be overidden by only_one-audio-unit nodes: +- virtual ComponentDescription getAudioNodeDescription() const; ++ virtual AudioComponentDescription getAudioNodeDescription() const; + virtual void initializeAudioUnit(); + + private: +--- phonon-4.4_pre20090520/qt7/audionode.mm.orig 2009-10-10 20:35:51 +0200 ++++ phonon-4.4_pre20090520/qt7/audionode.mm 2009-10-10 22:02:27 +0200 +@@ -63,17 +63,20 @@ void AudioNode::createAndConnectAUNodes( + if (m_auNode) + return; + +- ComponentDescription description = getAudioNodeDescription(); ++ AudioComponentDescription description = getAudioNodeDescription(); + DEBUG_AUDIO_GRAPH("AudioNode" << int(this) << "creates AUNode" + << QString(!FindNextComponent(0, &description) ? "ERROR: COMPONENT NOT FOUND!" : "OK!")) + + OSStatus err = noErr; ++#if 0 + #if MAC_OS_X_VERSION_MAX_ALLOWED >= MAC_OS_X_VERSION_10_5 + if (QSysInfo::MacintoshVersion >= QSysInfo::MV_10_5) + err = AUGraphAddNode(m_audioGraph->audioGraphRef(), &description, &m_auNode); + else + #endif + err = AUGraphNewNode(m_audioGraph->audioGraphRef(), &description, 0, 0, &m_auNode); ++#endif ++ err = AUGraphAddNode(m_audioGraph->audioGraphRef(), &description, &m_auNode); + + BACKEND_ASSERT2(err != kAUGraphErr_OutputNodeErr, "A MediaObject can only be connected to one audio output device.", FATAL_ERROR) + BACKEND_ASSERT2(err == noErr, "Could not create new AUNode.", FATAL_ERROR) +@@ -100,10 +103,10 @@ void AudioNode::createAudioUnits() + initializeAudioUnit(); + } + +-ComponentDescription AudioNode::getAudioNodeDescription() const ++AudioComponentDescription AudioNode::getAudioNodeDescription() const + { + // Override if needed. +- ComponentDescription cd; ++ AudioComponentDescription cd; + Q_UNUSED(cd); + return cd; + } +--- phonon-4.4_pre20090520/qt7/audiooutput.h.orig 2009-10-10 20:40:32 +0200 ++++ phonon-4.4_pre20090520/qt7/audiooutput.h 2009-10-10 20:40:48 +0200 +@@ -41,7 +41,7 @@ namespace QT7 + float volume(); + + protected: +- ComponentDescription getAudioNodeDescription() const; ++ AudioComponentDescription getAudioNodeDescription() const; + void initializeAudioUnit(); + + signals: +--- phonon-4.4_pre20090520/qt7/audiooutput.mm.orig 2009-10-10 20:40:54 +0200 ++++ phonon-4.4_pre20090520/qt7/audiooutput.mm 2009-10-10 20:41:11 +0200 +@@ -16,6 +16,7 @@ + */ + + #include "audiooutput.h" ++#include "audiooutput_p.h" + #include "audiograph.h" + #include "audiodevice.h" + #include "mediaobject.h" +@@ -34,9 +34,9 @@ AudioOutputAudioPart::AudioOutputAudioPa + m_volume = 1; + } + +-ComponentDescription AudioOutputAudioPart::getAudioNodeDescription() const ++AudioComponentDescription AudioOutputAudioPart::getAudioNodeDescription() const + { +- ComponentDescription description; ++ AudioComponentDescription description; + description.componentType = kAudioUnitType_Output; + description.componentSubType = kAudioUnitSubType_DefaultOutput; + description.componentManufacturer = kAudioUnitManufacturer_Apple; +--- phonon-4.4_pre20090520/qt7/audiosplitter.h.orig 2009-10-10 20:41:44 +0200 ++++ phonon-4.4_pre20090520/qt7/audiosplitter.h 2009-10-10 20:41:53 +0200 +@@ -33,7 +33,7 @@ namespace QT7 + { + public: + AudioNodeSplitter(); +- ComponentDescription getAudioNodeDescription() const; ++ AudioComponentDescription getAudioNodeDescription() const; + }; + + class AudioSplitter : public MediaNode +--- phonon-4.4_pre20090520/qt7/audiosplitter.mm.orig 2009-10-10 20:42:02 +0200 ++++ phonon-4.4_pre20090520/qt7/audiosplitter.mm 2009-10-10 20:42:10 +0200 +@@ -28,9 +28,9 @@ AudioNodeSplitter::AudioNodeSplitter() : + { + } + +-ComponentDescription AudioNodeSplitter::getAudioNodeDescription() const ++AudioComponentDescription AudioNodeSplitter::getAudioNodeDescription() const + { +- ComponentDescription description; ++ AudioComponentDescription description; + description.componentType = kAudioUnitType_FormatConverter; + description.componentSubType = kAudioUnitSubType_Splitter; + description.componentManufacturer = kAudioUnitManufacturer_Apple; +--- phonon-4.4_pre20090520/qt7/quicktimeaudioplayer.h.orig 2009-10-10 21:53:20 +0200 ++++ phonon-4.4_pre20090520/qt7/quicktimeaudioplayer.h 2009-10-10 21:53:30 +0200 +@@ -66,7 +66,7 @@ namespace QT7 + QString currentTimeString(); + QuickTimeVideoPlayer *videoPlayer(); + +- ComponentDescription getAudioNodeDescription() const; ++ AudioComponentDescription getAudioNodeDescription() const; + void initializeAudioUnit(); + bool fillInStreamSpecification(AudioConnection *connection, ConnectionSide side); + void mediaNodeEvent(const MediaNodeEvent *event); +--- phonon-4.4_pre20090520/qt7/quicktimeaudioplayer.mm.orig 2009-10-10 21:53:42 +0200 ++++ phonon-4.4_pre20090520/qt7/quicktimeaudioplayer.mm 2009-10-10 21:55:18 +0200 +@@ -266,13 +266,13 @@ bool QuickTimeAudioPlayer::hasAudio() + bool QuickTimeAudioPlayer::soundPlayerIsAwailable() + { + QuickTimeAudioPlayer player; +- ComponentDescription d = player.getAudioNodeDescription(); +- return FindNextComponent(0, &d); ++ AudioComponentDescription d = player.getAudioNodeDescription(); ++ return AudioComponentFindNext(0, &d); + } + +-ComponentDescription QuickTimeAudioPlayer::getAudioNodeDescription() const ++AudioComponentDescription QuickTimeAudioPlayer::getAudioNodeDescription() const + { +- ComponentDescription description; ++ AudioComponentDescription description; + description.componentType = kAudioUnitType_Generator; + description.componentSubType = kAudioUnitSubType_ScheduledSoundPlayer; + description.componentManufacturer = kAudioUnitManufacturer_Apple; diff --git a/media-sound/phonon/phonon-9999.ebuild b/media-sound/phonon/phonon-9999.ebuild index 2f081470843..eea9f1279f6 100644 --- a/media-sound/phonon/phonon-9999.ebuild +++ b/media-sound/phonon/phonon-9999.ebuild @@ -3,6 +3,7 @@ # $Header: $ EAPI="2" + inherit cmake-utils subversion DESCRIPTION="KDE multimedia API" @@ -12,15 +13,15 @@ ESVN_REPO_URI="svn://anonsvn.kde.org/home/kde/trunk/kdesupport/phonon" LICENSE="LGPL-2.1" SLOT="0" KEYWORDS="" -IUSE="alsa debug gstreamer pulseaudio +xcb +xine" +IUSE="alsa aqua debug gstreamer pulseaudio +xcb +xine" RDEPEND=" !kde-base/phonon-xine !x11-libs/qt-phonon:4 - >=x11-libs/qt-test-4.4.0:4 - >=x11-libs/qt-dbus-4.4.0:4 - >=x11-libs/qt-gui-4.4.0:4 - >=x11-libs/qt-opengl-4.4.0:4 + >=x11-libs/qt-test-4.4.0:4[aqua=] + >=x11-libs/qt-dbus-4.4.0:4[aqua=] + >=x11-libs/qt-gui-4.4.0:4[aqua=] + >=x11-libs/qt-opengl-4.4.0:4[aqua=] gstreamer? ( media-libs/gstreamer media-libs/gst-plugins-base @@ -40,14 +41,31 @@ DEPEND="${RDEPEND} " pkg_setup() { - if use !xine && use !gstreamer; then + if use !xine && use !gstreamer && use !aqua; then die "you must at least select one backend for phonon" fi + + if use xine && use aqua; then + die "XINE backend needs X11 which is not available for USE=aqua" + fi +} + +src_prepare() { + # Fix the qt7 backend for MacOS 10.6. + [[ ${CHOST} == *-darwin10 ]] && epatch "${FILESDIR}"/${PN}-4.4-qt7.patch + + # On MacOS we additionally want the gstreamer plugin. + if use aqua && use gstreamer; then + sed -e "/add_subdirectory(qt7)/a add_subdirectory(gstreamer)" \ + -i CMakeLists.txt \ + || die "failed to enable GStreamer backend" + fi } src_configure() { mycmakeargs=( $(cmake-utils_use_with alsa) + $(cmake-utils_use_build aqua PHONON_QT7) $(cmake-utils_use_with gstreamer GStreamer) $(cmake-utils_use_with gstreamer GStreamerPlugins) $(cmake-utils_use_with pulseaudio PulseAudio) @@ -58,3 +76,32 @@ src_configure() { cmake-utils_src_configure } + +src_install() { + cmake-utils_src_install + + if use aqua; then + local MY_PV=4.4.0 + + install_name_tool \ + -id "${EPREFIX}/usr/lib/libphonon.${MY_PV::1}.dylib" \ + "${ED}/usr/lib/libphonon.${MY_PV}.dylib" \ + || die "failed to fix libphonon.${MY_PV}.dylib" + + install_name_tool \ + -id "${EPREFIX}/usr/lib/libphononexperimental.${MY_PV::1}.dylib" \ + -change "libphonon.${MY_PV::1}.dylib" \ + "${EPREFIX}/usr/lib/libphononexperimental.${MY_PV::1}.dylib" \ + "${ED}/usr/lib/libphononexperimental.${MY_PV}.dylib" \ + || die "failed to fix libphononexperimental.${MY_PV}.dylib" + + # fake the framework for the qt-apps depending on qt-frameworks (qt-webkit) + dodir /usr/lib/qt4/phonon.framework/Versions/${MY_PV::1} + dosym ${MY_PV::1} /usr/lib/qt4/phonon.framework/Versions/Current \ + || die "failed to create symlink" + dosym ../../../../libphonon.${MY_PV::1}.dylib /usr/lib/qt4/phonon.framework/Versions/${MY_PV::1}/phonon \ + || die "failed to create symlink" + dosym Versions/${MY_PV::1}/phonon /usr/lib/qt4/phonon.framework/phonon \ + || die "failed to create symlink" + fi +} |
