9#include <QtCore/qloggingcategory.h>
12#include <QMimeDatabase>
33void QWasmMediaPlayer::initVideo()
45 &QWasmMediaPlayer::bufferingChanged);
47 &QWasmMediaPlayer::errorOccured);
49 &QWasmMediaPlayer::mediaStateChanged);
51 &QWasmMediaPlayer::setPositionChanged);
53 &QWasmMediaPlayer::setDurationChanged);
55 &QWasmMediaPlayer::videoSizeChanged);
57 &QWasmMediaPlayer::videoOutputReady);
59 &QWasmMediaPlayer::onMediaStatusChanged);
61 &QWasmMediaPlayer::videoMetaDataChanged);
63 setVideoAvailable(
true);
66void QWasmMediaPlayer::initAudio()
71 this, &QWasmMediaPlayer::volumeChanged);
73 this, &QWasmMediaPlayer::mutedChanged);
76 &QWasmMediaPlayer::bufferingChanged);
78 &QWasmMediaPlayer::errorOccured);
80 &QWasmMediaPlayer::setPositionChanged);
82 &QWasmMediaPlayer::setDurationChanged);
84 &QWasmMediaPlayer::onMediaStatusChanged);
86 &QWasmMediaPlayer::mediaStateChanged);
87 setAudioAvailable(
true);
100 if (m_videoAvailable)
113 if (seekPosition == this->
position())
119 if (m_videoAvailable)
125void QWasmMediaPlayer::volumeChanged(
float gain)
130 if (m_videoAvailable)
134void QWasmMediaPlayer::mutedChanged(
bool muted)
139 if (m_videoAvailable)
145 return qBound(0.0, (m_bufferPercent * .01), 1.0);
150 return m_audioAvailable;
155 return m_videoAvailable;
160 return m_availablePlaybackRange;
163void QWasmMediaPlayer::updateAvailablePlaybackRanges()
197 return m_mediaContent;
202 return m_mediaStream;
210 if (mediaContent.isEmpty()) {
215 setAudioAvailable(
true);
218 setVideoAvailable(
true);
226 QString sourceFile = mediaContent.toLocalFile();
229 setAudioAvailable(
true);
232 setVideoAvailable(
true);
237 resetBufferingProgress();
242 if (m_videoSink ==
sink)
252 setVideoAvailable(
true);
259 if (m_audioOutput ==
output)
265 setAudioAvailable(
true);
280 m_videoOutput->
start();
281 m_playWhenReady =
true;
285 m_audioOutput->
start();
289#ifdef DEBUG_AUDIOENGINE
290 QAudioEnginePrivate::checkNoError(
"play");
302 m_videoOutput->
pause();
304 m_audioOutput->
pause();
311 m_playWhenReady =
false;
320 m_videoOutput->
stop();
322 m_audioOutput->
stop();
353void QWasmMediaPlayer::bufferingChanged(
qint32 percent)
355 m_buffering = percent != 100;
356 m_bufferPercent = percent;
358 updateAvailablePlaybackRanges();
366 if (
width == 0 ||
height == 0 || newSize == m_videoSize)
369 m_videoSize = newSize;
406void QWasmMediaPlayer::setDurationChanged(
qint64 duration)
411void QWasmMediaPlayer::videoOutputReady(
bool ready)
413 setVideoAvailable(ready);
415 if (m_playWhenReady && m_videoOutput->
isReady())
435void QWasmMediaPlayer::setAudioAvailable(
bool available)
437 if (m_audioAvailable == available)
440 m_audioAvailable = available;
444void QWasmMediaPlayer::setVideoAvailable(
bool available)
446 if (m_videoAvailable == available)
450 m_videoSize =
QSize();
452 m_videoAvailable = available;
456void QWasmMediaPlayer::resetBufferingProgress()
465 setMediaStatus(status);
468void QWasmMediaPlayer::videoMetaDataChanged()
475#include "moc_qwasmmediaplayer_p.cpp"
void mutedChanged(bool muted)
QAudioDevice device
\qmlproperty AudioDevice QtMultimedia::AudioOutput::device
void volumeChanged(float volume)
\inmodule QtCore \reentrant
QMimeType mimeTypeForData(const QByteArray &data) const
Returns a MIME type for data.
QMimeType mimeTypeForFile(const QString &fileName, MatchMode mode=MatchDefault) const
Returns a MIME type for the file named fileName using mode.
QString name
the name of the MIME type
static QMetaObject::Connection connect(const QObject *sender, const char *signal, const QObject *receiver, const char *member, Qt::ConnectionType=Qt::AutoConnection)
\threadsafe
static bool disconnect(const QObject *sender, const char *signal, const QObject *receiver, const char *member)
\threadsafe
\inmodule QtCore\reentrant
\macro QT_RESTRICTED_CAST_FROM_ASCII
bool contains(QChar c, Qt::CaseSensitivity cs=Qt::CaseSensitive) const
static QUuid createUuid()
On any platform other than Windows, this function returns a new UUID with variant QUuid::DCE and vers...
The QVideoSink class represents a generic sink for video data.
void progressChanged(qint32 position)
void bufferingChanged(qint32 percent)
void errorOccured(qint32 code, const QString &message)
void stateChanged(QWasmMediaPlayer::QWasmMediaPlayerState newState)
void statusChanged(QMediaPlayer::MediaStatus status)
void setVideoElement(emscripten::val videoElement)
void durationChanged(qint64 duration)
void setAudioDevice(const QAudioDevice &device) final
void setSource(const QUrl &url)
void updateVideoElementGeometry(const QRect &windowGeometry)
void sizeChange(qint32 width, qint32 height)
void durationChanged(qint64 duration)
void setMuted(bool muted)
emscripten::val currentVideoElement()
void setSource(const QUrl &url)
void setVideoMode(QWasmVideoOutput::WasmVideoMode mode)
void bufferingChanged(qint32 percent)
void seekTo(qint64 position)
void setVolume(qreal volume)
void createVideoElement(const std::string &id)
void stateChanged(QWasmMediaPlayer::QWasmMediaPlayerState newState)
void setSurface(QVideoSink *surface)
void statusChanged(QMediaPlayer::MediaStatus status)
void progressChanged(qint32 position)
void errorOccured(qint32 code, const QString &message)
qint64 getCurrentPosition()
void setPlaybackRate(qreal rate)
void doElementCallbacks()
void createOffscreenElement(const QSize &offscreenSize)
Combined button and popup list for selecting options.
DBusConnection const char DBusError * error
#define Q_LOGGING_CATEGORY(name,...)
#define qCDebug(category,...)
constexpr const T & qBound(const T &min, const T &val, const T &max)
static bool contains(const QJsonArray &haystack, unsigned needle)
GLint GLsizei GLsizei height
GLuint GLsizei const GLchar * message
GLsizei GLenum GLboolean sink
static qreal position(const QQuickItem *item, QQuickAnchors::Anchor anchorLine)
QT_BEGIN_NAMESPACE typedef uchar * output