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
avfmediaplayer_p.h
Go to the documentation of this file.
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 AVFMEDIAPLAYER_H
5#define AVFMEDIAPLAYER_H
6
7//
8// W A R N I N G
9// -------------
10//
11// This file is not part of the Qt API. It exists purely as an
12// implementation detail. This header file may change from version to
13// version without notice, or even be removed.
14//
15// We mean it.
16//
17
18#include <QtCore/QObject>
19#include <QtCore/QByteArray>
20#include <QtCore/QSet>
21#include <QtCore/QResource>
22#include <QtCore/QUrl>
23#include <QtCore/QTimer>
24
25#include <private/qplatformmediaplayer_p.h>
26#include <QtMultimedia/QMediaPlayer>
27#include <QtMultimedia/QVideoFrame>
28
33
35
36class AVFMediaPlayer;
38class AVFVideoSink;
39
41{
43public:
45 virtual ~AVFMediaPlayer();
46
47 void setVideoSink(QVideoSink *sink) override;
49 AVAsset *currentAssetHandle();
50
51 QMediaPlayer::PlaybackState state() const override;
53
54 QUrl media() const override;
55 QIODevice *mediaStream() const override;
56 void setMedia(const QUrl &content, QIODevice *stream) override;
57
58 qint64 position() const override;
59 qint64 duration() const override;
60
61 float bufferProgress() const override;
62
63 bool isAudioAvailable() const override;
64 bool isVideoAvailable() const override;
65
66 bool isSeekable() const override;
68
69 qreal playbackRate() const override;
70
73
74 QMediaMetaData metaData() const override;
75
76 static void videoOrientationForAssetTrack(AVAssetTrack *track,
78 bool &mirrored);
79
80public Q_SLOTS:
81 void setPlaybackRate(qreal rate) override;
83
84 void setPosition(qint64 pos) override;
85
86 void play() override;
87 void pause() override;
88 void stop() override;
89
90 void setVolume(float volume);
91 void setMuted(bool muted);
92 void audioOutputChanged();
93
94 void processEOS();
98
101
103
105
106 void streamReady();
107 void streamDestroyed();
108 void updateTracks();
111 int trackCount(TrackType) override;
112 QMediaMetaData trackMetaData(TrackType type, int trackNumber) override;
113
114public:
117
118private:
119 void setAudioAvailable(bool available);
120 void setVideoAvailable(bool available);
121 void setSeekable(bool seekable);
122 void resetStream(QIODevice *stream = nullptr);
123
124 void orientationChanged(QtVideo::Rotation rotation, bool mirrored);
125
126 AVFVideoRendererControl *m_videoOutput = nullptr;
127 AVFVideoSink *m_videoSink = nullptr;
128
130 QMediaPlayer::MediaStatus m_mediaStatus;
131 QIODevice *m_mediaStream;
132 QUrl m_resources;
133 QMediaMetaData m_metaData;
134
135 qreal m_rate;
136 qint64 m_requestedPosition;
137
138 qint64 m_duration;
139 int m_bufferProgress;
140 bool m_videoAvailable;
141 bool m_audioAvailable;
142 bool m_seekable;
143
144 AVFMediaPlayerObserver *m_observer;
145
146 QTimer m_playbackTimer;
147};
148
150
151#endif // AVFMEDIAPLAYER_H
QMediaMetaData trackMetaData(TrackType type, int trackNumber) override
qint64 duration() const override
virtual ~AVFMediaPlayer()
void setVolume(float volume)
void processLoadStateChange()
int trackCount(TrackType) override
void setVideoSink(QVideoSink *sink) override
QMediaTimeRange availablePlaybackRanges() const override
void nativeSizeChanged(QSize size)
static void videoOrientationForAssetTrack(AVAssetTrack *track, QtVideo::Rotation &angle, bool &mirrored)
bool isAudioAvailable() const override
QMediaMetaData metaData() const override
void setVideoOutput(AVFVideoRendererControl *output)
void stop() override
float bufferProgress() const override
void setMedia(const QUrl &content, QIODevice *stream) override
qint64 position() const override
int activeTrack(QPlatformMediaPlayer::TrackType type) override
QMediaPlayer::PlaybackState state() const override
void setMuted(bool muted)
void pause() override
QPlatformAudioOutput * m_audioOutput
void play() override
void processDurationChange(qint64 duration)
QUrl media() const override
QList< AVPlayerItemTrack * > nativeTracks[QPlatformMediaPlayer::NTrackTypes]
void processLoadStateFailure()
qreal playbackRate() const override
QMediaPlayer::MediaStatus mediaStatus() const override
QIODevice * mediaStream() const override
AVAsset * currentAssetHandle()
bool isVideoAvailable() const override
bool isSeekable() const override
void setAudioOutput(QPlatformAudioOutput *output) override
void setActiveTrack(QPlatformMediaPlayer::TrackType type, int index) override
AVFMediaPlayer(QMediaPlayer *parent)
QList< QMediaMetaData > tracks[QPlatformMediaPlayer::NTrackTypes]
void processBufferStateChange(int bufferProgress)
void setPlaybackRate(qreal rate) 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
QObject * parent() const
Returns a pointer to the parent object.
Definition qobject.h:346
\inmodule QtCore
Definition qsize.h:25
\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
void newState(QList< State > &states, const char *token, const char *lexem, bool pre)
Combined button and popup list for selecting options.
#define Q_FORWARD_DECLARE_OBJC_CLASS(classname)
EGLStreamKHR stream
n void setPosition(void) \n\
GLenum GLuint GLintptr GLsizeiptr size
[1]
GLuint index
[2]
GLenum type
GLfloat angle
GLuint GLenum * rate
GLsizei GLenum GLboolean sink
#define Q_OBJECT
#define Q_SLOTS
long long qint64
Definition qtypes.h:60
double qreal
Definition qtypes.h:187
QT_BEGIN_NAMESPACE typedef uchar * output