// 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 "qwasmmediaintegration_p.h" #include #include #include #include #include #include #include #include "mediaplayer/qwasmmediaplayer_p.h" #include "mediaplayer/qwasmvideosink_p.h" #include "qwasmaudioinput_p.h" #include "common/qwasmaudiooutput_p.h" #include "mediacapture/qwasmmediacapturesession_p.h" #include "mediacapture/qwasmmediarecorder_p.h" #include "mediacapture/qwasmcamera_p.h" #include "mediacapture/qwasmmediacapturesession_p.h" #include "mediacapture/qwasmimagecapture_p.h" #include "mediacapture/qwasmscreencapture_p.h" #include "mediacapture/qwasmwindowcapture_p.h" #include "mediacapture/qwasmcapturablewindows_p.h" QT_BEGIN_NAMESPACE class QWasmMediaPlugin : public QPlatformMediaPlugin { Q_OBJECT Q_PLUGIN_METADATA(IID QPlatformMediaPlugin_iid FILE "wasm.json") public: QWasmMediaPlugin() : QPlatformMediaPlugin() {} QPlatformMediaIntegration *create(const QString &name) override { if (name == u"wasm") return new QWasmMediaIntegration; return nullptr; } }; QWasmMediaIntegration::QWasmMediaIntegration() : QPlatformMediaIntegration(QLatin1String("wasm")) { } q23::expected QWasmMediaIntegration::createPlayer(QMediaPlayer *player) { return new QWasmMediaPlayer(player); } q23::expected QWasmMediaIntegration::createVideoSink(QVideoSink *sink) { return new QWasmVideoSink(sink); } q23::expected QWasmMediaIntegration::createAudioInput(QAudioInput *audioInput) { return new QWasmAudioInput(audioInput); } q23::expected QWasmMediaIntegration::createAudioOutput(QAudioOutput *q) { return new QWasmAudioOutput(q); } QPlatformMediaFormatInfo *QWasmMediaIntegration::createFormatInfo() { // TODO: create custom implementation return new QPlatformMediaFormatInfo; } QPlatformVideoDevices *QWasmMediaIntegration::createVideoDevices() { return new QWasmCameraDevices(this); } q23::expected QWasmMediaIntegration::createCaptureSession() { return new QWasmMediaCaptureSession(); } q23::expected QWasmMediaIntegration::createRecorder(QMediaRecorder *recorder) { return new QWasmMediaRecorder(recorder); } q23::expected QWasmMediaIntegration::createCamera(QCamera *camera) { return new QWasmCamera(camera); } q23::expected QWasmMediaIntegration::createImageCapture(QImageCapture *imageCapture) { return new QWasmImageCapture(imageCapture); } QList QWasmMediaIntegration::videoInputs() { return videoDevices()->videoInputs(); } QPlatformSurfaceCapture *QWasmMediaIntegration::createScreenCapture(QScreenCapture *screenCapture) { return new QWasmScreenCapture(screenCapture); } QPlatformSurfaceCapture *QWasmMediaIntegration::createWindowCapture(QWindowCapture *windowCapture) { return new QWasmWindowCapture(windowCapture); } QPlatformCapturableWindows *QWasmMediaIntegration::createCapturableWindows() { return new QWasmCapturableWindows(); } QT_END_NAMESPACE #include "qwasmmediaintegration.moc"