summaryrefslogtreecommitdiffstats
path: root/src/multimedia/playback/qmediaplayer.h
diff options
context:
space:
mode:
Diffstat (limited to 'src/multimedia/playback/qmediaplayer.h')
-rw-r--r--src/multimedia/playback/qmediaplayer.h233
1 files changed, 99 insertions, 134 deletions
diff --git a/src/multimedia/playback/qmediaplayer.h b/src/multimedia/playback/qmediaplayer.h
index 66a60b508..015a30f05 100644
--- a/src/multimedia/playback/qmediaplayer.h
+++ b/src/multimedia/playback/qmediaplayer.h
@@ -1,95 +1,68 @@
-/****************************************************************************
-**
-** Copyright (C) 2016 The Qt Company Ltd.
-** Contact: https://www.qt.io/licensing/
-**
-** This file is part of the Qt Toolkit.
-**
-** $QT_BEGIN_LICENSE:LGPL$
-** Commercial License Usage
-** Licensees holding valid commercial Qt licenses may use this file in
-** accordance with the commercial license agreement provided with the
-** Software or, alternatively, in accordance with the terms contained in
-** a written agreement between you and The Qt Company. For licensing terms
-** and conditions see https://www.qt.io/terms-conditions. For further
-** information use the contact form at https://www.qt.io/contact-us.
-**
-** GNU Lesser General Public License Usage
-** Alternatively, this file may be used under the terms of the GNU Lesser
-** General Public License version 3 as published by the Free Software
-** Foundation and appearing in the file LICENSE.LGPL3 included in the
-** packaging of this file. Please review the following information to
-** ensure the GNU Lesser General Public License version 3 requirements
-** will be met: https://www.gnu.org/licenses/lgpl-3.0.html.
-**
-** GNU General Public License Usage
-** Alternatively, this file may be used under the terms of the GNU
-** General Public License version 2.0 or (at your option) the GNU General
-** Public license version 3 or any later version approved by the KDE Free
-** Qt Foundation. The licenses are as published by the Free Software
-** Foundation and appearing in the file LICENSE.GPL2 and LICENSE.GPL3
-** included in the packaging of this file. Please review the following
-** information to ensure the GNU General Public License requirements will
-** be met: https://www.gnu.org/licenses/gpl-2.0.html and
-** https://www.gnu.org/licenses/gpl-3.0.html.
-**
-** $QT_END_LICENSE$
-**
-****************************************************************************/
+// Copyright (C) 2016 The Qt Company Ltd.
+// SPDX-License-Identifier: LicenseRef-Qt-Commercial OR LGPL-3.0-only OR GPL-2.0-only OR GPL-3.0-only
#ifndef QMEDIAPLAYER_H
#define QMEDIAPLAYER_H
+#include <QtCore/qobject.h>
+#include <QtCore/qurl.h>
#include <QtMultimedia/qtmultimediaglobal.h>
-#include <QtMultimedia/qmediaobject.h>
-#include <QtMultimedia/qmediacontent.h>
#include <QtMultimedia/qmediaenumdebug.h>
-#include <QtMultimedia/qaudio.h>
+#include <QtMultimedia/qtaudio.h>
QT_BEGIN_NAMESPACE
-
-class QAbstractVideoSurface;
-class QMediaPlaylist;
-class QVideoWidget;
-class QGraphicsVideoItem;
+class QVideoSink;
+class QAudioOutput;
+class QAudioDevice;
+class QMediaMetaData;
+class QMediaTimeRange;
class QMediaPlayerPrivate;
-class Q_MULTIMEDIA_EXPORT QMediaPlayer : public QMediaObject
+class Q_MULTIMEDIA_EXPORT QMediaPlayer : public QObject
{
Q_OBJECT
- Q_PROPERTY(QMediaContent media READ media WRITE setMedia NOTIFY mediaChanged)
- Q_PROPERTY(QMediaContent currentMedia READ currentMedia NOTIFY currentMediaChanged)
- Q_PROPERTY(QMediaPlaylist* playlist READ playlist WRITE setPlaylist)
+ Q_PROPERTY(QUrl source READ source WRITE setSource NOTIFY sourceChanged)
Q_PROPERTY(qint64 duration READ duration NOTIFY durationChanged)
Q_PROPERTY(qint64 position READ position WRITE setPosition NOTIFY positionChanged)
- Q_PROPERTY(int volume READ volume WRITE setVolume NOTIFY volumeChanged)
- Q_PROPERTY(bool muted READ isMuted WRITE setMuted NOTIFY mutedChanged)
- Q_PROPERTY(int bufferStatus READ bufferStatus NOTIFY bufferStatusChanged)
- Q_PROPERTY(bool audioAvailable READ isAudioAvailable NOTIFY audioAvailableChanged)
- Q_PROPERTY(bool videoAvailable READ isVideoAvailable NOTIFY videoAvailableChanged)
+ Q_PROPERTY(float bufferProgress READ bufferProgress NOTIFY bufferProgressChanged)
+ Q_PROPERTY(bool hasAudio READ hasAudio NOTIFY hasAudioChanged)
+ Q_PROPERTY(bool hasVideo READ hasVideo NOTIFY hasVideoChanged)
Q_PROPERTY(bool seekable READ isSeekable NOTIFY seekableChanged)
+ Q_PROPERTY(bool playing READ isPlaying NOTIFY playingChanged)
Q_PROPERTY(qreal playbackRate READ playbackRate WRITE setPlaybackRate NOTIFY playbackRateChanged)
- Q_PROPERTY(State state READ state NOTIFY stateChanged)
+ Q_PROPERTY(int loops READ loops WRITE setLoops NOTIFY loopsChanged)
+ Q_PROPERTY(PlaybackState playbackState READ playbackState NOTIFY playbackStateChanged)
Q_PROPERTY(MediaStatus mediaStatus READ mediaStatus NOTIFY mediaStatusChanged)
- Q_PROPERTY(QAudio::Role audioRole READ audioRole WRITE setAudioRole NOTIFY audioRoleChanged)
- Q_PROPERTY(QString customAudioRole READ customAudioRole WRITE setCustomAudioRole NOTIFY customAudioRoleChanged)
- Q_PROPERTY(QString error READ errorString)
- Q_ENUMS(State)
- Q_ENUMS(MediaStatus)
- Q_ENUMS(Error)
+ Q_PROPERTY(QMediaMetaData metaData READ metaData NOTIFY metaDataChanged)
+ Q_PROPERTY(Error error READ error NOTIFY errorChanged)
+ Q_PROPERTY(QString errorString READ errorString NOTIFY errorChanged)
+ Q_PROPERTY(QObject *videoOutput READ videoOutput WRITE setVideoOutput NOTIFY videoOutputChanged)
+ Q_PROPERTY(QAudioOutput *audioOutput READ audioOutput WRITE setAudioOutput NOTIFY
+ audioOutputChanged)
+
+ Q_PROPERTY(QList<QMediaMetaData> audioTracks READ audioTracks NOTIFY tracksChanged)
+ Q_PROPERTY(QList<QMediaMetaData> videoTracks READ videoTracks NOTIFY tracksChanged)
+ Q_PROPERTY(QList<QMediaMetaData> subtitleTracks READ subtitleTracks NOTIFY tracksChanged)
+
+ Q_PROPERTY(int activeAudioTrack READ activeAudioTrack WRITE setActiveAudioTrack NOTIFY
+ activeTracksChanged)
+ Q_PROPERTY(int activeVideoTrack READ activeVideoTrack WRITE setActiveVideoTrack NOTIFY
+ activeTracksChanged)
+ Q_PROPERTY(int activeSubtitleTrack READ activeSubtitleTrack WRITE setActiveSubtitleTrack NOTIFY
+ activeTracksChanged)
public:
- enum State
+ enum PlaybackState
{
StoppedState,
PlayingState,
PausedState
};
+ Q_ENUM(PlaybackState)
enum MediaStatus
{
- UnknownMediaStatus,
NoMedia,
LoadingMedia,
LoadedMedia,
@@ -99,14 +72,7 @@ public:
EndOfMedia,
InvalidMedia
};
-
- enum Flag
- {
- LowLatency = 0x01,
- StreamPlayback = 0x02,
- VideoSurface = 0x04
- };
- Q_DECLARE_FLAGS(Flags, Flag)
+ Q_ENUM(MediaStatus)
enum Error
{
@@ -114,56 +80,69 @@ public:
ResourceError,
FormatError,
NetworkError,
- AccessDeniedError,
- ServiceMissingError,
- MediaIsPlaylist
+ AccessDeniedError
};
+ Q_ENUM(Error)
- explicit QMediaPlayer(QObject *parent = nullptr, Flags flags = Flags());
+ enum Loops
+ {
+ Infinite = -1,
+ Once = 1
+ };
+ Q_ENUM(Loops)
+
+ explicit QMediaPlayer(QObject *parent = nullptr);
~QMediaPlayer();
- static QMultimedia::SupportEstimate hasSupport(const QString &mimeType,
- const QStringList& codecs = QStringList(),
- Flags flags = Flags());
- static QStringList supportedMimeTypes(Flags flags = Flags());
+ QList<QMediaMetaData> audioTracks() const;
+ QList<QMediaMetaData> videoTracks() const;
+ QList<QMediaMetaData> subtitleTracks() const;
+
+ int activeAudioTrack() const;
+ int activeVideoTrack() const;
+ int activeSubtitleTrack() const;
+
+ void setActiveAudioTrack(int index);
+ void setActiveVideoTrack(int index);
+ void setActiveSubtitleTrack(int index);
- void setVideoOutput(QVideoWidget *);
- void setVideoOutput(QGraphicsVideoItem *);
- void setVideoOutput(QAbstractVideoSurface *surface);
- void setVideoOutput(const QList<QAbstractVideoSurface *> &surfaces);
+ void setAudioOutput(QAudioOutput *output);
+ QAudioOutput *audioOutput() const;
- QMediaContent media() const;
- const QIODevice *mediaStream() const;
- QMediaPlaylist *playlist() const;
- QMediaContent currentMedia() const;
+ void setVideoOutput(QObject *);
+ QObject *videoOutput() const;
- State state() const;
+ void setVideoSink(QVideoSink *sink);
+ QVideoSink *videoSink() const;
+
+ QUrl source() const;
+ const QIODevice *sourceDevice() const;
+
+ PlaybackState playbackState() const;
MediaStatus mediaStatus() const;
qint64 duration() const;
qint64 position() const;
- int volume() const;
- bool isMuted() const;
- bool isAudioAvailable() const;
- bool isVideoAvailable() const;
+ bool hasAudio() const;
+ bool hasVideo() const;
- int bufferStatus() const;
+ float bufferProgress() const;
+ QMediaTimeRange bufferedTimeRange() const;
bool isSeekable() const;
qreal playbackRate() const;
+ bool isPlaying() const;
+
+ int loops() const;
+ void setLoops(int loops);
+
Error error() const;
QString errorString() const;
- QMultimedia::AvailabilityStatus availability() const override;
-
- QAudio::Role audioRole() const;
- void setAudioRole(QAudio::Role audioRole);
- QList<QAudio::Role> supportedAudioRoles() const;
- QString customAudioRole() const;
- void setCustomAudioRole(const QString &audioRole);
- QStringList supportedCustomAudioRoles() const;
+ bool isAvailable() const;
+ QMediaMetaData metaData() const;
public Q_SLOTS:
void play();
@@ -171,63 +150,49 @@ public Q_SLOTS:
void stop();
void setPosition(qint64 position);
- void setVolume(int volume);
- void setMuted(bool muted);
void setPlaybackRate(qreal rate);
- void setMedia(const QMediaContent &media, QIODevice *stream = nullptr);
- void setPlaylist(QMediaPlaylist *playlist);
+ void setSource(const QUrl &source);
+ void setSourceDevice(QIODevice *device, const QUrl &sourceUrl = QUrl());
Q_SIGNALS:
- void mediaChanged(const QMediaContent &media);
- void currentMediaChanged(const QMediaContent &media);
-
- void stateChanged(QMediaPlayer::State newState);
+ void sourceChanged(const QUrl &media);
+ void playbackStateChanged(QMediaPlayer::PlaybackState newState);
void mediaStatusChanged(QMediaPlayer::MediaStatus status);
void durationChanged(qint64 duration);
void positionChanged(qint64 position);
- void volumeChanged(int volume);
- void mutedChanged(bool muted);
- void audioAvailableChanged(bool available);
- void videoAvailableChanged(bool videoAvailable);
+ void hasAudioChanged(bool available);
+ void hasVideoChanged(bool videoAvailable);
- void bufferStatusChanged(int percentFilled);
+ void bufferProgressChanged(float progress);
void seekableChanged(bool seekable);
+ void playingChanged(bool playing);
void playbackRateChanged(qreal rate);
+ void loopsChanged();
- void audioRoleChanged(QAudio::Role role);
- void customAudioRoleChanged(const QString &role);
+ void metaDataChanged();
+ void videoOutputChanged();
+ void audioOutputChanged();
- void error(QMediaPlayer::Error error);
+ void tracksChanged();
+ void activeTracksChanged();
-public:
- bool bind(QObject *) override;
- void unbind(QObject *) override;
+ void errorChanged();
+ void errorOccurred(QMediaPlayer::Error error, const QString &errorString);
private:
Q_DISABLE_COPY(QMediaPlayer)
Q_DECLARE_PRIVATE(QMediaPlayer)
- Q_PRIVATE_SLOT(d_func(), void _q_stateChanged(QMediaPlayer::State))
- Q_PRIVATE_SLOT(d_func(), void _q_mediaStatusChanged(QMediaPlayer::MediaStatus))
- Q_PRIVATE_SLOT(d_func(), void _q_error(int, const QString &))
- Q_PRIVATE_SLOT(d_func(), void _q_updateMedia(const QMediaContent&))
- Q_PRIVATE_SLOT(d_func(), void _q_playlistDestroyed())
- Q_PRIVATE_SLOT(d_func(), void _q_handleMediaChanged(const QMediaContent&))
- Q_PRIVATE_SLOT(d_func(), void _q_handlePlaylistLoaded())
- Q_PRIVATE_SLOT(d_func(), void _q_handlePlaylistLoadFailed())
+ friend class QPlatformMediaPlayer;
};
QT_END_NAMESPACE
-Q_DECLARE_METATYPE(QMediaPlayer::State)
-Q_DECLARE_METATYPE(QMediaPlayer::MediaStatus)
-Q_DECLARE_METATYPE(QMediaPlayer::Error)
-
-Q_MEDIA_ENUM_DEBUG(QMediaPlayer, State)
+Q_MEDIA_ENUM_DEBUG(QMediaPlayer, PlaybackState)
Q_MEDIA_ENUM_DEBUG(QMediaPlayer, MediaStatus)
Q_MEDIA_ENUM_DEBUG(QMediaPlayer, Error)