[MN-dev] [mndiff]: r190 - trunk/noe/ldpc.c
michael
subversion at mplayerhq.hu
Tue Jul 13 10:46:31 CEST 2010
Author: michael
Date: Tue Jul 13 10:46:31 2010
New Revision: 190
Log:
Factorize syndrom[c->parity_len] out
Modified:
trunk/noe/ldpc.c
Modified: trunk/noe/ldpc.c
==============================================================================
--- trunk/noe/ldpc.c Tue Jul 13 05:04:36 2010 (r189)
+++ trunk/noe/ldpc.c Tue Jul 13 10:46:31 2010 (r190)
@@ -282,6 +282,7 @@ int EXT(decodeLDPC)(LDPCContext *c, LDPC
int parity_len= c->parity_len;
int code_len= c->data_len + parity_len;
unsigned int syndrom[2*c->parity_len];
+ unsigned int *sp= &syndrom[c->parity_len];
memset(syndrom, 0, sizeof(syndrom));
for(i=0; i<erasure_count; i++)
@@ -291,9 +292,9 @@ int EXT(decodeLDPC)(LDPCContext *c, LDPC
for(i=0; i<code_len; i++){
unsigned int v= code[i];
for(j=0; j<c->nzc; j++){
- int y= c->parity_matrix[i][0][j] + c->parity_len;
- if(y>=c->parity_len){
- syndrom[y]^= v;
+ int y= c->parity_matrix[i][0][j];
+ if(y>=0){
+ sp[y]^= v;
}
}
}
@@ -301,7 +302,6 @@ int EXT(decodeLDPC)(LDPCContext *c, LDPC
j=0;
for(i=0; c->op_table[i][1]>INT_MIN; i++){
- unsigned int *sp= &syndrom[c->parity_len];
unsigned t= sp[ -c->op_table[i][1] ];
sp[ -c->op_table[i][1] ]= sp[j];
sp[j]= t;
@@ -315,7 +315,7 @@ int EXT(decodeLDPC)(LDPCContext *c, LDPC
j=0;
for(i=erasure_count-1; i>=0; i--){
- unsigned int v= syndrom[c->parity_len + i];
+ unsigned int v= sp[i];
int idx= c->inv_matrix[j][0];
while(idx<parity_len){
@@ -330,17 +330,16 @@ int EXT(decodeLDPC)(LDPCContext *c, LDPC
for(i=0; i<code_len; i++){
unsigned int v= EXT(log)[ code[i] ];
for(j=0; j<c->nzc; j++){
- int y= c->parity_matrix[i][0][j] + c->parity_len;
- if(y>=c->parity_len){
+ int y= c->parity_matrix[i][0][j];
+ if(y>=0){
int p= c->parity_matrix[i][1][j];
- syndrom[y]= sum(syndrom[y], EXT(exp)[p + v]);
+ sp[y]= sum(sp[y], EXT(exp)[p + v]);
}
}
}
j=0;
for(i=0; c->op_table[i][1]>INT_MIN; i++){
- unsigned int *sp= &syndrom[c->parity_len];
unsigned t= EXT(log)[sp[ -c->op_table[i][1]] ] + c->op_table[i][0];
sp[ -c->op_table[i][1] ]= sp[j];
sp[j]= EXT(exp)[t];
@@ -356,7 +355,7 @@ int EXT(decodeLDPC)(LDPCContext *c, LDPC
j=0;
for(i=erasure_count-1; i>=0; i--){
- unsigned int v= syndrom[c->parity_len + i];;
+ unsigned int v= sp[i];
int idx= c->inv_matrix[j][0];
while(idx<parity_len){
v= sum(v, EXT(exp)[syndrom[idx] + c->inv_matrix[j++][1]]);
More information about the Mndiff-dev
mailing list