summaryrefslogtreecommitdiffstats
path: root/src/multimedia/audio/qaudioinput_alsa_p.cpp
diff options
context:
space:
mode:
authorA-Team <ateam@pad.test.qt.nokia.com>2010-10-04 22:00:19 (GMT)
committerA-Team <ateam@pad.test.qt.nokia.com>2010-10-04 22:00:19 (GMT)
commite3bcf44684aa30271c986911b328c9d9c372912a (patch)
treede7f835e6fe69b610e64397a768f1630fb8b5c54 /src/multimedia/audio/qaudioinput_alsa_p.cpp
parentf3817bc1a7bc3df360af9116dfd96f3181816472 (diff)
parenta7bf1cfb1a75c35e837c01f4a5b0697fc8961148 (diff)
downloadQt-e3bcf44684aa30271c986911b328c9d9c372912a.zip
Qt-e3bcf44684aa30271c986911b328c9d9c372912a.tar.gz
Qt-e3bcf44684aa30271c986911b328c9d9c372912a.tar.bz2
Merge branch '4.7-upstream' into 4.7-doc
Diffstat (limited to 'src/multimedia/audio/qaudioinput_alsa_p.cpp')
-rw-r--r--src/multimedia/audio/qaudioinput_alsa_p.cpp24
1 files changed, 21 insertions, 3 deletions
diff --git a/src/multimedia/audio/qaudioinput_alsa_p.cpp b/src/multimedia/audio/qaudioinput_alsa_p.cpp
index 58669b3..ddafa3d 100644
--- a/src/multimedia/audio/qaudioinput_alsa_p.cpp
+++ b/src/multimedia/audio/qaudioinput_alsa_p.cpp
@@ -152,7 +152,7 @@ int QAudioInputPrivate::xrun_recovery(int err)
int QAudioInputPrivate::setFormat()
{
- snd_pcm_format_t format = SND_PCM_FORMAT_S16;
+ snd_pcm_format_t format = SND_PCM_FORMAT_UNKNOWN;
if(settings.sampleSize() == 8) {
format = SND_PCM_FORMAT_U8;
@@ -204,7 +204,9 @@ int QAudioInputPrivate::setFormat()
format = SND_PCM_FORMAT_FLOAT64_BE;
}
- return snd_pcm_hw_params_set_format( handle, hwparams, format);
+ return format != SND_PCM_FORMAT_UNKNOWN
+ ? snd_pcm_hw_params_set_format( handle, hwparams, format)
+ : -1;
}
QIODevice* QAudioInputPrivate::start(QIODevice* device)
@@ -259,10 +261,26 @@ bool QAudioInputPrivate::open()
elapsedTimeOffset = 0;
int dir;
- int err=-1;
+ int err = 0;
int count=0;
unsigned int freakuency=settings.frequency();
+ if (!settings.isValid()) {
+ qWarning("QAudioOutput: open error, invalid format.");
+ } else if (settings.frequency() <= 0) {
+ qWarning("QAudioOutput: open error, invalid sample rate (%d).",
+ settings.frequency());
+ } else {
+ err = -1;
+ }
+
+ if (err == 0) {
+ errorState = QAudio::OpenError;
+ deviceState = QAudio::StoppedState;
+ return false;
+ }
+
+
QString dev = QString(QLatin1String(m_device.constData()));
QList<QByteArray> devices = QAudioDeviceInfoInternal::availableDevices(QAudio::AudioInput);
if(dev.compare(QLatin1String("default")) == 0) {