FrequencyAnalyzer::FrequencyAnalyzer(QObject *parent) : QObject(parent), d_ptr(new FrequencyAnalyzerPrivate(this)) { Q_D(FrequencyAnalyzer); QAudioDeviceInfo info = QAudioDeviceInfo::defaultInputDevice(); qDebug() << "device name: " << info.deviceName() << "\n" << "supported frequency:" << info.supportedFrequencies() << "\n" << "supported codecs" << info.supportedCodecs() << "\n" << "supported sample sizes" << info.supportedSampleSizes() << "\n" << "supported sample types" << info.supportedSampleTypes() << "\n"; QAudioFormat format = info.preferredFormat(); format.setCodec("audio/pcm"); format.setByteOrder(QAudioFormat::LittleEndian); format.setSampleType(QAudioFormat::SignedInt); format.setSampleSize(32); //format.setFrequency(d->sampling = 11025); //format.setFrequency(d->sampling = 22050); format.setFrequency(d->sampling = info.supportedFrequencies().last()); format.setChannelCount(1); if (!info.isFormatSupported(format)) { qWarning("Format is unsupported"); return; } d->input = new QAudioInput(info, format, this); connect(d->input, SIGNAL(stateChanged(QAudio::State)), SLOT(_q_onStateChanged())); }
bool CSoundCommonQT::isDeviceGood(const QAudioDeviceInfo &di, const int *desiredsamplerates) const { bool bSampleRateOk = false; for (const int* dsr=desiredsamplerates; *dsr; dsr++) { int samplerate = abs(*dsr); if (isSampleRateSupported(di, samplerate)) { bSampleRateOk = true; break; } } return bSampleRateOk && di.supportedChannelCounts().contains(2) && // TODO di.supportedSampleSizes().contains(16) && di.supportedSampleTypes().contains(QAudioFormat::SignedInt) && di.supportedByteOrders().contains(QAudioFormat::LittleEndian) && di.supportedCodecs().contains("audio/pcm"); }