summaryrefslogtreecommitdiffstats
path: root/src/3rdparty/phonon/phonon/mediasource.h
diff options
context:
space:
mode:
Diffstat (limited to 'src/3rdparty/phonon/phonon/mediasource.h')
-rw-r--r--src/3rdparty/phonon/phonon/mediasource.h279
1 files changed, 279 insertions, 0 deletions
diff --git a/src/3rdparty/phonon/phonon/mediasource.h b/src/3rdparty/phonon/phonon/mediasource.h
new file mode 100644
index 0000000000..da010d9e96
--- /dev/null
+++ b/src/3rdparty/phonon/phonon/mediasource.h
@@ -0,0 +1,279 @@
+/* This file is part of the KDE project
+ Copyright (C) 2007 Matthias Kretz <kretz@kde.org>
+
+ 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 the Free Software Foundation; either
+ version 2.1 of the License, or (at your option) version 3, or any
+ later version accepted by the membership of KDE e.V. (or its
+ successor approved by the membership of KDE e.V.), Trolltech ASA
+ (or its successors, if any) and the KDE Free Qt Foundation, which shall
+ act as a proxy defined in Section 6 of version 3 of the license.
+
+ This library is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ Lesser General Public License for more details.
+
+ 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/>.
+
+*/
+
+#ifndef PHONON_MEDIASOURCE_H
+#define PHONON_MEDIASOURCE_H
+
+#include "phonon_export.h"
+#include "phononnamespace.h"
+#include "objectdescription.h"
+#include <QtCore/QSharedData>
+#include <QtCore/QString>
+
+QT_BEGIN_HEADER
+QT_BEGIN_NAMESPACE
+
+class QUrl;
+class QIODevice;
+
+namespace Phonon
+{
+
+class MediaSourcePrivate;
+class AbstractMediaStream;
+
+/** \class MediaSource mediasource.h Phonon/MediaSource
+ * Note that all constructors of this class are implicit, so that you can simply write
+ * \code
+ * MediaObject m;
+ * QString fileName("/home/foo/bar.ogg");
+ * QUrl url("http://www.example.com/stream.mp3");
+ * QBuffer *someBuffer;
+ * m.setCurrentSource(fileName);
+ * m.setCurrentSource(url);
+ * m.setCurrentSource(someBuffer);
+ * m.setCurrentSource(Phonon::Cd);
+ * \endcode
+ *
+ * \ingroup Playback
+ * \ingroup Recording
+ * \author Matthias Kretz <kretz@kde.org>
+ */
+class PHONON_EXPORT MediaSource
+{
+ friend class StreamInterface;
+ public:
+ /**
+ * Identifies the type of media described by the MediaSource object.
+ *
+ * \see MediaSource::type()
+ */
+ enum Type {
+ /**
+ * The MediaSource object does not describe any valid source.
+ */
+ Invalid = -1,
+ /**
+ * The MediaSource object describes a local file.
+ */
+ LocalFile,
+ /**
+ * The MediaSource object describes a URL, which can be both a local file and a file on
+ * the network.
+ */
+ Url,
+ /**
+ * The MediaSource object describes a disc.
+ */
+ Disc,
+ /**
+ * The MediaSource object describes a data stream.
+ *
+ * This is also the type used for QIODevices.
+ *
+ * \see AbstractMediaStream
+ */
+ Stream,
+ /**
+ * An empty MediaSource.
+ *
+ * It can be used to unload the current media from a MediaObject.
+ *
+ * \see MediaSource()
+ */
+ Empty
+/* post 4.0:
+ / **
+ * Links multiple MediaSource objects together.
+ * /
+ Link
+*/
+ };
+
+ /**
+ * Creates an empty MediaSource.
+ *
+ * An empty MediaSource is considered valid and can be set on a MediaObject to unload its
+ * current media.
+ *
+ * \see Empty
+ */
+ MediaSource();
+
+ /**
+ * Creates a MediaSource object for a local file or a Qt resource.
+ *
+ * \param fileName file name of a local media file or a Qt resource that was compiled in.
+ */
+ MediaSource(const QString &fileName); //krazy:exclude=explicit
+
+ /**
+ * Creates a MediaSource object for a URL.
+ *
+ * \param url URL to a media file or stream.
+ */
+ MediaSource(const QUrl &url); //krazy:exclude=explicit
+
+ /**
+ * Creates a MediaSource object for discs.
+ *
+ * \param discType See \ref DiscType
+ * \param deviceName A platform dependent device name. This can be useful if the computer
+ * has more than one CD drive. It is recommended to use Solid to retrieve the device name in
+ * a portable way.
+ */
+ MediaSource(Phonon::DiscType discType, const QString &deviceName = QString()); //krazy:exclude=explicit
+
+#ifndef QT_NO_PHONON_ABSTRACTMEDIASTREAM
+ /**
+ * Creates a MediaSource object for a data stream.
+ *
+ * Your application can provide the media data by subclassing AbstractMediaStream and
+ * passing a pointer to that object. %Phonon will never delete the \p stream.
+ *
+ * \param stream The AbstractMediaStream subclass to provide the media data.
+ *
+ * \see setAutoDelete
+ */
+ MediaSource(AbstractMediaStream *stream); //krazy:exclude=explicit
+
+ /**
+ * Creates a MediaSource object for a QIODevice.
+ *
+ * This constructor can be very handy in the combination of QByteArray and QBuffer.
+ *
+ * \param ioDevice An arbitrary readable QIODevice subclass. If the device is not opened
+ * MediaSource will open it as QIODevice::ReadOnly. Sequential I/O devices are possible,
+ * too. For those MediaObject::isSeekable() will have to return false obviously.
+ *
+ * \see setAutoDelete
+ */
+ MediaSource(QIODevice *ioDevice); //krazy:exclude=explicit
+#endif
+
+ /**
+ * Creates a MediaSource object for capture devices.
+ */
+ //MediaSource(const AudioCaptureDevice &, const VideoCaptureDevice &);
+
+ /**
+ * Destroys the MediaSource object.
+ */
+ ~MediaSource();
+
+ /**
+ * Constructs a copy of \p rhs.
+ *
+ * This constructor is fast thanks to explicit sharing.
+ */
+ MediaSource(const MediaSource &rhs);
+
+ /**
+ * Assigns \p rhs to this MediaSource and returns a reference to this MediaSource.
+ *
+ * This operation is fast thanks to explicit sharing.
+ */
+ MediaSource &operator=(const MediaSource &rhs);
+
+ /**
+ * Returns \p true if this MediaSource is equal to \p rhs; otherwise returns \p false.
+ */
+ bool operator==(const MediaSource &rhs) const;
+
+ /**
+ * Tell the MediaSource to take ownership of the AbstractMediaStream or QIODevice that was
+ * passed in the constructor.
+ *
+ * The default setting is \p false, for safety. If you turn it on, you should only access
+ * the AbstractMediaStream/QIODevice object as long as you yourself keep a MediaSource
+ * object around. As long as you keep the MediaSource object wrapping the stream/device
+ * the object will not get deleted.
+ *
+ * \see autoDelete
+ */
+ void setAutoDelete(bool enable);
+
+ /**
+ * Returns the setting of the auto-delete option. The default is \p false.
+ *
+ * \see setAutoDelete
+ */
+ bool autoDelete() const;
+
+ /**
+ * Returns the type of the MediaSource (depends on the constructor that was used).
+ *
+ * \see Type
+ */
+ Type type() const;
+
+ /**
+ * Returns the file name of the MediaSource if type() == LocalFile; otherwise returns
+ * QString().
+ */
+ QString fileName() const;
+
+ /**
+ * Returns the url of the MediaSource if type() == URL or type() == LocalFile; otherwise
+ * returns QUrl().
+ */
+ QUrl url() const;
+
+ /**
+ * Returns the disc type of the MediaSource if type() == Disc; otherwise returns \ref
+ * NoDisc.
+ */
+ Phonon::DiscType discType() const;
+
+ /**
+ * Returns the device name of the MediaSource if type() == Disc; otherwise returns
+ * QString().
+ */
+ QString deviceName() const;
+
+#ifndef QT_NO_PHONON_ABSTRACTMEDIASTREAM
+ /**
+ * Returns the media stream of the MediaSource if type() == Stream; otherwise returns 0.
+ * QIODevices are handled as streams, too.
+ */
+ AbstractMediaStream *stream() const;
+#endif
+
+ //AudioCaptureDevice audioCaptureDevice() const;
+ //VideoCaptureDevice videoCaptureDevice() const;
+
+/* post 4.0:
+ MediaSource(const QList<MediaSource> &mediaList);
+ QList<MediaSource> substreams() const;
+*/
+
+ protected:
+ QExplicitlySharedDataPointer<MediaSourcePrivate> d;
+ MediaSource(MediaSourcePrivate &);
+};
+
+} // namespace Phonon
+
+QT_END_NAMESPACE
+QT_END_HEADER
+
+#endif // PHONON_MEDIASOURCE_H