mirror of
https://github.com/wangyu-/UDPspeeder.git
synced 2025-09-17 20:54:33 +08:00
fix indent problem with clang-format
This commit is contained in:
102
lib/rs.cpp
102
lib/rs.cpp
@@ -8,69 +8,57 @@
|
||||
#include "stdlib.h"
|
||||
#include "string.h"
|
||||
|
||||
void rs_encode(void *code,char *data[],int size)
|
||||
{
|
||||
int k=get_k(code);
|
||||
int n=get_n(code);
|
||||
for(int i=k;i<n;i++)
|
||||
{
|
||||
fec_encode(code, (void **)data, data[i],i, size);
|
||||
}
|
||||
void rs_encode(void *code, char *data[], int size) {
|
||||
int k = get_k(code);
|
||||
int n = get_n(code);
|
||||
for (int i = k; i < n; i++) {
|
||||
fec_encode(code, (void **)data, data[i], i, size);
|
||||
}
|
||||
|
||||
return ;
|
||||
return;
|
||||
}
|
||||
|
||||
int rs_decode(void *code,char *data[],int size)
|
||||
{
|
||||
int k=get_k(code);
|
||||
int n=get_n(code);
|
||||
int index[n];
|
||||
int count=0;
|
||||
for(int i=0;i<n;i++)
|
||||
{
|
||||
if(data[i]!=0)
|
||||
{
|
||||
index[count++]=i;
|
||||
}
|
||||
}
|
||||
if(count<k)
|
||||
return -1;
|
||||
for(int i=0;i<n;i++)
|
||||
{
|
||||
if(i<count)
|
||||
data[i]=data[index[i]];
|
||||
else
|
||||
data[i]=0;
|
||||
}
|
||||
return fec_decode(code,(void**)data,index,size);
|
||||
int rs_decode(void *code, char *data[], int size) {
|
||||
int k = get_k(code);
|
||||
int n = get_n(code);
|
||||
int index[n];
|
||||
int count = 0;
|
||||
for (int i = 0; i < n; i++) {
|
||||
if (data[i] != 0) {
|
||||
index[count++] = i;
|
||||
}
|
||||
}
|
||||
if (count < k)
|
||||
return -1;
|
||||
for (int i = 0; i < n; i++) {
|
||||
if (i < count)
|
||||
data[i] = data[index[i]];
|
||||
else
|
||||
data[i] = 0;
|
||||
}
|
||||
return fec_decode(code, (void **)data, index, size);
|
||||
}
|
||||
|
||||
static void * (*table)[256]=0;
|
||||
void* get_code(int k,int n)
|
||||
{
|
||||
if (table==0)
|
||||
{
|
||||
table=(void* (*)[256]) malloc(sizeof(void*)*256*256);
|
||||
if(!table)
|
||||
{
|
||||
return table;
|
||||
}
|
||||
memset(table,0,sizeof(void*)*256*256);
|
||||
}
|
||||
if(table[k][n]==0)
|
||||
{
|
||||
table[k][n]=fec_new(k,n);
|
||||
}
|
||||
return table[k][n];
|
||||
static void *(*table)[256] = 0;
|
||||
void *get_code(int k, int n) {
|
||||
if (table == 0) {
|
||||
table = (void *(*)[256])malloc(sizeof(void *) * 256 * 256);
|
||||
if (!table) {
|
||||
return table;
|
||||
}
|
||||
memset(table, 0, sizeof(void *) * 256 * 256);
|
||||
}
|
||||
if (table[k][n] == 0) {
|
||||
table[k][n] = fec_new(k, n);
|
||||
}
|
||||
return table[k][n];
|
||||
}
|
||||
void rs_encode2(int k,int n,char *data[],int size)
|
||||
{
|
||||
void* code=get_code(k,n);
|
||||
rs_encode(code,data,size);
|
||||
void rs_encode2(int k, int n, char *data[], int size) {
|
||||
void *code = get_code(k, n);
|
||||
rs_encode(code, data, size);
|
||||
}
|
||||
|
||||
int rs_decode2(int k,int n,char *data[],int size)
|
||||
{
|
||||
void* code=get_code(k,n);
|
||||
return rs_decode(code,data,size);
|
||||
int rs_decode2(int k, int n, char *data[], int size) {
|
||||
void *code = get_code(k, n);
|
||||
return rs_decode(code, data, size);
|
||||
}
|
||||
|
14
lib/rs.h
14
lib/rs.h
@@ -20,8 +20,7 @@
|
||||
//
|
||||
// info:
|
||||
// the function will always succeed,except malloc fail.if malloc fail,it will call exit()
|
||||
void rs_encode(void *code,char *data[],int size);
|
||||
|
||||
void rs_encode(void *code, char *data[], int size);
|
||||
|
||||
// input:
|
||||
// data[0.....n-1] points to original data and redundate data,in right order
|
||||
@@ -37,15 +36,10 @@ void rs_encode(void *code,char *data[],int size);
|
||||
// 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.
|
||||
int rs_decode(void *code,char *data[],int size);
|
||||
|
||||
|
||||
void rs_encode2(int k,int n,char *data[],int size);
|
||||
|
||||
int rs_decode2(int k,int n,char *data[],int size);
|
||||
|
||||
|
||||
int rs_decode(void *code, char *data[], int size);
|
||||
|
||||
void rs_encode2(int k, int n, char *data[], int size);
|
||||
|
||||
int rs_decode2(int k, int n, char *data[], int size);
|
||||
|
||||
#endif /* LIB_RS_H_ */
|
||||
|
Reference in New Issue
Block a user