annotate libvo/vo_xmga.c @ 1346:d6e6132bff35

AUDIO_ENCODING_LINEAR8 format is not available on sunos 5.5. Format is unsupported in mplayer for now, to get the code compiled on that old version of the OS.
author jkeil
date Thu, 19 Jul 2001 20:04:54 +0000
parents 5cbbca64a5c9
children d40f2b686846
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
100
201c2f931497 added #define SHOW_TIME option... (debug)
arpi_esp
parents: 56
diff changeset
1
201c2f931497 added #define SHOW_TIME option... (debug)
arpi_esp
parents: 56
diff changeset
2 //#define SHOW_TIME
1
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
3
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
4 /*
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
5 * video_out_xmga.c
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
6 *
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
7 * Copyright (C) Zoltan Ponekker - Jan 2001
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
8 *
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
9 * This file is part of mpeg2dec, a free MPEG-2 video stream decoder.
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
10 *
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
11 * mpeg2dec is free software; you can redistribute it and/or modify
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
12 * it under the terms of the GNU General Public License as published by
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
13 * the Free Software Foundation; either version 2, or (at your option)
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
14 * any later version.
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
15 *
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
16 * mpeg2dec is distributed in the hope that it will be useful,
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
17 * but WITHOUT ANY WARRANTY; without even the implied warranty of
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
18 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
19 * GNU General Public License for more details.
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
20 *
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
21 * You should have received a copy of the GNU General Public License
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
22 * along with GNU Make; see the file COPYING. If not, write to
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
23 * the Free Software Foundation, 675 Mass Ave, Cambridge, MA 02139, USA.
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
24 *
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
25 */
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
26
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
27 #include <stdio.h>
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
28 #include <stdlib.h>
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
29 #include <string.h>
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
30
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
31 #include "config.h"
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
32 #include "video_out.h"
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
33 #include "video_out_internal.h"
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
34
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
35 LIBVO_EXTERN( xmga )
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
36
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
37 #include <sys/ioctl.h>
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
38 #include <unistd.h>
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
39 #include <fcntl.h>
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
40 #include <sys/mman.h>
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
41
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
42 #include "drivers/mga_vid.h"
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
43
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
44 #include <X11/Xlib.h>
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
45 #include <X11/Xutil.h>
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
46 #include <errno.h>
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
47
31
1fc618eba830 added check_events() interface
arpi_esp
parents: 1
diff changeset
48 #include "x11_common.h"
616
41d6eec69b60 clean up
pontscho
parents: 614
diff changeset
49 #include "sub.h"
31
1fc618eba830 added check_events() interface
arpi_esp
parents: 1
diff changeset
50
182
80a7b40f201a *** empty log message ***
pontscho
parents: 120
diff changeset
51 #ifdef SHOW_TIME
100
201c2f931497 added #define SHOW_TIME option... (debug)
arpi_esp
parents: 56
diff changeset
52 #include "../linux/timer.h"
201c2f931497 added #define SHOW_TIME option... (debug)
arpi_esp
parents: 56
diff changeset
53 static unsigned int timer=0;
201c2f931497 added #define SHOW_TIME option... (debug)
arpi_esp
parents: 56
diff changeset
54 static unsigned int timerd=0;
201c2f931497 added #define SHOW_TIME option... (debug)
arpi_esp
parents: 56
diff changeset
55 #endif
201c2f931497 added #define SHOW_TIME option... (debug)
arpi_esp
parents: 56
diff changeset
56
1
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
57 static vo_info_t vo_info =
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
58 {
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
59 "X11 (Matrox G200/G400 overlay in window using /dev/mga_vid)",
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
60 "xmga",
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
61 "Zoltan Ponekker <pontscho@makacs.poliod.hu>",
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
62 ""
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
63 };
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
64
922
db06ae8967eb Centralized and cleaned up X11 connecting, fixed remote X11 playing, -display option for mplayer. SHOULD BE TESTED.
lgb
parents: 844
diff changeset
65 //static Display * mDisplay;
1
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
66 static Window mWindow;
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
67 static GC mGC;
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
68 static XGCValues wGCV;
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
69
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
70 static XImage * myximage;
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
71
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
72 static uint32_t mDepth, bpp, mode;
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
73 static XWindowAttributes attribs;
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
74 static uint32_t X_already_started=0;
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
75
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
76 static uint32_t wndHeight;
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
77 static uint32_t wndWidth;
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
78 static uint32_t wndX;
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
79 static uint32_t wndY;
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
80
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
81 static uint32_t fgColor;
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
82
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
83 static uint32_t mvHeight;
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
84 static uint32_t mvWidth;
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
85
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
86 static Window mRoot;
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
87 static uint32_t drwX,drwY,drwWidth,drwHeight,drwBorderWidth,drwDepth;
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
88 static uint32_t drwcX,drwcY,dwidth,dheight,mFullscreen;
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
89
723
c3e0bdb64027 add gui support
pontscho
parents: 616
diff changeset
90 #ifdef HAVE_GUI
c3e0bdb64027 add gui support
pontscho
parents: 616
diff changeset
91 static uint32_t mdwidth,mdheight;
c3e0bdb64027 add gui support
pontscho
parents: 616
diff changeset
92 #endif
c3e0bdb64027 add gui support
pontscho
parents: 616
diff changeset
93
1
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
94 static XSetWindowAttributes xWAttribs;
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
95
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
96 #include "mga_common.c"
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
97
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
98 static void mDrawColorKey( void )
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
99 {
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
100 XClearWindow( mDisplay,mWindow );
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
101 XSetForeground( mDisplay,mGC,fgColor );
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
102 XFillRectangle( mDisplay,mWindow,mGC,drwX,drwY,drwWidth,(mFullscreen?drwHeight - 1:drwHeight) );
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
103 XFlush( mDisplay );
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
104 }
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
105
120
93ea0c6aae7f common window setup code moved to set_window()
arpi_esp
parents: 100
diff changeset
106 static void set_window(){
93ea0c6aae7f common window setup code moved to set_window()
arpi_esp
parents: 100
diff changeset
107
93ea0c6aae7f common window setup code moved to set_window()
arpi_esp
parents: 100
diff changeset
108 XGetGeometry( mDisplay,mWindow,&mRoot,&drwX,&drwY,&drwWidth,&drwHeight,&drwBorderWidth,&drwDepth );
93ea0c6aae7f common window setup code moved to set_window()
arpi_esp
parents: 100
diff changeset
109 drwX=0; drwY=0; // drwWidth=wndWidth; drwHeight=wndHeight;
93ea0c6aae7f common window setup code moved to set_window()
arpi_esp
parents: 100
diff changeset
110 XTranslateCoordinates( mDisplay,mWindow,mRoot,0,0,&drwcX,&drwcY,&mRoot );
340
1f7c824033fb less, and more informal printfs
arpi_esp
parents: 324
diff changeset
111 //fprintf( stderr,"[xmga] dcx: %d dcy: %d dx: %d dy: %d dw: %d dh: %d\n",drwcX,drwcY,drwX,drwY,drwWidth,drwHeight );
120
93ea0c6aae7f common window setup code moved to set_window()
arpi_esp
parents: 100
diff changeset
112
723
c3e0bdb64027 add gui support
pontscho
parents: 616
diff changeset
113 #ifdef HAVE_GUI
c3e0bdb64027 add gui support
pontscho
parents: 616
diff changeset
114 if ( vo_window != None )
c3e0bdb64027 add gui support
pontscho
parents: 616
diff changeset
115 {
c3e0bdb64027 add gui support
pontscho
parents: 616
diff changeset
116 mFullscreen=0;
c3e0bdb64027 add gui support
pontscho
parents: 616
diff changeset
117 dwidth=mdwidth; dheight=mdheight;
c3e0bdb64027 add gui support
pontscho
parents: 616
diff changeset
118 if ( ( drwWidth == vo_screenwidth )&&( drwHeight == vo_screenheight ) )
c3e0bdb64027 add gui support
pontscho
parents: 616
diff changeset
119 {
c3e0bdb64027 add gui support
pontscho
parents: 616
diff changeset
120 mFullscreen=1;
c3e0bdb64027 add gui support
pontscho
parents: 616
diff changeset
121 dwidth=vo_screenwidth;
c3e0bdb64027 add gui support
pontscho
parents: 616
diff changeset
122 dheight=vo_screenwidth * mdheight / mdwidth;
c3e0bdb64027 add gui support
pontscho
parents: 616
diff changeset
123 }
c3e0bdb64027 add gui support
pontscho
parents: 616
diff changeset
124 }
c3e0bdb64027 add gui support
pontscho
parents: 616
diff changeset
125 #endif
c3e0bdb64027 add gui support
pontscho
parents: 616
diff changeset
126
120
93ea0c6aae7f common window setup code moved to set_window()
arpi_esp
parents: 100
diff changeset
127 if ( mFullscreen )
93ea0c6aae7f common window setup code moved to set_window()
arpi_esp
parents: 100
diff changeset
128 {
93ea0c6aae7f common window setup code moved to set_window()
arpi_esp
parents: 100
diff changeset
129 drwX=( vo_screenwidth - (dwidth > vo_screenwidth?vo_screenwidth:dwidth) ) / 2;
93ea0c6aae7f common window setup code moved to set_window()
arpi_esp
parents: 100
diff changeset
130 drwcX+=drwX;
93ea0c6aae7f common window setup code moved to set_window()
arpi_esp
parents: 100
diff changeset
131 drwY=( vo_screenheight - (dheight > vo_screenheight?vo_screenheight:dheight) ) / 2;
93ea0c6aae7f common window setup code moved to set_window()
arpi_esp
parents: 100
diff changeset
132 drwcY+=drwY;
93ea0c6aae7f common window setup code moved to set_window()
arpi_esp
parents: 100
diff changeset
133 drwWidth=(dwidth > vo_screenwidth?vo_screenwidth:dwidth);
93ea0c6aae7f common window setup code moved to set_window()
arpi_esp
parents: 100
diff changeset
134 drwHeight=(dheight > vo_screenheight?vo_screenheight:dheight);
340
1f7c824033fb less, and more informal printfs
arpi_esp
parents: 324
diff changeset
135 //fprintf( stderr,"[xmga-fs] dcx: %d dcy: %d dx: %d dy: %d dw: %d dh: %d\n",drwcX,drwcY,drwX,drwY,drwWidth,drwHeight );
120
93ea0c6aae7f common window setup code moved to set_window()
arpi_esp
parents: 100
diff changeset
136 }
93ea0c6aae7f common window setup code moved to set_window()
arpi_esp
parents: 100
diff changeset
137
93ea0c6aae7f common window setup code moved to set_window()
arpi_esp
parents: 100
diff changeset
138 mDrawColorKey();
93ea0c6aae7f common window setup code moved to set_window()
arpi_esp
parents: 100
diff changeset
139
93ea0c6aae7f common window setup code moved to set_window()
arpi_esp
parents: 100
diff changeset
140 mga_vid_config.x_org=drwcX;
93ea0c6aae7f common window setup code moved to set_window()
arpi_esp
parents: 100
diff changeset
141 mga_vid_config.y_org=drwcY;
93ea0c6aae7f common window setup code moved to set_window()
arpi_esp
parents: 100
diff changeset
142 mga_vid_config.dest_width=drwWidth;
93ea0c6aae7f common window setup code moved to set_window()
arpi_esp
parents: 100
diff changeset
143 mga_vid_config.dest_height=drwHeight;
93ea0c6aae7f common window setup code moved to set_window()
arpi_esp
parents: 100
diff changeset
144
93ea0c6aae7f common window setup code moved to set_window()
arpi_esp
parents: 100
diff changeset
145 }
93ea0c6aae7f common window setup code moved to set_window()
arpi_esp
parents: 100
diff changeset
146
31
1fc618eba830 added check_events() interface
arpi_esp
parents: 1
diff changeset
147 static void check_events(void)
1
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
148 {
31
1fc618eba830 added check_events() interface
arpi_esp
parents: 1
diff changeset
149 int e=vo_x11_check_events(mDisplay);
1
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
150
31
1fc618eba830 added check_events() interface
arpi_esp
parents: 1
diff changeset
151 if(e&VO_EVENT_RESIZE){
120
93ea0c6aae7f common window setup code moved to set_window()
arpi_esp
parents: 100
diff changeset
152 set_window();
1
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
153 if ( ioctl( f,MGA_VID_CONFIG,&mga_vid_config ) )
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
154 {
614
f83ec60bce49 fprintf(stderr converted to printf(
szabii
parents: 612
diff changeset
155 printf( "Error in mga_vid_config ioctl (wrong mga_vid.o version?)" );
31
1fc618eba830 added check_events() interface
arpi_esp
parents: 1
diff changeset
156 // exit( 0 );
1
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
157 }
31
1fc618eba830 added check_events() interface
arpi_esp
parents: 1
diff changeset
158
1fc618eba830 added check_events() interface
arpi_esp
parents: 1
diff changeset
159 } else
1fc618eba830 added check_events() interface
arpi_esp
parents: 1
diff changeset
160 if(e&VO_EVENT_EXPOSE) mDrawColorKey();
1fc618eba830 added check_events() interface
arpi_esp
parents: 1
diff changeset
161
1
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
162 }
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
163
31
1fc618eba830 added check_events() interface
arpi_esp
parents: 1
diff changeset
164 static void flip_page(void){
182
80a7b40f201a *** empty log message ***
pontscho
parents: 120
diff changeset
165 #ifdef SHOW_TIME
100
201c2f931497 added #define SHOW_TIME option... (debug)
arpi_esp
parents: 56
diff changeset
166 unsigned int t;
201c2f931497 added #define SHOW_TIME option... (debug)
arpi_esp
parents: 56
diff changeset
167 t=GetTimer();
201c2f931497 added #define SHOW_TIME option... (debug)
arpi_esp
parents: 56
diff changeset
168 printf(" [timer: %08X diff: %6d dd: %6d ] \n",t,t-timer,(t-timer)-timerd);
201c2f931497 added #define SHOW_TIME option... (debug)
arpi_esp
parents: 56
diff changeset
169 timerd=t-timer;
201c2f931497 added #define SHOW_TIME option... (debug)
arpi_esp
parents: 56
diff changeset
170 timer=t;
182
80a7b40f201a *** empty log message ***
pontscho
parents: 120
diff changeset
171 #endif
100
201c2f931497 added #define SHOW_TIME option... (debug)
arpi_esp
parents: 56
diff changeset
172
213
6ec8f6ab6cb1 subtitle+OSD font support
arpi_esp
parents: 202
diff changeset
173 vo_draw_text(mga_vid_config.src_width,mga_vid_config.src_height,draw_alpha);
202
6ad0715dfac8 grey+alpha rendering support (for .sub)
arpi_esp
parents: 182
diff changeset
174
31
1fc618eba830 added check_events() interface
arpi_esp
parents: 1
diff changeset
175 check_events();
1fc618eba830 added check_events() interface
arpi_esp
parents: 1
diff changeset
176 vo_mga_flip_page();
1fc618eba830 added check_events() interface
arpi_esp
parents: 1
diff changeset
177 }
1
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
178
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
179 static uint32_t init( uint32_t width, uint32_t height, uint32_t d_width, uint32_t d_height, uint32_t fullscreen, char *title, uint32_t format )
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
180 {
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
181 char * frame_mem;
56
cdb2e30be421 mga_vid fixes, code cleanup
arpi_esp
parents: 47
diff changeset
182 // uint32_t frame_size;
927
2098be9cb19b mScreen removed -> segfault solved
arpi_esp
parents: 922
diff changeset
183 // int mScreen;
1
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
184 unsigned int fg, bg;
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
185 char * mTitle=(title == NULL) ? "XMGA render" : title;
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
186 char * name=":0.0";
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
187 XSizeHints hint;
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
188 XVisualInfo vinfo;
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
189 XEvent xev;
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
190
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
191 XGCValues xgcv;
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
192 unsigned long xswamask;
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
193
1210
5cbbca64a5c9 vo_subdevice support
arpi_esp
parents: 1137
diff changeset
194 char *devname=vo_subdevice?vo_subdevice:"/dev/mga_vid";
5cbbca64a5c9 vo_subdevice support
arpi_esp
parents: 1137
diff changeset
195
5cbbca64a5c9 vo_subdevice support
arpi_esp
parents: 1137
diff changeset
196 f = open(devname,O_RDWR);
5cbbca64a5c9 vo_subdevice support
arpi_esp
parents: 1137
diff changeset
197 if(f == -1)
5cbbca64a5c9 vo_subdevice support
arpi_esp
parents: 1137
diff changeset
198 {
5cbbca64a5c9 vo_subdevice support
arpi_esp
parents: 1137
diff changeset
199 printf("Couldn't open %s\n",devname);
5cbbca64a5c9 vo_subdevice support
arpi_esp
parents: 1137
diff changeset
200 return(-1);
5cbbca64a5c9 vo_subdevice support
arpi_esp
parents: 1137
diff changeset
201 }
1
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
202
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
203 switch(format)
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
204 {
182
80a7b40f201a *** empty log message ***
pontscho
parents: 120
diff changeset
205 case IMGFMT_YV12:
56
cdb2e30be421 mga_vid fixes, code cleanup
arpi_esp
parents: 47
diff changeset
206 mga_vid_config.format=MGA_VID_FORMAT_YV12;
182
80a7b40f201a *** empty log message ***
pontscho
parents: 120
diff changeset
207 mga_vid_config.frame_size=( ( width + 31 ) & ~31 ) * height + ( ( ( width + 31 ) & ~31 ) * height ) / 2;
56
cdb2e30be421 mga_vid fixes, code cleanup
arpi_esp
parents: 47
diff changeset
208 break;
470
8e101a5d9dc2 I420/IYUV support
arpi_esp
parents: 448
diff changeset
209 case IMGFMT_I420:
8e101a5d9dc2 I420/IYUV support
arpi_esp
parents: 448
diff changeset
210 mga_vid_config.format=MGA_VID_FORMAT_I420;
8e101a5d9dc2 I420/IYUV support
arpi_esp
parents: 448
diff changeset
211 mga_vid_config.frame_size=( ( width + 31 ) & ~31 ) * height + ( ( ( width + 31 ) & ~31 ) * height ) / 2;
8e101a5d9dc2 I420/IYUV support
arpi_esp
parents: 448
diff changeset
212 break;
8e101a5d9dc2 I420/IYUV support
arpi_esp
parents: 448
diff changeset
213 case IMGFMT_IYUV:
8e101a5d9dc2 I420/IYUV support
arpi_esp
parents: 448
diff changeset
214 mga_vid_config.format=MGA_VID_FORMAT_IYUV;
8e101a5d9dc2 I420/IYUV support
arpi_esp
parents: 448
diff changeset
215 mga_vid_config.frame_size=( ( width + 31 ) & ~31 ) * height + ( ( ( width + 31 ) & ~31 ) * height ) / 2;
8e101a5d9dc2 I420/IYUV support
arpi_esp
parents: 448
diff changeset
216 break;
56
cdb2e30be421 mga_vid fixes, code cleanup
arpi_esp
parents: 47
diff changeset
217 case IMGFMT_YUY2:
cdb2e30be421 mga_vid fixes, code cleanup
arpi_esp
parents: 47
diff changeset
218 mga_vid_config.format=MGA_VID_FORMAT_YUY2;
182
80a7b40f201a *** empty log message ***
pontscho
parents: 120
diff changeset
219 mga_vid_config.frame_size=( ( width + 31 ) & ~31 ) * height * 2;
56
cdb2e30be421 mga_vid fixes, code cleanup
arpi_esp
parents: 47
diff changeset
220 break;
448
198b46b739d8 qrva eletbe nem kene cvs-t elbaszni inkabb ne nyuljatok hozza baz+
arpi_esp
parents: 384
diff changeset
221 case IMGFMT_UYVY:
198b46b739d8 qrva eletbe nem kene cvs-t elbaszni inkabb ne nyuljatok hozza baz+
arpi_esp
parents: 384
diff changeset
222 mga_vid_config.format=MGA_VID_FORMAT_UYVY;
198b46b739d8 qrva eletbe nem kene cvs-t elbaszni inkabb ne nyuljatok hozza baz+
arpi_esp
parents: 384
diff changeset
223 mga_vid_config.frame_size=( ( width + 31 ) & ~31 ) * height * 2;
198b46b739d8 qrva eletbe nem kene cvs-t elbaszni inkabb ne nyuljatok hozza baz+
arpi_esp
parents: 384
diff changeset
224 break;
614
f83ec60bce49 fprintf(stderr converted to printf(
szabii
parents: 612
diff changeset
225 default: printf("mga: invalid output format %0X\n",format); return (-1);
1
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
226 }
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
227
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
228 if ( X_already_started ) return -1;
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
229
922
db06ae8967eb Centralized and cleaned up X11 connecting, fixed remote X11 playing, -display option for mplayer. SHOULD BE TESTED.
lgb
parents: 844
diff changeset
230 if (!vo_init()) return -1;
1
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
231
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
232 mvWidth=width; mvHeight=height;
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
233
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
234 wndX=0; wndY=0;
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
235 wndWidth=d_width; wndHeight=d_height;
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
236 dwidth=d_width; dheight=d_height;
723
c3e0bdb64027 add gui support
pontscho
parents: 616
diff changeset
237 #ifdef HAVE_GUI
c3e0bdb64027 add gui support
pontscho
parents: 616
diff changeset
238 mdwidth=d_width; mdheight=d_height;
c3e0bdb64027 add gui support
pontscho
parents: 616
diff changeset
239 #endif
844
108ea5157cbc didn't handle flags parameter correctly
arpi_esp
parents: 723
diff changeset
240 mFullscreen=fullscreen&1;
1
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
241
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
242 switch ( vo_depthonscreen )
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
243 {
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
244 case 32:
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
245 case 24: fgColor=0x00ff00ffL; break;
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
246 case 16: fgColor=0xf81fL; break;
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
247 case 15: fgColor=0x7c1fL; break;
614
f83ec60bce49 fprintf(stderr converted to printf(
szabii
parents: 612
diff changeset
248 default: printf( "Sorry, this (%d) color depth not supported.\n",vo_depthonscreen ); return -1;
1
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
249 }
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
250
723
c3e0bdb64027 add gui support
pontscho
parents: 616
diff changeset
251 #ifdef HAVE_GUI
c3e0bdb64027 add gui support
pontscho
parents: 616
diff changeset
252 if ( vo_window == None )
c3e0bdb64027 add gui support
pontscho
parents: 616
diff changeset
253 {
c3e0bdb64027 add gui support
pontscho
parents: 616
diff changeset
254 #endif
844
108ea5157cbc didn't handle flags parameter correctly
arpi_esp
parents: 723
diff changeset
255 if ( mFullscreen )
723
c3e0bdb64027 add gui support
pontscho
parents: 616
diff changeset
256 {
c3e0bdb64027 add gui support
pontscho
parents: 616
diff changeset
257 wndWidth=vo_screenwidth;
c3e0bdb64027 add gui support
pontscho
parents: 616
diff changeset
258 wndHeight=vo_screenheight;
c3e0bdb64027 add gui support
pontscho
parents: 616
diff changeset
259 }
c3e0bdb64027 add gui support
pontscho
parents: 616
diff changeset
260
c3e0bdb64027 add gui support
pontscho
parents: 616
diff changeset
261 XGetWindowAttributes( mDisplay,DefaultRootWindow( mDisplay ),&attribs );
c3e0bdb64027 add gui support
pontscho
parents: 616
diff changeset
262 mDepth=attribs.depth;
c3e0bdb64027 add gui support
pontscho
parents: 616
diff changeset
263 if ( mDepth != 15 && mDepth != 16 && mDepth != 24 && mDepth != 32 ) mDepth=24;
c3e0bdb64027 add gui support
pontscho
parents: 616
diff changeset
264 XMatchVisualInfo( mDisplay,mScreen,mDepth,TrueColor,&vinfo );
c3e0bdb64027 add gui support
pontscho
parents: 616
diff changeset
265 xWAttribs.colormap=XCreateColormap( mDisplay,RootWindow( mDisplay,mScreen ),vinfo.visual,AllocNone );
c3e0bdb64027 add gui support
pontscho
parents: 616
diff changeset
266 xWAttribs.background_pixel=0;
c3e0bdb64027 add gui support
pontscho
parents: 616
diff changeset
267 xWAttribs.border_pixel=0;
c3e0bdb64027 add gui support
pontscho
parents: 616
diff changeset
268 xWAttribs.event_mask=StructureNotifyMask | ExposureMask | KeyPressMask;
c3e0bdb64027 add gui support
pontscho
parents: 616
diff changeset
269 xswamask=CWBackPixel | CWBorderPixel | CWColormap | CWEventMask;
1
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
270
723
c3e0bdb64027 add gui support
pontscho
parents: 616
diff changeset
271 mWindow=XCreateWindow( mDisplay,RootWindow( mDisplay,mScreen ),
c3e0bdb64027 add gui support
pontscho
parents: 616
diff changeset
272 wndX,wndY,
c3e0bdb64027 add gui support
pontscho
parents: 616
diff changeset
273 wndWidth,wndHeight,
c3e0bdb64027 add gui support
pontscho
parents: 616
diff changeset
274 xWAttribs.border_pixel,
c3e0bdb64027 add gui support
pontscho
parents: 616
diff changeset
275 mDepth,
c3e0bdb64027 add gui support
pontscho
parents: 616
diff changeset
276 InputOutput,
c3e0bdb64027 add gui support
pontscho
parents: 616
diff changeset
277 vinfo.visual,xswamask,&xWAttribs );
1137
4c7b219e126c patch: some X11 compliance fixed: set ClassHint and better fullscreen mode
arpi_esp
parents: 927
diff changeset
278 vo_x11_classhint( mDisplay,mWindow,"xmga" );
723
c3e0bdb64027 add gui support
pontscho
parents: 616
diff changeset
279 vo_hidecursor(mDisplay,mWindow);
c3e0bdb64027 add gui support
pontscho
parents: 616
diff changeset
280
844
108ea5157cbc didn't handle flags parameter correctly
arpi_esp
parents: 723
diff changeset
281 if ( mFullscreen ) vo_x11_decoration( mDisplay,mWindow,0 );
1
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
282
723
c3e0bdb64027 add gui support
pontscho
parents: 616
diff changeset
283 XGetNormalHints( mDisplay,mWindow,&hint );
c3e0bdb64027 add gui support
pontscho
parents: 616
diff changeset
284 hint.x=wndX; hint.y=wndY;
c3e0bdb64027 add gui support
pontscho
parents: 616
diff changeset
285 hint.width=wndWidth; hint.height=wndHeight;
c3e0bdb64027 add gui support
pontscho
parents: 616
diff changeset
286 hint.base_width=wndWidth; hint.base_height=wndHeight;
c3e0bdb64027 add gui support
pontscho
parents: 616
diff changeset
287 hint.flags=USPosition | USSize;
c3e0bdb64027 add gui support
pontscho
parents: 616
diff changeset
288 XSetNormalHints( mDisplay,mWindow,&hint );
c3e0bdb64027 add gui support
pontscho
parents: 616
diff changeset
289 XStoreName( mDisplay,mWindow,mTitle );
c3e0bdb64027 add gui support
pontscho
parents: 616
diff changeset
290 XMapWindow( mDisplay,mWindow );
c3e0bdb64027 add gui support
pontscho
parents: 616
diff changeset
291 #ifdef HAVE_GUI
c3e0bdb64027 add gui support
pontscho
parents: 616
diff changeset
292 }
c3e0bdb64027 add gui support
pontscho
parents: 616
diff changeset
293 else
c3e0bdb64027 add gui support
pontscho
parents: 616
diff changeset
294 {
c3e0bdb64027 add gui support
pontscho
parents: 616
diff changeset
295 mWindow=vo_window;
c3e0bdb64027 add gui support
pontscho
parents: 616
diff changeset
296 fprintf( stderr,"[xmga] width: %d height: %d d_width: %d d_height: %d\n",width,height,d_width,d_height );
c3e0bdb64027 add gui support
pontscho
parents: 616
diff changeset
297 if ( vo_screenwidth != d_width )
c3e0bdb64027 add gui support
pontscho
parents: 616
diff changeset
298 {
c3e0bdb64027 add gui support
pontscho
parents: 616
diff changeset
299 XMoveWindow( mDisplay,mWindow,( vo_screenwidth - d_width ) / 2,( vo_screenheight - d_height ) / 2 );
c3e0bdb64027 add gui support
pontscho
parents: 616
diff changeset
300 XResizeWindow( mDisplay,mWindow,d_width,d_height );
c3e0bdb64027 add gui support
pontscho
parents: 616
diff changeset
301 }
c3e0bdb64027 add gui support
pontscho
parents: 616
diff changeset
302 else mFullscreen=1;
c3e0bdb64027 add gui support
pontscho
parents: 616
diff changeset
303 }
c3e0bdb64027 add gui support
pontscho
parents: 616
diff changeset
304 #endif
1
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
305 mGC=XCreateGC( mDisplay,mWindow,GCForeground,&wGCV );
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
306
120
93ea0c6aae7f common window setup code moved to set_window()
arpi_esp
parents: 100
diff changeset
307 set_window();
1
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
308
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
309 mga_vid_config.src_width=width;
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
310 mga_vid_config.src_height=height;
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
311
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
312 mga_vid_config.colkey_on=1;
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
313 mga_vid_config.colkey_red=255;
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
314 mga_vid_config.colkey_green=0;
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
315 mga_vid_config.colkey_blue=255;
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
316
56
cdb2e30be421 mga_vid fixes, code cleanup
arpi_esp
parents: 47
diff changeset
317 if(mga_init()) return -1;
1
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
318
723
c3e0bdb64027 add gui support
pontscho
parents: 616
diff changeset
319 #ifdef HAVE_GUI
c3e0bdb64027 add gui support
pontscho
parents: 616
diff changeset
320 if ( vo_window == None )
c3e0bdb64027 add gui support
pontscho
parents: 616
diff changeset
321 {
c3e0bdb64027 add gui support
pontscho
parents: 616
diff changeset
322 #endif
c3e0bdb64027 add gui support
pontscho
parents: 616
diff changeset
323 XFlush( mDisplay );
c3e0bdb64027 add gui support
pontscho
parents: 616
diff changeset
324 XSync( mDisplay,False );
c3e0bdb64027 add gui support
pontscho
parents: 616
diff changeset
325 #ifdef HAVE_GUI
c3e0bdb64027 add gui support
pontscho
parents: 616
diff changeset
326 }
c3e0bdb64027 add gui support
pontscho
parents: 616
diff changeset
327 #endif
1
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
328
324
720c640332c8 Szebb es jobb screensaver-kikapcsolo resz
laaz
parents: 213
diff changeset
329 saver_off(mDisplay);
720c640332c8 Szebb es jobb screensaver-kikapcsolo resz
laaz
parents: 213
diff changeset
330
1
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
331 return 0;
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
332 }
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
333
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
334 static const vo_info_t* get_info( void )
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
335 { return &vo_info; }
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
336
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
337
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
338 static void
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
339 uninit(void)
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
340 {
324
720c640332c8 Szebb es jobb screensaver-kikapcsolo resz
laaz
parents: 213
diff changeset
341 saver_on(mDisplay);
1
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
342 ioctl( f,MGA_VID_OFF,0 );
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
343 printf("vo: uninit!\n");
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
344 }