libosmocore/src
Tom Tsou 35536807ab core/conv: implement optimized Viterbi decoder
Add a separate, faster convolution decoding implementation for rates
up to N=4 and constraint lengths of K=5 and K=7, which covers the
most GSM code uses. The decoding algorithm exploits the symmetric
structure of the Viterbi add-compare-select (ACS) operation - commonly
known as the ACS butterfly. This shift-register optimization can be
found in the well-known text by Dave Forney.

Forney, G.D., "The Viterbi Algorithm," Proc. of the IEEE, March 1973.

Implementation is non-architecture specific and improves performance on
x86 as well as ARM processors. Existing API is unchanged with optimized
code being called internally for supported codes.

The original code was relicensed under GPLv2-or-later with permission
of copyright holder - Tom Tsou.

Change-Id: I74d355274b4176a7d924f91ef3c96912ce338fb2
2017-04-11 00:36:08 +00:00
..
codec DTX: fix AMR SID-FIRST detection 2017-01-10 23:28:12 +00:00
coding build: coding/gsm0503: fix build in sep. dir: -I builddir 2017-03-20 12:32:43 +00:00
ctrl ctrl_type_vals: explicitly terminate 2017-03-15 13:47:20 +00:00
gb logging.h: fixup: shorter names for LOGGING_FILTER_* and LOGGING_CTX_* 2017-02-23 18:08:12 +01:00
gsm gsm0808: make gsm0808_create_reset_ack() accessible 2017-04-08 07:44:47 +00:00
sim sim: Link to libtalloc as symbols of it are used here 2017-01-24 14:26:11 +01:00
vty logging.h: fixup: shorter names for LOGGING_FILTER_* and LOGGING_CTX_* 2017-02-23 18:08:12 +01:00
Makefile.am core/conv: implement optimized Viterbi decoder 2017-04-11 00:36:08 +00:00
application.c compiler warnings: take care of compiler warning "unused-result" 2017-04-08 07:45:13 +00:00
backtrace.c Update doxygen annotations in libosmocore 2016-05-05 18:49:27 +02:00
bitcomp.c bitcomp: Remove the t4 decoding from libosmocore 2016-11-10 17:07:45 +00:00
bits.c Add octet-aligned/unaligned shift functions 2016-06-20 19:02:56 +02:00
bitvec.c Add function to get uninterrupted bit run 2017-01-06 10:37:42 +00:00
conv.c core/conv: implement optimized Viterbi decoder 2017-04-11 00:36:08 +00:00
crc16.c add CRC16-CCITT to libosmocore 2016-12-23 22:16:08 +01:00
crcXXgen.c.tpl misc: Doxygen tweaks: fixed some typos and minor errors 2013-02-15 13:27:59 +01:00
fsm.c fsm: Add VTY introspection of osmo_fsm and their instances 2017-01-07 12:21:11 +00:00
gsmtap_util.c Remove direct logging 2017-01-06 10:12:24 +00:00
logging.c logging: Add log_info_cat for DLSS7/DLSCCP/DLSUA/DLM3UA 2017-04-03 22:20:49 +02:00
logging_gsmtap.c Implement GSMTAP log target 2016-12-09 17:59:58 +01:00
logging_syslog.c doc: Fix the Doxygen section endings 2012-04-18 21:53:23 +02:00
loggingrb.c sttrb / loggingrb: Use GPLv2+ as license, not AGPLv3+ 2014-10-26 20:52:25 +01:00
macaddr.c disable various code if building for bare-iron embedded 2017-01-23 12:20:33 +00:00
msgb.c msgb: add msgb_talloc_ctx_init(), deprecate msgb_set_talloc_ctx() 2016-09-27 11:46:38 +02:00
msgfile.c msgfile: Fix warning on BSDs stdio 2015-03-18 21:54:37 +01:00
panic.c Update doxygen annotations in libosmocore 2016-05-05 18:49:27 +02:00
plugin.c add some missing doxygen annotation for libosmocore functions 2013-01-11 09:43:32 +01:00
prim.c Add struct osmo_prim_event_map and osmo_event_for_prim() 2017-04-09 17:54:28 +00:00
rate_ctr.c Update doxygen annotations in libosmocore 2016-05-05 18:49:27 +02:00
rbtree.c fix FSF address in sources/headers 2015-11-12 13:46:05 +01:00
select.c select: Find the highest fd when filling the fd_sets 2017-04-04 20:14:32 +00:00
serial.c serial.c: file descriptor '0' is a valid value 2016-12-24 17:59:36 +01:00
signal.c Update doxygen annotations in libosmocore 2016-05-05 18:49:27 +02:00
socket.c Add osmo_sock_init2() function, allowing both BIND *and* CONNECT 2017-04-09 21:46:21 +02:00
stat_item.c stats: Add OSMO prefix to STAT_ITEM_NOVALUE_ID 2015-12-08 10:33:15 +01:00
statistics.c core: Add difference function to osmo_counter 2015-10-29 01:10:06 +01:00
stats.c statsd: Fix compiler warning (int32_t vs. int64_t) 2016-11-11 15:24:24 +01:00
stats_statsd.c statsd: Fix compiler warning (int32_t vs. int64_t) 2016-11-11 15:24:24 +01:00
strrb.c strrb.c: Use string.h, not strings.h 2014-11-14 15:21:18 +01:00
timer.c timer: only call the callback if not NULL 2016-11-28 23:23:09 +01:00
timer_gettimeofday.c add osmo_gettimeofday as a shim around gettimeofday 2016-09-22 07:18:39 +02:00
utils.c osmo_hexparse: allow whitespace in parsed string, add ws test 2017-02-14 15:59:22 +01:00
viterbi.c core/conv: implement optimized Viterbi decoder 2017-04-11 00:36:08 +00:00
viterbi_gen.c core/conv: implement optimized Viterbi decoder 2017-04-11 00:36:08 +00:00
write_queue.c wqueue: Reject messges if queue is considered full 2016-12-09 11:37:37 +01:00