diff options
author | Liang Qi <liang.qi@qt.io> | 2019-04-10 12:42:28 +0200 |
---|---|---|
committer | Liang Qi <liang.qi@qt.io> | 2019-04-10 12:42:28 +0200 |
commit | 82fdc8913483dd352ae2c326dd358fe9ff8f3f66 (patch) | |
tree | 5bc321569aa2ba0821a04b0b439edd549ded6512 /src/plugins/android | |
parent | f787689e74dee63c55f2731683a4ede752fd9e44 (diff) | |
parent | c8716f68feb5a38473cbd54972b9a9f095e9e24d (diff) | |
download | qtmultimedia-82fdc8913483dd352ae2c326dd358fe9ff8f3f66.tar.gz |
Merge remote-tracking branch 'origin/5.12' into 5.13
Conflicts:
tests/auto/integration/qdeclarativevideooutput/tst_qdeclarativevideooutput.cpp
Done-with: Val Doroshchuk <valentyn.doroshchuk@qt.io>
Change-Id: I745dd948c1e98180115f85c17bef802351bbdb6b
Diffstat (limited to 'src/plugins/android')
3 files changed, 36 insertions, 46 deletions
diff --git a/src/plugins/android/src/mediacapture/qandroidcamerasession.cpp b/src/plugins/android/src/mediacapture/qandroidcamerasession.cpp index 15aa027e4..8ba3ed12c 100644 --- a/src/plugins/android/src/mediacapture/qandroidcamerasession.cpp +++ b/src/plugins/android/src/mediacapture/qandroidcamerasession.cpp @@ -64,7 +64,7 @@ QAndroidCameraSession::QAndroidCameraSession(QObject *parent) , m_camera(0) , m_nativeOrientation(0) , m_videoOutput(0) - , m_captureMode(QCamera::CaptureViewfinder) + , m_captureMode(QCamera::CaptureStillImage) , m_state(QCamera::UnloadedState) , m_savedState(-1) , m_status(QCamera::UnloadedStatus) diff --git a/src/plugins/android/src/mediacapture/qandroidcapturesession.cpp b/src/plugins/android/src/mediacapture/qandroidcapturesession.cpp index bdc7ed403..bc9bc983e 100644 --- a/src/plugins/android/src/mediacapture/qandroidcapturesession.cpp +++ b/src/plugins/android/src/mediacapture/qandroidcapturesession.cpp @@ -73,16 +73,41 @@ QAndroidCaptureSession::QAndroidCaptureSession(QAndroidCameraSession *cameraSess QMediaStorageLocation::Sounds, AndroidMultimediaUtils::getDefaultMediaDirectory(AndroidMultimediaUtils::Sounds)); - connect(this, SIGNAL(stateChanged(QMediaRecorder::State)), this, SLOT(updateStatus())); - if (cameraSession) { connect(cameraSession, SIGNAL(opened()), this, SLOT(onCameraOpened())); - connect(cameraSession, SIGNAL(statusChanged(QCamera::Status)), this, SLOT(updateStatus())); - connect(cameraSession, SIGNAL(captureModeChanged(QCamera::CaptureModes)), - this, SLOT(updateStatus())); - connect(cameraSession, SIGNAL(readyForCaptureChanged(bool)), this, SLOT(updateStatus())); + connect(cameraSession, &QAndroidCameraSession::statusChanged, this, + [this](QCamera::Status status) { + if (status == QCamera::UnavailableStatus) { + setState(QMediaRecorder::StoppedState); + setStatus(QMediaRecorder::UnavailableStatus); + return; + } + + // Stop recording when stopping the camera. + if (status == QCamera::StoppingStatus) { + setState(QMediaRecorder::StoppedState); + setStatus(QMediaRecorder::UnloadedStatus); + return; + } + + if (status == QCamera::LoadingStatus) + setStatus(QMediaRecorder::LoadingStatus); + }); + connect(cameraSession, &QAndroidCameraSession::captureModeChanged, this, + [this](QCamera::CaptureModes mode) { + if (!mode.testFlag(QCamera::CaptureVideo)) { + setState(QMediaRecorder::StoppedState); + setStatus(QMediaRecorder::UnloadedStatus); + } + }); + connect(cameraSession, &QAndroidCameraSession::readyForCaptureChanged, this, + [this](bool ready) { + if (ready) + setStatus(QMediaRecorder::LoadedStatus); + }); } else { - updateStatus(); + // Audio-only recording. + setStatus(QMediaRecorder::LoadedStatus); } m_notifyTimer.setInterval(1000); @@ -277,6 +302,7 @@ void QAndroidCaptureSession::start() m_state = QMediaRecorder::RecordingState; emit stateChanged(m_state); + setStatus(QMediaRecorder::RecordingStatus); } void QAndroidCaptureSession::stop(bool error) @@ -315,6 +341,8 @@ void QAndroidCaptureSession::stop(bool error) m_state = QMediaRecorder::StoppedState; emit stateChanged(m_state); + if (!m_cameraSession) + setStatus(QMediaRecorder::LoadedStatus); } void QAndroidCaptureSession::setStatus(QMediaRecorder::Status status) @@ -539,43 +567,6 @@ QAndroidCaptureSession::CaptureProfile QAndroidCaptureSession::getProfile(int id return profile; } -void QAndroidCaptureSession::updateStatus() -{ - if (m_cameraSession) { - // Video recording - - // stop recording when stopping the camera - if (m_cameraSession->status() == QCamera::StoppingStatus - || !m_cameraSession->captureMode().testFlag(QCamera::CaptureVideo)) { - setState(QMediaRecorder::StoppedState); - return; - } - - if (m_state == QMediaRecorder::RecordingState) { - setStatus(QMediaRecorder::RecordingStatus); - } else if (m_cameraSession->status() == QCamera::UnavailableStatus) { - setStatus(QMediaRecorder::UnavailableStatus); - } else if (m_cameraSession->captureMode().testFlag(QCamera::CaptureVideo) - && m_cameraSession->isReadyForCapture()) { - if (m_cameraSession->status() == QCamera::StartingStatus) - setStatus(QMediaRecorder::LoadingStatus); - else if (m_cameraSession->status() == QCamera::ActiveStatus) - setStatus(QMediaRecorder::LoadedStatus); - else - setStatus(QMediaRecorder::UnloadedStatus); - } else { - setStatus(QMediaRecorder::UnloadedStatus); - } - - } else { - // Audio-only recording - if (m_state == QMediaRecorder::RecordingState) - setStatus(QMediaRecorder::RecordingStatus); - else - setStatus(QMediaRecorder::LoadedStatus); - } -} - void QAndroidCaptureSession::onError(int what, int extra) { Q_UNUSED(what) diff --git a/src/plugins/android/src/mediacapture/qandroidcapturesession.h b/src/plugins/android/src/mediacapture/qandroidcapturesession.h index 286fd1aa2..8cfb9ad2a 100644 --- a/src/plugins/android/src/mediacapture/qandroidcapturesession.h +++ b/src/plugins/android/src/mediacapture/qandroidcapturesession.h @@ -97,7 +97,6 @@ Q_SIGNALS: private Q_SLOTS: void updateDuration(); void onCameraOpened(); - void updateStatus(); void onError(int what, int extra); void onInfo(int what, int extra); |