annotate libvo/vo_ggi.c @ 12271:4adb4a3b52a2

More bounds checking fixes (thnaks to Miguel Freitas)
author rtognimp
date Sun, 25 Apr 2004 00:17:23 +0000
parents 54c7f0df68e9
children ac3fd2ff2561
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
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
6fb8a6a4a071 removing my (nonworking) email address
alex
parents: 9380
diff changeset
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
5928e94c0d5f older API fixes, support for async mode
alex
parents: 4831
diff changeset
8 TODO:
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
9 * implement direct rendering support - NEEDS TESTING
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
10 * implement non-directbuffer support - NEEDS TESTING
4841
5928e94c0d5f older API fixes, support for async mode
alex
parents: 4831
diff changeset
11 * check on many devices
5703
efd2518b174e minor fixes and flipping support
alex
parents: 5637
diff changeset
12 * implement gamma handling (VAA isn't obsoleted?)
efd2518b174e minor fixes and flipping support
alex
parents: 5637
diff changeset
13
efd2518b174e minor fixes and flipping support
alex
parents: 5637
diff changeset
14 BUGS:
11110
54c7f0df68e9 non-directbuffer and slices support
alex
parents: 10368
diff changeset
15 * palettized playback has bad colors, probably swapped palette?
5703
efd2518b174e minor fixes and flipping support
alex
parents: 5637
diff changeset
16 * fbdev & DR produces two downscaled images
efd2518b174e minor fixes and flipping support
alex
parents: 5637
diff changeset
17 * fbdev & FLIP (& DR) produces no image
4841
5928e94c0d5f older API fixes, support for async mode
alex
parents: 4831
diff changeset
18
4828
0ae597cc28e6 totally reworked, working fine on fbdev too, applied Andres Beck's patches, quad-buffering support
alex
parents: 4737
diff changeset
19 Thanks to Andreas Beck for his patches.
5703
efd2518b174e minor fixes and flipping support
alex
parents: 5637
diff changeset
20
4841
5928e94c0d5f older API fixes, support for async mode
alex
parents: 4831
diff changeset
21 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
22 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
23 */
80a0f8aa2360 Added for development only this is in pre-alpha state, do not use!
atmosfear
parents:
diff changeset
24
80a0f8aa2360 Added for development only this is in pre-alpha state, do not use!
atmosfear
parents:
diff changeset
25 #include <stdio.h>
80a0f8aa2360 Added for development only this is in pre-alpha state, do not use!
atmosfear
parents:
diff changeset
26 #include <stdlib.h>
80a0f8aa2360 Added for development only this is in pre-alpha state, do not use!
atmosfear
parents:
diff changeset
27 #include <string.h>
80a0f8aa2360 Added for development only this is in pre-alpha state, do not use!
atmosfear
parents:
diff changeset
28 #include <errno.h>
80a0f8aa2360 Added for development only this is in pre-alpha state, do not use!
atmosfear
parents:
diff changeset
29
4828
0ae597cc28e6 totally reworked, working fine on fbdev too, applied Andres Beck's patches, quad-buffering support
alex
parents: 4737
diff changeset
30 #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
31
1172
290353337b44 hardly modified, keyboard handling is ok. aspect implemented, but bugging :)
al3x
parents: 1148
diff changeset
32 #include "../config.h"
1132
80a0f8aa2360 Added for development only this is in pre-alpha state, do not use!
atmosfear
parents:
diff changeset
33 #include "video_out.h"
80a0f8aa2360 Added for development only this is in pre-alpha state, do not use!
atmosfear
parents:
diff changeset
34 #include "video_out_internal.h"
80a0f8aa2360 Added for development only this is in pre-alpha state, do not use!
atmosfear
parents:
diff changeset
35
1141
c33f8b7488d1 cleaned up, and merged with my version, also code will be faster too
al3x
parents: 1132
diff changeset
36 #include "fastmemcpy.h"
1132
80a0f8aa2360 Added for development only this is in pre-alpha state, do not use!
atmosfear
parents:
diff changeset
37
80a0f8aa2360 Added for development only this is in pre-alpha state, do not use!
atmosfear
parents:
diff changeset
38 #include <ggi/ggi.h>
1141
c33f8b7488d1 cleaned up, and merged with my version, also code will be faster too
al3x
parents: 1132
diff changeset
39
4831
9153d1275b6d do not fault if no directbuffer available (for example: ggi display-multi)
alex
parents: 4830
diff changeset
40 /* maximum buffers */
4828
0ae597cc28e6 totally reworked, working fine on fbdev too, applied Andres Beck's patches, quad-buffering support
alex
parents: 4737
diff changeset
41 #define GGI_FRAMES 4
1172
290353337b44 hardly modified, keyboard handling is ok. aspect implemented, but bugging :)
al3x
parents: 1148
diff changeset
42
5703
efd2518b174e minor fixes and flipping support
alex
parents: 5637
diff changeset
43 #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
44
8148
5b39e79af5fe removed get_info, using the same sheme as in libmpcodecs instead
alex
parents: 7124
diff changeset
45 static vo_info_t info =
1132
80a0f8aa2360 Added for development only this is in pre-alpha state, do not use!
atmosfear
parents:
diff changeset
46 {
80a0f8aa2360 Added for development only this is in pre-alpha state, do not use!
atmosfear
parents:
diff changeset
47 "General Graphics Interface (GGI) output",
80a0f8aa2360 Added for development only this is in pre-alpha state, do not use!
atmosfear
parents:
diff changeset
48 "ggi",
10368
6fb8a6a4a071 removing my (nonworking) email address
alex
parents: 9380
diff changeset
49 "Alex Beregszaszi",
1141
c33f8b7488d1 cleaned up, and merged with my version, also code will be faster too
al3x
parents: 1132
diff changeset
50 "under developement"
1132
80a0f8aa2360 Added for development only this is in pre-alpha state, do not use!
atmosfear
parents:
diff changeset
51 };
80a0f8aa2360 Added for development only this is in pre-alpha state, do not use!
atmosfear
parents:
diff changeset
52
8148
5b39e79af5fe removed get_info, using the same sheme as in libmpcodecs instead
alex
parents: 7124
diff changeset
53 LIBVO_EXTERN (ggi)
5b39e79af5fe removed get_info, using the same sheme as in libmpcodecs instead
alex
parents: 7124
diff changeset
54
1172
290353337b44 hardly modified, keyboard handling is ok. aspect implemented, but bugging :)
al3x
parents: 1148
diff changeset
55 static struct ggi_conf_s {
290353337b44 hardly modified, keyboard handling is ok. aspect implemented, but bugging :)
al3x
parents: 1148
diff changeset
56 char *driver;
290353337b44 hardly modified, keyboard handling is ok. aspect implemented, but bugging :)
al3x
parents: 1148
diff changeset
57
290353337b44 hardly modified, keyboard handling is ok. aspect implemented, but bugging :)
al3x
parents: 1148
diff changeset
58 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
59 ggi_directbuffer *buffer[GGI_FRAMES];
0ae597cc28e6 totally reworked, working fine on fbdev too, applied Andres Beck's patches, quad-buffering support
alex
parents: 4737
diff changeset
60 ggi_mode gmode;
0ae597cc28e6 totally reworked, working fine on fbdev too, applied Andres Beck's patches, quad-buffering support
alex
parents: 4737
diff changeset
61
0ae597cc28e6 totally reworked, working fine on fbdev too, applied Andres Beck's patches, quad-buffering support
alex
parents: 4737
diff changeset
62 int frames;
0ae597cc28e6 totally reworked, working fine on fbdev too, applied Andres Beck's patches, quad-buffering support
alex
parents: 4737
diff changeset
63 int currframe;
1172
290353337b44 hardly modified, keyboard handling is ok. aspect implemented, but bugging :)
al3x
parents: 1148
diff changeset
64
4830
2c1dd0b15622 reworked :) should work on low bpp outputs
alex
parents: 4828
diff changeset
65 /* source image format */
2c1dd0b15622 reworked :) should work on low bpp outputs
alex
parents: 4828
diff changeset
66 int srcwidth;
2c1dd0b15622 reworked :) should work on low bpp outputs
alex
parents: 4828
diff changeset
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
efd2518b174e minor fixes and flipping support
alex
parents: 5637
diff changeset
70 int srcbpp;
1172
290353337b44 hardly modified, keyboard handling is ok. aspect implemented, but bugging :)
al3x
parents: 1148
diff changeset
71
290353337b44 hardly modified, keyboard handling is ok. aspect implemented, but bugging :)
al3x
parents: 1148
diff changeset
72 /* destination */
4830
2c1dd0b15622 reworked :) should work on low bpp outputs
alex
parents: 4828
diff changeset
73 int dstwidth;
2c1dd0b15622 reworked :) should work on low bpp outputs
alex
parents: 4828
diff changeset
74 int dstheight;
4841
5928e94c0d5f older API fixes, support for async mode
alex
parents: 4831
diff changeset
75
5928e94c0d5f older API fixes, support for async mode
alex
parents: 4831
diff changeset
76 int async;
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
77 int directbuffer;
5703
efd2518b174e minor fixes and flipping support
alex
parents: 5637
diff changeset
78
efd2518b174e minor fixes and flipping support
alex
parents: 5637
diff changeset
79 int voflags;
1172
290353337b44 hardly modified, keyboard handling is ok. aspect implemented, but bugging :)
al3x
parents: 1148
diff changeset
80 } ggi_conf;
1132
80a0f8aa2360 Added for development only this is in pre-alpha state, do not use!
atmosfear
parents:
diff changeset
81
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
82 static uint32_t draw_frame_directbuffer(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
83 static void draw_osd_directbuffer(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
84 static void flip_page_directbuffer(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
85
4830
2c1dd0b15622 reworked :) should work on low bpp outputs
alex
parents: 4828
diff changeset
86 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
87 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
88 {
80a0f8aa2360 Added for development only this is in pre-alpha state, do not use!
atmosfear
parents:
diff changeset
89 ggi_mode mode =
80a0f8aa2360 Added for development only this is in pre-alpha state, do not use!
atmosfear
parents:
diff changeset
90 {
4828
0ae597cc28e6 totally reworked, working fine on fbdev too, applied Andres Beck's patches, quad-buffering support
alex
parents: 4737
diff changeset
91 GGI_FRAMES, /* frames */
4830
2c1dd0b15622 reworked :) should work on low bpp outputs
alex
parents: 4828
diff changeset
92 { width, height }, /* visible */
1132
80a0f8aa2360 Added for development only this is in pre-alpha state, do not use!
atmosfear
parents:
diff changeset
93 { GGI_AUTO, GGI_AUTO }, /* virt */
80a0f8aa2360 Added for development only this is in pre-alpha state, do not use!
atmosfear
parents:
diff changeset
94 { GGI_AUTO, GGI_AUTO }, /* size */
80a0f8aa2360 Added for development only this is in pre-alpha state, do not use!
atmosfear
parents:
diff changeset
95 GT_AUTO, /* graphtype */
80a0f8aa2360 Added for development only this is in pre-alpha state, do not use!
atmosfear
parents:
diff changeset
96 { 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
97 };
4830
2c1dd0b15622 reworked :) should work on low bpp outputs
alex
parents: 4828
diff changeset
98 int i;
2c1dd0b15622 reworked :) should work on low bpp outputs
alex
parents: 4828
diff changeset
99 ggi_directbuffer *DB;
1132
80a0f8aa2360 Added for development only this is in pre-alpha state, do not use!
atmosfear
parents:
diff changeset
100
4830
2c1dd0b15622 reworked :) should work on low bpp outputs
alex
parents: 4828
diff changeset
101 switch(format)
1132
80a0f8aa2360 Added for development only this is in pre-alpha state, do not use!
atmosfear
parents:
diff changeset
102 {
4830
2c1dd0b15622 reworked :) should work on low bpp outputs
alex
parents: 4828
diff changeset
103 case IMGFMT_RGB|8:
2c1dd0b15622 reworked :) should work on low bpp outputs
alex
parents: 4828
diff changeset
104 case IMGFMT_BGR|8:
1132
80a0f8aa2360 Added for development only this is in pre-alpha state, do not use!
atmosfear
parents:
diff changeset
105 mode.graphtype = GT_8BIT;
80a0f8aa2360 Added for development only this is in pre-alpha state, do not use!
atmosfear
parents:
diff changeset
106 break;
4830
2c1dd0b15622 reworked :) should work on low bpp outputs
alex
parents: 4828
diff changeset
107 case IMGFMT_RGB|15:
2c1dd0b15622 reworked :) should work on low bpp outputs
alex
parents: 4828
diff changeset
108 case IMGFMT_BGR|15:
1132
80a0f8aa2360 Added for development only this is in pre-alpha state, do not use!
atmosfear
parents:
diff changeset
109 mode.graphtype = GT_15BIT;
80a0f8aa2360 Added for development only this is in pre-alpha state, do not use!
atmosfear
parents:
diff changeset
110 break;
4830
2c1dd0b15622 reworked :) should work on low bpp outputs
alex
parents: 4828
diff changeset
111 case IMGFMT_RGB|16:
2c1dd0b15622 reworked :) should work on low bpp outputs
alex
parents: 4828
diff changeset
112 case IMGFMT_BGR|16:
1132
80a0f8aa2360 Added for development only this is in pre-alpha state, do not use!
atmosfear
parents:
diff changeset
113 mode.graphtype = GT_16BIT;
80a0f8aa2360 Added for development only this is in pre-alpha state, do not use!
atmosfear
parents:
diff changeset
114 break;
4830
2c1dd0b15622 reworked :) should work on low bpp outputs
alex
parents: 4828
diff changeset
115 case IMGFMT_RGB|24:
2c1dd0b15622 reworked :) should work on low bpp outputs
alex
parents: 4828
diff changeset
116 case IMGFMT_BGR|24:
1132
80a0f8aa2360 Added for development only this is in pre-alpha state, do not use!
atmosfear
parents:
diff changeset
117 mode.graphtype = GT_24BIT;
80a0f8aa2360 Added for development only this is in pre-alpha state, do not use!
atmosfear
parents:
diff changeset
118 break;
4830
2c1dd0b15622 reworked :) should work on low bpp outputs
alex
parents: 4828
diff changeset
119 case IMGFMT_RGB|32:
2c1dd0b15622 reworked :) should work on low bpp outputs
alex
parents: 4828
diff changeset
120 case IMGFMT_BGR|32:
1132
80a0f8aa2360 Added for development only this is in pre-alpha state, do not use!
atmosfear
parents:
diff changeset
121 mode.graphtype = GT_32BIT;
80a0f8aa2360 Added for development only this is in pre-alpha state, do not use!
atmosfear
parents:
diff changeset
122 break;
80a0f8aa2360 Added for development only this is in pre-alpha state, do not use!
atmosfear
parents:
diff changeset
123 }
4828
0ae597cc28e6 totally reworked, working fine on fbdev too, applied Andres Beck's patches, quad-buffering support
alex
parents: 4737
diff changeset
124
5703
efd2518b174e minor fixes and flipping support
alex
parents: 5637
diff changeset
125 #if 0
4830
2c1dd0b15622 reworked :) should work on low bpp outputs
alex
parents: 4828
diff changeset
126 printf("[ggi] mode: ");
2c1dd0b15622 reworked :) should work on low bpp outputs
alex
parents: 4828
diff changeset
127 ggiPrintMode(&mode);
2c1dd0b15622 reworked :) should work on low bpp outputs
alex
parents: 4828
diff changeset
128 printf("\n");
2c1dd0b15622 reworked :) should work on low bpp outputs
alex
parents: 4828
diff changeset
129 #endif
2c1dd0b15622 reworked :) should work on low bpp outputs
alex
parents: 4828
diff changeset
130
1172
290353337b44 hardly modified, keyboard handling is ok. aspect implemented, but bugging :)
al3x
parents: 1148
diff changeset
131 ggiCheckMode(ggi_conf.vis, &mode);
4830
2c1dd0b15622 reworked :) should work on low bpp outputs
alex
parents: 4828
diff changeset
132
2c1dd0b15622 reworked :) should work on low bpp outputs
alex
parents: 4828
diff changeset
133 if (ggiSetMode(ggi_conf.vis, &mode))
1132
80a0f8aa2360 Added for development only this is in pre-alpha state, do not use!
atmosfear
parents:
diff changeset
134 {
4828
0ae597cc28e6 totally reworked, working fine on fbdev too, applied Andres Beck's patches, quad-buffering support
alex
parents: 4737
diff changeset
135 mp_msg(MSGT_VO, MSGL_ERR, "[ggi] unable to set mode\n");
1132
80a0f8aa2360 Added for development only this is in pre-alpha state, do not use!
atmosfear
parents:
diff changeset
136 return(-1);
80a0f8aa2360 Added for development only this is in pre-alpha state, do not use!
atmosfear
parents:
diff changeset
137 }
4830
2c1dd0b15622 reworked :) should work on low bpp outputs
alex
parents: 4828
diff changeset
138
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
139 if (ggiGetMode(ggi_conf.vis, &mode))
1147
82bbd3ee8ce7 hacked osd working on yv12
al3x
parents: 1145
diff changeset
140 {
4828
0ae597cc28e6 totally reworked, working fine on fbdev too, applied Andres Beck's patches, quad-buffering support
alex
parents: 4737
diff changeset
141 mp_msg(MSGT_VO, MSGL_ERR, "[ggi] unable to get mode\n");
1147
82bbd3ee8ce7 hacked osd working on yv12
al3x
parents: 1145
diff changeset
142 return(-1);
82bbd3ee8ce7 hacked osd working on yv12
al3x
parents: 1145
diff changeset
143 }
4828
0ae597cc28e6 totally reworked, working fine on fbdev too, applied Andres Beck's patches, quad-buffering support
alex
parents: 4737
diff changeset
144
4841
5928e94c0d5f older API fixes, support for async mode
alex
parents: 4831
diff changeset
145 if ((mode.graphtype == GT_INVALID) || (mode.graphtype == GT_AUTO))
5928e94c0d5f older API fixes, support for async mode
alex
parents: 4831
diff changeset
146 {
5928e94c0d5f older API fixes, support for async mode
alex
parents: 4831
diff changeset
147 mp_msg(MSGT_VO, MSGL_ERR, "[ggi] not supported depth/bpp\n");
5928e94c0d5f older API fixes, support for async mode
alex
parents: 4831
diff changeset
148 return(-1);
5928e94c0d5f older API fixes, support for async mode
alex
parents: 4831
diff changeset
149 }
5928e94c0d5f older API fixes, support for async mode
alex
parents: 4831
diff changeset
150
4828
0ae597cc28e6 totally reworked, working fine on fbdev too, applied Andres Beck's patches, quad-buffering support
alex
parents: 4737
diff changeset
151 ggi_conf.gmode = mode;
1132
80a0f8aa2360 Added for development only this is in pre-alpha state, do not use!
atmosfear
parents:
diff changeset
152
5703
efd2518b174e minor fixes and flipping support
alex
parents: 5637
diff changeset
153 #if 0
4828
0ae597cc28e6 totally reworked, working fine on fbdev too, applied Andres Beck's patches, quad-buffering support
alex
parents: 4737
diff changeset
154 printf("[ggi] mode: ");
4830
2c1dd0b15622 reworked :) should work on low bpp outputs
alex
parents: 4828
diff changeset
155 ggiPrintMode(&mode);
4828
0ae597cc28e6 totally reworked, working fine on fbdev too, applied Andres Beck's patches, quad-buffering support
alex
parents: 4737
diff changeset
156 printf("\n");
0ae597cc28e6 totally reworked, working fine on fbdev too, applied Andres Beck's patches, quad-buffering support
alex
parents: 4737
diff changeset
157 #endif
0ae597cc28e6 totally reworked, working fine on fbdev too, applied Andres Beck's patches, quad-buffering support
alex
parents: 4737
diff changeset
158
4830
2c1dd0b15622 reworked :) should work on low bpp outputs
alex
parents: 4828
diff changeset
159 vo_depthonscreen = GT_DEPTH(mode.graphtype);
2c1dd0b15622 reworked :) should work on low bpp outputs
alex
parents: 4828
diff changeset
160 vo_screenwidth = mode.visible.x;
2c1dd0b15622 reworked :) should work on low bpp outputs
alex
parents: 4828
diff changeset
161 vo_screenheight = mode.visible.y;
2c1dd0b15622 reworked :) should work on low bpp outputs
alex
parents: 4828
diff changeset
162
2c1dd0b15622 reworked :) should work on low bpp outputs
alex
parents: 4828
diff changeset
163 vo_dx = vo_dy = 0;
2c1dd0b15622 reworked :) should work on low bpp outputs
alex
parents: 4828
diff changeset
164 vo_dwidth = mode.virt.x;
2c1dd0b15622 reworked :) should work on low bpp outputs
alex
parents: 4828
diff changeset
165 vo_dheight = mode.virt.y;
4841
5928e94c0d5f older API fixes, support for async mode
alex
parents: 4831
diff changeset
166 vo_dbpp = GT_SIZE(mode.graphtype);
1132
80a0f8aa2360 Added for development only this is in pre-alpha state, do not use!
atmosfear
parents:
diff changeset
167
4828
0ae597cc28e6 totally reworked, working fine on fbdev too, applied Andres Beck's patches, quad-buffering support
alex
parents: 4737
diff changeset
168 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
169 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
170 ggi_conf.srcformat = format;
5703
efd2518b174e minor fixes and flipping support
alex
parents: 5637
diff changeset
171
efd2518b174e minor fixes and flipping support
alex
parents: 5637
diff changeset
172 ggi_conf.voflags = flags;
4830
2c1dd0b15622 reworked :) should work on low bpp outputs
alex
parents: 4828
diff changeset
173
4828
0ae597cc28e6 totally reworked, working fine on fbdev too, applied Andres Beck's patches, quad-buffering support
alex
parents: 4737
diff changeset
174 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
175 {
4828
0ae597cc28e6 totally reworked, working fine on fbdev too, applied Andres Beck's patches, quad-buffering support
alex
parents: 4737
diff changeset
176 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
177 }
4828
0ae597cc28e6 totally reworked, working fine on fbdev too, applied Andres Beck's patches, quad-buffering support
alex
parents: 4737
diff changeset
178 else
0ae597cc28e6 totally reworked, working fine on fbdev too, applied Andres Beck's patches, quad-buffering support
alex
parents: 4737
diff changeset
179 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
180 {
4828
0ae597cc28e6 totally reworked, working fine on fbdev too, applied Andres Beck's patches, quad-buffering support
alex
parents: 4737
diff changeset
181 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
182 }
0ae597cc28e6 totally reworked, working fine on fbdev too, applied Andres Beck's patches, quad-buffering support
alex
parents: 4737
diff changeset
183 else
0ae597cc28e6 totally reworked, working fine on fbdev too, applied Andres Beck's patches, quad-buffering support
alex
parents: 4737
diff changeset
184 {
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
185 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
186 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
187 return(-1);
1132
80a0f8aa2360 Added for development only this is in pre-alpha state, do not use!
atmosfear
parents:
diff changeset
188 }
1172
290353337b44 hardly modified, keyboard handling is ok. aspect implemented, but bugging :)
al3x
parents: 1148
diff changeset
189
4830
2c1dd0b15622 reworked :) should work on low bpp outputs
alex
parents: 4828
diff changeset
190 vo_dwidth = ggi_conf.dstwidth = ggi_conf.gmode.virt.x;
2c1dd0b15622 reworked :) should work on low bpp outputs
alex
parents: 4828
diff changeset
191 vo_dheight = ggi_conf.dstheight = ggi_conf.gmode.virt.y;
2c1dd0b15622 reworked :) should work on low bpp outputs
alex
parents: 4828
diff changeset
192
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
193 ggi_conf.directbuffer = 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
194
4831
9153d1275b6d do not fault if no directbuffer available (for example: ggi display-multi)
alex
parents: 4830
diff changeset
195 ggi_conf.frames = ggiDBGetNumBuffers(ggi_conf.vis);
9153d1275b6d do not fault if no directbuffer available (for example: ggi display-multi)
alex
parents: 4830
diff changeset
196 if (ggi_conf.frames > GGI_FRAMES)
9153d1275b6d do not fault if no directbuffer available (for example: ggi display-multi)
alex
parents: 4830
diff changeset
197 ggi_conf.frames = GGI_FRAMES;
9153d1275b6d do not fault if no directbuffer available (for example: ggi display-multi)
alex
parents: 4830
diff changeset
198
9153d1275b6d do not fault if no directbuffer available (for example: ggi display-multi)
alex
parents: 4830
diff changeset
199 ggi_conf.currframe = 0;
9153d1275b6d do not fault if no directbuffer available (for example: ggi display-multi)
alex
parents: 4830
diff changeset
200 if (!ggi_conf.frames)
9153d1275b6d do not fault if no directbuffer available (for example: ggi display-multi)
alex
parents: 4830
diff changeset
201 {
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
202 goto db_err;
4831
9153d1275b6d do not fault if no directbuffer available (for example: ggi display-multi)
alex
parents: 4830
diff changeset
203 }
9153d1275b6d do not fault if no directbuffer available (for example: ggi display-multi)
alex
parents: 4830
diff changeset
204
9153d1275b6d do not fault if no directbuffer available (for example: ggi display-multi)
alex
parents: 4830
diff changeset
205 for (i = 0; i < ggi_conf.frames; i++)
4830
2c1dd0b15622 reworked :) should work on low bpp outputs
alex
parents: 4828
diff changeset
206 ggi_conf.buffer[i] = NULL;
2c1dd0b15622 reworked :) should work on low bpp outputs
alex
parents: 4828
diff changeset
207
2c1dd0b15622 reworked :) should work on low bpp outputs
alex
parents: 4828
diff changeset
208 /* get available number of buffers */
4841
5928e94c0d5f older API fixes, support for async mode
alex
parents: 4831
diff changeset
209 for (i = 0; DB = (ggi_directbuffer *)ggiDBGetBuffer(ggi_conf.vis, i),
5928e94c0d5f older API fixes, support for async mode
alex
parents: 4831
diff changeset
210 i < ggi_conf.frames; i++)
1132
80a0f8aa2360 Added for development only this is in pre-alpha state, do not use!
atmosfear
parents:
diff changeset
211 {
4830
2c1dd0b15622 reworked :) should work on low bpp outputs
alex
parents: 4828
diff changeset
212 if (!(DB->type & GGI_DB_SIMPLE_PLB) ||
2c1dd0b15622 reworked :) should work on low bpp outputs
alex
parents: 4828
diff changeset
213 (DB->page_size != 0) ||
2c1dd0b15622 reworked :) should work on low bpp outputs
alex
parents: 4828
diff changeset
214 (DB->write == NULL) ||
2c1dd0b15622 reworked :) should work on low bpp outputs
alex
parents: 4828
diff changeset
215 (DB->noaccess != 0) ||
2c1dd0b15622 reworked :) should work on low bpp outputs
alex
parents: 4828
diff changeset
216 (DB->align != 0) ||
2c1dd0b15622 reworked :) should work on low bpp outputs
alex
parents: 4828
diff changeset
217 (DB->layout != blPixelLinearBuffer))
2c1dd0b15622 reworked :) should work on low bpp outputs
alex
parents: 4828
diff changeset
218 continue;
1172
290353337b44 hardly modified, keyboard handling is ok. aspect implemented, but bugging :)
al3x
parents: 1148
diff changeset
219
4830
2c1dd0b15622 reworked :) should work on low bpp outputs
alex
parents: 4828
diff changeset
220 ggi_conf.buffer[DB->frame] = DB;
1172
290353337b44 hardly modified, keyboard handling is ok. aspect implemented, but bugging :)
al3x
parents: 1148
diff changeset
221 }
1147
82bbd3ee8ce7 hacked osd working on yv12
al3x
parents: 1145
diff changeset
222
4828
0ae597cc28e6 totally reworked, working fine on fbdev too, applied Andres Beck's patches, quad-buffering support
alex
parents: 4737
diff changeset
223 if (ggi_conf.buffer[0] == NULL)
1132
80a0f8aa2360 Added for development only this is in pre-alpha state, do not use!
atmosfear
parents:
diff changeset
224 {
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
225 goto db_err;
1132
80a0f8aa2360 Added for development only this is in pre-alpha state, do not use!
atmosfear
parents:
diff changeset
226 }
1172
290353337b44 hardly modified, keyboard handling is ok. aspect implemented, but bugging :)
al3x
parents: 1148
diff changeset
227
4828
0ae597cc28e6 totally reworked, working fine on fbdev too, applied Andres Beck's patches, quad-buffering support
alex
parents: 4737
diff changeset
228 for (i = 0; i < ggi_conf.frames; i++)
1132
80a0f8aa2360 Added for development only this is in pre-alpha state, do not use!
atmosfear
parents:
diff changeset
229 {
4828
0ae597cc28e6 totally reworked, working fine on fbdev too, applied Andres Beck's patches, quad-buffering support
alex
parents: 4737
diff changeset
230 if (ggi_conf.buffer[i] == NULL)
0ae597cc28e6 totally reworked, working fine on fbdev too, applied Andres Beck's patches, quad-buffering support
alex
parents: 4737
diff changeset
231 {
4830
2c1dd0b15622 reworked :) should work on low bpp outputs
alex
parents: 4828
diff changeset
232 ggi_conf.frames = i-1;
2c1dd0b15622 reworked :) should work on low bpp outputs
alex
parents: 4828
diff changeset
233 break;
4828
0ae597cc28e6 totally reworked, working fine on fbdev too, applied Andres Beck's patches, quad-buffering support
alex
parents: 4737
diff changeset
234 }
0ae597cc28e6 totally reworked, working fine on fbdev too, applied Andres Beck's patches, quad-buffering support
alex
parents: 4737
diff changeset
235 }
0ae597cc28e6 totally reworked, working fine on fbdev too, applied Andres Beck's patches, quad-buffering support
alex
parents: 4737
diff changeset
236 ggiSetDisplayFrame(ggi_conf.vis, ggi_conf.currframe);
0ae597cc28e6 totally reworked, working fine on fbdev too, applied Andres Beck's patches, quad-buffering support
alex
parents: 4737
diff changeset
237 ggiSetWriteFrame(ggi_conf.vis, ggi_conf.currframe);
1132
80a0f8aa2360 Added for development only this is in pre-alpha state, do not use!
atmosfear
parents:
diff changeset
238
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
239 goto db_ok;
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
240
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
241 db_err:
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
242 mp_msg(MSGT_VO, MSGL_ERR, "[ggi] direct buffer unavailable, using async mode\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
243 ggi_conf.directbuffer = 0;
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
244 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
245
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
246 db_ok:
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
247 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
248 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
249
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
250 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
251 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
252
4830
2c1dd0b15622 reworked :) should work on low bpp outputs
alex
parents: 4828
diff changeset
253 mp_msg(MSGT_VO, MSGL_INFO, "[ggi] input: %dx%dx%d, output: %dx%dx%d, frames: %d\n",
2c1dd0b15622 reworked :) should work on low bpp outputs
alex
parents: 4828
diff changeset
254 ggi_conf.srcwidth, ggi_conf.srcheight, ggi_conf.srcdepth,
4841
5928e94c0d5f older API fixes, support for async mode
alex
parents: 4831
diff changeset
255 vo_dwidth, vo_dheight, vo_dbpp, ggi_conf.frames);
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
256 mp_msg(MSGT_VO, MSGL_INFO, "[ggi] directbuffer: %s, async mode: %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
257 ggi_conf.directbuffer ? "yes" : "no",
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
258 ggi_conf.async ? "yes" : "no");
4841
5928e94c0d5f older API fixes, support for async mode
alex
parents: 4831
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 if (ggi_conf.directbuffer)
4841
5928e94c0d5f older API fixes, support for async mode
alex
parents: 4831
diff changeset
261 {
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
262 video_out_ggi.draw_frame = draw_frame_directbuffer;
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 video_out_ggi.draw_osd = draw_osd_directbuffer;
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 video_out_ggi.flip_page = flip_page_directbuffer;
4841
5928e94c0d5f older API fixes, support for async mode
alex
parents: 4831
diff changeset
265 }
5703
efd2518b174e minor fixes and flipping support
alex
parents: 5637
diff changeset
266
efd2518b174e minor fixes and flipping support
alex
parents: 5637
diff changeset
267 ggi_conf.srcbpp = (ggi_conf.srcdepth+7)/8;
4830
2c1dd0b15622 reworked :) should work on low bpp outputs
alex
parents: 4828
diff changeset
268
1132
80a0f8aa2360 Added for development only this is in pre-alpha state, do not use!
atmosfear
parents:
diff changeset
269 return(0);
80a0f8aa2360 Added for development only this is in pre-alpha state, do not use!
atmosfear
parents:
diff changeset
270 }
80a0f8aa2360 Added for development only this is in pre-alpha state, do not use!
atmosfear
parents:
diff changeset
271
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 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
273 {
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
274 /* GGI DirectRendering supports (yet) only BGR/RGB modes */
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
275 if (!ggi_conf.directbuffer ||
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
276 #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
277 (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
278 (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
279 (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
280 (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
281 #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
282 (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
283 #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
284 ((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
285 (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
286 (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
287 (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
288 (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
289 )
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 return(VO_FALSE);
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
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 if (ggi_conf.frames > 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
293 {
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 mp_msg(MSGT_VO, MSGL_WARN, "[ggi] doublebuffering disabled due to directrendering\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
295 ggi_conf.currframe = 0;
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 ggi_conf.frames = 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
297 }
5703
efd2518b174e minor fixes and flipping support
alex
parents: 5637
diff changeset
298
efd2518b174e minor fixes and flipping support
alex
parents: 5637
diff changeset
299 mpi->planes[1] = mpi->planes[2] = NULL;
efd2518b174e minor fixes and flipping support
alex
parents: 5637
diff changeset
300 mpi->stride[1] = mpi->stride[2] = 0;
efd2518b174e minor fixes and flipping support
alex
parents: 5637
diff changeset
301
efd2518b174e minor fixes and flipping support
alex
parents: 5637
diff changeset
302 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
303 mpi->planes[0] = ggi_conf.buffer[ggi_conf.currframe]->write;
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 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
305
5703
efd2518b174e minor fixes and flipping support
alex
parents: 5637
diff changeset
306 #ifdef GGI_FLIP
efd2518b174e minor fixes and flipping support
alex
parents: 5637
diff changeset
307 if (ggi_conf.voflags & VOFLAG_FLIPPING)
efd2518b174e minor fixes and flipping support
alex
parents: 5637
diff changeset
308 {
efd2518b174e minor fixes and flipping support
alex
parents: 5637
diff changeset
309 mpi->stride[0] = -mpi->stride[0];
efd2518b174e minor fixes and flipping support
alex
parents: 5637
diff changeset
310 mpi->planes[0] -= mpi->stride[0]*(ggi_conf.srcheight-1);
efd2518b174e minor fixes and flipping support
alex
parents: 5637
diff changeset
311 }
efd2518b174e minor fixes and flipping support
alex
parents: 5637
diff changeset
312 #endif
efd2518b174e minor fixes and flipping support
alex
parents: 5637
diff changeset
313
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
314 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
315 }
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
316
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
317 static uint32_t draw_frame_directbuffer(uint8_t *src[])
1132
80a0f8aa2360 Added for development only this is in pre-alpha state, do not use!
atmosfear
parents:
diff changeset
318 {
5703
efd2518b174e minor fixes and flipping support
alex
parents: 5637
diff changeset
319 unsigned char *dst_ptr;
efd2518b174e minor fixes and flipping support
alex
parents: 5637
diff changeset
320 int dst_stride, dst_bpp;
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
321
4828
0ae597cc28e6 totally reworked, working fine on fbdev too, applied Andres Beck's patches, quad-buffering support
alex
parents: 4737
diff changeset
322 ggiResourceAcquire(ggi_conf.buffer[ggi_conf.currframe]->resource,
0ae597cc28e6 totally reworked, working fine on fbdev too, applied Andres Beck's patches, quad-buffering support
alex
parents: 4737
diff changeset
323 GGI_ACTYPE_WRITE);
1172
290353337b44 hardly modified, keyboard handling is ok. aspect implemented, but bugging :)
al3x
parents: 1148
diff changeset
324
4828
0ae597cc28e6 totally reworked, working fine on fbdev too, applied Andres Beck's patches, quad-buffering support
alex
parents: 4737
diff changeset
325 ggiSetWriteFrame(ggi_conf.vis, ggi_conf.currframe);
1141
c33f8b7488d1 cleaned up, and merged with my version, also code will be faster too
al3x
parents: 1132
diff changeset
326
5703
efd2518b174e minor fixes and flipping support
alex
parents: 5637
diff changeset
327 dst_ptr = ggi_conf.buffer[ggi_conf.currframe]->write;
efd2518b174e minor fixes and flipping support
alex
parents: 5637
diff changeset
328 dst_stride = ggi_conf.buffer[ggi_conf.currframe]->buffer.plb.stride;
efd2518b174e minor fixes and flipping support
alex
parents: 5637
diff changeset
329 dst_bpp = (ggi_conf.buffer[ggi_conf.currframe]->buffer.plb.pixelformat->size+7)/8;
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
5703
efd2518b174e minor fixes and flipping support
alex
parents: 5637
diff changeset
331 #ifdef GGI_FLIP
efd2518b174e minor fixes and flipping support
alex
parents: 5637
diff changeset
332 if (ggi_conf.voflags & VOFLAG_FLIPPING)
1172
290353337b44 hardly modified, keyboard handling is ok. aspect implemented, but bugging :)
al3x
parents: 1148
diff changeset
333 {
5703
efd2518b174e minor fixes and flipping support
alex
parents: 5637
diff changeset
334 dst_stride = -dst_stride;
efd2518b174e minor fixes and flipping support
alex
parents: 5637
diff changeset
335 dst_ptr -= dst_stride*(ggi_conf.srcheight-1);
1172
290353337b44 hardly modified, keyboard handling is ok. aspect implemented, but bugging :)
al3x
parents: 1148
diff changeset
336 }
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
337 #endif
1141
c33f8b7488d1 cleaned up, and merged with my version, also code will be faster too
al3x
parents: 1132
diff changeset
338
5703
efd2518b174e minor fixes and flipping support
alex
parents: 5637
diff changeset
339 /* memcpy_pic(dst, src, bytes per line, height, dst_stride, src_stride) */
efd2518b174e minor fixes and flipping support
alex
parents: 5637
diff changeset
340
efd2518b174e minor fixes and flipping support
alex
parents: 5637
diff changeset
341 memcpy_pic(dst_ptr, src[0], ggi_conf.srcwidth*dst_bpp, ggi_conf.srcheight,
efd2518b174e minor fixes and flipping support
alex
parents: 5637
diff changeset
342 dst_stride,
efd2518b174e minor fixes and flipping support
alex
parents: 5637
diff changeset
343 ggi_conf.srcwidth*ggi_conf.srcbpp);
efd2518b174e minor fixes and flipping support
alex
parents: 5637
diff changeset
344
4828
0ae597cc28e6 totally reworked, working fine on fbdev too, applied Andres Beck's patches, quad-buffering support
alex
parents: 4737
diff changeset
345 ggiResourceRelease(ggi_conf.buffer[ggi_conf.currframe]->resource);
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
346
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 return(0);
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 }
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
349
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
350
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
351 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
352 {
11110
54c7f0df68e9 non-directbuffer and slices support
alex
parents: 10368
diff changeset
353 ggiPutBox(ggi_conf.vis, 0, 0, ggi_conf.dstwidth, ggi_conf.dstheight, src[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
354 ggiFlush(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
355
1141
c33f8b7488d1 cleaned up, and merged with my version, also code will be faster too
al3x
parents: 1132
diff changeset
356 return(0);
c33f8b7488d1 cleaned up, and merged with my version, also code will be faster too
al3x
parents: 1132
diff changeset
357 }
1132
80a0f8aa2360 Added for development only this is in pre-alpha state, do not use!
atmosfear
parents:
diff changeset
358
1141
c33f8b7488d1 cleaned up, and merged with my version, also code will be faster too
al3x
parents: 1132
diff changeset
359 static void draw_alpha(int x0, int y0, int w, int h, unsigned char *src,
c33f8b7488d1 cleaned up, and merged with my version, also code will be faster too
al3x
parents: 1132
diff changeset
360 unsigned char *srca, int stride)
c33f8b7488d1 cleaned up, and merged with my version, also code will be faster too
al3x
parents: 1132
diff changeset
361 {
4841
5928e94c0d5f older API fixes, support for async mode
alex
parents: 4831
diff changeset
362 switch(vo_dbpp)
1141
c33f8b7488d1 cleaned up, and merged with my version, also code will be faster too
al3x
parents: 1132
diff changeset
363 {
4830
2c1dd0b15622 reworked :) should work on low bpp outputs
alex
parents: 4828
diff changeset
364 case 32:
2c1dd0b15622 reworked :) should work on low bpp outputs
alex
parents: 4828
diff changeset
365 vo_draw_alpha_rgb32(w, h, src, srca, stride,
2c1dd0b15622 reworked :) should work on low bpp outputs
alex
parents: 4828
diff changeset
366 ggi_conf.buffer[ggi_conf.currframe]->write+4*(ggi_conf.dstwidth*y0+x0), 4*ggi_conf.dstwidth);
2c1dd0b15622 reworked :) should work on low bpp outputs
alex
parents: 4828
diff changeset
367 break;
2c1dd0b15622 reworked :) should work on low bpp outputs
alex
parents: 4828
diff changeset
368 case 24:
2c1dd0b15622 reworked :) should work on low bpp outputs
alex
parents: 4828
diff changeset
369 vo_draw_alpha_rgb24(w, h, src, srca, stride,
2c1dd0b15622 reworked :) should work on low bpp outputs
alex
parents: 4828
diff changeset
370 ggi_conf.buffer[ggi_conf.currframe]->write+3*(ggi_conf.dstwidth*y0+x0), 3*ggi_conf.dstwidth);
2c1dd0b15622 reworked :) should work on low bpp outputs
alex
parents: 4828
diff changeset
371 break;
2c1dd0b15622 reworked :) should work on low bpp outputs
alex
parents: 4828
diff changeset
372 case 16:
2c1dd0b15622 reworked :) should work on low bpp outputs
alex
parents: 4828
diff changeset
373 vo_draw_alpha_rgb16(w, h, src, srca, stride,
2c1dd0b15622 reworked :) should work on low bpp outputs
alex
parents: 4828
diff changeset
374 ggi_conf.buffer[ggi_conf.currframe]->write+2*(ggi_conf.dstwidth*y0+x0), 2*ggi_conf.dstwidth);
2c1dd0b15622 reworked :) should work on low bpp outputs
alex
parents: 4828
diff changeset
375 break;
2c1dd0b15622 reworked :) should work on low bpp outputs
alex
parents: 4828
diff changeset
376 case 15:
2c1dd0b15622 reworked :) should work on low bpp outputs
alex
parents: 4828
diff changeset
377 vo_draw_alpha_rgb15(w, h, src, srca, stride,
2c1dd0b15622 reworked :) should work on low bpp outputs
alex
parents: 4828
diff changeset
378 ggi_conf.buffer[ggi_conf.currframe]->write+2*(ggi_conf.dstwidth*y0+x0), 2*ggi_conf.dstwidth);
2c1dd0b15622 reworked :) should work on low bpp outputs
alex
parents: 4828
diff changeset
379 break;
1141
c33f8b7488d1 cleaned up, and merged with my version, also code will be faster too
al3x
parents: 1132
diff changeset
380 }
1132
80a0f8aa2360 Added for development only this is in pre-alpha state, do not use!
atmosfear
parents:
diff changeset
381 }
80a0f8aa2360 Added for development only this is in pre-alpha state, do not use!
atmosfear
parents:
diff changeset
382
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
383 static void draw_osd_directbuffer(void)
1132
80a0f8aa2360 Added for development only this is in pre-alpha state, do not use!
atmosfear
parents:
diff changeset
384 {
4828
0ae597cc28e6 totally reworked, working fine on fbdev too, applied Andres Beck's patches, quad-buffering support
alex
parents: 4737
diff changeset
385 vo_draw_text(ggi_conf.srcwidth, ggi_conf.srcheight, draw_alpha);
1501
d40f2b686846 changes according to -utf8 option, draw_osd() function added
atlka
parents: 1198
diff changeset
386 }
d40f2b686846 changes according to -utf8 option, draw_osd() function added
atlka
parents: 1198
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 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
389 {
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
390 }
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
391
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
392 static void flip_page_directbuffer(void)
1501
d40f2b686846 changes according to -utf8 option, draw_osd() function added
atlka
parents: 1198
diff changeset
393 {
4828
0ae597cc28e6 totally reworked, working fine on fbdev too, applied Andres Beck's patches, quad-buffering support
alex
parents: 4737
diff changeset
394 ggiSetDisplayFrame(ggi_conf.vis, ggi_conf.currframe);
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
395 mp_dbg(MSGT_VO, MSGL_DBG2, "[ggi] flipping, current write frame: %d, display frame: %d\n",
4828
0ae597cc28e6 totally reworked, working fine on fbdev too, applied Andres Beck's patches, quad-buffering support
alex
parents: 4737
diff changeset
396 ggiGetWriteFrame(ggi_conf.vis), ggiGetDisplayFrame(ggi_conf.vis));
0ae597cc28e6 totally reworked, working fine on fbdev too, applied Andres Beck's patches, quad-buffering support
alex
parents: 4737
diff changeset
397
0ae597cc28e6 totally reworked, working fine on fbdev too, applied Andres Beck's patches, quad-buffering support
alex
parents: 4737
diff changeset
398 ggi_conf.currframe = (ggi_conf.currframe+1) % ggi_conf.frames;
4841
5928e94c0d5f older API fixes, support for async mode
alex
parents: 4831
diff changeset
399
5928e94c0d5f older API fixes, support for async mode
alex
parents: 4831
diff changeset
400 if (ggi_conf.async)
5928e94c0d5f older API fixes, support for async mode
alex
parents: 4831
diff changeset
401 ggiFlush(ggi_conf.vis);
1132
80a0f8aa2360 Added for development only this is in pre-alpha state, do not use!
atmosfear
parents:
diff changeset
402 }
80a0f8aa2360 Added for development only this is in pre-alpha state, do not use!
atmosfear
parents:
diff changeset
403
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
404 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
405 {
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
406 ggiFlush(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
407 }
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
408
1132
80a0f8aa2360 Added for development only this is in pre-alpha state, do not use!
atmosfear
parents:
diff changeset
409 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
410 int x, int y)
80a0f8aa2360 Added for development only this is in pre-alpha state, do not use!
atmosfear
parents:
diff changeset
411 {
11110
54c7f0df68e9 non-directbuffer and slices support
alex
parents: 10368
diff changeset
412 ggiPutHLine(ggi_conf.vis, x, y, w, src[0]);
54c7f0df68e9 non-directbuffer and slices support
alex
parents: 10368
diff changeset
413 return(1);
1132
80a0f8aa2360 Added for development only this is in pre-alpha state, do not use!
atmosfear
parents:
diff changeset
414 }
80a0f8aa2360 Added for development only this is in pre-alpha state, do not use!
atmosfear
parents:
diff changeset
415
80a0f8aa2360 Added for development only this is in pre-alpha state, do not use!
atmosfear
parents:
diff changeset
416 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
417 {
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
418 ggi_mode mode;
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
419
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
420 if ((!vo_depthonscreen || !vo_dbpp) && 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
421 {
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
422 if (ggiGetMode(ggi_conf.vis, &mode) == 0)
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
423 {
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
424 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
425 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
426 }
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
427 }
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
428
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
429 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
430 (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
431 {
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
432 if (ggi_conf.directbuffer)
5703
efd2518b174e minor fixes and flipping support
alex
parents: 5637
diff changeset
433 #ifdef GGI_FLIP
6211
a59795bd14d0 revised query_format
alex
parents: 5703
diff changeset
434 return(VFCAP_CSP_SUPPORTED|VFCAP_CSP_SUPPORTED_BY_HW|
a59795bd14d0 revised query_format
alex
parents: 5703
diff changeset
435 VFCAP_OSD|VFCAP_FLIP);
5703
efd2518b174e minor fixes and flipping support
alex
parents: 5637
diff changeset
436 #else
6211
a59795bd14d0 revised query_format
alex
parents: 5703
diff changeset
437 return(VFCAP_CSP_SUPPORTED|VFCAP_CSP_SUPPORTED_BY_HW|VFCAP_OSD);
5703
efd2518b174e minor fixes and flipping support
alex
parents: 5637
diff changeset
438 #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
439 else
6211
a59795bd14d0 revised query_format
alex
parents: 5703
diff changeset
440 return(VFCAP_CSP_SUPPORTED|VFCAP_CSP_SUPPORTED_BY_HW);
1132
80a0f8aa2360 Added for development only this is in pre-alpha state, do not use!
atmosfear
parents:
diff changeset
441 }
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
442
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
443 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
444 {
11110
54c7f0df68e9 non-directbuffer and slices support
alex
parents: 10368
diff changeset
445 switch(format)
54c7f0df68e9 non-directbuffer and slices support
alex
parents: 10368
diff changeset
446 {
54c7f0df68e9 non-directbuffer and slices support
alex
parents: 10368
diff changeset
447 case IMGFMT_RGB|8:
54c7f0df68e9 non-directbuffer and slices support
alex
parents: 10368
diff changeset
448 case IMGFMT_BGR|8:
54c7f0df68e9 non-directbuffer and slices support
alex
parents: 10368
diff changeset
449 mode.graphtype = GT_8BIT;
54c7f0df68e9 non-directbuffer and slices support
alex
parents: 10368
diff changeset
450 break;
54c7f0df68e9 non-directbuffer and slices support
alex
parents: 10368
diff changeset
451 case IMGFMT_RGB|15:
54c7f0df68e9 non-directbuffer and slices support
alex
parents: 10368
diff changeset
452 case IMGFMT_BGR|15:
54c7f0df68e9 non-directbuffer and slices support
alex
parents: 10368
diff changeset
453 mode.graphtype = GT_15BIT;
54c7f0df68e9 non-directbuffer and slices support
alex
parents: 10368
diff changeset
454 break;
54c7f0df68e9 non-directbuffer and slices support
alex
parents: 10368
diff changeset
455 case IMGFMT_RGB|16:
54c7f0df68e9 non-directbuffer and slices support
alex
parents: 10368
diff changeset
456 case IMGFMT_BGR|16:
54c7f0df68e9 non-directbuffer and slices support
alex
parents: 10368
diff changeset
457 mode.graphtype = GT_16BIT;
54c7f0df68e9 non-directbuffer and slices support
alex
parents: 10368
diff changeset
458 break;
54c7f0df68e9 non-directbuffer and slices support
alex
parents: 10368
diff changeset
459 case IMGFMT_RGB|24:
54c7f0df68e9 non-directbuffer and slices support
alex
parents: 10368
diff changeset
460 case IMGFMT_BGR|24:
54c7f0df68e9 non-directbuffer and slices support
alex
parents: 10368
diff changeset
461 mode.graphtype = GT_24BIT;
54c7f0df68e9 non-directbuffer and slices support
alex
parents: 10368
diff changeset
462 break;
54c7f0df68e9 non-directbuffer and slices support
alex
parents: 10368
diff changeset
463 case IMGFMT_RGB|32:
54c7f0df68e9 non-directbuffer and slices support
alex
parents: 10368
diff changeset
464 case IMGFMT_BGR|32:
54c7f0df68e9 non-directbuffer and slices support
alex
parents: 10368
diff changeset
465 mode.graphtype = GT_32BIT;
54c7f0df68e9 non-directbuffer and slices support
alex
parents: 10368
diff changeset
466 break;
54c7f0df68e9 non-directbuffer and slices support
alex
parents: 10368
diff changeset
467 }
54c7f0df68e9 non-directbuffer and slices support
alex
parents: 10368
diff changeset
468 if (ggiCheckMode(ggi_conf.vis, &mode))
54c7f0df68e9 non-directbuffer and slices support
alex
parents: 10368
diff changeset
469 {
54c7f0df68e9 non-directbuffer and slices support
alex
parents: 10368
diff changeset
470 return 0;
54c7f0df68e9 non-directbuffer and slices support
alex
parents: 10368
diff changeset
471 }
54c7f0df68e9 non-directbuffer and slices support
alex
parents: 10368
diff changeset
472 else
54c7f0df68e9 non-directbuffer and slices support
alex
parents: 10368
diff changeset
473 {
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
474 if (ggi_conf.directbuffer)
5703
efd2518b174e minor fixes and flipping support
alex
parents: 5637
diff changeset
475 #ifdef GGI_FLIP
6211
a59795bd14d0 revised query_format
alex
parents: 5703
diff changeset
476 return(VFCAP_CSP_SUPPORTED|VFCAP_OSD|VFCAP_FLIP);
5703
efd2518b174e minor fixes and flipping support
alex
parents: 5637
diff changeset
477 #else
6211
a59795bd14d0 revised query_format
alex
parents: 5703
diff changeset
478 return(VFCAP_CSP_SUPPORTED|VFCAP_OSD);
5703
efd2518b174e minor fixes and flipping support
alex
parents: 5637
diff changeset
479 #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
480 else
6211
a59795bd14d0 revised query_format
alex
parents: 5703
diff changeset
481 return(VFCAP_CSP_SUPPORTED);
11110
54c7f0df68e9 non-directbuffer and slices support
alex
parents: 10368
diff changeset
482 }
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
483 }
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
484
1141
c33f8b7488d1 cleaned up, and merged with my version, also code will be faster too
al3x
parents: 1132
diff changeset
485 return(0);
1132
80a0f8aa2360 Added for development only this is in pre-alpha state, do not use!
atmosfear
parents:
diff changeset
486 }
80a0f8aa2360 Added for development only this is in pre-alpha state, do not use!
atmosfear
parents:
diff changeset
487
4828
0ae597cc28e6 totally reworked, working fine on fbdev too, applied Andres Beck's patches, quad-buffering support
alex
parents: 4737
diff changeset
488 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
489 {
0ae597cc28e6 totally reworked, working fine on fbdev too, applied Andres Beck's patches, quad-buffering support
alex
parents: 4737
diff changeset
490 if (ggiInit() != 0)
0ae597cc28e6 totally reworked, working fine on fbdev too, applied Andres Beck's patches, quad-buffering support
alex
parents: 4737
diff changeset
491 {
0ae597cc28e6 totally reworked, working fine on fbdev too, applied Andres Beck's patches, quad-buffering support
alex
parents: 4737
diff changeset
492 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
493 return(-1);
0ae597cc28e6 totally reworked, working fine on fbdev too, applied Andres Beck's patches, quad-buffering support
alex
parents: 4737
diff changeset
494 }
0ae597cc28e6 totally reworked, working fine on fbdev too, applied Andres Beck's patches, quad-buffering support
alex
parents: 4737
diff changeset
495
4841
5928e94c0d5f older API fixes, support for async mode
alex
parents: 4831
diff changeset
496 if ((char *)arg)
5928e94c0d5f older API fixes, support for async mode
alex
parents: 4831
diff changeset
497 ggi_conf.driver = strdup(arg);
4828
0ae597cc28e6 totally reworked, working fine on fbdev too, applied Andres Beck's patches, quad-buffering support
alex
parents: 4737
diff changeset
498 else
0ae597cc28e6 totally reworked, working fine on fbdev too, applied Andres Beck's patches, quad-buffering support
alex
parents: 4737
diff changeset
499 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
500
0ae597cc28e6 totally reworked, working fine on fbdev too, applied Andres Beck's patches, quad-buffering support
alex
parents: 4737
diff changeset
501 if ((ggi_conf.vis = ggiOpen(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
502 {
0ae597cc28e6 totally reworked, working fine on fbdev too, applied Andres Beck's patches, quad-buffering support
alex
parents: 4737
diff changeset
503 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
504 (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
505 ggiExit();
0ae597cc28e6 totally reworked, working fine on fbdev too, applied Andres Beck's patches, quad-buffering support
alex
parents: 4737
diff changeset
506 return(-1);
0ae597cc28e6 totally reworked, working fine on fbdev too, applied Andres Beck's patches, quad-buffering support
alex
parents: 4737
diff changeset
507 }
0ae597cc28e6 totally reworked, working fine on fbdev too, applied Andres Beck's patches, quad-buffering support
alex
parents: 4737
diff changeset
508
0ae597cc28e6 totally reworked, working fine on fbdev too, applied Andres Beck's patches, quad-buffering support
alex
parents: 4737
diff changeset
509 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
510 (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
511
0ae597cc28e6 totally reworked, working fine on fbdev too, applied Andres Beck's patches, quad-buffering support
alex
parents: 4737
diff changeset
512 return 0;
0ae597cc28e6 totally reworked, working fine on fbdev too, applied Andres Beck's patches, quad-buffering support
alex
parents: 4737
diff changeset
513 }
0ae597cc28e6 totally reworked, working fine on fbdev too, applied Andres Beck's patches, quad-buffering support
alex
parents: 4737
diff changeset
514
1132
80a0f8aa2360 Added for development only this is in pre-alpha state, do not use!
atmosfear
parents:
diff changeset
515 static void uninit(void)
80a0f8aa2360 Added for development only this is in pre-alpha state, do not use!
atmosfear
parents:
diff changeset
516 {
4841
5928e94c0d5f older API fixes, support for async mode
alex
parents: 4831
diff changeset
517 if (ggi_conf.driver)
5928e94c0d5f older API fixes, support for async mode
alex
parents: 4831
diff changeset
518 free(ggi_conf.driver);
1172
290353337b44 hardly modified, keyboard handling is ok. aspect implemented, but bugging :)
al3x
parents: 1148
diff changeset
519 ggiClose(ggi_conf.vis);
1132
80a0f8aa2360 Added for development only this is in pre-alpha state, do not use!
atmosfear
parents:
diff changeset
520 ggiExit();
80a0f8aa2360 Added for development only this is in pre-alpha state, do not use!
atmosfear
parents:
diff changeset
521 }
80a0f8aa2360 Added for development only this is in pre-alpha state, do not use!
atmosfear
parents:
diff changeset
522
4828
0ae597cc28e6 totally reworked, working fine on fbdev too, applied Andres Beck's patches, quad-buffering support
alex
parents: 4737
diff changeset
523 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
524 {
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
525 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
526 {
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
527 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
528 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
529 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
530 return get_image(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
531 }
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
532 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
533 }
0ae597cc28e6 totally reworked, working fine on fbdev too, applied Andres Beck's patches, quad-buffering support
alex
parents: 4737
diff changeset
534
4841
5928e94c0d5f older API fixes, support for async mode
alex
parents: 4831
diff changeset
535 /* EVENT handling */
9380
edfe34c5405d linux->osdep
arpi
parents: 8148
diff changeset
536 #include "../osdep/keycodes.h"
1172
290353337b44 hardly modified, keyboard handling is ok. aspect implemented, but bugging :)
al3x
parents: 1148
diff changeset
537 extern void mplayer_put_key(int code);
290353337b44 hardly modified, keyboard handling is ok. aspect implemented, but bugging :)
al3x
parents: 1148
diff changeset
538
1132
80a0f8aa2360 Added for development only this is in pre-alpha state, do not use!
atmosfear
parents:
diff changeset
539 static void check_events(void)
80a0f8aa2360 Added for development only this is in pre-alpha state, do not use!
atmosfear
parents:
diff changeset
540 {
1143
a9d985d6aa91 key controlling implemented
al3x
parents: 1141
diff changeset
541 struct timeval tv = {0, 0};
a9d985d6aa91 key controlling implemented
al3x
parents: 1141
diff changeset
542 ggi_event event;
a9d985d6aa91 key controlling implemented
al3x
parents: 1141
diff changeset
543 ggi_event_mask mask;
a9d985d6aa91 key controlling implemented
al3x
parents: 1141
diff changeset
544
1172
290353337b44 hardly modified, keyboard handling is ok. aspect implemented, but bugging :)
al3x
parents: 1148
diff changeset
545 if ((mask = ggiEventPoll(ggi_conf.vis, emAll, &tv)))
290353337b44 hardly modified, keyboard handling is ok. aspect implemented, but bugging :)
al3x
parents: 1148
diff changeset
546 if (ggiEventRead(ggi_conf.vis, &event, emAll) != 0)
1143
a9d985d6aa91 key controlling implemented
al3x
parents: 1141
diff changeset
547 {
4828
0ae597cc28e6 totally reworked, working fine on fbdev too, applied Andres Beck's patches, quad-buffering support
alex
parents: 4737
diff changeset
548 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
549 event.any.origin, event.any.type, event.key.sym, event.key.label, event.key.button);
1143
a9d985d6aa91 key controlling implemented
al3x
parents: 1141
diff changeset
550
1172
290353337b44 hardly modified, keyboard handling is ok. aspect implemented, but bugging :)
al3x
parents: 1148
diff changeset
551 if (event.key.type == evKeyPress)
1143
a9d985d6aa91 key controlling implemented
al3x
parents: 1141
diff changeset
552 {
1172
290353337b44 hardly modified, keyboard handling is ok. aspect implemented, but bugging :)
al3x
parents: 1148
diff changeset
553 switch(event.key.sym)
1143
a9d985d6aa91 key controlling implemented
al3x
parents: 1141
diff changeset
554 {
a9d985d6aa91 key controlling implemented
al3x
parents: 1141
diff changeset
555 case GIIK_PAsterisk: /* PStar */
a9d985d6aa91 key controlling implemented
al3x
parents: 1141
diff changeset
556 case GIIUC_Asterisk:
a9d985d6aa91 key controlling implemented
al3x
parents: 1141
diff changeset
557 mplayer_put_key('*');
a9d985d6aa91 key controlling implemented
al3x
parents: 1141
diff changeset
558 break;
a9d985d6aa91 key controlling implemented
al3x
parents: 1141
diff changeset
559 case GIIK_PSlash:
a9d985d6aa91 key controlling implemented
al3x
parents: 1141
diff changeset
560 case GIIUC_Slash:
a9d985d6aa91 key controlling implemented
al3x
parents: 1141
diff changeset
561 mplayer_put_key('/');
a9d985d6aa91 key controlling implemented
al3x
parents: 1141
diff changeset
562 break;
a9d985d6aa91 key controlling implemented
al3x
parents: 1141
diff changeset
563 case GIIK_PPlus:
a9d985d6aa91 key controlling implemented
al3x
parents: 1141
diff changeset
564 case GIIUC_Plus:
a9d985d6aa91 key controlling implemented
al3x
parents: 1141
diff changeset
565 mplayer_put_key('+');
a9d985d6aa91 key controlling implemented
al3x
parents: 1141
diff changeset
566 break;
a9d985d6aa91 key controlling implemented
al3x
parents: 1141
diff changeset
567 case GIIK_PMinus:
a9d985d6aa91 key controlling implemented
al3x
parents: 1141
diff changeset
568 case GIIUC_Minus:
a9d985d6aa91 key controlling implemented
al3x
parents: 1141
diff changeset
569 mplayer_put_key('-');
a9d985d6aa91 key controlling implemented
al3x
parents: 1141
diff changeset
570 break;
a9d985d6aa91 key controlling implemented
al3x
parents: 1141
diff changeset
571 case GIIUC_o:
a9d985d6aa91 key controlling implemented
al3x
parents: 1141
diff changeset
572 case GIIUC_O:
a9d985d6aa91 key controlling implemented
al3x
parents: 1141
diff changeset
573 mplayer_put_key('o');
a9d985d6aa91 key controlling implemented
al3x
parents: 1141
diff changeset
574 break;
a9d985d6aa91 key controlling implemented
al3x
parents: 1141
diff changeset
575 case GIIUC_g:
a9d985d6aa91 key controlling implemented
al3x
parents: 1141
diff changeset
576 case GIIUC_G:
a9d985d6aa91 key controlling implemented
al3x
parents: 1141
diff changeset
577 mplayer_put_key('g');
a9d985d6aa91 key controlling implemented
al3x
parents: 1141
diff changeset
578 break;
a9d985d6aa91 key controlling implemented
al3x
parents: 1141
diff changeset
579 case GIIUC_z:
a9d985d6aa91 key controlling implemented
al3x
parents: 1141
diff changeset
580 case GIIUC_Z:
a9d985d6aa91 key controlling implemented
al3x
parents: 1141
diff changeset
581 mplayer_put_key('z');
a9d985d6aa91 key controlling implemented
al3x
parents: 1141
diff changeset
582 break;
a9d985d6aa91 key controlling implemented
al3x
parents: 1141
diff changeset
583 case GIIUC_x:
a9d985d6aa91 key controlling implemented
al3x
parents: 1141
diff changeset
584 case GIIUC_X:
a9d985d6aa91 key controlling implemented
al3x
parents: 1141
diff changeset
585 mplayer_put_key('x');
a9d985d6aa91 key controlling implemented
al3x
parents: 1141
diff changeset
586 break;
a9d985d6aa91 key controlling implemented
al3x
parents: 1141
diff changeset
587 case GIIUC_m:
a9d985d6aa91 key controlling implemented
al3x
parents: 1141
diff changeset
588 case GIIUC_M:
a9d985d6aa91 key controlling implemented
al3x
parents: 1141
diff changeset
589 mplayer_put_key('m');
a9d985d6aa91 key controlling implemented
al3x
parents: 1141
diff changeset
590 break;
a9d985d6aa91 key controlling implemented
al3x
parents: 1141
diff changeset
591 case GIIUC_d:
a9d985d6aa91 key controlling implemented
al3x
parents: 1141
diff changeset
592 case GIIUC_D:
a9d985d6aa91 key controlling implemented
al3x
parents: 1141
diff changeset
593 mplayer_put_key('d');
a9d985d6aa91 key controlling implemented
al3x
parents: 1141
diff changeset
594 break;
a9d985d6aa91 key controlling implemented
al3x
parents: 1141
diff changeset
595 case GIIUC_q:
a9d985d6aa91 key controlling implemented
al3x
parents: 1141
diff changeset
596 case GIIUC_Q:
a9d985d6aa91 key controlling implemented
al3x
parents: 1141
diff changeset
597 mplayer_put_key('q');
a9d985d6aa91 key controlling implemented
al3x
parents: 1141
diff changeset
598 break;
4828
0ae597cc28e6 totally reworked, working fine on fbdev too, applied Andres Beck's patches, quad-buffering support
alex
parents: 4737
diff changeset
599 case GIIUC_h:
0ae597cc28e6 totally reworked, working fine on fbdev too, applied Andres Beck's patches, quad-buffering support
alex
parents: 4737
diff changeset
600 case GIIUC_H:
0ae597cc28e6 totally reworked, working fine on fbdev too, applied Andres Beck's patches, quad-buffering support
alex
parents: 4737
diff changeset
601 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
602 break;
0ae597cc28e6 totally reworked, working fine on fbdev too, applied Andres Beck's patches, quad-buffering support
alex
parents: 4737
diff changeset
603 case GIIUC_l:
0ae597cc28e6 totally reworked, working fine on fbdev too, applied Andres Beck's patches, quad-buffering support
alex
parents: 4737
diff changeset
604 case GIIUC_L:
0ae597cc28e6 totally reworked, working fine on fbdev too, applied Andres Beck's patches, quad-buffering support
alex
parents: 4737
diff changeset
605 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
606 break;
1143
a9d985d6aa91 key controlling implemented
al3x
parents: 1141
diff changeset
607 case GIIUC_Space:
a9d985d6aa91 key controlling implemented
al3x
parents: 1141
diff changeset
608 case GIIUC_p:
a9d985d6aa91 key controlling implemented
al3x
parents: 1141
diff changeset
609 case GIIUC_P:
a9d985d6aa91 key controlling implemented
al3x
parents: 1141
diff changeset
610 mplayer_put_key('p');
a9d985d6aa91 key controlling implemented
al3x
parents: 1141
diff changeset
611 break;
a9d985d6aa91 key controlling implemented
al3x
parents: 1141
diff changeset
612 case GIIK_Up:
a9d985d6aa91 key controlling implemented
al3x
parents: 1141
diff changeset
613 mplayer_put_key(KEY_UP);
a9d985d6aa91 key controlling implemented
al3x
parents: 1141
diff changeset
614 break;
a9d985d6aa91 key controlling implemented
al3x
parents: 1141
diff changeset
615 case GIIK_Down:
a9d985d6aa91 key controlling implemented
al3x
parents: 1141
diff changeset
616 mplayer_put_key(KEY_DOWN);
a9d985d6aa91 key controlling implemented
al3x
parents: 1141
diff changeset
617 break;
a9d985d6aa91 key controlling implemented
al3x
parents: 1141
diff changeset
618 case GIIK_Left:
a9d985d6aa91 key controlling implemented
al3x
parents: 1141
diff changeset
619 mplayer_put_key(KEY_LEFT);
a9d985d6aa91 key controlling implemented
al3x
parents: 1141
diff changeset
620 break;
a9d985d6aa91 key controlling implemented
al3x
parents: 1141
diff changeset
621 case GIIK_Right:
a9d985d6aa91 key controlling implemented
al3x
parents: 1141
diff changeset
622 mplayer_put_key(KEY_RIGHT);
a9d985d6aa91 key controlling implemented
al3x
parents: 1141
diff changeset
623 break;
a9d985d6aa91 key controlling implemented
al3x
parents: 1141
diff changeset
624 case GIIK_PageUp:
a9d985d6aa91 key controlling implemented
al3x
parents: 1141
diff changeset
625 mplayer_put_key(KEY_PAGE_UP);
a9d985d6aa91 key controlling implemented
al3x
parents: 1141
diff changeset
626 break;
a9d985d6aa91 key controlling implemented
al3x
parents: 1141
diff changeset
627 case GIIK_PageDown:
a9d985d6aa91 key controlling implemented
al3x
parents: 1141
diff changeset
628 mplayer_put_key(KEY_PAGE_DOWN);
a9d985d6aa91 key controlling implemented
al3x
parents: 1141
diff changeset
629 break;
a9d985d6aa91 key controlling implemented
al3x
parents: 1141
diff changeset
630 default:
a9d985d6aa91 key controlling implemented
al3x
parents: 1141
diff changeset
631 break;
a9d985d6aa91 key controlling implemented
al3x
parents: 1141
diff changeset
632 }
a9d985d6aa91 key controlling implemented
al3x
parents: 1141
diff changeset
633 }
a9d985d6aa91 key controlling implemented
al3x
parents: 1141
diff changeset
634 }
a9d985d6aa91 key controlling implemented
al3x
parents: 1141
diff changeset
635 return;
1132
80a0f8aa2360 Added for development only this is in pre-alpha state, do not use!
atmosfear
parents:
diff changeset
636 }