summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--src/plugins/coreaudio/coreaudiodeviceinfo.mm36
-rw-r--r--src/plugins/coreaudio/coreaudiosessionmanager.h3
-rw-r--r--src/plugins/coreaudio/coreaudiosessionmanager.mm10
3 files changed, 6 insertions, 43 deletions
diff --git a/src/plugins/coreaudio/coreaudiodeviceinfo.mm b/src/plugins/coreaudio/coreaudiodeviceinfo.mm
index 56765cafd..ac41a310c 100644
--- a/src/plugins/coreaudio/coreaudiodeviceinfo.mm
+++ b/src/plugins/coreaudio/coreaudiodeviceinfo.mm
@@ -196,38 +196,14 @@ QList<int> CoreAudioDeviceInfo::supportedSampleRates()
QList<int> CoreAudioDeviceInfo::supportedChannelCounts()
{
- QList<int> supportedChannels;
- int maxChannels = 0;
+ static QList<int> supportedChannels;
-#if defined(Q_OS_OSX)
- UInt32 propSize = 0;
- AudioObjectPropertyScope scope = m_mode == QAudio::AudioInput ? kAudioDevicePropertyScopeInput : kAudioDevicePropertyScopeOutput;
- AudioObjectPropertyAddress streamConfigurationPropertyAddress = { kAudioDevicePropertyStreamConfiguration,
- scope,
- kAudioObjectPropertyElementMaster };
-
- if (AudioObjectGetPropertyDataSize(m_deviceId, &streamConfigurationPropertyAddress, 0, NULL, &propSize) == noErr) {
- AudioBufferList* audioBufferList = static_cast<AudioBufferList*>(malloc(propSize));
-
- if (audioBufferList != 0) {
- if (AudioObjectGetPropertyData(m_deviceId, &streamConfigurationPropertyAddress, 0, NULL, &propSize, audioBufferList) == noErr) {
- for (int i = 0; i < int(audioBufferList->mNumberBuffers); ++i)
- maxChannels += audioBufferList->mBuffers[i].mNumberChannels;
- }
-
- free(audioBufferList);
- }
+ if (supportedChannels.isEmpty()) {
+ // If the number of channels is not supported by an audio device, Core Audio will
+ // automatically convert the audio data.
+ for (int i = 1; i <= 16; ++i)
+ supportedChannels.append(i);
}
-#else //iOS
- if (m_mode == QAudio::AudioInput)
- maxChannels = CoreAudioSessionManager::instance().inputChannelCount();
- else if (m_mode == QAudio::AudioOutput)
- maxChannels = CoreAudioSessionManager::instance().outputChannelCount();
-#endif
-
- // Assume all channel configurations are supported up to the maximum number of channels
- for (int i = 1; i <= maxChannels; ++i)
- supportedChannels.append(i);
return supportedChannels;
}
diff --git a/src/plugins/coreaudio/coreaudiosessionmanager.h b/src/plugins/coreaudio/coreaudiosessionmanager.h
index 61d8967b1..26f8fee09 100644
--- a/src/plugins/coreaudio/coreaudiosessionmanager.h
+++ b/src/plugins/coreaudio/coreaudiosessionmanager.h
@@ -92,9 +92,6 @@ public:
QList<QByteArray> inputDevices();
QList<QByteArray> outputDevices();
- int inputChannelCount();
- int outputChannelCount();
-
float currentIOBufferDuration();
float preferredSampleRate();
diff --git a/src/plugins/coreaudio/coreaudiosessionmanager.mm b/src/plugins/coreaudio/coreaudiosessionmanager.mm
index 0e795e786..04c8b6ed4 100644
--- a/src/plugins/coreaudio/coreaudiosessionmanager.mm
+++ b/src/plugins/coreaudio/coreaudiosessionmanager.mm
@@ -377,16 +377,6 @@ QList<QByteArray> CoreAudioSessionManager::outputDevices()
return outputDevices;
}
-int CoreAudioSessionManager::inputChannelCount()
-{
- return [[m_sessionObserver audioSession] inputNumberOfChannels];
-}
-
-int CoreAudioSessionManager::outputChannelCount()
-{
- return [[m_sessionObserver audioSession] outputNumberOfChannels];
-}
-
float CoreAudioSessionManager::currentIOBufferDuration()
{
return [[m_sessionObserver audioSession] IOBufferDuration];