[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