// Copyright (C) 2021 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 "qwindowsintegration_p.h" #include #include #include #include #include #include #include #include #include #include QT_BEGIN_NAMESPACE class QWindowsMediaPlugin : public QPlatformMediaPlugin { Q_OBJECT Q_PLUGIN_METADATA(IID QPlatformMediaPlugin_iid FILE "windows.json") public: QWindowsMediaPlugin() : QPlatformMediaPlugin() {} QPlatformMediaIntegration* create(const QString &name) override { if (name == QLatin1String("windows")) return new QWindowsMediaIntegration; return nullptr; } }; QWindowsMediaIntegration::QWindowsMediaIntegration() { CoInitialize(NULL); MFStartup(MF_VERSION); m_videoDevices = new QWindowsVideoDevices(this); } QWindowsMediaIntegration::~QWindowsMediaIntegration() { delete m_formatInfo; MFShutdown(); CoUninitialize(); } QPlatformMediaFormatInfo *QWindowsMediaIntegration::formatInfo() { if (!m_formatInfo) m_formatInfo = new QWindowsFormatInfo(); return m_formatInfo; } QMaybe QWindowsMediaIntegration::createCaptureSession() { return new QWindowsMediaCaptureService(); } QMaybe QWindowsMediaIntegration::createAudioDecoder(QAudioDecoder *decoder) { return new MFAudioDecoderControl(decoder); } QMaybe QWindowsMediaIntegration::createPlayer(QMediaPlayer *parent) { return new MFPlayerControl(parent); } QMaybe QWindowsMediaIntegration::createCamera(QCamera *camera) { return new QWindowsCamera(camera); } QMaybe QWindowsMediaIntegration::createRecorder(QMediaRecorder *recorder) { return new QWindowsMediaEncoder(recorder); } QMaybe QWindowsMediaIntegration::createImageCapture(QImageCapture *imageCapture) { return new QWindowsImageCapture(imageCapture); } QMaybe QWindowsMediaIntegration::createVideoSink(QVideoSink *sink) { return new MFEvrVideoWindowControl(sink); } QT_END_NAMESPACE #include "qwindowsintegration.moc"