Revision control
Copy as Markdown
// Copyright (C) 2022 The Qt Company Ltd.
// SPDX-License-Identifier: LicenseRef-Qt-Commercial OR LGPL-3.0-only OR GPL-2.0-only OR GPL-3.0-only
#include "qwasmaudioinput_p.h"
#include <QtMultimedia/qaudioinput.h>
#include <QtCore/private/qstdweb_p.h>
QT_BEGIN_NAMESPACE
Q_LOGGING_CATEGORY(qWasmAudioInput, "qt.multimedia.wasm.audioinput")
QWasmAudioInput::QWasmAudioInput(QAudioInput *parent)
: QObject(parent), QPlatformAudioInput(parent)
{
m_wasMuted = false;
}
QWasmAudioInput::~QWasmAudioInput()
{
}
void QWasmAudioInput::setMuted(bool muted)
{
qCDebug(qWasmAudioInput) << Q_FUNC_INFO << muted;
if (muted == m_wasMuted)
return;
if (m_mediaStream.isNull() || m_mediaStream.isUndefined())
return;
emscripten::val audioTracks = m_mediaStream.call<emscripten::val>("getAudioTracks");
if (audioTracks.isNull() || audioTracks.isUndefined())
return;
if (audioTracks["length"].as<int>() < 1)
return;
audioTracks[0].set("muted", muted);
Q_EMIT mutedChanged(muted);
m_wasMuted = muted;
}
bool QWasmAudioInput::isMuted() const
{
return m_wasMuted;
}
void QWasmAudioInput::setAudioDevice(const QAudioDevice &audioDevice)
{
if (m_deviceId != audioDevice.id().toStdString()) {
m_deviceId = audioDevice.id().toStdString();
JsMediaInputStream::replaceAudioStreamDevice(m_deviceId);
}
}
void QWasmAudioInput::setVolume(float volume)
{
Q_UNUSED(volume)
// TODO seems no easy way to set input volume
}
emscripten::val QWasmAudioInput::mediaStream()
{
return m_mediaStream;
}
QT_END_NAMESPACE
#include "moc_qwasmaudioinput_p.cpp"