3#ifndef QFFMPEGPLAYBACKENGINE_P_H
4#define QFFMPEGPLAYBACKENGINE_P_H
54#include <QtCore/qpointer.h>
56#include <unordered_map>
112 const QList<MediaDataHolder::StreamInfo> &
139 template<
typename T,
typename... Args>
151 void createDemuxer();
155 template<
typename C,
typename Action>
156 void forEachExistingObject(Action &&action);
158 template<
typename Action>
159 void forEachExistingObject(Action &&action);
163 void recreateObjects();
165 void createObjectsIfNeeded();
167 void updateObjectsPausedState();
169 void deleteFreeThreads();
171 void onRendererSynchronized(
quint64 id, std::chrono::steady_clock::time_point
time,
174 void onRendererFinished();
178 void triggerStepIfNeeded();
184 bool hasMediaStream()
const;
188 void finalizeOutputs();
190 bool hasRenderer(
quint64 id)
const;
192 void updateVideoSinkSize(
QVideoSink *prevSink =
nullptr);
201 std::unordered_map<QString, std::unique_ptr<QThread>> m_threads;
202 bool m_threadsDirty =
false;
204 QPointer<QVideoSink> m_videoSink;
205 QPointer<QAudioOutput> m_audioOutput;
209 ObjectPtr<Demuxer> m_demuxer;
210 std::array<StreamPtr, QPlatformMediaPlayer::NTrackTypes> m_streams;
211 std::array<RendererPtr, QPlatformMediaPlayer::NTrackTypes> m_renderers;
218template<
typename T,
typename... Args>
221 auto result = ObjectPtr<T>(
new T(std::forward<Args>(
args)...), {
this });
\qmltype AudioOutput \instantiates QAudioOutput
The QAudioSink class provides an interface for sending audio data to an audio output device.
int activeTrack(QPlatformMediaPlayer::TrackType type) const
void setLoops(int loopsCount)
void setVideoSink(QVideoSink *sink)
void setState(QMediaPlayer::PlaybackState state)
virtual RendererPtr createRenderer(QPlatformMediaPlayer::TrackType trackType)
void setPlaybackRate(float rate)
ObjectPtr< T > createPlaybackEngineObject(Args &&...args)
void setAudioSink(QAudioOutput *output)
qint64 currentPosition(bool topPos=true) const
void errorOccured(int, const QString &)
ObjectPtr< Renderer > RendererPtr
~PlaybackEngine() override
const QList< MediaDataHolder::StreamInfo > & streamInfo(QPlatformMediaPlayer::TrackType trackType) const
std::unique_ptr< T, ObjectDeleter > ObjectPtr
ObjectPtr< StreamDecoder > StreamPtr
void setActiveTrack(QPlatformMediaPlayer::TrackType type, int streamNumber)
void setMedia(MediaDataHolder media)
const QMediaMetaData & metaData() const
void updateActiveAudioOutput(QAudioOutput *output)
void updateActiveVideoOutput(QVideoSink *sink, bool cleanOutput=false)
float playbackRate() const
\macro QT_RESTRICTED_CAST_FROM_ASCII
The QVideoSink class represents a generic sink for video data.
Combined button and popup list for selecting options.
GLenum GLuint GLintptr offset
GLsizei GLenum GLboolean sink
static qreal position(const QQuickItem *item, QQuickAnchors::Anchor anchorLine)
unsigned long long quint64
QT_BEGIN_NAMESPACE typedef uchar * output
void operator()(PlaybackEngineObject *) const