Qt 6.x
The Qt SDK
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 "qffmpeg_p.h"
23
25
26namespace QFFmpeg {
27class PlaybackEngine;
28}
30
32{
34public:
37
38 qint64 duration() const override;
39
40 void setPosition(qint64 position) override;
41
42 float bufferProgress() const override;
43
45
46 qreal playbackRate() const override;
47 void setPlaybackRate(qreal rate) override;
48
49 QUrl media() const override;
50 const QIODevice *mediaStream() const override;
51 void setMedia(const QUrl &media, QIODevice *stream) override;
52
53 void play() override;
54 void pause() override;
55 void stop() override;
56
57 void setAudioOutput(QPlatformAudioOutput *) override;
58
59 QMediaMetaData metaData() const override;
60
61 void setVideoSink(QVideoSink *sink) override;
62 QVideoSink *videoSink() const;
63
64 int trackCount(TrackType) override;
65 QMediaMetaData trackMetaData(TrackType type, int streamNumber) override;
66 int activeTrack(TrackType) override;
67 void setActiveTrack(TrackType, int streamNumber) override;
68 void setLoops(int loops) override;
69
73 }
74
75private:
76 void runPlayback();
77
78private slots:
79 void updatePosition();
80 void endOfStream();
81 void error(int error, const QString &errorString)
82 {
83 QPlatformMediaPlayer::error(error, errorString);
84 }
85 void onLoopChanged();
86
87private:
88 QTimer m_positionUpdateTimer;
89
90 using PlaybackEngine = QFFmpeg::PlaybackEngine;
91
92 std::unique_ptr<PlaybackEngine> m_playbackEngine;
93 QPlatformAudioOutput *m_audioOutput = nullptr;
94 QPointer<QVideoSink> m_videoSink;
95
96 QUrl m_url;
97 QPointer<QIODevice> m_device;
98 float m_playbackRate = 1.;
99};
100
102
103
104#endif // QMEDIAPLAYERCONTROL_H
105
QMediaPlayer player
Definition audio.cpp:205
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
Q_INVOKABLE void delayedLoadedStatus()
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.
The QMediaTimeRange class represents a set of zero or more disjoint time intervals.
\inmodule QtCore
Definition qobject.h:90
virtual QMediaPlayer::MediaStatus mediaStatus() const
void error(int error, const QString &errorString)
virtual qint64 position() const
void mediaStatusChanged(QMediaPlayer::MediaStatus status)
\inmodule QtCore
Definition qpointer.h:18
\macro QT_RESTRICTED_CAST_FROM_ASCII
Definition qstring.h:127
\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.
EGLStreamKHR stream
n void setPosition(void) \n\
GLenum type
GLuint GLenum * rate
GLsizei GLenum GLboolean sink
#define Q_OBJECT
#define Q_INVOKABLE
#define slots
long long qint64
Definition qtypes.h:55
double qreal
Definition qtypes.h:92