DecodeSignal: only pass non-zero sample rate to decoders

As reported in bug #1118 not all input sources provide a samplerate, and
decoder instances may not cope with a rate spec of 0. Only pass non-zero
sample rates to the decoder stack. This improves robustness in addition
to the specific fix for #1118 in the decoders' implementations.
This commit is contained in:
Gerhard Sittig 2018-01-28 21:02:54 +01:00 committed by Uwe Hermann
parent ba0c5f899c
commit 4349dc21e7
1 changed files with 6 additions and 2 deletions

View File

@ -978,6 +978,8 @@ void DecodeSignal::decode_proc()
void DecodeSignal::start_srd_session()
{
uint64_t samplerate;
if (srd_session_)
stop_srd_session();
@ -1004,8 +1006,10 @@ void DecodeSignal::start_srd_session()
}
// Start the session
srd_session_metadata_set(srd_session_, SRD_CONF_SAMPLERATE,
g_variant_new_uint64(segments_.at(current_segment_id_).samplerate));
samplerate = segments_.at(current_segment_id_).samplerate;
if (samplerate)
srd_session_metadata_set(srd_session_, SRD_CONF_SAMPLERATE,
g_variant_new_uint64(samplerate));
srd_pd_output_callback_add(srd_session_, SRD_OUTPUT_ANN,
DecodeSignal::annotation_callback, this);