RTP player: fixed issue with no audio card available in Qt6
This commit is contained in:
parent
ea91c5785a
commit
476eb0e627
|
@ -236,8 +236,9 @@ quint32 RtpAudioStream::calculateAudioOutRate(QAudioDeviceInfo out_device, unsig
|
|||
format.setCodec("audio/pcm");
|
||||
#endif
|
||||
|
||||
if (!out_device.isFormatSupported(format) &&
|
||||
(requested_out_rate==0)
|
||||
if (!out_device.isNull() &&
|
||||
!out_device.isFormatSupported(format) &&
|
||||
(requested_out_rate == 0)
|
||||
) {
|
||||
#if (QT_VERSION >= QT_VERSION_CHECK(6, 0, 0))
|
||||
out_rate = out_device.preferredFormat().sampleRate();
|
||||
|
@ -247,7 +248,7 @@ quint32 RtpAudioStream::calculateAudioOutRate(QAudioDeviceInfo out_device, unsig
|
|||
audio_resampler_ = speex_resampler_init(1, sample_rate, out_rate, 10, NULL);
|
||||
RTP_STREAM_DEBUG("Started resampling from %u to (out) %u Hz.", sample_rate, out_rate);
|
||||
} else {
|
||||
if ((requested_out_rate!=0) &&
|
||||
if ((requested_out_rate != 0) &&
|
||||
(requested_out_rate != sample_rate)
|
||||
) {
|
||||
out_rate = requested_out_rate;
|
||||
|
|
|
@ -510,7 +510,9 @@ void RtpPlayerDialog::rescanPackets(bool rescale_axes)
|
|||
}
|
||||
audio_stream->setTimingMode(timing_mode);
|
||||
|
||||
audio_stream->decode(cur_out_device);
|
||||
//if (!cur_out_device.isNull()) {
|
||||
audio_stream->decode(cur_out_device);
|
||||
//}
|
||||
}
|
||||
|
||||
for (int col = 0; col < ui->streamTreeWidget->columnCount() - 1; col++) {
|
||||
|
@ -1951,24 +1953,26 @@ void RtpPlayerDialog::fillAudioRateMenu()
|
|||
// what's available.
|
||||
QAudioDevice cur_out_device = getCurrentDeviceInfo();
|
||||
QSet<int>sample_rates;
|
||||
sample_rates.insert(cur_out_device.preferredFormat().sampleRate());
|
||||
// Add 8000 if supported
|
||||
if ((cur_out_device.minimumSampleRate() <= 8000) &&
|
||||
(8000 <= cur_out_device.maximumSampleRate())
|
||||
) {
|
||||
sample_rates.insert(8000);
|
||||
}
|
||||
// Add 16000 if supported
|
||||
if ((cur_out_device.minimumSampleRate() <= 16000) &&
|
||||
(16000 <= cur_out_device.maximumSampleRate())
|
||||
) {
|
||||
sample_rates.insert(16000);
|
||||
}
|
||||
// Add 44100 if supported
|
||||
if ((cur_out_device.minimumSampleRate() <= 44100) &&
|
||||
(44100 <= cur_out_device.maximumSampleRate())
|
||||
) {
|
||||
sample_rates.insert(44100);
|
||||
if (!cur_out_device.isNull()) {
|
||||
sample_rates.insert(cur_out_device.preferredFormat().sampleRate());
|
||||
// Add 8000 if supported
|
||||
if ((cur_out_device.minimumSampleRate() <= 8000) &&
|
||||
(8000 <= cur_out_device.maximumSampleRate())
|
||||
) {
|
||||
sample_rates.insert(8000);
|
||||
}
|
||||
// Add 16000 if supported
|
||||
if ((cur_out_device.minimumSampleRate() <= 16000) &&
|
||||
(16000 <= cur_out_device.maximumSampleRate())
|
||||
) {
|
||||
sample_rates.insert(16000);
|
||||
}
|
||||
// Add 44100 if supported
|
||||
if ((cur_out_device.minimumSampleRate() <= 44100) &&
|
||||
(44100 <= cur_out_device.maximumSampleRate())
|
||||
) {
|
||||
sample_rates.insert(44100);
|
||||
}
|
||||
}
|
||||
|
||||
// Sort values
|
||||
|
@ -1980,8 +1984,12 @@ void RtpPlayerDialog::fillAudioRateMenu()
|
|||
ui->outputAudioRate->addItem(QString::number(rate));
|
||||
}
|
||||
#else
|
||||
foreach (int rate, getCurrentDeviceInfo().supportedSampleRates()) {
|
||||
ui->outputAudioRate->addItem(QString::number(rate));
|
||||
QAudioDeviceInfo cur_out_device = getCurrentDeviceInfo();
|
||||
|
||||
if (!cur_out_device.isNull()) {
|
||||
foreach (int rate, cur_out_device.supportedSampleRates()) {
|
||||
ui->outputAudioRate->addItem(QString::number(rate));
|
||||
}
|
||||
}
|
||||
#endif
|
||||
ui->outputAudioRate->blockSignals(false);
|
||||
|
|
Loading…
Reference in New Issue