38 ** $QT_END_LICENSE$ |
38 ** $QT_END_LICENSE$ |
39 ** |
39 ** |
40 ****************************************************************************/ |
40 ****************************************************************************/ |
41 |
41 |
42 |
42 |
43 #include <QDebug> |
|
44 #include <QAudioDeviceInfo> |
43 #include <QAudioDeviceInfo> |
45 |
44 |
46 #include "audiodevices.h" |
45 #include "audiodevices.h" |
47 |
46 |
48 AudioDevicesBase::AudioDevicesBase( QMainWindow *parent, Qt::WFlags f ) |
47 AudioDevicesBase::AudioDevicesBase(QWidget *parent, Qt::WFlags f) |
49 { |
48 : QMainWindow(parent, f) |
50 Q_UNUSED(parent) |
49 { |
51 Q_UNUSED(f) |
50 setupUi(this); |
52 setupUi( this ); |
|
53 } |
51 } |
54 |
52 |
55 AudioDevicesBase::~AudioDevicesBase() {} |
53 AudioDevicesBase::~AudioDevicesBase() {} |
56 |
54 |
57 |
55 |
58 AudioTest::AudioTest( QMainWindow *parent, Qt::WFlags f ) |
56 AudioTest::AudioTest(QWidget *parent, Qt::WFlags f) |
59 : AudioDevicesBase( parent, f ) |
57 : AudioDevicesBase(parent, f) |
60 { |
58 { |
61 nearestFreq->setDisabled(true); |
|
62 nearestChannel->setDisabled(true); |
|
63 nearestCodec->setDisabled(true); |
|
64 nearestSampleSize->setDisabled(true); |
|
65 nearestSampleType->setDisabled(true); |
|
66 nearestEndian->setDisabled(true); |
|
67 logOutput->setDisabled(true); |
|
68 |
|
69 mode = QAudio::AudioOutput; |
59 mode = QAudio::AudioOutput; |
70 modeBox->addItem("Input"); |
60 |
71 modeBox->addItem("Output"); |
61 connect(testButton, SIGNAL(clicked()), SLOT(test())); |
72 |
62 connect(modeBox, SIGNAL(activated(int)), SLOT(modeChanged(int))); |
73 connect(testButton,SIGNAL(clicked()),SLOT(test())); |
63 connect(deviceBox, SIGNAL(activated(int)), SLOT(deviceChanged(int))); |
74 connect(modeBox,SIGNAL(activated(int)),SLOT(modeChanged(int))); |
64 connect(frequencyBox, SIGNAL(activated(int)), SLOT(freqChanged(int))); |
75 connect(deviceBox,SIGNAL(activated(int)),SLOT(deviceChanged(int))); |
65 connect(channelsBox, SIGNAL(activated(int)), SLOT(channelChanged(int))); |
76 connect(frequencyBox,SIGNAL(activated(int)),SLOT(freqChanged(int))); |
66 connect(codecsBox, SIGNAL(activated(int)), SLOT(codecChanged(int))); |
77 connect(channelsBox,SIGNAL(activated(int)),SLOT(channelChanged(int))); |
67 connect(sampleSizesBox, SIGNAL(activated(int)), SLOT(sampleSizeChanged(int))); |
78 connect(codecsBox,SIGNAL(activated(int)),SLOT(codecChanged(int))); |
68 connect(sampleTypesBox, SIGNAL(activated(int)), SLOT(sampleTypeChanged(int))); |
79 connect(sampleSizesBox,SIGNAL(activated(int)),SLOT(sampleSizeChanged(int))); |
69 connect(endianBox, SIGNAL(activated(int)), SLOT(endianChanged(int))); |
80 connect(sampleTypesBox,SIGNAL(activated(int)),SLOT(sampleTypeChanged(int))); |
|
81 connect(endianBox,SIGNAL(activated(int)),SLOT(endianChanged(int))); |
|
82 |
70 |
83 modeBox->setCurrentIndex(0); |
71 modeBox->setCurrentIndex(0); |
84 modeChanged(0); |
72 modeChanged(0); |
85 deviceBox->setCurrentIndex(0); |
73 deviceBox->setCurrentIndex(0); |
86 deviceChanged(0); |
74 deviceChanged(0); |
96 logOutput->clear(); |
84 logOutput->clear(); |
97 logOutput->append("NOTE: an invalid codec audio/test exists for testing, to get a fail condition."); |
85 logOutput->append("NOTE: an invalid codec audio/test exists for testing, to get a fail condition."); |
98 |
86 |
99 if (!deviceInfo.isNull()) { |
87 if (!deviceInfo.isNull()) { |
100 if (deviceInfo.isFormatSupported(settings)) { |
88 if (deviceInfo.isFormatSupported(settings)) { |
101 logOutput->append("Success"); |
89 logOutput->append(tr("Success")); |
102 nearestFreq->setText(""); |
90 nearestFreq->setText(""); |
103 nearestChannel->setText(""); |
91 nearestChannel->setText(""); |
104 nearestCodec->setText(""); |
92 nearestCodec->setText(""); |
105 nearestSampleSize->setText(""); |
93 nearestSampleSize->setText(""); |
106 nearestSampleType->setText(""); |
94 nearestSampleType->setText(""); |
134 nearestEndian->setText("BigEndian"); |
122 nearestEndian->setText("BigEndian"); |
135 } |
123 } |
136 } |
124 } |
137 } |
125 } |
138 else |
126 else |
139 logOutput->append("No Device"); |
127 logOutput->append(tr("No Device")); |
140 } |
128 } |
141 |
129 |
142 void AudioTest::modeChanged(int idx) |
130 void AudioTest::modeChanged(int idx) |
143 { |
131 { |
144 // mode has changed |
132 // mode has changed |
145 if(idx == 0) |
133 if (idx == 0) |
146 mode=QAudio::AudioInput; |
134 mode = QAudio::AudioInput; |
147 else |
135 else |
148 mode=QAudio::AudioOutput; |
136 mode = QAudio::AudioOutput; |
149 |
137 |
150 deviceBox->clear(); |
138 deviceBox->clear(); |
151 foreach (const QAudioDeviceInfo &deviceInfo, QAudioDeviceInfo::deviceList(mode)) |
139 foreach (const QAudioDeviceInfo &deviceInfo, QAudioDeviceInfo::availableDevices(mode)) |
152 deviceBox->addItem(deviceInfo.deviceName(), qVariantFromValue(deviceInfo)); |
140 deviceBox->addItem(deviceInfo.deviceName(), qVariantFromValue(deviceInfo)); |
153 } |
141 } |
154 |
142 |
155 void AudioTest::deviceChanged(int idx) |
143 void AudioTest::deviceChanged(int idx) |
156 { |
144 { |
160 // device has changed |
148 // device has changed |
161 deviceInfo = deviceBox->itemData(idx).value<QAudioDeviceInfo>(); |
149 deviceInfo = deviceBox->itemData(idx).value<QAudioDeviceInfo>(); |
162 |
150 |
163 frequencyBox->clear(); |
151 frequencyBox->clear(); |
164 QList<int> freqz = deviceInfo.supportedFrequencies(); |
152 QList<int> freqz = deviceInfo.supportedFrequencies(); |
165 for(int i = 0; i < freqz.size(); ++i) |
153 for (int i = 0; i < freqz.size(); ++i) |
166 frequencyBox->addItem(QString("%1").arg(freqz.at(i))); |
154 frequencyBox->addItem(QString("%1").arg(freqz.at(i))); |
167 if(freqz.size()) |
155 if (freqz.size()) |
168 settings.setFrequency(freqz.at(0)); |
156 settings.setFrequency(freqz.at(0)); |
169 |
157 |
170 channelsBox->clear(); |
158 channelsBox->clear(); |
171 QList<int> chz = deviceInfo.supportedChannels(); |
159 QList<int> chz = deviceInfo.supportedChannels(); |
172 for(int i = 0; i < chz.size(); ++i) |
160 for (int i = 0; i < chz.size(); ++i) |
173 channelsBox->addItem(QString("%1").arg(chz.at(i))); |
161 channelsBox->addItem(QString("%1").arg(chz.at(i))); |
174 if(chz.size()) |
162 if (chz.size()) |
175 settings.setChannels(chz.at(0)); |
163 settings.setChannels(chz.at(0)); |
176 |
164 |
177 codecsBox->clear(); |
165 codecsBox->clear(); |
178 QStringList codecz = deviceInfo.supportedCodecs(); |
166 QStringList codecz = deviceInfo.supportedCodecs(); |
179 for(int i = 0; i < codecz.size(); ++i) |
167 for (int i = 0; i < codecz.size(); ++i) |
180 codecsBox->addItem(QString("%1").arg(codecz.at(i))); |
168 codecsBox->addItem(QString("%1").arg(codecz.at(i))); |
181 if(codecz.size()) |
169 if (codecz.size()) |
182 settings.setCodec(codecz.at(0)); |
170 settings.setCodec(codecz.at(0)); |
183 // Add false to create failed condition! |
171 // Add false to create failed condition! |
184 codecsBox->addItem("audio/test"); |
172 codecsBox->addItem("audio/test"); |
185 |
173 |
186 sampleSizesBox->clear(); |
174 sampleSizesBox->clear(); |
187 QList<int> sampleSizez = deviceInfo.supportedSampleSizes(); |
175 QList<int> sampleSizez = deviceInfo.supportedSampleSizes(); |
188 for(int i = 0; i < sampleSizez.size(); ++i) |
176 for (int i = 0; i < sampleSizez.size(); ++i) |
189 sampleSizesBox->addItem(QString("%1").arg(sampleSizez.at(i))); |
177 sampleSizesBox->addItem(QString("%1").arg(sampleSizez.at(i))); |
190 if(sampleSizez.size()) |
178 if (sampleSizez.size()) |
191 settings.setSampleSize(sampleSizez.at(0)); |
179 settings.setSampleSize(sampleSizez.at(0)); |
192 |
180 |
193 sampleTypesBox->clear(); |
181 sampleTypesBox->clear(); |
194 QList<QAudioFormat::SampleType> sampleTypez = deviceInfo.supportedSampleTypes(); |
182 QList<QAudioFormat::SampleType> sampleTypez = deviceInfo.supportedSampleTypes(); |
195 for(int i = 0; i < sampleTypez.size(); ++i) { |
183 for (int i = 0; i < sampleTypez.size(); ++i) { |
196 switch(sampleTypez.at(i)) { |
184 switch(sampleTypez.at(i)) { |
197 case QAudioFormat::SignedInt: |
185 case QAudioFormat::SignedInt: |
198 sampleTypesBox->addItem("SignedInt"); |
186 sampleTypesBox->addItem("SignedInt"); |
199 break; |
187 break; |
200 case QAudioFormat::UnSignedInt: |
188 case QAudioFormat::UnSignedInt: |
204 sampleTypesBox->addItem("Float"); |
192 sampleTypesBox->addItem("Float"); |
205 break; |
193 break; |
206 case QAudioFormat::Unknown: |
194 case QAudioFormat::Unknown: |
207 sampleTypesBox->addItem("Unknown"); |
195 sampleTypesBox->addItem("Unknown"); |
208 } |
196 } |
209 if(sampleTypez.size()) |
197 if (sampleTypez.size()) |
210 settings.setSampleType(sampleTypez.at(0)); |
198 settings.setSampleType(sampleTypez.at(0)); |
211 } |
199 } |
212 |
200 |
213 endianBox->clear(); |
201 endianBox->clear(); |
214 QList<QAudioFormat::Endian> endianz = deviceInfo.supportedByteOrders(); |
202 QList<QAudioFormat::Endian> endianz = deviceInfo.supportedByteOrders(); |
215 for(int i = 0; i < endianz.size(); ++i) { |
203 for (int i = 0; i < endianz.size(); ++i) { |
216 switch(endianz.at(i)) { |
204 switch (endianz.at(i)) { |
217 case QAudioFormat::LittleEndian: |
205 case QAudioFormat::LittleEndian: |
218 endianBox->addItem("Little Endian"); |
206 endianBox->addItem("Little Endian"); |
219 break; |
207 break; |
220 case QAudioFormat::BigEndian: |
208 case QAudioFormat::BigEndian: |
221 endianBox->addItem("Big Endian"); |
209 endianBox->addItem("Big Endian"); |
222 break; |
210 break; |
223 } |
211 } |
224 } |
212 } |
225 if(endianz.size()) |
213 if (endianz.size()) |
226 settings.setByteOrder(endianz.at(0)); |
214 settings.setByteOrder(endianz.at(0)); |
227 } |
215 } |
228 |
216 |
229 void AudioTest::freqChanged(int idx) |
217 void AudioTest::freqChanged(int idx) |
230 { |
218 { |
247 settings.setSampleSize(sampleSizesBox->itemText(idx).toInt()); |
235 settings.setSampleSize(sampleSizesBox->itemText(idx).toInt()); |
248 } |
236 } |
249 |
237 |
250 void AudioTest::sampleTypeChanged(int idx) |
238 void AudioTest::sampleTypeChanged(int idx) |
251 { |
239 { |
252 switch(sampleTypesBox->itemText(idx).toInt()) { |
240 switch (sampleTypesBox->itemText(idx).toInt()) { |
253 case QAudioFormat::SignedInt: |
241 case QAudioFormat::SignedInt: |
254 settings.setSampleType(QAudioFormat::SignedInt); |
242 settings.setSampleType(QAudioFormat::SignedInt); |
255 break; |
243 break; |
256 case QAudioFormat::UnSignedInt: |
244 case QAudioFormat::UnSignedInt: |
257 settings.setSampleType(QAudioFormat::UnSignedInt); |
245 settings.setSampleType(QAudioFormat::UnSignedInt); |