summaryrefslogtreecommitdiffstats
path: root/src/multimedia/platform/android/mediacapture
diff options
context:
space:
mode:
Diffstat (limited to 'src/multimedia/platform/android/mediacapture')
-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
6 files changed, 45 insertions, 59 deletions
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)