diff options
author | Doris Verria <doris.verria@qt.io> | 2022-01-13 09:04:19 +0100 |
---|---|---|
committer | Qt Cherry-pick Bot <cherrypick_bot@qt-project.org> | 2022-01-13 09:52:25 +0000 |
commit | 60e5b9329d36904a757d4f1d145cfb8e2357ad51 (patch) | |
tree | d96debfa76fa6440bdaebdd0042d96342c3a9eae | |
parent | 711b358811988ce5b2e204c0e7f0b538d0ae9106 (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.mm | 21 |
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); |