File indexing completed on 2024-05-05 04:44:41

0001 /*  This file is part of the KDE project
0002     Copyright (C) 2008 Matthias Kretz <kretz@kde.org>
0003 
0004     This library is free software; you can redistribute it and/or
0005     modify it under the terms of the GNU Lesser General Public
0006     License as published by the Free Software Foundation; either
0007     version 2.1 of the License, or (at your option) version 3, or any
0008     later version accepted by the membership of KDE e.V. (or its
0009     successor approved by the membership of KDE e.V.), Nokia Corporation 
0010     (or its successors, if any) and the KDE Free Qt Foundation, which shall
0011     act as a proxy defined in Section 6 of version 3 of the license.
0012 
0013     This library is distributed in the hope that it will be useful,
0014     but WITHOUT ANY WARRANTY; without even the implied warranty of
0015     MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
0016     Lesser General Public License for more details.
0017 
0018     You should have received a copy of the GNU Lesser General Public 
0019     License along with this library.  If not, see <http://www.gnu.org/licenses/>.
0020 
0021 */
0022 
0023 #ifndef PHONON_EXPERIMENTAL_MEDIASOURCE_H
0024 #define PHONON_EXPERIMENTAL_MEDIASOURCE_H
0025 
0026 #include "../mediasource.h"
0027 #include "export.h"
0028 #include "objectdescription.h"
0029 
0030 namespace Phonon
0031 {
0032 namespace Experimental
0033 {
0034 
0035 class PHONONEXPERIMENTAL_EXPORT MediaSource : public Phonon::MediaSource
0036 {
0037     public:
0038         enum Type {
0039             Link = 0xffff,
0040             VideoCaptureDeviceSource
0041         };
0042 
0043         /**
0044          * Constructs a copy of \p rhs.
0045          *
0046          * This constructor is fast thanks to explicit sharing.
0047          */
0048         MediaSource(const MediaSource &rhs);
0049         
0050         MediaSource(const QList<Phonon::MediaSource> &mediaList);
0051         
0052 #ifndef PHONON_NO_VIDEOCAPTURE
0053         MediaSource(const VideoCaptureDevice &videoDevice);
0054 #endif // PHONON_NO_VIDEOCAPTURE
0055 
0056 
0057         /**
0058          * Assigns \p rhs to this MediaSource and returns a reference to this MediaSource.
0059          *
0060          * This operation is fast thanks to explicit sharing.
0061          */
0062         MediaSource &operator=(const MediaSource &rhs);
0063 
0064         /**
0065          * Returns \p true if this MediaSource is equal to \p rhs; otherwise returns \p false.
0066          */
0067         bool operator==(const MediaSource &rhs) const;
0068 
0069 #ifndef PHONON_NO_VIDEOCAPTURE
0070         VideoCaptureDevice videoCaptureDevice() const;
0071 #endif // PHONON_NO_VIDEOCAPTURE
0072 
0073         QList<Phonon::MediaSource> substreams() const;
0074 };
0075 
0076 } // namespace Experimental
0077 } // namespace Phonon
0078 
0079 #endif // PHONON_EXPERIMENTAL_MEDIASOURCE_H