1// Copyright (C) 2016 The Qt Company Ltd.
2// SPDX-License-Identifier: LicenseRef-Qt-Commercial OR LGPL-3.0-only OR GPL-2.0-only OR GPL-3.0-only
3
4#ifndef QMEDIAPLAYER_H
5#define QMEDIAPLAYER_H
6
7#include <QtCore/qobject.h>
8#include <QtCore/qurl.h>
9#include <QtMultimedia/qtmultimediaglobal.h>
10#include <QtMultimedia/qtaudio.h>
11
12QT_BEGIN_NAMESPACE
13
14class QVideoSink;
15class QAudioOutput;
16class QAudioDevice;
17class QMediaMetaData;
18class QMediaTimeRange;
19class QAudioBufferOutput;
20
21class QMediaPlayerPrivate;
22class Q_MULTIMEDIA_EXPORT QMediaPlayer : public QObject
23{
24 Q_OBJECT
25 Q_PROPERTY(QUrl source READ source WRITE setSource NOTIFY sourceChanged)
26 Q_PROPERTY(qint64 duration READ duration NOTIFY durationChanged)
27 Q_PROPERTY(qint64 position READ position WRITE setPosition NOTIFY positionChanged)
28 Q_PROPERTY(float bufferProgress READ bufferProgress NOTIFY bufferProgressChanged)
29 Q_PROPERTY(bool hasAudio READ hasAudio NOTIFY hasAudioChanged)
30 Q_PROPERTY(bool hasVideo READ hasVideo NOTIFY hasVideoChanged)
31 Q_PROPERTY(bool seekable READ isSeekable NOTIFY seekableChanged)
32 Q_PROPERTY(bool playing READ isPlaying NOTIFY playingChanged)
33 Q_PROPERTY(qreal playbackRate READ playbackRate WRITE setPlaybackRate NOTIFY playbackRateChanged)
34 Q_PROPERTY(int loops READ loops WRITE setLoops NOTIFY loopsChanged)
35 Q_PROPERTY(PlaybackState playbackState READ playbackState NOTIFY playbackStateChanged)
36 Q_PROPERTY(MediaStatus mediaStatus READ mediaStatus NOTIFY mediaStatusChanged)
37 Q_PROPERTY(QMediaMetaData metaData READ metaData NOTIFY metaDataChanged)
38 Q_PROPERTY(Error error READ error NOTIFY errorChanged)
39 Q_PROPERTY(QString errorString READ errorString NOTIFY errorChanged)
40 Q_PROPERTY(QObject *videoOutput READ videoOutput WRITE setVideoOutput NOTIFY videoOutputChanged)
41 Q_PROPERTY(QAudioOutput *audioOutput READ audioOutput WRITE setAudioOutput NOTIFY
42 audioOutputChanged)
43 Q_REVISION(6, 8)
44 Q_PROPERTY(QAudioBufferOutput *audioBufferOutput READ audioBufferOutput WRITE
45 setAudioBufferOutput NOTIFY audioBufferOutputChanged)
46 Q_PROPERTY(QList<QMediaMetaData> audioTracks READ audioTracks NOTIFY tracksChanged)
47 Q_PROPERTY(QList<QMediaMetaData> videoTracks READ videoTracks NOTIFY tracksChanged)
48 Q_PROPERTY(QList<QMediaMetaData> subtitleTracks READ subtitleTracks NOTIFY tracksChanged)
49
50 Q_PROPERTY(int activeAudioTrack READ activeAudioTrack WRITE setActiveAudioTrack NOTIFY
51 activeTracksChanged)
52 Q_PROPERTY(int activeVideoTrack READ activeVideoTrack WRITE setActiveVideoTrack NOTIFY
53 activeTracksChanged)
54 Q_PROPERTY(int activeSubtitleTrack READ activeSubtitleTrack WRITE setActiveSubtitleTrack NOTIFY
55 activeTracksChanged)
56
57public:
58 enum PlaybackState
59 {
60 StoppedState,
61 PlayingState,
62 PausedState
63 };
64 Q_ENUM(PlaybackState)
65
66 enum MediaStatus
67 {
68 NoMedia,
69 LoadingMedia,
70 LoadedMedia,
71 StalledMedia,
72 BufferingMedia,
73 BufferedMedia,
74 EndOfMedia,
75 InvalidMedia
76 };
77 Q_ENUM(MediaStatus)
78
79 enum Error
80 {
81 NoError,
82 ResourceError,
83 FormatError,
84 NetworkError,
85 AccessDeniedError
86 };
87 Q_ENUM(Error)
88
89 enum Loops
90 {
91 Infinite = -1,
92 Once = 1
93 };
94 Q_ENUM(Loops)
95
96 explicit QMediaPlayer(QObject *parent = nullptr);
97 ~QMediaPlayer();
98
99 QList<QMediaMetaData> audioTracks() const;
100 QList<QMediaMetaData> videoTracks() const;
101 QList<QMediaMetaData> subtitleTracks() const;
102
103 int activeAudioTrack() const;
104 int activeVideoTrack() const;
105 int activeSubtitleTrack() const;
106
107 void setActiveAudioTrack(int index);
108 void setActiveVideoTrack(int index);
109 void setActiveSubtitleTrack(int index);
110
111 void setAudioBufferOutput(QAudioBufferOutput *output);
112 QAudioBufferOutput *audioBufferOutput() const;
113
114 void setAudioOutput(QAudioOutput *output);
115 QAudioOutput *audioOutput() const;
116
117 void setVideoOutput(QObject *);
118 QObject *videoOutput() const;
119
120 void setVideoSink(QVideoSink *sink);
121 QVideoSink *videoSink() const;
122
123 QUrl source() const;
124 const QIODevice *sourceDevice() const;
125
126 PlaybackState playbackState() const;
127 MediaStatus mediaStatus() const;
128
129 qint64 duration() const;
130 qint64 position() const;
131
132 bool hasAudio() const;
133 bool hasVideo() const;
134
135 float bufferProgress() const;
136 QMediaTimeRange bufferedTimeRange() const;
137
138 bool isSeekable() const;
139 qreal playbackRate() const;
140
141 bool isPlaying() const;
142
143 int loops() const;
144 void setLoops(int loops);
145
146 Error error() const;
147 QString errorString() const;
148
149 bool isAvailable() const;
150 QMediaMetaData metaData() const;
151
152public Q_SLOTS:
153 void play();
154 void pause();
155 void stop();
156
157 void setPosition(qint64 position);
158
159 void setPlaybackRate(qreal rate);
160
161 void setSource(const QUrl &source);
162 void setSourceDevice(QIODevice *device, const QUrl &sourceUrl = QUrl());
163
164Q_SIGNALS:
165 void sourceChanged(const QUrl &media);
166 void playbackStateChanged(QMediaPlayer::PlaybackState newState);
167 void mediaStatusChanged(QMediaPlayer::MediaStatus status);
168
169 void durationChanged(qint64 duration);
170 void positionChanged(qint64 position);
171
172 void hasAudioChanged(bool available);
173 void hasVideoChanged(bool videoAvailable);
174
175 void bufferProgressChanged(float progress);
176
177 void seekableChanged(bool seekable);
178 void playingChanged(bool playing);
179 void playbackRateChanged(qreal rate);
180 void loopsChanged();
181
182 void metaDataChanged();
183 void videoOutputChanged();
184 void audioOutputChanged();
185 Q_REVISION(6, 8) void audioBufferOutputChanged();
186
187 void tracksChanged();
188 void activeTracksChanged();
189
190 void errorChanged();
191 void errorOccurred(QMediaPlayer::Error error, const QString &errorString);
192
193private:
194 Q_DISABLE_COPY(QMediaPlayer)
195 Q_DECLARE_PRIVATE(QMediaPlayer)
196 friend class QPlatformMediaPlayer;
197};
198
199QT_END_NAMESPACE
200
201#endif // QMEDIAPLAYER_H
202

Provided by KDAB

Privacy Policy
Learn to use CMake with our Intro Training
Find out more

source code of qtmultimedia/src/multimedia/playback/qmediaplayer.h