diff spudec.c @ 561:36fd71db0d33

spudec_decode() moved from mplayer.c to spudec.c
author arpi_esp
date Sat, 21 Apr 2001 17:31:32 +0000
parents 28ae99036574
children 0fdcf08e7df8
line wrap: on
line diff
--- a/spudec.c	Sat Apr 21 15:38:01 2001 +0000
+++ b/spudec.c	Sat Apr 21 17:31:32 2001 +0000
@@ -84,5 +84,34 @@
   } while(off < size);
 }
 
+// SPU packet format:  (guess only, by A'rpi)
+//    0  word   whole packet size
+//    2  word   x0 sub-packet size
+//    4  x0-2   pixel data
+// x0+2  word   x1 sub-packet size
+// x0+4  x1-x0-2   process control data
+//   x1  word   lifetime
+// x1+2  word   x1 sub-packet size again
 
+void spudec_decode(unsigned char *packet,int len){
+  int x0, x1;
+  int d1, d2;
+  int lifetime;
+  x0 = (packet[2] << 8) + packet[3];
+  x1 = (packet[x0+2] << 8) + packet[x0+3];
 
+  /* /Another/ sanity check. */
+  if((packet[x1+2]<<8) + packet[x1+3] != x1) {
+    printf("spudec: Incorrect packet.\n");
+    return;
+  }
+  lifetime= ((packet[x1]<<8) + packet[x1+1]);
+  printf("lifetime=%d\n",lifetime);
+
+  d1 = d2 = -1;
+  spudec_process_control(packet + x0 + 2, x1-x0-2, &d1, &d2);
+//  if((d1 != -1) && (d2 != -1)) {
+//    spudec_process_data(packet, x0, d1, d2);
+//  }
+}
+