diff options
Diffstat (limited to 'src/multimedia/platform/android/mediacapture')
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) |