Qt
Internal/Contributor docs for the Qt SDK. <b>Note:</b> These are NOT official API docs; those are found <a href='https://doc.qt.io/'>here</a>.
Loading...
Searching...
No Matches
qffmpegmediaplayer_p.h
Go to the documentation of this file.
1// Copyright (C) 2021 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//
5// W A R N I N G
6// -------------
7//
8// This file is not part of the Qt API. It exists purely as an
9// implementation detail. This header file may change from version to
10// version without notice, or even be removed.
11//
12// We mean it.
13//
14
15#ifndef QFFMPEGMEDIAPLAYER_H
16#define QFFMPEGMEDIAPLAYER_H
17
18#include <private/qplatformmediaplayer_p.h>
19#include <qmediametadata.h>
20#include <qtimer.h>
21#include <qpointer.h>
22#include <qfuture.h>
23#include "qffmpeg_p.h"
25
27
28namespace QFFmpeg {
29class CancelToken;
30
31class PlaybackEngine;
32}
33
35
37{
39public:
42
43 qint64 duration() const override;
44
45 void setPosition(qint64 position) override;
46
47 float bufferProgress() const override;
48
50
51 qreal playbackRate() const override;
52 void setPlaybackRate(qreal rate) override;
53
54 QUrl media() const override;
55 const QIODevice *mediaStream() const override;
56 void setMedia(const QUrl &media, QIODevice *stream) override;
57
58 void play() override;
59 void pause() override;
60 void stop() override;
61
62 void setAudioOutput(QPlatformAudioOutput *) override;
63
64 QMediaMetaData metaData() const override;
65
66 void setVideoSink(QVideoSink *sink) override;
67 QVideoSink *videoSink() const;
68
69 int trackCount(TrackType) override;
70 QMediaMetaData trackMetaData(TrackType type, int streamNumber) override;
71 int activeTrack(TrackType) override;
72 void setActiveTrack(TrackType, int streamNumber) override;
73 void setLoops(int loops) override;
74
75private:
76 void runPlayback();
77 void handleIncorrectMedia(QMediaPlayer::MediaStatus status);
78 void setMediaAsync(QFFmpeg::MediaDataHolder::Maybe mediaDataHolder,
79 const std::shared_ptr<QFFmpeg::CancelToken> &cancelToken);
80
81 void mediaStatusChanged(QMediaPlayer::MediaStatus);
82
83private slots:
84 void updatePosition();
85 void endOfStream();
86 void error(int error, const QString &errorString)
87 {
89 }
90 void onLoopChanged();
91 void onBuffered();
92
93private:
94 QTimer m_positionUpdateTimer;
96
98
99 std::unique_ptr<PlaybackEngine> m_playbackEngine;
100 QPlatformAudioOutput *m_audioOutput = nullptr;
101 QPointer<QVideoSink> m_videoSink;
102
103 QUrl m_url;
104 QPointer<QIODevice> m_device;
105 float m_playbackRate = 1.;
106 float m_bufferProgress = 0.f;
107 QFuture<void> m_loadMedia;
108 std::shared_ptr<QFFmpeg::CancelToken> m_cancelToken; // For interrupting ongoing
109 // network connection attempt
110};
111
113
114
115#endif // QMEDIAPLAYERCONTROL_H
116
QMediaPlayer player
Definition audio.cpp:213
void setActiveTrack(TrackType, int streamNumber) override
void setVideoSink(QVideoSink *sink) override
QMediaMetaData trackMetaData(TrackType type, int streamNumber) override
void setLoops(int loops) override
QVideoSink * videoSink() const
void setAudioOutput(QPlatformAudioOutput *) override
qint64 duration() const override
float bufferProgress() const override
const QIODevice * mediaStream() const override
void setPlaybackRate(qreal rate) override
int activeTrack(TrackType) override
QUrl media() const override
QMediaTimeRange availablePlaybackRanges() const override
qreal playbackRate() const override
QFFmpegMediaPlayer(QMediaPlayer *player)
QMediaMetaData metaData() const override
void setMedia(const QUrl &media, QIODevice *stream) override
int trackCount(TrackType) override
\inmodule QtCore \reentrant
Definition qiodevice.h:34
\inmodule QtMultimedia
The QMediaPlayer class allows the playing of a media files.
MediaStatus
\qmlproperty enumeration QtMultimedia::MediaPlayer::playbackState
PlaybackState
Defines the current state of a media player.
The QMediaTimeRange class represents a set of zero or more disjoint time intervals.
\inmodule QtCore
Definition qobject.h:103
void error(int error, const QString &errorString)
virtual qint64 position() const
\macro QT_RESTRICTED_CAST_FROM_ASCII
Definition qstring.h:129
\inmodule QtCore
Definition qtimer.h:20
\inmodule QtCore
Definition qurl.h:94
The QVideoSink class represents a generic sink for video data.
Definition qvideosink.h:22
Combined button and popup list for selecting options.
DBusConnection const char DBusError * error
EGLStreamKHR stream
n void setPosition(void) \n\
GLenum type
GLuint GLenum * rate
GLsizei GLenum GLboolean sink
#define Q_OBJECT
#define slots
long long qint64
Definition qtypes.h:60
double qreal
Definition qtypes.h:187