examples/multimedia/audiooutput/audiooutput.cpp
changeset 3 41300fa6a67c
parent 0 1918ee327afb
child 4 3b1da2848fc7
--- a/examples/multimedia/audiooutput/audiooutput.cpp	Tue Jan 26 12:42:25 2010 +0200
+++ b/examples/multimedia/audiooutput/audiooutput.cpp	Tue Feb 02 00:43:10 2010 +0200
@@ -134,7 +134,7 @@
     QVBoxLayout* layout = new QVBoxLayout;
 
     deviceBox = new QComboBox(this);
-    foreach (const QAudioDeviceInfo &deviceInfo, QAudioDeviceInfo::deviceList(QAudio::AudioOutput))
+    foreach (const QAudioDeviceInfo &deviceInfo, QAudioDeviceInfo::availableDevices(QAudio::AudioOutput))
         deviceBox->addItem(deviceInfo.deviceName(), qVariantFromValue(deviceInfo));
     connect(deviceBox,SIGNAL(activated(int)),SLOT(deviceChanged(int)));
     layout->addWidget(deviceBox);
@@ -170,6 +170,18 @@
     settings.setCodec("audio/pcm");
     settings.setByteOrder(QAudioFormat::LittleEndian);
     settings.setSampleType(QAudioFormat::SignedInt);
+
+    QAudioDeviceInfo info(QAudioDeviceInfo::defaultOutputDevice());
+    if (!info.isFormatSupported(settings)) {
+        qWarning()<<"default format not supported try to use nearest";
+        settings = info.nearestFormat(settings);
+    }
+
+    if(settings.sampleSize() != 16) {
+        qWarning()<<"audio device doesn't support 16 bit samples, example cannot run";
+        return;
+    }
+
     audioOutput = new QAudioOutput(settings,this);
     connect(audioOutput,SIGNAL(notify()),SLOT(status()));
     connect(audioOutput,SIGNAL(stateChanged(QAudio::State)),SLOT(state(QAudio::State)));
@@ -200,7 +212,7 @@
 
 void AudioTest::status()
 {
-    qWarning()<<"byteFree = "<<audioOutput->bytesFree()<<" bytes, clock = "<<audioOutput->clock()/1000<<"ms, totalTime = "<<audioOutput->totalTime()/1000<<"ms";
+    qWarning()<<"byteFree = "<<audioOutput->bytesFree()<<" bytes, elapsedUSecs = "<<audioOutput->elapsedUSecs()<<", processedUSecs = "<<audioOutput->processedUSecs();
 }
 
 void AudioTest::writeMore()
@@ -208,7 +220,7 @@
     if(!audioOutput)
         return;
 
-    if(audioOutput->state() == QAudio::StopState)
+    if(audioOutput->state() == QAudio::StoppedState)
         return;
 
     int    l;
@@ -234,7 +246,7 @@
 
     if (pullMode) {
         button->setText("Click for Pull Mode");
-        output = audioOutput->start(0);
+        output = audioOutput->start();
         pullMode = false;
         timer->start(20);
     } else {
@@ -247,7 +259,7 @@
 void AudioTest::togglePlay()
 {
     // toggle suspend/resume
-    if(audioOutput->state() == QAudio::SuspendState) {
+    if(audioOutput->state() == QAudio::SuspendedState) {
         qWarning()<<"status: Suspended, resume()";
         audioOutput->resume();
         button2->setText("Click To Suspend");
@@ -255,7 +267,7 @@
         qWarning()<<"status: Active, suspend()";
         audioOutput->suspend();
         button2->setText("Click To Resume");
-    } else if (audioOutput->state() == QAudio::StopState) {
+    } else if (audioOutput->state() == QAudio::StoppedState) {
         qWarning()<<"status: Stopped, resume()";
         audioOutput->resume();
         button2->setText("Click To Suspend");