46 lines
1.4 KiB
C
Raw Normal View History

2017-09-14 07:01:39 -05:00
/*
* rs.h
*
* Created on: Sep 14, 2017
* Author: root
*/
#ifndef LIB_RS_H_
#define LIB_RS_H_
#include "fec.h"
// input:
// code, generated by fec_new() function from fec.h
// data[0....k-1 ], points to original data
// size, data length
//
// output:
// data[k....n-1], points to generated redundant data
//
// info:
// the function will always succeed,except malloc fail.if malloc fail,it will call exit()
2023-02-07 05:34:06 -05:00
void rs_encode(void *code, char *data[], int size);
// input:
// data[0.....n-1] points to original data and redundate data,in right order
// if data[i] is missing ,set poniter data[i] to 0 (point it to null)
//
// outout:
// data[0.....k-1] will point to the recovered original data.
//
// info:
// return zero on success
// if the number of no-zero pointers is less than k,the function will fail and return non-zero
//
// advanced info:
// 1. rs_decode wont malloc memory for those zero pointers in data[0.....k-1]. instead it will re-use the memory of other non-zero pointers (and let data[0.....k-1] point to those memory).
// 2. if the input data[0.....n-1] contains x non-zero pointers,after called rs_decode,there will still be exactly x non-zero poninters in data[0.....n-1],just the order may change.
2023-02-07 05:34:06 -05:00
int rs_decode(void *code, char *data[], int size);
2017-09-14 07:01:39 -05:00
2023-02-07 05:34:06 -05:00
void rs_encode2(int k, int n, char *data[], int size);
2017-09-14 07:01:39 -05:00
2023-02-07 05:34:06 -05:00
int rs_decode2(int k, int n, char *data[], int size);
2017-09-14 07:01:39 -05:00
#endif /* LIB_RS_H_ */