diff options
author | Lars Knoll <lars.knoll@qt.io> | 2021-06-04 15:58:15 +0200 |
---|---|---|
committer | Lars Knoll <lars.knoll@qt.io> | 2021-06-11 15:12:28 +0200 |
commit | d5b87ad6554a674aa38a3d301918a49f5baf57a7 (patch) | |
tree | a2d28e0f72142a13ca602c1ef927f3a81a15eee7 /examples/multimediawidgets | |
parent | 9fd208f11a218d8a8b07fc525258eea3b3596d62 (diff) |
Use QAudioInput in QMediaCaptureSession
Convert the audioInput property to use a pointer to a QAudioInput
in line with the API changes planned. Not setting up a QAudioInput
implies that you do not get any audio.
Move the volume and muted properties over to QAudioInput, they should
really not be part of the QMediaCaptureSession.
Adjust the platform API accordingly and adjust implementations.
The Android adaptation is incomplete, but that was the case before as
well. This needs some refactoring to properly support setting devices
and adjusting volume/muted.
Dynamically adjusting to changes of the audio input device is not
yet implemented on Windows.
Change-Id: I2fb63b9e57908d6dc02130b8d534ef7ac1a1ac85
Reviewed-by: André de la Rocha <andre.rocha@qt.io>
Reviewed-by: Volker Hilsheimer <volker.hilsheimer@qt.io>
Diffstat (limited to 'examples/multimediawidgets')
-rw-r--r-- | examples/multimediawidgets/camera/camera.cpp | 7 | ||||
-rw-r--r-- | examples/multimediawidgets/camera/camera.h | 2 | ||||
-rw-r--r-- | examples/multimediawidgets/camera/videosettings.cpp | 6 |
3 files changed, 11 insertions, 4 deletions
diff --git a/examples/multimediawidgets/camera/camera.cpp b/examples/multimediawidgets/camera/camera.cpp index 8e339a6cb..0e8d2b4a3 100644 --- a/examples/multimediawidgets/camera/camera.cpp +++ b/examples/multimediawidgets/camera/camera.cpp @@ -60,6 +60,7 @@ #include <QMediaMetaData> #include <QMediaDevices> #include <QAudioDevice> +#include <QAudioInput> #include <QMessageBox> #include <QPalette> @@ -74,6 +75,9 @@ Camera::Camera() { ui->setupUi(this); + m_audioInput.reset(new QAudioInput); + m_captureSession.setAudioInput(m_audioInput.get()); + //Camera devices: videoDevicesGroup = new QActionGroup(this); @@ -110,7 +114,6 @@ void Camera::setCamera(const QCameraDevice &cameraInfo) connect(ui->exposureCompensation, &QAbstractSlider::valueChanged, this, &Camera::setExposureCompensation); m_captureSession.setVideoOutput(ui->viewfinder); - m_captureSession.setAudioInput(QMediaDevices::defaultAudioInput()); updateCameraActive(m_camera->isActive()); updateRecorderState(m_mediaEncoder->state()); @@ -229,7 +232,7 @@ void Camera::stop() void Camera::setMuted(bool muted) { - m_captureSession.setMuted(muted); + m_captureSession.audioInput()->setMuted(muted); } void Camera::takeImage() diff --git a/examples/multimediawidgets/camera/camera.h b/examples/multimediawidgets/camera/camera.h index 95e436744..c30927deb 100644 --- a/examples/multimediawidgets/camera/camera.h +++ b/examples/multimediawidgets/camera/camera.h @@ -58,6 +58,7 @@ #include <QMediaMetaData> #include <QMediaCaptureSession> #include <QMediaDevices> +#include <QAudioInput> #include <QMainWindow> @@ -133,6 +134,7 @@ private: QMediaDevices m_devices; QMediaCaptureSession m_captureSession; QScopedPointer<QCamera> m_camera; + QScopedPointer<QAudioInput> m_audioInput; QCameraImageCapture *m_imageCapture; QScopedPointer<QMediaEncoder> m_mediaEncoder; diff --git a/examples/multimediawidgets/camera/videosettings.cpp b/examples/multimediawidgets/camera/videosettings.cpp index aafd4b5f3..29764eb9a 100644 --- a/examples/multimediawidgets/camera/videosettings.cpp +++ b/examples/multimediawidgets/camera/videosettings.cpp @@ -60,6 +60,7 @@ #include <QMediaCaptureSession> #include <QCameraDevice> #include <QCamera> +#include <QAudioInput> VideoSettings::VideoSettings(QMediaEncoder *mediaRecorder, QWidget *parent) : QDialog(parent), @@ -77,8 +78,9 @@ VideoSettings::VideoSettings(QMediaEncoder *mediaRecorder, QWidget *parent) } //sample rate: - ui->audioSampleRateBox->setRange(mediaRecorder->captureSession()->audioInput().minimumSampleRate(), - mediaRecorder->captureSession()->audioInput().maximumSampleRate()); + auto audioDevice = mediaRecorder->captureSession()->audioInput()->device(); + ui->audioSampleRateBox->setRange(audioDevice.minimumSampleRate(), + audioDevice.maximumSampleRate()); //video codecs ui->videoCodecBox->addItem(tr("Default video codec"), QVariant::fromValue(QMediaFormat::VideoCodec::Unspecified)); |