Mercurial > mplayer.hg
annotate libvo/vo_ggi.c @ 15918:8f6c98310f38
initial translation, synced with 1.12
author | gabrov |
---|---|
date | Mon, 04 Jul 2005 18:29:48 +0000 |
parents | 04c47e9acab3 |
children | fd51fd1ff231 |
rev | line source |
---|---|
1172
290353337b44
hardly modified, keyboard handling is ok. aspect implemented, but bugging :)
al3x
parents:
1148
diff
changeset
|
1 /* |
1132
80a0f8aa2360
Added for development only this is in pre-alpha state, do not use!
atmosfear
parents:
diff
changeset
|
2 vo_ggi.c - General Graphics Interface (GGI) Renderer for MPlayer |
80a0f8aa2360
Added for development only this is in pre-alpha state, do not use!
atmosfear
parents:
diff
changeset
|
3 |
10368 | 4 (C) Alex Beregszaszi |
1132
80a0f8aa2360
Added for development only this is in pre-alpha state, do not use!
atmosfear
parents:
diff
changeset
|
5 |
80a0f8aa2360
Added for development only this is in pre-alpha state, do not use!
atmosfear
parents:
diff
changeset
|
6 Uses libGGI - http://www.ggi-project.org/ |
1141
c33f8b7488d1
cleaned up, and merged with my version, also code will be faster too
al3x
parents:
1132
diff
changeset
|
7 |
4841 | 8 TODO: |
9 * check on many devices | |
5703 | 10 * implement gamma handling (VAA isn't obsoleted?) |
11 | |
12 BUGS: | |
11110 | 13 * palettized playback has bad colors, probably swapped palette? |
5703 | 14 * fbdev & DR produces two downscaled images |
15 * fbdev & FLIP (& DR) produces no image | |
4841 | 16 |
4828
0ae597cc28e6
totally reworked, working fine on fbdev too, applied Andres Beck's patches, quad-buffering support
alex
parents:
4737
diff
changeset
|
17 Thanks to Andreas Beck for his patches. |
5703 | 18 |
4841 | 19 Many thanks to Atmosfear, he hacked this driver to work with Planar |
1141
c33f8b7488d1
cleaned up, and merged with my version, also code will be faster too
al3x
parents:
1132
diff
changeset
|
20 formats, and he fixed the RGB handling. |
1132
80a0f8aa2360
Added for development only this is in pre-alpha state, do not use!
atmosfear
parents:
diff
changeset
|
21 */ |
80a0f8aa2360
Added for development only this is in pre-alpha state, do not use!
atmosfear
parents:
diff
changeset
|
22 |
80a0f8aa2360
Added for development only this is in pre-alpha state, do not use!
atmosfear
parents:
diff
changeset
|
23 #include <stdio.h> |
80a0f8aa2360
Added for development only this is in pre-alpha state, do not use!
atmosfear
parents:
diff
changeset
|
24 #include <stdlib.h> |
80a0f8aa2360
Added for development only this is in pre-alpha state, do not use!
atmosfear
parents:
diff
changeset
|
25 #include <string.h> |
80a0f8aa2360
Added for development only this is in pre-alpha state, do not use!
atmosfear
parents:
diff
changeset
|
26 #include <errno.h> |
80a0f8aa2360
Added for development only this is in pre-alpha state, do not use!
atmosfear
parents:
diff
changeset
|
27 |
4828
0ae597cc28e6
totally reworked, working fine on fbdev too, applied Andres Beck's patches, quad-buffering support
alex
parents:
4737
diff
changeset
|
28 #include "mp_msg.h" |
0ae597cc28e6
totally reworked, working fine on fbdev too, applied Andres Beck's patches, quad-buffering support
alex
parents:
4737
diff
changeset
|
29 |
12650
ac3fd2ff2561
Unify the config.h #include, use "config.h" instead of "../config.h"
diego
parents:
11110
diff
changeset
|
30 #include "config.h" |
1132
80a0f8aa2360
Added for development only this is in pre-alpha state, do not use!
atmosfear
parents:
diff
changeset
|
31 #include "video_out.h" |
80a0f8aa2360
Added for development only this is in pre-alpha state, do not use!
atmosfear
parents:
diff
changeset
|
32 #include "video_out_internal.h" |
80a0f8aa2360
Added for development only this is in pre-alpha state, do not use!
atmosfear
parents:
diff
changeset
|
33 |
1141
c33f8b7488d1
cleaned up, and merged with my version, also code will be faster too
al3x
parents:
1132
diff
changeset
|
34 #include "fastmemcpy.h" |
1132
80a0f8aa2360
Added for development only this is in pre-alpha state, do not use!
atmosfear
parents:
diff
changeset
|
35 |
80a0f8aa2360
Added for development only this is in pre-alpha state, do not use!
atmosfear
parents:
diff
changeset
|
36 #include <ggi/ggi.h> |
1141
c33f8b7488d1
cleaned up, and merged with my version, also code will be faster too
al3x
parents:
1132
diff
changeset
|
37 |
15406 | 38 #ifdef HAVE_GGIWMH |
39 #include <ggi/wmh.h> | |
40 #endif | |
41 | |
42 #ifdef HAVE_GGIWMH | |
43 extern int vo_ontop; /* Window on top */ | |
44 #endif | |
45 | |
4831
9153d1275b6d
do not fault if no directbuffer available (for example: ggi display-multi)
alex
parents:
4830
diff
changeset
|
46 /* maximum buffers */ |
5703 | 47 #undef GGI_FLIP |
5637
6890819bc0dc
added support for directrendering, updated to VFCAP_ flags in query_format, added support for non-directbuffer devices, and using mem2agpcpy_pic
alex
parents:
4841
diff
changeset
|
48 |
8148
5b39e79af5fe
removed get_info, using the same sheme as in libmpcodecs instead
alex
parents:
7124
diff
changeset
|
49 static vo_info_t info = |
1132
80a0f8aa2360
Added for development only this is in pre-alpha state, do not use!
atmosfear
parents:
diff
changeset
|
50 { |
80a0f8aa2360
Added for development only this is in pre-alpha state, do not use!
atmosfear
parents:
diff
changeset
|
51 "General Graphics Interface (GGI) output", |
80a0f8aa2360
Added for development only this is in pre-alpha state, do not use!
atmosfear
parents:
diff
changeset
|
52 "ggi", |
10368 | 53 "Alex Beregszaszi", |
14021
f0236d5ba7a7
Remove broken support for directbuffer and including frame-handling use.
iive
parents:
13787
diff
changeset
|
54 "major" |
1132
80a0f8aa2360
Added for development only this is in pre-alpha state, do not use!
atmosfear
parents:
diff
changeset
|
55 }; |
80a0f8aa2360
Added for development only this is in pre-alpha state, do not use!
atmosfear
parents:
diff
changeset
|
56 |
8148
5b39e79af5fe
removed get_info, using the same sheme as in libmpcodecs instead
alex
parents:
7124
diff
changeset
|
57 LIBVO_EXTERN (ggi) |
5b39e79af5fe
removed get_info, using the same sheme as in libmpcodecs instead
alex
parents:
7124
diff
changeset
|
58 |
1172
290353337b44
hardly modified, keyboard handling is ok. aspect implemented, but bugging :)
al3x
parents:
1148
diff
changeset
|
59 static struct ggi_conf_s { |
290353337b44
hardly modified, keyboard handling is ok. aspect implemented, but bugging :)
al3x
parents:
1148
diff
changeset
|
60 char *driver; |
290353337b44
hardly modified, keyboard handling is ok. aspect implemented, but bugging :)
al3x
parents:
1148
diff
changeset
|
61 |
14175
c4fe6bb22e2e
- Fixed mode setting, so any video can be played on all supported ggi targets.
diego
parents:
14021
diff
changeset
|
62 ggi_visual_t parentvis; |
1172
290353337b44
hardly modified, keyboard handling is ok. aspect implemented, but bugging :)
al3x
parents:
1148
diff
changeset
|
63 ggi_visual_t vis; |
4828
0ae597cc28e6
totally reworked, working fine on fbdev too, applied Andres Beck's patches, quad-buffering support
alex
parents:
4737
diff
changeset
|
64 |
4830 | 65 /* source image format */ |
66 int srcwidth; | |
67 int srcheight; | |
4828
0ae597cc28e6
totally reworked, working fine on fbdev too, applied Andres Beck's patches, quad-buffering support
alex
parents:
4737
diff
changeset
|
68 int srcformat; |
0ae597cc28e6
totally reworked, working fine on fbdev too, applied Andres Beck's patches, quad-buffering support
alex
parents:
4737
diff
changeset
|
69 int srcdepth; |
5703 | 70 int srcbpp; |
14175
c4fe6bb22e2e
- Fixed mode setting, so any video can be played on all supported ggi targets.
diego
parents:
14021
diff
changeset
|
71 |
c4fe6bb22e2e
- Fixed mode setting, so any video can be played on all supported ggi targets.
diego
parents:
14021
diff
changeset
|
72 /* dirty region */ |
c4fe6bb22e2e
- Fixed mode setting, so any video can be played on all supported ggi targets.
diego
parents:
14021
diff
changeset
|
73 struct { |
c4fe6bb22e2e
- Fixed mode setting, so any video can be played on all supported ggi targets.
diego
parents:
14021
diff
changeset
|
74 int x1, y1; |
c4fe6bb22e2e
- Fixed mode setting, so any video can be played on all supported ggi targets.
diego
parents:
14021
diff
changeset
|
75 int x2, y2; |
c4fe6bb22e2e
- Fixed mode setting, so any video can be played on all supported ggi targets.
diego
parents:
14021
diff
changeset
|
76 } flushregion; |
1172
290353337b44
hardly modified, keyboard handling is ok. aspect implemented, but bugging :)
al3x
parents:
1148
diff
changeset
|
77 |
290353337b44
hardly modified, keyboard handling is ok. aspect implemented, but bugging :)
al3x
parents:
1148
diff
changeset
|
78 /* destination */ |
4830 | 79 int dstwidth; |
80 int dstheight; | |
4841 | 81 |
82 int async; | |
5703 | 83 |
84 int voflags; | |
1172
290353337b44
hardly modified, keyboard handling is ok. aspect implemented, but bugging :)
al3x
parents:
1148
diff
changeset
|
85 } ggi_conf; |
1132
80a0f8aa2360
Added for development only this is in pre-alpha state, do not use!
atmosfear
parents:
diff
changeset
|
86 |
14175
c4fe6bb22e2e
- Fixed mode setting, so any video can be played on all supported ggi targets.
diego
parents:
14021
diff
changeset
|
87 |
15406 | 88 #ifdef HAVE_GGIWMH |
89 static void window_ontop(void) | |
90 { | |
91 mp_msg(MSGT_VO, MSGL_V, "[ggi] debug: window_ontop() called\n"); | |
92 ggiWmhZOrder(ggi_conf.parentvis, ZO_TOP); | |
93 return; | |
94 } | |
95 #endif | |
96 | |
97 | |
14175
c4fe6bb22e2e
- Fixed mode setting, so any video can be played on all supported ggi targets.
diego
parents:
14021
diff
changeset
|
98 static void set_graphtype(uint32_t format, ggi_mode *mode) |
c4fe6bb22e2e
- Fixed mode setting, so any video can be played on all supported ggi targets.
diego
parents:
14021
diff
changeset
|
99 { |
c4fe6bb22e2e
- Fixed mode setting, so any video can be played on all supported ggi targets.
diego
parents:
14021
diff
changeset
|
100 switch(format) |
c4fe6bb22e2e
- Fixed mode setting, so any video can be played on all supported ggi targets.
diego
parents:
14021
diff
changeset
|
101 { |
c4fe6bb22e2e
- Fixed mode setting, so any video can be played on all supported ggi targets.
diego
parents:
14021
diff
changeset
|
102 case IMGFMT_RGB4: |
c4fe6bb22e2e
- Fixed mode setting, so any video can be played on all supported ggi targets.
diego
parents:
14021
diff
changeset
|
103 mode->graphtype = GT_4BIT; |
c4fe6bb22e2e
- Fixed mode setting, so any video can be played on all supported ggi targets.
diego
parents:
14021
diff
changeset
|
104 break; |
c4fe6bb22e2e
- Fixed mode setting, so any video can be played on all supported ggi targets.
diego
parents:
14021
diff
changeset
|
105 case IMGFMT_BGR4: |
c4fe6bb22e2e
- Fixed mode setting, so any video can be played on all supported ggi targets.
diego
parents:
14021
diff
changeset
|
106 mode->graphtype = GT_4BIT; |
c4fe6bb22e2e
- Fixed mode setting, so any video can be played on all supported ggi targets.
diego
parents:
14021
diff
changeset
|
107 GT_SETSUBSCHEME(mode->graphtype, GT_SUB_HIGHBIT_RIGHT); |
c4fe6bb22e2e
- Fixed mode setting, so any video can be played on all supported ggi targets.
diego
parents:
14021
diff
changeset
|
108 break; |
c4fe6bb22e2e
- Fixed mode setting, so any video can be played on all supported ggi targets.
diego
parents:
14021
diff
changeset
|
109 case IMGFMT_RGB8: |
c4fe6bb22e2e
- Fixed mode setting, so any video can be played on all supported ggi targets.
diego
parents:
14021
diff
changeset
|
110 case IMGFMT_BGR8: |
c4fe6bb22e2e
- Fixed mode setting, so any video can be played on all supported ggi targets.
diego
parents:
14021
diff
changeset
|
111 mode->graphtype = GT_8BIT; |
c4fe6bb22e2e
- Fixed mode setting, so any video can be played on all supported ggi targets.
diego
parents:
14021
diff
changeset
|
112 break; |
c4fe6bb22e2e
- Fixed mode setting, so any video can be played on all supported ggi targets.
diego
parents:
14021
diff
changeset
|
113 case IMGFMT_RGB15: |
c4fe6bb22e2e
- Fixed mode setting, so any video can be played on all supported ggi targets.
diego
parents:
14021
diff
changeset
|
114 case IMGFMT_BGR15: |
c4fe6bb22e2e
- Fixed mode setting, so any video can be played on all supported ggi targets.
diego
parents:
14021
diff
changeset
|
115 mode->graphtype = GT_15BIT; |
c4fe6bb22e2e
- Fixed mode setting, so any video can be played on all supported ggi targets.
diego
parents:
14021
diff
changeset
|
116 break; |
c4fe6bb22e2e
- Fixed mode setting, so any video can be played on all supported ggi targets.
diego
parents:
14021
diff
changeset
|
117 case IMGFMT_RGB16: |
c4fe6bb22e2e
- Fixed mode setting, so any video can be played on all supported ggi targets.
diego
parents:
14021
diff
changeset
|
118 case IMGFMT_BGR16: |
c4fe6bb22e2e
- Fixed mode setting, so any video can be played on all supported ggi targets.
diego
parents:
14021
diff
changeset
|
119 mode->graphtype = GT_16BIT; |
c4fe6bb22e2e
- Fixed mode setting, so any video can be played on all supported ggi targets.
diego
parents:
14021
diff
changeset
|
120 break; |
c4fe6bb22e2e
- Fixed mode setting, so any video can be played on all supported ggi targets.
diego
parents:
14021
diff
changeset
|
121 case IMGFMT_RGB24: |
c4fe6bb22e2e
- Fixed mode setting, so any video can be played on all supported ggi targets.
diego
parents:
14021
diff
changeset
|
122 case IMGFMT_BGR24: |
c4fe6bb22e2e
- Fixed mode setting, so any video can be played on all supported ggi targets.
diego
parents:
14021
diff
changeset
|
123 mode->graphtype = GT_24BIT; |
c4fe6bb22e2e
- Fixed mode setting, so any video can be played on all supported ggi targets.
diego
parents:
14021
diff
changeset
|
124 break; |
c4fe6bb22e2e
- Fixed mode setting, so any video can be played on all supported ggi targets.
diego
parents:
14021
diff
changeset
|
125 case IMGFMT_RGB32: |
c4fe6bb22e2e
- Fixed mode setting, so any video can be played on all supported ggi targets.
diego
parents:
14021
diff
changeset
|
126 case IMGFMT_BGR32: |
c4fe6bb22e2e
- Fixed mode setting, so any video can be played on all supported ggi targets.
diego
parents:
14021
diff
changeset
|
127 mode->graphtype = GT_32BIT; |
c4fe6bb22e2e
- Fixed mode setting, so any video can be played on all supported ggi targets.
diego
parents:
14021
diff
changeset
|
128 break; |
c4fe6bb22e2e
- Fixed mode setting, so any video can be played on all supported ggi targets.
diego
parents:
14021
diff
changeset
|
129 } |
c4fe6bb22e2e
- Fixed mode setting, so any video can be played on all supported ggi targets.
diego
parents:
14021
diff
changeset
|
130 |
c4fe6bb22e2e
- Fixed mode setting, so any video can be played on all supported ggi targets.
diego
parents:
14021
diff
changeset
|
131 return; |
c4fe6bb22e2e
- Fixed mode setting, so any video can be played on all supported ggi targets.
diego
parents:
14021
diff
changeset
|
132 } |
c4fe6bb22e2e
- Fixed mode setting, so any video can be played on all supported ggi targets.
diego
parents:
14021
diff
changeset
|
133 |
4830 | 134 static uint32_t config(uint32_t width, uint32_t height, uint32_t d_width, |
7124
eca7dbad0166
finally removed query_vaa, bes_da and vo_tune_info - the obsoleted libvo api
alex
parents:
6817
diff
changeset
|
135 uint32_t d_height, uint32_t flags, char *title, uint32_t format) |
1132
80a0f8aa2360
Added for development only this is in pre-alpha state, do not use!
atmosfear
parents:
diff
changeset
|
136 { |
14175
c4fe6bb22e2e
- Fixed mode setting, so any video can be played on all supported ggi targets.
diego
parents:
14021
diff
changeset
|
137 ggi_mode mode = { |
c4fe6bb22e2e
- Fixed mode setting, so any video can be played on all supported ggi targets.
diego
parents:
14021
diff
changeset
|
138 1, /* frames */ |
c4fe6bb22e2e
- Fixed mode setting, so any video can be played on all supported ggi targets.
diego
parents:
14021
diff
changeset
|
139 { 0, 0 }, /* top, left corner */ |
c4fe6bb22e2e
- Fixed mode setting, so any video can be played on all supported ggi targets.
diego
parents:
14021
diff
changeset
|
140 { width, height }, /* bottem, right corner */ |
c4fe6bb22e2e
- Fixed mode setting, so any video can be played on all supported ggi targets.
diego
parents:
14021
diff
changeset
|
141 { GGI_AUTO, GGI_AUTO }, /* size */ |
c4fe6bb22e2e
- Fixed mode setting, so any video can be played on all supported ggi targets.
diego
parents:
14021
diff
changeset
|
142 GT_AUTO, /* graphtype */ |
c4fe6bb22e2e
- Fixed mode setting, so any video can be played on all supported ggi targets.
diego
parents:
14021
diff
changeset
|
143 { GGI_AUTO, GGI_AUTO } /* dots per pixel */ |
c4fe6bb22e2e
- Fixed mode setting, so any video can be played on all supported ggi targets.
diego
parents:
14021
diff
changeset
|
144 }; |
c4fe6bb22e2e
- Fixed mode setting, so any video can be played on all supported ggi targets.
diego
parents:
14021
diff
changeset
|
145 ggi_mode parentmode = |
1132
80a0f8aa2360
Added for development only this is in pre-alpha state, do not use!
atmosfear
parents:
diff
changeset
|
146 { |
14021
f0236d5ba7a7
Remove broken support for directbuffer and including frame-handling use.
iive
parents:
13787
diff
changeset
|
147 1, /* frames */ |
4830 | 148 { width, height }, /* visible */ |
1132
80a0f8aa2360
Added for development only this is in pre-alpha state, do not use!
atmosfear
parents:
diff
changeset
|
149 { GGI_AUTO, GGI_AUTO }, /* virt */ |
80a0f8aa2360
Added for development only this is in pre-alpha state, do not use!
atmosfear
parents:
diff
changeset
|
150 { GGI_AUTO, GGI_AUTO }, /* size */ |
80a0f8aa2360
Added for development only this is in pre-alpha state, do not use!
atmosfear
parents:
diff
changeset
|
151 GT_AUTO, /* graphtype */ |
80a0f8aa2360
Added for development only this is in pre-alpha state, do not use!
atmosfear
parents:
diff
changeset
|
152 { GGI_AUTO, GGI_AUTO } /* dots per pixel */ |
80a0f8aa2360
Added for development only this is in pre-alpha state, do not use!
atmosfear
parents:
diff
changeset
|
153 }; |
14021
f0236d5ba7a7
Remove broken support for directbuffer and including frame-handling use.
iive
parents:
13787
diff
changeset
|
154 |
14175
c4fe6bb22e2e
- Fixed mode setting, so any video can be played on all supported ggi targets.
diego
parents:
14021
diff
changeset
|
155 set_graphtype(format, &parentmode); |
4828
0ae597cc28e6
totally reworked, working fine on fbdev too, applied Andres Beck's patches, quad-buffering support
alex
parents:
4737
diff
changeset
|
156 |
5703 | 157 #if 0 |
4830 | 158 printf("[ggi] mode: "); |
14175
c4fe6bb22e2e
- Fixed mode setting, so any video can be played on all supported ggi targets.
diego
parents:
14021
diff
changeset
|
159 ggiPrintMode(&parentmode); |
4830 | 160 printf("\n"); |
15406 | 161 |
162 printf("[ggi] submode: "); | |
163 ggiPrintMode(&mode); | |
164 printf("\n"); | |
4830 | 165 #endif |
166 | |
14175
c4fe6bb22e2e
- Fixed mode setting, so any video can be played on all supported ggi targets.
diego
parents:
14021
diff
changeset
|
167 ggiCheckMode(ggi_conf.parentvis, &parentmode); |
4830 | 168 |
14175
c4fe6bb22e2e
- Fixed mode setting, so any video can be played on all supported ggi targets.
diego
parents:
14021
diff
changeset
|
169 if (ggiSetMode(ggi_conf.parentvis, &parentmode) < 0) |
1132
80a0f8aa2360
Added for development only this is in pre-alpha state, do not use!
atmosfear
parents:
diff
changeset
|
170 { |
14175
c4fe6bb22e2e
- Fixed mode setting, so any video can be played on all supported ggi targets.
diego
parents:
14021
diff
changeset
|
171 mp_msg(MSGT_VO, MSGL_ERR, "[ggi] unable to set display mode\n"); |
1132
80a0f8aa2360
Added for development only this is in pre-alpha state, do not use!
atmosfear
parents:
diff
changeset
|
172 return(-1); |
80a0f8aa2360
Added for development only this is in pre-alpha state, do not use!
atmosfear
parents:
diff
changeset
|
173 } |
4830 | 174 |
14175
c4fe6bb22e2e
- Fixed mode setting, so any video can be played on all supported ggi targets.
diego
parents:
14021
diff
changeset
|
175 if (ggiGetMode(ggi_conf.parentvis, &parentmode) < 0) |
1147 | 176 { |
14175
c4fe6bb22e2e
- Fixed mode setting, so any video can be played on all supported ggi targets.
diego
parents:
14021
diff
changeset
|
177 mp_msg(MSGT_VO, MSGL_ERR, "[ggi] unable to get display mode\n"); |
1147 | 178 return(-1); |
179 } | |
4828
0ae597cc28e6
totally reworked, working fine on fbdev too, applied Andres Beck's patches, quad-buffering support
alex
parents:
4737
diff
changeset
|
180 |
14175
c4fe6bb22e2e
- Fixed mode setting, so any video can be played on all supported ggi targets.
diego
parents:
14021
diff
changeset
|
181 if ((parentmode.graphtype == GT_INVALID) || (parentmode.graphtype == GT_AUTO)) |
4841 | 182 { |
183 mp_msg(MSGT_VO, MSGL_ERR, "[ggi] not supported depth/bpp\n"); | |
184 return(-1); | |
185 } | |
186 | |
15406 | 187 #if 0 |
188 printf("[ggi] mode: "); | |
189 ggiPrintMode(&parentmode); | |
190 printf("\n"); | |
191 #endif | |
192 | |
14175
c4fe6bb22e2e
- Fixed mode setting, so any video can be played on all supported ggi targets.
diego
parents:
14021
diff
changeset
|
193 /* calculate top, left corner */ |
c4fe6bb22e2e
- Fixed mode setting, so any video can be played on all supported ggi targets.
diego
parents:
14021
diff
changeset
|
194 mode.visible.x = (parentmode.virt.x - width) / 2; |
c4fe6bb22e2e
- Fixed mode setting, so any video can be played on all supported ggi targets.
diego
parents:
14021
diff
changeset
|
195 mode.visible.y = (parentmode.virt.y - height) / 2; |
c4fe6bb22e2e
- Fixed mode setting, so any video can be played on all supported ggi targets.
diego
parents:
14021
diff
changeset
|
196 |
c4fe6bb22e2e
- Fixed mode setting, so any video can be played on all supported ggi targets.
diego
parents:
14021
diff
changeset
|
197 /* calculate bottom, right corner */ |
15406 | 198 mode.virt.x = width; |
199 mode.virt.y = height; | |
14175
c4fe6bb22e2e
- Fixed mode setting, so any video can be played on all supported ggi targets.
diego
parents:
14021
diff
changeset
|
200 |
c4fe6bb22e2e
- Fixed mode setting, so any video can be played on all supported ggi targets.
diego
parents:
14021
diff
changeset
|
201 ggiCheckMode(ggi_conf.vis, &mode); |
c4fe6bb22e2e
- Fixed mode setting, so any video can be played on all supported ggi targets.
diego
parents:
14021
diff
changeset
|
202 |
c4fe6bb22e2e
- Fixed mode setting, so any video can be played on all supported ggi targets.
diego
parents:
14021
diff
changeset
|
203 if (ggiSetMode(ggi_conf.vis, &mode) < 0) |
c4fe6bb22e2e
- Fixed mode setting, so any video can be played on all supported ggi targets.
diego
parents:
14021
diff
changeset
|
204 { |
c4fe6bb22e2e
- Fixed mode setting, so any video can be played on all supported ggi targets.
diego
parents:
14021
diff
changeset
|
205 mp_msg(MSGT_VO, MSGL_ERR, "[ggi] unable to set video mode\n"); |
c4fe6bb22e2e
- Fixed mode setting, so any video can be played on all supported ggi targets.
diego
parents:
14021
diff
changeset
|
206 return(-1); |
c4fe6bb22e2e
- Fixed mode setting, so any video can be played on all supported ggi targets.
diego
parents:
14021
diff
changeset
|
207 } |
c4fe6bb22e2e
- Fixed mode setting, so any video can be played on all supported ggi targets.
diego
parents:
14021
diff
changeset
|
208 |
c4fe6bb22e2e
- Fixed mode setting, so any video can be played on all supported ggi targets.
diego
parents:
14021
diff
changeset
|
209 if (ggiGetMode(ggi_conf.vis, &mode) < 0) |
c4fe6bb22e2e
- Fixed mode setting, so any video can be played on all supported ggi targets.
diego
parents:
14021
diff
changeset
|
210 { |
c4fe6bb22e2e
- Fixed mode setting, so any video can be played on all supported ggi targets.
diego
parents:
14021
diff
changeset
|
211 mp_msg(MSGT_VO, MSGL_ERR, "[ggi] unable to get video mode\n"); |
c4fe6bb22e2e
- Fixed mode setting, so any video can be played on all supported ggi targets.
diego
parents:
14021
diff
changeset
|
212 return(-1); |
c4fe6bb22e2e
- Fixed mode setting, so any video can be played on all supported ggi targets.
diego
parents:
14021
diff
changeset
|
213 } |
c4fe6bb22e2e
- Fixed mode setting, so any video can be played on all supported ggi targets.
diego
parents:
14021
diff
changeset
|
214 |
15406 | 215 #ifdef HAVE_GGIWMH |
216 ggiWmhSetTitle(ggi_conf.parentvis, title); | |
217 if (vo_ontop) window_ontop(); | |
218 #endif | |
1132
80a0f8aa2360
Added for development only this is in pre-alpha state, do not use!
atmosfear
parents:
diff
changeset
|
219 |
5703 | 220 #if 0 |
15406 | 221 printf("[ggi] submode: "); |
4830 | 222 ggiPrintMode(&mode); |
4828
0ae597cc28e6
totally reworked, working fine on fbdev too, applied Andres Beck's patches, quad-buffering support
alex
parents:
4737
diff
changeset
|
223 printf("\n"); |
0ae597cc28e6
totally reworked, working fine on fbdev too, applied Andres Beck's patches, quad-buffering support
alex
parents:
4737
diff
changeset
|
224 #endif |
0ae597cc28e6
totally reworked, working fine on fbdev too, applied Andres Beck's patches, quad-buffering support
alex
parents:
4737
diff
changeset
|
225 |
14175
c4fe6bb22e2e
- Fixed mode setting, so any video can be played on all supported ggi targets.
diego
parents:
14021
diff
changeset
|
226 vo_depthonscreen = GT_DEPTH(parentmode.graphtype); |
c4fe6bb22e2e
- Fixed mode setting, so any video can be played on all supported ggi targets.
diego
parents:
14021
diff
changeset
|
227 vo_screenwidth = parentmode.visible.x; |
c4fe6bb22e2e
- Fixed mode setting, so any video can be played on all supported ggi targets.
diego
parents:
14021
diff
changeset
|
228 vo_screenheight = parentmode.visible.y; |
4830 | 229 |
230 vo_dx = vo_dy = 0; | |
231 vo_dwidth = mode.virt.x; | |
232 vo_dheight = mode.virt.y; | |
14175
c4fe6bb22e2e
- Fixed mode setting, so any video can be played on all supported ggi targets.
diego
parents:
14021
diff
changeset
|
233 vo_dbpp = GT_SIZE(parentmode.graphtype); |
1132
80a0f8aa2360
Added for development only this is in pre-alpha state, do not use!
atmosfear
parents:
diff
changeset
|
234 |
4828
0ae597cc28e6
totally reworked, working fine on fbdev too, applied Andres Beck's patches, quad-buffering support
alex
parents:
4737
diff
changeset
|
235 ggi_conf.srcwidth = width; |
0ae597cc28e6
totally reworked, working fine on fbdev too, applied Andres Beck's patches, quad-buffering support
alex
parents:
4737
diff
changeset
|
236 ggi_conf.srcheight = height; |
0ae597cc28e6
totally reworked, working fine on fbdev too, applied Andres Beck's patches, quad-buffering support
alex
parents:
4737
diff
changeset
|
237 ggi_conf.srcformat = format; |
15406 | 238 |
239 ggi_conf.dstwidth = mode.virt.x; | |
240 ggi_conf.dstheight = mode.virt.y; | |
5703 | 241 |
242 ggi_conf.voflags = flags; | |
4830 | 243 |
4828
0ae597cc28e6
totally reworked, working fine on fbdev too, applied Andres Beck's patches, quad-buffering support
alex
parents:
4737
diff
changeset
|
244 if (IMGFMT_IS_RGB(ggi_conf.srcformat)) |
1132
80a0f8aa2360
Added for development only this is in pre-alpha state, do not use!
atmosfear
parents:
diff
changeset
|
245 { |
4828
0ae597cc28e6
totally reworked, working fine on fbdev too, applied Andres Beck's patches, quad-buffering support
alex
parents:
4737
diff
changeset
|
246 ggi_conf.srcdepth = IMGFMT_RGB_DEPTH(ggi_conf.srcformat); |
1132
80a0f8aa2360
Added for development only this is in pre-alpha state, do not use!
atmosfear
parents:
diff
changeset
|
247 } |
4828
0ae597cc28e6
totally reworked, working fine on fbdev too, applied Andres Beck's patches, quad-buffering support
alex
parents:
4737
diff
changeset
|
248 else |
0ae597cc28e6
totally reworked, working fine on fbdev too, applied Andres Beck's patches, quad-buffering support
alex
parents:
4737
diff
changeset
|
249 if (IMGFMT_IS_BGR(ggi_conf.srcformat)) |
1132
80a0f8aa2360
Added for development only this is in pre-alpha state, do not use!
atmosfear
parents:
diff
changeset
|
250 { |
4828
0ae597cc28e6
totally reworked, working fine on fbdev too, applied Andres Beck's patches, quad-buffering support
alex
parents:
4737
diff
changeset
|
251 ggi_conf.srcdepth = IMGFMT_BGR_DEPTH(ggi_conf.srcformat); |
0ae597cc28e6
totally reworked, working fine on fbdev too, applied Andres Beck's patches, quad-buffering support
alex
parents:
4737
diff
changeset
|
252 } |
0ae597cc28e6
totally reworked, working fine on fbdev too, applied Andres Beck's patches, quad-buffering support
alex
parents:
4737
diff
changeset
|
253 else |
0ae597cc28e6
totally reworked, working fine on fbdev too, applied Andres Beck's patches, quad-buffering support
alex
parents:
4737
diff
changeset
|
254 { |
5637
6890819bc0dc
added support for directrendering, updated to VFCAP_ flags in query_format, added support for non-directbuffer devices, and using mem2agpcpy_pic
alex
parents:
4841
diff
changeset
|
255 mp_msg(MSGT_VO, MSGL_FATAL, "[ggi] Unknown image format: %s\n", |
6890819bc0dc
added support for directrendering, updated to VFCAP_ flags in query_format, added support for non-directbuffer devices, and using mem2agpcpy_pic
alex
parents:
4841
diff
changeset
|
256 vo_format_name(ggi_conf.srcformat)); |
6890819bc0dc
added support for directrendering, updated to VFCAP_ flags in query_format, added support for non-directbuffer devices, and using mem2agpcpy_pic
alex
parents:
4841
diff
changeset
|
257 return(-1); |
1132
80a0f8aa2360
Added for development only this is in pre-alpha state, do not use!
atmosfear
parents:
diff
changeset
|
258 } |
1172
290353337b44
hardly modified, keyboard handling is ok. aspect implemented, but bugging :)
al3x
parents:
1148
diff
changeset
|
259 |
5637
6890819bc0dc
added support for directrendering, updated to VFCAP_ flags in query_format, added support for non-directbuffer devices, and using mem2agpcpy_pic
alex
parents:
4841
diff
changeset
|
260 ggiSetFlags(ggi_conf.vis, GGIFLAG_ASYNC); |
6890819bc0dc
added support for directrendering, updated to VFCAP_ flags in query_format, added support for non-directbuffer devices, and using mem2agpcpy_pic
alex
parents:
4841
diff
changeset
|
261 |
6890819bc0dc
added support for directrendering, updated to VFCAP_ flags in query_format, added support for non-directbuffer devices, and using mem2agpcpy_pic
alex
parents:
4841
diff
changeset
|
262 if (GT_SCHEME(mode.graphtype) == GT_PALETTE) |
6890819bc0dc
added support for directrendering, updated to VFCAP_ flags in query_format, added support for non-directbuffer devices, and using mem2agpcpy_pic
alex
parents:
4841
diff
changeset
|
263 ggiSetColorfulPalette(ggi_conf.vis); |
6890819bc0dc
added support for directrendering, updated to VFCAP_ flags in query_format, added support for non-directbuffer devices, and using mem2agpcpy_pic
alex
parents:
4841
diff
changeset
|
264 |
6890819bc0dc
added support for directrendering, updated to VFCAP_ flags in query_format, added support for non-directbuffer devices, and using mem2agpcpy_pic
alex
parents:
4841
diff
changeset
|
265 if (ggiGetFlags(ggi_conf.vis) & GGIFLAG_ASYNC) |
6890819bc0dc
added support for directrendering, updated to VFCAP_ flags in query_format, added support for non-directbuffer devices, and using mem2agpcpy_pic
alex
parents:
4841
diff
changeset
|
266 ggi_conf.async = 1; |
6890819bc0dc
added support for directrendering, updated to VFCAP_ flags in query_format, added support for non-directbuffer devices, and using mem2agpcpy_pic
alex
parents:
4841
diff
changeset
|
267 |
14021
f0236d5ba7a7
Remove broken support for directbuffer and including frame-handling use.
iive
parents:
13787
diff
changeset
|
268 mp_msg(MSGT_VO, MSGL_INFO, "[ggi] input: %dx%dx%d, output: %dx%dx%d\n", |
4830 | 269 ggi_conf.srcwidth, ggi_conf.srcheight, ggi_conf.srcdepth, |
14021
f0236d5ba7a7
Remove broken support for directbuffer and including frame-handling use.
iive
parents:
13787
diff
changeset
|
270 vo_dwidth, vo_dheight, vo_dbpp); |
f0236d5ba7a7
Remove broken support for directbuffer and including frame-handling use.
iive
parents:
13787
diff
changeset
|
271 mp_msg(MSGT_VO, MSGL_INFO, "[ggi] async mode: %s\n", |
5637
6890819bc0dc
added support for directrendering, updated to VFCAP_ flags in query_format, added support for non-directbuffer devices, and using mem2agpcpy_pic
alex
parents:
4841
diff
changeset
|
272 ggi_conf.async ? "yes" : "no"); |
4841 | 273 |
5703 | 274 ggi_conf.srcbpp = (ggi_conf.srcdepth+7)/8; |
4830 | 275 |
14175
c4fe6bb22e2e
- Fixed mode setting, so any video can be played on all supported ggi targets.
diego
parents:
14021
diff
changeset
|
276 ggi_conf.flushregion.x1 = ggi_conf.flushregion.y1 = 0; |
c4fe6bb22e2e
- Fixed mode setting, so any video can be played on all supported ggi targets.
diego
parents:
14021
diff
changeset
|
277 ggi_conf.flushregion.x2 = ggi_conf.dstwidth; |
c4fe6bb22e2e
- Fixed mode setting, so any video can be played on all supported ggi targets.
diego
parents:
14021
diff
changeset
|
278 ggi_conf.flushregion.y2 = ggi_conf.dstheight; |
c4fe6bb22e2e
- Fixed mode setting, so any video can be played on all supported ggi targets.
diego
parents:
14021
diff
changeset
|
279 |
1132
80a0f8aa2360
Added for development only this is in pre-alpha state, do not use!
atmosfear
parents:
diff
changeset
|
280 return(0); |
80a0f8aa2360
Added for development only this is in pre-alpha state, do not use!
atmosfear
parents:
diff
changeset
|
281 } |
80a0f8aa2360
Added for development only this is in pre-alpha state, do not use!
atmosfear
parents:
diff
changeset
|
282 |
5637
6890819bc0dc
added support for directrendering, updated to VFCAP_ flags in query_format, added support for non-directbuffer devices, and using mem2agpcpy_pic
alex
parents:
4841
diff
changeset
|
283 static uint32_t get_image(mp_image_t *mpi) |
6890819bc0dc
added support for directrendering, updated to VFCAP_ flags in query_format, added support for non-directbuffer devices, and using mem2agpcpy_pic
alex
parents:
4841
diff
changeset
|
284 { |
6890819bc0dc
added support for directrendering, updated to VFCAP_ flags in query_format, added support for non-directbuffer devices, and using mem2agpcpy_pic
alex
parents:
4841
diff
changeset
|
285 /* GGI DirectRendering supports (yet) only BGR/RGB modes */ |
14021
f0236d5ba7a7
Remove broken support for directbuffer and including frame-handling use.
iive
parents:
13787
diff
changeset
|
286 if ( |
5637
6890819bc0dc
added support for directrendering, updated to VFCAP_ flags in query_format, added support for non-directbuffer devices, and using mem2agpcpy_pic
alex
parents:
4841
diff
changeset
|
287 #if 1 |
6890819bc0dc
added support for directrendering, updated to VFCAP_ flags in query_format, added support for non-directbuffer devices, and using mem2agpcpy_pic
alex
parents:
4841
diff
changeset
|
288 (IMGFMT_IS_RGB(mpi->imgfmt) && |
6890819bc0dc
added support for directrendering, updated to VFCAP_ flags in query_format, added support for non-directbuffer devices, and using mem2agpcpy_pic
alex
parents:
4841
diff
changeset
|
289 (IMGFMT_RGB_DEPTH(mpi->imgfmt) != vo_dbpp)) || |
6890819bc0dc
added support for directrendering, updated to VFCAP_ flags in query_format, added support for non-directbuffer devices, and using mem2agpcpy_pic
alex
parents:
4841
diff
changeset
|
290 (IMGFMT_IS_BGR(mpi->imgfmt) && |
6890819bc0dc
added support for directrendering, updated to VFCAP_ flags in query_format, added support for non-directbuffer devices, and using mem2agpcpy_pic
alex
parents:
4841
diff
changeset
|
291 (IMGFMT_BGR_DEPTH(mpi->imgfmt) != vo_dbpp)) || |
6890819bc0dc
added support for directrendering, updated to VFCAP_ flags in query_format, added support for non-directbuffer devices, and using mem2agpcpy_pic
alex
parents:
4841
diff
changeset
|
292 #else |
6890819bc0dc
added support for directrendering, updated to VFCAP_ flags in query_format, added support for non-directbuffer devices, and using mem2agpcpy_pic
alex
parents:
4841
diff
changeset
|
293 (mpi->imgfmt != ggi_conf.srcformat) || |
6890819bc0dc
added support for directrendering, updated to VFCAP_ flags in query_format, added support for non-directbuffer devices, and using mem2agpcpy_pic
alex
parents:
4841
diff
changeset
|
294 #endif |
6890819bc0dc
added support for directrendering, updated to VFCAP_ flags in query_format, added support for non-directbuffer devices, and using mem2agpcpy_pic
alex
parents:
4841
diff
changeset
|
295 ((mpi->type != MP_IMGTYPE_STATIC) && (mpi->type != MP_IMGTYPE_TEMP)) || |
6890819bc0dc
added support for directrendering, updated to VFCAP_ flags in query_format, added support for non-directbuffer devices, and using mem2agpcpy_pic
alex
parents:
4841
diff
changeset
|
296 (mpi->flags & MP_IMGFLAG_PLANAR) || |
6890819bc0dc
added support for directrendering, updated to VFCAP_ flags in query_format, added support for non-directbuffer devices, and using mem2agpcpy_pic
alex
parents:
4841
diff
changeset
|
297 (mpi->flags & MP_IMGFLAG_YUV) || |
6890819bc0dc
added support for directrendering, updated to VFCAP_ flags in query_format, added support for non-directbuffer devices, and using mem2agpcpy_pic
alex
parents:
4841
diff
changeset
|
298 (mpi->width != ggi_conf.srcwidth) || |
6890819bc0dc
added support for directrendering, updated to VFCAP_ flags in query_format, added support for non-directbuffer devices, and using mem2agpcpy_pic
alex
parents:
4841
diff
changeset
|
299 (mpi->height != ggi_conf.srcheight) |
6890819bc0dc
added support for directrendering, updated to VFCAP_ flags in query_format, added support for non-directbuffer devices, and using mem2agpcpy_pic
alex
parents:
4841
diff
changeset
|
300 ) |
14175
c4fe6bb22e2e
- Fixed mode setting, so any video can be played on all supported ggi targets.
diego
parents:
14021
diff
changeset
|
301 { |
5637
6890819bc0dc
added support for directrendering, updated to VFCAP_ flags in query_format, added support for non-directbuffer devices, and using mem2agpcpy_pic
alex
parents:
4841
diff
changeset
|
302 return(VO_FALSE); |
14175
c4fe6bb22e2e
- Fixed mode setting, so any video can be played on all supported ggi targets.
diego
parents:
14021
diff
changeset
|
303 } |
5637
6890819bc0dc
added support for directrendering, updated to VFCAP_ flags in query_format, added support for non-directbuffer devices, and using mem2agpcpy_pic
alex
parents:
4841
diff
changeset
|
304 |
5703 | 305 mpi->planes[1] = mpi->planes[2] = NULL; |
306 mpi->stride[1] = mpi->stride[2] = 0; | |
307 | |
14021
f0236d5ba7a7
Remove broken support for directbuffer and including frame-handling use.
iive
parents:
13787
diff
changeset
|
308 mpi->planes[0] = NULL; |
14175
c4fe6bb22e2e
- Fixed mode setting, so any video can be played on all supported ggi targets.
diego
parents:
14021
diff
changeset
|
309 mpi->stride[0] = ggi_conf.srcwidth * ggi_conf.srcbpp; |
5637
6890819bc0dc
added support for directrendering, updated to VFCAP_ flags in query_format, added support for non-directbuffer devices, and using mem2agpcpy_pic
alex
parents:
4841
diff
changeset
|
310 mpi->flags |= MP_IMGFLAG_DIRECT; |
6890819bc0dc
added support for directrendering, updated to VFCAP_ flags in query_format, added support for non-directbuffer devices, and using mem2agpcpy_pic
alex
parents:
4841
diff
changeset
|
311 |
5703 | 312 #ifdef GGI_FLIP |
313 if (ggi_conf.voflags & VOFLAG_FLIPPING) | |
314 { | |
315 mpi->stride[0] = -mpi->stride[0]; | |
316 } | |
317 #endif | |
318 | |
5637
6890819bc0dc
added support for directrendering, updated to VFCAP_ flags in query_format, added support for non-directbuffer devices, and using mem2agpcpy_pic
alex
parents:
4841
diff
changeset
|
319 return(VO_TRUE); |
6890819bc0dc
added support for directrendering, updated to VFCAP_ flags in query_format, added support for non-directbuffer devices, and using mem2agpcpy_pic
alex
parents:
4841
diff
changeset
|
320 } |
6890819bc0dc
added support for directrendering, updated to VFCAP_ flags in query_format, added support for non-directbuffer devices, and using mem2agpcpy_pic
alex
parents:
4841
diff
changeset
|
321 |
6890819bc0dc
added support for directrendering, updated to VFCAP_ flags in query_format, added support for non-directbuffer devices, and using mem2agpcpy_pic
alex
parents:
4841
diff
changeset
|
322 |
6890819bc0dc
added support for directrendering, updated to VFCAP_ flags in query_format, added support for non-directbuffer devices, and using mem2agpcpy_pic
alex
parents:
4841
diff
changeset
|
323 static uint32_t draw_frame(uint8_t *src[]) |
6890819bc0dc
added support for directrendering, updated to VFCAP_ flags in query_format, added support for non-directbuffer devices, and using mem2agpcpy_pic
alex
parents:
4841
diff
changeset
|
324 { |
11110 | 325 ggiPutBox(ggi_conf.vis, 0, 0, ggi_conf.dstwidth, ggi_conf.dstheight, src[0]); |
14175
c4fe6bb22e2e
- Fixed mode setting, so any video can be played on all supported ggi targets.
diego
parents:
14021
diff
changeset
|
326 |
c4fe6bb22e2e
- Fixed mode setting, so any video can be played on all supported ggi targets.
diego
parents:
14021
diff
changeset
|
327 ggi_conf.flushregion.x1 = ggi_conf.flushregion.y1 = 0; |
c4fe6bb22e2e
- Fixed mode setting, so any video can be played on all supported ggi targets.
diego
parents:
14021
diff
changeset
|
328 ggi_conf.flushregion.x2 = ggi_conf.dstwidth; |
c4fe6bb22e2e
- Fixed mode setting, so any video can be played on all supported ggi targets.
diego
parents:
14021
diff
changeset
|
329 ggi_conf.flushregion.y2 = ggi_conf.dstheight; |
5637
6890819bc0dc
added support for directrendering, updated to VFCAP_ flags in query_format, added support for non-directbuffer devices, and using mem2agpcpy_pic
alex
parents:
4841
diff
changeset
|
330 |
1141
c33f8b7488d1
cleaned up, and merged with my version, also code will be faster too
al3x
parents:
1132
diff
changeset
|
331 return(0); |
c33f8b7488d1
cleaned up, and merged with my version, also code will be faster too
al3x
parents:
1132
diff
changeset
|
332 } |
1132
80a0f8aa2360
Added for development only this is in pre-alpha state, do not use!
atmosfear
parents:
diff
changeset
|
333 |
5637
6890819bc0dc
added support for directrendering, updated to VFCAP_ flags in query_format, added support for non-directbuffer devices, and using mem2agpcpy_pic
alex
parents:
4841
diff
changeset
|
334 static void draw_osd(void) |
6890819bc0dc
added support for directrendering, updated to VFCAP_ flags in query_format, added support for non-directbuffer devices, and using mem2agpcpy_pic
alex
parents:
4841
diff
changeset
|
335 { |
14175
c4fe6bb22e2e
- Fixed mode setting, so any video can be played on all supported ggi targets.
diego
parents:
14021
diff
changeset
|
336 return; |
1132
80a0f8aa2360
Added for development only this is in pre-alpha state, do not use!
atmosfear
parents:
diff
changeset
|
337 } |
80a0f8aa2360
Added for development only this is in pre-alpha state, do not use!
atmosfear
parents:
diff
changeset
|
338 |
5637
6890819bc0dc
added support for directrendering, updated to VFCAP_ flags in query_format, added support for non-directbuffer devices, and using mem2agpcpy_pic
alex
parents:
4841
diff
changeset
|
339 static void flip_page(void) |
6890819bc0dc
added support for directrendering, updated to VFCAP_ flags in query_format, added support for non-directbuffer devices, and using mem2agpcpy_pic
alex
parents:
4841
diff
changeset
|
340 { |
14175
c4fe6bb22e2e
- Fixed mode setting, so any video can be played on all supported ggi targets.
diego
parents:
14021
diff
changeset
|
341 ggiFlushRegion(ggi_conf.vis, ggi_conf.flushregion.x1, ggi_conf.flushregion.y1, |
c4fe6bb22e2e
- Fixed mode setting, so any video can be played on all supported ggi targets.
diego
parents:
14021
diff
changeset
|
342 ggi_conf.flushregion.x2 - ggi_conf.flushregion.x1, |
c4fe6bb22e2e
- Fixed mode setting, so any video can be played on all supported ggi targets.
diego
parents:
14021
diff
changeset
|
343 ggi_conf.flushregion.y2 - ggi_conf.flushregion.y1); |
15406 | 344 |
345 ggi_conf.flushregion.x1 = ggi_conf.flushregion.x2 = -1; | |
346 ggi_conf.flushregion.y1 = ggi_conf.flushregion.y2 = -1; | |
5637
6890819bc0dc
added support for directrendering, updated to VFCAP_ flags in query_format, added support for non-directbuffer devices, and using mem2agpcpy_pic
alex
parents:
4841
diff
changeset
|
347 } |
6890819bc0dc
added support for directrendering, updated to VFCAP_ flags in query_format, added support for non-directbuffer devices, and using mem2agpcpy_pic
alex
parents:
4841
diff
changeset
|
348 |
1132
80a0f8aa2360
Added for development only this is in pre-alpha state, do not use!
atmosfear
parents:
diff
changeset
|
349 static uint32_t draw_slice(uint8_t *src[], int stride[], int w, int h, |
80a0f8aa2360
Added for development only this is in pre-alpha state, do not use!
atmosfear
parents:
diff
changeset
|
350 int x, int y) |
80a0f8aa2360
Added for development only this is in pre-alpha state, do not use!
atmosfear
parents:
diff
changeset
|
351 { |
14175
c4fe6bb22e2e
- Fixed mode setting, so any video can be played on all supported ggi targets.
diego
parents:
14021
diff
changeset
|
352 ggiPutBox(ggi_conf.vis, x, y, w, h, src[0]); |
c4fe6bb22e2e
- Fixed mode setting, so any video can be played on all supported ggi targets.
diego
parents:
14021
diff
changeset
|
353 |
15406 | 354 if ((ggi_conf.flushregion.x1 == -1) || (x < ggi_conf.flushregion.x1)) |
14175
c4fe6bb22e2e
- Fixed mode setting, so any video can be played on all supported ggi targets.
diego
parents:
14021
diff
changeset
|
355 ggi_conf.flushregion.x1 = x; |
15406 | 356 if ((ggi_conf.flushregion.y1 == -1) || (y < ggi_conf.flushregion.y1)) |
14175
c4fe6bb22e2e
- Fixed mode setting, so any video can be played on all supported ggi targets.
diego
parents:
14021
diff
changeset
|
357 ggi_conf.flushregion.y1 = y; |
15406 | 358 if ((ggi_conf.flushregion.x2 == -1) || ((x + w) > ggi_conf.flushregion.x2)) |
14175
c4fe6bb22e2e
- Fixed mode setting, so any video can be played on all supported ggi targets.
diego
parents:
14021
diff
changeset
|
359 ggi_conf.flushregion.x2 = x + w; |
15406 | 360 if ((ggi_conf.flushregion.y2 == -1) || ((y + h) > ggi_conf.flushregion.y2)) |
14175
c4fe6bb22e2e
- Fixed mode setting, so any video can be played on all supported ggi targets.
diego
parents:
14021
diff
changeset
|
361 ggi_conf.flushregion.y2 = y + h; |
c4fe6bb22e2e
- Fixed mode setting, so any video can be played on all supported ggi targets.
diego
parents:
14021
diff
changeset
|
362 |
11110 | 363 return(1); |
1132
80a0f8aa2360
Added for development only this is in pre-alpha state, do not use!
atmosfear
parents:
diff
changeset
|
364 } |
80a0f8aa2360
Added for development only this is in pre-alpha state, do not use!
atmosfear
parents:
diff
changeset
|
365 |
80a0f8aa2360
Added for development only this is in pre-alpha state, do not use!
atmosfear
parents:
diff
changeset
|
366 static uint32_t query_format(uint32_t format) |
80a0f8aa2360
Added for development only this is in pre-alpha state, do not use!
atmosfear
parents:
diff
changeset
|
367 { |
5637
6890819bc0dc
added support for directrendering, updated to VFCAP_ flags in query_format, added support for non-directbuffer devices, and using mem2agpcpy_pic
alex
parents:
4841
diff
changeset
|
368 ggi_mode mode; |
14175
c4fe6bb22e2e
- Fixed mode setting, so any video can be played on all supported ggi targets.
diego
parents:
14021
diff
changeset
|
369 uint32_t vfcap; |
c4fe6bb22e2e
- Fixed mode setting, so any video can be played on all supported ggi targets.
diego
parents:
14021
diff
changeset
|
370 |
c4fe6bb22e2e
- Fixed mode setting, so any video can be played on all supported ggi targets.
diego
parents:
14021
diff
changeset
|
371 vfcap = VFCAP_CSP_SUPPORTED | VFCAP_CSP_SUPPORTED_BY_HW | VFCAP_ACCEPT_STRIDE; |
c4fe6bb22e2e
- Fixed mode setting, so any video can be played on all supported ggi targets.
diego
parents:
14021
diff
changeset
|
372 |
c4fe6bb22e2e
- Fixed mode setting, so any video can be played on all supported ggi targets.
diego
parents:
14021
diff
changeset
|
373 if ((!vo_depthonscreen || !vo_dbpp) && ggi_conf.parentvis) |
5637
6890819bc0dc
added support for directrendering, updated to VFCAP_ flags in query_format, added support for non-directbuffer devices, and using mem2agpcpy_pic
alex
parents:
4841
diff
changeset
|
374 { |
14175
c4fe6bb22e2e
- Fixed mode setting, so any video can be played on all supported ggi targets.
diego
parents:
14021
diff
changeset
|
375 if (ggiGetMode(ggi_conf.parentvis, &mode) == 0) |
5637
6890819bc0dc
added support for directrendering, updated to VFCAP_ flags in query_format, added support for non-directbuffer devices, and using mem2agpcpy_pic
alex
parents:
4841
diff
changeset
|
376 { |
6890819bc0dc
added support for directrendering, updated to VFCAP_ flags in query_format, added support for non-directbuffer devices, and using mem2agpcpy_pic
alex
parents:
4841
diff
changeset
|
377 vo_depthonscreen = GT_DEPTH(mode.graphtype); |
6890819bc0dc
added support for directrendering, updated to VFCAP_ flags in query_format, added support for non-directbuffer devices, and using mem2agpcpy_pic
alex
parents:
4841
diff
changeset
|
378 vo_dbpp = GT_SIZE(mode.graphtype); |
6890819bc0dc
added support for directrendering, updated to VFCAP_ flags in query_format, added support for non-directbuffer devices, and using mem2agpcpy_pic
alex
parents:
4841
diff
changeset
|
379 } |
6890819bc0dc
added support for directrendering, updated to VFCAP_ flags in query_format, added support for non-directbuffer devices, and using mem2agpcpy_pic
alex
parents:
4841
diff
changeset
|
380 } |
6890819bc0dc
added support for directrendering, updated to VFCAP_ flags in query_format, added support for non-directbuffer devices, and using mem2agpcpy_pic
alex
parents:
4841
diff
changeset
|
381 |
6890819bc0dc
added support for directrendering, updated to VFCAP_ flags in query_format, added support for non-directbuffer devices, and using mem2agpcpy_pic
alex
parents:
4841
diff
changeset
|
382 if ((IMGFMT_IS_BGR(format) && (IMGFMT_BGR_DEPTH(format) == vo_dbpp)) || |
6890819bc0dc
added support for directrendering, updated to VFCAP_ flags in query_format, added support for non-directbuffer devices, and using mem2agpcpy_pic
alex
parents:
4841
diff
changeset
|
383 (IMGFMT_IS_RGB(format) && (IMGFMT_RGB_DEPTH(format) == vo_dbpp))) |
1141
c33f8b7488d1
cleaned up, and merged with my version, also code will be faster too
al3x
parents:
1132
diff
changeset
|
384 { |
14175
c4fe6bb22e2e
- Fixed mode setting, so any video can be played on all supported ggi targets.
diego
parents:
14021
diff
changeset
|
385 return vfcap; |
1132
80a0f8aa2360
Added for development only this is in pre-alpha state, do not use!
atmosfear
parents:
diff
changeset
|
386 } |
14175
c4fe6bb22e2e
- Fixed mode setting, so any video can be played on all supported ggi targets.
diego
parents:
14021
diff
changeset
|
387 |
5637
6890819bc0dc
added support for directrendering, updated to VFCAP_ flags in query_format, added support for non-directbuffer devices, and using mem2agpcpy_pic
alex
parents:
4841
diff
changeset
|
388 if (IMGFMT_IS_BGR(format) || IMGFMT_IS_RGB(format)) |
6890819bc0dc
added support for directrendering, updated to VFCAP_ flags in query_format, added support for non-directbuffer devices, and using mem2agpcpy_pic
alex
parents:
4841
diff
changeset
|
389 { |
14175
c4fe6bb22e2e
- Fixed mode setting, so any video can be played on all supported ggi targets.
diego
parents:
14021
diff
changeset
|
390 set_graphtype(format, &mode); |
c4fe6bb22e2e
- Fixed mode setting, so any video can be played on all supported ggi targets.
diego
parents:
14021
diff
changeset
|
391 |
c4fe6bb22e2e
- Fixed mode setting, so any video can be played on all supported ggi targets.
diego
parents:
14021
diff
changeset
|
392 if (ggiCheckMode(ggi_conf.parentvis, &mode) < 0) { |
c4fe6bb22e2e
- Fixed mode setting, so any video can be played on all supported ggi targets.
diego
parents:
14021
diff
changeset
|
393 return 0; |
c4fe6bb22e2e
- Fixed mode setting, so any video can be played on all supported ggi targets.
diego
parents:
14021
diff
changeset
|
394 } else { |
c4fe6bb22e2e
- Fixed mode setting, so any video can be played on all supported ggi targets.
diego
parents:
14021
diff
changeset
|
395 return vfcap; |
11110 | 396 } |
5637
6890819bc0dc
added support for directrendering, updated to VFCAP_ flags in query_format, added support for non-directbuffer devices, and using mem2agpcpy_pic
alex
parents:
4841
diff
changeset
|
397 } |
6890819bc0dc
added support for directrendering, updated to VFCAP_ flags in query_format, added support for non-directbuffer devices, and using mem2agpcpy_pic
alex
parents:
4841
diff
changeset
|
398 |
1141
c33f8b7488d1
cleaned up, and merged with my version, also code will be faster too
al3x
parents:
1132
diff
changeset
|
399 return(0); |
1132
80a0f8aa2360
Added for development only this is in pre-alpha state, do not use!
atmosfear
parents:
diff
changeset
|
400 } |
80a0f8aa2360
Added for development only this is in pre-alpha state, do not use!
atmosfear
parents:
diff
changeset
|
401 |
4828
0ae597cc28e6
totally reworked, working fine on fbdev too, applied Andres Beck's patches, quad-buffering support
alex
parents:
4737
diff
changeset
|
402 static uint32_t preinit(const char *arg) |
0ae597cc28e6
totally reworked, working fine on fbdev too, applied Andres Beck's patches, quad-buffering support
alex
parents:
4737
diff
changeset
|
403 { |
0ae597cc28e6
totally reworked, working fine on fbdev too, applied Andres Beck's patches, quad-buffering support
alex
parents:
4737
diff
changeset
|
404 if (ggiInit() != 0) |
0ae597cc28e6
totally reworked, working fine on fbdev too, applied Andres Beck's patches, quad-buffering support
alex
parents:
4737
diff
changeset
|
405 { |
0ae597cc28e6
totally reworked, working fine on fbdev too, applied Andres Beck's patches, quad-buffering support
alex
parents:
4737
diff
changeset
|
406 mp_msg(MSGT_VO, MSGL_FATAL, "[ggi] unable to initialize GGI\n"); |
0ae597cc28e6
totally reworked, working fine on fbdev too, applied Andres Beck's patches, quad-buffering support
alex
parents:
4737
diff
changeset
|
407 return(-1); |
0ae597cc28e6
totally reworked, working fine on fbdev too, applied Andres Beck's patches, quad-buffering support
alex
parents:
4737
diff
changeset
|
408 } |
0ae597cc28e6
totally reworked, working fine on fbdev too, applied Andres Beck's patches, quad-buffering support
alex
parents:
4737
diff
changeset
|
409 |
15406 | 410 #ifdef HAVE_GGIWMH |
411 if (ggiWmhInit() < 0) | |
412 { | |
413 mp_msg(MSGT_VO, MSGL_FATAL, "[ggi] unable to initialize libggiwmh\n"); | |
414 return(-1); | |
415 } | |
416 #endif | |
417 | |
4841 | 418 if ((char *)arg) |
15272
db06e2acdf3d
Make it possible to use a ggi device string that contains a ',' by writing
reimar
parents:
14175
diff
changeset
|
419 { |
db06e2acdf3d
Make it possible to use a ggi device string that contains a ',' by writing
reimar
parents:
14175
diff
changeset
|
420 int i = 0; |
4841 | 421 ggi_conf.driver = strdup(arg); |
15272
db06e2acdf3d
Make it possible to use a ggi device string that contains a ',' by writing
reimar
parents:
14175
diff
changeset
|
422 while (ggi_conf.driver[i]) { |
db06e2acdf3d
Make it possible to use a ggi device string that contains a ',' by writing
reimar
parents:
14175
diff
changeset
|
423 if (ggi_conf.driver[i] == '.') |
db06e2acdf3d
Make it possible to use a ggi device string that contains a ',' by writing
reimar
parents:
14175
diff
changeset
|
424 ggi_conf.driver[i] = ','; |
db06e2acdf3d
Make it possible to use a ggi device string that contains a ',' by writing
reimar
parents:
14175
diff
changeset
|
425 i++; |
db06e2acdf3d
Make it possible to use a ggi device string that contains a ',' by writing
reimar
parents:
14175
diff
changeset
|
426 } |
db06e2acdf3d
Make it possible to use a ggi device string that contains a ',' by writing
reimar
parents:
14175
diff
changeset
|
427 } |
4828
0ae597cc28e6
totally reworked, working fine on fbdev too, applied Andres Beck's patches, quad-buffering support
alex
parents:
4737
diff
changeset
|
428 else |
0ae597cc28e6
totally reworked, working fine on fbdev too, applied Andres Beck's patches, quad-buffering support
alex
parents:
4737
diff
changeset
|
429 ggi_conf.driver = NULL; |
0ae597cc28e6
totally reworked, working fine on fbdev too, applied Andres Beck's patches, quad-buffering support
alex
parents:
4737
diff
changeset
|
430 |
14175
c4fe6bb22e2e
- Fixed mode setting, so any video can be played on all supported ggi targets.
diego
parents:
14021
diff
changeset
|
431 ggi_conf.parentvis = ggiOpen(ggi_conf.driver); |
c4fe6bb22e2e
- Fixed mode setting, so any video can be played on all supported ggi targets.
diego
parents:
14021
diff
changeset
|
432 if (ggi_conf.parentvis == NULL) |
4828
0ae597cc28e6
totally reworked, working fine on fbdev too, applied Andres Beck's patches, quad-buffering support
alex
parents:
4737
diff
changeset
|
433 { |
0ae597cc28e6
totally reworked, working fine on fbdev too, applied Andres Beck's patches, quad-buffering support
alex
parents:
4737
diff
changeset
|
434 mp_msg(MSGT_VO, MSGL_FATAL, "[ggi] unable to open '%s' output\n", |
0ae597cc28e6
totally reworked, working fine on fbdev too, applied Andres Beck's patches, quad-buffering support
alex
parents:
4737
diff
changeset
|
435 (ggi_conf.driver == NULL) ? "default" : ggi_conf.driver); |
0ae597cc28e6
totally reworked, working fine on fbdev too, applied Andres Beck's patches, quad-buffering support
alex
parents:
4737
diff
changeset
|
436 ggiExit(); |
0ae597cc28e6
totally reworked, working fine on fbdev too, applied Andres Beck's patches, quad-buffering support
alex
parents:
4737
diff
changeset
|
437 return(-1); |
0ae597cc28e6
totally reworked, working fine on fbdev too, applied Andres Beck's patches, quad-buffering support
alex
parents:
4737
diff
changeset
|
438 } |
14175
c4fe6bb22e2e
- Fixed mode setting, so any video can be played on all supported ggi targets.
diego
parents:
14021
diff
changeset
|
439 |
c4fe6bb22e2e
- Fixed mode setting, so any video can be played on all supported ggi targets.
diego
parents:
14021
diff
changeset
|
440 ggi_conf.vis = ggiOpen("display-sub", ggi_conf.parentvis); |
c4fe6bb22e2e
- Fixed mode setting, so any video can be played on all supported ggi targets.
diego
parents:
14021
diff
changeset
|
441 if (ggi_conf.vis == NULL) |
c4fe6bb22e2e
- Fixed mode setting, so any video can be played on all supported ggi targets.
diego
parents:
14021
diff
changeset
|
442 { |
c4fe6bb22e2e
- Fixed mode setting, so any video can be played on all supported ggi targets.
diego
parents:
14021
diff
changeset
|
443 mp_msg(MSGT_VO, MSGL_FATAL, "[ggi] unable to open the video output\n"); |
c4fe6bb22e2e
- Fixed mode setting, so any video can be played on all supported ggi targets.
diego
parents:
14021
diff
changeset
|
444 ggiExit(); |
c4fe6bb22e2e
- Fixed mode setting, so any video can be played on all supported ggi targets.
diego
parents:
14021
diff
changeset
|
445 return(-1); |
c4fe6bb22e2e
- Fixed mode setting, so any video can be played on all supported ggi targets.
diego
parents:
14021
diff
changeset
|
446 } |
c4fe6bb22e2e
- Fixed mode setting, so any video can be played on all supported ggi targets.
diego
parents:
14021
diff
changeset
|
447 |
15406 | 448 #ifdef HAVE_GGIWMH |
449 ggiWmhAttach(ggi_conf.parentvis); | |
450 #endif | |
451 | |
4828
0ae597cc28e6
totally reworked, working fine on fbdev too, applied Andres Beck's patches, quad-buffering support
alex
parents:
4737
diff
changeset
|
452 |
0ae597cc28e6
totally reworked, working fine on fbdev too, applied Andres Beck's patches, quad-buffering support
alex
parents:
4737
diff
changeset
|
453 mp_msg(MSGT_VO, MSGL_V, "[ggi] using '%s' output\n", |
0ae597cc28e6
totally reworked, working fine on fbdev too, applied Andres Beck's patches, quad-buffering support
alex
parents:
4737
diff
changeset
|
454 (ggi_conf.driver == NULL) ? "default" : ggi_conf.driver); |
0ae597cc28e6
totally reworked, working fine on fbdev too, applied Andres Beck's patches, quad-buffering support
alex
parents:
4737
diff
changeset
|
455 |
0ae597cc28e6
totally reworked, working fine on fbdev too, applied Andres Beck's patches, quad-buffering support
alex
parents:
4737
diff
changeset
|
456 return 0; |
0ae597cc28e6
totally reworked, working fine on fbdev too, applied Andres Beck's patches, quad-buffering support
alex
parents:
4737
diff
changeset
|
457 } |
0ae597cc28e6
totally reworked, working fine on fbdev too, applied Andres Beck's patches, quad-buffering support
alex
parents:
4737
diff
changeset
|
458 |
1132
80a0f8aa2360
Added for development only this is in pre-alpha state, do not use!
atmosfear
parents:
diff
changeset
|
459 static void uninit(void) |
80a0f8aa2360
Added for development only this is in pre-alpha state, do not use!
atmosfear
parents:
diff
changeset
|
460 { |
4841 | 461 if (ggi_conf.driver) |
462 free(ggi_conf.driver); | |
15406 | 463 |
464 #ifdef HAVE_GGIWMH | |
465 ggiWmhDetach(ggi_conf.parentvis); | |
466 ggiWmhExit(); | |
467 #endif | |
468 | |
1172
290353337b44
hardly modified, keyboard handling is ok. aspect implemented, but bugging :)
al3x
parents:
1148
diff
changeset
|
469 ggiClose(ggi_conf.vis); |
14175
c4fe6bb22e2e
- Fixed mode setting, so any video can be played on all supported ggi targets.
diego
parents:
14021
diff
changeset
|
470 ggiClose(ggi_conf.parentvis); |
1132
80a0f8aa2360
Added for development only this is in pre-alpha state, do not use!
atmosfear
parents:
diff
changeset
|
471 ggiExit(); |
80a0f8aa2360
Added for development only this is in pre-alpha state, do not use!
atmosfear
parents:
diff
changeset
|
472 } |
80a0f8aa2360
Added for development only this is in pre-alpha state, do not use!
atmosfear
parents:
diff
changeset
|
473 |
4828
0ae597cc28e6
totally reworked, working fine on fbdev too, applied Andres Beck's patches, quad-buffering support
alex
parents:
4737
diff
changeset
|
474 static uint32_t control(uint32_t request, void *data, ...) |
0ae597cc28e6
totally reworked, working fine on fbdev too, applied Andres Beck's patches, quad-buffering support
alex
parents:
4737
diff
changeset
|
475 { |
5637
6890819bc0dc
added support for directrendering, updated to VFCAP_ flags in query_format, added support for non-directbuffer devices, and using mem2agpcpy_pic
alex
parents:
4841
diff
changeset
|
476 switch(request) |
6890819bc0dc
added support for directrendering, updated to VFCAP_ flags in query_format, added support for non-directbuffer devices, and using mem2agpcpy_pic
alex
parents:
4841
diff
changeset
|
477 { |
6890819bc0dc
added support for directrendering, updated to VFCAP_ flags in query_format, added support for non-directbuffer devices, and using mem2agpcpy_pic
alex
parents:
4841
diff
changeset
|
478 case VOCTRL_QUERY_FORMAT: |
6890819bc0dc
added support for directrendering, updated to VFCAP_ flags in query_format, added support for non-directbuffer devices, and using mem2agpcpy_pic
alex
parents:
4841
diff
changeset
|
479 return query_format(*((uint32_t*)data)); |
6890819bc0dc
added support for directrendering, updated to VFCAP_ flags in query_format, added support for non-directbuffer devices, and using mem2agpcpy_pic
alex
parents:
4841
diff
changeset
|
480 case VOCTRL_GET_IMAGE: |
6890819bc0dc
added support for directrendering, updated to VFCAP_ flags in query_format, added support for non-directbuffer devices, and using mem2agpcpy_pic
alex
parents:
4841
diff
changeset
|
481 return get_image(data); |
15406 | 482 #ifdef HAVE_GGIWMH |
483 case VOCTRL_ONTOP: | |
484 vo_ontop = (!(vo_ontop)); | |
485 window_ontop(); | |
486 return VO_TRUE; | |
487 #endif | |
5637
6890819bc0dc
added support for directrendering, updated to VFCAP_ flags in query_format, added support for non-directbuffer devices, and using mem2agpcpy_pic
alex
parents:
4841
diff
changeset
|
488 } |
6890819bc0dc
added support for directrendering, updated to VFCAP_ flags in query_format, added support for non-directbuffer devices, and using mem2agpcpy_pic
alex
parents:
4841
diff
changeset
|
489 return VO_NOTIMPL; |
4828
0ae597cc28e6
totally reworked, working fine on fbdev too, applied Andres Beck's patches, quad-buffering support
alex
parents:
4737
diff
changeset
|
490 } |
0ae597cc28e6
totally reworked, working fine on fbdev too, applied Andres Beck's patches, quad-buffering support
alex
parents:
4737
diff
changeset
|
491 |
4841 | 492 /* EVENT handling */ |
13787
e047e70a9767
Handle "xxx.h" vs "../xxx.h" include paths in a consistent way.
diego
parents:
12650
diff
changeset
|
493 #include "osdep/keycodes.h" |
1172
290353337b44
hardly modified, keyboard handling is ok. aspect implemented, but bugging :)
al3x
parents:
1148
diff
changeset
|
494 extern void mplayer_put_key(int code); |
290353337b44
hardly modified, keyboard handling is ok. aspect implemented, but bugging :)
al3x
parents:
1148
diff
changeset
|
495 |
1132
80a0f8aa2360
Added for development only this is in pre-alpha state, do not use!
atmosfear
parents:
diff
changeset
|
496 static void check_events(void) |
80a0f8aa2360
Added for development only this is in pre-alpha state, do not use!
atmosfear
parents:
diff
changeset
|
497 { |
1143 | 498 struct timeval tv = {0, 0}; |
499 ggi_event event; | |
500 ggi_event_mask mask; | |
501 | |
14175
c4fe6bb22e2e
- Fixed mode setting, so any video can be played on all supported ggi targets.
diego
parents:
14021
diff
changeset
|
502 if ((mask = ggiEventPoll(ggi_conf.parentvis, emAll, &tv))) |
c4fe6bb22e2e
- Fixed mode setting, so any video can be played on all supported ggi targets.
diego
parents:
14021
diff
changeset
|
503 if (ggiEventRead(ggi_conf.parentvis, &event, emAll) != 0) |
1143 | 504 { |
4828
0ae597cc28e6
totally reworked, working fine on fbdev too, applied Andres Beck's patches, quad-buffering support
alex
parents:
4737
diff
changeset
|
505 mp_dbg(MSGT_VO, MSGL_DBG3, "type: %4x, origin: %4x, sym: %4x, label: %4x, button=%4x\n", |
1172
290353337b44
hardly modified, keyboard handling is ok. aspect implemented, but bugging :)
al3x
parents:
1148
diff
changeset
|
506 event.any.origin, event.any.type, event.key.sym, event.key.label, event.key.button); |
1143 | 507 |
14175
c4fe6bb22e2e
- Fixed mode setting, so any video can be played on all supported ggi targets.
diego
parents:
14021
diff
changeset
|
508 switch (event.any.type) { |
c4fe6bb22e2e
- Fixed mode setting, so any video can be played on all supported ggi targets.
diego
parents:
14021
diff
changeset
|
509 case evKeyPress: |
1172
290353337b44
hardly modified, keyboard handling is ok. aspect implemented, but bugging :)
al3x
parents:
1148
diff
changeset
|
510 switch(event.key.sym) |
1143 | 511 { |
512 case GIIK_PAsterisk: /* PStar */ | |
513 case GIIUC_Asterisk: | |
514 mplayer_put_key('*'); | |
515 break; | |
516 case GIIK_PSlash: | |
517 case GIIUC_Slash: | |
518 mplayer_put_key('/'); | |
519 break; | |
520 case GIIK_PPlus: | |
521 case GIIUC_Plus: | |
522 mplayer_put_key('+'); | |
523 break; | |
524 case GIIK_PMinus: | |
525 case GIIUC_Minus: | |
526 mplayer_put_key('-'); | |
527 break; | |
528 case GIIUC_o: | |
529 case GIIUC_O: | |
530 mplayer_put_key('o'); | |
531 break; | |
532 case GIIUC_g: | |
533 case GIIUC_G: | |
534 mplayer_put_key('g'); | |
535 break; | |
536 case GIIUC_z: | |
537 case GIIUC_Z: | |
538 mplayer_put_key('z'); | |
539 break; | |
540 case GIIUC_x: | |
541 case GIIUC_X: | |
542 mplayer_put_key('x'); | |
543 break; | |
544 case GIIUC_m: | |
545 case GIIUC_M: | |
546 mplayer_put_key('m'); | |
547 break; | |
548 case GIIUC_d: | |
549 case GIIUC_D: | |
550 mplayer_put_key('d'); | |
551 break; | |
552 case GIIUC_q: | |
553 case GIIUC_Q: | |
554 mplayer_put_key('q'); | |
555 break; | |
4828
0ae597cc28e6
totally reworked, working fine on fbdev too, applied Andres Beck's patches, quad-buffering support
alex
parents:
4737
diff
changeset
|
556 case GIIUC_h: |
0ae597cc28e6
totally reworked, working fine on fbdev too, applied Andres Beck's patches, quad-buffering support
alex
parents:
4737
diff
changeset
|
557 case GIIUC_H: |
0ae597cc28e6
totally reworked, working fine on fbdev too, applied Andres Beck's patches, quad-buffering support
alex
parents:
4737
diff
changeset
|
558 mplayer_put_key('h'); |
0ae597cc28e6
totally reworked, working fine on fbdev too, applied Andres Beck's patches, quad-buffering support
alex
parents:
4737
diff
changeset
|
559 break; |
0ae597cc28e6
totally reworked, working fine on fbdev too, applied Andres Beck's patches, quad-buffering support
alex
parents:
4737
diff
changeset
|
560 case GIIUC_l: |
0ae597cc28e6
totally reworked, working fine on fbdev too, applied Andres Beck's patches, quad-buffering support
alex
parents:
4737
diff
changeset
|
561 case GIIUC_L: |
0ae597cc28e6
totally reworked, working fine on fbdev too, applied Andres Beck's patches, quad-buffering support
alex
parents:
4737
diff
changeset
|
562 mplayer_put_key('l'); |
0ae597cc28e6
totally reworked, working fine on fbdev too, applied Andres Beck's patches, quad-buffering support
alex
parents:
4737
diff
changeset
|
563 break; |
1143 | 564 case GIIUC_Space: |
565 case GIIUC_p: | |
566 case GIIUC_P: | |
567 mplayer_put_key('p'); | |
568 break; | |
569 case GIIK_Up: | |
570 mplayer_put_key(KEY_UP); | |
571 break; | |
572 case GIIK_Down: | |
573 mplayer_put_key(KEY_DOWN); | |
574 break; | |
575 case GIIK_Left: | |
576 mplayer_put_key(KEY_LEFT); | |
577 break; | |
578 case GIIK_Right: | |
579 mplayer_put_key(KEY_RIGHT); | |
580 break; | |
581 case GIIK_PageUp: | |
582 mplayer_put_key(KEY_PAGE_UP); | |
583 break; | |
584 case GIIK_PageDown: | |
585 mplayer_put_key(KEY_PAGE_DOWN); | |
586 break; | |
587 default: | |
588 break; | |
14175
c4fe6bb22e2e
- Fixed mode setting, so any video can be played on all supported ggi targets.
diego
parents:
14021
diff
changeset
|
589 } /* switch */ |
c4fe6bb22e2e
- Fixed mode setting, so any video can be played on all supported ggi targets.
diego
parents:
14021
diff
changeset
|
590 |
c4fe6bb22e2e
- Fixed mode setting, so any video can be played on all supported ggi targets.
diego
parents:
14021
diff
changeset
|
591 break; |
c4fe6bb22e2e
- Fixed mode setting, so any video can be played on all supported ggi targets.
diego
parents:
14021
diff
changeset
|
592 } /* switch */ |
c4fe6bb22e2e
- Fixed mode setting, so any video can be played on all supported ggi targets.
diego
parents:
14021
diff
changeset
|
593 } /* if */ |
1143 | 594 return; |
1132
80a0f8aa2360
Added for development only this is in pre-alpha state, do not use!
atmosfear
parents:
diff
changeset
|
595 } |