summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorBartlomiej Moskal <bartlomiej.moskal@qt.io>2022-10-07 14:09:52 +0200
committerQt Cherry-pick Bot <cherrypick_bot@qt-project.org>2022-10-26 13:15:07 +0000
commit05d788344c5c6c8b8f08a3aaa0704394965daf38 (patch)
tree1589bbdd386fbf52d16398edd3b0eb060ed164b0
parentfb699e8256e21b48be798b4d1399d36bb19e2f41 (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.cpp15
-rw-r--r--src/plugins/multimedia/android/mediacapture/qandroidcapturesession_p.h1
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;