diff options
author | Ling Hu <ling.hu@nokia.com> | 2010-12-08 17:32:48 +1000 |
---|---|---|
committer | Ling Hu <ling.hu@nokia.com> | 2010-12-08 17:32:48 +1000 |
commit | 2d542bc7fa833e621d60b776eaac379e1ec889db (patch) | |
tree | d823defbfaee77d0931e63a0d2d4b5a5ecd9b648 | |
parent | cf1a57723227f84e81a40b8355241edb69b408c7 (diff) |
Use the first enumerated audio device as the default device instead of using an arbitrary "default" string on win32.
Reviewed-by: Andrew den Exter
-rw-r--r-- | src/multimedia/audio/qaudiodeviceinfo.cpp | 5 | ||||
-rw-r--r-- | src/multimedia/audio/qaudiodeviceinfo_win32_p.cpp | 73 | ||||
-rw-r--r-- | src/multimedia/audio/qaudiodeviceinfo_win32_p.h | 1 | ||||
-rw-r--r-- | src/multimedia/audio/qaudioinput_win32_p.cpp | 13 | ||||
-rw-r--r-- | src/multimedia/audio/qaudiooutput_win32_p.cpp | 15 |
5 files changed, 34 insertions, 73 deletions
diff --git a/src/multimedia/audio/qaudiodeviceinfo.cpp b/src/multimedia/audio/qaudiodeviceinfo.cpp index 35eaf7e3e0..fa50f0faee 100644 --- a/src/multimedia/audio/qaudiodeviceinfo.cpp +++ b/src/multimedia/audio/qaudiodeviceinfo.cpp @@ -54,7 +54,10 @@ public: QAudioDeviceInfoPrivate(const QString &r, const QByteArray &h, QAudio::Mode m): realm(r), handle(h), mode(m) { - info = QAudioDeviceFactory::audioDeviceInfo(realm, handle, mode); + if (!handle.isEmpty()) + info = QAudioDeviceFactory::audioDeviceInfo(realm, handle, mode); + else + info = NULL; } QAudioDeviceInfoPrivate(const QAudioDeviceInfoPrivate &other): diff --git a/src/multimedia/audio/qaudiodeviceinfo_win32_p.cpp b/src/multimedia/audio/qaudiodeviceinfo_win32_p.cpp index 1220d295ac..35165dcd08 100644 --- a/src/multimedia/audio/qaudiodeviceinfo_win32_p.cpp +++ b/src/multimedia/audio/qaudiodeviceinfo_win32_p.cpp @@ -77,13 +77,8 @@ QT_BEGIN_NAMESPACE QAudioDeviceInfoInternal::QAudioDeviceInfoInternal(QByteArray dev, QAudio::Mode mode) { - if (dev == "default") { - device = QString::fromLatin1("default"); - } else { - QDataStream ds(&dev, QIODevice::ReadOnly); - quint32 devID; - ds >> devID >> device; - } + QDataStream ds(&dev, QIODevice::ReadOnly); + ds >> devId >> device; this->mode = mode; updateLists(); @@ -261,54 +256,21 @@ bool QAudioDeviceInfoInternal::testSettings(const QAudioFormat& format) const void QAudioDeviceInfoInternal::updateLists() { // redo all lists based on current settings - bool base = false; bool match = false; DWORD fmt = NULL; - QString tmp; - - if(device.compare(QLatin1String("default")) == 0) - base = true; if(mode == QAudio::AudioOutput) { WAVEOUTCAPS woc; - unsigned long iNumDevs,i; - iNumDevs = waveOutGetNumDevs(); - for(i=0;i<iNumDevs;i++) { - if(waveOutGetDevCaps(i, &woc, sizeof(WAVEOUTCAPS)) - == MMSYSERR_NOERROR) { - tmp = QString::fromWCharArray(woc.szPname); - if (device.startsWith(tmp)) { - match = true; - fmt = woc.dwFormats; - break; - } - if(base) { - match = true; - fmt = woc.dwFormats; - break; - } - } - } + if (waveOutGetDevCaps(devId, &woc, sizeof(WAVEOUTCAPS)) == MMSYSERR_NOERROR) { + match = true; + fmt = woc.dwFormats; + } } else { WAVEINCAPS woc; - unsigned long iNumDevs,i; - iNumDevs = waveInGetNumDevs(); - for(i=0;i<iNumDevs;i++) { - if(waveInGetDevCaps(i, &woc, sizeof(WAVEINCAPS)) - == MMSYSERR_NOERROR) { - tmp = QString::fromWCharArray(woc.szPname); - if (device.startsWith(tmp)) { - match = true; - fmt = woc.dwFormats; - break; - } - if(base) { - match = true; - fmt = woc.dwFormats; - break; - } - } - } + if (waveInGetDevCaps(devId, &woc, sizeof(WAVEINCAPS)) == MMSYSERR_NOERROR) { + match = true; + fmt = woc.dwFormats; + } } sizez.clear(); freqz.clear(); @@ -457,20 +419,25 @@ QList<QByteArray> QAudioDeviceInfoInternal::availableDevices(QAudio::Mode mode) } CoUninitialize(); - if (devices.count() > 0) - devices.append("default"); - return devices; } QByteArray QAudioDeviceInfoInternal::defaultOutputDevice() { - return QByteArray("default"); + QList<QByteArray> list = availableDevices(QAudio::AudioOutput); + if (list.size() > 0) + return list.at(0); + else + return QByteArray(); } QByteArray QAudioDeviceInfoInternal::defaultInputDevice() { - return QByteArray("default"); + QList<QByteArray> list = availableDevices(QAudio::AudioInput); + if (list.size() > 0) + return list.at(0); + else + return QByteArray(); } QT_END_NAMESPACE diff --git a/src/multimedia/audio/qaudiodeviceinfo_win32_p.h b/src/multimedia/audio/qaudiodeviceinfo_win32_p.h index 83e35d7251..5e9956e4f7 100644 --- a/src/multimedia/audio/qaudiodeviceinfo_win32_p.h +++ b/src/multimedia/audio/qaudiodeviceinfo_win32_p.h @@ -97,6 +97,7 @@ public: private: QAudio::Mode mode; QString device; + quint32 devId; QAudioFormat nearest; QList<int> freqz; QList<int> channelz; diff --git a/src/multimedia/audio/qaudioinput_win32_p.cpp b/src/multimedia/audio/qaudioinput_win32_p.cpp index a9036dbaf3..434129b47a 100644 --- a/src/multimedia/audio/qaudioinput_win32_p.cpp +++ b/src/multimedia/audio/qaudioinput_win32_p.cpp @@ -280,16 +280,11 @@ bool QAudioInputPrivate::open() wfx.nBlockAlign = (wfx.wBitsPerSample >> 3) * wfx.nChannels; wfx.nAvgBytesPerSec = wfx.nBlockAlign * wfx.nSamplesPerSec; - UINT_PTR devId = WAVE_MAPPER; + QDataStream ds(&m_device, QIODevice::ReadOnly); + quint32 deviceId; + ds >> deviceId; - if (m_device != "default") { - QDataStream ds(&m_device, QIODevice::ReadOnly); - quint32 deviceId; - ds >> deviceId; - devId = UINT_PTR(deviceId); - } - - if(waveInOpen(&hWaveIn, devId, &wfx, + if (waveInOpen(&hWaveIn, UINT_PTR(deviceId), &wfx, (DWORD_PTR)&waveInProc, (DWORD_PTR) this, CALLBACK_FUNCTION) != MMSYSERR_NOERROR) { diff --git a/src/multimedia/audio/qaudiooutput_win32_p.cpp b/src/multimedia/audio/qaudiooutput_win32_p.cpp index bffd00b5cb..26ff607077 100644 --- a/src/multimedia/audio/qaudiooutput_win32_p.cpp +++ b/src/multimedia/audio/qaudiooutput_win32_p.cpp @@ -327,17 +327,12 @@ bool QAudioOutputPrivate::open() wfx.nBlockAlign = (wfx.wBitsPerSample >> 3) * wfx.nChannels; wfx.nAvgBytesPerSec = wfx.nBlockAlign * wfx.nSamplesPerSec; - UINT_PTR devId = WAVE_MAPPER; - - if (m_device != "default") { - QDataStream ds(&m_device, QIODevice::ReadOnly); - quint32 deviceId; - ds >> deviceId; - devId = UINT_PTR(deviceId); - } + QDataStream ds(&m_device, QIODevice::ReadOnly); + quint32 deviceId; + ds >> deviceId; if (!surround) { - if(waveOutOpen(&hWaveOut, devId, &wfx, + if (waveOutOpen(&hWaveOut, UINT_PTR(deviceId), &wfx, (DWORD_PTR)&waveOutProc, (DWORD_PTR) this, CALLBACK_FUNCTION) != MMSYSERR_NOERROR) { @@ -369,7 +364,7 @@ bool QAudioOutputPrivate::open() if (settings.channels() == 8) wfex.dwChannelMask |= SPEAKER_SIDE_LEFT | SPEAKER_SIDE_RIGHT; - if(waveOutOpen(&hWaveOut, devId, &wfex.Format, + if (waveOutOpen(&hWaveOut, UINT_PTR(deviceId), &wfex.Format, (DWORD_PTR)&waveOutProc, (DWORD_PTR) this, CALLBACK_FUNCTION) != MMSYSERR_NOERROR) { |