diff decoder.c @ 10:6f0fb88d1463 src

Added some debug info, to hopefully help in tracking bugs in libdvdnav.
author jcdutton
date Tue, 09 Apr 2002 15:19:07 +0000
parents 5f319e02e333
children 1a214a94a80d
line wrap: on
line diff
--- a/decoder.c	Sun Apr 07 19:35:54 2002 +0000
+++ b/decoder.c	Tue Apr 09 15:19:07 2002 +0000
@@ -51,7 +51,7 @@
 /* Get count bits of command from byte and bit position. */
 static uint32_t bits(int byte, int bit, int count) {
   uint32_t val = 0;
-  int bit_mask;
+  uint8_t bit_mask;
   
   while(count--) {
     if(bit > 7) {
@@ -350,9 +350,10 @@
       data2 = bits(5, 4, 4);
       if(bits(5, 0, 1)) {
 	fprintf(stderr, "Detected SetGPRMMD Counter!! This is unsupported.\n");
-	assert(0);
+	state->GPRM_mode[data2] = 1;
       } else {
-	;
+	fprintf(stderr, "Detected ResetGPRMMD Counter!! This is unsupported.\n");
+	state->GPRM_mode[data2] = 0;
       }
       if(cond) {
 	state->GPRM[data2] = data;
@@ -540,34 +541,33 @@
 
 #ifdef TRACE
   /*  DEBUG */
+  fprintf(stderr, "libdvdnav: Registers before transaction\n");
+  vmPrint_registers( registers );
   if(1) {
     int i;
-    fprintf(stderr, "   #   ");
-    for(i = 0; i < 24; i++)
-    fprintf(stderr, " %2d |", i);
-    fprintf(stderr, "\nSRPMS: ");
-    for(i = 0; i < 24; i++)
-      fprintf(stderr, "%04x|", state->SPRM[i]);
-    fprintf(stderr, "\nGRPMS: ");
-    for(i = 0; i < 16; i++)
-      fprintf(stderr, "%04x|", state->GPRM[i]);
-    fprintf(stderr, "\n");
-  }
-  if(1) {
-    int i;
+    fprintf(stderr, "libdvdnav: Full list of commands to execute\n");
     for(i = 0; i < num_commands; i++)
       vmPrint_CMD(i, &commands[i]);
     fprintf(stderr, "--------------------------------------------\n");
   } /*  end DEBUG */
+  if (1) {
+    fprintf(stderr, "libdvdnav: Single stepping commands\n");
+  }
 #endif
   
   while(i < num_commands && total < 100000) {
     int line;
     
-    if(0) vmPrint_CMD(i, &commands[i]);
+#ifdef TRACE
+    if(1) vmPrint_CMD(i, &commands[i]);
+#endif
     line = eval_command(&commands[i].bytes[0], return_values);
     
     if (line < 0) { /*  Link command */
+#ifdef TRACE
+      fprintf(stderr, "libdvdnav: Registers after transaction\n");
+      vmPrint_registers( registers );
+#endif
       fprintf(stderr, "eval: Doing Link/Jump/Call\n"); 
       return 1;
     }
@@ -581,6 +581,10 @@
   }
   
   memset(return_values, 0, sizeof(link_t));
+#ifdef TRACE
+  fprintf(stderr, "libdvdnav: Registers after transaction\n");
+  vmPrint_registers( registers );
+#endif
   return 0;
 }
 
@@ -705,3 +709,20 @@
     break;
   }
  }
+
+void vmPrint_registers( registers_t *registers ) {
+  int i;
+  fprintf(stderr, "   #   ");
+  for(i = 0; i < 24; i++)
+    fprintf(stderr, " %2d |", i);
+  fprintf(stderr, "\nSRPMS: ");
+  for(i = 0; i < 24; i++)
+    fprintf(stderr, "%04x|", registers->SPRM[i]);
+  fprintf(stderr, "\nGRPMS: ");
+  for(i = 0; i < 16; i++)
+    fprintf(stderr, "%04x|", registers->GPRM[i]);
+  fprintf(stderr, "\nGmode: ");
+  for(i = 0; i < 16; i++)
+    fprintf(stderr, "%04x|", registers->GPRM_mode[i]);
+  fprintf(stderr, "\n");
+}