fix last commit

This commit is contained in:
wangyu- 2018-08-05 14:02:28 -05:00
parent 25da3a2b03
commit 3e248b414c
3 changed files with 32 additions and 14 deletions

View File

@ -20,7 +20,7 @@
fec_parameter_t g_fec_par; fec_parameter_t g_fec_par;
int debug_fec=1; int debug_fec=0;
//int dynamic_update_fec=1; //int dynamic_update_fec=1;
const int encode_fast_send=1; const int encode_fast_send=1;
@ -288,15 +288,18 @@ int fec_encode_manager_t::input(char *s,int len/*,int &is_first_packet*/)
if(fec_par.mode==0) if(fec_par.mode==0)
{ {
actual_data_num=fec_par.get_tail().x;
actual_redundant_num=fec_par.get_tail().y; int tail_x=fec_par.get_tail().x;
int tail_y=fec_par.get_tail().y;
actual_data_num=tail_x;
actual_redundant_num=tail_y;
if(short_packet_optimize) if(short_packet_optimize)
{ {
u32_t best_len=(blob_encode.get_shard_len(actual_data_num,0)+header_overhead)*(actual_data_num+actual_redundant_num); u32_t best_len=(blob_encode.get_shard_len(tail_x,0)+header_overhead)*(tail_x+tail_y);
int best_data_num=actual_data_num; int best_data_num=tail_x;
assert(actual_data_num<=fec_par.rs_cnt); assert(tail_x<=fec_par.rs_cnt);
for(int i=1;i<actual_data_num;i++) for(int i=1;i<tail_x;i++)
{ {
assert(fec_par.rs_par[i-1].x==i); assert(fec_par.rs_par[i-1].x==i);
int tmp_x=fec_par.rs_par[i-1].x; int tmp_x=fec_par.rs_par[i-1].x;
@ -315,14 +318,10 @@ int fec_encode_manager_t::input(char *s,int len/*,int &is_first_packet*/)
actual_data_num=best_data_num; actual_data_num=best_data_num;
assert(best_data_num>=1&&best_data_num<=fec_par.rs_cnt); assert(best_data_num>=1&&best_data_num<=fec_par.rs_cnt);
actual_redundant_num=fec_par.rs_par[best_data_num-1].y; actual_redundant_num=fec_par.rs_par[best_data_num-1].y;
if(debug_fec)
mylog(log_debug,"actual_data_num=%d actual_redundant_num=%d len=%d\n",actual_data_num,actual_redundant_num,blob_encode.get_shard_len(actual_data_num,0));
else
mylog(log_trace,"actual_data_num=%d actual_redundant_num=%d\n",actual_data_num,actual_redundant_num);
} }
assert(blob_encode.output(actual_data_num,blob_output,fec_len)==0); assert(blob_encode.output(actual_data_num,blob_output,fec_len)==0);
} }
else else
{ {
@ -337,7 +336,11 @@ int fec_encode_manager_t::input(char *s,int len/*,int &is_first_packet*/)
} }
} }
mylog(log_trace,"%d %d %d\n",actual_data_num,actual_redundant_num,fec_len); if(debug_fec)
mylog(log_debug,"x=%d y=%d len=%d\n",actual_data_num,actual_redundant_num,fec_len);
else
mylog(log_trace,"x=%d y=%d len=%d\n",actual_data_num,actual_redundant_num,fec_len);
//mylog(log_trace,"%d %d %d\n",actual_data_num,actual_redundant_num,fec_len);
char *tmp_output_buf[max_fec_packet_num+5]={0}; char *tmp_output_buf[max_fec_packet_num+5]={0};
for(int i=0;i<actual_data_num+actual_redundant_num;i++) for(int i=0;i<actual_data_num+actual_redundant_num;i++)

View File

@ -19,6 +19,8 @@ const int max_fec_packet_num=255;// this is the limitation of the rs lib
extern u32_t fec_buff_num; extern u32_t fec_buff_num;
const int rs_str_len=max_fec_packet_num*10+100; const int rs_str_len=max_fec_packet_num*10+100;
extern int header_overhead;
extern int debug_fec;
struct fec_parameter_t struct fec_parameter_t
{ {
@ -50,7 +52,7 @@ struct fec_parameter_t
mylog(log_warn,"failed to parse [%s]\n",tmp_str.c_str()); mylog(log_warn,"failed to parse [%s]\n",tmp_str.c_str());
return -1; return -1;
} }
if(x<1||y<1||x+y>max_fec_packet_num) if(x<1||y<0||x+y>max_fec_packet_num)
{ {
mylog(log_warn,"invaild value x=%d y=%d\n",x,y); mylog(log_warn,"invaild value x=%d y=%d\n",x,y);
return -1; return -1;

View File

@ -650,6 +650,8 @@ void process_arg(int argc, char *argv[])
{"queue-len", required_argument, 0,'q'}, {"queue-len", required_argument, 0,'q'},
{"fec", required_argument, 0,'f'}, {"fec", required_argument, 0,'f'},
{"jitter", required_argument, 0,'j'}, {"jitter", required_argument, 0,'j'},
{"header-overhead", required_argument, 0, 1},
{"debug-fec", no_argument, 0, 1},
{"fifo", required_argument, 0, 1}, {"fifo", required_argument, 0, 1},
{"sub-net", required_argument, 0, 1}, {"sub-net", required_argument, 0, 1},
{"tun-dev", required_argument, 0, 1}, {"tun-dev", required_argument, 0, 1},
@ -660,6 +662,7 @@ void process_arg(int argc, char *argv[])
{NULL, 0, 0, 0} {NULL, 0, 0, 0}
}; };
int option_index = 0; int option_index = 0;
assert(g_fec_par.rs_from_str((char *)"20:10")==0);
for (i = 0; i < argc; i++) for (i = 0; i < argc; i++)
{ {
@ -939,6 +942,11 @@ void process_arg(int argc, char *argv[])
} }
g_fec_par.timeout*=1000; g_fec_par.timeout*=1000;
} }
else if(strcmp(long_options[option_index].name,"debug-fec")==0)
{
debug_fec=1;
mylog(log_info,"debug_fec enabled\n");
}
else if(strcmp(long_options[option_index].name,"fifo")==0) else if(strcmp(long_options[option_index].name,"fifo")==0)
{ {
sscanf(optarg,"%s",fifo_file); sscanf(optarg,"%s",fifo_file);
@ -969,6 +977,11 @@ void process_arg(int argc, char *argv[])
sscanf(optarg,"%d",&tun_mtu); sscanf(optarg,"%d",&tun_mtu);
mylog(log_warn,"changed tun_mtu,tun_mtu=%d\n",tun_mtu); mylog(log_warn,"changed tun_mtu,tun_mtu=%d\n",tun_mtu);
} }
else if(strcmp(long_options[option_index].name,"header-overhead")==0)
{
sscanf(optarg,"%d",&header_overhead);
mylog(log_warn,"changed header_overhead,header_overhead=%d\n",header_overhead);
}
else if(strcmp(long_options[option_index].name,"disable-mssfix")==0) else if(strcmp(long_options[option_index].name,"disable-mssfix")==0)
{ {
mssfix=0; mssfix=0;