summaryrefslogtreecommitdiffstats
path: root/examples/multimediawidgets
diff options
context:
space:
mode:
authorLars Knoll <lars.knoll@qt.io>2021-03-05 11:16:53 +0100
committerLars Knoll <lars.knoll@qt.io>2021-03-16 12:58:22 +0000
commitc93b4b54c44ca28e34fe7e12cc2fb279f3e84b54 (patch)
tree74dcff9f6fca1d5a7706b242b0a9bae8c9bd38fc /examples/multimediawidgets
parent4c7a93115a6346d318c4a23f70cf858781ec4591 (diff)
Make QMediaCaptureSession the new central class for media capturing
You now need to instantiate a capture session and hook up camera, image capture and recording to it. This gives a cleaner architecture for the whole capturing process. Change-Id: I7c7f6c4a841512b038834f4653ef7ab790c43f8f Reviewed-by: Doris Verria <doris.verria@qt.io> Reviewed-by: Lars Knoll <lars.knoll@qt.io>
Diffstat (limited to 'examples/multimediawidgets')
-rw-r--r--examples/multimediawidgets/camera/camera.cpp9
-rw-r--r--examples/multimediawidgets/camera/camera.h2
-rw-r--r--examples/multimediawidgets/camera/imagesettings.cpp4
3 files changed, 10 insertions, 5 deletions
diff --git a/examples/multimediawidgets/camera/camera.cpp b/examples/multimediawidgets/camera/camera.cpp
index b8fd7c4d5..8fa860901 100644
--- a/examples/multimediawidgets/camera/camera.cpp
+++ b/examples/multimediawidgets/camera/camera.cpp
@@ -104,14 +104,17 @@ Camera::Camera() : ui(new Ui::Camera)
void Camera::setCamera(const QCameraInfo &cameraInfo)
{
m_camera.reset(new QCamera(cameraInfo));
+ m_captureSession.setCamera(m_camera.data());
connect(m_camera.data(), &QCamera::activeChanged, this, &Camera::updateCameraActive);
connect(m_camera.data(), &QCamera::errorOccurred, this, &Camera::displayCameraError);
- m_mediaRecorder.reset(new QMediaRecorder(m_camera.data()));
+ m_mediaRecorder.reset(new QMediaRecorder);
+ m_captureSession.setRecorder(m_mediaRecorder.data());
connect(m_mediaRecorder.data(), &QMediaRecorder::stateChanged, this, &Camera::updateRecorderState);
- m_imageCapture = new QCameraImageCapture(m_camera.data());
+ m_imageCapture = new QCameraImageCapture;
+ m_captureSession.setImageCapture(m_imageCapture);
connect(m_mediaRecorder.data(), &QMediaRecorder::durationChanged, this, &Camera::updateRecordTime);
connect(m_mediaRecorder.data(), QOverload<QMediaRecorder::Error>::of(&QMediaRecorder::error),
@@ -119,7 +122,7 @@ void Camera::setCamera(const QCameraInfo &cameraInfo)
connect(ui->exposureCompensation, &QAbstractSlider::valueChanged, this, &Camera::setExposureCompensation);
- m_camera->setViewfinder(ui->viewfinder);
+ m_captureSession.setVideoPreview(ui->viewfinder);
updateCameraActive(m_camera->isActive());
updateRecorderState(m_mediaRecorder->state());
diff --git a/examples/multimediawidgets/camera/camera.h b/examples/multimediawidgets/camera/camera.h
index 8b8968142..fe47acf75 100644
--- a/examples/multimediawidgets/camera/camera.h
+++ b/examples/multimediawidgets/camera/camera.h
@@ -56,6 +56,7 @@
#include <QMediaRecorder>
#include <QScopedPointer>
#include <QMediaMetaData>
+#include <QMediaCaptureSession>
#include <QMainWindow>
@@ -128,6 +129,7 @@ private:
QActionGroup *videoDevicesGroup = nullptr;
+ QMediaCaptureSession m_captureSession;
QScopedPointer<QCamera> m_camera;
QCameraImageCapture *m_imageCapture;
QScopedPointer<QMediaRecorder> m_mediaRecorder;
diff --git a/examples/multimediawidgets/camera/imagesettings.cpp b/examples/multimediawidgets/camera/imagesettings.cpp
index a74982854..df0056029 100644
--- a/examples/multimediawidgets/camera/imagesettings.cpp
+++ b/examples/multimediawidgets/camera/imagesettings.cpp
@@ -55,7 +55,7 @@
#include <QDebug>
#include <QCameraImageCapture>
#include <QCamera>
-
+#include <QMediaCaptureSession>
ImageSettings::ImageSettings(QCameraImageCapture *imageCapture, QWidget *parent) :
QDialog(parent),
@@ -75,7 +75,7 @@ ImageSettings::ImageSettings(QCameraImageCapture *imageCapture, QWidget *parent)
ui->imageQualitySlider->setRange(0, int(QImageEncoderSettings::VeryHighQuality));
ui->imageResolutionBox->addItem(tr("Default Resolution"));
- const QList<QSize> supportedResolutions = imagecapture->camera()->cameraInfo().photoResolutions();
+ const QList<QSize> supportedResolutions = imagecapture->captureSession()->camera()->cameraInfo().photoResolutions();
for (const QSize &resolution : supportedResolutions) {
ui->imageResolutionBox->addItem(QString("%1x%2").arg(resolution.width()).arg(resolution.height()),
QVariant(resolution));