diff options
author | Bartlomiej Moskal <bartlomiej.moskal@qt.io> | 2022-10-07 14:09:52 +0200 |
---|---|---|
committer | Qt Cherry-pick Bot <cherrypick_bot@qt-project.org> | 2022-10-26 13:15:07 +0000 |
commit | 05d788344c5c6c8b8f08a3aaa0704394965daf38 (patch) | |
tree | 1589bbdd386fbf52d16398edd3b0eb060ed164b0 | |
parent | fb699e8256e21b48be798b4d1399d36bb19e2f41 (diff) |
Android: fix for changing AudioInput during recording
Before this commit, changes to the audio input were only applied after
restarting the recording.
Added support for the audio input switch while recording.
Fixes: QTBUG-104530
Change-Id: I933d5d9e218eb9f86cebb2550c5534ced700e58e
Reviewed-by: Assam Boudjelthia <assam.boudjelthia@qt.io>
(cherry picked from commit 24426e34812e49ec8dda9ee90f5553b7ccf24917)
Reviewed-by: Qt Cherry-pick Bot <cherrypick_bot@qt-project.org>
-rw-r--r-- | src/plugins/multimedia/android/mediacapture/qandroidcapturesession.cpp | 15 | ||||
-rw-r--r-- | src/plugins/multimedia/android/mediacapture/qandroidcapturesession_p.h | 1 |
2 files changed, 16 insertions, 0 deletions
diff --git a/src/plugins/multimedia/android/mediacapture/qandroidcapturesession.cpp b/src/plugins/multimedia/android/mediacapture/qandroidcapturesession.cpp index b8a7cbeb3..c7df3c001 100644 --- a/src/plugins/multimedia/android/mediacapture/qandroidcapturesession.cpp +++ b/src/plugins/multimedia/android/mediacapture/qandroidcapturesession.cpp @@ -5,6 +5,7 @@ #include "androidcamera_p.h" #include "qandroidcamerasession_p.h" +#include "qaudioinput.h" #include "androidmediaplayer_p.h" #include "androidmultimediautils_p.h" #include "qandroidmultimediautils_p.h" @@ -61,7 +62,21 @@ void QAndroidCaptureSession::setCameraSession(QAndroidCameraSession *cameraSessi void QAndroidCaptureSession::setAudioInput(QPlatformAudioInput *input) { + if (m_audioInput == input) + return; + + if (m_audioInput) { + disconnect(m_audioInputChanged); + } + m_audioInput = input; + + if (m_audioInput) { + m_audioInputChanged = connect(m_audioInput->q, &QAudioInput::deviceChanged, this, [this]() { + if (m_state == QMediaRecorder::RecordingState) + m_mediaRecorder->setAudioInput(m_audioInput->device.id()); + }); + } } void QAndroidCaptureSession::setAudioOutput(QPlatformAudioOutput *output) diff --git a/src/plugins/multimedia/android/mediacapture/qandroidcapturesession_p.h b/src/plugins/multimedia/android/mediacapture/qandroidcapturesession_p.h index 60481b4b1..42feb4c1e 100644 --- a/src/plugins/multimedia/android/mediacapture/qandroidcapturesession_p.h +++ b/src/plugins/multimedia/android/mediacapture/qandroidcapturesession_p.h @@ -143,6 +143,7 @@ private: QList<QSize> m_supportedResolutions; QList<qreal> m_supportedFramerates; + QMetaObject::Connection m_audioInputChanged; QMetaObject::Connection m_connOpenCamera; QMetaObject::Connection m_connActiveChangedCamera; |