| 1 |
/* |
| 2 |
* fec.h -- forward error correction based on Vandermonde matrices |
| 3 |
* 980614 |
| 4 |
* (C) 1997-98 Luigi Rizzo (luigi@iet.unipi.it) |
| 5 |
* |
| 6 |
* Portions derived from code by Phil Karn (karn@ka9q.ampr.org), |
| 7 |
* Robert Morelos-Zaragoza (robert@spectra.eng.hawaii.edu) and Hari |
| 8 |
* Thirumoorthy (harit@spectra.eng.hawaii.edu), Aug 1995 |
| 9 |
* modified by Marc Lehmann <fec@schmorp.de>, Sep 2003. |
| 10 |
* |
| 11 |
* Redistribution and use in source and binary forms, with or without |
| 12 |
* modification, are permitted provided that the following conditions |
| 13 |
* are met: |
| 14 |
|
| 15 |
* 1. Redistributions of source code must retain the above copyright |
| 16 |
* notice, this list of conditions and the following disclaimer. |
| 17 |
* 2. Redistributions in binary form must reproduce the above |
| 18 |
* copyright notice, this list of conditions and the following |
| 19 |
* disclaimer in the documentation and/or other materials |
| 20 |
* provided with the distribution. |
| 21 |
* |
| 22 |
* THIS SOFTWARE IS PROVIDED BY THE AUTHORS ``AS IS'' AND |
| 23 |
* ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, |
| 24 |
* THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A |
| 25 |
* PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHORS |
| 26 |
* BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, |
| 27 |
* OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, |
| 28 |
* PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, |
| 29 |
* OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY |
| 30 |
* THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR |
| 31 |
* TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT |
| 32 |
* OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY |
| 33 |
* OF SUCH DAMAGE. |
| 34 |
*/ |
| 35 |
|
| 36 |
/* |
| 37 |
* The following parameter defines how many bits are used for |
| 38 |
* field elements. The code supports any value from 2 to 16 |
| 39 |
* but fastest operation is achieved with 8 bit elements |
| 40 |
* This is the only parameter you may want to change. |
| 41 |
*/ |
| 42 |
#define GF_BITS8 8 /* code over GF(2**GF_BITS) - change to suit */ |
| 43 |
#define GF_BITS16 16 /* code over GF(2**GF_BITS) - change to suit */ |
| 44 |
|
| 45 |
#define GF_SIZE8 ((1 << GF_BITS8 ) - 1) /* powers of \alpha */ |
| 46 |
#define GF_SIZE16 ((1 << GF_BITS16) - 1) /* powers of \alpha */ |
| 47 |
|
| 48 |
void fec8_free(void *p) ; |
| 49 |
void *fec8_new(int k, int n) ; |
| 50 |
void fec8_encode(void *code, void *src[], void *dst, int index, int sz) ; |
| 51 |
int fec8_decode(void *code, void *pkt[], int index[], int sz) ; |
| 52 |
|
| 53 |
void fec16_free(void *p) ; |
| 54 |
void *fec16_new(int k, int n) ; |
| 55 |
void fec16_encode(void *code, void *src[], void *dst, int index, int sz) ; |
| 56 |
int fec16_decode(void *code, void *pkt[], int index[], int sz) ; |
| 57 |
|
| 58 |
/* end of file */ |