mirror of
https://codeberg.org/libreboot/lbmk.git
synced 2026-07-21 10:12:04 +02:00
util/spkmodem-recv: don't use modulus on decode
it's slow on older compilers/systems that don't optimise. instead, we branch (cheaper) and just do an above or equal comparison), resetting appropriately or subtracting. should yield an actually useful performance gain, on older systems. a bit theoretical on modern systems, which optimise well (modern compilers will produce assembly code much like what the new C code is doing) Signed-off-by: Leah Rowe <leah@libreboot.org>
This commit is contained in:
@@ -142,7 +142,9 @@ decode_pulse(struct decoder_state *st)
|
|||||||
size_t n;
|
size_t n;
|
||||||
int next;
|
int next;
|
||||||
|
|
||||||
next = (st->ringpos + SAMPLES_PER_FRAME) % MAX_SAMPLES;
|
next = st->ringpos + SAMPLES_PER_FRAME;
|
||||||
|
if (next >= MAX_SAMPLES)
|
||||||
|
next -= MAX_SAMPLES;
|
||||||
|
|
||||||
st->freq_data -= st->pulse[st->ringpos];
|
st->freq_data -= st->pulse[st->ringpos];
|
||||||
st->freq_data += st->pulse[next];
|
st->freq_data += st->pulse[next];
|
||||||
@@ -155,14 +157,15 @@ decode_pulse(struct decoder_state *st)
|
|||||||
err(errno, "stdin read");
|
err(errno, "stdin read");
|
||||||
}
|
}
|
||||||
|
|
||||||
if (abs(st->frame[st->ringpos]) > THRESHOLD)
|
st->pulse[st->ringpos] =
|
||||||
st->pulse[st->ringpos] = 1;
|
abs(st->frame[st->ringpos]) > THRESHOLD;
|
||||||
else
|
|
||||||
st->pulse[st->ringpos] = 0;
|
|
||||||
|
|
||||||
st->freq_separator += st->pulse[st->ringpos];
|
st->freq_separator += st->pulse[st->ringpos];
|
||||||
|
|
||||||
st->ringpos = (st->ringpos + 1) % MAX_SAMPLES;
|
st->ringpos++;
|
||||||
|
if (st->ringpos >= MAX_SAMPLES)
|
||||||
|
st->ringpos = 0;
|
||||||
|
|
||||||
st->sample_count++;
|
st->sample_count++;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user