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