diff options
author | Bartlomiej Moskal <bartlomiej.moskal@qt.io> | 2022-10-07 14:09:52 +0200 |
---|---|---|
committer | Bartlomiej Moskal <bartlomiej.moskal@qt.io> | 2022-10-26 12:51:02 +0000 |
commit | 24426e34812e49ec8dda9ee90f5553b7ccf24917 (patch) | |
tree | c54dc31438531c0a5620a4b0c81b1be6ebbc96ff /src | |
parent | 1531939f09ee15c9d3ce7b7db51675ccf1c4fafd (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.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; |