Revision control
Copy as Markdown
// 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 "qwindowsmediacapture_p.h"
#include <mediacapture/qwindowscamera_p.h>
#include <mediacapture/qwindowsimagecapture_p.h>
#include <mediacapture/qwindowsmediadevicesession_p.h>
#include <mediacapture/qwindowsmediaencoder_p.h>
#include <QtMultimedia/qaudiodevice.h>
#include <QtMultimedia/qmediadevices.h>
#include <QtMultimedia/private/qplatformaudioinput_p.h>
#include <QtMultimedia/private/qplatformaudiooutput_p.h>
QT_BEGIN_NAMESPACE
QWindowsMediaCaptureService::QWindowsMediaCaptureService()
{
m_mediaDeviceSession = new QWindowsMediaDeviceSession(this);
}
QWindowsMediaCaptureService::~QWindowsMediaCaptureService()
{
delete m_mediaDeviceSession;
}
QPlatformCamera *QWindowsMediaCaptureService::camera()
{
return m_camera;
}
void QWindowsMediaCaptureService::setCamera(QPlatformCamera *camera)
{
QWindowsCamera *control = static_cast<QWindowsCamera*>(camera);
if (m_camera == control)
return;
if (m_camera)
m_camera->setCaptureSession(nullptr);
m_camera = control;
if (m_camera)
m_camera->setCaptureSession(this);
Q_EMIT cameraChanged();
}
QPlatformImageCapture *QWindowsMediaCaptureService::imageCapture()
{
return m_imageCapture;
}
void QWindowsMediaCaptureService::setImageCapture(QPlatformImageCapture *imageCapture)
{
QWindowsImageCapture *control = static_cast<QWindowsImageCapture *>(imageCapture);
if (m_imageCapture == control)
return;
if (m_imageCapture)
m_imageCapture->setCaptureSession(nullptr);
m_imageCapture = control;
if (m_imageCapture)
m_imageCapture->setCaptureSession(this);
Q_EMIT imageCaptureChanged();
}
QPlatformMediaRecorder *QWindowsMediaCaptureService::mediaRecorder()
{
return m_encoder;
}
void QWindowsMediaCaptureService::setMediaRecorder(QPlatformMediaRecorder *recorder)
{
QWindowsMediaEncoder *control = static_cast<QWindowsMediaEncoder *>(recorder);
if (m_encoder == control)
return;
if (m_encoder)
m_encoder->setCaptureSession(nullptr);
m_encoder = control;
if (m_encoder)
m_encoder->setCaptureSession(this);
Q_EMIT encoderChanged();
}
void QWindowsMediaCaptureService::setAudioInput(QPlatformAudioInput *input)
{
m_mediaDeviceSession->setAudioInput(input ? input->q : nullptr);
}
void QWindowsMediaCaptureService::setAudioOutput(QPlatformAudioOutput *output)
{
m_mediaDeviceSession->setAudioOutput(output ? output->q : nullptr);
}
void QWindowsMediaCaptureService::setVideoPreview(QVideoSink *sink)
{
m_mediaDeviceSession->setVideoSink(sink);
}
QWindowsMediaDeviceSession *QWindowsMediaCaptureService::session() const
{
return m_mediaDeviceSession;
}
QT_END_NAMESPACE
#include "moc_qwindowsmediacapture_p.cpp"