QAudioFormat QAudioDeviceInfoInternal::nearestFormat(const QAudioFormat& format) const { if(testSettings(format)) return format; else return preferredFormat(); }
QAudioFormat QAudioDeviceInfo::nearestFormat(const QAudioFormat &settings) const { if (isFormatSupported(settings)) return settings; QAudioFormat nearest = settings; nearest.setCodec(QLatin1String("audio/pcm")); if (nearest.sampleType() == QAudioFormat::Unknown) { QAudioFormat preferred = preferredFormat(); nearest.setSampleType(preferred.sampleType()); } QMap<int,int> testFrequencies; QList<int> frequenciesAvailable = supportedFrequencies(); QMap<int,int> testSampleSizes; QList<int> sampleSizesAvailable = supportedSampleSizes(); // Get sorted sampleSizes (equal to and ascending values only) if (sampleSizesAvailable.contains(settings.sampleSize())) testSampleSizes.insert(0,settings.sampleSize()); sampleSizesAvailable.removeAll(settings.sampleSize()); foreach (int size, sampleSizesAvailable) { int larger = (size > settings.sampleSize()) ? size : settings.sampleSize(); int smaller = (size > settings.sampleSize()) ? settings.sampleSize() : size; if (size >= settings.sampleSize()) { int diff = larger - smaller; testSampleSizes.insert(diff, size); } }
QAudioFormat QAudioDeviceInfoInternal::nearestFormat(const QAudioFormat &format) const { if (isFormatSupported(format)) return format; else return preferredFormat(); }