summaryrefslogtreecommitdiffstats
path: root/src
diff options
context:
space:
mode:
authorBartlomiej Moskal <bartlomiej.moskal@qt.io>2022-10-07 14:09:52 +0200
committerBartlomiej Moskal <bartlomiej.moskal@qt.io>2022-10-26 12:51:02 +0000
commit24426e34812e49ec8dda9ee90f5553b7ccf24917 (patch)
treec54dc31438531c0a5620a4b0c81b1be6ebbc96ff /src
parent1531939f09ee15c9d3ce7b7db51675ccf1c4fafd (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. Pick-to: 6.4 6.2 Fixes: QTBUG-104530 Change-Id: I933d5d9e218eb9f86cebb2550c5534ced700e58e Reviewed-by: Assam Boudjelthia <assam.boudjelthia@qt.io>
Diffstat (limited to 'src')
-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;