GNU Radio Manual and C++ API Reference  3.7.12.0
The Free & Open Software Radio Ecosystem
atsci_viterbi_decoder Class Reference

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

#include <gnuradio/atsc/viterbi_decoder_impl.h>

Public Member Functions

 atsci_viterbi_decoder ()
 
 ~atsci_viterbi_decoder ()
 
void reset ()
 reset all decoder states More...
 
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

◆ fifo_t

typedef interleaver_fifo<unsigned char> atsci_viterbi_decoder::fifo_t
protected

Constructor & Destructor Documentation

◆ atsci_viterbi_decoder()

atsci_viterbi_decoder::atsci_viterbi_decoder ( )

◆ ~atsci_viterbi_decoder()

atsci_viterbi_decoder::~atsci_viterbi_decoder ( )

Member Function Documentation

◆ decode()

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.

◆ decode_helper()

void atsci_viterbi_decoder::decode_helper ( unsigned char  out[OUTPUT_SIZE],
const float  in[INPUT_SIZE] 
)
protected

◆ reset()

void atsci_viterbi_decoder::reset ( )

reset all decoder states

Member Data Documentation

◆ debug

bool atsci_viterbi_decoder::debug
protected

◆ fifo

fifo_t* atsci_viterbi_decoder::fifo[NCODERS]
protected

◆ INPUT_SIZE

const int atsci_viterbi_decoder::INPUT_SIZE = (ATSC_DATA_SEGMENT_LENGTH * 12)
staticprotected

◆ NCODERS

const int atsci_viterbi_decoder::NCODERS = 12
static

◆ OUTPUT_SIZE

const int atsci_viterbi_decoder::OUTPUT_SIZE = (SEGMENT_SIZE * 12)
staticprotected

◆ SEGMENT_SIZE

const int atsci_viterbi_decoder::SEGMENT_SIZE = ATSC_MPEG_RS_ENCODED_LENGTH
staticprotected

◆ viterbi

single_viterbi_t atsci_viterbi_decoder::viterbi[NCODERS]
protected

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