summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorRhys Weatherley <rhys.weatherley@nokia.com>2009-09-14 03:26:49 (GMT)
committerRhys Weatherley <rhys.weatherley@nokia.com>2009-09-14 03:26:49 (GMT)
commit3292e7966aa53f144a3b1cb8c7722e26dd84c108 (patch)
tree46880bacd0860779400c8321dc8e8e187922ac77
parent7809276c405d4b32eb671737ea0967b673ea271c (diff)
parent3dd25afc9802271323407a57ca83b77b485b3234 (diff)
downloadQt-3292e7966aa53f144a3b1cb8c7722e26dd84c108.zip
Qt-3292e7966aa53f144a3b1cb8c7722e26dd84c108.tar.gz
Qt-3292e7966aa53f144a3b1cb8c7722e26dd84c108.tar.bz2
Merge branch '4.6' of git@scm.dev.nokia.troll.no:qt/qt into 4.6
-rw-r--r--examples/multimedia/audio/audiodevices/audiodevices.cpp12
-rw-r--r--examples/multimedia/audio/audiodevices/audiodevicesbase.ui6
-rw-r--r--src/multimedia/audio/qaudiodeviceinfo_alsa_p.cpp67
-rw-r--r--src/multimedia/audio/qaudiodeviceinfo_win32_p.cpp36
-rw-r--r--src/multimedia/audio/qaudioinput_alsa_p.cpp8
-rw-r--r--src/multimedia/audio/qaudioinput_win32_p.cpp2
-rw-r--r--src/multimedia/audio/qaudiooutput_alsa_p.cpp8
-rw-r--r--src/multimedia/audio/qaudiooutput_win32_p.cpp2
8 files changed, 95 insertions, 46 deletions
diff --git a/examples/multimedia/audio/audiodevices/audiodevices.cpp b/examples/multimedia/audio/audiodevices/audiodevices.cpp
index 52aa4db..0d305ff 100644
--- a/examples/multimedia/audio/audiodevices/audiodevices.cpp
+++ b/examples/multimedia/audio/audiodevices/audiodevices.cpp
@@ -58,6 +58,14 @@ AudioDevicesBase::~AudioDevicesBase() {}
AudioTest::AudioTest( QMainWindow *parent, Qt::WFlags f )
: AudioDevicesBase( parent, f )
{
+ nearestFreq->setDisabled(true);
+ nearestChannel->setDisabled(true);
+ nearestCodec->setDisabled(true);
+ nearestSampleSize->setDisabled(true);
+ nearestSampleType->setDisabled(true);
+ nearestEndian->setDisabled(true);
+ logOutput->setDisabled(true);
+
mode = QAudio::AudioOutput;
modeBox->addItem("Input");
modeBox->addItem("Output");
@@ -87,6 +95,8 @@ AudioTest::~AudioTest()
void AudioTest::test()
{
// tries to set all the settings picked.
+ logOutput->clear();
+ logOutput->append("NOTE: an invalid codec audio/test exists for testing, to get a fail condition.");
if(device) {
if(device->isFormatSupported(settings)) {
@@ -179,7 +189,7 @@ void AudioTest::deviceChanged(int idx)
if(codecz.size())
settings.setCodec(codecz.at(0));
// Add false to create failed condition!
- codecsBox->addItem("audio/mpeg");
+ codecsBox->addItem("audio/test");
sampleSizesBox->clear();
QList<int> sampleSizez = device->supportedSampleSizes();
diff --git a/examples/multimedia/audio/audiodevices/audiodevicesbase.ui b/examples/multimedia/audio/audiodevices/audiodevicesbase.ui
index 29dd40e..5207338 100644
--- a/examples/multimedia/audio/audiodevices/audiodevicesbase.ui
+++ b/examples/multimedia/audio/audiodevices/audiodevicesbase.ui
@@ -14,8 +14,8 @@
<string>AudioDevicesBase</string>
</property>
<widget class="QWidget" name="centralwidget">
- <layout class="QGridLayout" name="gridLayout_2">
- <item row="0" column="0">
+ <layout class="QVBoxLayout" name="verticalLayout">
+ <item>
<layout class="QGridLayout" name="gridLayout">
<item row="0" column="0">
<widget class="QLabel" name="deviceLabel">
@@ -222,7 +222,7 @@
<x>0</x>
<y>0</y>
<width>504</width>
- <height>22</height>
+ <height>19</height>
</rect>
</property>
</widget>
diff --git a/src/multimedia/audio/qaudiodeviceinfo_alsa_p.cpp b/src/multimedia/audio/qaudiodeviceinfo_alsa_p.cpp
index 4ed1b41..c944cf0 100644
--- a/src/multimedia/audio/qaudiodeviceinfo_alsa_p.cpp
+++ b/src/multimedia/audio/qaudiodeviceinfo_alsa_p.cpp
@@ -81,13 +81,18 @@ QAudioFormat QAudioDeviceInfoPrivate::preferredFormat() const
nearest.setByteOrder(QAudioFormat::LittleEndian);
nearest.setSampleType(QAudioFormat::SignedInt);
nearest.setSampleSize(16);
- nearest.setCodec(tr("audio/pcm"));
+ nearest.setCodec(QLatin1String("audio/pcm"));
} else {
nearest.setFrequency(8000);
nearest.setChannels(1);
- nearest.setSampleType(QAudioFormat::SignedInt);
+ nearest.setSampleType(QAudioFormat::UnSignedInt);
nearest.setSampleSize(8);
- nearest.setCodec(tr("audio/pcm"));
+ nearest.setCodec(QLatin1String("audio/pcm"));
+ if(!testSettings(nearest)) {
+ nearest.setChannels(2);
+ nearest.setSampleSize(16);
+ nearest.setSampleType(QAudioFormat::SignedInt);
+ }
}
return nearest;
}
@@ -145,9 +150,9 @@ bool QAudioDeviceInfoPrivate::open()
{
int err = 0;
QString dev = device;
- if(!dev.contains(tr("default"))) {
+ if(!dev.contains(QLatin1String("default"))) {
int idx = snd_card_get_index(dev.toLocal8Bit().constData());
- dev = QString(tr("hw:%1,0")).arg(idx);
+ dev = QString(QLatin1String("hw:%1,0")).arg(idx);
}
if(mode == QAudio::AudioOutput) {
err=snd_pcm_open( &handle,dev.toLocal8Bit().constData(),SND_PCM_STREAM_PLAYBACK,0);
@@ -172,16 +177,15 @@ bool QAudioDeviceInfoPrivate::testSettings(const QAudioFormat& format) const
{
// Set nearest to closest settings that do work.
// See if what is in settings will work (return value).
-
int err = 0;
snd_pcm_t* handle;
snd_pcm_hw_params_t *params;
QString dev = device;
// open()
- if(!dev.contains(tr("default"))) {
+ if(!dev.contains(QLatin1String("default"))) {
int idx = snd_card_get_index(dev.toLocal8Bit().constData());
- dev = QString(tr("hw:%1,0")).arg(idx);
+ dev = QString(QLatin1String("hw:%1,0")).arg(idx);
}
if(mode == QAudio::AudioOutput) {
err=snd_pcm_open( &handle,dev.toLocal8Bit().constData(),SND_PCM_STREAM_PLAYBACK,0);
@@ -205,8 +209,45 @@ bool QAudioDeviceInfoPrivate::testSettings(const QAudioFormat& format) const
snd_pcm_hw_params_alloca( &params );
snd_pcm_hw_params_any( handle, params );
+ // set the values!
+ snd_pcm_hw_params_set_channels(handle,params,format.channels());
+ snd_pcm_hw_params_set_rate(handle,params,format.frequency(),dir);
+ switch(format.sampleSize()) {
+ case 8:
+ if(format.sampleType() == QAudioFormat::SignedInt)
+ snd_pcm_hw_params_set_format(handle,params,SND_PCM_FORMAT_S8);
+ else if(format.sampleType() == QAudioFormat::UnSignedInt)
+ snd_pcm_hw_params_set_format(handle,params,SND_PCM_FORMAT_U8);
+ break;
+ case 16:
+ if(format.sampleType() == QAudioFormat::SignedInt) {
+ if(format.byteOrder() == QAudioFormat::LittleEndian)
+ snd_pcm_hw_params_set_format(handle,params,SND_PCM_FORMAT_S16_LE);
+ else if(format.byteOrder() == QAudioFormat::BigEndian)
+ snd_pcm_hw_params_set_format(handle,params,SND_PCM_FORMAT_S16_BE);
+ } else if(format.sampleType() == QAudioFormat::UnSignedInt) {
+ if(format.byteOrder() == QAudioFormat::LittleEndian)
+ snd_pcm_hw_params_set_format(handle,params,SND_PCM_FORMAT_U16_LE);
+ else if(format.byteOrder() == QAudioFormat::BigEndian)
+ snd_pcm_hw_params_set_format(handle,params,SND_PCM_FORMAT_U16_BE);
+ }
+ break;
+ case 32:
+ if(format.sampleType() == QAudioFormat::SignedInt) {
+ if(format.byteOrder() == QAudioFormat::LittleEndian)
+ snd_pcm_hw_params_set_format(handle,params,SND_PCM_FORMAT_S32_LE);
+ else if(format.byteOrder() == QAudioFormat::BigEndian)
+ snd_pcm_hw_params_set_format(handle,params,SND_PCM_FORMAT_S32_BE);
+ } else if(format.sampleType() == QAudioFormat::UnSignedInt) {
+ if(format.byteOrder() == QAudioFormat::LittleEndian)
+ snd_pcm_hw_params_set_format(handle,params,SND_PCM_FORMAT_U32_LE);
+ else if(format.byteOrder() == QAudioFormat::BigEndian)
+ snd_pcm_hw_params_set_format(handle,params,SND_PCM_FORMAT_U32_BE);
+ }
+ }
+
// For now, just accept only audio/pcm codec
- if(!format.codec().startsWith(tr("audio/pcm"))) {
+ if(!format.codec().startsWith(QLatin1String("audio/pcm"))) {
err=-1;
} else
testCodec = true;
@@ -313,7 +354,7 @@ void QAudioDeviceInfoPrivate::updateLists()
typez.append(QAudioFormat::SignedInt);
typez.append(QAudioFormat::UnSignedInt);
typez.append(QAudioFormat::Float);
- codecz.append(tr("audio/pcm"));
+ codecz.append(QLatin1String("audio/pcm"));
close();
}
@@ -346,10 +387,10 @@ QList<QByteArray> QAudioDeviceInfoPrivate::deviceList(QAudio::Mode mode)
if(io == NULL)
_m = mode;
- QString str = tr(name);
+ QString str = QLatin1String(name);
- if(str.contains(tr("default"))) {
- int pos = str.indexOf(tr("="),0);
+ if(str.contains(QLatin1String("default"))) {
+ int pos = str.indexOf(QLatin1String("="),0);
devices.append(str.mid(pos+1).toLocal8Bit().constData());
}
}
diff --git a/src/multimedia/audio/qaudiodeviceinfo_win32_p.cpp b/src/multimedia/audio/qaudiodeviceinfo_win32_p.cpp
index 371f442..ba9f5e2 100644
--- a/src/multimedia/audio/qaudiodeviceinfo_win32_p.cpp
+++ b/src/multimedia/audio/qaudiodeviceinfo_win32_p.cpp
@@ -99,13 +99,13 @@ QAudioFormat QAudioDeviceInfoPrivate::preferredFormat() const
nearest.setByteOrder(QAudioFormat::LittleEndian);
nearest.setSampleType(QAudioFormat::SignedInt);
nearest.setSampleSize(16);
- nearest.setCodec(tr("audio/pcm"));
+ nearest.setCodec(QLatin1String("audio/pcm"));
} else {
nearest.setFrequency(11025);
nearest.setChannels(1);
nearest.setSampleType(QAudioFormat::SignedInt);
nearest.setSampleSize(8);
- nearest.setCodec(tr("audio/pcm"));
+ nearest.setCodec(QLatin1String("audio/pcm"));
}
return nearest;
}
@@ -174,27 +174,25 @@ bool QAudioDeviceInfoPrivate::testSettings(const QAudioFormat& format) const
// Set nearest to closest settings that do work.
// See if what is in settings will work (return value).
- bool testChannel = false;
- bool testCodec = false;
- bool testFreq = false;
-
- int err = 0;
+ bool failed = false;
// For now, just accept only audio/pcm codec
- if(!format.codec().startsWith(tr("audio/pcm"))) {
- err=-1;
- } else
- testCodec = true;
+ if(!format.codec().startsWith(QLatin1String("audio/pcm")))
+ failed = true;
- if(err>=0 && format.channels() != -1) {
- testChannel = true;
- }
+ if(!failed && !(format.channels() == 1 || format.channels() == 2))
+ failed = true;
- if(err>=0 && format.frequency() != -1) {
- testFreq = true;
+ if(!failed) {
+ if(!(format.frequency() == 8000 || format.frequency() == 11025 || format.frequency() == 22050 ||
+ format.frequency() == 44100 || format.frequency() == 48000 || format.frequency() == 96000))
+ failed = true;
}
- if(err == 0) {
+ if(!failed && !(format.sampleSize() == 8 || format.sampleSize() == 16))
+ failed = true;
+
+ if(!failed) {
// settings work
return true;
}
@@ -209,7 +207,7 @@ void QAudioDeviceInfoPrivate::updateLists()
DWORD fmt = NULL;
QString tmp;
- if(device.compare(tr("default")) == 0)
+ if(device.compare(QLatin1String("default")) == 0)
base = true;
if(mode == QAudio::AudioOutput) {
@@ -331,7 +329,7 @@ void QAudioDeviceInfoPrivate::updateLists()
typez.append(QAudioFormat::SignedInt);
typez.append(QAudioFormat::UnSignedInt);
- codecz.append(tr("audio/pcm"));
+ codecz.append(QLatin1String("audio/pcm"));
}
}
diff --git a/src/multimedia/audio/qaudioinput_alsa_p.cpp b/src/multimedia/audio/qaudioinput_alsa_p.cpp
index c98102c..f36ffc8 100644
--- a/src/multimedia/audio/qaudioinput_alsa_p.cpp
+++ b/src/multimedia/audio/qaudioinput_alsa_p.cpp
@@ -78,7 +78,7 @@ QAudioInputPrivate::QAudioInputPrivate(const QByteArray &device, const QAudioFor
pullMode = true;
resuming = false;
- QStringList list1 = QString(tr(device)).split(tr(":"));
+ QStringList list1 = QString(QLatin1String(device)).split(QLatin1String(":"));
m_device = QByteArray(list1.at(0).toLocal8Bit().constData());
timer = new QTimer(this);
@@ -254,9 +254,9 @@ bool QAudioInputPrivate::open()
int count=0;
unsigned int freakuency=settings.frequency();
- QString dev = QString(tr(m_device.constData()));
- if(!dev.contains(tr("default"))) {
- dev = QString(tr("default:CARD=%1")).arg(tr(m_device.constData()));
+ QString dev = QString(QLatin1String(m_device.constData()));
+ if(!dev.contains(QLatin1String("default"))) {
+ dev = QString(QLatin1String("default:CARD=%1")).arg(QLatin1String(m_device.constData()));
}
// Step 1: try and open the device
diff --git a/src/multimedia/audio/qaudioinput_win32_p.cpp b/src/multimedia/audio/qaudioinput_win32_p.cpp
index 315a59b..31441ae 100644
--- a/src/multimedia/audio/qaudioinput_win32_p.cpp
+++ b/src/multimedia/audio/qaudioinput_win32_p.cpp
@@ -245,7 +245,7 @@ bool QAudioInputPrivate::open()
== MMSYSERR_NOERROR) {
QString tmp;
tmp = QString::fromUtf16((const unsigned short*)wic.szPname);
- if(tmp.compare(tr(m_device)) == 0) {
+ if(tmp.compare(QLatin1String(m_device)) == 0) {
devId = ii;
break;
}
diff --git a/src/multimedia/audio/qaudiooutput_alsa_p.cpp b/src/multimedia/audio/qaudiooutput_alsa_p.cpp
index 45ff115..e8a3f5c 100644
--- a/src/multimedia/audio/qaudiooutput_alsa_p.cpp
+++ b/src/multimedia/audio/qaudiooutput_alsa_p.cpp
@@ -81,7 +81,7 @@ QAudioOutputPrivate::QAudioOutputPrivate(const QByteArray &device, const QAudioF
resuming = false;
opened = false;
- QStringList list1 = QString(tr(device)).split(tr(":"));
+ QStringList list1 = QString(QLatin1String(device)).split(QLatin1String(":"));
m_device = QByteArray(list1.at(0).toLocal8Bit().constData());
timer = new QTimer(this);
@@ -277,9 +277,9 @@ bool QAudioOutputPrivate::open()
int count=0;
unsigned int freakuency=settings.frequency();
- QString dev = tr(m_device.constData());
- if(!dev.contains(tr("default"))) {
- dev = QString(tr("default:CARD=%1")).arg(tr(m_device.constData()));
+ QString dev = QLatin1String(m_device.constData());
+ if(!dev.contains(QLatin1String("default"))) {
+ dev = QString(QLatin1String("default:CARD=%1")).arg(QLatin1String(m_device.constData()));
}
// Step 1: try and open the device
while((count < 5) && (err < 0)) {
diff --git a/src/multimedia/audio/qaudiooutput_win32_p.cpp b/src/multimedia/audio/qaudiooutput_win32_p.cpp
index fae680c..aea3a3f 100644
--- a/src/multimedia/audio/qaudiooutput_win32_p.cpp
+++ b/src/multimedia/audio/qaudiooutput_win32_p.cpp
@@ -241,7 +241,7 @@ bool QAudioOutputPrivate::open()
== MMSYSERR_NOERROR) {
QString tmp;
tmp = QString::fromUtf16((const unsigned short*)woc.szPname);
- if(tmp.compare(tr(m_device)) == 0) {
+ if(tmp.compare(QLatin1String(m_device)) == 0) {
devId = ii;
break;
}