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}
18
22
23void QWasmAudioInput::setMuted(bool muted)
24{
25 qCDebug(qWasmAudioInput) << Q_FUNC_INFO << muted;
26 if (muted == m_wasMuted)
27 return;
28 if (m_mediaStream.isNull() || m_mediaStream.isUndefined())
29 return;
30 emscripten::val audioTracks = m_mediaStream.call<emscripten::val>("getAudioTracks");
31 if (audioTracks.isNull() || audioTracks.isUndefined())
32 return;
33 if (audioTracks["length"].as<int>() < 1)
34 return;
35 audioTracks[0].set("muted", muted);
36
37 emit mutedChanged(muted);
38 m_wasMuted = muted;
39
40}
41
43{
44 return m_wasMuted;
45}
46
47void QWasmAudioInput::setAudioDevice(const QAudioDevice &audioDevice)
48{
49 if (device == audioDevice)
50 return;
51
52 device = audioDevice;
53 setDeviceSourceStream(device.id().toStdString());
54}
55
56void QWasmAudioInput::setVolume(float volume)
57{
58 Q_UNUSED(volume)
59 // TODO seems no easy way to set input volume
60}
61
62void QWasmAudioInput::setDeviceSourceStream(const std::string &id)
63{
64 qCDebug(qWasmAudioInput) << Q_FUNC_INFO << id;
65
66 m_mediaInputStream.reset(new JsMediaInputStream());
67
68 m_mediaInputStream->setUseAudio(true);
69 m_mediaInputStream->setUseVideo(false);
70
71 connect(m_mediaInputStream.get(), &JsMediaInputStream::mediaStreamReady, this,
72 [this]() {
73 qCDebug(qWasmAudioInput) << "mediaStreamReady";
74
75 m_mediaStream = m_mediaInputStream->getMediaStream();
76
77 });
78
79 m_mediaInputStream->setStreamDevice(id);
80}
81
83{
84 return m_mediaStream;
85}
86
87QT_END_NAMESPACE
88
89#include "moc_qwasmaudioinput_p.cpp"
void setMuted(bool muted) override
emscripten::val mediaStream()
bool isMuted() const
void setVolume(float volume) final
Combined button and popup list for selecting options.