[MN-dev] [mndiff]: r135 - trunk/noe/ldpc.c

michael subversion at mplayerhq.hu
Fri Apr 10 13:15:00 CEST 2009


Author: michael
Date: Fri Apr 10 13:15:00 2009
New Revision: 135

Log:
Change solver to favor sparse rows, 50% sparser final matrix.

Modified:
   trunk/noe/ldpc.c

Modified: trunk/noe/ldpc.c
==============================================================================
--- trunk/noe/ldpc.c	Fri Apr 10 12:56:45 2009	(r134)
+++ trunk/noe/ldpc.c	Fri Apr 10 13:15:00 2009	(r135)
@@ -48,8 +48,20 @@ int inverse(ELEM *matrix, int width, int
     unsigned int logline[width];
 
     for(p=i=0; i<solvew; i++){
-        for(j=p; j<height; j++){
-            if(matrix[i + j*width]){
+        int bestweight= width+1;
+        j=-1;
+        for(k=p; k<height; k++){
+            if(matrix[i + k*width]){
+                int weight=0;
+                for(m=i; m<width; m++)
+                    weight += !!matrix[m + k*width];
+                if(weight < bestweight){
+                    bestweight=weight;
+                    j= k;
+                }
+            }
+        }
+            if(j>=0){
                 unsigned int inve= EXT(log)[inv(matrix[i + j*width])];
                 for(m=i; m<width; m++){
                     ELEM t= matrix[m + j*width];
@@ -65,9 +77,7 @@ int inverse(ELEM *matrix, int width, int
                     }
                 }
                 p++;
-                break;
             }
-        }
     }
 
     return p;



More information about the Mndiff-dev mailing list