diff options
author | lgb <lgb@b3059339-0415-0410-9bf9-f77b7e298cf2> | 2001-04-21 15:38:01 +0000 |
---|---|---|
committer | lgb <lgb@b3059339-0415-0410-9bf9-f77b7e298cf2> | 2001-04-21 15:38:01 +0000 |
commit | e0af35ff341724121e26a916c26f0d647d9d59cb (patch) | |
tree | a77989e3bbf1faf1950f28a3f0a37afcdb71fb7d /spudec.c | |
parent | 7897619e5759ddf63db1710fb2d5f6f821be2fc6 (diff) | |
download | mpv-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.c | 88 |
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); +} + + + |