summaryrefslogtreecommitdiffstats
path: root/src/viterbi.c
Commit message (Collapse)AuthorAgeFilesLines
* core/conv: strip unused memalign() callVadim Yanitskiy2017-05-071-10/+1
| | | | | | | | | The alligned memory allocation is only required for SSE, which is currently unsupported. Moreover, it's better to use dedicated _mm_malloc() and _mm_free() from xmmintrin.h instead, which are introduced by Intel specifically for SIMD computations. Change-Id: Ide764d1c643527323334ef14335be7f8915f7622
* core/conv: implement optimized Viterbi decoderTom Tsou2017-04-111-0/+602
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