From 4349dc21e726fe6e9e1fba59f9f06a9bdc718078 Mon Sep 17 00:00:00 2001 From: Gerhard Sittig Date: Sun, 28 Jan 2018 21:02:54 +0100 Subject: [PATCH] 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. --- pv/data/decodesignal.cpp | 8 ++++++-- 1 file changed, 6 insertions(+), 2 deletions(-) diff --git a/pv/data/decodesignal.cpp b/pv/data/decodesignal.cpp index 2a3ad14..1ff9d76 100644 --- a/pv/data/decodesignal.cpp +++ b/pv/data/decodesignal.cpp @@ -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); -- 2.30.2