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 */ |