21 #ifndef GNSS_SDR_VITERBI_DECODER_H 22 #define GNSS_SDR_VITERBI_DECODER_H 46 float decode_block(
const double input_c[],
int* output_u_int,
const int LL);
48 float decode_continuous(
const double sym[],
const int traceback_depth,
int bits[],
49 const int nbits_requested,
int& nbits_decoded);
56 Prev(
int states,
int t);
57 Prev(
const Prev& prev);
58 Prev& operator=(
const Prev& other);
61 int get_anchestor_state_of_current_state(
int current_state)
const;
62 int get_bit_of_current_state(
int current_state)
const;
63 float get_metric_of_current_state(
int current_state)
const;
65 void set_current_state_as_ancestor_of_next_state(
int next_state,
int current_state);
66 void set_decoded_bit_for_next_state(
int next_state,
int bit);
67 void set_survivor_branch_metric_of_next_state(
int next_state,
float metric);
70 std::vector<float> v_metric;
71 std::vector<int> state;
72 std::vector<int> v_bit;
78 void init_trellis_state();
79 int do_acs(
const double sym[],
int nbits);
80 int do_traceback(std::size_t traceback_length);
81 int do_tb_and_decode(
int traceback_length,
int requested_decoding_length,
int state,
int output_u_int[],
float& indicator_metric);
84 float gamma(
const float rec_array[],
int symbol,
int nn);
87 void nsc_transit(
int output_p[],
int trans_p[],
int input,
const int g[],
int KK,
int nn);
88 int nsc_enc_bit(
int state_out_p[],
int input,
int state_in,
const int g[],
int KK,
int nn);
89 int parity_counter(
int symbol,
int length);
92 std::deque<Prev> d_trellis_paths;
93 std::vector<float> d_pm_t;
94 std::vector<float> d_metric_c;
95 std::vector<float> d_rec_array;
98 std::vector<int> d_out0;
99 std::vector<int> d_state0;
100 std::vector<int> d_out1;
101 std::vector<int> d_state1;
104 float d_indicator_metric;
113 int d_number_symbols;
114 bool d_trellis_state_is_initialised;
117 #endif // GNSS_SDR_VITERBI_DECODER_H float decode_block(const double input_c[], int *output_u_int, const int LL)
Uses the Viterbi algorithm to perform hard-decision decoding of a convolutional code.
Class that implements a Viterbi decoder.