diff --git a/ui/qt/rtp_audio_stream.cpp b/ui/qt/rtp_audio_stream.cpp index a1cb42c2f9..013162cefb 100644 --- a/ui/qt/rtp_audio_stream.cpp +++ b/ui/qt/rtp_audio_stream.cpp @@ -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; diff --git a/ui/qt/rtp_player_dialog.cpp b/ui/qt/rtp_player_dialog.cpp index 00d14588e7..722b1a4ef4 100644 --- a/ui/qt/rtp_player_dialog.cpp +++ b/ui/qt/rtp_player_dialog.cpp @@ -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(); QSetsample_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);