4#ifndef QWASMMEDIADEVICES_H
5#define QWASMMEDIADEVICES_H
18#include <private/qplatformaudiodevices_p.h>
20#include <private/qplatformvideodevices_p.h>
23#include <QtCore/private/qstdweb_p.h>
25#include <qaudiodevice.h>
26#include <qcameradevice.h>
28#include <QtCore/qloggingcategory.h>
30#include <emscripten.h>
31#include <emscripten/val.h>
32#include <emscripten/bind.h>
38Q_DECLARE_LOGGING_CATEGORY(qWasmMediaDevices)
40class QWasmAudioEngine;
66 QObject *parent)
override;
68 QObject *parent)
override;
95 void updateCameraDevices();
96 void parseDevices(emscripten::val devices);
97 void insertFallbackAudioOutput();
98 QByteArray findDefaultDeviceId(emscripten::val devices, std::string_view deviceKind)
const;
99 static void applyDefaultDevice(QList<QAudioDevice> &audioDevices,
100 const QByteArray &defaultDeviceId);
101 static void applyDefaultDevice(QList<QCameraDevice> &cameraDevices,
102 const QByteArray &defaultDeviceId);
105 QList<QAudioDevice> m_audioOutputs;
106 QList<QAudioDevice> m_audioInputs;
107 QList<QCameraDevice> m_cameraDevices;
109 std::unique_ptr<qstdweb::EventCallback> m_deviceChangedCallback;
111 bool m_videoInputsAdded =
false;
112 bool m_audioInputsAdded =
false;
113 bool m_audioOutputsAdded =
false;
115 bool m_initDone =
false;
116 emscripten::val devicesList;
The QAudioDevice class provides an information about audio devices and their functionality.
The QCameraDevice class provides general information about camera devices.
QPlatformAudioSink * createAudioSink(const QAudioDevice &, const QAudioFormat &, QObject *parent) override
QList< QAudioDevice > findAudioOutputs() const override
QList< QAudioDevice > findAudioInputs() const override
QPlatformAudioSource * createAudioSource(const QAudioDevice &, const QAudioFormat &, QObject *parent) override
void connectNotify(const QMetaMethod &signal) override
QLatin1String backendName() const override
void connectNotify(const QMetaMethod &signal) override
QList< QCameraDevice > findVideoInputs() const override
Combined button and popup list for selecting options.
std::string effectiveDeviceId(const std::string &deviceId, const std::string &deviceKind)
bool containsDeviceId(const DeviceList &devices, const QByteArray &deviceId)
constexpr std::string_view s_communicationsDeviceId
constexpr std::string_view s_defaultDeviceId
std::string stringProperty(const emscripten::val &mediaDevice, const char *property)
bool isAliasDeviceId(std::string_view deviceId)
Q_LOGGING_CATEGORY(lcEventDispatcher, "qt.eventdispatcher")