OSDN Git Service

altera works, xilinx works with trivial bugs
[fpga-leon-mjpeg/leon-mjpeg.git] / snapgear-2.6-p42 / user / jpeg-6b-host / djpeg.c
index 74da8e1..c180f8b 100644 (file)
@@ -431,7 +431,7 @@ void setup_hardware(j_decompress_ptr cinfo)
 {
   JQUANT_TBL *qtbl;
   jpeg_component_info *compptr;
-  int i,j;
+  int i,j, cadd, toregister;
   int qtbl_no[3];
 
   if((cinfo->in_yccrgbs = fopen("in_yccrgbs.txt", "w"))==NULL){
@@ -478,6 +478,30 @@ void setup_hardware(j_decompress_ptr cinfo)
     fprintf(stderr,"in_qtbl.txt File open error!\n");
     exit(1);
   }
+  if((cinfo->out_huff = fopen("out_huff.txt", "w"))==NULL){
+    fprintf(stderr,"out_huff.txt File open error!\n");
+    exit(1);
+  }
+  if((cinfo->in_dccache = fopen("in_dccache.txt", "w"))==NULL){
+    fprintf(stderr,"in_dccache.txt File open error!\n");
+    exit(1);
+  }
+  if((cinfo->in_accache = fopen("in_accache.txt", "w"))==NULL){
+    fprintf(stderr,"in_accache.txt File open error!\n");
+    exit(1);
+  }
+  if((cinfo->in_maxcode = fopen("in_maxcode.txt", "w"))==NULL){
+    fprintf(stderr,"in_maxcode.txt File open error!\n");
+    exit(1);
+  }
+  if((cinfo->in_valoffs = fopen("in_valoffs.txt", "w"))==NULL){
+    fprintf(stderr,"in_valoffs.txt File open error!\n");
+    exit(1);
+  }
+  if((cinfo->in_huffval = fopen("in_huffval.txt", "w"))==NULL){
+    fprintf(stderr,"in_huffval.txt File open error!\n");
+    exit(1);
+  }
 
   compptr = cinfo->comp_info;
   for(j=0;j<3;j++,compptr++){
@@ -486,9 +510,48 @@ void setup_hardware(j_decompress_ptr cinfo)
       fprintf(cinfo->in_qtbl,"%02x\n",(int)qtbl->quantval[i]);
      }
    }
-
-
-
+  /* output test pattern for huffman decoder */
+
+  printf("HardWare 8bit cache\n");
+  for(j=0;j<2;j++){
+    printf("DCcache id = %d\n", j);
+    for(i=0;i<512;i++){
+      //         printf("address=%x, nbits=%d, sym=%x\n", i, cinfo->harddc8nbits[j][i], cinfo->harddc8sym[j][i]);
+      toregister = ((cinfo->harddc8nbits[j][i] & 0x0000000f)<<4) | (cinfo->harddc8sym[j][i] & 0x0000000f);
+      cadd = (j << 9) | i;  
+      fprintf(cinfo->in_dccache,"%08X %08X\n",cadd,toregister); 
+    }
+  }
+  for(j=0;j<2;j++){
+    printf("ACcache id = %d\n", j);
+    for(i=0;i<512;i++){
+      //      printf("address=%x, nbits=%d, sym=%x\n", i, cinfo->hardac8nbits[j][i], cinfo->hardac8sym[j][i]);
+      toregister = ((cinfo->hardac8nbits[j][i] & 0x0000000f)<<8) | (cinfo->hardac8sym[j][i] & 0x000000ff);
+      cadd = (j<<9)| i;
+      fprintf(cinfo->in_accache,"%08X %08X\n",cadd,toregister);  
+   }
+  }
+  printf("maxcodemem\n");
+  for(i=0;i<4;i++){
+    for(j=0;j<18;j++){
+      fprintf(cinfo->in_maxcode,"%08X %08X\n", j+i*32, cinfo->maxcodemem[i][j]);
+    }
+  }
+  printf("valoffset\n");
+  for(i=0;i<4;i++){
+    for(j=0;j<18;j++){
+      //      printf("%x    %x(%d)\n", j+i*32, cinfo->offsetmem[i][j], cinfo->offsetmem[i][j]);
+      fprintf(cinfo->in_valoffs,"%08X %08X\n", j+i*32, cinfo->offsetmem[i][j]);
+    }
+  }
+  printf("huffvalmem\n");
+  for(i=0;i<4;i++){
+    //    printf("i=%d\n",i);
+    for(j=0;j<256;j++){
+      //       printf("%x   %x(%d)\n",j+i*256, cinfo->huffvalmem[i][j], cinfo->huffvalmem[i][j]);
+      fprintf(cinfo->in_huffval,"%08X %08X\n",j+i*256, cinfo->huffvalmem[i][j]);
+    }
+  }
 }