30class Q_MULTIMEDIA_EXPORT
QWasmAudioOutput :
public QObject,
public QPlatformAudioOutput
35 QWasmAudioOutput(QAudioOutput *qq);
38 enum AudioElementError {
39 MEDIA_ERR_ABORTED = 1,
42 MEDIA_ERR_SRC_NOT_SUPPORTED
45 void setAudioDevice(
const QAudioDevice &device) final;
46 void setMuted(
bool muted) override;
47 void setVolume(
float volume) override;
53 void setSource(
const QUrl &url);
54 void setSource(QIODevice *stream);
55 void setVideoElement(emscripten::val videoElement);
58 void readyChanged(
bool);
59 void bufferingChanged(qint32 percent);
60 void errorOccured(qint32 code,
const QString &message);
61 void stateChanged(QWasmMediaPlayer::QWasmMediaPlayerState newState);
62 void progressChanged(qint32 position);
63 void durationChanged(qint64 duration);
64 void statusChanged(QMediaPlayer::MediaStatus status);
65 void sizeChange(qint32 width, qint32 height);
66 void metaDataLoaded();
67 void seekableChanged(
bool seekable);
70 void doElementCallbacks();
71 void createAudioElement(
const std::string &id);
73 emscripten::val videoElement();
75 QScopedPointer<QWasmAudioSink> m_sink;
76 QScopedPointer<qstdweb::EventCallback> m_playEvent;
77 QScopedPointer<qstdweb::EventCallback> m_endedEvent;
78 QScopedPointer<qstdweb::EventCallback> m_durationChangeEvent;
79 QScopedPointer<qstdweb::EventCallback> m_errorChangeEvent;
80 QScopedPointer<qstdweb::EventCallback> m_canPlayChangeEvent;
81 QScopedPointer<qstdweb::EventCallback> m_canPlayThroughChangeEvent;
83 QScopedPointer<qstdweb::EventCallback> m_playingChangeEvent;
84 QScopedPointer<qstdweb::EventCallback> m_progressChangeEvent;
85 QScopedPointer<qstdweb::EventCallback> m_pauseChangeEvent;
86 QScopedPointer<qstdweb::EventCallback> m_timeUpdateEvent;
87 QScopedPointer<qstdweb::EventCallback> m_loadedDataEvent;
90 QIODevice *m_audioIODevice =
nullptr;
91 emscripten::val m_audio = emscripten::val::undefined();
92 emscripten::val m_videoElement = emscripten::val::undefined();
93 QMediaPlayer::MediaStatus m_currentMediaStatus;
94 qreal m_currentBufferedValue;