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
qwasmmediadevices_p.h
Go to the documentation of this file.
1// Copyright (C) 2021 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
4#ifndef QWASMMEDIADEVICES_H
5#define QWASMMEDIADEVICES_H
6
7//
8// W A R N I N G
9// -------------
10//
11// This file is not part of the Qt API. It exists purely as an
12// implementation detail. This header file may change from version to
13// version without notice, or even be removed.
14//
15// We mean it.
16//
17
18#include <private/qplatformaudiodevices_p.h>
19
20#include <private/qplatformvideodevices_p.h>
21#include "qwasmjs_p.h"
22
23#include <QtCore/private/qstdweb_p.h>
24#include <qaudio.h>
25#include <qaudiodevice.h>
26#include <qcameradevice.h>
27#include <qset.h>
28#include <QtCore/qloggingcategory.h>
29
30#include <emscripten.h>
31#include <emscripten/val.h>
32#include <emscripten/bind.h>
33#include <QMapIterator>
35
36Q_DECLARE_LOGGING_CATEGORY(qWasmMediaDevices)
37
38class QWasmAudioEngine;
40
42{
44public:
46
48
49protected:
50 QList<QCameraDevice> findVideoInputs() const override;
51 void connectNotify(const QMetaMethod &signal) override;
52
53private:
54 // weak
55 QWasmMediaDevices *m_mediaDevices;
56};
57
59{
60public:
62
63 QPlatformAudioSource *createAudioSource(const QAudioDevice &, const QAudioFormat &,
64 QObject *parent) override;
65 QPlatformAudioSink *createAudioSink(const QAudioDevice &, const QAudioFormat &,
66 QObject *parent) override;
67
68 QLatin1String backendName() const override { return QLatin1String{ "WebAssembly" }; }
71
72protected:
73 QList<QAudioDevice> findAudioInputs() const override;
74 QList<QAudioDevice> findAudioOutputs() const override;
75 void connectNotify(const QMetaMethod &signal) override;
76
77};
78
80{
81public:
85
88
89 void initDevices();
90
91private:
92 void updateCameraDevices();
93 void getMediaDevices();
94 void getOpenALAudioDevices();
95 void parseDevices(emscripten::val devices);
96
97 QMap <std::string, QAudioDevice> m_audioOutputs;
98 QMap <std::string, QAudioDevice> m_audioInputs;
99 QMap <std::string, QCameraDevice> m_cameraDevices;
100
101 std::unique_ptr<qstdweb::EventCallback> m_deviceChangedCallback;
102
103 bool m_videoInputsAdded = false;
104 bool m_audioInputsAdded = false;
105 bool m_audioOutputsAdded = false;
106 emscripten::val m_jsMediaDevicesInterface = emscripten::val::undefined();
107 bool m_initDone = false;
108 bool m_firstInit = false;
109};
110
111QT_END_NAMESPACE
112
113#endif
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
QList< QCameraDevice > videoInputs() const
static QWasmMediaDevices * instance()
QList< QAudioDevice > audioOutputs() const
QList< QAudioDevice > audioInputs() const
Q_LOGGING_CATEGORY(lcEventDispatcher, "qt.eventdispatcher")