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_VIDEODATAOUTPUT2_H
0024 #define PHONON_VIDEODATAOUTPUT2_H
0025 
0026 #include "export.h"
0027 #include <QObject>
0028 #include "abstractvideodataoutput.h"
0029 
0030 namespace Phonon
0031 {
0032 namespace Experimental
0033 {
0034 
0035 class VideoDataOutput2Private;
0036 
0037 /**
0038  * \short This class gives you the video data.
0039  *
0040  * This class implements a special AbstractVideoOutput that gives your
0041  * application the video data.
0042  *
0043  * You can also use the video data for further processing (e.g. encoding and
0044  * saving to a file).
0045  *
0046  * \author Matthias Kretz <kretz@kde.org>
0047  */
0048 class PHONONEXPERIMENTAL_EXPORT VideoDataOutput2 : public QObject, public AbstractVideoDataOutput
0049 {
0050     Q_OBJECT
0051     P_DECLARE_PRIVATE(VideoDataOutput2)
0052     PHONON_HEIR(VideoDataOutput2)
0053 
0054     protected:
0055         void frameReady(const VideoFrame2 &) override;
0056 
0057         void endOfMedia() override;
0058 
0059     Q_SIGNALS:
0060         /**
0061          * The signal is emitted whenever a frame should be displayed.
0062          * nowStamp is the current time, outStamp tells the users
0063          * what time the frame should be displayed with.
0064          *
0065          * The relevant frames should be fetched and displayed using frameForTime
0066          * method.
0067          */
0068         void frameReadySignal(const Phonon::Experimental::VideoFrame2 &);
0069 
0070         /**
0071          * This signal is emitted after the last frameReady signal of a
0072          * media is emitted.
0073          */
0074         void endOfMediaSignal();
0075 };
0076 
0077 } // namespace Experimental
0078 } //namespace Phonon
0079 
0080 #endif // PHONON_VIDEODATAOUTPUT2_H