annotate libvo/vo_x11.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 4c7b219e126c
children d40f2b686846
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
1
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
1 #define DISP
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
2
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
3 /*
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
4 * video_out_x11.c,X11 interface
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
5 *
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
6 *
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
7 * Copyright ( C ) 1996,MPEG Software Simulation Group. All Rights Reserved.
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
8 *
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
9 * Hacked into mpeg2dec by
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
10 *
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
11 * Aaron Holtzman <aholtzma@ess.engr.uvic.ca>
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
12 *
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
13 * 15 & 16 bpp support added by Franck Sicard <Franck.Sicard@solsoft.fr>
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
14 *
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
15 */
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
16
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
17 #include <stdio.h>
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
18 #include <stdlib.h>
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
19 #include <string.h>
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
20 #include <signal.h>
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
21
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
22 #include "config.h"
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
23 #include "video_out.h"
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
24 #include "video_out_internal.h"
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
25
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
26 LIBVO_EXTERN( x11 )
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
27
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
28 #include <X11/Xlib.h>
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
29 #include <X11/Xutil.h>
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
30 #include <X11/extensions/XShm.h>
206
82b5ae8ceaf4 adds XF86VidMode support to vo_x11.c to do "pseudo-scaling"
mgraffam
parents: 202
diff changeset
31 #ifdef HAVE_XF86VM
82b5ae8ceaf4 adds XF86VidMode support to vo_x11.c to do "pseudo-scaling"
mgraffam
parents: 202
diff changeset
32 #include <X11/extensions/xf86vmode.h>
82b5ae8ceaf4 adds XF86VidMode support to vo_x11.c to do "pseudo-scaling"
mgraffam
parents: 202
diff changeset
33 #endif
1
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
34 #include <errno.h>
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
35 #include "yuv2rgb.h"
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
36
31
1fc618eba830 added check_events() interface
arpi_esp
parents: 1
diff changeset
37 #include "x11_common.h"
1fc618eba830 added check_events() interface
arpi_esp
parents: 1
diff changeset
38
354
7de9e48c83a5 memcpy() moved mmx.h -> fastmemcpy.h
arpi_esp
parents: 350
diff changeset
39 #include "fastmemcpy.h"
616
41d6eec69b60 clean up
pontscho
parents: 614
diff changeset
40 #include "sub.h"
350
601822cc8c52 applied MMX2 memcpy() patch by Nick Kurshev
arpi_esp
parents: 326
diff changeset
41
1
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
42 static vo_info_t vo_info =
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
43 {
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
44 "X11 ( XImage/Shm )",
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
45 "x11",
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
46 "Aaron Holtzman <aholtzma@ess.engr.uvic.ca>",
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
47 ""
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
48 };
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
49
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
50 /* private prototypes */
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
51 static void Display_Image ( XImage * myximage,unsigned char *ImageData );
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
52
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
53 /* since it doesn't seem to be defined on some platforms */
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
54 int XShmGetEventBase( Display* );
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
55
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
56 /* local data */
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
57 static unsigned char *ImageData;
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
58
206
82b5ae8ceaf4 adds XF86VidMode support to vo_x11.c to do "pseudo-scaling"
mgraffam
parents: 202
diff changeset
59 #ifdef HAVE_XF86VM
82b5ae8ceaf4 adds XF86VidMode support to vo_x11.c to do "pseudo-scaling"
mgraffam
parents: 202
diff changeset
60 XF86VidModeModeInfo **vidmodes=NULL;
82b5ae8ceaf4 adds XF86VidMode support to vo_x11.c to do "pseudo-scaling"
mgraffam
parents: 202
diff changeset
61 #endif
82b5ae8ceaf4 adds XF86VidMode support to vo_x11.c to do "pseudo-scaling"
mgraffam
parents: 202
diff changeset
62
1
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
63 /* X11 related variables */
922
db06ae8967eb Centralized and cleaned up X11 connecting, fixed remote X11 playing, -display option for mplayer. SHOULD BE TESTED.
lgb
parents: 865
diff changeset
64 //static Display *mDisplay;
1
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
65 static Window mywindow;
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
66 static GC mygc;
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
67 static XImage *myximage;
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
68 static int depth,bpp,mode;
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
69 static XWindowAttributes attribs;
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
70 static int X_already_started=0;
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
71
31
1fc618eba830 added check_events() interface
arpi_esp
parents: 1
diff changeset
72 //static int vo_dwidth,vo_dheight;
1
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
73
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
74 #define SH_MEM
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
75
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
76 #ifdef SH_MEM
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
77
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
78 #include <sys/ipc.h>
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
79 #include <sys/shm.h>
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
80 #include <X11/extensions/XShm.h>
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
81
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
82 //static int HandleXError _ANSI_ARGS_( ( Display * dpy,XErrorEvent * event ) );
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
83 static void InstallXErrorHandler ( void );
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
84 static void DeInstallXErrorHandler ( void );
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
85
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
86 static int Shmem_Flag;
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
87 static int Quiet_Flag;
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
88 static XShmSegmentInfo Shminfo[1];
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
89 static int gXErrorFlag;
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
90 static int CompletionType=-1;
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
91
767
372042df5c77 Added support for flipped BGR/RGB via -flip cmdline switch.
atmosfear
parents: 616
diff changeset
92 static int Flip_Flag;
372042df5c77 Added support for flipped BGR/RGB via -flip cmdline switch.
atmosfear
parents: 616
diff changeset
93
1
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
94 static void InstallXErrorHandler()
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
95 {
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
96 //XSetErrorHandler( HandleXError );
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
97 XFlush( mDisplay );
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
98 }
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
99
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
100 static void DeInstallXErrorHandler()
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
101 {
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
102 XSetErrorHandler( NULL );
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
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
106 #endif
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
107
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
108 static uint32_t image_width;
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
109 static uint32_t image_height;
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
110 static uint32_t image_format;
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
111
31
1fc618eba830 added check_events() interface
arpi_esp
parents: 1
diff changeset
112 static void check_events(){
1110
71b8911ec3da -Wall like cleanup
al3x
parents: 922
diff changeset
113 vo_x11_check_events(mDisplay);
1
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
114 }
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
115
767
372042df5c77 Added support for flipped BGR/RGB via -flip cmdline switch.
atmosfear
parents: 616
diff changeset
116 static uint32_t init( uint32_t width,uint32_t height,uint32_t d_width,uint32_t d_height,uint32_t flags,char *title,uint32_t format )
1
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
117 {
1110
71b8911ec3da -Wall like cleanup
al3x
parents: 922
diff changeset
118 // int screen;
767
372042df5c77 Added support for flipped BGR/RGB via -flip cmdline switch.
atmosfear
parents: 616
diff changeset
119 int fullscreen=0;
1137
4c7b219e126c patch: some X11 compliance fixed: set ClassHint and better fullscreen mode
arpi_esp
parents: 1110
diff changeset
120 int vm=0;
1110
71b8911ec3da -Wall like cleanup
al3x
parents: 922
diff changeset
121 // int interval, prefer_blank, allow_exp, nothing;
1
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
122 unsigned int fg,bg;
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
123 char *hello=( title == NULL ) ? "X11 render" : title;
922
db06ae8967eb Centralized and cleaned up X11 connecting, fixed remote X11 playing, -display option for mplayer. SHOULD BE TESTED.
lgb
parents: 865
diff changeset
124 // char *name=":0.0";
1
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
125 XSizeHints hint;
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
126 XVisualInfo vinfo;
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
127 XEvent xev;
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
128 XGCValues xgcv;
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
129 Colormap theCmap;
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
130 XSetWindowAttributes xswa;
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
131 unsigned long xswamask;
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
132
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
133 image_height=height;
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
134 image_width=width;
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
135 image_format=format;
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
136
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
137 if ( X_already_started ) return -1;
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
138 if( !vo_init() ) return 0; // Can't open X11
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
139
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
140 hint.x=0;
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
141 hint.y=0;
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
142 hint.width=image_width;
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
143 hint.height=image_height;
767
372042df5c77 Added support for flipped BGR/RGB via -flip cmdline switch.
atmosfear
parents: 616
diff changeset
144
1137
4c7b219e126c patch: some X11 compliance fixed: set ClassHint and better fullscreen mode
arpi_esp
parents: 1110
diff changeset
145 if( flags&0x03 ) fullscreen = 1;
4c7b219e126c patch: some X11 compliance fixed: set ClassHint and better fullscreen mode
arpi_esp
parents: 1110
diff changeset
146 if( flags&0x02 ) vm = 1;
767
372042df5c77 Added support for flipped BGR/RGB via -flip cmdline switch.
atmosfear
parents: 616
diff changeset
147 if( flags&0x08 ) Flip_Flag = 1;
206
82b5ae8ceaf4 adds XF86VidMode support to vo_x11.c to do "pseudo-scaling"
mgraffam
parents: 202
diff changeset
148
82b5ae8ceaf4 adds XF86VidMode support to vo_x11.c to do "pseudo-scaling"
mgraffam
parents: 202
diff changeset
149 #ifdef HAVE_XF86VM
1137
4c7b219e126c patch: some X11 compliance fixed: set ClassHint and better fullscreen mode
arpi_esp
parents: 1110
diff changeset
150 if (vm) {
206
82b5ae8ceaf4 adds XF86VidMode support to vo_x11.c to do "pseudo-scaling"
mgraffam
parents: 202
diff changeset
151 unsigned int modeline_width, modeline_height, vm_event, vm_error;
82b5ae8ceaf4 adds XF86VidMode support to vo_x11.c to do "pseudo-scaling"
mgraffam
parents: 202
diff changeset
152 unsigned int vm_ver, vm_rev;
1110
71b8911ec3da -Wall like cleanup
al3x
parents: 922
diff changeset
153 int i,j,have_vm=0,X,Y;
206
82b5ae8ceaf4 adds XF86VidMode support to vo_x11.c to do "pseudo-scaling"
mgraffam
parents: 202
diff changeset
154
82b5ae8ceaf4 adds XF86VidMode support to vo_x11.c to do "pseudo-scaling"
mgraffam
parents: 202
diff changeset
155 int modecount;
82b5ae8ceaf4 adds XF86VidMode support to vo_x11.c to do "pseudo-scaling"
mgraffam
parents: 202
diff changeset
156
82b5ae8ceaf4 adds XF86VidMode support to vo_x11.c to do "pseudo-scaling"
mgraffam
parents: 202
diff changeset
157 if (XF86VidModeQueryExtension(mDisplay, &vm_event, &vm_error)) {
82b5ae8ceaf4 adds XF86VidMode support to vo_x11.c to do "pseudo-scaling"
mgraffam
parents: 202
diff changeset
158 XF86VidModeQueryVersion(mDisplay, &vm_ver, &vm_rev);
82b5ae8ceaf4 adds XF86VidMode support to vo_x11.c to do "pseudo-scaling"
mgraffam
parents: 202
diff changeset
159 printf("XF86VidMode Extension v%i.%i\n", vm_ver, vm_rev);
82b5ae8ceaf4 adds XF86VidMode support to vo_x11.c to do "pseudo-scaling"
mgraffam
parents: 202
diff changeset
160 have_vm=1;
82b5ae8ceaf4 adds XF86VidMode support to vo_x11.c to do "pseudo-scaling"
mgraffam
parents: 202
diff changeset
161 } else
82b5ae8ceaf4 adds XF86VidMode support to vo_x11.c to do "pseudo-scaling"
mgraffam
parents: 202
diff changeset
162 printf("XF86VidMode Extenstion not available.\n");
82b5ae8ceaf4 adds XF86VidMode support to vo_x11.c to do "pseudo-scaling"
mgraffam
parents: 202
diff changeset
163
82b5ae8ceaf4 adds XF86VidMode support to vo_x11.c to do "pseudo-scaling"
mgraffam
parents: 202
diff changeset
164 if (have_vm) {
82b5ae8ceaf4 adds XF86VidMode support to vo_x11.c to do "pseudo-scaling"
mgraffam
parents: 202
diff changeset
165 if (vidmodes==NULL)
922
db06ae8967eb Centralized and cleaned up X11 connecting, fixed remote X11 playing, -display option for mplayer. SHOULD BE TESTED.
lgb
parents: 865
diff changeset
166 XF86VidModeGetAllModeLines(mDisplay,mScreen,&modecount,&vidmodes);
206
82b5ae8ceaf4 adds XF86VidMode support to vo_x11.c to do "pseudo-scaling"
mgraffam
parents: 202
diff changeset
167 j=0;
82b5ae8ceaf4 adds XF86VidMode support to vo_x11.c to do "pseudo-scaling"
mgraffam
parents: 202
diff changeset
168 modeline_width=vidmodes[0]->hdisplay;
82b5ae8ceaf4 adds XF86VidMode support to vo_x11.c to do "pseudo-scaling"
mgraffam
parents: 202
diff changeset
169 modeline_height=vidmodes[0]->vdisplay;
82b5ae8ceaf4 adds XF86VidMode support to vo_x11.c to do "pseudo-scaling"
mgraffam
parents: 202
diff changeset
170 if ((d_width==0) && (d_height==0))
82b5ae8ceaf4 adds XF86VidMode support to vo_x11.c to do "pseudo-scaling"
mgraffam
parents: 202
diff changeset
171 { X=image_width; Y=image_height; }
82b5ae8ceaf4 adds XF86VidMode support to vo_x11.c to do "pseudo-scaling"
mgraffam
parents: 202
diff changeset
172 else
82b5ae8ceaf4 adds XF86VidMode support to vo_x11.c to do "pseudo-scaling"
mgraffam
parents: 202
diff changeset
173 { X=d_width; Y=d_height; }
82b5ae8ceaf4 adds XF86VidMode support to vo_x11.c to do "pseudo-scaling"
mgraffam
parents: 202
diff changeset
174
82b5ae8ceaf4 adds XF86VidMode support to vo_x11.c to do "pseudo-scaling"
mgraffam
parents: 202
diff changeset
175 for (i=1; i<modecount; i++)
82b5ae8ceaf4 adds XF86VidMode support to vo_x11.c to do "pseudo-scaling"
mgraffam
parents: 202
diff changeset
176 if ((vidmodes[i]->hdisplay >= X) && (vidmodes[i]->vdisplay >= Y))
82b5ae8ceaf4 adds XF86VidMode support to vo_x11.c to do "pseudo-scaling"
mgraffam
parents: 202
diff changeset
177 if ( (vidmodes[i]->hdisplay < modeline_width ) && (vidmodes[i]->vdisplay < modeline_height) )
82b5ae8ceaf4 adds XF86VidMode support to vo_x11.c to do "pseudo-scaling"
mgraffam
parents: 202
diff changeset
178 {
82b5ae8ceaf4 adds XF86VidMode support to vo_x11.c to do "pseudo-scaling"
mgraffam
parents: 202
diff changeset
179 modeline_width=vidmodes[i]->hdisplay;
82b5ae8ceaf4 adds XF86VidMode support to vo_x11.c to do "pseudo-scaling"
mgraffam
parents: 202
diff changeset
180 modeline_height=vidmodes[i]->vdisplay;
82b5ae8ceaf4 adds XF86VidMode support to vo_x11.c to do "pseudo-scaling"
mgraffam
parents: 202
diff changeset
181 j=i;
82b5ae8ceaf4 adds XF86VidMode support to vo_x11.c to do "pseudo-scaling"
mgraffam
parents: 202
diff changeset
182 }
82b5ae8ceaf4 adds XF86VidMode support to vo_x11.c to do "pseudo-scaling"
mgraffam
parents: 202
diff changeset
183
82b5ae8ceaf4 adds XF86VidMode support to vo_x11.c to do "pseudo-scaling"
mgraffam
parents: 202
diff changeset
184 printf("XF86VM: Selected video mode %dx%d for image size %dx%d.\n",modeline_width, modeline_height, image_width, image_height);
922
db06ae8967eb Centralized and cleaned up X11 connecting, fixed remote X11 playing, -display option for mplayer. SHOULD BE TESTED.
lgb
parents: 865
diff changeset
185 XF86VidModeLockModeSwitch(mDisplay,mScreen,0);
db06ae8967eb Centralized and cleaned up X11 connecting, fixed remote X11 playing, -display option for mplayer. SHOULD BE TESTED.
lgb
parents: 865
diff changeset
186 XF86VidModeSwitchToMode(mDisplay,mScreen,vidmodes[j]);
db06ae8967eb Centralized and cleaned up X11 connecting, fixed remote X11 playing, -display option for mplayer. SHOULD BE TESTED.
lgb
parents: 865
diff changeset
187 XF86VidModeSwitchToMode(mDisplay,mScreen,vidmodes[j]);
206
82b5ae8ceaf4 adds XF86VidMode support to vo_x11.c to do "pseudo-scaling"
mgraffam
parents: 202
diff changeset
188 X=(vo_screenwidth-modeline_width)/2;
82b5ae8ceaf4 adds XF86VidMode support to vo_x11.c to do "pseudo-scaling"
mgraffam
parents: 202
diff changeset
189 Y=(vo_screenheight-modeline_height)/2;
922
db06ae8967eb Centralized and cleaned up X11 connecting, fixed remote X11 playing, -display option for mplayer. SHOULD BE TESTED.
lgb
parents: 865
diff changeset
190 XF86VidModeSetViewPort(mDisplay,mScreen,X,Y);
206
82b5ae8ceaf4 adds XF86VidMode support to vo_x11.c to do "pseudo-scaling"
mgraffam
parents: 202
diff changeset
191 }
82b5ae8ceaf4 adds XF86VidMode support to vo_x11.c to do "pseudo-scaling"
mgraffam
parents: 202
diff changeset
192 }
82b5ae8ceaf4 adds XF86VidMode support to vo_x11.c to do "pseudo-scaling"
mgraffam
parents: 202
diff changeset
193 #endif
82b5ae8ceaf4 adds XF86VidMode support to vo_x11.c to do "pseudo-scaling"
mgraffam
parents: 202
diff changeset
194
82b5ae8ceaf4 adds XF86VidMode support to vo_x11.c to do "pseudo-scaling"
mgraffam
parents: 202
diff changeset
195
1
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
196 if ( fullscreen )
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
197 {
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
198 hint.width=vo_screenwidth;
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
199 hint.height=vo_screenheight;
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
200 }
31
1fc618eba830 added check_events() interface
arpi_esp
parents: 1
diff changeset
201 vo_dwidth=hint.width;
1fc618eba830 added check_events() interface
arpi_esp
parents: 1
diff changeset
202 vo_dheight=hint.height;
1
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
203 hint.flags=PPosition | PSize;
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
204
922
db06ae8967eb Centralized and cleaned up X11 connecting, fixed remote X11 playing, -display option for mplayer. SHOULD BE TESTED.
lgb
parents: 865
diff changeset
205 bg=WhitePixel( mDisplay,mScreen );
db06ae8967eb Centralized and cleaned up X11 connecting, fixed remote X11 playing, -display option for mplayer. SHOULD BE TESTED.
lgb
parents: 865
diff changeset
206 fg=BlackPixel( mDisplay,mScreen );
1
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
207
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
208 XGetWindowAttributes( mDisplay,DefaultRootWindow( mDisplay ),&attribs );
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
209 depth=attribs.depth;
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
210
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
211 if ( depth != 15 && depth != 16 && depth != 24 && depth != 32 ) depth=24;
922
db06ae8967eb Centralized and cleaned up X11 connecting, fixed remote X11 playing, -display option for mplayer. SHOULD BE TESTED.
lgb
parents: 865
diff changeset
212 XMatchVisualInfo( mDisplay,mScreen,depth,TrueColor,&vinfo );
1
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
213
922
db06ae8967eb Centralized and cleaned up X11 connecting, fixed remote X11 playing, -display option for mplayer. SHOULD BE TESTED.
lgb
parents: 865
diff changeset
214 theCmap =XCreateColormap( mDisplay,RootWindow( mDisplay,mScreen ),
1
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
215 vinfo.visual,AllocNone );
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
216
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
217 xswa.background_pixel=0;
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
218 xswa.border_pixel=1;
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
219 xswa.colormap=theCmap;
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
220 xswamask=CWBackPixel | CWBorderPixel |CWColormap;
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
221
922
db06ae8967eb Centralized and cleaned up X11 connecting, fixed remote X11 playing, -display option for mplayer. SHOULD BE TESTED.
lgb
parents: 865
diff changeset
222 mywindow=XCreateWindow( mDisplay,RootWindow( mDisplay,mScreen ),
1
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
223 hint.x,hint.y,
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
224 hint.width,hint.height,
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
225 xswa.border_pixel,depth,CopyFromParent,vinfo.visual,xswamask,&xswa );
1137
4c7b219e126c patch: some X11 compliance fixed: set ClassHint and better fullscreen mode
arpi_esp
parents: 1110
diff changeset
226 vo_x11_classhint( mDisplay,mywindow,"x11" );
384
b0e4e5744899 Autohide X11 cursor
lgb
parents: 354
diff changeset
227 vo_hidecursor(mDisplay,mywindow);
1
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
228
31
1fc618eba830 added check_events() interface
arpi_esp
parents: 1
diff changeset
229 if ( fullscreen ) vo_x11_decoration( mDisplay,mywindow,0 );
1
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
230 XSelectInput( mDisplay,mywindow,StructureNotifyMask );
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
231 XSetStandardProperties( mDisplay,mywindow,hello,hello,None,NULL,0,&hint );
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
232 XMapWindow( mDisplay,mywindow );
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
233 do { XNextEvent( mDisplay,&xev ); } while ( xev.type != MapNotify || xev.xmap.event != mywindow );
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
234
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
235 XSelectInput( mDisplay,mywindow,NoEventMask );
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
236
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
237 XFlush( mDisplay );
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
238 XSync( mDisplay,False );
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
239
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
240 mygc=XCreateGC( mDisplay,mywindow,0L,&xgcv );
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
241
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
242 #ifdef SH_MEM
922
db06ae8967eb Centralized and cleaned up X11 connecting, fixed remote X11 playing, -display option for mplayer. SHOULD BE TESTED.
lgb
parents: 865
diff changeset
243 if ( mLocalDisplay && XShmQueryExtension( mDisplay ) ) Shmem_Flag=1;
1
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
244 else
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
245 {
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
246 Shmem_Flag=0;
614
f83ec60bce49 fprintf(stderr converted to printf(
szabii
parents: 612
diff changeset
247 if ( !Quiet_Flag ) printf( "Shared memory not supported\nReverting to normal Xlib\n" );
1
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
248 }
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
249 if ( Shmem_Flag ) CompletionType=XShmGetEventBase( mDisplay ) + ShmCompletion;
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
250
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
251 InstallXErrorHandler();
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
252
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
253 if ( Shmem_Flag )
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
254 {
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
255 myximage=XShmCreateImage( mDisplay,vinfo.visual,depth,ZPixmap,NULL,&Shminfo[0],width,image_height );
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
256 if ( myximage == NULL )
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
257 {
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
258 if ( myximage != NULL ) XDestroyImage( myximage );
614
f83ec60bce49 fprintf(stderr converted to printf(
szabii
parents: 612
diff changeset
259 if ( !Quiet_Flag ) printf( "Shared memory error,disabling ( Ximage error )\n" );
1
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
260 goto shmemerror;
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
261 }
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
262 Shminfo[0].shmid=shmget( IPC_PRIVATE,
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
263 myximage->bytes_per_line * myximage->height ,
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
264 IPC_CREAT | 0777 );
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
265 if ( Shminfo[0].shmid < 0 )
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
266 {
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
267 XDestroyImage( myximage );
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
268 if ( !Quiet_Flag )
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
269 {
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
270 printf( "%s\n",strerror( errno ) );
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
271 perror( strerror( errno ) );
614
f83ec60bce49 fprintf(stderr converted to printf(
szabii
parents: 612
diff changeset
272 printf( "Shared memory error,disabling ( seg id error )\n" );
1
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
273 }
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
274 goto shmemerror;
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
275 }
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
276 Shminfo[0].shmaddr=( char * ) shmat( Shminfo[0].shmid,0,0 );
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
277
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
278 if ( Shminfo[0].shmaddr == ( ( char * ) -1 ) )
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
279 {
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
280 XDestroyImage( myximage );
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
281 if ( Shminfo[0].shmaddr != ( ( char * ) -1 ) ) shmdt( Shminfo[0].shmaddr );
614
f83ec60bce49 fprintf(stderr converted to printf(
szabii
parents: 612
diff changeset
282 if ( !Quiet_Flag ) printf( "Shared memory error,disabling ( address error )\n" );
1
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
283 goto shmemerror;
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
284 }
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
285 myximage->data=Shminfo[0].shmaddr;
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
286 ImageData=( unsigned char * ) myximage->data;
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
287 Shminfo[0].readOnly=False;
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
288 XShmAttach( mDisplay,&Shminfo[0] );
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
289
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
290 XSync( mDisplay,False );
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
291
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
292 if ( gXErrorFlag )
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
293 {
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
294 XDestroyImage( myximage );
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
295 shmdt( Shminfo[0].shmaddr );
614
f83ec60bce49 fprintf(stderr converted to printf(
szabii
parents: 612
diff changeset
296 if ( !Quiet_Flag ) printf( "Shared memory error,disabling.\n" );
1
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
297 gXErrorFlag=0;
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
298 goto shmemerror;
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
299 }
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
300 else
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
301 shmctl( Shminfo[0].shmid,IPC_RMID,0 );
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
302
614
f83ec60bce49 fprintf(stderr converted to printf(
szabii
parents: 612
diff changeset
303 if ( !Quiet_Flag ) printf( "Sharing memory.\n" );
1
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
304 }
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
305 else
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
306 {
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
307 shmemerror:
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
308 Shmem_Flag=0;
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
309 #endif
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
310 myximage=XGetImage( mDisplay,mywindow,0,0,
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
311 width,image_height,AllPlanes,ZPixmap );
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
312 ImageData=myximage->data;
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
313 #ifdef SH_MEM
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
314 }
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
315
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
316 DeInstallXErrorHandler();
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
317 #endif
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
318
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
319 bpp=myximage->bits_per_pixel;
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
320
1137
4c7b219e126c patch: some X11 compliance fixed: set ClassHint and better fullscreen mode
arpi_esp
parents: 1110
diff changeset
321 // printf( "X11 color mask: R:%lX G:%lX B:%lX\n",myximage->red_mask,myximage->green_mask,myximage->blue_mask );
1
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
322
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
323 // If we have blue in the lowest bit then obviously RGB
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
324 mode=( ( myximage->blue_mask & 0x01 ) != 0 ) ? MODE_RGB : MODE_BGR;
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
325 #ifdef WORDS_BIGENDIAN
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
326 if ( myximage->byte_order != MSBFirst )
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
327 #else
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
328 if ( myximage->byte_order != LSBFirst )
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
329 #endif
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
330 {
1137
4c7b219e126c patch: some X11 compliance fixed: set ClassHint and better fullscreen mode
arpi_esp
parents: 1110
diff changeset
331 mode=( ( myximage->blue_mask & 0x01 ) != 0 ) ? MODE_BGR : MODE_RGB;
4c7b219e126c patch: some X11 compliance fixed: set ClassHint and better fullscreen mode
arpi_esp
parents: 1110
diff changeset
332 // printf( "No support fon non-native XImage byte order!\n" );
4c7b219e126c patch: some X11 compliance fixed: set ClassHint and better fullscreen mode
arpi_esp
parents: 1110
diff changeset
333 // return -1;
1
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
334 }
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
335
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
336 if( format==IMGFMT_YV12 ) yuv2rgb_init( ( depth == 24 ) ? bpp : depth,mode );
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
337
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
338 XSelectInput( mDisplay,mywindow,StructureNotifyMask | KeyPressMask );
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
339 X_already_started++;
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
340
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
341 // vo_initthread( mThread );
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
342
324
720c640332c8 Szebb es jobb screensaver-kikapcsolo resz
laaz
parents: 322
diff changeset
343 saver_off(mDisplay);
1
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
344 return 0;
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
345 }
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
346
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
347 static const vo_info_t* get_info( void )
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
348 { return &vo_info; }
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
349
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
350 static void Terminate_Display_Process( void )
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
351 {
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
352 getchar(); /* wait for enter to remove window */
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
353 #ifdef SH_MEM
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
354 if ( Shmem_Flag )
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
355 {
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
356 XShmDetach( mDisplay,&Shminfo[0] );
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
357 XDestroyImage( myximage );
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
358 shmdt( Shminfo[0].shmaddr );
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
359 }
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
360 #endif
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
361 XDestroyWindow( mDisplay,mywindow );
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
362 XCloseDisplay( mDisplay );
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
363 X_already_started=0;
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
364 }
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
365
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
366 static void Display_Image( XImage *myximage,uint8_t *ImageData )
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
367 {
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
368 #ifdef DISP
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
369 #ifdef SH_MEM
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
370 if ( Shmem_Flag )
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
371 {
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
372 XShmPutImage( mDisplay,mywindow,mygc,myximage,
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
373 0,0,
31
1fc618eba830 added check_events() interface
arpi_esp
parents: 1
diff changeset
374 ( vo_dwidth - myximage->width ) / 2,( vo_dheight - myximage->height ) / 2,
1
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
375 myximage->width,myximage->height,True );
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
376 XFlush( mDisplay );
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
377 }
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
378 else
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
379 #endif
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
380 {
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
381 XPutImage( mDisplay,mywindow,mygc,myximage,
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
382 0,0,
31
1fc618eba830 added check_events() interface
arpi_esp
parents: 1
diff changeset
383 ( vo_dwidth - myximage->width ) / 2,( vo_dheight - myximage->height ) / 2,
1
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
384 myximage->width,myximage->height );
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
385 XFlush( mDisplay );
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
386 }
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
387 #endif
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
388 }
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
389
202
6ad0715dfac8 grey+alpha rendering support (for .sub)
arpi_esp
parents: 31
diff changeset
390 static void draw_alpha(int x0,int y0, int w,int h, unsigned char* src, unsigned char *srca, int stride){
326
f6b5c2dbc88e OSD alpha renderers moved to osd.c
arpi_esp
parents: 325
diff changeset
391 switch(bpp){
f6b5c2dbc88e OSD alpha renderers moved to osd.c
arpi_esp
parents: 325
diff changeset
392 case 24:
f6b5c2dbc88e OSD alpha renderers moved to osd.c
arpi_esp
parents: 325
diff changeset
393 vo_draw_alpha_rgb24(w,h,src,srca,stride,ImageData+3*(y0*image_width+x0),3*image_width);
f6b5c2dbc88e OSD alpha renderers moved to osd.c
arpi_esp
parents: 325
diff changeset
394 break;
f6b5c2dbc88e OSD alpha renderers moved to osd.c
arpi_esp
parents: 325
diff changeset
395 case 32:
f6b5c2dbc88e OSD alpha renderers moved to osd.c
arpi_esp
parents: 325
diff changeset
396 vo_draw_alpha_rgb32(w,h,src,srca,stride,ImageData+4*(y0*image_width+x0),4*image_width);
f6b5c2dbc88e OSD alpha renderers moved to osd.c
arpi_esp
parents: 325
diff changeset
397 break;
f6b5c2dbc88e OSD alpha renderers moved to osd.c
arpi_esp
parents: 325
diff changeset
398 case 15:
f6b5c2dbc88e OSD alpha renderers moved to osd.c
arpi_esp
parents: 325
diff changeset
399 case 16:
f6b5c2dbc88e OSD alpha renderers moved to osd.c
arpi_esp
parents: 325
diff changeset
400 if(depth==15)
f6b5c2dbc88e OSD alpha renderers moved to osd.c
arpi_esp
parents: 325
diff changeset
401 vo_draw_alpha_rgb15(w,h,src,srca,stride,ImageData+2*(y0*image_width+x0),2*image_width);
f6b5c2dbc88e OSD alpha renderers moved to osd.c
arpi_esp
parents: 325
diff changeset
402 else
f6b5c2dbc88e OSD alpha renderers moved to osd.c
arpi_esp
parents: 325
diff changeset
403 vo_draw_alpha_rgb16(w,h,src,srca,stride,ImageData+2*(y0*image_width+x0),2*image_width);
f6b5c2dbc88e OSD alpha renderers moved to osd.c
arpi_esp
parents: 325
diff changeset
404 break;
202
6ad0715dfac8 grey+alpha rendering support (for .sub)
arpi_esp
parents: 31
diff changeset
405 }
6ad0715dfac8 grey+alpha rendering support (for .sub)
arpi_esp
parents: 31
diff changeset
406 }
6ad0715dfac8 grey+alpha rendering support (for .sub)
arpi_esp
parents: 31
diff changeset
407
31
1fc618eba830 added check_events() interface
arpi_esp
parents: 1
diff changeset
408 static void flip_page( void ){
213
6ec8f6ab6cb1 subtitle+OSD font support
arpi_esp
parents: 206
diff changeset
409 vo_draw_text(image_width,image_height,draw_alpha);
31
1fc618eba830 added check_events() interface
arpi_esp
parents: 1
diff changeset
410 check_events();
1fc618eba830 added check_events() interface
arpi_esp
parents: 1
diff changeset
411 Display_Image( myximage,ImageData );
1fc618eba830 added check_events() interface
arpi_esp
parents: 1
diff changeset
412 }
1
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
413
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
414 static uint32_t draw_slice( uint8_t *src[],int stride[],int w,int h,int x,int y )
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
415 {
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
416 uint8_t *dst;
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
417
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
418 dst=ImageData + ( image_width * y + x ) * ( bpp/8 );
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
419 yuv2rgb( dst,src[0],src[1],src[2],w,h,image_width*( bpp/8 ),stride[0],stride[1] );
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
420 return 0;
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
421 }
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
422
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
423 void rgb15to16_mmx( char* s0,char* d0,int count );
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
424
775
1cc160d46319 flip implemented for converted modes, soem cleanup, fixed indent
arpi_esp
parents: 767
diff changeset
425 static uint32_t draw_frame( uint8_t *src[] ){
1
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
426 int sbpp=( ( image_format&0xFF )+7 )/8;
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
427 int dbpp=( bpp+7 )/8;
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
428 char *d=ImageData;
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
429 char *s=src[0];
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
430 //printf( "sbpp=%d dbpp=%d depth=%d bpp=%d\n",sbpp,dbpp,depth,bpp );
775
1cc160d46319 flip implemented for converted modes, soem cleanup, fixed indent
arpi_esp
parents: 767
diff changeset
431
1cc160d46319 flip implemented for converted modes, soem cleanup, fixed indent
arpi_esp
parents: 767
diff changeset
432 if( Flip_Flag ){
1
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
433 // flipped BGR
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
434 int i;
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
435 //printf( "Rendering flipped BGR frame bpp=%d src=%d dst=%d\n",bpp,sbpp,dbpp );
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
436 s+=sbpp*image_width*image_height;
775
1cc160d46319 flip implemented for converted modes, soem cleanup, fixed indent
arpi_esp
parents: 767
diff changeset
437 for( i=0;i<image_height;i++ ) {
1
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
438 s-=sbpp*image_width;
775
1cc160d46319 flip implemented for converted modes, soem cleanup, fixed indent
arpi_esp
parents: 767
diff changeset
439 if( sbpp==dbpp ) {
1cc160d46319 flip implemented for converted modes, soem cleanup, fixed indent
arpi_esp
parents: 767
diff changeset
440 if( depth==16 && image_format==( IMGFMT_BGR|15 ) ){
1cc160d46319 flip implemented for converted modes, soem cleanup, fixed indent
arpi_esp
parents: 767
diff changeset
441
1cc160d46319 flip implemented for converted modes, soem cleanup, fixed indent
arpi_esp
parents: 767
diff changeset
442 // do 15bpp->16bpp
1cc160d46319 flip implemented for converted modes, soem cleanup, fixed indent
arpi_esp
parents: 767
diff changeset
443 #ifdef HAVE_MMX
1cc160d46319 flip implemented for converted modes, soem cleanup, fixed indent
arpi_esp
parents: 767
diff changeset
444 rgb15to16_mmx( s,d,2*image_width );
1cc160d46319 flip implemented for converted modes, soem cleanup, fixed indent
arpi_esp
parents: 767
diff changeset
445 #else
1cc160d46319 flip implemented for converted modes, soem cleanup, fixed indent
arpi_esp
parents: 767
diff changeset
446 unsigned short *s1=( unsigned short * )s;
1cc160d46319 flip implemented for converted modes, soem cleanup, fixed indent
arpi_esp
parents: 767
diff changeset
447 unsigned short *d1=( unsigned short * )d;
1cc160d46319 flip implemented for converted modes, soem cleanup, fixed indent
arpi_esp
parents: 767
diff changeset
448 unsigned short *e=s1+image_width;
1cc160d46319 flip implemented for converted modes, soem cleanup, fixed indent
arpi_esp
parents: 767
diff changeset
449 while( s1<e ){
1cc160d46319 flip implemented for converted modes, soem cleanup, fixed indent
arpi_esp
parents: 767
diff changeset
450 register int x=*( s1++ );
1cc160d46319 flip implemented for converted modes, soem cleanup, fixed indent
arpi_esp
parents: 767
diff changeset
451 // rrrrrggggggbbbbb
1cc160d46319 flip implemented for converted modes, soem cleanup, fixed indent
arpi_esp
parents: 767
diff changeset
452 // 0rrrrrgggggbbbbb
1cc160d46319 flip implemented for converted modes, soem cleanup, fixed indent
arpi_esp
parents: 767
diff changeset
453 // 0111 1111 1110 0000=0x7FE0
1cc160d46319 flip implemented for converted modes, soem cleanup, fixed indent
arpi_esp
parents: 767
diff changeset
454 // 00000000000001 1111=0x001F
1cc160d46319 flip implemented for converted modes, soem cleanup, fixed indent
arpi_esp
parents: 767
diff changeset
455 *( d1++ )=( x&0x001F )|( ( x&0x7FE0 )<<1 );
1cc160d46319 flip implemented for converted modes, soem cleanup, fixed indent
arpi_esp
parents: 767
diff changeset
456 }
1cc160d46319 flip implemented for converted modes, soem cleanup, fixed indent
arpi_esp
parents: 767
diff changeset
457 #endif
1cc160d46319 flip implemented for converted modes, soem cleanup, fixed indent
arpi_esp
parents: 767
diff changeset
458
1cc160d46319 flip implemented for converted modes, soem cleanup, fixed indent
arpi_esp
parents: 767
diff changeset
459 } else
1cc160d46319 flip implemented for converted modes, soem cleanup, fixed indent
arpi_esp
parents: 767
diff changeset
460 memcpy( d,s,sbpp*image_width );
1cc160d46319 flip implemented for converted modes, soem cleanup, fixed indent
arpi_esp
parents: 767
diff changeset
461 } else {
1cc160d46319 flip implemented for converted modes, soem cleanup, fixed indent
arpi_esp
parents: 767
diff changeset
462 // sbpp!=dbpp
1
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
463 char *s2=s;
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
464 char *d2=d;
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
465 char *e=s2+sbpp*image_width;
775
1cc160d46319 flip implemented for converted modes, soem cleanup, fixed indent
arpi_esp
parents: 767
diff changeset
466 while( s2<e ) {
1
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
467 d2[0]=s2[0];
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
468 d2[1]=s2[1];
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
469 d2[2]=s2[2];
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
470 s2+=sbpp;d2+=dbpp;
775
1cc160d46319 flip implemented for converted modes, soem cleanup, fixed indent
arpi_esp
parents: 767
diff changeset
471 }
1cc160d46319 flip implemented for converted modes, soem cleanup, fixed indent
arpi_esp
parents: 767
diff changeset
472 }
1
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
473 d+=dbpp*image_width;
775
1cc160d46319 flip implemented for converted modes, soem cleanup, fixed indent
arpi_esp
parents: 767
diff changeset
474 }
1cc160d46319 flip implemented for converted modes, soem cleanup, fixed indent
arpi_esp
parents: 767
diff changeset
475 } else {
1cc160d46319 flip implemented for converted modes, soem cleanup, fixed indent
arpi_esp
parents: 767
diff changeset
476 if( sbpp==dbpp ) {
1cc160d46319 flip implemented for converted modes, soem cleanup, fixed indent
arpi_esp
parents: 767
diff changeset
477 if( depth==16 && image_format==( IMGFMT_BGR|15 ) ){
1
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
478 // do 15bpp->16bpp
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
479 #ifdef HAVE_MMX
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
480 rgb15to16_mmx( s,d,2*image_width*image_height );
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
481 #else
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
482 unsigned short *s1=( unsigned short * )s;
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
483 unsigned short *d1=( unsigned short * )d;
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
484 unsigned short *e=s1+image_width*image_height;
775
1cc160d46319 flip implemented for converted modes, soem cleanup, fixed indent
arpi_esp
parents: 767
diff changeset
485 while( s1<e ){
1
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
486 register int x=*( s1++ );
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
487 // rrrrrggggggbbbbb
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
488 // 0rrrrrgggggbbbbb
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
489 // 0111 1111 1110 0000=0x7FE0
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
490 // 00000000000001 1111=0x001F
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
491 *( d1++ )=( x&0x001F )|( ( x&0x7FE0 )<<1 );
775
1cc160d46319 flip implemented for converted modes, soem cleanup, fixed indent
arpi_esp
parents: 767
diff changeset
492 }
1
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
493 #endif
775
1cc160d46319 flip implemented for converted modes, soem cleanup, fixed indent
arpi_esp
parents: 767
diff changeset
494 } else
1cc160d46319 flip implemented for converted modes, soem cleanup, fixed indent
arpi_esp
parents: 767
diff changeset
495 memcpy( d,s,sbpp*image_width*image_height );
1cc160d46319 flip implemented for converted modes, soem cleanup, fixed indent
arpi_esp
parents: 767
diff changeset
496 } else {
1cc160d46319 flip implemented for converted modes, soem cleanup, fixed indent
arpi_esp
parents: 767
diff changeset
497 // sbpp!=dbpp
1cc160d46319 flip implemented for converted modes, soem cleanup, fixed indent
arpi_esp
parents: 767
diff changeset
498 char *e=s+sbpp*image_width*image_height;
1cc160d46319 flip implemented for converted modes, soem cleanup, fixed indent
arpi_esp
parents: 767
diff changeset
499 //printf( "libvo: using C 24->32bpp conversion\n" );
1cc160d46319 flip implemented for converted modes, soem cleanup, fixed indent
arpi_esp
parents: 767
diff changeset
500 while( s<e ){
1cc160d46319 flip implemented for converted modes, soem cleanup, fixed indent
arpi_esp
parents: 767
diff changeset
501 d[0]=s[0];
1cc160d46319 flip implemented for converted modes, soem cleanup, fixed indent
arpi_esp
parents: 767
diff changeset
502 d[1]=s[1];
1cc160d46319 flip implemented for converted modes, soem cleanup, fixed indent
arpi_esp
parents: 767
diff changeset
503 d[2]=s[2];
1cc160d46319 flip implemented for converted modes, soem cleanup, fixed indent
arpi_esp
parents: 767
diff changeset
504 s+=sbpp;d+=dbpp;
1
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
505 }
775
1cc160d46319 flip implemented for converted modes, soem cleanup, fixed indent
arpi_esp
parents: 767
diff changeset
506 }
1
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
507 }
775
1cc160d46319 flip implemented for converted modes, soem cleanup, fixed indent
arpi_esp
parents: 767
diff changeset
508 return 0;
1
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
509 }
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
510
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
511 static uint32_t query_format( uint32_t format )
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
512 {
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
513 if( !vo_init() ) return 0; // Can't open X11
325
b2fd5c172f80 vo_x11 query_format fix
laaz
parents: 324
diff changeset
514
b2fd5c172f80 vo_x11 query_format fix
laaz
parents: 324
diff changeset
515 if( ( format&IMGFMT_BGR_MASK )==IMGFMT_BGR ){
b2fd5c172f80 vo_x11 query_format fix
laaz
parents: 324
diff changeset
516 int bpp=format&0xFF;
b2fd5c172f80 vo_x11 query_format fix
laaz
parents: 324
diff changeset
517 if( bpp==vo_depthonscreen ) return 1;
b2fd5c172f80 vo_x11 query_format fix
laaz
parents: 324
diff changeset
518 if( bpp==15 && vo_depthonscreen==16) return 1; // built-in conversion
b2fd5c172f80 vo_x11 query_format fix
laaz
parents: 324
diff changeset
519 if( bpp==24 && vo_depthonscreen==32) return 1; // built-in conversion
b2fd5c172f80 vo_x11 query_format fix
laaz
parents: 324
diff changeset
520 }
b2fd5c172f80 vo_x11 query_format fix
laaz
parents: 324
diff changeset
521
1
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
522 switch( format )
324
720c640332c8 Szebb es jobb screensaver-kikapcsolo resz
laaz
parents: 322
diff changeset
523 {
1
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
524 case IMGFMT_YV12: return 1;
324
720c640332c8 Szebb es jobb screensaver-kikapcsolo resz
laaz
parents: 322
diff changeset
525 }
1
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
526 return 0;
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
527 }
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
528
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
529
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
530 static void
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
531 uninit(void)
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
532 {
324
720c640332c8 Szebb es jobb screensaver-kikapcsolo resz
laaz
parents: 322
diff changeset
533 saver_on(mDisplay); // screen saver back on
206
82b5ae8ceaf4 adds XF86VidMode support to vo_x11.c to do "pseudo-scaling"
mgraffam
parents: 202
diff changeset
534 #ifdef HAVE_XF86VM
82b5ae8ceaf4 adds XF86VidMode support to vo_x11.c to do "pseudo-scaling"
mgraffam
parents: 202
diff changeset
535 if (vidmodes!=NULL)
82b5ae8ceaf4 adds XF86VidMode support to vo_x11.c to do "pseudo-scaling"
mgraffam
parents: 202
diff changeset
536 {
82b5ae8ceaf4 adds XF86VidMode support to vo_x11.c to do "pseudo-scaling"
mgraffam
parents: 202
diff changeset
537 int screen; screen=DefaultScreen( mDisplay );
82b5ae8ceaf4 adds XF86VidMode support to vo_x11.c to do "pseudo-scaling"
mgraffam
parents: 202
diff changeset
538 XF86VidModeSwitchToMode(mDisplay,screen,vidmodes[0]);
82b5ae8ceaf4 adds XF86VidMode support to vo_x11.c to do "pseudo-scaling"
mgraffam
parents: 202
diff changeset
539 XF86VidModeSwitchToMode(mDisplay,screen,vidmodes[0]);
82b5ae8ceaf4 adds XF86VidMode support to vo_x11.c to do "pseudo-scaling"
mgraffam
parents: 202
diff changeset
540 free(vidmodes);
82b5ae8ceaf4 adds XF86VidMode support to vo_x11.c to do "pseudo-scaling"
mgraffam
parents: 202
diff changeset
541 }
82b5ae8ceaf4 adds XF86VidMode support to vo_x11.c to do "pseudo-scaling"
mgraffam
parents: 202
diff changeset
542 #endif
82b5ae8ceaf4 adds XF86VidMode support to vo_x11.c to do "pseudo-scaling"
mgraffam
parents: 202
diff changeset
543
1
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
544 printf("vo: uninit!\n");
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
545 }
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
546
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
547
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
548