GNU Radio 3.7.0 C++ API
atsci_viterbi_decoder Class Reference

fancy, schmancy 12-way interleaved viterbi decoder for ATSC More...

#include <viterbi_decoder_impl.h>

List of all members.

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_tfifo [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)

Detailed Description

fancy, schmancy 12-way interleaved viterbi decoder for ATSC


Member Typedef Documentation

typedef interleaver_fifo<unsigned char> atsci_viterbi_decoder::fifo_t [protected]

Constructor & Destructor Documentation


Member Function Documentation

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]

reset all decoder states


Member Data Documentation

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]

The documentation for this class was generated from the following file: