Mercurial > mplayer.hg
annotate libvo/mga_template.c @ 33298:f0733d37f56b
Fix bug with gfree() definition in Win32 GUI.
gfree (taking pointer of pointer) was erroneously defined
free (taking pointer). Get rid of gfree() by using suitable
free() statements.
Patch by Stephen Sheldon, sfsheldo gmail com.
author | ib |
---|---|
date | Fri, 06 May 2011 09:35:46 +0000 |
parents | c4891d10ddbb |
children | 899d817e56fc |
rev | line source |
---|---|
28446
7681eab10aea
Add standard license headers, unify header formatting.
diego
parents:
28232
diff
changeset
|
1 /* |
7681eab10aea
Add standard license headers, unify header formatting.
diego
parents:
28232
diff
changeset
|
2 * This file is part of MPlayer. |
7681eab10aea
Add standard license headers, unify header formatting.
diego
parents:
28232
diff
changeset
|
3 * |
7681eab10aea
Add standard license headers, unify header formatting.
diego
parents:
28232
diff
changeset
|
4 * MPlayer is free software; you can redistribute it and/or modify |
7681eab10aea
Add standard license headers, unify header formatting.
diego
parents:
28232
diff
changeset
|
5 * it under the terms of the GNU General Public License as published by |
7681eab10aea
Add standard license headers, unify header formatting.
diego
parents:
28232
diff
changeset
|
6 * the Free Software Foundation; either version 2 of the License, or |
7681eab10aea
Add standard license headers, unify header formatting.
diego
parents:
28232
diff
changeset
|
7 * (at your option) any later version. |
7681eab10aea
Add standard license headers, unify header formatting.
diego
parents:
28232
diff
changeset
|
8 * |
7681eab10aea
Add standard license headers, unify header formatting.
diego
parents:
28232
diff
changeset
|
9 * MPlayer is distributed in the hope that it will be useful, |
7681eab10aea
Add standard license headers, unify header formatting.
diego
parents:
28232
diff
changeset
|
10 * but WITHOUT ANY WARRANTY; without even the implied warranty of |
7681eab10aea
Add standard license headers, unify header formatting.
diego
parents:
28232
diff
changeset
|
11 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the |
7681eab10aea
Add standard license headers, unify header formatting.
diego
parents:
28232
diff
changeset
|
12 * GNU General Public License for more details. |
7681eab10aea
Add standard license headers, unify header formatting.
diego
parents:
28232
diff
changeset
|
13 * |
7681eab10aea
Add standard license headers, unify header formatting.
diego
parents:
28232
diff
changeset
|
14 * You should have received a copy of the GNU General Public License along |
7681eab10aea
Add standard license headers, unify header formatting.
diego
parents:
28232
diff
changeset
|
15 * with MPlayer; if not, write to the Free Software Foundation, Inc., |
7681eab10aea
Add standard license headers, unify header formatting.
diego
parents:
28232
diff
changeset
|
16 * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. |
7681eab10aea
Add standard license headers, unify header formatting.
diego
parents:
28232
diff
changeset
|
17 */ |
413 | 18 |
566 | 19 #include "fastmemcpy.h" |
13787
e047e70a9767
Handle "xxx.h" vs "../xxx.h" include paths in a consistent way.
diego
parents:
11865
diff
changeset
|
20 #include "cpudetect.h" |
18861 | 21 #include "libswscale/swscale.h" |
32833
c4891d10ddbb
Adjust #include paths after the merge of libavcore into libavutil in FFmpeg.
diego
parents:
32375
diff
changeset
|
22 #include "libavutil/imgutils.h" |
13787
e047e70a9767
Handle "xxx.h" vs "../xxx.h" include paths in a consistent way.
diego
parents:
11865
diff
changeset
|
23 #include "libmpcodecs/vf_scale.h" |
8017
a57aac3a927a
panscan support in -vo mga (actually moved common code to mga_common.c)
arpi
parents:
7777
diff
changeset
|
24 #include "mp_msg.h" |
18234
a107276371a8
Part 5 and final of otvos attila's oattila AT chello-hu mp_msg changes, with lots of corrections
reynaldo
parents:
16171
diff
changeset
|
25 #include "help_mp.h" |
1 | 26 |
27 // mga_vid drawing functions | |
8017
a57aac3a927a
panscan support in -vo mga (actually moved common code to mga_common.c)
arpi
parents:
7777
diff
changeset
|
28 static void set_window( void ); /* forward declaration to kill warnings */ |
6335
e9bd97d5c5cc
warning & newline fixes by Dominik Mierzejewski <dominik@rangers.eu.org>
arpi
parents:
6311
diff
changeset
|
29 #ifdef VO_XMGA |
8017
a57aac3a927a
panscan support in -vo mga (actually moved common code to mga_common.c)
arpi
parents:
7777
diff
changeset
|
30 static void mDrawColorKey( void ); /* forward declaration to kill warnings */ |
6335
e9bd97d5c5cc
warning & newline fixes by Dominik Mierzejewski <dominik@rangers.eu.org>
arpi
parents:
6311
diff
changeset
|
31 #endif |
1 | 32 |
56 | 33 static int mga_next_frame=0; |
34 | |
35 static mga_vid_config_t mga_vid_config; | |
36 static uint8_t *vid_data, *frames[4]; | |
5389
7296c4262457
quick hack to make vo_mga accept multiple calls to config
rfelker
parents:
5335
diff
changeset
|
37 static int f = -1; |
56 | 38 |
8123
9fc45fe0d444
*HUGE* set of compiler warning fixes, unused variables removal
arpi
parents:
8017
diff
changeset
|
39 static uint32_t drwX,drwY,drwWidth,drwHeight; |
32367
4a890f542e69
Switch (x)mga vo to new libvo API to reduce code duplication and improve
reimar
parents:
32196
diff
changeset
|
40 static uint32_t drwcX,drwcY; |
8017
a57aac3a927a
panscan support in -vo mga (actually moved common code to mga_common.c)
arpi
parents:
7777
diff
changeset
|
41 |
32196 | 42 static struct SwsContext *sws_ctx; |
43 | |
202 | 44 static void draw_alpha(int x0,int y0, int w,int h, unsigned char* src, unsigned char *srca, int stride){ |
32374 | 45 uint32_t bespitch = FFALIGN(mga_vid_config.src_width, 32); |
9994 | 46 x0+=mga_vid_config.src_width*(vo_panscan_x>>1)/(vo_dwidth+vo_panscan_x); |
466 | 47 switch(mga_vid_config.format){ |
48 case MGA_VID_FORMAT_YV12: | |
470 | 49 case MGA_VID_FORMAT_IYUV: |
50 case MGA_VID_FORMAT_I420: | |
326 | 51 vo_draw_alpha_yv12(w,h,src,srca,stride,vid_data+bespitch*y0+x0,bespitch); |
466 | 52 break; |
53 case MGA_VID_FORMAT_YUY2: | |
326 | 54 vo_draw_alpha_yuy2(w,h,src,srca,stride,vid_data+2*(bespitch*y0+x0),2*bespitch); |
466 | 55 break; |
56 case MGA_VID_FORMAT_UYVY: | |
57 vo_draw_alpha_yuy2(w,h,src,srca,stride,vid_data+2*(bespitch*y0+x0)+1,2*bespitch); | |
58 break; | |
59 } | |
1 | 60 } |
61 | |
7680 | 62 static void draw_osd(void) |
63 { | |
9994 | 64 // vo_draw_text(mga_vid_config.src_width,mga_vid_config.src_height,draw_alpha); |
65 vo_draw_text(mga_vid_config.src_width-mga_vid_config.src_width*vo_panscan_x/(vo_dwidth+vo_panscan_x),mga_vid_config.src_height,draw_alpha); | |
7680 | 66 } |
67 | |
68 | |
1 | 69 static void |
70 draw_slice_g200(uint8_t *image[], int stride[], int width,int height,int x,int y) | |
71 { | |
32374 | 72 uint32_t bespitch = FFALIGN(mga_vid_config.src_width, 32); |
32196 | 73 int dst_stride[4] = { bespitch, bespitch }; |
74 uint8_t *dst[4]; | |
1 | 75 |
32196 | 76 av_image_fill_pointers(dst, PIX_FMT_NV12, mga_vid_config.src_height, |
77 vid_data, dst_stride); | |
5405 | 78 |
32196 | 79 sws_scale(sws_ctx, image, stride, y, height, dst, dst_stride); |
1 | 80 } |
81 | |
82 static void | |
83 draw_slice_g400(uint8_t *image[], int stride[], int w,int h,int x,int y) | |
84 { | |
85 uint8_t *dest; | |
5317 | 86 uint8_t *dest2; |
1 | 87 uint32_t bespitch,bespitch2; |
88 | |
32374 | 89 bespitch = FFALIGN(mga_vid_config.src_width, 32); |
1 | 90 bespitch2 = bespitch/2; |
91 | |
92 dest = vid_data + bespitch * y + x; | |
4949 | 93 mem2agpcpy_pic(dest, image[0], w, h, bespitch, stride[0]); |
29263
0f1b5b68af32
whitespace cosmetics: Remove all trailing whitespace.
diego
parents:
29212
diff
changeset
|
94 |
1 | 95 w/=2;h/=2;x/=2;y/=2; |
5317 | 96 |
1 | 97 dest = vid_data + bespitch*mga_vid_config.src_height + bespitch2 * y + x; |
29263
0f1b5b68af32
whitespace cosmetics: Remove all trailing whitespace.
diego
parents:
29212
diff
changeset
|
98 dest2= dest + bespitch2*mga_vid_config.src_height / 2; |
1 | 99 |
5317 | 100 if(mga_vid_config.format==MGA_VID_FORMAT_YV12){ |
32375 | 101 // mga_vid's YV12 assumes Y,U,V order (instead of Y,V,U) :( |
5317 | 102 mem2agpcpy_pic(dest, image[1], w, h, bespitch2, stride[1]); |
103 mem2agpcpy_pic(dest2,image[2], w, h, bespitch2, stride[2]); | |
104 } else { | |
4949 | 105 mem2agpcpy_pic(dest, image[2], w, h, bespitch2, stride[2]); |
5317 | 106 mem2agpcpy_pic(dest2,image[1], w, h, bespitch2, stride[1]); |
107 } | |
1 | 108 |
109 } | |
110 | |
16171
fd51fd1ff231
Fix the return types of all (six) libvo API functions. Used to be uint32_t, but
ivo
parents:
15212
diff
changeset
|
111 static int |
1 | 112 draw_slice(uint8_t *src[], int stride[], int w,int h,int x,int y) |
113 { | |
4949 | 114 |
115 #if 0 | |
116 printf("vo: %p/%d %p/%d %p/%d %dx%d/%d;%d \n", | |
117 src[0],stride[0], | |
118 src[1],stride[1], | |
119 src[2],stride[2], | |
120 w,h,x,y); | |
121 #endif | |
122 | |
1 | 123 if (mga_vid_config.card_type == MGA_G200) |
124 draw_slice_g200(src,stride,w,h,x,y); | |
125 else | |
126 draw_slice_g400(src,stride,w,h,x,y); | |
127 return 0; | |
128 } | |
129 | |
130 static void | |
31 | 131 vo_mga_flip_page(void) |
1 | 132 { |
47 | 133 |
134 // printf("-- flip to %d --\n",mga_next_frame); | |
1 | 135 |
47 | 136 ioctl(f,MGA_VID_FSEL,&mga_next_frame); |
56 | 137 mga_next_frame=(mga_next_frame+1)%mga_vid_config.num_frames; |
47 | 138 vid_data=frames[mga_next_frame]; |
1 | 139 |
140 } | |
141 | |
16171
fd51fd1ff231
Fix the return types of all (six) libvo API functions. Used to be uint32_t, but
ivo
parents:
15212
diff
changeset
|
142 static int |
1 | 143 draw_frame(uint8_t *src[]) |
144 { | |
18234
a107276371a8
Part 5 and final of otvos attila's oattila AT chello-hu mp_msg changes, with lots of corrections
reynaldo
parents:
16171
diff
changeset
|
145 mp_msg(MSGT_VO,MSGL_WARN,"!!! mga::draw_frame() called !!!\n"); |
448
198b46b739d8
qrva eletbe nem kene cvs-t elbaszni inkabb ne nyuljatok hozza baz+
arpi_esp
parents:
413
diff
changeset
|
146 return 0; |
1 | 147 } |
148 | |
7681 | 149 static uint32_t get_image(mp_image_t *mpi){ |
32374 | 150 uint32_t bespitch = FFALIGN(mga_vid_config.src_width, 32); |
4971 | 151 uint32_t bespitch2 = bespitch/2; |
152 // printf("mga: get_image() called\n"); | |
4975 | 153 if(mpi->type==MP_IMGTYPE_STATIC && mga_vid_config.num_frames>1) return VO_FALSE; // it is not static |
4971 | 154 if(mpi->flags&MP_IMGFLAG_READABLE) return VO_FALSE; // slow video ram |
5335 | 155 if(mga_vid_config.card_type == MGA_G200 && mpi->flags&MP_IMGFLAG_PLANAR) return VO_FALSE; |
4971 | 156 // printf("width=%d vs. bespitch=%d, flags=0x%X \n",mpi->width,bespitch,mpi->flags); |
157 if((mpi->width==bespitch) || | |
158 (mpi->flags&(MP_IMGFLAG_ACCEPT_STRIDE|MP_IMGFLAG_ACCEPT_WIDTH))){ | |
159 // we're lucky or codec accepts stride => ok, let's go! | |
160 if(mpi->flags&MP_IMGFLAG_PLANAR){ | |
161 mpi->planes[0]=vid_data; | |
5317 | 162 if(mpi->flags&MP_IMGFLAG_SWAPPED){ |
163 mpi->planes[1]=vid_data + bespitch*mga_vid_config.src_height; | |
164 mpi->planes[2]=mpi->planes[1] + bespitch2*mga_vid_config.src_height/2; | |
165 } else { | |
166 mpi->planes[2]=vid_data + bespitch*mga_vid_config.src_height; | |
167 mpi->planes[1]=mpi->planes[2] + bespitch2*mga_vid_config.src_height/2; | |
168 } | |
4971 | 169 mpi->width=mpi->stride[0]=bespitch; |
170 mpi->stride[1]=mpi->stride[2]=bespitch2; | |
171 } else { | |
172 mpi->planes[0]=vid_data; | |
173 mpi->width=bespitch; | |
174 mpi->stride[0]=mpi->width*(mpi->bpp/8); | |
175 } | |
176 mpi->flags|=MP_IMGFLAG_DIRECT; | |
177 // printf("mga: get_image() SUCCESS -> Direct Rendering ENABLED\n"); | |
178 return VO_TRUE; | |
179 } | |
180 return VO_FALSE; | |
181 } | |
182 | |
183 static uint32_t | |
7681 | 184 draw_image(mp_image_t *mpi){ |
32374 | 185 uint32_t bespitch = FFALIGN(mga_vid_config.src_width, 32); |
7681 | 186 |
187 // if -dr or -slices then do nothing: | |
188 if(mpi->flags&(MP_IMGFLAG_DIRECT|MP_IMGFLAG_DRAW_CALLBACK)) return VO_TRUE; | |
189 | |
190 if(mpi->flags&MP_IMGFLAG_PLANAR){ | |
191 // copy planar: | |
192 draw_slice(mpi->planes,mpi->stride,mpi->w,mpi->h,mpi->x,mpi->y); | |
193 } else { | |
194 // copy packed: | |
195 mem2agpcpy_pic(vid_data, mpi->planes[0], // dst,src | |
196 mpi->w*(mpi->bpp/8), mpi->h, // w,h | |
197 bespitch*2, mpi->stride[0]); // dstride,sstride | |
198 } | |
199 return VO_TRUE; | |
200 } | |
201 | |
16171
fd51fd1ff231
Fix the return types of all (six) libvo API functions. Used to be uint32_t, but
ivo
parents:
15212
diff
changeset
|
202 static int |
1 | 203 query_format(uint32_t format) |
204 { | |
205 switch(format){ | |
206 case IMGFMT_YV12: | |
470 | 207 case IMGFMT_I420: |
208 case IMGFMT_IYUV: | |
1 | 209 case IMGFMT_YUY2: |
448
198b46b739d8
qrva eletbe nem kene cvs-t elbaszni inkabb ne nyuljatok hozza baz+
arpi_esp
parents:
413
diff
changeset
|
210 case IMGFMT_UYVY: |
15212
05aa13cdf92f
replace VO and VF numeric flags with #defined identifiers
henry
parents:
13787
diff
changeset
|
211 return VFCAP_CSP_SUPPORTED | VFCAP_CSP_SUPPORTED_BY_HW | VFCAP_OSD|VFCAP_HWSCALE_UP|VFCAP_HWSCALE_DOWN|VFCAP_ACCEPT_STRIDE; |
1 | 212 } |
213 return 0; | |
214 } | |
215 | |
24241 | 216 #ifndef VO_XMGA |
28232
8df85ad26746
Add missing 'void' keyword to parameterless function declarations.
diego
parents:
28088
diff
changeset
|
217 static void mga_fullscreen(void) |
5987 | 218 { |
219 uint32_t w,h; | |
220 if ( !vo_fs ) { | |
221 vo_fs=VO_TRUE; | |
222 w=vo_screenwidth; h=vo_screenheight; | |
223 aspect(&w,&h,A_ZOOM); | |
224 } else { | |
225 vo_fs=VO_FALSE; | |
226 w=vo_dwidth; h=vo_dheight; | |
227 aspect(&w,&h,A_NOZOOM); | |
228 } | |
229 mga_vid_config.dest_width = w; | |
230 mga_vid_config.dest_height= h; | |
7680 | 231 mga_vid_config.x_org=(vo_screenwidth-w)/2; |
232 mga_vid_config.y_org=(vo_screenheight-h)/2; | |
5987 | 233 if ( ioctl( f,MGA_VID_CONFIG,&mga_vid_config ) ) |
18234
a107276371a8
Part 5 and final of otvos attila's oattila AT chello-hu mp_msg changes, with lots of corrections
reynaldo
parents:
16171
diff
changeset
|
234 mp_msg(MSGT_VO,MSGL_WARN, MSGTR_LIBVO_MGA_ErrorInConfigIoctl ); |
5987 | 235 } |
24241 | 236 #endif |
5987 | 237 |
16171
fd51fd1ff231
Fix the return types of all (six) libvo API functions. Used to be uint32_t, but
ivo
parents:
15212
diff
changeset
|
238 static int control(uint32_t request, void *data, ...) |
4970 | 239 { |
240 switch (request) { | |
241 case VOCTRL_QUERY_FORMAT: | |
242 return query_format(*((uint32_t*)data)); | |
4971 | 243 case VOCTRL_GET_IMAGE: |
244 return get_image(data); | |
7681 | 245 case VOCTRL_DRAW_IMAGE: |
246 return draw_image(data); | |
6799 | 247 case VOCTRL_SET_EQUALIZER: |
248 { | |
249 va_list ap; | |
250 short value; | |
251 uint32_t luma,prev; | |
6382
86d5fc5b54e2
fix panscan support and add Jesper Svennevid's <mplayer@svennevid.net> patch
pontscho
parents:
6335
diff
changeset
|
252 |
6799 | 253 if ( strcmp( data,"brightness" ) && strcmp( data,"contrast" ) ) return VO_FALSE; |
254 | |
255 if (ioctl(f,MGA_VID_GET_LUMA,&prev)) { | |
256 perror("Error in mga_vid_config ioctl()"); | |
29263
0f1b5b68af32
whitespace cosmetics: Remove all trailing whitespace.
diego
parents:
29212
diff
changeset
|
257 mp_msg(MSGT_VO,MSGL_WARN, MSGTR_LIBVO_MGA_CouldNotGetLumaValuesFromTheKernelModule); |
6799 | 258 return VO_FALSE; |
259 } | |
260 | |
261 // printf("GET: 0x%4X 0x%4X \n",(prev>>16),(prev&0xffff)); | |
262 | |
263 va_start(ap, data); | |
264 value = va_arg(ap, int); | |
265 va_end(ap); | |
29263
0f1b5b68af32
whitespace cosmetics: Remove all trailing whitespace.
diego
parents:
29212
diff
changeset
|
266 |
6799 | 267 // printf("value: %d -> ",value); |
268 value=((value+100)*255)/200-128; // maps -100=>-128 and +100=>127 | |
269 // printf("%d \n",value); | |
270 | |
271 if(!strcmp(data,"contrast")) | |
272 luma = (prev&0xFFFF0000)|(value&0xFFFF); | |
273 else | |
274 luma = (prev&0xFFFF)|(value<<16); | |
29263
0f1b5b68af32
whitespace cosmetics: Remove all trailing whitespace.
diego
parents:
29212
diff
changeset
|
275 |
6799 | 276 if (ioctl(f,MGA_VID_SET_LUMA,luma)) { |
277 perror("Error in mga_vid_config ioctl()"); | |
18234
a107276371a8
Part 5 and final of otvos attila's oattila AT chello-hu mp_msg changes, with lots of corrections
reynaldo
parents:
16171
diff
changeset
|
278 mp_msg(MSGT_VO,MSGL_WARN, MSGTR_LIBVO_MGA_CouldNotSetLumaValuesFromTheKernelModule); |
6799 | 279 return VO_FALSE; |
280 } | |
281 | |
282 return VO_TRUE; | |
283 } | |
284 | |
285 case VOCTRL_GET_EQUALIZER: | |
286 { | |
287 va_list ap; | |
288 int * value; | |
289 short val; | |
290 uint32_t luma; | |
29263
0f1b5b68af32
whitespace cosmetics: Remove all trailing whitespace.
diego
parents:
29212
diff
changeset
|
291 |
6799 | 292 if ( strcmp( data,"brightness" ) && strcmp( data,"contrast" ) ) return VO_FALSE; |
293 | |
294 if (ioctl(f,MGA_VID_GET_LUMA,&luma)) { | |
295 perror("Error in mga_vid_config ioctl()"); | |
18234
a107276371a8
Part 5 and final of otvos attila's oattila AT chello-hu mp_msg changes, with lots of corrections
reynaldo
parents:
16171
diff
changeset
|
296 mp_msg(MSGT_VO,MSGL_WARN, MSGTR_LIBVO_MGA_CouldNotGetLumaValuesFromTheKernelModule); |
6799 | 297 return VO_FALSE; |
298 } | |
29263
0f1b5b68af32
whitespace cosmetics: Remove all trailing whitespace.
diego
parents:
29212
diff
changeset
|
299 |
6799 | 300 if ( !strcmp( data,"contrast" ) ) |
301 val=(luma & 0xFFFF); | |
302 else | |
303 val=(luma >> 16); | |
29263
0f1b5b68af32
whitespace cosmetics: Remove all trailing whitespace.
diego
parents:
29212
diff
changeset
|
304 |
6799 | 305 va_start(ap, data); |
306 value = va_arg(ap, int*); | |
307 va_end(ap); | |
308 | |
309 *value = (val*200)/255; | |
310 | |
311 return VO_TRUE; | |
312 } | |
29263
0f1b5b68af32
whitespace cosmetics: Remove all trailing whitespace.
diego
parents:
29212
diff
changeset
|
313 |
6382
86d5fc5b54e2
fix panscan support and add Jesper Svennevid's <mplayer@svennevid.net> patch
pontscho
parents:
6335
diff
changeset
|
314 #ifndef VO_XMGA |
5987 | 315 case VOCTRL_FULLSCREEN: |
7680 | 316 if (vo_screenwidth && vo_screenheight) |
317 mga_fullscreen(); | |
318 else | |
18234
a107276371a8
Part 5 and final of otvos attila's oattila AT chello-hu mp_msg changes, with lots of corrections
reynaldo
parents:
16171
diff
changeset
|
319 mp_msg(MSGT_VO,MSGL_WARN, MSGTR_LIBVO_MGA_ScreenWidthHeightUnknown); |
6382
86d5fc5b54e2
fix panscan support and add Jesper Svennevid's <mplayer@svennevid.net> patch
pontscho
parents:
6335
diff
changeset
|
320 return VO_TRUE; |
8017
a57aac3a927a
panscan support in -vo mga (actually moved common code to mga_common.c)
arpi
parents:
7777
diff
changeset
|
321 case VOCTRL_GET_PANSCAN: |
a57aac3a927a
panscan support in -vo mga (actually moved common code to mga_common.c)
arpi
parents:
7777
diff
changeset
|
322 if ( !vo_fs ) return VO_FALSE; |
a57aac3a927a
panscan support in -vo mga (actually moved common code to mga_common.c)
arpi
parents:
7777
diff
changeset
|
323 return VO_TRUE; |
5987 | 324 #endif |
6382
86d5fc5b54e2
fix panscan support and add Jesper Svennevid's <mplayer@svennevid.net> patch
pontscho
parents:
6335
diff
changeset
|
325 |
27343 | 326 #if defined(VO_XMGA) && defined(CONFIG_GUI) |
6009 | 327 case VOCTRL_GUISUPPORT: |
328 return VO_TRUE; | |
329 #endif | |
6382
86d5fc5b54e2
fix panscan support and add Jesper Svennevid's <mplayer@svennevid.net> patch
pontscho
parents:
6335
diff
changeset
|
330 |
6307 | 331 #ifdef VO_XMGA |
11542 | 332 case VOCTRL_ONTOP: |
333 vo_x11_ontop(); | |
334 return VO_TRUE; | |
6307 | 335 case VOCTRL_GET_PANSCAN: |
25962 | 336 if ( !initialized || !vo_fs ) return VO_FALSE; |
6307 | 337 return VO_TRUE; |
6382
86d5fc5b54e2
fix panscan support and add Jesper Svennevid's <mplayer@svennevid.net> patch
pontscho
parents:
6335
diff
changeset
|
338 case VOCTRL_FULLSCREEN: |
86d5fc5b54e2
fix panscan support and add Jesper Svennevid's <mplayer@svennevid.net> patch
pontscho
parents:
6335
diff
changeset
|
339 vo_x11_fullscreen(); |
86d5fc5b54e2
fix panscan support and add Jesper Svennevid's <mplayer@svennevid.net> patch
pontscho
parents:
6335
diff
changeset
|
340 vo_panscan_amount=0; |
32373 | 341 /* intended, fallthrough to update panscan on fullscreen/windowed switch */ |
8017
a57aac3a927a
panscan support in -vo mga (actually moved common code to mga_common.c)
arpi
parents:
7777
diff
changeset
|
342 #endif |
6307 | 343 case VOCTRL_SET_PANSCAN: |
6382
86d5fc5b54e2
fix panscan support and add Jesper Svennevid's <mplayer@svennevid.net> patch
pontscho
parents:
6335
diff
changeset
|
344 if ( vo_fs && ( vo_panscan != vo_panscan_amount ) ) // || ( !vo_fs && vo_panscan_amount ) ) |
6307 | 345 { |
8123
9fc45fe0d444
*HUGE* set of compiler warning fixes, unused variables removal
arpi
parents:
8017
diff
changeset
|
346 // int old_y = vo_panscan_y; |
6307 | 347 panscan_calc(); |
29263
0f1b5b68af32
whitespace cosmetics: Remove all trailing whitespace.
diego
parents:
29212
diff
changeset
|
348 // if ( old_y != vo_panscan_y ) |
6382
86d5fc5b54e2
fix panscan support and add Jesper Svennevid's <mplayer@svennevid.net> patch
pontscho
parents:
6335
diff
changeset
|
349 set_window(); |
6307 | 350 } |
351 return VO_TRUE; | |
32367
4a890f542e69
Switch (x)mga vo to new libvo API to reduce code duplication and improve
reimar
parents:
32196
diff
changeset
|
352 case VOCTRL_UPDATE_SCREENINFO: |
4a890f542e69
Switch (x)mga vo to new libvo API to reduce code duplication and improve
reimar
parents:
32196
diff
changeset
|
353 #ifdef VO_XMGA |
4a890f542e69
Switch (x)mga vo to new libvo API to reduce code duplication and improve
reimar
parents:
32196
diff
changeset
|
354 update_xinerama_info(); |
4a890f542e69
Switch (x)mga vo to new libvo API to reduce code duplication and improve
reimar
parents:
32196
diff
changeset
|
355 #else |
4a890f542e69
Switch (x)mga vo to new libvo API to reduce code duplication and improve
reimar
parents:
32196
diff
changeset
|
356 aspect_save_screenres(vo_screenwidth, vo_screenheight); |
4a890f542e69
Switch (x)mga vo to new libvo API to reduce code duplication and improve
reimar
parents:
32196
diff
changeset
|
357 #endif |
4a890f542e69
Switch (x)mga vo to new libvo API to reduce code duplication and improve
reimar
parents:
32196
diff
changeset
|
358 return VO_TRUE; |
4970 | 359 } |
360 return VO_NOTIMPL; | |
361 } | |
362 | |
363 | |
7679 | 364 static int mga_init(int width,int height,unsigned int format){ |
365 | |
32374 | 366 uint32_t bespitch = FFALIGN(width, 32); |
7679 | 367 switch(format){ |
368 case IMGFMT_YV12: | |
32374 | 369 width = FFALIGN(width, 2); |
370 height = FFALIGN(height, 2); | |
371 mga_vid_config.frame_size = bespitch * height + (bespitch * height) / 2; | |
7679 | 372 mga_vid_config.format=MGA_VID_FORMAT_I420; break; |
373 case IMGFMT_I420: | |
374 case IMGFMT_IYUV: | |
32374 | 375 width = FFALIGN(width, 2); |
376 height = FFALIGN(height, 2); | |
377 mga_vid_config.frame_size = bespitch * height + (bespitch * height) / 2; | |
7679 | 378 mga_vid_config.format=MGA_VID_FORMAT_YV12; break; |
379 case IMGFMT_YUY2: | |
32374 | 380 mga_vid_config.frame_size = bespitch * height * 2; |
7679 | 381 mga_vid_config.format=MGA_VID_FORMAT_YUY2; break; |
382 case IMGFMT_UYVY: | |
32374 | 383 mga_vid_config.frame_size = bespitch * height * 2; |
7679 | 384 mga_vid_config.format=MGA_VID_FORMAT_UYVY; break; |
29263
0f1b5b68af32
whitespace cosmetics: Remove all trailing whitespace.
diego
parents:
29212
diff
changeset
|
385 default: |
18234
a107276371a8
Part 5 and final of otvos attila's oattila AT chello-hu mp_msg changes, with lots of corrections
reynaldo
parents:
16171
diff
changeset
|
386 mp_msg(MSGT_VO,MSGL_WARN, MSGTR_LIBVO_MGA_InvalidOutputFormat,format); |
26755
46f0b4d34fa1
cosmetics: Remove useless parentheses from from return statements.
diego
parents:
25962
diff
changeset
|
387 return -1; |
7679 | 388 } |
389 | |
390 mga_vid_config.src_width = width; | |
391 mga_vid_config.src_height= height; | |
7680 | 392 if(!mga_vid_config.dest_width) |
393 mga_vid_config.dest_width = width; | |
394 if(!mga_vid_config.dest_height) | |
395 mga_vid_config.dest_height= height; | |
56 | 396 |
7680 | 397 mga_vid_config.colkey_on=0; |
29263
0f1b5b68af32
whitespace cosmetics: Remove all trailing whitespace.
diego
parents:
29212
diff
changeset
|
398 |
5432 | 399 mga_vid_config.num_frames=(vo_directrendering && !vo_doublebuffering)?1:3; |
56 | 400 mga_vid_config.version=MGA_VID_VERSION; |
22693
b73dca7dbb0f
allow horizontal resolutions >1024 in case we have a G550
attila
parents:
22142
diff
changeset
|
401 |
b73dca7dbb0f
allow horizontal resolutions >1024 in case we have a G550
attila
parents:
22142
diff
changeset
|
402 if(width > 1024 && height > 1024) |
b73dca7dbb0f
allow horizontal resolutions >1024 in case we have a G550
attila
parents:
22142
diff
changeset
|
403 { |
28088 | 404 mp_msg(MSGT_VO,MSGL_ERR, MSGTR_LIBVO_MGA_ResolutionTooHigh); |
26755
46f0b4d34fa1
cosmetics: Remove useless parentheses from from return statements.
diego
parents:
25962
diff
changeset
|
405 return -1; |
22693
b73dca7dbb0f
allow horizontal resolutions >1024 in case we have a G550
attila
parents:
22142
diff
changeset
|
406 } else if(height <= 1024) |
b73dca7dbb0f
allow horizontal resolutions >1024 in case we have a G550
attila
parents:
22142
diff
changeset
|
407 { |
b73dca7dbb0f
allow horizontal resolutions >1024 in case we have a G550
attila
parents:
22142
diff
changeset
|
408 // try whether we have a G550 |
b73dca7dbb0f
allow horizontal resolutions >1024 in case we have a G550
attila
parents:
22142
diff
changeset
|
409 int ret; |
24424 | 410 if ((ret = ioctl(f,MGA_VID_CONFIG,&mga_vid_config))) |
22693
b73dca7dbb0f
allow horizontal resolutions >1024 in case we have a G550
attila
parents:
22142
diff
changeset
|
411 { |
b73dca7dbb0f
allow horizontal resolutions >1024 in case we have a G550
attila
parents:
22142
diff
changeset
|
412 if(mga_vid_config.card_type != MGA_G550) |
b73dca7dbb0f
allow horizontal resolutions >1024 in case we have a G550
attila
parents:
22142
diff
changeset
|
413 { |
b73dca7dbb0f
allow horizontal resolutions >1024 in case we have a G550
attila
parents:
22142
diff
changeset
|
414 // we don't have a G550, so our resolution is too high |
28088 | 415 mp_msg(MSGT_VO,MSGL_ERR, MSGTR_LIBVO_MGA_ResolutionTooHigh); |
26755
46f0b4d34fa1
cosmetics: Remove useless parentheses from from return statements.
diego
parents:
25962
diff
changeset
|
416 return -1; |
22693
b73dca7dbb0f
allow horizontal resolutions >1024 in case we have a G550
attila
parents:
22142
diff
changeset
|
417 } else { |
b73dca7dbb0f
allow horizontal resolutions >1024 in case we have a G550
attila
parents:
22142
diff
changeset
|
418 // there is a deeper problem |
b73dca7dbb0f
allow horizontal resolutions >1024 in case we have a G550
attila
parents:
22142
diff
changeset
|
419 // we have a G550, but still couldn't configure mga_vid |
b73dca7dbb0f
allow horizontal resolutions >1024 in case we have a G550
attila
parents:
22142
diff
changeset
|
420 perror("Error in mga_vid_config ioctl()"); |
b73dca7dbb0f
allow horizontal resolutions >1024 in case we have a G550
attila
parents:
22142
diff
changeset
|
421 mp_msg(MSGT_VO,MSGL_WARN, MSGTR_LIBVO_MGA_IncompatibleDriverVersion); |
b73dca7dbb0f
allow horizontal resolutions >1024 in case we have a G550
attila
parents:
22142
diff
changeset
|
422 return -1; |
b73dca7dbb0f
allow horizontal resolutions >1024 in case we have a G550
attila
parents:
22142
diff
changeset
|
423 } |
b73dca7dbb0f
allow horizontal resolutions >1024 in case we have a G550
attila
parents:
22142
diff
changeset
|
424 // if we arrived here, then we could successfully configure mga_vid |
b73dca7dbb0f
allow horizontal resolutions >1024 in case we have a G550
attila
parents:
22142
diff
changeset
|
425 // at this high resolution |
b73dca7dbb0f
allow horizontal resolutions >1024 in case we have a G550
attila
parents:
22142
diff
changeset
|
426 } |
b73dca7dbb0f
allow horizontal resolutions >1024 in case we have a G550
attila
parents:
22142
diff
changeset
|
427 } else { |
22694 | 428 // configure mga_vid in case resolution is < 1024x1024 too |
429 if (ioctl(f,MGA_VID_CONFIG,&mga_vid_config)) | |
430 { | |
431 perror("Error in mga_vid_config ioctl()"); | |
432 mp_msg(MSGT_VO,MSGL_WARN, MSGTR_LIBVO_MGA_IncompatibleDriverVersion); | |
433 return -1; | |
434 } | |
22693
b73dca7dbb0f
allow horizontal resolutions >1024 in case we have a G550
attila
parents:
22142
diff
changeset
|
435 } |
31371
a6cb957ad186
Disable only G200 support when compiling against dynamic libswscale instead
reimar
parents:
31364
diff
changeset
|
436 if (mga_vid_config.card_type == MGA_G200) { |
32196 | 437 sws_ctx = sws_getContext(width, height, PIX_FMT_YUV420P, |
438 width, height, PIX_FMT_NV12, | |
439 SWS_BILINEAR, NULL, NULL, NULL); | |
440 if (!sws_ctx) { | |
441 mp_msg(MSGT_VO, MSGL_FATAL, | |
442 "Could not get swscale context to scale for G200.\n"); | |
443 return -1; | |
444 } | |
445 mp_msg(MSGT_VO, MSGL_WARN, "G200 cards support is untested. " | |
446 "Please report whether it works.\n"); | |
31371
a6cb957ad186
Disable only G200 support when compiling against dynamic libswscale instead
reimar
parents:
31364
diff
changeset
|
447 } |
29263
0f1b5b68af32
whitespace cosmetics: Remove all trailing whitespace.
diego
parents:
29212
diff
changeset
|
448 |
24321 | 449 mp_msg(MSGT_VO,MSGL_V,"[MGA] Using %d buffers.\n",mga_vid_config.num_frames); |
56 | 450 |
451 frames[0] = (char*)mmap(0,mga_vid_config.frame_size*mga_vid_config.num_frames,PROT_WRITE,MAP_SHARED,f,0); | |
452 frames[1] = frames[0] + 1*mga_vid_config.frame_size; | |
453 frames[2] = frames[0] + 2*mga_vid_config.frame_size; | |
454 frames[3] = frames[0] + 3*mga_vid_config.frame_size; | |
455 mga_next_frame = 0; | |
456 vid_data = frames[mga_next_frame]; | |
457 | |
458 //clear the buffer | |
459 memset(frames[0],0x80,mga_vid_config.frame_size*mga_vid_config.num_frames); | |
460 | |
7777 | 461 #ifndef VO_XMGA |
7679 | 462 ioctl(f,MGA_VID_ON,0); |
7777 | 463 #endif |
7679 | 464 |
56 | 465 return 0; |
466 } | |
467 | |
29212
eda346733b8c
Add missing 'void' to parameterless function declarations.
diego
parents:
28446
diff
changeset
|
468 static int mga_uninit(void){ |
7679 | 469 if(f>=0){ |
1637 | 470 ioctl( f,MGA_VID_OFF,0 ); |
471 munmap(frames[0],mga_vid_config.frame_size*mga_vid_config.num_frames); | |
472 close(f); | |
5389
7296c4262457
quick hack to make vo_mga accept multiple calls to config
rfelker
parents:
5335
diff
changeset
|
473 f = -1; |
7679 | 474 } |
32196 | 475 if (sws_ctx) { |
476 sws_freeContext(sws_ctx); | |
477 } | |
7472
c4434bdf6e51
tons of warning fixes, also some 10l bugfixes, including Dominik's PVA bug
arpi
parents:
6799
diff
changeset
|
478 return 0; |
1637 | 479 } |
4970 | 480 |
16171
fd51fd1ff231
Fix the return types of all (six) libvo API functions. Used to be uint32_t, but
ivo
parents:
15212
diff
changeset
|
481 static int preinit(const char *vo_subdevice) |
4970 | 482 { |
26831
7b868c55d22b
make use of the new MGA_VID_VERSION ioctl to check
attila
parents:
26755
diff
changeset
|
483 uint32_t ver; |
7695 | 484 const char *devname=vo_subdevice?vo_subdevice:"/dev/mga_vid"; |
5433 | 485 |
486 f = open(devname,O_RDWR); | |
487 if(f == -1) | |
488 { | |
489 perror("open"); | |
18234
a107276371a8
Part 5 and final of otvos attila's oattila AT chello-hu mp_msg changes, with lots of corrections
reynaldo
parents:
16171
diff
changeset
|
490 mp_msg(MSGT_VO,MSGL_WARN, MSGTR_LIBVO_MGA_CouldntOpen,devname); |
26755
46f0b4d34fa1
cosmetics: Remove useless parentheses from from return statements.
diego
parents:
25962
diff
changeset
|
491 return -1; |
5433 | 492 } |
29263
0f1b5b68af32
whitespace cosmetics: Remove all trailing whitespace.
diego
parents:
29212
diff
changeset
|
493 |
26831
7b868c55d22b
make use of the new MGA_VID_VERSION ioctl to check
attila
parents:
26755
diff
changeset
|
494 // check whether the mga_vid driver has the same |
7b868c55d22b
make use of the new MGA_VID_VERSION ioctl to check
attila
parents:
26755
diff
changeset
|
495 // version as we expect |
29263
0f1b5b68af32
whitespace cosmetics: Remove all trailing whitespace.
diego
parents:
29212
diff
changeset
|
496 |
26831
7b868c55d22b
make use of the new MGA_VID_VERSION ioctl to check
attila
parents:
26755
diff
changeset
|
497 ioctl(f,MGA_VID_GET_VERSION,&ver); |
7b868c55d22b
make use of the new MGA_VID_VERSION ioctl to check
attila
parents:
26755
diff
changeset
|
498 if(MGA_VID_VERSION != ver) |
7b868c55d22b
make use of the new MGA_VID_VERSION ioctl to check
attila
parents:
26755
diff
changeset
|
499 { |
28088 | 500 mp_msg(MSGT_VO, MSGL_ERR, MSGTR_LIBVO_MGA_mgavidVersionMismatch, ver, MGA_VID_VERSION); |
26831
7b868c55d22b
make use of the new MGA_VID_VERSION ioctl to check
attila
parents:
26755
diff
changeset
|
501 return -1; |
7b868c55d22b
make use of the new MGA_VID_VERSION ioctl to check
attila
parents:
26755
diff
changeset
|
502 } |
7679 | 503 |
504 #ifdef VO_XMGA | |
8778
ff92d9b5ade5
don't keep mga_vid device open if x11 init fails (fixes "-vo xmga,mga")
rfelker
parents:
8123
diff
changeset
|
505 if (!vo_init()) { |
ff92d9b5ade5
don't keep mga_vid device open if x11 init fails (fixes "-vo xmga,mga")
rfelker
parents:
8123
diff
changeset
|
506 close(f); |
ff92d9b5ade5
don't keep mga_vid device open if x11 init fails (fixes "-vo xmga,mga")
rfelker
parents:
8123
diff
changeset
|
507 return -1; |
ff92d9b5ade5
don't keep mga_vid device open if x11 init fails (fixes "-vo xmga,mga")
rfelker
parents:
8123
diff
changeset
|
508 } |
7679 | 509 #endif |
510 | |
4970 | 511 return 0; |
512 } | |
513 | |
8017
a57aac3a927a
panscan support in -vo mga (actually moved common code to mga_common.c)
arpi
parents:
7777
diff
changeset
|
514 static void set_window( void ){ |
a57aac3a927a
panscan support in -vo mga (actually moved common code to mga_common.c)
arpi
parents:
7777
diff
changeset
|
515 |
32367
4a890f542e69
Switch (x)mga vo to new libvo API to reduce code duplication and improve
reimar
parents:
32196
diff
changeset
|
516 drwcX = vo_dx; |
4a890f542e69
Switch (x)mga vo to new libvo API to reduce code duplication and improve
reimar
parents:
32196
diff
changeset
|
517 drwcY = vo_dy; |
4a890f542e69
Switch (x)mga vo to new libvo API to reduce code duplication and improve
reimar
parents:
32196
diff
changeset
|
518 drwWidth = vo_dwidth; |
4a890f542e69
Switch (x)mga vo to new libvo API to reduce code duplication and improve
reimar
parents:
32196
diff
changeset
|
519 drwHeight = vo_dheight; |
8017
a57aac3a927a
panscan support in -vo mga (actually moved common code to mga_common.c)
arpi
parents:
7777
diff
changeset
|
520 |
32367
4a890f542e69
Switch (x)mga vo to new libvo API to reduce code duplication and improve
reimar
parents:
32196
diff
changeset
|
521 aspect(&drwWidth, &drwHeight, A_WINZOOM); |
4a890f542e69
Switch (x)mga vo to new libvo API to reduce code duplication and improve
reimar
parents:
32196
diff
changeset
|
522 panscan_calc_windowed(); |
4a890f542e69
Switch (x)mga vo to new libvo API to reduce code duplication and improve
reimar
parents:
32196
diff
changeset
|
523 drwWidth += vo_panscan_x; |
4a890f542e69
Switch (x)mga vo to new libvo API to reduce code duplication and improve
reimar
parents:
32196
diff
changeset
|
524 drwHeight += vo_panscan_y; |
4a890f542e69
Switch (x)mga vo to new libvo API to reduce code duplication and improve
reimar
parents:
32196
diff
changeset
|
525 drwWidth = FFMIN(drwWidth, vo_screenwidth); |
4a890f542e69
Switch (x)mga vo to new libvo API to reduce code duplication and improve
reimar
parents:
32196
diff
changeset
|
526 drwHeight = FFMIN(drwHeight, vo_screenheight); |
4a890f542e69
Switch (x)mga vo to new libvo API to reduce code duplication and improve
reimar
parents:
32196
diff
changeset
|
527 drwX = (vo_dwidth - drwWidth ) / 2; |
4a890f542e69
Switch (x)mga vo to new libvo API to reduce code duplication and improve
reimar
parents:
32196
diff
changeset
|
528 drwY = (vo_dheight - drwHeight) / 2; |
4a890f542e69
Switch (x)mga vo to new libvo API to reduce code duplication and improve
reimar
parents:
32196
diff
changeset
|
529 drwcX += drwX; |
4a890f542e69
Switch (x)mga vo to new libvo API to reduce code duplication and improve
reimar
parents:
32196
diff
changeset
|
530 drwcY += drwY; |
8017
a57aac3a927a
panscan support in -vo mga (actually moved common code to mga_common.c)
arpi
parents:
7777
diff
changeset
|
531 |
a57aac3a927a
panscan support in -vo mga (actually moved common code to mga_common.c)
arpi
parents:
7777
diff
changeset
|
532 #ifdef VO_XMGA |
27377
d58d06eafe83
Change a bunch of X11-specific preprocessor directives.
diego
parents:
27343
diff
changeset
|
533 #ifdef CONFIG_XINERAMA |
8017
a57aac3a927a
panscan support in -vo mga (actually moved common code to mga_common.c)
arpi
parents:
7777
diff
changeset
|
534 if(XineramaIsActive(mDisplay)) |
a57aac3a927a
panscan support in -vo mga (actually moved common code to mga_common.c)
arpi
parents:
7777
diff
changeset
|
535 { |
a57aac3a927a
panscan support in -vo mga (actually moved common code to mga_common.c)
arpi
parents:
7777
diff
changeset
|
536 XineramaScreenInfo *screens; |
a57aac3a927a
panscan support in -vo mga (actually moved common code to mga_common.c)
arpi
parents:
7777
diff
changeset
|
537 int num_screens; |
a57aac3a927a
panscan support in -vo mga (actually moved common code to mga_common.c)
arpi
parents:
7777
diff
changeset
|
538 int i; |
a57aac3a927a
panscan support in -vo mga (actually moved common code to mga_common.c)
arpi
parents:
7777
diff
changeset
|
539 |
a57aac3a927a
panscan support in -vo mga (actually moved common code to mga_common.c)
arpi
parents:
7777
diff
changeset
|
540 screens = XineramaQueryScreens(mDisplay,&num_screens); |
a57aac3a927a
panscan support in -vo mga (actually moved common code to mga_common.c)
arpi
parents:
7777
diff
changeset
|
541 |
a57aac3a927a
panscan support in -vo mga (actually moved common code to mga_common.c)
arpi
parents:
7777
diff
changeset
|
542 /* find the screen we are on */ |
a57aac3a927a
panscan support in -vo mga (actually moved common code to mga_common.c)
arpi
parents:
7777
diff
changeset
|
543 i = 0; |
8988 | 544 while(i<num_screens && |
545 ((screens[i].x_org < drwcX) || | |
546 (screens[i].y_org < drwcY) || | |
547 (screens[i].x_org + screens[i].width >= drwcX) || | |
548 (screens[i].y_org + screens[i].height >= drwcY))) | |
8017
a57aac3a927a
panscan support in -vo mga (actually moved common code to mga_common.c)
arpi
parents:
7777
diff
changeset
|
549 { |
a57aac3a927a
panscan support in -vo mga (actually moved common code to mga_common.c)
arpi
parents:
7777
diff
changeset
|
550 i++; |
a57aac3a927a
panscan support in -vo mga (actually moved common code to mga_common.c)
arpi
parents:
7777
diff
changeset
|
551 } |
a57aac3a927a
panscan support in -vo mga (actually moved common code to mga_common.c)
arpi
parents:
7777
diff
changeset
|
552 |
8988 | 553 if(i<num_screens) |
554 { | |
555 /* save the screen we are on */ | |
556 xinerama_screen = i; | |
557 } else { | |
558 /* oops.. couldnt find the screen we are on | |
559 * because the upper left corner left the | |
560 * visual range. assume we are still on the | |
561 * same screen | |
562 */ | |
563 i = xinerama_screen; | |
564 } | |
565 | |
24233 | 566 if(xinerama_screen == -1) |
567 { | |
568 // The default value of the xinerama_screen is | |
569 // still there. Which means we could never | |
570 // figure out on which screen we are. | |
571 // Choose the first screen as default | |
572 xinerama_screen = i = 0; | |
573 } | |
574 | |
8017
a57aac3a927a
panscan support in -vo mga (actually moved common code to mga_common.c)
arpi
parents:
7777
diff
changeset
|
575 /* set drwcX and drwcY to the right values */ |
a57aac3a927a
panscan support in -vo mga (actually moved common code to mga_common.c)
arpi
parents:
7777
diff
changeset
|
576 drwcX = drwcX - screens[i].x_org; |
a57aac3a927a
panscan support in -vo mga (actually moved common code to mga_common.c)
arpi
parents:
7777
diff
changeset
|
577 drwcY = drwcY - screens[i].y_org; |
a57aac3a927a
panscan support in -vo mga (actually moved common code to mga_common.c)
arpi
parents:
7777
diff
changeset
|
578 XFree(screens); |
a57aac3a927a
panscan support in -vo mga (actually moved common code to mga_common.c)
arpi
parents:
7777
diff
changeset
|
579 } |
a57aac3a927a
panscan support in -vo mga (actually moved common code to mga_common.c)
arpi
parents:
7777
diff
changeset
|
580 |
a57aac3a927a
panscan support in -vo mga (actually moved common code to mga_common.c)
arpi
parents:
7777
diff
changeset
|
581 #endif |
a57aac3a927a
panscan support in -vo mga (actually moved common code to mga_common.c)
arpi
parents:
7777
diff
changeset
|
582 |
a57aac3a927a
panscan support in -vo mga (actually moved common code to mga_common.c)
arpi
parents:
7777
diff
changeset
|
583 mDrawColorKey(); |
a57aac3a927a
panscan support in -vo mga (actually moved common code to mga_common.c)
arpi
parents:
7777
diff
changeset
|
584 #endif |
a57aac3a927a
panscan support in -vo mga (actually moved common code to mga_common.c)
arpi
parents:
7777
diff
changeset
|
585 |
a57aac3a927a
panscan support in -vo mga (actually moved common code to mga_common.c)
arpi
parents:
7777
diff
changeset
|
586 mga_vid_config.x_org=drwcX; |
a57aac3a927a
panscan support in -vo mga (actually moved common code to mga_common.c)
arpi
parents:
7777
diff
changeset
|
587 mga_vid_config.y_org=drwcY; |
a57aac3a927a
panscan support in -vo mga (actually moved common code to mga_common.c)
arpi
parents:
7777
diff
changeset
|
588 mga_vid_config.dest_width=drwWidth; |
a57aac3a927a
panscan support in -vo mga (actually moved common code to mga_common.c)
arpi
parents:
7777
diff
changeset
|
589 mga_vid_config.dest_height=drwHeight; |
9047 | 590 if ( ioctl( f,MGA_VID_CONFIG,&mga_vid_config ) ) mp_msg(MSGT_VO,MSGL_WARN,"Error in mga_vid_config ioctl (wrong mga_vid.o version?)" ); |
8017
a57aac3a927a
panscan support in -vo mga (actually moved common code to mga_common.c)
arpi
parents:
7777
diff
changeset
|
591 } |