mirror of
https://github.com/HifiExperiments/overte.git
synced 2025-06-25 14:10:08 +02:00
Attempt audio device format with native sample rate and channels forced to 2/1 before failing
This commit is contained in:
parent
7322ad78f5
commit
86adc6099b
1 changed files with 19 additions and 8 deletions
|
@ -597,11 +597,17 @@ bool AudioClient::getNamedAudioDeviceForModeExists(QAudio::Mode mode, const QStr
|
||||||
|
|
||||||
|
|
||||||
// attempt to use the native sample rate and channel count
|
// attempt to use the native sample rate and channel count
|
||||||
bool nativeFormatForAudioDevice(const QAudioDeviceInfo& audioDevice,
|
bool nativeFormatForAudioDevice(const QAudioDeviceInfo& audioDevice, QAudioFormat& audioFormat) {
|
||||||
QAudioFormat& audioFormat) {
|
|
||||||
|
|
||||||
audioFormat = audioDevice.preferredFormat();
|
audioFormat = audioDevice.preferredFormat();
|
||||||
|
|
||||||
|
// converting to/from this rate must produce an integral number of samples
|
||||||
|
if ((audioFormat.sampleRate() <= 0) ||
|
||||||
|
(audioFormat.sampleRate() * AudioConstants::NETWORK_FRAME_SAMPLES_PER_CHANNEL % AudioConstants::SAMPLE_RATE != 0)) {
|
||||||
|
qCWarning(audioclient) << "The native sample rate [" << audioFormat.sampleRate() << "] is not supported.";
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
|
||||||
audioFormat.setCodec("audio/pcm");
|
audioFormat.setCodec("audio/pcm");
|
||||||
audioFormat.setSampleSize(16);
|
audioFormat.setSampleSize(16);
|
||||||
audioFormat.setSampleType(QAudioFormat::SignedInt);
|
audioFormat.setSampleType(QAudioFormat::SignedInt);
|
||||||
|
@ -609,12 +615,17 @@ bool nativeFormatForAudioDevice(const QAudioDeviceInfo& audioDevice,
|
||||||
|
|
||||||
if (!audioDevice.isFormatSupported(audioFormat)) {
|
if (!audioDevice.isFormatSupported(audioFormat)) {
|
||||||
qCWarning(audioclient) << "The native format is" << audioFormat << "but isFormatSupported() failed.";
|
qCWarning(audioclient) << "The native format is" << audioFormat << "but isFormatSupported() failed.";
|
||||||
return false;
|
|
||||||
}
|
// attempt the native sample rate, with channels forced to 2
|
||||||
// converting to/from this rate must produce an integral number of samples
|
audioFormat.setChannelCount(2);
|
||||||
if (audioFormat.sampleRate() * AudioConstants::NETWORK_FRAME_SAMPLES_PER_CHANNEL % AudioConstants::SAMPLE_RATE != 0) {
|
if (!audioDevice.isFormatSupported(audioFormat)) {
|
||||||
qCWarning(audioclient) << "The native sample rate [" << audioFormat.sampleRate() << "] is not supported.";
|
|
||||||
return false;
|
// attempt the native sample rate, with channels forced to 1
|
||||||
|
audioFormat.setChannelCount(1);
|
||||||
|
if (!audioDevice.isFormatSupported(audioFormat)) {
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in a new issue