Qt
Internal/Contributor docs for the Qt SDK. Note: These are NOT official API docs; those are found at https://doc.qt.io/
Toggle main menu visibility
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
<
QtMultimedia
/
private
/
qplatformmediaplayer_p
.
h
>
19
#
include
<
qmediametadata
.
h
>
20
#
include
<
qtimer
.
h
>
21
#
include
<
qpointer
.
h
>
22
#
include
<
qfuture
.
h
>
23
#
include
<
QtFFmpegMediaPluginImpl
/
private
/
qffmpeg_p
.
h
>
24
#
include
<
QtFFmpegMediaPluginImpl
/
private
/
qffmpegmediadataholder_p
.
h
>
25
26
QT_BEGIN_NAMESPACE
27
28
namespace
QFFmpeg
{
29
class
CancelToken
;
30
31
class
PlaybackEngine
;
32
}
// namespace QFFmpeg
33
34
class
QPlatformAudioOutput;
35
36
class
QFFmpegMediaPlayer
:
public
QObject
,
public
QPlatformMediaPlayer
37
{
38
Q_OBJECT
39
public
:
40
QFFmpegMediaPlayer
(
QMediaPlayer
*
player
);
41
~
QFFmpegMediaPlayer
()
override
;
42
43
qint64
duration
()
const
override
;
44
45
void
setPosition
(qint64 position)
override
;
46
47
float
bufferProgress
()
const
override
;
48
49
QMediaTimeRange
availablePlaybackRanges
()
const
override
;
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
void
setAudioBufferOutput
(QAudioBufferOutput *)
override
;
65
66
QMediaMetaData
metaData
()
const
override
;
67
68
void
setVideoSink
(QVideoSink *sink)
override
;
69
QVideoSink
*
videoSink
()
const
;
70
71
int
trackCount
(
TrackType
)
override
;
72
QMediaMetaData
trackMetaData
(TrackType type,
int
streamNumber)
override
;
73
int
activeTrack
(
TrackType
)
override
;
74
void
setActiveTrack
(
TrackType
,
int
streamNumber)
override
;
75
void
setLoops
(
int
loops)
override
;
76
77
PitchCompensationAvailability
pitchCompensationAvailability
()
const
override
;
78
void
setPitchCompensation
(
bool
enabled)
override
;
79
bool
pitchCompensation
()
const
override
;
80
81
private
:
82
void
runPlayback();
83
void
handleIncorrectMedia(QMediaPlayer::MediaStatus status);
84
void
setMediaAsync(QFFmpeg::MediaDataHolder::Maybe mediaDataHolder,
85
const
std::shared_ptr<QFFmpeg::CancelToken> &cancelToken);
86
87
void
mediaStatusChanged(QMediaPlayer::MediaStatus);
88
89
private
Q_SLOTS
:
90
void
updatePosition
();
91
void
endOfStream();
92
void
error(QMediaPlayer::Error error,
const
QString &errorString)
93
{
94
QPlatformMediaPlayer::error(error, errorString);
95
}
96
void
onLoopChanged();
97
void
onBuffered();
98
99
private
:
100
QTimer m_positionUpdateTimer;
101
QMediaPlayer::PlaybackState m_requestedStatus =
QMediaPlayer
::
StoppedState
;
102
103
using
PlaybackEngine =
QFFmpeg
::
PlaybackEngine
;
104
105
std::unique_ptr<PlaybackEngine> m_playbackEngine;
106
QPlatformAudioOutput *m_audioOutput =
nullptr
;
107
QPointer<QAudioBufferOutput> m_audioBufferOutput;
108
QPointer<QVideoSink> m_videoSink;
109
110
QUrl m_url;
111
QPointer<QIODevice> m_device;
112
float
m_playbackRate = 1.;
113
float
m_bufferProgress = 0.f;
114
QFuture
<
void
> m_loadMedia;
115
std::shared_ptr<QFFmpeg::CancelToken> m_cancelToken;
// For interrupting ongoing
116
// network connection attempt
117
118
bool
m_pitchCompensation =
true
;
119
120
// Set by onBuffered(); reset on seek/stop/new-media. Guards against the demuxer
121
// completing re-buffering before the player enters BufferingMedia (QTBUG-147839).
122
bool
m_demuxerBuffered =
false
;
123
};
124
125
QT_END_NAMESPACE
126
127
128
#
endif
// QMEDIAPLAYERCONTROL_H
QFFmpegMediaPlayer
Definition
qffmpegmediaplayer_p.h:37
QFFmpegMediaPlayer::play
void play() override
Definition
qffmpegmediaplayer.cpp:282
QFFmpegMediaPlayer::setActiveTrack
void setActiveTrack(TrackType, int streamNumber) override
Definition
qffmpegmediaplayer.cpp:403
QFFmpegMediaPlayer::setVideoSink
void setVideoSink(QVideoSink *sink) override
Definition
qffmpegmediaplayer.cpp:373
QFFmpegMediaPlayer::trackMetaData
QMediaMetaData trackMetaData(TrackType type, int streamNumber) override
Definition
qffmpegmediaplayer.cpp:390
QFFmpegMediaPlayer::setLoops
void setLoops(int loops) override
Definition
qffmpegmediaplayer.cpp:411
QFFmpegMediaPlayer::videoSink
QVideoSink * videoSink() const
Definition
qffmpegmediaplayer.cpp:380
QFFmpegMediaPlayer::pitchCompensation
bool pitchCompensation() const override
Definition
qffmpegmediaplayer.cpp:430
QFFmpegMediaPlayer::setAudioOutput
void setAudioOutput(QPlatformAudioOutput *) override
Definition
qffmpegmediaplayer.cpp:355
QFFmpegMediaPlayer::pause
void pause() override
Definition
qffmpegmediaplayer.cpp:312
QFFmpegMediaPlayer::duration
qint64 duration() const override
Definition
qffmpegmediaplayer.cpp:54
QFFmpegMediaPlayer::bufferProgress
float bufferProgress() const override
Definition
qffmpegmediaplayer.cpp:114
QFFmpegMediaPlayer::mediaStream
const QIODevice * mediaStream() const override
Definition
qffmpegmediaplayer.cpp:166
QFFmpegMediaPlayer::setPitchCompensation
void setPitchCompensation(bool enabled) override
Definition
qffmpegmediaplayer.cpp:419
QFFmpegMediaPlayer::setPosition
void setPosition(qint64 position) override
Definition
qffmpegmediaplayer.cpp:59
QFFmpegMediaPlayer::setPlaybackRate
void setPlaybackRate(qreal rate) override
Definition
qffmpegmediaplayer.cpp:146
QFFmpegMediaPlayer::activeTrack
int activeTrack(TrackType) override
Definition
qffmpegmediaplayer.cpp:398
QFFmpegMediaPlayer::media
QUrl media() const override
Definition
qffmpegmediaplayer.cpp:161
QFFmpegMediaPlayer::availablePlaybackRanges
QMediaTimeRange availablePlaybackRanges() const override
Definition
qffmpegmediaplayer.cpp:136
QFFmpegMediaPlayer::stop
void stop() override
Definition
qffmpegmediaplayer.cpp:336
QFFmpegMediaPlayer::playbackRate
qreal playbackRate() const override
Definition
qffmpegmediaplayer.cpp:141
QFFmpegMediaPlayer::pitchCompensationAvailability
PitchCompensationAvailability pitchCompensationAvailability() const override
Definition
qffmpegmediaplayer.cpp:436
QFFmpegMediaPlayer::metaData
QMediaMetaData metaData() const override
Definition
qffmpegmediaplayer.cpp:368
QFFmpegMediaPlayer::~QFFmpegMediaPlayer
~QFFmpegMediaPlayer() override
Definition
qffmpegmediaplayer.cpp:46
QFFmpegMediaPlayer::setAudioBufferOutput
void setAudioBufferOutput(QAudioBufferOutput *) override
Definition
qffmpegmediaplayer.cpp:362
QFFmpegMediaPlayer::setMedia
void setMedia(const QUrl &media, QIODevice *stream) override
Definition
qffmpegmediaplayer.cpp:181
QFFmpegMediaPlayer::trackCount
int trackCount(TrackType) override
Definition
qffmpegmediaplayer.cpp:385
QFFmpeg::CancelToken
Definition
qffmpegmediaplayer.cpp:23
QFFmpeg::CancelToken::isCancelled
bool isCancelled() const override
Definition
qffmpegmediaplayer.cpp:26
QFFmpeg::CancelToken::cancel
void cancel()
Definition
qffmpegmediaplayer.cpp:28
QFFmpeg::PlaybackEngine
Definition
qffmpegplaybackengine_p.h:73
QFFmpeg::PlaybackEngine::loopChanged
void loopChanged()
QFFmpeg::PlaybackEngine::buffered
void buffered()
QFuture
Definition
qfuture.h:27
QPointer
Definition
qpointer.h:20
QFFmpeg
Definition
qandroidcacertificates.cpp:26
QT_BEGIN_NAMESPACE
Combined button and popup list for selecting options.
Definition
qsequentialanimationgroup.cpp:47
std
[33]
Definition
src_corelib_tools_qhash.cpp:421
qtmultimedia
src
plugins
multimedia
ffmpeg
qffmpegmediaplayer_p.h
Generated on
for Qt by
1.18.0