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");
|
format.setCodec("audio/pcm");
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
if (!out_device.isFormatSupported(format) &&
|
if (!out_device.isNull() &&
|
||||||
(requested_out_rate==0)
|
!out_device.isFormatSupported(format) &&
|
||||||
|
(requested_out_rate == 0)
|
||||||
) {
|
) {
|
||||||
#if (QT_VERSION >= QT_VERSION_CHECK(6, 0, 0))
|
#if (QT_VERSION >= QT_VERSION_CHECK(6, 0, 0))
|
||||||
out_rate = out_device.preferredFormat().sampleRate();
|
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);
|
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);
|
RTP_STREAM_DEBUG("Started resampling from %u to (out) %u Hz.", sample_rate, out_rate);
|
||||||
} else {
|
} else {
|
||||||
if ((requested_out_rate!=0) &&
|
if ((requested_out_rate != 0) &&
|
||||||
(requested_out_rate != sample_rate)
|
(requested_out_rate != sample_rate)
|
||||||
) {
|
) {
|
||||||
out_rate = requested_out_rate;
|
out_rate = requested_out_rate;
|
||||||
|
|
|
@ -510,7 +510,9 @@ void RtpPlayerDialog::rescanPackets(bool rescale_axes)
|
||||||
}
|
}
|
||||||
audio_stream->setTimingMode(timing_mode);
|
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++) {
|
for (int col = 0; col < ui->streamTreeWidget->columnCount() - 1; col++) {
|
||||||
|
@ -1951,24 +1953,26 @@ void RtpPlayerDialog::fillAudioRateMenu()
|
||||||
// what's available.
|
// what's available.
|
||||||
QAudioDevice cur_out_device = getCurrentDeviceInfo();
|
QAudioDevice cur_out_device = getCurrentDeviceInfo();
|
||||||
QSet<int>sample_rates;
|
QSet<int>sample_rates;
|
||||||
sample_rates.insert(cur_out_device.preferredFormat().sampleRate());
|
if (!cur_out_device.isNull()) {
|
||||||
// Add 8000 if supported
|
sample_rates.insert(cur_out_device.preferredFormat().sampleRate());
|
||||||
if ((cur_out_device.minimumSampleRate() <= 8000) &&
|
// Add 8000 if supported
|
||||||
(8000 <= cur_out_device.maximumSampleRate())
|
if ((cur_out_device.minimumSampleRate() <= 8000) &&
|
||||||
) {
|
(8000 <= cur_out_device.maximumSampleRate())
|
||||||
sample_rates.insert(8000);
|
) {
|
||||||
}
|
sample_rates.insert(8000);
|
||||||
// Add 16000 if supported
|
}
|
||||||
if ((cur_out_device.minimumSampleRate() <= 16000) &&
|
// Add 16000 if supported
|
||||||
(16000 <= cur_out_device.maximumSampleRate())
|
if ((cur_out_device.minimumSampleRate() <= 16000) &&
|
||||||
) {
|
(16000 <= cur_out_device.maximumSampleRate())
|
||||||
sample_rates.insert(16000);
|
) {
|
||||||
}
|
sample_rates.insert(16000);
|
||||||
// Add 44100 if supported
|
}
|
||||||
if ((cur_out_device.minimumSampleRate() <= 44100) &&
|
// Add 44100 if supported
|
||||||
(44100 <= cur_out_device.maximumSampleRate())
|
if ((cur_out_device.minimumSampleRate() <= 44100) &&
|
||||||
) {
|
(44100 <= cur_out_device.maximumSampleRate())
|
||||||
sample_rates.insert(44100);
|
) {
|
||||||
|
sample_rates.insert(44100);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
// Sort values
|
// Sort values
|
||||||
|
@ -1980,8 +1984,12 @@ void RtpPlayerDialog::fillAudioRateMenu()
|
||||||
ui->outputAudioRate->addItem(QString::number(rate));
|
ui->outputAudioRate->addItem(QString::number(rate));
|
||||||
}
|
}
|
||||||
#else
|
#else
|
||||||
foreach (int rate, getCurrentDeviceInfo().supportedSampleRates()) {
|
QAudioDeviceInfo cur_out_device = getCurrentDeviceInfo();
|
||||||
ui->outputAudioRate->addItem(QString::number(rate));
|
|
||||||
|
if (!cur_out_device.isNull()) {
|
||||||
|
foreach (int rate, cur_out_device.supportedSampleRates()) {
|
||||||
|
ui->outputAudioRate->addItem(QString::number(rate));
|
||||||
|
}
|
||||||
}
|
}
|
||||||
#endif
|
#endif
|
||||||
ui->outputAudioRate->blockSignals(false);
|
ui->outputAudioRate->blockSignals(false);
|
||||||
|
|
Loading…
Reference in New Issue