GNU Radio 3.6.5 C++ API
|
fancy, schmancy 12-way interleaved viterbi decoder for ATSC More...
#include <atsci_viterbi_decoder.h>
Public Member Functions | |
atsci_viterbi_decoder () | |
~atsci_viterbi_decoder () | |
void | reset () |
reset all decoder states | |
void | decode (atsc_mpeg_packet_rs_encoded out[NCODERS], const atsc_soft_data_segment in[NCODERS]) |
Static Public Attributes | |
static const int | NCODERS = 12 |
Protected Types | |
typedef interleaver_fifo < unsigned char > | fifo_t |
Protected Member Functions | |
void | decode_helper (unsigned char out[OUTPUT_SIZE], const float in[INPUT_SIZE]) |
Protected Attributes | |
single_viterbi_t | viterbi [NCODERS] |
fifo_t * | fifo [NCODERS] |
bool | debug |
Static Protected Attributes | |
static const int | SEGMENT_SIZE = ATSC_MPEG_RS_ENCODED_LENGTH |
static const int | OUTPUT_SIZE = (SEGMENT_SIZE * 12) |
static const int | INPUT_SIZE = (ATSC_DATA_SEGMENT_LENGTH * 12) |
fancy, schmancy 12-way interleaved viterbi decoder for ATSC
typedef interleaver_fifo<unsigned char> atsci_viterbi_decoder::fifo_t [protected] |
atsci_viterbi_decoder::atsci_viterbi_decoder | ( | ) |
atsci_viterbi_decoder::~atsci_viterbi_decoder | ( | ) |
void atsci_viterbi_decoder::decode | ( | atsc_mpeg_packet_rs_encoded | out[NCODERS], |
const atsc_soft_data_segment | in[NCODERS] | ||
) |
Take 12 data segments of soft decisions (floats) and produce 12 RS encoded data segments. We work in groups of 12 because that's the smallest number of segments that composes a single full cycle of the decoder mux.
void atsci_viterbi_decoder::decode_helper | ( | unsigned char | out[OUTPUT_SIZE], |
const float | in[INPUT_SIZE] | ||
) | [protected] |
void atsci_viterbi_decoder::reset | ( | ) |
reset all decoder states
bool atsci_viterbi_decoder::debug [protected] |
fifo_t* atsci_viterbi_decoder::fifo[NCODERS] [protected] |
const int atsci_viterbi_decoder::INPUT_SIZE = (ATSC_DATA_SEGMENT_LENGTH * 12) [static, protected] |
const int atsci_viterbi_decoder::NCODERS = 12 [static] |
const int atsci_viterbi_decoder::OUTPUT_SIZE = (SEGMENT_SIZE * 12) [static, protected] |
const int atsci_viterbi_decoder::SEGMENT_SIZE = ATSC_MPEG_RS_ENCODED_LENGTH [static, protected] |
single_viterbi_t atsci_viterbi_decoder::viterbi[NCODERS] [protected] |