From 74c9c926a8936b6e7b781639908d1016e2088307 Mon Sep 17 00:00:00 2001 From: Gerhard Sittig Date: Fri, 3 Jul 2020 12:33:28 +0200 Subject: timing: only queue when averaging, rephrase put calls Reduce the amount of work which the timing decoder needs to do. Only keep the deque() filled when averaging is active. Rephrase .put() calls to reduce text line lengths (and for consistency with a pending change). Move another options lookup for deltas out of the main loop. --- decoders/timing/pd.py | 27 +++++++++++++++------------ 1 file changed, 15 insertions(+), 12 deletions(-) (limited to 'decoders') diff --git a/decoders/timing/pd.py b/decoders/timing/pd.py index 071c990..1295477 100644 --- a/decoders/timing/pd.py +++ b/decoders/timing/pd.py @@ -115,6 +115,7 @@ class Decoder(srd.Decoder): raise SamplerateError('Cannot decode without samplerate.') edge = self.options['edge'] avg_period = self.options['avg_period'] + delta = self.options['delta'] == 'yes' terse = self.options['terse'] == 'yes' ss = None last_n = deque() @@ -134,21 +135,23 @@ class Decoder(srd.Decoder): samples = es - ss t = samples / self.samplerate - if t > 0: - last_n.append(t) - if len(last_n) > avg_period: - last_n.popleft() - if terse: - self.put(ss, es, self.out_ann, [Ann.TERSE, terse_times(t)]) + cls, txt = Ann.TERSE, terse_times(t) + self.put(ss, es, self.out_ann, [cls, txt]) else: - self.put(ss, es, self.out_ann, [Ann.TIME, [normalize_time(t)]]) + cls, txt = Ann.TIME, [normalize_time(t)] + self.put(ss, es, self.out_ann, [cls, txt]) if avg_period > 0: - self.put(ss, es, self.out_ann, - [Ann.AVG, [normalize_time(sum(last_n) / len(last_n))]]) - if last_t and self.options['delta'] == 'yes': - self.put(ss, es, self.out_ann, - [Ann.DELTA, [normalize_time(t - last_t)]]) + if t > 0: + last_n.append(t) + if len(last_n) > avg_period: + last_n.popleft() + average = sum(last_n) / len(last_n) + cls, txt = Ann.AVG, normalize_time(average) + self.put(ss, es, self.out_ann, [cls, [txt]]) + if last_t and delta: + cls, txt = Ann.DELTA, normalize_time(t - last_t) + self.put(ss, es, self.out_ann, [cls, [txt]]) last_t = t ss = es -- cgit v1.2.3-70-g09d2