summaryrefslogtreecommitdiffstats
path: root/spudec.c
diff options
context:
space:
mode:
authorlgb <lgb@b3059339-0415-0410-9bf9-f77b7e298cf2>2001-04-21 15:38:01 +0000
committerlgb <lgb@b3059339-0415-0410-9bf9-f77b7e298cf2>2001-04-21 15:38:01 +0000
commite0af35ff341724121e26a916c26f0d647d9d59cb (patch)
treea77989e3bbf1faf1950f28a3f0a37afcdb71fb7d /spudec.c
parent7897619e5759ddf63db1710fb2d5f6f821be2fc6 (diff)
downloadmpv-e0af35ff341724121e26a916c26f0d647d9d59cb.tar.bz2
mpv-e0af35ff341724121e26a916c26f0d647d9d59cb.tar.xz
Separated dvdsub code to be able to work with it easier
git-svn-id: svn://svn.mplayerhq.hu/mplayer/trunk@561 b3059339-0415-0410-9bf9-f77b7e298cf2
Diffstat (limited to 'spudec.c')
-rw-r--r--spudec.c88
1 files changed, 88 insertions, 0 deletions
diff --git a/spudec.c b/spudec.c
new file mode 100644
index 0000000000..17aec44f6e
--- /dev/null
+++ b/spudec.c
@@ -0,0 +1,88 @@
+/* SPUdec.c
+ Skeleton of function spudec_process_controll() was written by Apri.
+ Further works:
+ LGB,... (yeah, try to improve it and insert your name here! ;-) */
+
+
+#include <stdio.h>
+#include "spudec.h"
+
+
+
+
+void spudec_process_control(unsigned char *control, int size, int* d1, int* d2)
+{
+ int off = 2;
+ int a,b; /* Temporary vars */
+
+ do {
+ int type = control[off];
+ off++;
+ printf("cmd=%d ",type);
+
+ switch(type) {
+ case 0x00:
+ /* Menu ID, 1 byte */
+ printf("Menu ID\n");
+ break;
+ case 0x01:
+ /* Start display */
+ printf("Start display!\n");
+// gSpudec.geom.bIsVisible = 1;
+ break;
+ case 0x03:
+ /* Palette */
+ printf("Palette\n");
+// palette[3] = &(gSpudec.clut[(control[off] >> 4)]);
+// palette[2] = &(gSpudec.clut[control[off] & 0xf]);
+// palette[1] = &(gSpudec.clut[(control[off+1] >> 4)]);
+// palette[0] = &(gSpudec.clut[control[off+1] & 0xf]);
+ off+=2;
+ break;
+ case 0x04:
+ /* Alpha */
+ printf("Alpha\n");
+// alpha[3] = control[off] & 0xf0;
+// alpha[2] = (control[off] & 0xf) << 4;
+// alpha[1] = control[off+1] & 0xf0;
+// alpha[0] = (control[off+1] & 0xf) << 4;
+ off+=2;
+ break;
+ case 0x05:
+ /* Co-ords */
+ a = (control[off] << 16) + (control[off+1] << 8) + control[off+2];
+ b = (control[off+3] << 16) + (control[off+4] << 8) + control[off+5];
+
+ printf("Coords col: %d - %d row: %d - %d\n",a >> 12,a & 0xfff,b >> 12,b & 0xfff);
+
+// gSpudec.geom.start_col = a >> 12;
+// gSpudec.geom.end_col = a & 0xfff;
+// gSpudec.geom.start_row = b >> 12;
+// gSpudec.geom.end_row = b & 0xfff;
+
+ off+=6;
+ break;
+ case 0x06:
+ /* Graphic lines */
+ *(d1) = (control[off] << 8) + control[off+1];
+ *(d2) = (control[off+2] << 8) + control[off+3];
+ printf("Graphic pos color: %d b/w: %d\n",*d1,*d2);
+ off+=4;
+ break;
+ case 0xff:
+ /* All done, bye-bye */
+ printf("Done!\n");
+ return;
+ break;
+ default:
+ printf("spudec: Error determining control type 0x%02x.\n",type);
+ return;
+ break;
+ }
+
+ /* printf("spudec: Processsed control type 0x%02x.\n",type); */
+ } while(off < size);
+}
+
+
+