libosmocore 1.11.0.30-c17053.202506162026
Osmocom core library
|
Accelerated Viterbi decoder implementation. More...
#include <stdlib.h>
#include <string.h>
#include <errno.h>
#include "config.h"
#include <osmocom/core/conv.h>
Data Structures | |
struct | vtrellis |
struct | vdecoder |
Macros | |
#define | BIT2NRZ(REG, N) (((REG >> N) & 0x01) * 2 - 1) * -1 |
#define | NUM_STATES(K) (K == 7 ? 64 : 16) |
#define | INIT_POINTERS(simd) |
Variables | |
static int | init_complete = 0 |
Accelerated Viterbi decoder implementation.
__attribute__ | ( | (visibility("hidden")) | ) |
References __attribute__.
References vdecoder::k, len, vdecoder::paths, vdecoder::trellis, vtrellis::vals, and vstate_lshift().
Referenced by traceback().
References vdecoder::k, len, vdecoder::paths, vdecoder::trellis, vtrellis::vals, and vstate_lshift().
Referenced by traceback().
References bitswap2(), bitswap3(), bitswap4(), bitswap5(), bitswap6(), and n.
Referenced by gen_output(), and gen_recursive_output().
|
inlinestatic |
References osmo_conv_code::next_term_output.
Referenced by vdec_init().
|
static |
References CONV_TERM_TAIL_BITING, depuncture(), forward_traverse(), len, vdecoder::len, vdecoder::n, and traceback().
Referenced by osmo_conv_decode_acc().
Referenced by conv_decode().
References vdecoder::intrvl, vdecoder::len, vdecoder::metric_func, vdecoder::n, vtrellis::outputs, vdecoder::paths, vtrellis::sums, and vdecoder::trellis.
Referenced by conv_decode().
References vtrellis::outputs, vtrellis::sums, and vtrellis::vals.
Referenced by generate_trellis(), and vdec_deinit().
|
static |
References bitswap(), osmo_conv_code::K, osmo_conv_code::N, and osmo_conv_code::next_output.
Referenced by gen_state_info().
|
static |
References bitswap(), osmo_conv_code::K, osmo_conv_code::N, osmo_conv_code::next_output, osmo_conv_code::next_term_output, and vstate_lshift().
Referenced by gen_recursive_state_info().
|
static |
References BIT2NRZ, gen_recursive_output(), osmo_conv_code::K, osmo_conv_code::N, osmo_conv_code::next_output, NUM_STATES, and vstate_lshift().
Referenced by generate_trellis().
|
static |
References BIT2NRZ, gen_output(), osmo_conv_code::K, osmo_conv_code::N, and vstate_lshift().
Referenced by generate_trellis().
For termination other than tail-biting, initialize the zero state as the encoder starting state. Initialize with the maximum accumulated sum at length equal to the constraint length.
References CONV_TERM_TAIL_BITING, free_trellis(), gen_recursive_state_info(), gen_state_info(), osmo_conv_code::K, osmo_conv_code::N, NUM_STATES, vtrellis::num_states, vtrellis::outputs, vdecoder::recursive, vtrellis::sums, osmo_conv_code::term, vdecoder::trellis, and vtrellis::vals.
Referenced by vdec_init().
Usage of curly braces is mandatory, because we use multi-line define.
References init_complete, INIT_POINTERS, and sse41_supported.
Referenced by osmo_conv_decode_acc().
References _traceback(), _traceback_rec(), CONV_TERM_FLUSH, CONV_TERM_TAIL_BITING, vdecoder::k, len, vdecoder::len, vtrellis::num_states, vdecoder::paths, vdecoder::recursive, vtrellis::sums, vdecoder::trellis, and vstate_lshift().
Referenced by conv_decode().
References free_trellis(), vdecoder::paths, and vdecoder::trellis.
Referenced by osmo_conv_decode_acc(), and vdec_init().
References conv_code_recursive(), CONV_TERM_FLUSH, generate_trellis(), vdecoder::intrvl, osmo_conv_code::K, vdecoder::k, osmo_conv_code::len, vdecoder::len, vdecoder::metric_func, osmo_conv_code::N, vdecoder::n, NUM_STATES, vdecoder::paths, vdecoder::recursive, osmo_conv_code::term, and vdec_deinit().
Referenced by osmo_conv_decode_acc().
Referenced by _traceback(), _traceback_rec(), gen_recursive_output(), gen_recursive_state_info(), gen_state_info(), and traceback().
|
static |
Referenced by osmo_conv_decode_acc(), and osmo_conv_init().