summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorDoris Verria <doris.verria@qt.io>2022-01-13 09:04:19 +0100
committerQt Cherry-pick Bot <cherrypick_bot@qt-project.org>2022-01-13 09:52:25 +0000
commit60e5b9329d36904a757d4f1d145cfb8e2357ad51 (patch)
treed96debfa76fa6440bdaebdd0042d96342c3a9eae
parent711b358811988ce5b2e204c0e7f0b538d0ae9106 (diff)
macOS/iOS: Set default audio device
Set QCoreAudioDeviceInfo's isDefault property to true if the audio device is default. Fixes: QTBUG-99583 Change-Id: I8db2674155673ed9e91077a26d7c8bfda07ea653 Reviewed-by: Lars Knoll <lars.knoll@qt.io> (cherry picked from commit dee6b3963974dc814f5f828909dc19792d34af09) Reviewed-by: Qt Cherry-pick Bot <cherrypick_bot@qt-project.org>
-rw-r--r--src/multimedia/platform/darwin/qdarwinmediadevices.mm21
1 files changed, 16 insertions, 5 deletions
diff --git a/src/multimedia/platform/darwin/qdarwinmediadevices.mm b/src/multimedia/platform/darwin/qdarwinmediadevices.mm
index 5ff4b7629..095a9003f 100644
--- a/src/multimedia/platform/darwin/qdarwinmediadevices.mm
+++ b/src/multimedia/platform/darwin/qdarwinmediadevices.mm
@@ -105,8 +105,11 @@ QList<QAudioDevice> availableAudioDevices(QAudioDevice::Mode mode)
QList<QAudioDevice> devices;
AudioDeviceID defaultDevice = defaultAudioDevice(mode);
- if (defaultDevice != 0)
- devices << (new QCoreAudioDeviceInfo(defaultDevice, uniqueId(defaultDevice, mode), mode))->create();
+ if (defaultDevice != 0) {
+ auto *dev = new QCoreAudioDeviceInfo(defaultDevice, uniqueId(defaultDevice, mode), mode);
+ dev->isDefault = true;
+ devices << dev->create();
+ }
UInt32 propSize = 0;
AudioObjectPropertyAddress audioDevicesPropertyAddress = { kAudioHardwarePropertyDevices,
@@ -204,6 +207,8 @@ QDarwinMediaDevices::~QDarwinMediaDevices()
QList<QAudioDevice> QDarwinMediaDevices::audioInputs() const
{
#ifdef Q_OS_IOS
+ AVCaptureDevice *defaultDevice = [AVCaptureDevice defaultDeviceWithMediaType:AVMediaTypeAudio];
+
// TODO: Support Bluetooth and USB devices
QList<QAudioDevice> devices;
AVCaptureDeviceDiscoverySession *captureDeviceDiscoverySession = [AVCaptureDeviceDiscoverySession
@@ -212,8 +217,12 @@ QList<QAudioDevice> QDarwinMediaDevices::audioInputs() const
position:AVCaptureDevicePositionUnspecified];
NSArray *captureDevices = [captureDeviceDiscoverySession devices];
- for (AVCaptureDevice *device in captureDevices)
- devices << (new QCoreAudioDeviceInfo(QString::fromNSString(device.uniqueID).toUtf8(), QAudioDevice::Input))->create();
+ for (AVCaptureDevice *device in captureDevices) {
+ auto *dev = new QCoreAudioDeviceInfo(QString::fromNSString(device.uniqueID).toUtf8(), QAudioDevice::Input);
+ if (defaultDevice && [defaultDevice.uniqueID isEqualToString:device.uniqueID])
+ dev->isDefault = true;
+ devices << dev->create();
+ }
return devices;
#else
return availableAudioDevices(QAudioDevice::Input);
@@ -224,7 +233,9 @@ QList<QAudioDevice> QDarwinMediaDevices::audioOutputs() const
{
#ifdef Q_OS_IOS
QList<QAudioDevice> devices;
- devices.append((new QCoreAudioDeviceInfo("default", QAudioDevice::Output))->create());
+ auto *dev = new QCoreAudioDeviceInfo("default", QAudioDevice::Output);
+ dev->isDefault = true;
+ devices.append(dev->create());
return devices;
#else
return availableAudioDevices(QAudioDevice::Output);