diff options
author | Patrick J Volkerding <volkerdi@slackware.com> | 2010-05-19 08:58:23 +0000 |
---|---|---|
committer | Eric Hameleers <alien@slackware.com> | 2018-05-31 22:43:05 +0200 |
commit | b76270bf9e6dd375e495fec92140a79a79415d27 (patch) | |
tree | 3dbed78b2279bf9f14207a16dc634b90995cbd40 /source/l/phonon | |
parent | 5a12e7c134274dba706667107d10d231517d3e05 (diff) | |
download | current-b76270bf9e6dd375e495fec92140a79a79415d27.tar.gz |
Slackware 13.1slackware-13.1
Wed May 19 08:58:23 UTC 2010
Slackware 13.1 x86_64 stable is released!
Lots of thanks are due -- see the RELEASE_NOTES and the rest of the
ChangeLog for credits. The ISOs are on their way to replication,
a 6 CD-ROM 32-bit set and a dual-sided 32-bit/64-bit x86/x86_64 DVD.
We are taking pre-orders now at store.slackware.com, and offering
a discount if you sign up for a subscription. Consider picking up
a copy to help support the project. Thanks again to the Slackware
community for testing, contributing, and generally holding us to a
high level of quality. :-)
Enjoy!
Diffstat (limited to 'source/l/phonon')
-rwxr-xr-x | source/l/phonon/phonon.SlackBuild | 47 | ||||
-rw-r--r-- | source/l/phonon/phonon.gstreamer.qt-4.5.1.diff | 431 | ||||
-rw-r--r-- | source/l/phonon/slack-desc | 6 |
3 files changed, 468 insertions, 16 deletions
diff --git a/source/l/phonon/phonon.SlackBuild b/source/l/phonon/phonon.SlackBuild index 9afb8400..74e4518c 100755 --- a/source/l/phonon/phonon.SlackBuild +++ b/source/l/phonon/phonon.SlackBuild @@ -1,7 +1,7 @@ #!/bin/sh # Copyright 2008 Robby Workman, Northport, Alabama, USA -# Copyright 2008, 2009 Patrick J. Volkerding, Sebeka, MN, USA +# Copyright 2008, 2009, 2010 Patrick J. Volkerding, Sebeka, MN, USA # All rights reserved. # # Redistribution and use of this script, with or without modification, is @@ -22,12 +22,21 @@ # ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. -VERSION=4.3.1 -ARCH=${ARCH:-x86_64} +VERSION=4.4.1 +SRCVER=4.4.1 BUILD=${BUILD:-1} - NUMJOBS=${NUMJOBS:--j6} +# Automatically determine the architecture we're building on: +if [ -z "$ARCH" ]; then + case "$( uname -m )" in + i?86) export ARCH=i486 ;; + arm*) export ARCH=arm ;; + # Unless $ARCH is already set, use uname -m for all other archs: + *) export ARCH=$( uname -m ) ;; + esac +fi + CWD=$(pwd) TMP=${TMP:-/tmp} PKG=$TMP/package-phonon @@ -41,13 +50,20 @@ elif [ "$ARCH" = "i686" ]; then elif [ "$ARCH" = "x86_64" ]; then SLKCFLAGS="-O2 -fPIC" LIBDIRSUFFIX="64" +else + SLKCFLAGS="-O2" + LIBDIRSUFFIX="" fi rm -rf $PKG mkdir -p $TMP $PKG cd $TMP +rm -r phonon-$SRCVER tar xvf $CWD/phonon-$VERSION.tar.bz2 || exit 1 -cd phonon-$VERSION || exit 1 +cd phonon-$SRCVER || exit 1 + +#zcat $CWD/phonon.gstreamer.qt-4.5.1.diff.gz | patch -p1 || exit 1 + chown -R root:root . find . \ \( -perm 777 -o -perm 775 -o -perm 711 -o -perm 555 -o -perm 511 \) \ @@ -55,16 +71,21 @@ find . \ \( -perm 666 -o -perm 664 -o -perm 600 -o -perm 444 -o -perm 440 -o -perm 400 \) \ -exec chmod 644 {} \; -cmake \ - -DCMAKE_BUILD_TYPE=Release \ - -DCMAKE_C_FLAGS:STRING="$SLKCFLAGS" \ - -DCMAKE_CXX_FLAGS:STRING="$SLKCFLAGS" \ - -DCMAKE_INSTALL_PREFIX=/usr \ - -DMAN_INSTALL_DIR=/usr/man \ - -DLIB_SUFFIX=${LIBDIRSUFFIX} \ - . +mkdir build +cd build + cmake \ + -DCMAKE_C_FLAGS:STRING="$SLKCFLAGS" \ + -DCMAKE_CXX_FLAGS:STRING="$SLKCFLAGS" \ + -DCMAKE_INSTALL_PREFIX=/usr \ + -DMAN_INSTALL_DIR=/usr/man \ + -DLIB_SUFFIX=${LIBDIRSUFFIX} \ + .. make $NUMJOBS || make || exit 1 make install DESTDIR=$PKG || exit 1 +cd - + +# PyQT won't find the header files otherwise: +sed -i -e 's#{includedir}$#& -I\${includedir}/phonon#' $PKG/usr/lib${LIBDIRSUFFIX}/pkgconfig/phonon.pc # Compress and link manpages, if any: if [ -d $PKG/usr/man ]; then diff --git a/source/l/phonon/phonon.gstreamer.qt-4.5.1.diff b/source/l/phonon/phonon.gstreamer.qt-4.5.1.diff new file mode 100644 index 00000000..d55d2f88 --- /dev/null +++ b/source/l/phonon/phonon.gstreamer.qt-4.5.1.diff @@ -0,0 +1,431 @@ +diff -u -r --new-file phonon-4.3.1.orig/gstreamer/CMakeLists.txt phonon-4.3.1/gstreamer/CMakeLists.txt +--- phonon-4.3.1.orig/gstreamer/CMakeLists.txt 2009-02-27 04:15:42.000000000 -0600 ++++ phonon-4.3.1/gstreamer/CMakeLists.txt 2009-10-19 13:07:39.000000000 -0500 +@@ -1,4 +1,4 @@ +-# Copyright (C) 2009 Nokia Corporation. All rights reserved. ++# Copyright (C) 2009 Nokia Corporation and/or its subsidiary(-ies). + # Copyright (C) 2008 Matthias Kretz <kretz@kde.org> + # + # This library is free software: you can redistribute it and/or modify +@@ -19,7 +19,6 @@ + if (BUILD_PHONON_GSTREAMER) + include_directories(${GSTREAMER_INCLUDE_DIR} ${GLIB2_INCLUDE_DIR} + ${LIBXML2_INCLUDE_DIR}) +- add_definitions(-DPHONON_BACKEND_VERSION_4_2) + + set(phonon_gstreamer_SRCS + audiooutput.cpp +@@ -46,17 +45,17 @@ + ) + + find_package(Alsa) +- macro_ensure_version("0.10.22" ${GSTREAMER_VERSION} GSTREAMER_HAS_NONBLOCKING_ALSASINK) +- if(ALSA_FOUND AND NOT GSTREAMER_HAS_NONBLOCKING_ALSASINK) ++ if(ALSA_FOUND) + add_definitions(-DUSE_ALSASINK2) + include_directories(${ALSA_INCLUDES}) + set(phonon_gstreamer_SRCS + ${phonon_gstreamer_SRCS} + alsasink2.c + ) +- endif(ALSA_FOUND AND NOT GSTREAMER_HAS_NONBLOCKING_ALSASINK) ++ endif(ALSA_FOUND) + +- automoc4_add_library(phonon_gstreamer SHARED ${phonon_gstreamer_SRCS}) ++ automoc4(phonon_gstreamer phonon_gstreamer_SRCS) ++ add_library(phonon_gstreamer SHARED ${phonon_gstreamer_SRCS}) + set_target_properties(phonon_gstreamer PROPERTIES PREFIX "") + target_link_libraries(phonon_gstreamer + ${QT_QTOPENGL_LIBRARY} +diff -u -r --new-file phonon-4.3.1.orig/gstreamer/ConfigureChecks.cmake phonon-4.3.1/gstreamer/ConfigureChecks.cmake +--- phonon-4.3.1.orig/gstreamer/ConfigureChecks.cmake 2009-02-27 04:15:42.000000000 -0600 ++++ phonon-4.3.1/gstreamer/ConfigureChecks.cmake 2009-10-19 13:07:39.000000000 -0500 +@@ -1,4 +1,4 @@ +-# Copyright (C) 2009 Nokia Corporation. All rights reserved. ++# Copyright (C) 2009 Nokia Corporation and/or its subsidiary(-ies). + # + # This library is free software: you can redistribute it and/or modify + # it under the terms of the GNU Lesser General Public License as published by +@@ -17,7 +17,6 @@ + + macro_optional_find_package(GStreamerPlugins) + macro_log_feature(GSTREAMER_PLUGIN_VIDEO_LIBRARIES "GStreamer video plugin" "The gstreamer video plugin (part of gstreamer-plugins-base 0.10) is required for the multimedia gstreamer backend" "http://gstreamer.freedesktop.org/modules/" FALSE "0.10") +-macro_log_feature(GSTREAMER_PLUGIN_AUDIO_LIBRARIES "GStreamer audio plugin" "The gstreamer audio plugin (part of gstreamer-plugins-base 0.10) is required for the multimedia gstreamer backend" "http://gstreamer.freedesktop.org/modules/" FALSE "0.10") + + macro_optional_find_package(GLIB2) + macro_log_feature(GLIB2_FOUND "GLib2" "GLib 2 is required to compile the gstreamer backend for Phonon" "http://www.gtk.org/download/" FALSE) +@@ -31,8 +30,8 @@ + macro_optional_find_package(OpenGL) + macro_log_feature(OPENGL_FOUND "OpenGL" "OpenGL support is required to compile the gstreamer backend for Phonon" "" FALSE) + +-if (GSTREAMER_FOUND AND GSTREAMER_PLUGIN_VIDEO_LIBRARIES AND GSTREAMER_PLUGIN_AUDIO_LIBRARIES AND GLIB2_FOUND AND GOBJECT_FOUND AND LIBXML2_FOUND AND OPENGL_FOUND) ++if (GSTREAMER_FOUND AND GSTREAMER_PLUGIN_VIDEO_LIBRARIES AND GLIB2_FOUND AND GOBJECT_FOUND AND LIBXML2_FOUND AND OPENGL_FOUND) + set(BUILD_PHONON_GSTREAMER TRUE) +-else (GSTREAMER_FOUND AND GSTREAMER_PLUGIN_VIDEO_LIBRARIES AND GSTREAMER_PLUGIN_AUDIO_LIBRARIES AND GLIB2_FOUND AND GOBJECT_FOUND AND LIBXML2_FOUND AND OPENGL_FOUND) ++else (GSTREAMER_FOUND AND GSTREAMER_PLUGIN_VIDEO_LIBRARIES AND GLIB2_FOUND AND GOBJECT_FOUND AND LIBXML2_FOUND AND OPENGL_FOUND) + set(BUILD_PHONON_GSTREAMER FALSE) +-endif (GSTREAMER_FOUND AND GSTREAMER_PLUGIN_VIDEO_LIBRARIES AND GSTREAMER_PLUGIN_AUDIO_LIBRARIES AND GLIB2_FOUND AND GOBJECT_FOUND AND LIBXML2_FOUND AND OPENGL_FOUND) ++endif (GSTREAMER_FOUND AND GSTREAMER_PLUGIN_VIDEO_LIBRARIES AND GLIB2_FOUND AND GOBJECT_FOUND AND LIBXML2_FOUND AND OPENGL_FOUND) +diff -u -r --new-file phonon-4.3.1.orig/gstreamer/audiooutput.cpp phonon-4.3.1/gstreamer/audiooutput.cpp +--- phonon-4.3.1.orig/gstreamer/audiooutput.cpp 2009-02-27 04:15:42.000000000 -0600 ++++ phonon-4.3.1/gstreamer/audiooutput.cpp 2009-10-19 13:07:39.000000000 -0500 +@@ -42,6 +42,7 @@ + static int count = 0; + m_name = "AudioOutput" + QString::number(count++); + if (m_backend->isValid()) { ++ g_set_application_name(qApp->applicationName().toUtf8()); + m_audioBin = gst_bin_new (NULL); + gst_object_ref (GST_OBJECT (m_audioBin)); + gst_object_sink (GST_OBJECT (m_audioBin)); +diff -u -r --new-file phonon-4.3.1.orig/gstreamer/mediaobject.cpp phonon-4.3.1/gstreamer/mediaobject.cpp +--- phonon-4.3.1.orig/gstreamer/mediaobject.cpp 2009-02-27 04:15:42.000000000 -0600 ++++ phonon-4.3.1/gstreamer/mediaobject.cpp 2009-10-19 13:19:20.000000000 -0500 +@@ -14,7 +14,6 @@ + You should have received a copy of the GNU Lesser General Public License + along with this library. If not, see <http://www.gnu.org/licenses/>. + */ +- + #include <cmath> + #include <gst/interfaces/propertyprobe.h> + #include "common.h" +@@ -24,7 +23,6 @@ + #include "backend.h" + #include "streamreader.h" + #include "phononsrc.h" +- + #include <QtCore> + #include <QtCore/QTimer> + #include <QtCore/QVector> +@@ -78,6 +76,9 @@ + , m_videoGraph(0) + , m_previousTickTime(-1) + , m_resetNeeded(false) ++ , m_autoplayTitles(true) ++ , m_availableTitles(0) ++ , m_currentTitle(1) + { + qRegisterMetaType<GstCaps*>("GstCaps*"); + qRegisterMetaType<State>("State"); +@@ -141,9 +142,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(); + } + } +@@ -347,11 +348,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 +359,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 +873,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 +881,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.")); +@@ -907,8 +903,13 @@ + break; + + case MediaSource::Disc: // CD tracks can be specified by setting the url in the following way uri=cdda:4 +- m_backend->logMessage("Source type Disc not currently supported", Backend::Warning, this); +- setError(tr("Could not open media source."), Phonon::NormalError); ++ { ++ QUrl cdurl(QLatin1String("cdda://")); ++ if (createPipefromURL(cdurl)) ++ m_loading = true; ++ else ++ setError(tr("Could not open media source.")); ++ } + break; + + default: +@@ -959,6 +960,19 @@ + m_hasVideo = m_videoStreamFound; + emit hasVideoChanged(m_hasVideo); + } ++ ++ m_availableTitles = 1; ++ gint64 titleCount; ++ GstFormat format = gst_format_get_by_nick("track"); ++ if (gst_element_query_duration (m_pipeline, &format, &titleCount)) { ++ int oldAvailableTitles = m_availableTitles; ++ m_availableTitles = (int)titleCount; ++ if (m_availableTitles != oldAvailableTitles) { ++ emit availableTitlesChanged(m_availableTitles); ++ m_backend->logMessage(QString("Available titles changed: %0").arg(m_availableTitles), Backend::Info, this); ++ } ++ } ++ + } + + void MediaObject::setPrefinishMark(qint32 newPrefinishMark) +@@ -1356,6 +1370,13 @@ + if (!m_seekable) + m_atEndOfStream = true; + ++ if (m_autoplayTitles && ++ m_availableTitles > 1 && ++ m_currentTitle < m_availableTitles) { ++ _iface_setCurrentTitle(m_currentTitle + 1); ++ return; ++ } ++ + if (m_nextSource.type() != MediaSource::Invalid + && m_nextSource.type() != MediaSource::Empty) { // We only emit finish when the queue is actually empty + QTimer::singleShot (qMax(0, transitionTime()), this, SLOT(beginPlay())); +@@ -1384,6 +1405,72 @@ + notify(&event); + } + ++#ifndef QT_NO_PHONON_MEDIACONTROLLER ++//interface management ++bool MediaObject::hasInterface(Interface iface) const ++{ ++ return iface == AddonInterface::TitleInterface; ++} ++ ++QVariant MediaObject::interfaceCall(Interface iface, int command, const QList<QVariant> ¶ms) ++{ ++ if (hasInterface(iface)) { ++ ++ switch (iface) ++ { ++ case TitleInterface: ++ switch (command) ++ { ++ case availableTitles: ++ return _iface_availableTitles(); ++ case title: ++ return _iface_currentTitle(); ++ case setTitle: ++ _iface_setCurrentTitle(params.first().toInt()); ++ break; ++ case autoplayTitles: ++ return m_autoplayTitles; ++ case setAutoplayTitles: ++ m_autoplayTitles = params.first().toBool(); ++ break; ++ } ++ break; ++ default: ++ break; ++ } ++ } ++ return QVariant(); ++} ++#endif ++ ++int MediaObject::_iface_availableTitles() const ++{ ++ return m_availableTitles; ++} ++ ++int MediaObject::_iface_currentTitle() const ++{ ++ return m_currentTitle; ++} ++ ++void MediaObject::_iface_setCurrentTitle(int title) ++{ ++ GstFormat trackFormat = gst_format_get_by_nick("track"); ++ m_backend->logMessage(QString("setCurrentTitle %0").arg(title), Backend::Info, this); ++ if ((title == m_currentTitle) || (title < 1) || (title > m_availableTitles)) ++ return; ++ ++ m_currentTitle = title; ++ ++ //let's seek to the beginning of the song ++ if (gst_element_seek_simple(m_pipeline, trackFormat, GST_SEEK_FLAG_FLUSH, m_currentTitle - 1)) { ++ updateTotalTime(); ++ m_atEndOfStream = false; ++ emit titleChanged(title); ++ emit totalTimeChanged(totalTime()); ++ } ++} ++ + } // ns Gstreamer + } // ns Phonon + +diff -u -r --new-file phonon-4.3.1.orig/gstreamer/mediaobject.h phonon-4.3.1/gstreamer/mediaobject.h +--- phonon-4.3.1.orig/gstreamer/mediaobject.h 2009-02-27 04:15:42.000000000 -0600 ++++ phonon-4.3.1/gstreamer/mediaobject.h 2009-10-19 13:07:39.000000000 -0500 +@@ -21,7 +21,6 @@ + #include "backend.h" + #include "common.h" + #include "medianode.h" +- + #include <phonon/mediaobjectinterface.h> + #include <phonon/addoninterface.h> + +@@ -32,7 +31,6 @@ + #include <QtCore/QDate> + #include <QtCore/QEvent> + #include <QtCore/QUrl> +- + #include <gst/gst.h> + + QT_BEGIN_NAMESPACE +@@ -50,11 +48,20 @@ + class VideoPath; + class AudioOutput; + +-class MediaObject : public QObject, public MediaObjectInterface, public AddonInterface, public MediaNode ++class MediaObject : public QObject, public MediaObjectInterface ++#ifndef QT_NO_PHONON_MEDIACONTROLLER ++ , public AddonInterface ++#endif ++ , public MediaNode + { + friend class Stream; + Q_OBJECT +- Q_INTERFACES(Phonon::MediaObjectInterface Phonon::AddonInterface Phonon::Gstreamer::MediaNode) ++ Q_INTERFACES(Phonon::MediaObjectInterface ++#ifndef QT_NO_PHONON_MEDIACONTROLLER ++ Phonon::AddonInterface ++#endif ++ Phonon::Gstreamer::MediaNode ++ ) + + public: + +@@ -93,16 +100,10 @@ + MediaSource source() const; + + // No additional interfaces currently supported +- bool hasInterface(Interface) const +- { +- return false; +- } +- +- QVariant interfaceCall(Interface, int, const QList<QVariant> &) +- { +- return QVariant(); +- } +- ++#ifndef QT_NO_PHONON_MEDIACONTROLLER ++ bool hasInterface(Interface) const; ++ QVariant interfaceCall(Interface, int, const QList<QVariant> &); ++#endif + bool isLoading() + { + return m_loading; +@@ -176,6 +177,19 @@ + QMultiMap<QString, QString> metaData(); + void setMetaData(QMultiMap<QString, QString> newData); + ++ // AddonInterface: ++ void titleChanged(int); ++ void availableTitlesChanged(int); ++ ++ // Not implemented ++ void chapterChanged(int); ++ void availableChaptersChanged(int); ++ void angleChanged(int); ++ void availableAnglesChanged(int); ++ ++ void availableSubtitlesChanged(); ++ void availableAudioChannelsChanged(); ++ + protected: + void beginLoad(); + void loadingComplete(); +@@ -185,7 +199,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: +@@ -219,6 +233,10 @@ + void updateSeekable(); + qint64 getPipelinePos() const; + ++ int _iface_availableTitles() const; ++ int _iface_currentTitle() const; ++ void _iface_setCurrentTitle(int title); ++ + bool m_resumeState; + State m_oldState; + quint64 m_oldPos; +@@ -264,6 +282,9 @@ + bool m_resetNeeded; + QStringList m_missingCodecs; + QMultiMap<QString, QString> m_metaData; ++ bool m_autoplayTitles; ++ int m_availableTitles; ++ int m_currentTitle; + }; + } + } //namespace Phonon::Gstreamer +diff -u -r --new-file phonon-4.3.1.orig/gstreamer/qwidgetvideosink.h phonon-4.3.1/gstreamer/qwidgetvideosink.h +--- phonon-4.3.1.orig/gstreamer/qwidgetvideosink.h 2009-02-27 04:15:42.000000000 -0600 ++++ phonon-4.3.1/gstreamer/qwidgetvideosink.h 2009-10-19 13:07:39.000000000 -0500 +@@ -19,7 +19,6 @@ + #define Phonon_GSTREAMER_VIDEOSINK_H + + #include "common.h" +-#include "qwidgetvideosink.h" + + #include <QtCore/QByteArray> + #include <QtCore/QEvent> +diff -u -r --new-file phonon-4.3.1.orig/gstreamer/videowidget.h phonon-4.3.1/gstreamer/videowidget.h +--- phonon-4.3.1.orig/gstreamer/videowidget.h 2009-02-27 04:15:42.000000000 -0600 ++++ phonon-4.3.1/gstreamer/videowidget.h 2009-10-19 13:07:39.000000000 -0500 +@@ -25,7 +25,6 @@ + #include "common.h" + #include "medianode.h" + #include "abstractrenderer.h" +-#include "videowidget.h" + + #include <gst/gst.h> + +diff -u -r --new-file phonon-4.3.1.orig/gstreamer/x11renderer.cpp phonon-4.3.1/gstreamer/x11renderer.cpp +--- phonon-4.3.1.orig/gstreamer/x11renderer.cpp 2009-02-27 04:15:42.000000000 -0600 ++++ phonon-4.3.1/gstreamer/x11renderer.cpp 2009-10-19 13:07:39.000000000 -0500 +@@ -138,7 +138,6 @@ + void X11Renderer::movieSizeChanged(const QSize &movieSize) + { + Q_UNUSED(movieSize); +- + if (m_renderWidget) { + m_renderWidget->setGeometry(m_videoWidget->calculateDrawFrameRect()); + } diff --git a/source/l/phonon/slack-desc b/source/l/phonon/slack-desc index 9602f73b..86e93b3e 100644 --- a/source/l/phonon/slack-desc +++ b/source/l/phonon/slack-desc @@ -8,9 +8,9 @@ |-----handy-ruler------------------------------------------------------| phonon: phonon (multimedia framework for KDE4) phonon: -phonon: Phonon is the multimedia framework for KDE4. -phonon: -phonon: +phonon: Phonon is the multimedia framework for KDE4. This package contains +phonon: the Phonon library, the KDE Phonon xine and gstreamer backends, and +phonon: support files for using Phonon with KDE. phonon: phonon: phonon: |