38 std::string
Encode(
const std::string& bits)
const;
40 std::string
Decode(
const std::string& bits)
const;
44 const std::vector<int>&
polynomials()
const {
return polynomials_; }
54 typedef std::vector<std::vector<int>> Trellis;
56 int num_parity_bits()
const;
58 void InitializeOutputs();
60 int NextState(
int current_state,
int input)
const;
62 std::string Output(
int current_state,
int input)
const;
64 int BranchMetric(
const std::string& bits,
int source_state,
int target_state)
const;
68 std::pair<int, int> PathMetric(
const std::string& bits,
69 const std::vector<int>& prev_path_metrics,
74 void UpdatePathMetrics(
const std::string& bits,
75 std::vector<int>* path_metrics,
76 Trellis* trellis)
const;
78 const int constraint_;
79 const std::vector<int> polynomials_;
87 std::vector<std::string> outputs_;
Definition viterbi/viterbi.h:16
const std::vector< int > & polynomials() const
Definition viterbi/viterbi.h:44
std::string Decode(const std::string &bits) const
int constraint() const
Definition viterbi/viterbi.h:42
std::string Encode(const std::string &bits) const
ViterbiCodec(int constraint, const std::vector< int > &polynomials)
std::ostream & operator<<(std::ostream &os, const ViterbiCodec &codec)
int ReverseBits(int num_bits, int input)