diff options
Diffstat (limited to 'src/fec/encode_rs.h')
-rw-r--r-- | src/fec/encode_rs.h | 58 |
1 files changed, 0 insertions, 58 deletions
diff --git a/src/fec/encode_rs.h b/src/fec/encode_rs.h deleted file mode 100644 index 2c157f9..0000000 --- a/src/fec/encode_rs.h +++ /dev/null @@ -1,58 +0,0 @@ -/* The guts of the Reed-Solomon encoder, meant to be #included - * into a function body with the following typedefs, macros and variables supplied - * according to the code parameters: - - * data_t - a typedef for the data symbol - * data_t data[] - array of NN-NROOTS-PAD and type data_t to be encoded - * data_t parity[] - an array of NROOTS and type data_t to be written with parity symbols - * NROOTS - the number of roots in the RS code generator polynomial, - * which is the same as the number of parity symbols in a block. - Integer variable or literal. - * - * NN - the total number of symbols in a RS block. Integer variable or literal. - * PAD - the number of pad symbols in a block. Integer variable or literal. - * ALPHA_TO - The address of an array of NN elements to convert Galois field - * elements in index (log) form to polynomial form. Read only. - * INDEX_OF - The address of an array of NN elements to convert Galois field - * elements in polynomial form to index (log) form. Read only. - * MODNN - a function to reduce its argument modulo NN. May be inline or a macro. - * GENPOLY - an array of NROOTS+1 elements containing the generator polynomial in index form - - * The memset() and memmove() functions are used. The appropriate header - * file declaring these functions (usually <string.h>) must be included by the calling - * program. - - * Copyright 2004, Phil Karn, KA9Q - * May be used under the terms of the GNU Lesser General Public License (LGPL) - */ - - -#undef A0 -#define A0 (NN) /* Special reserved value encoding zero in index form */ - -{ - int i, j; - data_t feedback; - - memset(parity,0,NROOTS*sizeof(data_t)); - - for(i=0;i<NN-NROOTS-PAD;i++){ - feedback = INDEX_OF[data[i] ^ parity[0]]; - if(feedback != A0){ /* feedback term is non-zero */ -#ifdef UNNORMALIZED - /* This line is unnecessary when GENPOLY[NROOTS] is unity, as it must - * always be for the polynomials constructed by init_rs() - */ - feedback = MODNN(NN - GENPOLY[NROOTS] + feedback); -#endif - for(j=1;j<NROOTS;j++) - parity[j] ^= ALPHA_TO[MODNN(feedback + GENPOLY[NROOTS-j])]; - } - /* Shift */ - memmove(&parity[0],&parity[1],sizeof(data_t)*(NROOTS-1)); - if(feedback != A0) - parity[NROOTS-1] = ALPHA_TO[MODNN(feedback + GENPOLY[0])]; - else - parity[NROOTS-1] = 0; - } -} |