summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorLing Hu <ling.hu@nokia.com>2010-12-08 17:32:48 +1000
committerLing Hu <ling.hu@nokia.com>2010-12-08 17:32:48 +1000
commit2d542bc7fa833e621d60b776eaac379e1ec889db (patch)
treed823defbfaee77d0931e63a0d2d4b5a5ecd9b648
parentcf1a57723227f84e81a40b8355241edb69b408c7 (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.cpp5
-rw-r--r--src/multimedia/audio/qaudiodeviceinfo_win32_p.cpp73
-rw-r--r--src/multimedia/audio/qaudiodeviceinfo_win32_p.h1
-rw-r--r--src/multimedia/audio/qaudioinput_win32_p.cpp13
-rw-r--r--src/multimedia/audio/qaudiooutput_win32_p.cpp15
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) {