Mercurial > mplayer.hg
annotate libvo/mga_common.c @ 22830:1d4a455af876
Set CONFIG_EBP_AVAILABLE, CONFIG_EBX_AVAILABLE for FFmpeg
After FFmpeg r8549 these variables are used in libavcodec to determine
whether x86 inline asm sections using these registers or requiring a
certain total number of total free registers are enabled. Because they
were not set by MPlayer configure some H264 decoding optimizations were
disabled after that FFmpeg version. This change sets the variables to
true unconditionally which should restore previous behavior. Adding
proper detection is left for later.
EBX should always be available because internal libavcodec is never
compiled with PIC. However if -fomit-frame-pointer is not used because
of --enable-debug then EBP is not available. Thus proper detection would
be preferable to fix compilation with --enable-debug on x86. Currently
the variables are also set on non-x86 which should be harmless even if
somewhat ugly.
author | uau |
---|---|
date | Fri, 30 Mar 2007 22:57:04 +0000 |
parents | 595f9fb80827 |
children | ecb7d0fc3dad |
rev | line source |
---|---|
413 | 1 |
566 | 2 #include "fastmemcpy.h" |
13787
e047e70a9767
Handle "xxx.h" vs "../xxx.h" include paths in a consistent way.
diego
parents:
11865
diff
changeset
|
3 #include "cpudetect.h" |
18861 | 4 #include "libswscale/swscale.h" |
22142
84f95595f31f
Fix a few gcc warnings, approved by Diego and Reimar.
rathann
parents:
18861
diff
changeset
|
5 #include "libswscale/rgb2rgb.h" |
13787
e047e70a9767
Handle "xxx.h" vs "../xxx.h" include paths in a consistent way.
diego
parents:
11865
diff
changeset
|
6 #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
|
7 #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
|
8 #include "help_mp.h" |
1 | 9 |
10 // mga_vid drawing functions | |
8017
a57aac3a927a
panscan support in -vo mga (actually moved common code to mga_common.c)
arpi
parents:
7777
diff
changeset
|
11 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
|
12 #ifdef VO_XMGA |
8017
a57aac3a927a
panscan support in -vo mga (actually moved common code to mga_common.c)
arpi
parents:
7777
diff
changeset
|
13 static void mDrawColorKey( void ); /* forward declaration to kill warnings */ |
8988 | 14 #ifdef HAVE_XINERAMA |
15 extern int xinerama_screen; | |
16 #endif | |
6335
e9bd97d5c5cc
warning & newline fixes by Dominik Mierzejewski <dominik@rangers.eu.org>
arpi
parents:
6311
diff
changeset
|
17 #endif |
1 | 18 |
56 | 19 static int mga_next_frame=0; |
20 | |
21 static mga_vid_config_t mga_vid_config; | |
22 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
|
23 static int f = -1; |
56 | 24 |
8123
9fc45fe0d444
*HUGE* set of compiler warning fixes, unused variables removal
arpi
parents:
8017
diff
changeset
|
25 static uint32_t drwX,drwY,drwWidth,drwHeight; |
9fc45fe0d444
*HUGE* set of compiler warning fixes, unused variables removal
arpi
parents:
8017
diff
changeset
|
26 #ifdef VO_XMGA |
9fc45fe0d444
*HUGE* set of compiler warning fixes, unused variables removal
arpi
parents:
8017
diff
changeset
|
27 static uint32_t drwBorderWidth,drwDepth; |
9fc45fe0d444
*HUGE* set of compiler warning fixes, unused variables removal
arpi
parents:
8017
diff
changeset
|
28 #endif |
8017
a57aac3a927a
panscan support in -vo mga (actually moved common code to mga_common.c)
arpi
parents:
7777
diff
changeset
|
29 static uint32_t drwcX,drwcY,dwidth,dheight; |
a57aac3a927a
panscan support in -vo mga (actually moved common code to mga_common.c)
arpi
parents:
7777
diff
changeset
|
30 |
202 | 31 static void draw_alpha(int x0,int y0, int w,int h, unsigned char* src, unsigned char *srca, int stride){ |
32 uint32_t bespitch = (mga_vid_config.src_width + 31) & ~31; | |
9994 | 33 x0+=mga_vid_config.src_width*(vo_panscan_x>>1)/(vo_dwidth+vo_panscan_x); |
466 | 34 switch(mga_vid_config.format){ |
35 case MGA_VID_FORMAT_YV12: | |
470 | 36 case MGA_VID_FORMAT_IYUV: |
37 case MGA_VID_FORMAT_I420: | |
326 | 38 vo_draw_alpha_yv12(w,h,src,srca,stride,vid_data+bespitch*y0+x0,bespitch); |
466 | 39 break; |
40 case MGA_VID_FORMAT_YUY2: | |
326 | 41 vo_draw_alpha_yuy2(w,h,src,srca,stride,vid_data+2*(bespitch*y0+x0),2*bespitch); |
466 | 42 break; |
43 case MGA_VID_FORMAT_UYVY: | |
44 vo_draw_alpha_yuy2(w,h,src,srca,stride,vid_data+2*(bespitch*y0+x0)+1,2*bespitch); | |
45 break; | |
46 } | |
1 | 47 } |
48 | |
7680 | 49 static void draw_osd(void) |
50 { | |
9994 | 51 // vo_draw_text(mga_vid_config.src_width,mga_vid_config.src_height,draw_alpha); |
52 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 | 53 } |
54 | |
55 | |
1 | 56 //static void |
57 //write_slice_g200(uint8_t *y,uint8_t *cr, uint8_t *cb,uint32_t slice_num) | |
58 | |
59 static void | |
60 draw_slice_g200(uint8_t *image[], int stride[], int width,int height,int x,int y) | |
61 { | |
62 uint8_t *dest; | |
7472
c4434bdf6e51
tons of warning fixes, also some 10l bugfixes, including Dominik's PVA bug
arpi
parents:
6799
diff
changeset
|
63 uint32_t bespitch = (mga_vid_config.src_width + 31) & ~31; |
1 | 64 |
284 | 65 dest = vid_data + bespitch*y + x; |
4949 | 66 mem2agpcpy_pic(dest, image[0], width, height, bespitch, stride[0]); |
1 | 67 |
68 width/=2;height/=2;x/=2;y/=2; | |
69 | |
284 | 70 dest = vid_data + bespitch*mga_vid_config.src_height + bespitch*y + 2*x; |
5405 | 71 |
72 interleaveBytes(image[1],image[2],dest, | |
5406 | 73 width, height, |
5405 | 74 stride[1], stride[2], bespitch); |
1 | 75 } |
76 | |
77 static void | |
78 draw_slice_g400(uint8_t *image[], int stride[], int w,int h,int x,int y) | |
79 { | |
80 uint8_t *dest; | |
5317 | 81 uint8_t *dest2; |
1 | 82 uint32_t bespitch,bespitch2; |
83 | |
84 bespitch = (mga_vid_config.src_width + 31) & ~31; | |
85 bespitch2 = bespitch/2; | |
86 | |
87 dest = vid_data + bespitch * y + x; | |
4949 | 88 mem2agpcpy_pic(dest, image[0], w, h, bespitch, stride[0]); |
1 | 89 |
90 w/=2;h/=2;x/=2;y/=2; | |
5317 | 91 |
1 | 92 dest = vid_data + bespitch*mga_vid_config.src_height + bespitch2 * y + x; |
5317 | 93 dest2= dest + bespitch2*mga_vid_config.src_height / 2; |
1 | 94 |
5317 | 95 if(mga_vid_config.format==MGA_VID_FORMAT_YV12){ |
96 // mga_vid's YV12 assumes Y,U,V order (insteda of Y,V,U) :( | |
97 mem2agpcpy_pic(dest, image[1], w, h, bespitch2, stride[1]); | |
98 mem2agpcpy_pic(dest2,image[2], w, h, bespitch2, stride[2]); | |
99 } else { | |
4949 | 100 mem2agpcpy_pic(dest, image[2], w, h, bespitch2, stride[2]); |
5317 | 101 mem2agpcpy_pic(dest2,image[1], w, h, bespitch2, stride[1]); |
102 } | |
1 | 103 |
104 } | |
105 | |
16171
fd51fd1ff231
Fix the return types of all (six) libvo API functions. Used to be uint32_t, but
ivo
parents:
15212
diff
changeset
|
106 static int |
1 | 107 draw_slice(uint8_t *src[], int stride[], int w,int h,int x,int y) |
108 { | |
4949 | 109 |
110 #if 0 | |
111 printf("vo: %p/%d %p/%d %p/%d %dx%d/%d;%d \n", | |
112 src[0],stride[0], | |
113 src[1],stride[1], | |
114 src[2],stride[2], | |
115 w,h,x,y); | |
116 #endif | |
117 | |
1 | 118 if (mga_vid_config.card_type == MGA_G200) |
119 draw_slice_g200(src,stride,w,h,x,y); | |
120 else | |
121 draw_slice_g400(src,stride,w,h,x,y); | |
122 return 0; | |
123 } | |
124 | |
125 static void | |
31 | 126 vo_mga_flip_page(void) |
1 | 127 { |
47 | 128 |
129 // printf("-- flip to %d --\n",mga_next_frame); | |
1 | 130 |
47 | 131 #if 1 |
132 ioctl(f,MGA_VID_FSEL,&mga_next_frame); | |
56 | 133 mga_next_frame=(mga_next_frame+1)%mga_vid_config.num_frames; |
47 | 134 vid_data=frames[mga_next_frame]; |
135 #endif | |
1 | 136 |
137 } | |
138 | |
16171
fd51fd1ff231
Fix the return types of all (six) libvo API functions. Used to be uint32_t, but
ivo
parents:
15212
diff
changeset
|
139 static int |
1 | 140 draw_frame(uint8_t *src[]) |
141 { | |
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
|
142 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
|
143 return 0; |
1 | 144 } |
145 | |
7681 | 146 static uint32_t get_image(mp_image_t *mpi){ |
4971 | 147 uint32_t bespitch = (mga_vid_config.src_width + 31) & ~31; |
148 uint32_t bespitch2 = bespitch/2; | |
149 // printf("mga: get_image() called\n"); | |
4975 | 150 if(mpi->type==MP_IMGTYPE_STATIC && mga_vid_config.num_frames>1) return VO_FALSE; // it is not static |
4971 | 151 if(mpi->flags&MP_IMGFLAG_READABLE) return VO_FALSE; // slow video ram |
5335 | 152 if(mga_vid_config.card_type == MGA_G200 && mpi->flags&MP_IMGFLAG_PLANAR) return VO_FALSE; |
4971 | 153 // printf("width=%d vs. bespitch=%d, flags=0x%X \n",mpi->width,bespitch,mpi->flags); |
154 if((mpi->width==bespitch) || | |
155 (mpi->flags&(MP_IMGFLAG_ACCEPT_STRIDE|MP_IMGFLAG_ACCEPT_WIDTH))){ | |
156 // we're lucky or codec accepts stride => ok, let's go! | |
157 if(mpi->flags&MP_IMGFLAG_PLANAR){ | |
158 mpi->planes[0]=vid_data; | |
5317 | 159 if(mpi->flags&MP_IMGFLAG_SWAPPED){ |
160 mpi->planes[1]=vid_data + bespitch*mga_vid_config.src_height; | |
161 mpi->planes[2]=mpi->planes[1] + bespitch2*mga_vid_config.src_height/2; | |
162 } else { | |
163 mpi->planes[2]=vid_data + bespitch*mga_vid_config.src_height; | |
164 mpi->planes[1]=mpi->planes[2] + bespitch2*mga_vid_config.src_height/2; | |
165 } | |
4971 | 166 mpi->width=mpi->stride[0]=bespitch; |
167 mpi->stride[1]=mpi->stride[2]=bespitch2; | |
168 } else { | |
169 mpi->planes[0]=vid_data; | |
170 mpi->width=bespitch; | |
171 mpi->stride[0]=mpi->width*(mpi->bpp/8); | |
172 } | |
173 mpi->flags|=MP_IMGFLAG_DIRECT; | |
174 // printf("mga: get_image() SUCCESS -> Direct Rendering ENABLED\n"); | |
175 return VO_TRUE; | |
176 } | |
177 return VO_FALSE; | |
178 } | |
179 | |
180 static uint32_t | |
7681 | 181 draw_image(mp_image_t *mpi){ |
182 uint32_t bespitch = (mga_vid_config.src_width + 31) & ~31; | |
183 | |
184 // if -dr or -slices then do nothing: | |
185 if(mpi->flags&(MP_IMGFLAG_DIRECT|MP_IMGFLAG_DRAW_CALLBACK)) return VO_TRUE; | |
186 | |
187 if(mpi->flags&MP_IMGFLAG_PLANAR){ | |
188 // copy planar: | |
189 draw_slice(mpi->planes,mpi->stride,mpi->w,mpi->h,mpi->x,mpi->y); | |
190 } else { | |
191 // copy packed: | |
192 mem2agpcpy_pic(vid_data, mpi->planes[0], // dst,src | |
193 mpi->w*(mpi->bpp/8), mpi->h, // w,h | |
194 bespitch*2, mpi->stride[0]); // dstride,sstride | |
195 } | |
196 return VO_TRUE; | |
197 } | |
198 | |
16171
fd51fd1ff231
Fix the return types of all (six) libvo API functions. Used to be uint32_t, but
ivo
parents:
15212
diff
changeset
|
199 static int |
1 | 200 query_format(uint32_t format) |
201 { | |
202 switch(format){ | |
203 case IMGFMT_YV12: | |
470 | 204 case IMGFMT_I420: |
205 case IMGFMT_IYUV: | |
1 | 206 case IMGFMT_YUY2: |
448
198b46b739d8
qrva eletbe nem kene cvs-t elbaszni inkabb ne nyuljatok hozza baz+
arpi_esp
parents:
413
diff
changeset
|
207 case IMGFMT_UYVY: |
15212
05aa13cdf92f
replace VO and VF numeric flags with #defined identifiers
henry
parents:
13787
diff
changeset
|
208 return VFCAP_CSP_SUPPORTED | VFCAP_CSP_SUPPORTED_BY_HW | VFCAP_OSD|VFCAP_HWSCALE_UP|VFCAP_HWSCALE_DOWN|VFCAP_ACCEPT_STRIDE; |
1 | 209 } |
210 return 0; | |
211 } | |
212 | |
5987 | 213 static void mga_fullscreen() |
214 { | |
215 uint32_t w,h; | |
216 if ( !vo_fs ) { | |
217 vo_fs=VO_TRUE; | |
218 w=vo_screenwidth; h=vo_screenheight; | |
219 aspect(&w,&h,A_ZOOM); | |
220 } else { | |
221 vo_fs=VO_FALSE; | |
222 w=vo_dwidth; h=vo_dheight; | |
223 aspect(&w,&h,A_NOZOOM); | |
224 } | |
225 mga_vid_config.dest_width = w; | |
226 mga_vid_config.dest_height= h; | |
7680 | 227 mga_vid_config.x_org=(vo_screenwidth-w)/2; |
228 mga_vid_config.y_org=(vo_screenheight-h)/2; | |
5987 | 229 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
|
230 mp_msg(MSGT_VO,MSGL_WARN, MSGTR_LIBVO_MGA_ErrorInConfigIoctl ); |
5987 | 231 } |
232 | |
16171
fd51fd1ff231
Fix the return types of all (six) libvo API functions. Used to be uint32_t, but
ivo
parents:
15212
diff
changeset
|
233 static int control(uint32_t request, void *data, ...) |
4970 | 234 { |
235 switch (request) { | |
236 case VOCTRL_QUERY_FORMAT: | |
237 return query_format(*((uint32_t*)data)); | |
4971 | 238 case VOCTRL_GET_IMAGE: |
239 return get_image(data); | |
7681 | 240 case VOCTRL_DRAW_IMAGE: |
241 return draw_image(data); | |
6799 | 242 case VOCTRL_SET_EQUALIZER: |
243 { | |
244 va_list ap; | |
245 short value; | |
246 uint32_t luma,prev; | |
6382
86d5fc5b54e2
fix panscan support and add Jesper Svennevid's <mplayer@svennevid.net> patch
pontscho
parents:
6335
diff
changeset
|
247 |
6799 | 248 if ( strcmp( data,"brightness" ) && strcmp( data,"contrast" ) ) return VO_FALSE; |
249 | |
250 if (ioctl(f,MGA_VID_GET_LUMA,&prev)) { | |
251 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
|
252 mp_msg(MSGT_VO,MSGL_WARN, MSGTR_LIBVO_MGA_CouldNotGetLumaValuesFromTheKernelModule); |
6799 | 253 return VO_FALSE; |
254 } | |
255 | |
256 // printf("GET: 0x%4X 0x%4X \n",(prev>>16),(prev&0xffff)); | |
257 | |
258 va_start(ap, data); | |
259 value = va_arg(ap, int); | |
260 va_end(ap); | |
261 | |
262 // printf("value: %d -> ",value); | |
263 value=((value+100)*255)/200-128; // maps -100=>-128 and +100=>127 | |
264 // printf("%d \n",value); | |
265 | |
266 if(!strcmp(data,"contrast")) | |
267 luma = (prev&0xFFFF0000)|(value&0xFFFF); | |
268 else | |
269 luma = (prev&0xFFFF)|(value<<16); | |
270 | |
271 if (ioctl(f,MGA_VID_SET_LUMA,luma)) { | |
272 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
|
273 mp_msg(MSGT_VO,MSGL_WARN, MSGTR_LIBVO_MGA_CouldNotSetLumaValuesFromTheKernelModule); |
6799 | 274 return VO_FALSE; |
275 } | |
276 | |
277 return VO_TRUE; | |
278 } | |
279 | |
280 case VOCTRL_GET_EQUALIZER: | |
281 { | |
282 va_list ap; | |
283 int * value; | |
284 short val; | |
285 uint32_t luma; | |
286 | |
287 if ( strcmp( data,"brightness" ) && strcmp( data,"contrast" ) ) return VO_FALSE; | |
288 | |
289 if (ioctl(f,MGA_VID_GET_LUMA,&luma)) { | |
290 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
|
291 mp_msg(MSGT_VO,MSGL_WARN, MSGTR_LIBVO_MGA_CouldNotGetLumaValuesFromTheKernelModule); |
6799 | 292 return VO_FALSE; |
293 } | |
294 | |
295 if ( !strcmp( data,"contrast" ) ) | |
296 val=(luma & 0xFFFF); | |
297 else | |
298 val=(luma >> 16); | |
299 | |
300 va_start(ap, data); | |
301 value = va_arg(ap, int*); | |
302 va_end(ap); | |
303 | |
304 *value = (val*200)/255; | |
305 | |
306 return VO_TRUE; | |
307 } | |
308 | |
6382
86d5fc5b54e2
fix panscan support and add Jesper Svennevid's <mplayer@svennevid.net> patch
pontscho
parents:
6335
diff
changeset
|
309 #ifndef VO_XMGA |
5987 | 310 case VOCTRL_FULLSCREEN: |
7680 | 311 if (vo_screenwidth && vo_screenheight) |
312 mga_fullscreen(); | |
313 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
|
314 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
|
315 return VO_TRUE; |
8017
a57aac3a927a
panscan support in -vo mga (actually moved common code to mga_common.c)
arpi
parents:
7777
diff
changeset
|
316 case VOCTRL_GET_PANSCAN: |
a57aac3a927a
panscan support in -vo mga (actually moved common code to mga_common.c)
arpi
parents:
7777
diff
changeset
|
317 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
|
318 return VO_TRUE; |
5987 | 319 #endif |
6382
86d5fc5b54e2
fix panscan support and add Jesper Svennevid's <mplayer@svennevid.net> patch
pontscho
parents:
6335
diff
changeset
|
320 |
6009 | 321 #if defined( VO_XMGA ) && defined( HAVE_NEW_GUI ) |
322 case VOCTRL_GUISUPPORT: | |
323 return VO_TRUE; | |
324 #endif | |
6382
86d5fc5b54e2
fix panscan support and add Jesper Svennevid's <mplayer@svennevid.net> patch
pontscho
parents:
6335
diff
changeset
|
325 |
6307 | 326 #ifdef VO_XMGA |
11542 | 327 case VOCTRL_ONTOP: |
328 vo_x11_ontop(); | |
329 return VO_TRUE; | |
6307 | 330 case VOCTRL_GET_PANSCAN: |
6311
da2dda48b7ec
add mute support ( step 1 ) and fixed panscan bugs (1000l for me)
pontscho
parents:
6307
diff
changeset
|
331 if ( !inited || !vo_fs ) return VO_FALSE; |
6307 | 332 return VO_TRUE; |
6382
86d5fc5b54e2
fix panscan support and add Jesper Svennevid's <mplayer@svennevid.net> patch
pontscho
parents:
6335
diff
changeset
|
333 case VOCTRL_FULLSCREEN: |
86d5fc5b54e2
fix panscan support and add Jesper Svennevid's <mplayer@svennevid.net> patch
pontscho
parents:
6335
diff
changeset
|
334 vo_x11_fullscreen(); |
86d5fc5b54e2
fix panscan support and add Jesper Svennevid's <mplayer@svennevid.net> patch
pontscho
parents:
6335
diff
changeset
|
335 vo_panscan_amount=0; |
86d5fc5b54e2
fix panscan support and add Jesper Svennevid's <mplayer@svennevid.net> patch
pontscho
parents:
6335
diff
changeset
|
336 /* indended, 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
|
337 #endif |
6307 | 338 case VOCTRL_SET_PANSCAN: |
6382
86d5fc5b54e2
fix panscan support and add Jesper Svennevid's <mplayer@svennevid.net> patch
pontscho
parents:
6335
diff
changeset
|
339 if ( vo_fs && ( vo_panscan != vo_panscan_amount ) ) // || ( !vo_fs && vo_panscan_amount ) ) |
6307 | 340 { |
8123
9fc45fe0d444
*HUGE* set of compiler warning fixes, unused variables removal
arpi
parents:
8017
diff
changeset
|
341 // int old_y = vo_panscan_y; |
6307 | 342 panscan_calc(); |
6382
86d5fc5b54e2
fix panscan support and add Jesper Svennevid's <mplayer@svennevid.net> patch
pontscho
parents:
6335
diff
changeset
|
343 // if ( old_y != vo_panscan_y ) |
86d5fc5b54e2
fix panscan support and add Jesper Svennevid's <mplayer@svennevid.net> patch
pontscho
parents:
6335
diff
changeset
|
344 set_window(); |
6307 | 345 } |
346 return VO_TRUE; | |
4970 | 347 } |
348 return VO_NOTIMPL; | |
349 } | |
350 | |
351 | |
7679 | 352 static int mga_init(int width,int height,unsigned int format){ |
353 | |
354 switch(format){ | |
355 case IMGFMT_YV12: | |
356 width+=width&1;height+=height&1; | |
357 mga_vid_config.frame_size = ((width + 31) & ~31) * height + (((width + 31) & ~31) * height) / 2; | |
358 mga_vid_config.format=MGA_VID_FORMAT_I420; break; | |
359 case IMGFMT_I420: | |
360 case IMGFMT_IYUV: | |
361 width+=width&1;height+=height&1; | |
362 mga_vid_config.frame_size = ((width + 31) & ~31) * height + (((width + 31) & ~31) * height) / 2; | |
363 mga_vid_config.format=MGA_VID_FORMAT_YV12; break; | |
364 case IMGFMT_YUY2: | |
365 mga_vid_config.frame_size = ((width + 31) & ~31) * height * 2; | |
366 mga_vid_config.format=MGA_VID_FORMAT_YUY2; break; | |
367 case IMGFMT_UYVY: | |
368 mga_vid_config.frame_size = ((width + 31) & ~31) * height * 2; | |
369 mga_vid_config.format=MGA_VID_FORMAT_UYVY; break; | |
370 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
|
371 mp_msg(MSGT_VO,MSGL_WARN, MSGTR_LIBVO_MGA_InvalidOutputFormat,format); |
7679 | 372 return (-1); |
373 } | |
374 | |
375 mga_vid_config.src_width = width; | |
376 mga_vid_config.src_height= height; | |
7680 | 377 if(!mga_vid_config.dest_width) |
378 mga_vid_config.dest_width = width; | |
379 if(!mga_vid_config.dest_height) | |
380 mga_vid_config.dest_height= height; | |
56 | 381 |
7680 | 382 mga_vid_config.colkey_on=0; |
383 | |
5432 | 384 mga_vid_config.num_frames=(vo_directrendering && !vo_doublebuffering)?1:3; |
56 | 385 mga_vid_config.version=MGA_VID_VERSION; |
22693
b73dca7dbb0f
allow horizontal resolutions >1024 in case we have a G550
attila
parents:
22142
diff
changeset
|
386 |
b73dca7dbb0f
allow horizontal resolutions >1024 in case we have a G550
attila
parents:
22142
diff
changeset
|
387 if(width > 1024 && height > 1024) |
b73dca7dbb0f
allow horizontal resolutions >1024 in case we have a G550
attila
parents:
22142
diff
changeset
|
388 { |
b73dca7dbb0f
allow horizontal resolutions >1024 in case we have a G550
attila
parents:
22142
diff
changeset
|
389 mp_msg(MSGT_VO,MSGL_ERR, MGSTR_LIBVO_MGA_ResolutionTooHigh); |
b73dca7dbb0f
allow horizontal resolutions >1024 in case we have a G550
attila
parents:
22142
diff
changeset
|
390 return (-1); |
b73dca7dbb0f
allow horizontal resolutions >1024 in case we have a G550
attila
parents:
22142
diff
changeset
|
391 } else if(height <= 1024) |
b73dca7dbb0f
allow horizontal resolutions >1024 in case we have a G550
attila
parents:
22142
diff
changeset
|
392 { |
b73dca7dbb0f
allow horizontal resolutions >1024 in case we have a G550
attila
parents:
22142
diff
changeset
|
393 // try whether we have a G550 |
b73dca7dbb0f
allow horizontal resolutions >1024 in case we have a G550
attila
parents:
22142
diff
changeset
|
394 int ret; |
b73dca7dbb0f
allow horizontal resolutions >1024 in case we have a G550
attila
parents:
22142
diff
changeset
|
395 if(ret = ioctl(f,MGA_VID_CONFIG,&mga_vid_config)) |
b73dca7dbb0f
allow horizontal resolutions >1024 in case we have a G550
attila
parents:
22142
diff
changeset
|
396 { |
b73dca7dbb0f
allow horizontal resolutions >1024 in case we have a G550
attila
parents:
22142
diff
changeset
|
397 if(mga_vid_config.card_type != MGA_G550) |
b73dca7dbb0f
allow horizontal resolutions >1024 in case we have a G550
attila
parents:
22142
diff
changeset
|
398 { |
b73dca7dbb0f
allow horizontal resolutions >1024 in case we have a G550
attila
parents:
22142
diff
changeset
|
399 // we don't have a G550, so our resolution is too high |
b73dca7dbb0f
allow horizontal resolutions >1024 in case we have a G550
attila
parents:
22142
diff
changeset
|
400 mp_msg(MSGT_VO,MSGL_ERR, MGSTR_LIBVO_MGA_ResolutionTooHigh); |
b73dca7dbb0f
allow horizontal resolutions >1024 in case we have a G550
attila
parents:
22142
diff
changeset
|
401 return (-1); |
b73dca7dbb0f
allow horizontal resolutions >1024 in case we have a G550
attila
parents:
22142
diff
changeset
|
402 } else { |
b73dca7dbb0f
allow horizontal resolutions >1024 in case we have a G550
attila
parents:
22142
diff
changeset
|
403 // there is a deeper problem |
b73dca7dbb0f
allow horizontal resolutions >1024 in case we have a G550
attila
parents:
22142
diff
changeset
|
404 // 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
|
405 perror("Error in mga_vid_config ioctl()"); |
b73dca7dbb0f
allow horizontal resolutions >1024 in case we have a G550
attila
parents:
22142
diff
changeset
|
406 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
|
407 return -1; |
b73dca7dbb0f
allow horizontal resolutions >1024 in case we have a G550
attila
parents:
22142
diff
changeset
|
408 } |
b73dca7dbb0f
allow horizontal resolutions >1024 in case we have a G550
attila
parents:
22142
diff
changeset
|
409 // 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
|
410 // at this high resolution |
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 } else { |
22694 | 413 // configure mga_vid in case resolution is < 1024x1024 too |
414 if (ioctl(f,MGA_VID_CONFIG,&mga_vid_config)) | |
415 { | |
416 perror("Error in mga_vid_config ioctl()"); | |
417 mp_msg(MSGT_VO,MSGL_WARN, MSGTR_LIBVO_MGA_IncompatibleDriverVersion); | |
418 return -1; | |
419 } | |
22693
b73dca7dbb0f
allow horizontal resolutions >1024 in case we have a G550
attila
parents:
22142
diff
changeset
|
420 } |
5432 | 421 |
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
|
422 mp_msg(MSGT_VO,MSGL_INFO, MSGTR_LIBVO_MGA_UsingBuffers,mga_vid_config.num_frames); |
56 | 423 |
424 frames[0] = (char*)mmap(0,mga_vid_config.frame_size*mga_vid_config.num_frames,PROT_WRITE,MAP_SHARED,f,0); | |
425 frames[1] = frames[0] + 1*mga_vid_config.frame_size; | |
426 frames[2] = frames[0] + 2*mga_vid_config.frame_size; | |
427 frames[3] = frames[0] + 3*mga_vid_config.frame_size; | |
428 mga_next_frame = 0; | |
429 vid_data = frames[mga_next_frame]; | |
430 | |
431 //clear the buffer | |
432 memset(frames[0],0x80,mga_vid_config.frame_size*mga_vid_config.num_frames); | |
433 | |
7777 | 434 #ifndef VO_XMGA |
7679 | 435 ioctl(f,MGA_VID_ON,0); |
7777 | 436 #endif |
7679 | 437 |
56 | 438 return 0; |
439 } | |
440 | |
1637 | 441 static int mga_uninit(){ |
7679 | 442 if(f>=0){ |
1637 | 443 ioctl( f,MGA_VID_OFF,0 ); |
444 munmap(frames[0],mga_vid_config.frame_size*mga_vid_config.num_frames); | |
445 close(f); | |
5389
7296c4262457
quick hack to make vo_mga accept multiple calls to config
rfelker
parents:
5335
diff
changeset
|
446 f = -1; |
7679 | 447 } |
7472
c4434bdf6e51
tons of warning fixes, also some 10l bugfixes, including Dominik's PVA bug
arpi
parents:
6799
diff
changeset
|
448 return 0; |
1637 | 449 } |
4970 | 450 |
16171
fd51fd1ff231
Fix the return types of all (six) libvo API functions. Used to be uint32_t, but
ivo
parents:
15212
diff
changeset
|
451 static int preinit(const char *vo_subdevice) |
4970 | 452 { |
7695 | 453 const char *devname=vo_subdevice?vo_subdevice:"/dev/mga_vid"; |
10005
be14ff86b4e5
ugly ugly fix for michael's 1000l changes in swscaler: mysterious segfault w/g200
rfelker
parents:
9994
diff
changeset
|
454 sws_rgb2rgb_init(get_sws_cpuflags()); |
5433 | 455 |
456 f = open(devname,O_RDWR); | |
457 if(f == -1) | |
458 { | |
459 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
|
460 mp_msg(MSGT_VO,MSGL_WARN, MSGTR_LIBVO_MGA_CouldntOpen,devname); |
5433 | 461 return(-1); |
462 } | |
7679 | 463 |
464 #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
|
465 if (!vo_init()) { |
ff92d9b5ade5
don't keep mga_vid device open if x11 init fails (fixes "-vo xmga,mga")
rfelker
parents:
8123
diff
changeset
|
466 close(f); |
ff92d9b5ade5
don't keep mga_vid device open if x11 init fails (fixes "-vo xmga,mga")
rfelker
parents:
8123
diff
changeset
|
467 return -1; |
ff92d9b5ade5
don't keep mga_vid device open if x11 init fails (fixes "-vo xmga,mga")
rfelker
parents:
8123
diff
changeset
|
468 } |
7679 | 469 #endif |
470 | |
4970 | 471 return 0; |
472 } | |
473 | |
8017
a57aac3a927a
panscan support in -vo mga (actually moved common code to mga_common.c)
arpi
parents:
7777
diff
changeset
|
474 static void set_window( void ){ |
a57aac3a927a
panscan support in -vo mga (actually moved common code to mga_common.c)
arpi
parents:
7777
diff
changeset
|
475 |
a57aac3a927a
panscan support in -vo mga (actually moved common code to mga_common.c)
arpi
parents:
7777
diff
changeset
|
476 #ifdef VO_XMGA |
a57aac3a927a
panscan support in -vo mga (actually moved common code to mga_common.c)
arpi
parents:
7777
diff
changeset
|
477 if ( WinID ) |
a57aac3a927a
panscan support in -vo mga (actually moved common code to mga_common.c)
arpi
parents:
7777
diff
changeset
|
478 { |
a57aac3a927a
panscan support in -vo mga (actually moved common code to mga_common.c)
arpi
parents:
7777
diff
changeset
|
479 XGetGeometry( mDisplay,vo_window,&mRoot,&drwX,&drwY,&drwWidth,&drwHeight,&drwBorderWidth,&drwDepth ); |
a57aac3a927a
panscan support in -vo mga (actually moved common code to mga_common.c)
arpi
parents:
7777
diff
changeset
|
480 mp_msg(MSGT_VO,MSGL_V,"[xmga] x: %d y: %d w: %d h: %d\n",drwX,drwY,drwWidth,drwHeight ); |
a57aac3a927a
panscan support in -vo mga (actually moved common code to mga_common.c)
arpi
parents:
7777
diff
changeset
|
481 drwX=0; drwY=0; |
a57aac3a927a
panscan support in -vo mga (actually moved common code to mga_common.c)
arpi
parents:
7777
diff
changeset
|
482 XTranslateCoordinates( mDisplay,vo_window,mRoot,0,0,&drwcX,&drwcY,&mRoot ); |
a57aac3a927a
panscan support in -vo mga (actually moved common code to mga_common.c)
arpi
parents:
7777
diff
changeset
|
483 mp_msg(MSGT_VO,MSGL_V,"[xmga] dcx: %d dcy: %d dx: %d dy: %d dw: %d dh: %d\n",drwcX,drwcY,drwX,drwY,drwWidth,drwHeight ); |
a57aac3a927a
panscan support in -vo mga (actually moved common code to mga_common.c)
arpi
parents:
7777
diff
changeset
|
484 |
a57aac3a927a
panscan support in -vo mga (actually moved common code to mga_common.c)
arpi
parents:
7777
diff
changeset
|
485 } |
a57aac3a927a
panscan support in -vo mga (actually moved common code to mga_common.c)
arpi
parents:
7777
diff
changeset
|
486 else |
a57aac3a927a
panscan support in -vo mga (actually moved common code to mga_common.c)
arpi
parents:
7777
diff
changeset
|
487 #endif |
a57aac3a927a
panscan support in -vo mga (actually moved common code to mga_common.c)
arpi
parents:
7777
diff
changeset
|
488 { drwX=drwcX=vo_dx; drwY=drwcY=vo_dy; drwWidth=vo_dwidth; drwHeight=vo_dheight; } |
a57aac3a927a
panscan support in -vo mga (actually moved common code to mga_common.c)
arpi
parents:
7777
diff
changeset
|
489 |
a57aac3a927a
panscan support in -vo mga (actually moved common code to mga_common.c)
arpi
parents:
7777
diff
changeset
|
490 aspect(&dwidth,&dheight,A_NOZOOM); |
a57aac3a927a
panscan support in -vo mga (actually moved common code to mga_common.c)
arpi
parents:
7777
diff
changeset
|
491 if ( vo_fs ) |
a57aac3a927a
panscan support in -vo mga (actually moved common code to mga_common.c)
arpi
parents:
7777
diff
changeset
|
492 { |
a57aac3a927a
panscan support in -vo mga (actually moved common code to mga_common.c)
arpi
parents:
7777
diff
changeset
|
493 aspect(&dwidth,&dheight,A_ZOOM); |
a57aac3a927a
panscan support in -vo mga (actually moved common code to mga_common.c)
arpi
parents:
7777
diff
changeset
|
494 drwX=( vo_screenwidth - (dwidth > vo_screenwidth?vo_screenwidth:dwidth) ) / 2; |
a57aac3a927a
panscan support in -vo mga (actually moved common code to mga_common.c)
arpi
parents:
7777
diff
changeset
|
495 drwcX+=drwX; |
a57aac3a927a
panscan support in -vo mga (actually moved common code to mga_common.c)
arpi
parents:
7777
diff
changeset
|
496 drwY=( vo_screenheight - (dheight > vo_screenheight?vo_screenheight:dheight) ) / 2; |
a57aac3a927a
panscan support in -vo mga (actually moved common code to mga_common.c)
arpi
parents:
7777
diff
changeset
|
497 drwcY+=drwY; |
a57aac3a927a
panscan support in -vo mga (actually moved common code to mga_common.c)
arpi
parents:
7777
diff
changeset
|
498 drwWidth=(dwidth > vo_screenwidth?vo_screenwidth:dwidth); |
a57aac3a927a
panscan support in -vo mga (actually moved common code to mga_common.c)
arpi
parents:
7777
diff
changeset
|
499 drwHeight=(dheight > vo_screenheight?vo_screenheight:dheight); |
a57aac3a927a
panscan support in -vo mga (actually moved common code to mga_common.c)
arpi
parents:
7777
diff
changeset
|
500 mp_msg(MSGT_VO,MSGL_V,"[xmga-fs] dcx: %d dcy: %d dx: %d dy: %d dw: %d dh: %d\n",drwcX,drwcY,drwX,drwY,drwWidth,drwHeight ); |
a57aac3a927a
panscan support in -vo mga (actually moved common code to mga_common.c)
arpi
parents:
7777
diff
changeset
|
501 } |
a57aac3a927a
panscan support in -vo mga (actually moved common code to mga_common.c)
arpi
parents:
7777
diff
changeset
|
502 vo_dwidth=drwWidth; vo_dheight=drwHeight; |
a57aac3a927a
panscan support in -vo mga (actually moved common code to mga_common.c)
arpi
parents:
7777
diff
changeset
|
503 |
a57aac3a927a
panscan support in -vo mga (actually moved common code to mga_common.c)
arpi
parents:
7777
diff
changeset
|
504 #ifdef VO_XMGA |
a57aac3a927a
panscan support in -vo mga (actually moved common code to mga_common.c)
arpi
parents:
7777
diff
changeset
|
505 #ifdef HAVE_XINERAMA |
a57aac3a927a
panscan support in -vo mga (actually moved common code to mga_common.c)
arpi
parents:
7777
diff
changeset
|
506 if(XineramaIsActive(mDisplay)) |
a57aac3a927a
panscan support in -vo mga (actually moved common code to mga_common.c)
arpi
parents:
7777
diff
changeset
|
507 { |
a57aac3a927a
panscan support in -vo mga (actually moved common code to mga_common.c)
arpi
parents:
7777
diff
changeset
|
508 XineramaScreenInfo *screens; |
a57aac3a927a
panscan support in -vo mga (actually moved common code to mga_common.c)
arpi
parents:
7777
diff
changeset
|
509 int num_screens; |
a57aac3a927a
panscan support in -vo mga (actually moved common code to mga_common.c)
arpi
parents:
7777
diff
changeset
|
510 int i; |
a57aac3a927a
panscan support in -vo mga (actually moved common code to mga_common.c)
arpi
parents:
7777
diff
changeset
|
511 |
a57aac3a927a
panscan support in -vo mga (actually moved common code to mga_common.c)
arpi
parents:
7777
diff
changeset
|
512 screens = XineramaQueryScreens(mDisplay,&num_screens); |
a57aac3a927a
panscan support in -vo mga (actually moved common code to mga_common.c)
arpi
parents:
7777
diff
changeset
|
513 |
a57aac3a927a
panscan support in -vo mga (actually moved common code to mga_common.c)
arpi
parents:
7777
diff
changeset
|
514 /* 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
|
515 i = 0; |
8988 | 516 while(i<num_screens && |
517 ((screens[i].x_org < drwcX) || | |
518 (screens[i].y_org < drwcY) || | |
519 (screens[i].x_org + screens[i].width >= drwcX) || | |
520 (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
|
521 { |
a57aac3a927a
panscan support in -vo mga (actually moved common code to mga_common.c)
arpi
parents:
7777
diff
changeset
|
522 i++; |
a57aac3a927a
panscan support in -vo mga (actually moved common code to mga_common.c)
arpi
parents:
7777
diff
changeset
|
523 } |
a57aac3a927a
panscan support in -vo mga (actually moved common code to mga_common.c)
arpi
parents:
7777
diff
changeset
|
524 |
8988 | 525 if(i<num_screens) |
526 { | |
527 /* save the screen we are on */ | |
528 xinerama_screen = i; | |
529 } else { | |
530 /* oops.. couldnt find the screen we are on | |
531 * because the upper left corner left the | |
532 * visual range. assume we are still on the | |
533 * same screen | |
534 */ | |
535 i = xinerama_screen; | |
536 } | |
537 | |
8017
a57aac3a927a
panscan support in -vo mga (actually moved common code to mga_common.c)
arpi
parents:
7777
diff
changeset
|
538 /* 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
|
539 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
|
540 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
|
541 XFree(screens); |
a57aac3a927a
panscan support in -vo mga (actually moved common code to mga_common.c)
arpi
parents:
7777
diff
changeset
|
542 } |
a57aac3a927a
panscan support in -vo mga (actually moved common code to mga_common.c)
arpi
parents:
7777
diff
changeset
|
543 |
a57aac3a927a
panscan support in -vo mga (actually moved common code to mga_common.c)
arpi
parents:
7777
diff
changeset
|
544 #endif |
a57aac3a927a
panscan support in -vo mga (actually moved common code to mga_common.c)
arpi
parents:
7777
diff
changeset
|
545 |
a57aac3a927a
panscan support in -vo mga (actually moved common code to mga_common.c)
arpi
parents:
7777
diff
changeset
|
546 mDrawColorKey(); |
a57aac3a927a
panscan support in -vo mga (actually moved common code to mga_common.c)
arpi
parents:
7777
diff
changeset
|
547 #endif |
a57aac3a927a
panscan support in -vo mga (actually moved common code to mga_common.c)
arpi
parents:
7777
diff
changeset
|
548 |
a57aac3a927a
panscan support in -vo mga (actually moved common code to mga_common.c)
arpi
parents:
7777
diff
changeset
|
549 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
|
550 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
|
551 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
|
552 mga_vid_config.dest_height=drwHeight; |
a57aac3a927a
panscan support in -vo mga (actually moved common code to mga_common.c)
arpi
parents:
7777
diff
changeset
|
553 if ( vo_panscan > 0.0f && vo_fs ) |
a57aac3a927a
panscan support in -vo mga (actually moved common code to mga_common.c)
arpi
parents:
7777
diff
changeset
|
554 { |
a57aac3a927a
panscan support in -vo mga (actually moved common code to mga_common.c)
arpi
parents:
7777
diff
changeset
|
555 drwX-=vo_panscan_x>>1; |
a57aac3a927a
panscan support in -vo mga (actually moved common code to mga_common.c)
arpi
parents:
7777
diff
changeset
|
556 drwY-=vo_panscan_y>>1; |
a57aac3a927a
panscan support in -vo mga (actually moved common code to mga_common.c)
arpi
parents:
7777
diff
changeset
|
557 drwWidth+=vo_panscan_x; |
a57aac3a927a
panscan support in -vo mga (actually moved common code to mga_common.c)
arpi
parents:
7777
diff
changeset
|
558 drwHeight+=vo_panscan_y; |
a57aac3a927a
panscan support in -vo mga (actually moved common code to mga_common.c)
arpi
parents:
7777
diff
changeset
|
559 |
a57aac3a927a
panscan support in -vo mga (actually moved common code to mga_common.c)
arpi
parents:
7777
diff
changeset
|
560 mga_vid_config.x_org-=vo_panscan_x>>1; |
a57aac3a927a
panscan support in -vo mga (actually moved common code to mga_common.c)
arpi
parents:
7777
diff
changeset
|
561 mga_vid_config.y_org-=vo_panscan_y>>1; |
a57aac3a927a
panscan support in -vo mga (actually moved common code to mga_common.c)
arpi
parents:
7777
diff
changeset
|
562 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
|
563 mga_vid_config.dest_height=drwHeight; |
a57aac3a927a
panscan support in -vo mga (actually moved common code to mga_common.c)
arpi
parents:
7777
diff
changeset
|
564 #ifdef VO_XMGA |
a57aac3a927a
panscan support in -vo mga (actually moved common code to mga_common.c)
arpi
parents:
7777
diff
changeset
|
565 mDrawColorKey(); |
a57aac3a927a
panscan support in -vo mga (actually moved common code to mga_common.c)
arpi
parents:
7777
diff
changeset
|
566 #endif |
a57aac3a927a
panscan support in -vo mga (actually moved common code to mga_common.c)
arpi
parents:
7777
diff
changeset
|
567 } |
9047 | 568 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
|
569 } |