Changeset 769 for trunk/src/multimedia/audio/qaudiodeviceinfo.cpp
- Timestamp:
- Aug 2, 2010, 9:27:30 PM (15 years ago)
- Location:
- trunk
- Files:
-
- 2 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk
- Property svn:mergeinfo changed
/branches/vendor/nokia/qt/4.6.3 (added) merged: 768 /branches/vendor/nokia/qt/current merged: 767 /branches/vendor/nokia/qt/4.6.2 removed
- Property svn:mergeinfo changed
-
trunk/src/multimedia/audio/qaudiodeviceinfo.cpp
r651 r769 44 44 #include <QtMultimedia/qaudiodeviceinfo.h> 45 45 46 #include <QtCore/qmap.h> 46 47 47 48 QT_BEGIN_NAMESPACE … … 239 240 QAudioFormat QAudioDeviceInfo::nearestFormat(const QAudioFormat &settings) const 240 241 { 241 return isNull() ? QAudioFormat() : d->info->nearestFormat(settings); 242 if (isFormatSupported(settings)) 243 return settings; 244 245 QAudioFormat nearest = settings; 246 247 nearest.setCodec(QLatin1String("audio/pcm")); 248 249 if (nearest.sampleType() == QAudioFormat::Unknown) { 250 QAudioFormat preferred = preferredFormat(); 251 nearest.setSampleType(preferred.sampleType()); 252 } 253 254 QMap<int,int> testFrequencies; 255 QList<int> frequenciesAvailable = supportedFrequencies(); 256 QMap<int,int> testSampleSizes; 257 QList<int> sampleSizesAvailable = supportedSampleSizes(); 258 259 // Get sorted sampleSizes (equal to and ascending values only) 260 if (sampleSizesAvailable.contains(settings.sampleSize())) 261 testSampleSizes.insert(0,settings.sampleSize()); 262 sampleSizesAvailable.removeAll(settings.sampleSize()); 263 foreach (int size, sampleSizesAvailable) { 264 int larger = (size > settings.sampleSize()) ? size : settings.sampleSize(); 265 int smaller = (size > settings.sampleSize()) ? settings.sampleSize() : size; 266 if (size >= settings.sampleSize()) { 267 int diff = larger - smaller; 268 testSampleSizes.insert(diff, size); 269 } 270 } 271 272 // Get sorted frequencies (equal to and ascending values only) 273 if (frequenciesAvailable.contains(settings.frequency())) 274 testFrequencies.insert(0,settings.frequency()); 275 frequenciesAvailable.removeAll(settings.frequency()); 276 foreach (int frequency, frequenciesAvailable) { 277 int larger = (frequency > settings.frequency()) ? frequency : settings.frequency(); 278 int smaller = (frequency > settings.frequency()) ? settings.frequency() : frequency; 279 if (frequency >= settings.frequency()) { 280 int diff = larger - smaller; 281 testFrequencies.insert(diff, frequency); 282 } 283 } 284 285 // Try to find nearest 286 // Check ascending frequencies, ascending sampleSizes 287 QMapIterator<int, int> sz(testSampleSizes); 288 while (sz.hasNext()) { 289 sz.next(); 290 nearest.setSampleSize(sz.value()); 291 QMapIterator<int, int> i(testFrequencies); 292 while (i.hasNext()) { 293 i.next(); 294 nearest.setFrequency(i.value()); 295 if (isFormatSupported(nearest)) 296 return nearest; 297 } 298 } 299 300 //Fallback 301 return preferredFormat(); 242 302 } 243 303
Note:
See TracChangeset
for help on using the changeset viewer.