diff options
Diffstat (limited to 'src/plugins/coreaudio')
-rw-r--r-- | src/plugins/coreaudio/coreaudiodeviceinfo.mm | 36 | ||||
-rw-r--r-- | src/plugins/coreaudio/coreaudiosessionmanager.h | 3 | ||||
-rw-r--r-- | src/plugins/coreaudio/coreaudiosessionmanager.mm | 10 |
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]; |