From 9eae3063e62df1ca47213027ad42fff6d0a9b7f4 Mon Sep 17 00:00:00 2001 From: David Oberhollenzer Date: Thu, 22 Jun 2017 13:39:31 +0200 Subject: Move libfec declarations to public header in global include directory Signed-off-by: David Oberhollenzer --- include/libfec.h | 37 +++++++++++++++++++++++++++++++++++++ 1 file changed, 37 insertions(+) create mode 100644 include/libfec.h (limited to 'include/libfec.h') diff --git a/include/libfec.h b/include/libfec.h new file mode 100644 index 0000000..356ac28 --- /dev/null +++ b/include/libfec.h @@ -0,0 +1,37 @@ +#ifndef LIBFEC_H +#define LIBFEC_H + +struct fec_parms; + +/* k - number of actual data packets + * n - total number of packets including data and redundant packets + * (actual packet size isn't relevant here) */ +struct fec_parms *fec_new(int k, int n); +void fec_free(struct fec_parms *p); + +/* src - array of (n) pointers to data packets + * fec - buffer for packet to be generated + * index - index of packet to be generated (0 <= index < n) + * sz - data packet size + * + * _linear version just takes a pointer to the raw data; no + * mucking about with packet pointers. + */ +void fec_encode(struct fec_parms *code, unsigned char *src[], + unsigned char *fec, int index, int sz); +void fec_encode_linear(struct fec_parms *code, unsigned char *src, + unsigned char *fec, int index, int sz); + +/* data - array of (k) pointers to data packets, in arbitrary order (see i) + * i - indices of (data) packets + * sz - data packet size + * + * Will never fail as long as you give it (k) individual data packets. + * Will re-order the (data) pointers but not the indices -- data packets + * are ordered on return. + */ +int fec_decode(struct fec_parms *code, unsigned char *data[], + int i[], int sz); + +#endif /* LIBFEC_H */ + -- cgit v1.2.3