Mercurial > mplayer.hg
comparison spudec.c @ 560:28ae99036574
Separated dvdsub code to be able to work with it easier
author | lgb |
---|---|
date | Sat, 21 Apr 2001 15:38:01 +0000 |
parents | |
children | 36fd71db0d33 |
comparison
equal
deleted
inserted
replaced
559:6fbd39309b87 | 560:28ae99036574 |
---|---|
1 /* SPUdec.c | |
2 Skeleton of function spudec_process_controll() was written by Apri. | |
3 Further works: | |
4 LGB,... (yeah, try to improve it and insert your name here! ;-) */ | |
5 | |
6 | |
7 #include <stdio.h> | |
8 #include "spudec.h" | |
9 | |
10 | |
11 | |
12 | |
13 void spudec_process_control(unsigned char *control, int size, int* d1, int* d2) | |
14 { | |
15 int off = 2; | |
16 int a,b; /* Temporary vars */ | |
17 | |
18 do { | |
19 int type = control[off]; | |
20 off++; | |
21 printf("cmd=%d ",type); | |
22 | |
23 switch(type) { | |
24 case 0x00: | |
25 /* Menu ID, 1 byte */ | |
26 printf("Menu ID\n"); | |
27 break; | |
28 case 0x01: | |
29 /* Start display */ | |
30 printf("Start display!\n"); | |
31 // gSpudec.geom.bIsVisible = 1; | |
32 break; | |
33 case 0x03: | |
34 /* Palette */ | |
35 printf("Palette\n"); | |
36 // palette[3] = &(gSpudec.clut[(control[off] >> 4)]); | |
37 // palette[2] = &(gSpudec.clut[control[off] & 0xf]); | |
38 // palette[1] = &(gSpudec.clut[(control[off+1] >> 4)]); | |
39 // palette[0] = &(gSpudec.clut[control[off+1] & 0xf]); | |
40 off+=2; | |
41 break; | |
42 case 0x04: | |
43 /* Alpha */ | |
44 printf("Alpha\n"); | |
45 // alpha[3] = control[off] & 0xf0; | |
46 // alpha[2] = (control[off] & 0xf) << 4; | |
47 // alpha[1] = control[off+1] & 0xf0; | |
48 // alpha[0] = (control[off+1] & 0xf) << 4; | |
49 off+=2; | |
50 break; | |
51 case 0x05: | |
52 /* Co-ords */ | |
53 a = (control[off] << 16) + (control[off+1] << 8) + control[off+2]; | |
54 b = (control[off+3] << 16) + (control[off+4] << 8) + control[off+5]; | |
55 | |
56 printf("Coords col: %d - %d row: %d - %d\n",a >> 12,a & 0xfff,b >> 12,b & 0xfff); | |
57 | |
58 // gSpudec.geom.start_col = a >> 12; | |
59 // gSpudec.geom.end_col = a & 0xfff; | |
60 // gSpudec.geom.start_row = b >> 12; | |
61 // gSpudec.geom.end_row = b & 0xfff; | |
62 | |
63 off+=6; | |
64 break; | |
65 case 0x06: | |
66 /* Graphic lines */ | |
67 *(d1) = (control[off] << 8) + control[off+1]; | |
68 *(d2) = (control[off+2] << 8) + control[off+3]; | |
69 printf("Graphic pos color: %d b/w: %d\n",*d1,*d2); | |
70 off+=4; | |
71 break; | |
72 case 0xff: | |
73 /* All done, bye-bye */ | |
74 printf("Done!\n"); | |
75 return; | |
76 break; | |
77 default: | |
78 printf("spudec: Error determining control type 0x%02x.\n",type); | |
79 return; | |
80 break; | |
81 } | |
82 | |
83 /* printf("spudec: Processsed control type 0x%02x.\n",type); */ | |
84 } while(off < size); | |
85 } | |
86 | |
87 | |
88 |