#ifndef _NORM_ENCODER_RS8
#define _NORM_ENCODER_RS8
#include "normEncoder.h"
#include "protoDefs.h"
class NormEncoderRS8 : public NormEncoder
{
public:
NormEncoderRS8();
~NormEncoderRS8();
virtual bool Init(unsigned int numData, unsigned int numParity, UINT16 vectorSize);
virtual void Destroy();
virtual void Encode(unsigned int segmentId, const char* dataVector, char** parityVectorList);
unsigned int GetNumData()
{return ndata;}
unsigned int GetNumParity()
{return npar;}
unsigned int GetVectorSize()
{return vector_size;}
private:
unsigned int ndata; unsigned int npar; unsigned int vector_size; UINT8* enc_matrix;
};
class NormDecoderRS8 : public NormDecoder
{
public:
NormDecoderRS8();
virtual ~NormDecoderRS8();
virtual bool Init(unsigned int numData, unsigned int numParity, UINT16 vectorSize);
virtual void Destroy();
virtual int Decode(char** vectorList, unsigned int numData, unsigned int erasureCount, unsigned int* erasureLocs);
unsigned int GetNumParity()
{return npar;}
unsigned int GetVectorSize()
{return vector_size;}
private:
bool InvertDecodingMatrix();
unsigned int ndata; unsigned int npar; UINT16 vector_size; UINT8* enc_matrix;
UINT8* dec_matrix;
unsigned int* parity_loc;
unsigned int* inv_ndxc;
unsigned int* inv_ndxr;
unsigned int* inv_pivt;
UINT8* inv_id_row;
UINT8* inv_temp_row;
};
#endif