summaryrefslogtreecommitdiffstats
path: root/src/multimedia
diff options
context:
space:
mode:
Diffstat (limited to 'src/multimedia')
-rw-r--r--src/multimedia/camera/qcamera.cpp85
-rw-r--r--src/multimedia/camera/qcamera.h27
-rw-r--r--src/multimedia/camera/qcamera_p.h12
-rw-r--r--src/multimedia/platform/android/mediacapture/qandroidcameracontrol.cpp8
-rw-r--r--src/multimedia/platform/android/mediacapture/qandroidcameracontrol_p.h4
-rw-r--r--src/multimedia/platform/android/mediacapture/qandroidcamerasession.cpp60
-rw-r--r--src/multimedia/platform/android/mediacapture/qandroidcamerasession_p.h12
-rw-r--r--src/multimedia/platform/android/mediacapture/qandroidcameravideorenderercontrol.cpp4
-rw-r--r--src/multimedia/platform/android/mediacapture/qandroidcapturesession.cpp16
-rw-r--r--src/multimedia/platform/darwin/camera/avfcameracontrol.mm29
-rw-r--r--src/multimedia/platform/darwin/camera/avfcameracontrol_p.h6
-rw-r--r--src/multimedia/platform/darwin/camera/avfcameraexposurecontrol.mm22
-rw-r--r--src/multimedia/platform/darwin/camera/avfcameraexposurecontrol_p.h2
-rw-r--r--src/multimedia/platform/darwin/camera/avfcamerafocuscontrol.mm2
-rw-r--r--src/multimedia/platform/darwin/camera/avfcameraimageprocessingcontrol.mm2
-rw-r--r--src/multimedia/platform/darwin/camera/avfcameraservice.mm2
-rw-r--r--src/multimedia/platform/darwin/camera/avfcamerasession.mm32
-rw-r--r--src/multimedia/platform/darwin/camera/avfcamerasession_p.h10
-rw-r--r--src/multimedia/platform/darwin/camera/avfimagecapturecontrol.mm3
-rw-r--r--src/multimedia/platform/darwin/camera/avfmediarecordercontrol.mm20
-rw-r--r--src/multimedia/platform/gstreamer/mediacapture/qgstreamercameracontrol.cpp42
-rw-r--r--src/multimedia/platform/gstreamer/mediacapture/qgstreamercameracontrol_p.h8
-rw-r--r--src/multimedia/platform/gstreamer/mediacapture/qgstreamerrecordercontrol.cpp6
-rw-r--r--src/multimedia/platform/qnx/camera/bbcamerasession.cpp6
-rw-r--r--src/multimedia/platform/qplatformcamera_p.h6
-rw-r--r--src/multimedia/recording/qmediarecorder.h4
26 files changed, 151 insertions, 279 deletions
diff --git a/src/multimedia/camera/qcamera.cpp b/src/multimedia/camera/qcamera.cpp
index ace835aae..855dd48ef 100644
--- a/src/multimedia/camera/qcamera.cpp
+++ b/src/multimedia/camera/qcamera.cpp
@@ -84,28 +84,6 @@ void QCameraPrivate::_q_error(int error, const QString &errorString)
emit q->errorOccurred(this->error);
}
-void QCameraPrivate::setState(QCamera::State newState)
-{
- unsetError();
-
- if (!control) {
- _q_error(QCamera::CameraError, QCamera::tr("The camera service is missing"));
- return;
- }
-
- control->setState(newState);
-}
-
-void QCameraPrivate::_q_updateState(QCamera::State newState)
-{
- Q_Q(QCamera);
-
- if (newState != state) {
- state = newState;
- emit q->stateChanged(state);
- }
-}
-
void QCameraPrivate::init()
{
Q_Q(QCamera);
@@ -124,7 +102,7 @@ void QCameraPrivate::initControls()
control = captureInterface->cameraControl();
if (control) {
- q->connect(control, SIGNAL(stateChanged(QCamera::State)), q, SLOT(_q_updateState(QCamera::State)));
+ q->connect(control, SIGNAL(activeChanged(bool)), q, SIGNAL(activeChanged(bool)));
q->connect(control, SIGNAL(statusChanged(QCamera::Status)), q, SIGNAL(statusChanged(QCamera::Status)));
q->connect(control, SIGNAL(error(int,QString)), q, SLOT(_q_error(int,QString)));
}
@@ -225,6 +203,17 @@ bool QCamera::isAvailable() const
return (d->control != nullptr);
}
+bool QCamera::isActive() const
+{
+ Q_D(const QCamera);
+ return d->control->isActive();
+}
+
+void QCamera::setActive(bool active)
+{
+ Q_D(const QCamera);
+ d->control->setActive(active);
+}
/*!
Returns the camera exposure control object.
@@ -307,7 +296,8 @@ QPlatformMediaCapture *QCamera::captureInterface() const
return d_func()->captureInterface;
}
-/*!
+/*! \fn void QCamera::start()
+
Starts the camera.
State is changed to QCamera::ActiveState if camera is started
@@ -317,13 +307,9 @@ QPlatformMediaCapture *QCamera::captureInterface() const
starting the camera service can be asynchronous with the actual
status reported with QCamera::status property.
*/
-void QCamera::start()
-{
- Q_D(QCamera);
- d->setState(QCamera::ActiveState);
-}
-/*!
+/*! \fn void QCamera::stop()
+
Stops the camera.
The camera state is changed from QCamera::ActiveState to QCamera::LoadedState.
@@ -331,45 +317,6 @@ void QCamera::start()
\sa unload(), QCamera::UnloadedState
*/
-void QCamera::stop()
-{
- Q_D(QCamera);
- d->setState(QCamera::LoadedState);
-}
-
-/*!
- Opens the camera device.
- The camera state is changed to QCamera::LoadedState.
-
- It's not necessary to explicitly load the camera, unless the application
- needs to read the supported camera settings and change the default values
- according to the camera capabilities.
-
- In all the other cases, it's possible to start the camera directly
- from the unloaded state.
-
- /sa QCamera::UnloadedState
-*/
-void QCamera::load()
-{
- Q_D(QCamera);
- d->setState(QCamera::LoadedState);
-}
-
-/*!
- Closes the camera device and deallocates the related resources.
- The camera state is changed to QCamera::UnloadedState.
-*/
-void QCamera::unload()
-{
- Q_D(QCamera);
- d->setState(QCamera::UnloadedState);
-}
-
-QCamera::State QCamera::state() const
-{
- return d_func()->state;
-}
QCamera::Status QCamera::status() const
{
diff --git a/src/multimedia/camera/qcamera.h b/src/multimedia/camera/qcamera.h
index e70db30b0..18276df4b 100644
--- a/src/multimedia/camera/qcamera.h
+++ b/src/multimedia/camera/qcamera.h
@@ -66,7 +66,7 @@ class QCameraPrivate;
class Q_MULTIMEDIA_EXPORT QCamera : public QObject
{
Q_OBJECT
- Q_PROPERTY(QCamera::State state READ state NOTIFY stateChanged)
+ Q_PROPERTY(bool active READ isActive WRITE setActive NOTIFY activeChanged)
Q_PROPERTY(QCamera::Status status READ status NOTIFY statusChanged)
Q_ENUMS(Status)
@@ -76,21 +76,12 @@ class Q_MULTIMEDIA_EXPORT QCamera : public QObject
public:
enum Status {
UnavailableStatus,
- UnloadedStatus,
- LoadingStatus,
- UnloadingStatus,
- LoadedStatus,
+ InactiveStatus,
StartingStatus,
StoppingStatus,
ActiveStatus
};
- enum State {
- UnloadedState,
- LoadedState,
- ActiveState
- };
-
enum Error
{
NoError,
@@ -103,8 +94,8 @@ public:
~QCamera();
bool isAvailable() const;
+ bool isActive() const;
- State state() const;
Status status() const;
QCameraInfo cameraInfo() const;
@@ -122,14 +113,12 @@ public:
QPlatformMediaCapture *captureInterface() const;
public Q_SLOTS:
- void load();
- void unload();
-
- void start();
- void stop();
+ void setActive(bool active);
+ void start() { setActive(true); }
+ void stop() { setActive(false); }
Q_SIGNALS:
- void stateChanged(QCamera::State state);
+ void activeChanged(bool);
void statusChanged(QCamera::Status status);
void errorOccurred(QCamera::Error);
@@ -137,13 +126,11 @@ private:
Q_DISABLE_COPY(QCamera)
Q_DECLARE_PRIVATE(QCamera)
Q_PRIVATE_SLOT(d_func(), void _q_error(int, const QString &))
- Q_PRIVATE_SLOT(d_func(), void _q_updateState(QCamera::State))
friend class QCameraInfo;
};
QT_END_NAMESPACE
-Q_MEDIA_ENUM_DEBUG(QCamera, State)
Q_MEDIA_ENUM_DEBUG(QCamera, Status)
Q_MEDIA_ENUM_DEBUG(QCamera, Error)
diff --git a/src/multimedia/camera/qcamera_p.h b/src/multimedia/camera/qcamera_p.h
index a5f755754..cacd17b75 100644
--- a/src/multimedia/camera/qcamera_p.h
+++ b/src/multimedia/camera/qcamera_p.h
@@ -66,9 +66,7 @@ class QCameraPrivate : public QObjectPrivate
public:
QCameraPrivate()
: QObjectPrivate(),
- state(QCamera::UnloadedState),
- error(QCamera::NoError),
- supressLockChangedSignal(false)
+ error(QCamera::NoError)
{
}
@@ -86,21 +84,13 @@ public:
QObject *capture = nullptr;
- QCamera::State state;
-
QCamera::Error error;
QString errorString;
QCameraInfo cameraInfo;
- bool supressLockChangedSignal;
-
void _q_error(int error, const QString &errorString);
void unsetError() { error = QCamera::NoError; errorString.clear(); }
-
- void setState(QCamera::State);
-
- void _q_updateState(QCamera::State newState);
};
QT_END_NAMESPACE
diff --git a/src/multimedia/platform/android/mediacapture/qandroidcameracontrol.cpp b/src/multimedia/platform/android/mediacapture/qandroidcameracontrol.cpp
index 3a08621c7..c83fe4aa0 100644
--- a/src/multimedia/platform/android/mediacapture/qandroidcameracontrol.cpp
+++ b/src/multimedia/platform/android/mediacapture/qandroidcameracontrol.cpp
@@ -73,14 +73,14 @@ QAndroidCameraControl::~QAndroidCameraControl()
delete m_renderer;
}
-void QAndroidCameraControl::setState(QCamera::State state)
+void QAndroidCameraControl::setActive(bool active)
{
- m_cameraSession->setState(state);
+ m_cameraSession->setActive(active);
}
-QCamera::State QAndroidCameraControl::state() const
+bool QAndroidCameraControl::isActive() const
{
- return m_cameraSession->state();
+ return m_cameraSession->isActive();
}
QCamera::Status QAndroidCameraControl::status() const
diff --git a/src/multimedia/platform/android/mediacapture/qandroidcameracontrol_p.h b/src/multimedia/platform/android/mediacapture/qandroidcameracontrol_p.h
index 742105137..4eab6269a 100644
--- a/src/multimedia/platform/android/mediacapture/qandroidcameracontrol_p.h
+++ b/src/multimedia/platform/android/mediacapture/qandroidcameracontrol_p.h
@@ -66,8 +66,8 @@ public:
explicit QAndroidCameraControl(QAndroidCameraSession *session);
virtual ~QAndroidCameraControl();
- QCamera::State state() const override;
- void setState(QCamera::State state) override;
+ bool isActive() const override;
+ void setActive(bool active) override;
QCamera::Status status() const override;
diff --git a/src/multimedia/platform/android/mediacapture/qandroidcamerasession.cpp b/src/multimedia/platform/android/mediacapture/qandroidcamerasession.cpp
index 47d347c80..ab72ad836 100644
--- a/src/multimedia/platform/android/mediacapture/qandroidcamerasession.cpp
+++ b/src/multimedia/platform/android/mediacapture/qandroidcamerasession.cpp
@@ -68,9 +68,8 @@ QAndroidCameraSession::QAndroidCameraSession(QObject *parent)
, m_camera(0)
, m_nativeOrientation(0)
, m_videoOutput(0)
- , m_state(QCamera::UnloadedState)
, m_savedState(-1)
- , m_status(QCamera::UnloadedStatus)
+ , m_status(QCamera::InactiveStatus)
, m_previewStarted(false)
, m_captureDestination(QCameraImageCapture::CaptureToFile)
, m_lastImageCaptureId(0)
@@ -115,43 +114,36 @@ QAndroidCameraSession::~QAndroidCameraSession()
// applyResolution(m_actualImageSettings.resolution());
//}
-void QAndroidCameraSession::setState(QCamera::State state)
+void QAndroidCameraSession::setActive(bool active)
{
- if (m_state == state)
+ if (m_active == active)
return;
- m_state = state;
- emit stateChanged(m_state);
+ m_active = active;
+ emit activeChanged(m_active);
// If the application is inactive, the camera shouldn't be started. Save the desired state
// instead and it will be set when the application becomes active.
if (qApp->applicationState() == Qt::ApplicationActive)
- setStateHelper(state);
+ setActiveHelper(active);
else
- m_savedState = state;
+ m_savedState = active;
}
-void QAndroidCameraSession::setStateHelper(QCamera::State state)
+void QAndroidCameraSession::setActiveHelper(bool active)
{
- switch (state) {
- case QCamera::UnloadedState:
+ if (!active) {
+ stopPreview();
close();
- break;
- case QCamera::LoadedState:
- case QCamera::ActiveState:
+ } else {
if (!m_camera && !open()) {
- m_state = QCamera::UnloadedState;
- emit stateChanged(m_state);
+ m_active = false;
emit error(QCamera::CameraError, QStringLiteral("Failed to open camera"));
- m_status = QCamera::UnloadedStatus;
+ m_status = QCamera::InactiveStatus;
emit statusChanged(m_status);
return;
}
- if (state == QCamera::ActiveState)
- startPreview();
- else if (state == QCamera::LoadedState)
- stopPreview();
- break;
+ startPreview();
}
}
@@ -181,7 +173,7 @@ bool QAndroidCameraSession::open()
{
close();
- m_status = QCamera::LoadingStatus;
+ m_status = QCamera::StartingStatus;
emit statusChanged(m_status);
m_camera = AndroidCamera::open(m_selectedCamera);
@@ -202,8 +194,6 @@ bool QAndroidCameraSession::open()
m_nativeOrientation = m_camera->getNativeOrientation();
- m_status = QCamera::LoadedStatus;
-
if (m_camera->getPreviewFormat() != AndroidCamera::NV21)
m_camera->setPreviewFormat(AndroidCamera::NV21);
@@ -223,7 +213,7 @@ void QAndroidCameraSession::close()
stopPreview();
- m_status = QCamera::UnloadingStatus;
+ m_status = QCamera::StoppingStatus;
emit statusChanged(m_status);
m_readyForCapture = false;
@@ -235,7 +225,7 @@ void QAndroidCameraSession::close()
delete m_camera;
m_camera = 0;
- m_status = QCamera::UnloadedStatus;
+ m_status = QCamera::InactiveStatus;
emit statusChanged(m_status);
}
@@ -708,7 +698,7 @@ void QAndroidCameraSession::onCameraPreviewFailedToStart()
}
m_previewStarted = false;
- m_status = QCamera::LoadedStatus;
+ m_status = QCamera::InactiveStatus;
emit statusChanged(m_status);
setReadyForCapture(false);
@@ -718,7 +708,7 @@ void QAndroidCameraSession::onCameraPreviewFailedToStart()
void QAndroidCameraSession::onCameraPreviewStopped()
{
if (m_status == QCamera::StoppingStatus) {
- m_status = QCamera::LoadedStatus;
+ m_status = QCamera::InactiveStatus;
emit statusChanged(m_status);
}
@@ -803,7 +793,7 @@ AndroidCamera::ImageFormat QAndroidCameraSession::AndroidImageFormatFromQtPixelF
void QAndroidCameraSession::onVideoOutputReady(bool ready)
{
- if (ready && m_state == QCamera::ActiveState)
+ if (ready && m_active)
startPreview();
}
@@ -811,16 +801,16 @@ void QAndroidCameraSession::onApplicationStateChanged(Qt::ApplicationState state
{
switch (state) {
case Qt::ApplicationInactive:
- if (!m_keepActive && m_state != QCamera::UnloadedState) {
- m_savedState = m_state;
+ if (!m_keepActive && m_active) {
+ m_savedState = m_active;
close();
- m_state = QCamera::UnloadedState;
- emit stateChanged(m_state);
+ m_active = false;
+ emit activeChanged(m_active);
}
break;
case Qt::ApplicationActive:
if (m_savedState != -1) {
- setStateHelper(QCamera::State(m_savedState));
+ setActiveHelper(m_savedState);
m_savedState = -1;
}
break;
diff --git a/src/multimedia/platform/android/mediacapture/qandroidcamerasession_p.h b/src/multimedia/platform/android/mediacapture/qandroidcamerasession_p.h
index 5a3436feb..4ccdb074f 100644
--- a/src/multimedia/platform/android/mediacapture/qandroidcamerasession_p.h
+++ b/src/multimedia/platform/android/mediacapture/qandroidcamerasession_p.h
@@ -79,8 +79,8 @@ public:
void setSelectedCamera(int cameraId) { m_selectedCamera = cameraId; }
AndroidCamera *camera() const { return m_camera; }
- QCamera::State state() const { return m_state; }
- void setState(QCamera::State state);
+ bool isActive() const { return m_active; }
+ void setActive(bool active);
QCamera::Status status() const { return m_status; }
@@ -122,7 +122,7 @@ public:
Q_SIGNALS:
void statusChanged(QCamera::Status status);
- void stateChanged(QCamera::State);
+ void activeChanged(bool);
void error(int error, const QString &errorString);
void opened();
@@ -171,15 +171,15 @@ private:
static QVideoFrame::PixelFormat QtPixelFormatFromAndroidImageFormat(AndroidCamera::ImageFormat);
static AndroidCamera::ImageFormat AndroidImageFormatFromQtPixelFormat(QVideoFrame::PixelFormat);
- void setStateHelper(QCamera::State state);
+ void setActiveHelper(bool active);
int m_selectedCamera;
AndroidCamera *m_camera;
int m_nativeOrientation;
QAndroidVideoOutput *m_videoOutput;
- QCamera::State m_state;
- int m_savedState;
+ bool m_active = false;
+ int m_savedState = -1;
QCamera::Status m_status;
bool m_previewStarted;
diff --git a/src/multimedia/platform/android/mediacapture/qandroidcameravideorenderercontrol.cpp b/src/multimedia/platform/android/mediacapture/qandroidcameravideorenderercontrol.cpp
index 6c4f36914..47fac4e63 100644
--- a/src/multimedia/platform/android/mediacapture/qandroidcameravideorenderercontrol.cpp
+++ b/src/multimedia/platform/android/mediacapture/qandroidcameravideorenderercontrol.cpp
@@ -151,12 +151,12 @@ void QAndroidCameraDataVideoOutput::configureFormat()
} else {
m_control->cameraSession()->setPreviewCallback(this);
- if (m_control->cameraSession()->status() > QCamera::LoadedStatus)
+ if (m_control->cameraSession()->status() > QCamera::InactiveStatus)
m_control->cameraSession()->camera()->stopPreview();
m_control->cameraSession()->setPreviewFormat(qt_androidImageFormatFromPixelFormat(m_pixelFormat));
- if (m_control->cameraSession()->status() > QCamera::LoadedStatus)
+ if (m_control->cameraSession()->status() > QCamera::InactiveStatus)
m_control->cameraSession()->camera()->startPreview();
}
}
diff --git a/src/multimedia/platform/android/mediacapture/qandroidcapturesession.cpp b/src/multimedia/platform/android/mediacapture/qandroidcapturesession.cpp
index e534f0e80..e592983da 100644
--- a/src/multimedia/platform/android/mediacapture/qandroidcapturesession.cpp
+++ b/src/multimedia/platform/android/mediacapture/qandroidcapturesession.cpp
@@ -58,7 +58,7 @@ QAndroidCaptureSession::QAndroidCaptureSession(QAndroidCameraSession *cameraSess
, m_audioSource(AndroidMediaRecorder::DefaultAudioSource)
, m_duration(0)
, m_state(QMediaRecorder::StoppedState)
- , m_status(QMediaRecorder::UnloadedStatus)
+ , m_status(QMediaRecorder::StoppedStatus)
, m_encoderSettingsDirty(true)
, m_outputFormat(AndroidMediaRecorder::DefaultOutputFormat)
, m_audioEncoder(AndroidMediaRecorder::DefaultAudioEncoder)
@@ -85,21 +85,18 @@ QAndroidCaptureSession::QAndroidCaptureSession(QAndroidCameraSession *cameraSess
// Stop recording when stopping the camera.
if (status == QCamera::StoppingStatus) {
setState(QMediaRecorder::StoppedState);
- setStatus(QMediaRecorder::UnloadedStatus);
+ setStatus(QMediaRecorder::StoppedStatus);
return;
}
-
- if (status == QCamera::LoadingStatus)
- setStatus(QMediaRecorder::LoadingStatus);
});
connect(cameraSession, &QAndroidCameraSession::readyForCaptureChanged, this,
[this](bool ready) {
if (ready)
- setStatus(QMediaRecorder::LoadedStatus);
+ setStatus(QMediaRecorder::StoppedStatus);
});
} else {
// Audio-only recording.
- setStatus(QMediaRecorder::LoadedStatus);
+ setStatus(QMediaRecorder::StoppedStatus);
}
m_notifyTimer.setInterval(1000);
@@ -188,7 +185,7 @@ void QAndroidCaptureSession::setState(QMediaRecorder::State state)
void QAndroidCaptureSession::start()
{
- if (m_state == QMediaRecorder::RecordingState || m_status != QMediaRecorder::LoadedStatus)
+ if (m_state == QMediaRecorder::RecordingState || m_status != QMediaRecorder::StoppedStatus)
return;
setStatus(QMediaRecorder::StartingStatus);
@@ -337,8 +334,7 @@ void QAndroidCaptureSession::stop(bool error)
m_state = QMediaRecorder::StoppedState;
emit stateChanged(m_state);
- if (!m_cameraSession)
- setStatus(QMediaRecorder::LoadedStatus);
+ setStatus(QMediaRecorder::StoppedStatus);
}
void QAndroidCaptureSession::setStatus(QMediaRecorder::Status status)
diff --git a/src/multimedia/platform/darwin/camera/avfcameracontrol.mm b/src/multimedia/platform/darwin/camera/avfcameracontrol.mm
index 5ee2be793..c59ebbd45 100644
--- a/src/multimedia/platform/darwin/camera/avfcameracontrol.mm
+++ b/src/multimedia/platform/darwin/camera/avfcameracontrol.mm
@@ -53,42 +53,41 @@ AVFCameraControl::AVFCameraControl(AVFCameraService *service, QObject *parent)
: QPlatformCamera(parent)
, m_session(service->session())
, m_service(service)
- , m_state(QCamera::UnloadedState)
- , m_lastStatus(QCamera::UnloadedStatus)
+ , m_active(false)
+ , m_lastStatus(QCamera::InactiveStatus)
{
Q_UNUSED(service);
- connect(m_session, SIGNAL(stateChanged(QCamera::State)), SLOT(updateStatus()));
+ connect(m_session, SIGNAL(activeChanged(bool)), SLOT(updateStatus()));
}
AVFCameraControl::~AVFCameraControl()
{
}
-QCamera::State AVFCameraControl::state() const
+bool AVFCameraControl::isActive() const
{
- return m_state;
+ return m_active;
}
-void AVFCameraControl::setState(QCamera::State state)
+void AVFCameraControl::setActive(bool active)
{
- if (m_state == state)
+ if (m_active == active)
return;
- m_state = state;
- m_session->setState(state);
+ m_active = active;
+ m_session->setActive(active);
- Q_EMIT stateChanged(m_state);
+ Q_EMIT activeChanged(m_active);
updateStatus();
}
QCamera::Status AVFCameraControl::status() const
{
- static QCamera::Status statusTable[3][3] = {
- { QCamera::UnloadedStatus, QCamera::UnloadingStatus, QCamera::StoppingStatus }, //Unloaded state
- { QCamera::LoadingStatus, QCamera::LoadedStatus, QCamera::StoppingStatus }, //Loaded state
- { QCamera::LoadingStatus, QCamera::StartingStatus, QCamera::ActiveStatus } //ActiveState
+ static QCamera::Status statusTable[2][2] = {
+ { QCamera::InactiveStatus, QCamera::StoppingStatus }, //Inactive state
+ { QCamera::StartingStatus, QCamera::ActiveStatus } //ActiveState
};
- return statusTable[m_state][m_session->state()];
+ return statusTable[m_active ? 1 : 0][m_session->isActive() ? 1 : 0];
}
void AVFCameraControl::setCamera(const QCameraInfo &camera)
diff --git a/src/multimedia/platform/darwin/camera/avfcameracontrol_p.h b/src/multimedia/platform/darwin/camera/avfcameracontrol_p.h
index ffba37d70..9b58d5087 100644
--- a/src/multimedia/platform/darwin/camera/avfcameracontrol_p.h
+++ b/src/multimedia/platform/darwin/camera/avfcameracontrol_p.h
@@ -69,8 +69,8 @@ public:
AVFCameraControl(AVFCameraService *service, QObject *parent = nullptr);
~AVFCameraControl();
- QCamera::State state() const override;
- void setState(QCamera::State state) override;
+ bool isActive() const override;
+ void setActive(bool activce) override;
QCamera::Status status() const override;
@@ -96,7 +96,7 @@ private:
AVFCameraSession *m_session;
AVFCameraService *m_service;
- QCamera::State m_state;
+ bool m_active;
QCamera::Status m_lastStatus;
};
diff --git a/src/multimedia/platform/darwin/camera/avfcameraexposurecontrol.mm b/src/multimedia/platform/darwin/camera/avfcameraexposurecontrol.mm
index a9352f959..44f2a13ea 100644
--- a/src/multimedia/platform/darwin/camera/avfcameraexposurecontrol.mm
+++ b/src/multimedia/platform/darwin/camera/avfcameraexposurecontrol.mm
@@ -224,7 +224,7 @@ AVFCameraExposureControl::AVFCameraExposureControl(AVFCameraService *service)
m_session = m_service->session();
Q_ASSERT(m_session);
- connect(m_session, SIGNAL(stateChanged(QCamera::State)), SLOT(cameraStateChanged(QCamera::State)));
+ connect(m_session, SIGNAL(activeChanged(bool)), SLOT(cameraActiveChanged(bool)));
}
bool AVFCameraExposureControl::isParameterSupported(ExposureParameter parameter) const
@@ -562,10 +562,10 @@ bool AVFCameraExposureControl::setISO(const QVariant &value)
#endif
}
-void AVFCameraExposureControl::cameraStateChanged(QCamera::State newState)
+void AVFCameraExposureControl::cameraActiveChanged(bool active)
{
#ifdef Q_OS_IOS
- if (m_session->state() != QCamera::ActiveState)
+ if (!m_session->isActive())
return;
AVCaptureDevice *captureDevice = m_session->videoCaptureDevice();
@@ -657,9 +657,9 @@ void AVFCameraExposureControl::cameraStateChanged(QCamera::State newState)
isFlashSupported = isFlashAutoSupported = false;
isTorchSupported = isTorchAutoSupported = false;
- if (newState == QCamera::UnloadedState) {
+ if (!active) {
Q_EMIT flashReady(false);
- } else if (newState == QCamera::ActiveState) {
+ } else {
AVCaptureDevice *captureDevice = m_session->videoCaptureDevice();
if (!captureDevice) {
qDebugCamera() << Q_FUNC_INFO << "no capture device in 'Active' state";
@@ -698,14 +698,14 @@ void AVFCameraExposureControl::setFlashMode(QCameraExposure::FlashMode mode)
if (m_flashMode == mode)
return;
- if (m_session->state() == QCamera::ActiveState && !isFlashModeSupported(mode)) {
+ if (m_session->isActive() && !isFlashModeSupported(mode)) {
qDebugCamera() << Q_FUNC_INFO << "unsupported mode" << mode;
return;
}
m_flashMode = mode;
- if (m_session->state() != QCamera::ActiveState)
+ if (!m_session->isActive())
return;
applyFlashSettings();
@@ -723,7 +723,7 @@ bool AVFCameraExposureControl::isFlashModeSupported(QCameraExposure::FlashMode m
bool AVFCameraExposureControl::isFlashReady() const
{
- if (m_session->state() != QCamera::ActiveState)
+ if (!m_session->isActive())
return false;
AVCaptureDevice *captureDevice = m_session->videoCaptureDevice();
@@ -756,14 +756,14 @@ void AVFCameraExposureControl::setTorchMode(QCameraExposure::TorchMode mode)
if (m_torchMode == mode)
return;
- if (m_session->state() == QCamera::ActiveState && !isTorchModeSupported(mode)) {
+ if (m_session->isActive() && !isTorchModeSupported(mode)) {
qDebugCamera() << Q_FUNC_INFO << "unsupported torch mode" << mode;
return;
}
m_torchMode = mode;
- if (m_session->state() != QCamera::ActiveState)
+ if (!m_session->isActive())
return;
applyFlashSettings();
@@ -781,7 +781,7 @@ bool AVFCameraExposureControl::isTorchModeSupported(QCameraExposure::TorchMode m
void AVFCameraExposureControl::applyFlashSettings()
{
- Q_ASSERT(m_session->requestedState() == QCamera::ActiveState);
+ Q_ASSERT(m_session->isActive());
AVCaptureDevice *captureDevice = m_session->videoCaptureDevice();
if (!captureDevice) {
diff --git a/src/multimedia/platform/darwin/camera/avfcameraexposurecontrol_p.h b/src/multimedia/platform/darwin/camera/avfcameraexposurecontrol_p.h
index 842531159..8a8a89d51 100644
--- a/src/multimedia/platform/darwin/camera/avfcameraexposurecontrol_p.h
+++ b/src/multimedia/platform/darwin/camera/avfcameraexposurecontrol_p.h
@@ -86,7 +86,7 @@ public:
bool isTorchModeSupported(QCameraExposure::TorchMode mode) const override;
private Q_SLOTS:
- void cameraStateChanged(QCamera::State newState);
+ void cameraActiveChanged(bool active);
private:
void applyFlashSettings();
diff --git a/src/multimedia/platform/darwin/camera/avfcamerafocuscontrol.mm b/src/multimedia/platform/darwin/camera/avfcamerafocuscontrol.mm
index 628394686..a603083bf 100644
--- a/src/multimedia/platform/darwin/camera/avfcamerafocuscontrol.mm
+++ b/src/multimedia/platform/darwin/camera/avfcamerafocuscontrol.mm
@@ -236,7 +236,7 @@ float AVFCameraFocusControl::focusDistance() const
void AVFCameraFocusControl::cameraStateChanged()
{
- if (m_session->state() != QCamera::ActiveState)
+ if (m_session->isActive())
return;
AVCaptureDevice *captureDevice = m_session->videoCaptureDevice();
diff --git a/src/multimedia/platform/darwin/camera/avfcameraimageprocessingcontrol.mm b/src/multimedia/platform/darwin/camera/avfcameraimageprocessingcontrol.mm
index 6a55807b7..c08726825 100644
--- a/src/multimedia/platform/darwin/camera/avfcameraimageprocessingcontrol.mm
+++ b/src/multimedia/platform/darwin/camera/avfcameraimageprocessingcontrol.mm
@@ -320,7 +320,7 @@ bool AVFCameraImageProcessingControl::setColorTemperature(float temperature)
void AVFCameraImageProcessingControl::cameraStateChanged()
{
- if (m_session->state() != QCamera::ActiveState)
+ if (!m_session->isActive())
return;
setWhiteBalanceMode(QCameraImageProcessing::WhiteBalanceAuto);
}
diff --git a/src/multimedia/platform/darwin/camera/avfcameraservice.mm b/src/multimedia/platform/darwin/camera/avfcameraservice.mm
index 2dd507552..87aa14fd9 100644
--- a/src/multimedia/platform/darwin/camera/avfcameraservice.mm
+++ b/src/multimedia/platform/darwin/camera/avfcameraservice.mm
@@ -84,8 +84,6 @@ AVFCameraService::AVFCameraService()
AVFCameraService::~AVFCameraService()
{
- m_cameraControl->setState(QCamera::UnloadedState);
-
#ifdef Q_OS_IOS
delete m_recorderControl;
#endif
diff --git a/src/multimedia/platform/darwin/camera/avfcamerasession.mm b/src/multimedia/platform/darwin/camera/avfcamerasession.mm
index fa062a414..295bb4bff 100644
--- a/src/multimedia/platform/darwin/camera/avfcamerasession.mm
+++ b/src/multimedia/platform/darwin/camera/avfcamerasession.mm
@@ -143,8 +143,6 @@ AVFCameraSession::AVFCameraSession(AVFCameraService *service, QObject *parent)
: QObject(parent)
, m_service(service)
, m_capturePreviewWindowOutput(nullptr)
- , m_state(QCamera::UnloadedState)
- , m_active(false)
, m_videoInput(nil)
, m_defaultCodec(0)
{
@@ -217,29 +215,20 @@ AVCaptureDevice *AVFCameraSession::videoCaptureDevice() const
return nullptr;
}
-QCamera::State AVFCameraSession::state() const
+bool AVFCameraSession::isActive() const
{
- if (m_active)
- return QCamera::ActiveState;
-
- return m_state == QCamera::ActiveState ? QCamera::LoadedState : m_state;
+ return m_active;
}
-void AVFCameraSession::setState(QCamera::State newState)
+void AVFCameraSession::setActive(bool active)
{
- if (m_state == newState)
+ if (m_active == active)
return;
- qDebugCamera() << Q_FUNC_INFO << m_state << " -> " << newState;
-
- QCamera::State oldState = m_state;
- m_state = newState;
+ qDebugCamera() << Q_FUNC_INFO << m_active << " -> " << active;
- //attach video input during Unloaded->Loaded transition
- if (oldState == QCamera::UnloadedState)
+ if (active) {
attachVideoInputDevice();
-
- if (m_state == QCamera::ActiveState) {
Q_EMIT readyToConfigureConnections();
m_defaultCodec = 0;
defaultCodec();
@@ -259,19 +248,16 @@ void AVFCameraSession::setState(QCamera::State newState)
if (activeFormatSet)
[videoCaptureDevice() unlockForConfiguration];
- }
-
- if (oldState == QCamera::ActiveState) {
+ } else {
[m_captureSession stopRunning];
[m_captureSession beginConfiguration];
}
-
- Q_EMIT stateChanged(m_state);
}
void AVFCameraSession::processRuntimeError()
{
qWarning() << tr("Runtime camera error");
+ m_active = false;
Q_EMIT error(QCamera::CameraError, tr("Runtime camera error"));
}
@@ -281,7 +267,6 @@ void AVFCameraSession::processSessionStarted()
if (!m_active) {
m_active = true;
Q_EMIT activeChanged(m_active);
- Q_EMIT stateChanged(state());
}
}
@@ -291,7 +276,6 @@ void AVFCameraSession::processSessionStopped()
if (m_active) {
m_active = false;
Q_EMIT activeChanged(m_active);
- Q_EMIT stateChanged(state());
}
}
diff --git a/src/multimedia/platform/darwin/camera/avfcamerasession_p.h b/src/multimedia/platform/darwin/camera/avfcamerasession_p.h
index b31c04bab..d8db43ea5 100644
--- a/src/multimedia/platform/darwin/camera/avfcamerasession_p.h
+++ b/src/multimedia/platform/darwin/camera/avfcamerasession_p.h
@@ -83,9 +83,7 @@ public:
AVCaptureSession *captureSession() const { return m_captureSession; }
AVCaptureDevice *videoCaptureDevice() const;
- QCamera::State state() const;
- QCamera::State requestedState() const { return m_state; }
- bool isActive() const { return m_active; }
+ bool isActive() const;
FourCharCode defaultCodec();
@@ -94,7 +92,7 @@ public:
void setVideoSurface(QAbstractVideoSurface *surface);
public Q_SLOTS:
- void setState(QCamera::State state);
+ void setActive(bool active);
void processRuntimeError();
void processSessionStarted();
@@ -102,7 +100,6 @@ public Q_SLOTS:
Q_SIGNALS:
void readyToConfigureConnections();
- void stateChanged(QCamera::State newState);
void activeChanged(bool);
void newViewfinderFrame(const QVideoFrame &frame);
void error(int error, const QString &errorString);
@@ -119,8 +116,7 @@ private:
AVFCameraRendererControl *m_videoOutput;
AVFCameraWindowControl *m_capturePreviewWindowOutput;
- QCamera::State m_state;
- bool m_active;
+ bool m_active = false;
AVCaptureSession *m_captureSession;
AVCaptureDeviceInput *m_videoInput;
diff --git a/src/multimedia/platform/darwin/camera/avfimagecapturecontrol.mm b/src/multimedia/platform/darwin/camera/avfimagecapturecontrol.mm
index f124dffe3..956e2cf73 100644
--- a/src/multimedia/platform/darwin/camera/avfimagecapturecontrol.mm
+++ b/src/multimedia/platform/darwin/camera/avfimagecapturecontrol.mm
@@ -321,8 +321,7 @@ bool AVFImageCaptureControl::applySettings()
return false;
AVFCameraSession *session = m_service->session();
- if (!session || (session->state() != QCamera::ActiveState
- && session->state() != QCamera::LoadedState))
+ if (!session)
return false;
if (!m_service->imageCaptureControl()
diff --git a/src/multimedia/platform/darwin/camera/avfmediarecordercontrol.mm b/src/multimedia/platform/darwin/camera/avfmediarecordercontrol.mm
index 4b178ff44..cf988783a 100644
--- a/src/multimedia/platform/darwin/camera/avfmediarecordercontrol.mm
+++ b/src/multimedia/platform/darwin/camera/avfmediarecordercontrol.mm
@@ -131,7 +131,7 @@ AVFMediaRecorderControl::AVFMediaRecorderControl(AVFCameraService *service, QObj
, m_session(service->session())
, m_connected(false)
, m_state(QMediaRecorder::StoppedState)
- , m_lastStatus(QMediaRecorder::UnloadedStatus)
+ , m_lastStatus(QMediaRecorder::StoppedStatus)
, m_recordingStarted(false)
, m_recordingFinished(false)
, m_muted(false)
@@ -144,10 +144,10 @@ AVFMediaRecorderControl::AVFMediaRecorderControl(AVFCameraService *service, QObj
m_audioCaptureDevice = [AVCaptureDevice defaultDeviceWithMediaType:AVMediaTypeAudio];
- connect(m_cameraControl, SIGNAL(stateChanged(QCamera::State)), SLOT(updateStatus()));
+ connect(m_cameraControl, SIGNAL(activeChanged(bool)), SLOT(updateStatus()));
connect(m_cameraControl, SIGNAL(statusChanged(QCamera::Status)), SLOT(updateStatus()));
connect(m_session, SIGNAL(readyToConfigureConnections()), SLOT(setupSessionForCapture()));
- connect(m_session, SIGNAL(stateChanged(QCamera::State)), SLOT(setupSessionForCapture()));
+ connect(m_session, SIGNAL(activeChanged(bool)), SLOT(setupSessionForCapture()));
}
AVFMediaRecorderControl::~AVFMediaRecorderControl()
@@ -191,16 +191,15 @@ QMediaRecorder::Status AVFMediaRecorderControl::status() const
if (m_recordingStarted && !m_recordingFinished)
status = QMediaRecorder::FinalizingStatus;
else
- status = QMediaRecorder::LoadedStatus;
+ status = QMediaRecorder::StoppedStatus;
} else {
status = m_recordingStarted ? QMediaRecorder::RecordingStatus :
QMediaRecorder::StartingStatus;
}
} else {
//camera not started yet
- status = m_cameraControl->state() == QCamera::ActiveState && m_connected ?
- QMediaRecorder::LoadingStatus:
- QMediaRecorder::UnloadedStatus;
+ status = m_cameraControl->isActive() && m_connected ?
+ QMediaRecorder::StartingStatus : QMediaRecorder::StoppedStatus;
}
return status;
@@ -463,8 +462,7 @@ NSDictionary *avfVideoSettings(QMediaEncoderSettings &encoderSettings, AVCapture
void AVFMediaRecorderControl::applySettings()
{
- if (m_state != QMediaRecorder::StoppedState
- || (m_session->state() != QCamera::ActiveState && m_session->state() != QCamera::LoadedState))
+ if (m_state != QMediaRecorder::StoppedState)
return;
QMediaEncoderSettings resolved = m_settings;
@@ -640,7 +638,7 @@ void AVFMediaRecorderControl::setupSessionForCapture()
// request on iOS, but it shoudn't do so until we actually try to record.
AVCaptureSession *captureSession = m_session->captureSession();
- if (!m_connected && m_session->state() != QCamera::UnloadedState) {
+ if (!m_connected && m_session->isActive()) {
// Lock the video capture device to make sure the active format is not reset
const AVFConfigurationLock lock(m_session->videoCaptureDevice());
@@ -672,7 +670,7 @@ void AVFMediaRecorderControl::setupSessionForCapture()
Q_EMIT error(QMediaRecorder::ResourceError, tr("Could not connect the video recorder"));
qWarning() << "Could not connect the video recorder";
}
- } else if (m_connected || m_session->state() == QCamera::UnloadedState) {
+ } else if (m_connected || !m_session->isActive()) {
// Lock the video capture device to make sure the active format is not reset
const AVFConfigurationLock lock(m_session->videoCaptureDevice());
diff --git a/src/multimedia/platform/gstreamer/mediacapture/qgstreamercameracontrol.cpp b/src/multimedia/platform/gstreamer/mediacapture/qgstreamercameracontrol.cpp
index ac9aae51a..ca03b4be2 100644
--- a/src/multimedia/platform/gstreamer/mediacapture/qgstreamercameracontrol.cpp
+++ b/src/multimedia/platform/gstreamer/mediacapture/qgstreamercameracontrol.cpp
@@ -49,10 +49,7 @@
QGstreamerCameraControl::QGstreamerCameraControl(QGstreamerCaptureSession *session)
: QPlatformCamera(session),
m_session(session),
- m_state(QCamera::UnloadedState),
- m_status(QCamera::UnloadedStatus),
m_reloadPending(false)
-
{
connect(m_session, SIGNAL(stateChanged(QGstreamerCaptureSession::State)),
this, SLOT(updateStatus()));
@@ -69,18 +66,15 @@ QGstreamerCameraControl::QGstreamerCameraControl(QGstreamerCaptureSession *sessi
QGstreamerCameraControl::~QGstreamerCameraControl() = default;
-void QGstreamerCameraControl::setState(QCamera::State state)
+void QGstreamerCameraControl::setActive(bool active)
{
- if (m_state == state)
+ if (m_active == active)
return;
- m_state = state;
- switch (state) {
- case QCamera::UnloadedState:
- case QCamera::LoadedState:
+ m_active = active;
+ if (!m_active)
m_session->setState(QGstreamerCaptureSession::StoppedState);
- break;
- case QCamera::ActiveState:
+ else {
//postpone changing to Active if the session is nor ready yet
if (m_session->isReady()) {
m_session->setState(QGstreamerCaptureSession::PreviewState);
@@ -89,11 +83,10 @@ void QGstreamerCameraControl::setState(QCamera::State state)
qDebug() << "Camera session is not ready yet, postpone activating";
#endif
}
- break;
}
updateStatus();
- emit stateChanged(m_state);
+ emit activeChanged(active);
}
void QGstreamerCameraControl::setCamera(const QCameraInfo &camera)
@@ -102,28 +95,25 @@ void QGstreamerCameraControl::setCamera(const QCameraInfo &camera)
reloadLater();
}
-QCamera::State QGstreamerCameraControl::state() const
+bool QGstreamerCameraControl::isActive() const
{
- return m_state;
+ return m_active;
}
void QGstreamerCameraControl::updateStatus()
{
QCamera::Status oldStatus = m_status;
- switch (m_state) {
- case QCamera::UnloadedState:
- m_status = QCamera::UnloadedStatus;
- break;
- case QCamera::LoadedState:
- m_status = QCamera::LoadedStatus;
- break;
- case QCamera::ActiveState:
+ if (m_active) {
if (m_session->state() == QGstreamerCaptureSession::StoppedState)
m_status = QCamera::StartingStatus;
else
m_status = QCamera::ActiveStatus;
- break;
+ } else {
+ if (m_session->state() == QGstreamerCaptureSession::StoppedState)
+ m_status = QCamera::InactiveStatus;
+ else
+ m_status = QCamera::StoppingStatus;
}
if (oldStatus != m_status) {
@@ -135,7 +125,7 @@ void QGstreamerCameraControl::updateStatus()
void QGstreamerCameraControl::reloadLater()
{
//qDebug() << "reload pipeline requested";
- if (!m_reloadPending && m_state == QCamera::ActiveState) {
+ if (!m_reloadPending && m_active) {
m_reloadPending = true;
m_session->setState(QGstreamerCaptureSession::StoppedState);
QMetaObject::invokeMethod(this, "reloadPipeline", Qt::QueuedConnection);
@@ -147,7 +137,7 @@ void QGstreamerCameraControl::reloadPipeline()
//qDebug() << "reload pipeline";
if (m_reloadPending) {
m_reloadPending = false;
- if (m_state == QCamera::ActiveState && m_session->isReady()) {
+ if (m_active && m_session->isReady()) {
m_session->setState(QGstreamerCaptureSession::PreviewState);
}
}
diff --git a/src/multimedia/platform/gstreamer/mediacapture/qgstreamercameracontrol_p.h b/src/multimedia/platform/gstreamer/mediacapture/qgstreamercameracontrol_p.h
index e29da1ae1..8b0f2a038 100644
--- a/src/multimedia/platform/gstreamer/mediacapture/qgstreamercameracontrol_p.h
+++ b/src/multimedia/platform/gstreamer/mediacapture/qgstreamercameracontrol_p.h
@@ -67,8 +67,8 @@ public:
bool isValid() const { return true; }
- QCamera::State state() const override;
- void setState(QCamera::State state) override;
+ bool isActive() const override;
+ void setActive(bool active) override;
QCamera::Status status() const override { return m_status; }
@@ -86,8 +86,8 @@ private slots:
private:
QGstreamerCaptureSession *m_session;
- QCamera::State m_state;
- QCamera::Status m_status;
+ bool m_active = false;
+ QCamera::Status m_status = QCamera::InactiveStatus;
bool m_reloadPending;
};
diff --git a/src/multimedia/platform/gstreamer/mediacapture/qgstreamerrecordercontrol.cpp b/src/multimedia/platform/gstreamer/mediacapture/qgstreamerrecordercontrol.cpp
index 84f7ae9bf..71f7b9ac9 100644
--- a/src/multimedia/platform/gstreamer/mediacapture/qgstreamerrecordercontrol.cpp
+++ b/src/multimedia/platform/gstreamer/mediacapture/qgstreamerrecordercontrol.cpp
@@ -48,7 +48,7 @@ QGstreamerRecorderControl::QGstreamerRecorderControl(QGstreamerCaptureSession *s
: QPlatformMediaRecorder(session),
m_session(session),
m_state(QMediaRecorder::StoppedState),
- m_status(QMediaRecorder::UnloadedStatus)
+ m_status(QMediaRecorder::StoppedStatus)
{
connect(m_session, SIGNAL(stateChanged(QGstreamerCaptureSession::State)), SLOT(updateStatus()));
connect(m_session, SIGNAL(error(int,QString)), SLOT(handleSessionError(int,QString)));
@@ -82,7 +82,7 @@ QMediaRecorder::Status QGstreamerRecorderControl::status() const
{
static QMediaRecorder::Status statusTable[3][3] = {
//Stopped recorder state:
- { QMediaRecorder::LoadedStatus, QMediaRecorder::FinalizingStatus, QMediaRecorder::FinalizingStatus },
+ { QMediaRecorder::StoppedStatus, QMediaRecorder::FinalizingStatus, QMediaRecorder::FinalizingStatus },
//Recording recorder state:
{ QMediaRecorder::StartingStatus, QMediaRecorder::RecordingStatus, QMediaRecorder::PausedStatus },
//Paused recorder state:
@@ -114,7 +114,7 @@ void QGstreamerRecorderControl::updateStatus()
m_status = newStatus;
emit statusChanged(m_status);
// If stop has been called and session state became stopped.
- if (m_status == QMediaRecorder::LoadedStatus)
+ if (m_status == QMediaRecorder::StoppedStatus)
emit stateChanged(m_state);
}
}
diff --git a/src/multimedia/platform/qnx/camera/bbcamerasession.cpp b/src/multimedia/platform/qnx/camera/bbcamerasession.cpp
index b58e1b0d2..8493a236e 100644
--- a/src/multimedia/platform/qnx/camera/bbcamerasession.cpp
+++ b/src/multimedia/platform/qnx/camera/bbcamerasession.cpp
@@ -126,7 +126,7 @@ BbCameraSession::BbCameraSession(QObject *parent)
, m_lastImageCaptureId(0)
, m_captureDestination(QCameraImageCapture::CaptureToFile)
, m_videoState(QMediaRecorder::StoppedState)
- , m_videoStatus(QMediaRecorder::LoadedStatus)
+ , m_videoStatus(QMediaRecorder::StoppedStatus)
, m_handle(CAMERA_HANDLE_INVALID)
, m_windowGrabber(new WindowGrabber(this))
{
@@ -1029,7 +1029,7 @@ bool BbCameraSession::startVideoRecording()
const camera_error_t result = camera_start_video(m_handle, QFile::encodeName(m_videoOutputLocation), 0, videoRecordingStatusCallback, this);
if (result != CAMERA_EOK) {
- m_videoStatus = QMediaRecorder::LoadedStatus;
+ m_videoStatus = QMediaRecorder::StoppedStatus;
emit videoStatusChanged(m_videoStatus);
emit videoError(QMediaRecorder::ResourceError, tr("Unable to start video recording"));
@@ -1049,7 +1049,7 @@ void BbCameraSession::stopVideoRecording()
emit videoError(QMediaRecorder::ResourceError, tr("Unable to stop video recording"));
}
- m_videoStatus = QMediaRecorder::LoadedStatus;
+ m_videoStatus = QMediaRecorder::StoppedStatus;
emit videoStatusChanged(m_videoStatus);
m_videoRecordingDuration.invalidate();
diff --git a/src/multimedia/platform/qplatformcamera_p.h b/src/multimedia/platform/qplatformcamera_p.h
index 98b44134d..39603278e 100644
--- a/src/multimedia/platform/qplatformcamera_p.h
+++ b/src/multimedia/platform/qplatformcamera_p.h
@@ -58,8 +58,8 @@ class Q_MULTIMEDIA_EXPORT QPlatformCamera : public QObject
Q_OBJECT
public:
- virtual QCamera::State state() const = 0;
- virtual void setState(QCamera::State state) = 0;
+ virtual bool isActive() const = 0;
+ virtual void setActive(bool active) = 0;
virtual QCamera::Status status() const = 0;
@@ -72,7 +72,7 @@ public:
virtual void setVideoSurface(QAbstractVideoSurface *surface) = 0;
Q_SIGNALS:
- void stateChanged(QCamera::State);
+ void activeChanged(bool);
void statusChanged(QCamera::Status);
void error(int error, const QString &errorString);
diff --git a/src/multimedia/recording/qmediarecorder.h b/src/multimedia/recording/qmediarecorder.h
index 67a95fe67..89bc20fcf 100644
--- a/src/multimedia/recording/qmediarecorder.h
+++ b/src/multimedia/recording/qmediarecorder.h
@@ -89,9 +89,7 @@ public:
enum Status {
UnavailableStatus,
- UnloadedStatus,
- LoadingStatus,
- LoadedStatus,
+ StoppedStatus,
StartingStatus,
RecordingStatus,
PausedStatus,