mirror of
https://github.com/lubosz/overte.git
synced 2025-04-16 09:46:29 +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
|
||||
bool nativeFormatForAudioDevice(const QAudioDeviceInfo& audioDevice,
|
||||
QAudioFormat& audioFormat) {
|
||||
bool nativeFormatForAudioDevice(const QAudioDeviceInfo& audioDevice, QAudioFormat& audioFormat) {
|
||||
|
||||
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.setSampleSize(16);
|
||||
audioFormat.setSampleType(QAudioFormat::SignedInt);
|
||||
|
@ -609,12 +615,17 @@ bool nativeFormatForAudioDevice(const QAudioDeviceInfo& audioDevice,
|
|||
|
||||
if (!audioDevice.isFormatSupported(audioFormat)) {
|
||||
qCWarning(audioclient) << "The native format is" << audioFormat << "but isFormatSupported() failed.";
|
||||
return false;
|
||||
}
|
||||
// converting to/from this rate must produce an integral number of samples
|
||||
if (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;
|
||||
|
||||
// attempt the native sample rate, with channels forced to 2
|
||||
audioFormat.setChannelCount(2);
|
||||
if (!audioDevice.isFormatSupported(audioFormat)) {
|
||||
|
||||
// attempt the native sample rate, with channels forced to 1
|
||||
audioFormat.setChannelCount(1);
|
||||
if (!audioDevice.isFormatSupported(audioFormat)) {
|
||||
return false;
|
||||
}
|
||||
}
|
||||
}
|
||||
return true;
|
||||
}
|
||||
|
|
Loading…
Reference in a new issue