Qt
Internal/Contributor docs for the Qt SDK. Note: These are NOT official API docs; those are found at https://doc.qt.io/
Loading...
Searching...
No Matches
qwasmaudioinput.cpp
Go to the documentation of this file.
1// Copyright (C) 2022 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
5
6#include <qaudioinput.h>
7#include <private/qstdweb_p.h>
8
10
11Q_LOGGING_CATEGORY(qWasmAudioInput, "qt.multimedia.wasm.audioinput")
12
13QWasmAudioInput::QWasmAudioInput(QAudioInput *parent)
14 : QObject(parent), QPlatformAudioInput(parent)
15{
16 m_wasMuted = false;
17 setDeviceSourceStream("");
18}
19
23
24void QWasmAudioInput::setMuted(bool muted)
25{
26 qCDebug(qWasmAudioInput) << Q_FUNC_INFO << muted;
27 if (muted == m_wasMuted)
28 return;
29 if (m_mediaStream.isNull() || m_mediaStream.isUndefined())
30 return;
31 emscripten::val audioTracks = m_mediaStream.call<emscripten::val>("getAudioTracks");
32 if (audioTracks.isNull() || audioTracks.isUndefined())
33 return;
34 if (audioTracks["length"].as<int>() < 1)
35 return;
36 audioTracks[0].set("muted", muted);
37
38 emit mutedChanged(muted);
39 m_wasMuted = muted;
40
41}
42
44{
45 return m_wasMuted;
46}
47
48void QWasmAudioInput::setAudioDevice(const QAudioDevice &audioDevice)
49{
50 if (device == audioDevice)
51 return;
52
53 device = audioDevice;
54 setDeviceSourceStream(device.id().toStdString());
55}
56
57void QWasmAudioInput::setVolume(float volume)
58{
59 Q_UNUSED(volume)
60 // TODO seems no easy way to set input volume
61}
62
63void QWasmAudioInput::setDeviceSourceStream(const std::string &id)
64{
65 qCDebug(qWasmAudioInput) << Q_FUNC_INFO << id;
66
67 m_mediaInputStream.reset(new JsMediaInputStream());
68
69 m_mediaInputStream->setUseAudio(true);
70 m_mediaInputStream->setUseVideo(false);
71
72 connect(m_mediaInputStream.get(), &JsMediaInputStream::mediaStreamReady, this,
73 [this]() {
74 qCDebug(qWasmAudioInput) << "mediaStreamReady";
75
76 m_mediaStream = m_mediaInputStream->getMediaStream();
77
78 });
79
80 m_mediaInputStream->setStreamDevice(id);
81}
82
84{
85 return m_mediaStream;
86}
87
88QT_END_NAMESPACE
89
90#include "moc_qwasmaudioinput_p.cpp"
void setMuted(bool muted) override
emscripten::val mediaStream()
bool isMuted() const
void setVolume(float volume) final