Mercurial > mplayer.hg
annotate libvo/vo_svga.c @ 8870:7538bf7e728d
halfpack now takes an optional argument, field, which tells it to keep
only even lines (if 0) or only odd lines (if 1) rather than averaging
pairs of lines. this may be useful for slightly improving performance
or for dirty deinterlacing.
author | rfelker |
---|---|
date | Fri, 10 Jan 2003 14:12:07 +0000 |
parents | 4c0882ee0f4d |
children | 13b7ad16f278 |
rev | line source |
---|---|
285 | 1 /* |
5679
30f196ff3bec
This patch replaces vo_svga.c with an improved version that does not use
arpi
parents:
4596
diff
changeset
|
2 Video driver for SVGAlib |
285 | 3 by Zoltan Mark Vician <se7en@sch.bme.hu> |
381 | 4 Code started: Mon Apr 1 23:25:47 2001 |
5679
30f196ff3bec
This patch replaces vo_svga.c with an improved version that does not use
arpi
parents:
4596
diff
changeset
|
5 |
30f196ff3bec
This patch replaces vo_svga.c with an improved version that does not use
arpi
parents:
4596
diff
changeset
|
6 Some changes by Matan Ziv-Av <matan@svgalib.org> |
285 | 7 */ |
8 | |
9 #include <stdio.h> | |
10 #include <stdlib.h> | |
7472
c4434bdf6e51
tons of warning fixes, also some 10l bugfixes, including Dominik's PVA bug
arpi
parents:
7124
diff
changeset
|
11 #include <string.h> |
285 | 12 |
13 #include <vga.h> | |
14 | |
485 | 15 #include <limits.h> |
16 | |
285 | 17 #include "config.h" |
18 #include "video_out.h" | |
19 #include "video_out_internal.h" | |
20 | |
8515
b4e5d87b878b
vidix support and better device options handler by Matan Ziv-Av <matan@svgalib.org>
alex
parents:
8148
diff
changeset
|
21 #ifdef CONFIG_VIDIX |
b4e5d87b878b
vidix support and better device options handler by Matan Ziv-Av <matan@svgalib.org>
alex
parents:
8148
diff
changeset
|
22 #include "vosub_vidix.h" |
b4e5d87b878b
vidix support and better device options handler by Matan Ziv-Av <matan@svgalib.org>
alex
parents:
8148
diff
changeset
|
23 #endif |
b4e5d87b878b
vidix support and better device options handler by Matan Ziv-Av <matan@svgalib.org>
alex
parents:
8148
diff
changeset
|
24 |
616 | 25 #include "sub.h" |
2556 | 26 #include "../postproc/rgb2rgb.h" |
616 | 27 |
5679
30f196ff3bec
This patch replaces vo_svga.c with an improved version that does not use
arpi
parents:
4596
diff
changeset
|
28 #include "../mp_msg.h" |
30f196ff3bec
This patch replaces vo_svga.c with an improved version that does not use
arpi
parents:
4596
diff
changeset
|
29 //#include "../mp_image.h" |
30f196ff3bec
This patch replaces vo_svga.c with an improved version that does not use
arpi
parents:
4596
diff
changeset
|
30 |
30f196ff3bec
This patch replaces vo_svga.c with an improved version that does not use
arpi
parents:
4596
diff
changeset
|
31 extern int vo_directrendering; |
485 | 32 extern int vo_dbpp; |
504 | 33 extern int verbose; |
407 | 34 |
5679
30f196ff3bec
This patch replaces vo_svga.c with an improved version that does not use
arpi
parents:
4596
diff
changeset
|
35 static uint32_t query_format(uint32_t format); |
30f196ff3bec
This patch replaces vo_svga.c with an improved version that does not use
arpi
parents:
4596
diff
changeset
|
36 static int checksupportedmodes(); |
30f196ff3bec
This patch replaces vo_svga.c with an improved version that does not use
arpi
parents:
4596
diff
changeset
|
37 static void putbox(int x, int y, int w, int h, uint8_t *buf,int prog); |
30f196ff3bec
This patch replaces vo_svga.c with an improved version that does not use
arpi
parents:
4596
diff
changeset
|
38 static void fillbox(int x, int y, int w, int h, uint32_t c); |
30f196ff3bec
This patch replaces vo_svga.c with an improved version that does not use
arpi
parents:
4596
diff
changeset
|
39 static void draw_alpha(int x0, int y0, int w, int h, unsigned char *src, |
30f196ff3bec
This patch replaces vo_svga.c with an improved version that does not use
arpi
parents:
4596
diff
changeset
|
40 unsigned char *srca, int stride); |
30f196ff3bec
This patch replaces vo_svga.c with an improved version that does not use
arpi
parents:
4596
diff
changeset
|
41 static uint32_t get_image(mp_image_t *mpi); |
285 | 42 |
5679
30f196ff3bec
This patch replaces vo_svga.c with an improved version that does not use
arpi
parents:
4596
diff
changeset
|
43 static uint8_t *yuvbuf = NULL, *bppbuf = NULL; |
30f196ff3bec
This patch replaces vo_svga.c with an improved version that does not use
arpi
parents:
4596
diff
changeset
|
44 static uint8_t *GRAPH_MEM; |
285 | 45 |
5679
30f196ff3bec
This patch replaces vo_svga.c with an improved version that does not use
arpi
parents:
4596
diff
changeset
|
46 static int BYTESPERPIXEL, WIDTH, HEIGHT, LINEWIDTH; |
30f196ff3bec
This patch replaces vo_svga.c with an improved version that does not use
arpi
parents:
4596
diff
changeset
|
47 static int frame, maxframes, oldmethod=0; |
8515
b4e5d87b878b
vidix support and better device options handler by Matan Ziv-Av <matan@svgalib.org>
alex
parents:
8148
diff
changeset
|
48 static int directrender; |
b4e5d87b878b
vidix support and better device options handler by Matan Ziv-Av <matan@svgalib.org>
alex
parents:
8148
diff
changeset
|
49 |
b4e5d87b878b
vidix support and better device options handler by Matan Ziv-Av <matan@svgalib.org>
alex
parents:
8148
diff
changeset
|
50 static int force_vm=0; |
b4e5d87b878b
vidix support and better device options handler by Matan Ziv-Av <matan@svgalib.org>
alex
parents:
8148
diff
changeset
|
51 static int squarepix=0; |
285 | 52 |
5679
30f196ff3bec
This patch replaces vo_svga.c with an improved version that does not use
arpi
parents:
4596
diff
changeset
|
53 static uint32_t pformat; |
285 | 54 static uint32_t orig_w, orig_h, maxw, maxh; // Width, height |
5679
30f196ff3bec
This patch replaces vo_svga.c with an improved version that does not use
arpi
parents:
4596
diff
changeset
|
55 static uint8_t buf0[8192]; |
30f196ff3bec
This patch replaces vo_svga.c with an improved version that does not use
arpi
parents:
4596
diff
changeset
|
56 static uint8_t *buffer; |
285 | 57 |
483 | 58 typedef struct vga_modelist_s { |
59 uint16_t modenum; | |
60 vga_modeinfo modeinfo; | |
61 struct vga_modelist_s *next; | |
62 } vga_modelist_t; | |
447 | 63 |
483 | 64 vga_modelist_t *modelist = NULL; |
65 | |
327 | 66 static uint8_t bpp; |
483 | 67 static uint8_t bpp_conv = 0; |
448
198b46b739d8
qrva eletbe nem kene cvs-t elbaszni inkabb ne nyuljatok hozza baz+
arpi_esp
parents:
447
diff
changeset
|
68 static uint32_t pformat; |
447 | 69 |
483 | 70 #define BPP_15 1 |
71 #define BPP_16 2 | |
72 #define BPP_24 4 | |
73 #define BPP_32 8 | |
6451
ed906af317da
8bpp support (no dithering yet, use -vop noise for now)
michael
parents:
6052
diff
changeset
|
74 #define BPP_8 16 |
ed906af317da
8bpp support (no dithering yet, use -vop noise for now)
michael
parents:
6052
diff
changeset
|
75 #define BPP_4 32 |
6453 | 76 #define BPP_1 64 |
483 | 77 static uint8_t bpp_avail = 0; |
78 | |
285 | 79 static uint8_t checked = 0; |
483 | 80 |
5679
30f196ff3bec
This patch replaces vo_svga.c with an improved version that does not use
arpi
parents:
4596
diff
changeset
|
81 static uint32_t x_pos, y_pos; |
30f196ff3bec
This patch replaces vo_svga.c with an improved version that does not use
arpi
parents:
4596
diff
changeset
|
82 |
8148
5b39e79af5fe
removed get_info, using the same sheme as in libmpcodecs instead
alex
parents:
7691
diff
changeset
|
83 static vo_info_t info = { |
5679
30f196ff3bec
This patch replaces vo_svga.c with an improved version that does not use
arpi
parents:
4596
diff
changeset
|
84 "SVGAlib", |
30f196ff3bec
This patch replaces vo_svga.c with an improved version that does not use
arpi
parents:
4596
diff
changeset
|
85 "svga", |
30f196ff3bec
This patch replaces vo_svga.c with an improved version that does not use
arpi
parents:
4596
diff
changeset
|
86 "Zoltan Mark Vician <se7en@sch.bme.hu>", |
30f196ff3bec
This patch replaces vo_svga.c with an improved version that does not use
arpi
parents:
4596
diff
changeset
|
87 "" |
30f196ff3bec
This patch replaces vo_svga.c with an improved version that does not use
arpi
parents:
4596
diff
changeset
|
88 }; |
30f196ff3bec
This patch replaces vo_svga.c with an improved version that does not use
arpi
parents:
4596
diff
changeset
|
89 |
8515
b4e5d87b878b
vidix support and better device options handler by Matan Ziv-Av <matan@svgalib.org>
alex
parents:
8148
diff
changeset
|
90 #ifdef CONFIG_VIDIX |
b4e5d87b878b
vidix support and better device options handler by Matan Ziv-Av <matan@svgalib.org>
alex
parents:
8148
diff
changeset
|
91 static char vidix_name[32] = ""; |
b4e5d87b878b
vidix support and better device options handler by Matan Ziv-Av <matan@svgalib.org>
alex
parents:
8148
diff
changeset
|
92 #endif |
b4e5d87b878b
vidix support and better device options handler by Matan Ziv-Av <matan@svgalib.org>
alex
parents:
8148
diff
changeset
|
93 |
8148
5b39e79af5fe
removed get_info, using the same sheme as in libmpcodecs instead
alex
parents:
7691
diff
changeset
|
94 LIBVO_EXTERN(svga) |
5b39e79af5fe
removed get_info, using the same sheme as in libmpcodecs instead
alex
parents:
7691
diff
changeset
|
95 |
5679
30f196ff3bec
This patch replaces vo_svga.c with an improved version that does not use
arpi
parents:
4596
diff
changeset
|
96 static uint32_t preinit(const char *arg) |
30f196ff3bec
This patch replaces vo_svga.c with an improved version that does not use
arpi
parents:
4596
diff
changeset
|
97 { |
30f196ff3bec
This patch replaces vo_svga.c with an improved version that does not use
arpi
parents:
4596
diff
changeset
|
98 int i; |
30f196ff3bec
This patch replaces vo_svga.c with an improved version that does not use
arpi
parents:
4596
diff
changeset
|
99 |
30f196ff3bec
This patch replaces vo_svga.c with an improved version that does not use
arpi
parents:
4596
diff
changeset
|
100 for(i=0;i<8192;i++) buf0[i]=0; |
30f196ff3bec
This patch replaces vo_svga.c with an improved version that does not use
arpi
parents:
4596
diff
changeset
|
101 |
30f196ff3bec
This patch replaces vo_svga.c with an improved version that does not use
arpi
parents:
4596
diff
changeset
|
102 if(vo_directrendering) { |
30f196ff3bec
This patch replaces vo_svga.c with an improved version that does not use
arpi
parents:
4596
diff
changeset
|
103 maxframes=0; |
483 | 104 } else { |
5679
30f196ff3bec
This patch replaces vo_svga.c with an improved version that does not use
arpi
parents:
4596
diff
changeset
|
105 maxframes=1; |
30f196ff3bec
This patch replaces vo_svga.c with an improved version that does not use
arpi
parents:
4596
diff
changeset
|
106 } |
30f196ff3bec
This patch replaces vo_svga.c with an improved version that does not use
arpi
parents:
4596
diff
changeset
|
107 |
8515
b4e5d87b878b
vidix support and better device options handler by Matan Ziv-Av <matan@svgalib.org>
alex
parents:
8148
diff
changeset
|
108 if(arg)while(*arg) { |
b4e5d87b878b
vidix support and better device options handler by Matan Ziv-Av <matan@svgalib.org>
alex
parents:
8148
diff
changeset
|
109 if(!strncmp(arg,"old",3)) { |
b4e5d87b878b
vidix support and better device options handler by Matan Ziv-Av <matan@svgalib.org>
alex
parents:
8148
diff
changeset
|
110 oldmethod=1; |
b4e5d87b878b
vidix support and better device options handler by Matan Ziv-Av <matan@svgalib.org>
alex
parents:
8148
diff
changeset
|
111 arg+=3; |
b4e5d87b878b
vidix support and better device options handler by Matan Ziv-Av <matan@svgalib.org>
alex
parents:
8148
diff
changeset
|
112 if( *arg == ':' ) arg++; |
b4e5d87b878b
vidix support and better device options handler by Matan Ziv-Av <matan@svgalib.org>
alex
parents:
8148
diff
changeset
|
113 } |
b4e5d87b878b
vidix support and better device options handler by Matan Ziv-Av <matan@svgalib.org>
alex
parents:
8148
diff
changeset
|
114 |
b4e5d87b878b
vidix support and better device options handler by Matan Ziv-Av <matan@svgalib.org>
alex
parents:
8148
diff
changeset
|
115 #ifdef CONFIG_VIDIX |
b4e5d87b878b
vidix support and better device options handler by Matan Ziv-Av <matan@svgalib.org>
alex
parents:
8148
diff
changeset
|
116 if(memcmp(arg,"vidix",5)==0) { |
b4e5d87b878b
vidix support and better device options handler by Matan Ziv-Av <matan@svgalib.org>
alex
parents:
8148
diff
changeset
|
117 int i; |
b4e5d87b878b
vidix support and better device options handler by Matan Ziv-Av <matan@svgalib.org>
alex
parents:
8148
diff
changeset
|
118 i=6; |
b4e5d87b878b
vidix support and better device options handler by Matan Ziv-Av <matan@svgalib.org>
alex
parents:
8148
diff
changeset
|
119 while(arg[i] && arg[i]!=':') i++; |
b4e5d87b878b
vidix support and better device options handler by Matan Ziv-Av <matan@svgalib.org>
alex
parents:
8148
diff
changeset
|
120 strncpy(vidix_name, arg+6, i-6); |
b4e5d87b878b
vidix support and better device options handler by Matan Ziv-Av <matan@svgalib.org>
alex
parents:
8148
diff
changeset
|
121 vidix_name[i-5]=0; |
b4e5d87b878b
vidix support and better device options handler by Matan Ziv-Av <matan@svgalib.org>
alex
parents:
8148
diff
changeset
|
122 if(arg[i]==':')i++; |
b4e5d87b878b
vidix support and better device options handler by Matan Ziv-Av <matan@svgalib.org>
alex
parents:
8148
diff
changeset
|
123 arg+=i; |
b4e5d87b878b
vidix support and better device options handler by Matan Ziv-Av <matan@svgalib.org>
alex
parents:
8148
diff
changeset
|
124 vidix_preinit(vidix_name, &video_out_svga); |
b4e5d87b878b
vidix support and better device options handler by Matan Ziv-Av <matan@svgalib.org>
alex
parents:
8148
diff
changeset
|
125 } |
b4e5d87b878b
vidix support and better device options handler by Matan Ziv-Av <matan@svgalib.org>
alex
parents:
8148
diff
changeset
|
126 #endif |
b4e5d87b878b
vidix support and better device options handler by Matan Ziv-Av <matan@svgalib.org>
alex
parents:
8148
diff
changeset
|
127 if(!strncmp(arg,"sq",2)) { |
b4e5d87b878b
vidix support and better device options handler by Matan Ziv-Av <matan@svgalib.org>
alex
parents:
8148
diff
changeset
|
128 squarepix=1; |
b4e5d87b878b
vidix support and better device options handler by Matan Ziv-Av <matan@svgalib.org>
alex
parents:
8148
diff
changeset
|
129 arg+=2; |
b4e5d87b878b
vidix support and better device options handler by Matan Ziv-Av <matan@svgalib.org>
alex
parents:
8148
diff
changeset
|
130 if( *arg == ':' ) arg++; |
b4e5d87b878b
vidix support and better device options handler by Matan Ziv-Av <matan@svgalib.org>
alex
parents:
8148
diff
changeset
|
131 } |
b4e5d87b878b
vidix support and better device options handler by Matan Ziv-Av <matan@svgalib.org>
alex
parents:
8148
diff
changeset
|
132 |
b4e5d87b878b
vidix support and better device options handler by Matan Ziv-Av <matan@svgalib.org>
alex
parents:
8148
diff
changeset
|
133 if(*arg) { |
b4e5d87b878b
vidix support and better device options handler by Matan Ziv-Av <matan@svgalib.org>
alex
parents:
8148
diff
changeset
|
134 int i; |
b4e5d87b878b
vidix support and better device options handler by Matan Ziv-Av <matan@svgalib.org>
alex
parents:
8148
diff
changeset
|
135 char s[64]; |
b4e5d87b878b
vidix support and better device options handler by Matan Ziv-Av <matan@svgalib.org>
alex
parents:
8148
diff
changeset
|
136 printf("arg is %s\n",arg); |
b4e5d87b878b
vidix support and better device options handler by Matan Ziv-Av <matan@svgalib.org>
alex
parents:
8148
diff
changeset
|
137 i=0; |
b4e5d87b878b
vidix support and better device options handler by Matan Ziv-Av <matan@svgalib.org>
alex
parents:
8148
diff
changeset
|
138 while(arg[i] && arg[i]!=':')i++; |
b4e5d87b878b
vidix support and better device options handler by Matan Ziv-Av <matan@svgalib.org>
alex
parents:
8148
diff
changeset
|
139 strncpy(s, arg, i); |
b4e5d87b878b
vidix support and better device options handler by Matan Ziv-Av <matan@svgalib.org>
alex
parents:
8148
diff
changeset
|
140 s[i]=0; |
b4e5d87b878b
vidix support and better device options handler by Matan Ziv-Av <matan@svgalib.org>
alex
parents:
8148
diff
changeset
|
141 arg+=i; |
b4e5d87b878b
vidix support and better device options handler by Matan Ziv-Av <matan@svgalib.org>
alex
parents:
8148
diff
changeset
|
142 if(*arg==':')arg++; |
b4e5d87b878b
vidix support and better device options handler by Matan Ziv-Av <matan@svgalib.org>
alex
parents:
8148
diff
changeset
|
143 printf("i=%i new arg is %s\n",i, arg); |
b4e5d87b878b
vidix support and better device options handler by Matan Ziv-Av <matan@svgalib.org>
alex
parents:
8148
diff
changeset
|
144 i=vga_getmodenumber(s); |
b4e5d87b878b
vidix support and better device options handler by Matan Ziv-Av <matan@svgalib.org>
alex
parents:
8148
diff
changeset
|
145 if(i>0) { |
b4e5d87b878b
vidix support and better device options handler by Matan Ziv-Av <matan@svgalib.org>
alex
parents:
8148
diff
changeset
|
146 force_vm = i; |
b4e5d87b878b
vidix support and better device options handler by Matan Ziv-Av <matan@svgalib.org>
alex
parents:
8148
diff
changeset
|
147 if(verbose)printf("vo_svga: Forcing mode %i\n",force_vm); |
b4e5d87b878b
vidix support and better device options handler by Matan Ziv-Av <matan@svgalib.org>
alex
parents:
8148
diff
changeset
|
148 } |
b4e5d87b878b
vidix support and better device options handler by Matan Ziv-Av <matan@svgalib.org>
alex
parents:
8148
diff
changeset
|
149 } |
b4e5d87b878b
vidix support and better device options handler by Matan Ziv-Av <matan@svgalib.org>
alex
parents:
8148
diff
changeset
|
150 } |
b4e5d87b878b
vidix support and better device options handler by Matan Ziv-Av <matan@svgalib.org>
alex
parents:
8148
diff
changeset
|
151 |
7675 | 152 if (!checked) { |
153 if (checksupportedmodes()) // Looking for available video modes | |
154 return(1); | |
155 } | |
156 | |
5679
30f196ff3bec
This patch replaces vo_svga.c with an improved version that does not use
arpi
parents:
4596
diff
changeset
|
157 return 0; |
483 | 158 } |
159 | |
5679
30f196ff3bec
This patch replaces vo_svga.c with an improved version that does not use
arpi
parents:
4596
diff
changeset
|
160 static uint32_t control(uint32_t request, void *data, ...) |
30f196ff3bec
This patch replaces vo_svga.c with an improved version that does not use
arpi
parents:
4596
diff
changeset
|
161 { |
30f196ff3bec
This patch replaces vo_svga.c with an improved version that does not use
arpi
parents:
4596
diff
changeset
|
162 switch (request) { |
30f196ff3bec
This patch replaces vo_svga.c with an improved version that does not use
arpi
parents:
4596
diff
changeset
|
163 case VOCTRL_QUERY_FORMAT: |
30f196ff3bec
This patch replaces vo_svga.c with an improved version that does not use
arpi
parents:
4596
diff
changeset
|
164 return query_format(*((uint32_t*)data)); |
30f196ff3bec
This patch replaces vo_svga.c with an improved version that does not use
arpi
parents:
4596
diff
changeset
|
165 case VOCTRL_GET_IMAGE: |
30f196ff3bec
This patch replaces vo_svga.c with an improved version that does not use
arpi
parents:
4596
diff
changeset
|
166 return get_image(data); |
30f196ff3bec
This patch replaces vo_svga.c with an improved version that does not use
arpi
parents:
4596
diff
changeset
|
167 } |
30f196ff3bec
This patch replaces vo_svga.c with an improved version that does not use
arpi
parents:
4596
diff
changeset
|
168 return VO_NOTIMPL; |
285 | 169 } |
170 | |
4433 | 171 static uint32_t config(uint32_t width, uint32_t height, uint32_t d_width, |
8515
b4e5d87b878b
vidix support and better device options handler by Matan Ziv-Av <matan@svgalib.org>
alex
parents:
8148
diff
changeset
|
172 uint32_t d_height, uint32_t flags, char *title, |
7124
eca7dbad0166
finally removed query_vaa, bes_da and vo_tune_info - the obsoleted libvo api
alex
parents:
6579
diff
changeset
|
173 uint32_t format) { |
483 | 174 uint32_t req_w = (d_width > 0 ? d_width : width); |
175 uint32_t req_h = (d_height > 0 ? d_height : height); | |
176 uint16_t vid_mode = 0; | |
976 | 177 uint8_t res_widescr, vid_widescr = (((req_w*1.0)/req_h) > (4.0/3)) ? 1 : 0; |
485 | 178 uint16_t buf_w = USHRT_MAX, buf_h = USHRT_MAX; |
483 | 179 vga_modelist_t *list = modelist; |
5679
30f196ff3bec
This patch replaces vo_svga.c with an improved version that does not use
arpi
parents:
4596
diff
changeset
|
180 |
8515
b4e5d87b878b
vidix support and better device options handler by Matan Ziv-Av <matan@svgalib.org>
alex
parents:
8148
diff
changeset
|
181 if(verbose) |
b4e5d87b878b
vidix support and better device options handler by Matan Ziv-Av <matan@svgalib.org>
alex
parents:
8148
diff
changeset
|
182 printf("vo_svga: config(%i, %i, %i, %i, %08x, %s, %08x)\n", width, height, |
b4e5d87b878b
vidix support and better device options handler by Matan Ziv-Av <matan@svgalib.org>
alex
parents:
8148
diff
changeset
|
183 d_width, d_height, flags, title, format); |
b4e5d87b878b
vidix support and better device options handler by Matan Ziv-Av <matan@svgalib.org>
alex
parents:
8148
diff
changeset
|
184 |
483 | 185 bpp_avail = 0; |
186 while (list != NULL) { | |
187 if ((list->modeinfo.width >= req_w) && (list->modeinfo.height >= req_h)) { | |
188 switch (list->modeinfo.colors) { | |
189 case 32768: bpp_avail |= BPP_15; break; | |
190 case 65536: bpp_avail |= BPP_16; break; | |
6451
ed906af317da
8bpp support (no dithering yet, use -vop noise for now)
michael
parents:
6052
diff
changeset
|
191 case 256 : bpp_avail |= BPP_8; break; |
ed906af317da
8bpp support (no dithering yet, use -vop noise for now)
michael
parents:
6052
diff
changeset
|
192 case 16 : bpp_avail |= BPP_4; break; |
6453 | 193 case 2 : bpp_avail |= BPP_1; break; |
483 | 194 } |
195 switch (list->modeinfo.bytesperpixel) { | |
196 case 3: bpp_avail |= BPP_24; break; | |
197 case 4: bpp_avail |= BPP_32; break; | |
198 } | |
199 } | |
200 list = list->next; | |
201 } | |
202 | |
285 | 203 pformat = format; |
411 | 204 |
483 | 205 // bpp check |
206 bpp_conv = 0; | |
411 | 207 if (!vo_dbpp) { |
8515
b4e5d87b878b
vidix support and better device options handler by Matan Ziv-Av <matan@svgalib.org>
alex
parents:
8148
diff
changeset
|
208 if (!IMGFMT_IS_RGB(format) && !IMGFMT_IS_BGR(format)) bpp = 32; |
411 | 209 else bpp = format & 255; |
504 | 210 if (verbose) |
211 printf("vo_svga: vo_dbpp == 0, bpp: %d\n",bpp); | |
483 | 212 switch (bpp) { |
213 case 32: if (!(bpp_avail & BPP_32)) { | |
214 printf("vo_svga: Haven't found video mode which fit to: %dx%d %dbpp\n",req_w,req_h,bpp); | |
485 | 215 printf("vo_svga: Maybe you should try -bpp\n"); |
483 | 216 return(1); |
217 } | |
218 break; | |
619 | 219 case 24: if (!(bpp_avail & BPP_24)) { |
483 | 220 if (!(bpp_avail & BPP_32)) { |
221 printf("vo_svga: Haven't found video mode which fit to: %dx%d %dbpp\n",req_w,req_h,bpp); | |
485 | 222 printf("vo_svga: Maybe you should try -bpp\n"); |
483 | 223 return(1); |
224 } else { | |
225 bpp = 32; | |
226 bpp_conv = 1; | |
617 | 227 printf("vo_svga: BPP conversion 24->32\n"); |
619 | 228 } |
229 } | |
483 | 230 break; |
231 case 16: if (!(bpp_avail & BPP_16)) { | |
232 printf("vo_svga: Haven't found video mode which fit to: %dx%d %dbpp\n",req_w,req_h,bpp); | |
233 printf("vo_svga: Maybe you should try -bpp\n"); | |
234 return(1); | |
235 } | |
236 break; | |
619 | 237 case 15: if (!(bpp_avail & BPP_15)) { |
483 | 238 if (!(bpp_avail & BPP_16)) { |
239 printf("vo_svga: Haven't found video mode which fit to: %dx%d %dbpp\n",req_w,req_h,bpp); | |
240 printf("vo_svga: Maybe you should try -bpp\n"); | |
241 return(1); | |
242 } else { | |
243 bpp = 16; | |
244 bpp_conv = 1; | |
617 | 245 printf("vo_svga: BPP conversion 15->16\n"); |
483 | 246 } |
619 | 247 } |
483 | 248 break; |
6451
ed906af317da
8bpp support (no dithering yet, use -vop noise for now)
michael
parents:
6052
diff
changeset
|
249 case 8: if (!(bpp_avail & BPP_8)) { |
ed906af317da
8bpp support (no dithering yet, use -vop noise for now)
michael
parents:
6052
diff
changeset
|
250 printf("vo_svga: Haven't found video mode which fit to: %dx%d %dbpp\n",req_w,req_h,bpp); |
ed906af317da
8bpp support (no dithering yet, use -vop noise for now)
michael
parents:
6052
diff
changeset
|
251 printf("vo_svga: Maybe you should try -bpp\n"); |
ed906af317da
8bpp support (no dithering yet, use -vop noise for now)
michael
parents:
6052
diff
changeset
|
252 return(1); |
ed906af317da
8bpp support (no dithering yet, use -vop noise for now)
michael
parents:
6052
diff
changeset
|
253 } |
ed906af317da
8bpp support (no dithering yet, use -vop noise for now)
michael
parents:
6052
diff
changeset
|
254 break; |
6453 | 255 case 4: if (!(bpp_avail & BPP_4)) { |
256 printf("vo_svga: Haven't found video mode which fit to: %dx%d %dbpp\n",req_w,req_h,bpp); | |
257 printf("vo_svga: Maybe you should try -bpp\n"); | |
258 return(1); | |
259 } | |
260 break; | |
261 case 1: if (!(bpp_avail & BPP_1)) { | |
262 printf("vo_svga: Haven't found video mode which fit to: %dx%d %dbpp\n",req_w,req_h,bpp); | |
263 printf("vo_svga: Maybe you should try -bpp\n"); | |
264 return(1); | |
265 } | |
266 break; | |
483 | 267 } |
411 | 268 } else { |
269 bpp = vo_dbpp; | |
504 | 270 if (verbose) |
271 printf("vo_svga: vo_dbpp == %d\n",bpp); | |
411 | 272 switch (bpp) { |
483 | 273 case 32: if (!(bpp_avail & BPP_32)) { |
485 | 274 printf("vo_svga: %dbpp not supported in %dx%d (or larger resoltuion) by HW or SVGAlib\n",bpp,req_w,req_h); |
411 | 275 return(1); |
276 } | |
485 | 277 break; |
483 | 278 case 24: if (!(bpp_avail & BPP_24)) { |
485 | 279 printf("vo_svga: %dbpp not supported in %dx%d (or larger resoltuion) by HW or SVGAlib\n",bpp,req_w,req_h); |
411 | 280 return(1); |
281 } | |
485 | 282 break; |
483 | 283 case 16: if (!(bpp_avail & BPP_16)) { |
485 | 284 printf("vo_svga: %dbpp not supported in %dx%d (or larger resoltuion) by HW or SVGAlib\n",bpp,req_w,req_h); |
411 | 285 return(1); |
286 } | |
485 | 287 break; |
483 | 288 case 15: if (!(bpp_avail & BPP_15)) { |
485 | 289 printf("vo_svga: %dbpp not supported in %dx%d (or larger resoltuion) by HW or SVGAlib\n",bpp,req_w,req_h); |
411 | 290 return(1); |
291 } | |
485 | 292 break; |
6451
ed906af317da
8bpp support (no dithering yet, use -vop noise for now)
michael
parents:
6052
diff
changeset
|
293 case 8: if (!(bpp_avail & BPP_8)) { |
ed906af317da
8bpp support (no dithering yet, use -vop noise for now)
michael
parents:
6052
diff
changeset
|
294 printf("vo_svga: %dbpp not supported in %dx%d (or larger resoltuion) by HW or SVGAlib\n",bpp,req_w,req_h); |
ed906af317da
8bpp support (no dithering yet, use -vop noise for now)
michael
parents:
6052
diff
changeset
|
295 return(1); |
ed906af317da
8bpp support (no dithering yet, use -vop noise for now)
michael
parents:
6052
diff
changeset
|
296 } |
ed906af317da
8bpp support (no dithering yet, use -vop noise for now)
michael
parents:
6052
diff
changeset
|
297 break; |
6453 | 298 case 4: if (!(bpp_avail & BPP_4)) { |
299 printf("vo_svga: %dbpp not supported in %dx%d (or larger resoltuion) by HW or SVGAlib\n",bpp,req_w,req_h); | |
300 return(1); | |
301 } | |
302 break; | |
303 case 1: if (!(bpp_avail & BPP_1)) { | |
304 printf("vo_svga: %dbpp not supported in %dx%d (or larger resoltuion) by HW or SVGAlib\n",bpp,req_w,req_h); | |
305 return(1); | |
306 } | |
307 break; | |
411 | 308 } |
309 } | |
483 | 310 |
311 list = modelist; | |
504 | 312 if (verbose) { |
313 printf("vo_svga: Looking for the best resolution...\n"); | |
314 printf("vo_svga: req_w: %d, req_h: %d, bpp: %d\n",req_w,req_h,bpp); | |
315 } | |
485 | 316 while (list != NULL) { |
483 | 317 if ((list->modeinfo.width >= req_w) && (list->modeinfo.height >= req_h)) { |
504 | 318 if (verbose) { |
319 switch (list->modeinfo.colors) { | |
6453 | 320 case 2 : printf("vo_svga: vid_mode: %d, %dx%d 1bpp\n", |
321 list->modenum,list->modeinfo.width,list->modeinfo.height); | |
322 break; | |
323 case 16 : printf("vo_svga: vid_mode: %d, %dx%d 4bpp\n", | |
324 list->modenum,list->modeinfo.width,list->modeinfo.height); | |
325 break; | |
6451
ed906af317da
8bpp support (no dithering yet, use -vop noise for now)
michael
parents:
6052
diff
changeset
|
326 case 256 : printf("vo_svga: vid_mode: %d, %dx%d 8bpp\n", |
ed906af317da
8bpp support (no dithering yet, use -vop noise for now)
michael
parents:
6052
diff
changeset
|
327 list->modenum,list->modeinfo.width,list->modeinfo.height); |
ed906af317da
8bpp support (no dithering yet, use -vop noise for now)
michael
parents:
6052
diff
changeset
|
328 break; |
5679
30f196ff3bec
This patch replaces vo_svga.c with an improved version that does not use
arpi
parents:
4596
diff
changeset
|
329 case 32768: printf("vo_svga: vid_mode: %d, %dx%d 15bpp\n", |
30f196ff3bec
This patch replaces vo_svga.c with an improved version that does not use
arpi
parents:
4596
diff
changeset
|
330 list->modenum,list->modeinfo.width,list->modeinfo.height); |
504 | 331 break; |
5679
30f196ff3bec
This patch replaces vo_svga.c with an improved version that does not use
arpi
parents:
4596
diff
changeset
|
332 case 65536: printf("vo_svga: vid_mode: %d, %dx%d 16bpp\n", |
30f196ff3bec
This patch replaces vo_svga.c with an improved version that does not use
arpi
parents:
4596
diff
changeset
|
333 list->modenum,list->modeinfo.width,list->modeinfo.height); |
504 | 334 break; |
335 } | |
336 switch (list->modeinfo.bytesperpixel) { | |
5679
30f196ff3bec
This patch replaces vo_svga.c with an improved version that does not use
arpi
parents:
4596
diff
changeset
|
337 case 3: printf("vo_svga: vid_mode: %d, %dx%d 24bpp\n", |
30f196ff3bec
This patch replaces vo_svga.c with an improved version that does not use
arpi
parents:
4596
diff
changeset
|
338 list->modenum,list->modeinfo.width,list->modeinfo.height); |
504 | 339 break; |
5679
30f196ff3bec
This patch replaces vo_svga.c with an improved version that does not use
arpi
parents:
4596
diff
changeset
|
340 case 4: printf("vo_svga: vid_mode: %d, %dx%d 32bpp\n", |
30f196ff3bec
This patch replaces vo_svga.c with an improved version that does not use
arpi
parents:
4596
diff
changeset
|
341 list->modenum,list->modeinfo.width,list->modeinfo.height); |
504 | 342 break; |
343 } | |
344 } | |
285 | 345 switch (bpp) { |
483 | 346 case 32: if (list->modeinfo.bytesperpixel == 4) |
485 | 347 if ((list->modeinfo.width < buf_w) || (list->modeinfo.height < buf_h)) { |
348 vid_mode = list->modenum; | |
349 buf_w = list->modeinfo.width; | |
350 buf_h = list->modeinfo.height; | |
976 | 351 res_widescr = (((buf_w*1.0)/buf_h) > (4.0/3)) ? 1 : 0; |
485 | 352 } |
353 break; | |
483 | 354 case 24: if (list->modeinfo.bytesperpixel == 3) |
485 | 355 if ((list->modeinfo.width < buf_w) || (list->modeinfo.height < buf_h)) { |
356 vid_mode = list->modenum; | |
357 buf_w = list->modeinfo.width; | |
358 buf_h = list->modeinfo.height; | |
976 | 359 res_widescr = (((buf_w*1.0)/buf_h) > (4.0/3)) ? 1 : 0; |
485 | 360 } |
361 break; | |
483 | 362 case 16: if (list->modeinfo.colors == 65536) |
485 | 363 if ((list->modeinfo.width < buf_w) || (list->modeinfo.height < buf_h)) { |
364 vid_mode = list->modenum; | |
365 buf_w = list->modeinfo.width; | |
366 buf_h = list->modeinfo.height; | |
976 | 367 res_widescr = (((buf_w*1.0)/buf_h) > (4.0/3)) ? 1 : 0; |
485 | 368 } |
369 break; | |
483 | 370 case 15: if (list->modeinfo.colors == 32768) |
485 | 371 if ((list->modeinfo.width < buf_w) || (list->modeinfo.height < buf_h)) { |
372 vid_mode = list->modenum; | |
373 buf_w = list->modeinfo.width; | |
374 buf_h = list->modeinfo.height; | |
976 | 375 res_widescr = (((buf_w*1.0)/buf_h) > (4.0/3)) ? 1 : 0; |
485 | 376 } |
377 break; | |
6451
ed906af317da
8bpp support (no dithering yet, use -vop noise for now)
michael
parents:
6052
diff
changeset
|
378 case 8: if (list->modeinfo.colors == 256) |
ed906af317da
8bpp support (no dithering yet, use -vop noise for now)
michael
parents:
6052
diff
changeset
|
379 if ((list->modeinfo.width < buf_w) || (list->modeinfo.height < buf_h)) { |
ed906af317da
8bpp support (no dithering yet, use -vop noise for now)
michael
parents:
6052
diff
changeset
|
380 vid_mode = list->modenum; |
ed906af317da
8bpp support (no dithering yet, use -vop noise for now)
michael
parents:
6052
diff
changeset
|
381 buf_w = list->modeinfo.width; |
ed906af317da
8bpp support (no dithering yet, use -vop noise for now)
michael
parents:
6052
diff
changeset
|
382 buf_h = list->modeinfo.height; |
ed906af317da
8bpp support (no dithering yet, use -vop noise for now)
michael
parents:
6052
diff
changeset
|
383 res_widescr = (((buf_w*1.0)/buf_h) > (4.0/3)) ? 1 : 0; |
ed906af317da
8bpp support (no dithering yet, use -vop noise for now)
michael
parents:
6052
diff
changeset
|
384 } |
ed906af317da
8bpp support (no dithering yet, use -vop noise for now)
michael
parents:
6052
diff
changeset
|
385 break; |
6453 | 386 case 4: if (list->modeinfo.colors ==16) |
387 if ((list->modeinfo.width < buf_w) || (list->modeinfo.height < buf_h)) { | |
388 vid_mode = list->modenum; | |
389 buf_w = list->modeinfo.width; | |
390 buf_h = list->modeinfo.height; | |
391 res_widescr = (((buf_w*1.0)/buf_h) > (4.0/3)) ? 1 : 0; | |
392 } | |
393 break; | |
394 case 1: if (list->modeinfo.colors == 2) | |
395 if ((list->modeinfo.width < buf_w) || (list->modeinfo.height < buf_h)) { | |
396 vid_mode = list->modenum; | |
397 buf_w = list->modeinfo.width; | |
398 buf_h = list->modeinfo.height; | |
399 res_widescr = (((buf_w*1.0)/buf_h) > (4.0/3)) ? 1 : 0; | |
400 } | |
401 break; | |
285 | 402 } |
483 | 403 } |
404 list = list->next; | |
407 | 405 } |
6451
ed906af317da
8bpp support (no dithering yet, use -vop noise for now)
michael
parents:
6052
diff
changeset
|
406 |
8515
b4e5d87b878b
vidix support and better device options handler by Matan Ziv-Av <matan@svgalib.org>
alex
parents:
8148
diff
changeset
|
407 if(force_vm) { |
2982
32638add0dc8
mode selection (subdev) fix by Matan Ziv-Av matan@svgalib.org
arpi
parents:
2732
diff
changeset
|
408 list=modelist; |
32638add0dc8
mode selection (subdev) fix by Matan Ziv-Av matan@svgalib.org
arpi
parents:
2732
diff
changeset
|
409 while(list) { |
8515
b4e5d87b878b
vidix support and better device options handler by Matan Ziv-Av <matan@svgalib.org>
alex
parents:
8148
diff
changeset
|
410 if(list->modenum == force_vm) { |
2982
32638add0dc8
mode selection (subdev) fix by Matan Ziv-Av matan@svgalib.org
arpi
parents:
2732
diff
changeset
|
411 buf_w = list->modeinfo.width; |
32638add0dc8
mode selection (subdev) fix by Matan Ziv-Av matan@svgalib.org
arpi
parents:
2732
diff
changeset
|
412 buf_h = list->modeinfo.height; |
32638add0dc8
mode selection (subdev) fix by Matan Ziv-Av matan@svgalib.org
arpi
parents:
2732
diff
changeset
|
413 res_widescr = (((buf_w*1.0)/buf_h) > (4.0/3)) ? 1 : 0; |
32638add0dc8
mode selection (subdev) fix by Matan Ziv-Av matan@svgalib.org
arpi
parents:
2732
diff
changeset
|
414 switch(list->modeinfo.colors) { |
6453 | 415 case 2: |
416 bpp=1; | |
417 bpp_conv=0; | |
418 break; | |
419 case 16: | |
420 bpp=4; | |
421 bpp_conv=0; | |
422 break; | |
6451
ed906af317da
8bpp support (no dithering yet, use -vop noise for now)
michael
parents:
6052
diff
changeset
|
423 case 256: |
ed906af317da
8bpp support (no dithering yet, use -vop noise for now)
michael
parents:
6052
diff
changeset
|
424 bpp=8; |
ed906af317da
8bpp support (no dithering yet, use -vop noise for now)
michael
parents:
6052
diff
changeset
|
425 bpp_conv=0; |
ed906af317da
8bpp support (no dithering yet, use -vop noise for now)
michael
parents:
6052
diff
changeset
|
426 break; |
2982
32638add0dc8
mode selection (subdev) fix by Matan Ziv-Av matan@svgalib.org
arpi
parents:
2732
diff
changeset
|
427 case 32768: |
32638add0dc8
mode selection (subdev) fix by Matan Ziv-Av matan@svgalib.org
arpi
parents:
2732
diff
changeset
|
428 bpp=16; |
32638add0dc8
mode selection (subdev) fix by Matan Ziv-Av matan@svgalib.org
arpi
parents:
2732
diff
changeset
|
429 bpp_conv=1; |
32638add0dc8
mode selection (subdev) fix by Matan Ziv-Av matan@svgalib.org
arpi
parents:
2732
diff
changeset
|
430 break; |
32638add0dc8
mode selection (subdev) fix by Matan Ziv-Av matan@svgalib.org
arpi
parents:
2732
diff
changeset
|
431 case 65536: |
32638add0dc8
mode selection (subdev) fix by Matan Ziv-Av matan@svgalib.org
arpi
parents:
2732
diff
changeset
|
432 bpp=16; |
32638add0dc8
mode selection (subdev) fix by Matan Ziv-Av matan@svgalib.org
arpi
parents:
2732
diff
changeset
|
433 bpp_conv=0; |
32638add0dc8
mode selection (subdev) fix by Matan Ziv-Av matan@svgalib.org
arpi
parents:
2732
diff
changeset
|
434 break; |
32638add0dc8
mode selection (subdev) fix by Matan Ziv-Av matan@svgalib.org
arpi
parents:
2732
diff
changeset
|
435 case (1<<24): |
32638add0dc8
mode selection (subdev) fix by Matan Ziv-Av matan@svgalib.org
arpi
parents:
2732
diff
changeset
|
436 if(list->modeinfo.bytesperpixel == 3) { |
32638add0dc8
mode selection (subdev) fix by Matan Ziv-Av matan@svgalib.org
arpi
parents:
2732
diff
changeset
|
437 bpp=32; |
32638add0dc8
mode selection (subdev) fix by Matan Ziv-Av matan@svgalib.org
arpi
parents:
2732
diff
changeset
|
438 bpp_conv=1; |
32638add0dc8
mode selection (subdev) fix by Matan Ziv-Av matan@svgalib.org
arpi
parents:
2732
diff
changeset
|
439 } else { |
32638add0dc8
mode selection (subdev) fix by Matan Ziv-Av matan@svgalib.org
arpi
parents:
2732
diff
changeset
|
440 bpp=32; |
32638add0dc8
mode selection (subdev) fix by Matan Ziv-Av matan@svgalib.org
arpi
parents:
2732
diff
changeset
|
441 bpp_conv=0; |
32638add0dc8
mode selection (subdev) fix by Matan Ziv-Av matan@svgalib.org
arpi
parents:
2732
diff
changeset
|
442 } |
32638add0dc8
mode selection (subdev) fix by Matan Ziv-Av matan@svgalib.org
arpi
parents:
2732
diff
changeset
|
443 break; |
32638add0dc8
mode selection (subdev) fix by Matan Ziv-Av matan@svgalib.org
arpi
parents:
2732
diff
changeset
|
444 } |
8515
b4e5d87b878b
vidix support and better device options handler by Matan Ziv-Av <matan@svgalib.org>
alex
parents:
8148
diff
changeset
|
445 vid_mode=force_vm; |
2982
32638add0dc8
mode selection (subdev) fix by Matan Ziv-Av matan@svgalib.org
arpi
parents:
2732
diff
changeset
|
446 list=NULL; |
32638add0dc8
mode selection (subdev) fix by Matan Ziv-Av matan@svgalib.org
arpi
parents:
2732
diff
changeset
|
447 } else list=list->next; |
32638add0dc8
mode selection (subdev) fix by Matan Ziv-Av matan@svgalib.org
arpi
parents:
2732
diff
changeset
|
448 } |
32638add0dc8
mode selection (subdev) fix by Matan Ziv-Av matan@svgalib.org
arpi
parents:
2732
diff
changeset
|
449 } |
32638add0dc8
mode selection (subdev) fix by Matan Ziv-Av matan@svgalib.org
arpi
parents:
2732
diff
changeset
|
450 |
8515
b4e5d87b878b
vidix support and better device options handler by Matan Ziv-Av <matan@svgalib.org>
alex
parents:
8148
diff
changeset
|
451 |
504 | 452 if (verbose) |
453 printf("vo_svga: vid_mode: %d\n",vid_mode); | |
485 | 454 if (vga_setmode(vid_mode) == -1) { |
286 | 455 printf("vo_svga: vga_setmode(%d) failed.\n",vid_mode); |
483 | 456 uninit(); |
285 | 457 return(1); // error |
6451
ed906af317da
8bpp support (no dithering yet, use -vop noise for now)
michael
parents:
6052
diff
changeset
|
458 } |
ed906af317da
8bpp support (no dithering yet, use -vop noise for now)
michael
parents:
6052
diff
changeset
|
459 |
ed906af317da
8bpp support (no dithering yet, use -vop noise for now)
michael
parents:
6052
diff
changeset
|
460 /* set 332 palette for 8 bpp */ |
ed906af317da
8bpp support (no dithering yet, use -vop noise for now)
michael
parents:
6052
diff
changeset
|
461 if(bpp==8){ |
ed906af317da
8bpp support (no dithering yet, use -vop noise for now)
michael
parents:
6052
diff
changeset
|
462 int i; |
ed906af317da
8bpp support (no dithering yet, use -vop noise for now)
michael
parents:
6052
diff
changeset
|
463 for(i=0; i<256; i++) |
6453 | 464 vga_setpalette(i, ((i>>5)&7)*9, ((i>>2)&7)*9, (i&3)*21); |
465 } | |
466 /* set 121 palette for 4 bpp */ | |
467 else if(bpp==4){ | |
468 int i; | |
469 for(i=0; i<16; i++) | |
470 vga_setpalette(i, ((i>>3)&1)*63, ((i>>1)&3)*21, (i&1)*63); | |
6451
ed906af317da
8bpp support (no dithering yet, use -vop noise for now)
michael
parents:
6052
diff
changeset
|
471 } |
5679
30f196ff3bec
This patch replaces vo_svga.c with an improved version that does not use
arpi
parents:
4596
diff
changeset
|
472 |
30f196ff3bec
This patch replaces vo_svga.c with an improved version that does not use
arpi
parents:
4596
diff
changeset
|
473 WIDTH=vga_getxdim(); |
30f196ff3bec
This patch replaces vo_svga.c with an improved version that does not use
arpi
parents:
4596
diff
changeset
|
474 HEIGHT=vga_getydim(); |
6453 | 475 BYTESPERPIXEL=(bpp+4)>>3; |
6456 | 476 if(bpp==1) |
477 LINEWIDTH=(WIDTH+7)/8; | |
478 else | |
8515
b4e5d87b878b
vidix support and better device options handler by Matan Ziv-Av <matan@svgalib.org>
alex
parents:
8148
diff
changeset
|
479 LINEWIDTH=vga_getmodeinfo(vid_mode)->linewidth; |
6456 | 480 |
8673
4c0882ee0f4d
vga_draw* functions don't support linear memory for 'most' video cards
iive
parents:
8520
diff
changeset
|
481 // vga_setlinearaddressing(); //it is not compatable with vga_draw* for "some" cards |
5679
30f196ff3bec
This patch replaces vo_svga.c with an improved version that does not use
arpi
parents:
4596
diff
changeset
|
482 if(oldmethod) { |
30f196ff3bec
This patch replaces vo_svga.c with an improved version that does not use
arpi
parents:
4596
diff
changeset
|
483 buffer=malloc(HEIGHT*LINEWIDTH); |
30f196ff3bec
This patch replaces vo_svga.c with an improved version that does not use
arpi
parents:
4596
diff
changeset
|
484 maxframes=0; |
8515
b4e5d87b878b
vidix support and better device options handler by Matan Ziv-Av <matan@svgalib.org>
alex
parents:
8148
diff
changeset
|
485 } else if ((vga_getmodeinfo(vid_mode)->flags&IS_LINEAR)) { |
b4e5d87b878b
vidix support and better device options handler by Matan Ziv-Av <matan@svgalib.org>
alex
parents:
8148
diff
changeset
|
486 directrender=1; |
b4e5d87b878b
vidix support and better device options handler by Matan Ziv-Av <matan@svgalib.org>
alex
parents:
8148
diff
changeset
|
487 if(verbose) printf("vo_svga: Using direct rendering to linear video ram.\n"); |
286 | 488 } |
8515
b4e5d87b878b
vidix support and better device options handler by Matan Ziv-Av <matan@svgalib.org>
alex
parents:
8148
diff
changeset
|
489 |
5679
30f196ff3bec
This patch replaces vo_svga.c with an improved version that does not use
arpi
parents:
4596
diff
changeset
|
490 vga_claimvideomemory((maxframes+1)*HEIGHT*LINEWIDTH); |
30f196ff3bec
This patch replaces vo_svga.c with an improved version that does not use
arpi
parents:
4596
diff
changeset
|
491 GRAPH_MEM=vga_getgraphmem(); |
30f196ff3bec
This patch replaces vo_svga.c with an improved version that does not use
arpi
parents:
4596
diff
changeset
|
492 frame=0; |
30f196ff3bec
This patch replaces vo_svga.c with an improved version that does not use
arpi
parents:
4596
diff
changeset
|
493 fillbox(0,0,WIDTH,HEIGHT*(maxframes+1),0); |
285 | 494 |
5679
30f196ff3bec
This patch replaces vo_svga.c with an improved version that does not use
arpi
parents:
4596
diff
changeset
|
495 orig_w = width; |
30f196ff3bec
This patch replaces vo_svga.c with an improved version that does not use
arpi
parents:
4596
diff
changeset
|
496 orig_h = height; |
8515
b4e5d87b878b
vidix support and better device options handler by Matan Ziv-Av <matan@svgalib.org>
alex
parents:
8148
diff
changeset
|
497 maxw = req_w; |
b4e5d87b878b
vidix support and better device options handler by Matan Ziv-Av <matan@svgalib.org>
alex
parents:
8148
diff
changeset
|
498 maxh = req_h; |
5679
30f196ff3bec
This patch replaces vo_svga.c with an improved version that does not use
arpi
parents:
4596
diff
changeset
|
499 |
485 | 500 if (bpp_conv) { |
483 | 501 bppbuf = malloc(maxw * maxh * BYTESPERPIXEL); |
485 | 502 if (bppbuf == NULL) { |
503 printf("vo_svga: bppbuf -> Not enough memory for buffering!\n"); | |
504 uninit(); | |
505 return (1); | |
506 } | |
483 | 507 } |
8520 | 508 |
509 #ifdef CONFIG_VIDIX | |
8515
b4e5d87b878b
vidix support and better device options handler by Matan Ziv-Av <matan@svgalib.org>
alex
parents:
8148
diff
changeset
|
510 if(!vidix_name[0]){ |
8520 | 511 #endif |
8515
b4e5d87b878b
vidix support and better device options handler by Matan Ziv-Av <matan@svgalib.org>
alex
parents:
8148
diff
changeset
|
512 maxw = width; /* No scaling */ |
b4e5d87b878b
vidix support and better device options handler by Matan Ziv-Av <matan@svgalib.org>
alex
parents:
8148
diff
changeset
|
513 maxh = height; |
8520 | 514 #ifdef CONFIG_VIDIX |
8515
b4e5d87b878b
vidix support and better device options handler by Matan Ziv-Av <matan@svgalib.org>
alex
parents:
8148
diff
changeset
|
515 } |
8520 | 516 #endif |
8515
b4e5d87b878b
vidix support and better device options handler by Matan Ziv-Av <matan@svgalib.org>
alex
parents:
8148
diff
changeset
|
517 if (pformat == IMGFMT_YV12) { |
b4e5d87b878b
vidix support and better device options handler by Matan Ziv-Av <matan@svgalib.org>
alex
parents:
8148
diff
changeset
|
518 yuv2rgb_init(bpp, MODE_RGB); |
b4e5d87b878b
vidix support and better device options handler by Matan Ziv-Av <matan@svgalib.org>
alex
parents:
8148
diff
changeset
|
519 } |
b4e5d87b878b
vidix support and better device options handler by Matan Ziv-Av <matan@svgalib.org>
alex
parents:
8148
diff
changeset
|
520 |
285 | 521 x_pos = (WIDTH - maxw) / 2; |
522 y_pos = (HEIGHT - maxh) / 2; | |
523 | |
8515
b4e5d87b878b
vidix support and better device options handler by Matan Ziv-Av <matan@svgalib.org>
alex
parents:
8148
diff
changeset
|
524 #ifdef CONFIG_VIDIX |
b4e5d87b878b
vidix support and better device options handler by Matan Ziv-Av <matan@svgalib.org>
alex
parents:
8148
diff
changeset
|
525 if(vidix_name[0]){ |
b4e5d87b878b
vidix support and better device options handler by Matan Ziv-Av <matan@svgalib.org>
alex
parents:
8148
diff
changeset
|
526 vidix_init(width, height, x_pos, y_pos, maxw, maxh, format, bpp, |
b4e5d87b878b
vidix support and better device options handler by Matan Ziv-Av <matan@svgalib.org>
alex
parents:
8148
diff
changeset
|
527 WIDTH, HEIGHT); |
b4e5d87b878b
vidix support and better device options handler by Matan Ziv-Av <matan@svgalib.org>
alex
parents:
8148
diff
changeset
|
528 printf("vo_svga: Using VIDIX. w=%i h=%i mw=%i mh=%i\n",width,height,maxw,maxh); |
b4e5d87b878b
vidix support and better device options handler by Matan Ziv-Av <matan@svgalib.org>
alex
parents:
8148
diff
changeset
|
529 vidix_start(); |
b4e5d87b878b
vidix support and better device options handler by Matan Ziv-Av <matan@svgalib.org>
alex
parents:
8148
diff
changeset
|
530 } |
b4e5d87b878b
vidix support and better device options handler by Matan Ziv-Av <matan@svgalib.org>
alex
parents:
8148
diff
changeset
|
531 #endif |
b4e5d87b878b
vidix support and better device options handler by Matan Ziv-Av <matan@svgalib.org>
alex
parents:
8148
diff
changeset
|
532 |
6456 | 533 if(bpp==1) |
534 yuvbuf = malloc((maxw+7)/8 * maxh); | |
535 else | |
536 yuvbuf = malloc(maxw * maxh * BYTESPERPIXEL); | |
537 | |
483 | 538 if (yuvbuf == NULL) { |
485 | 539 printf("vo_svga: yuvbuf -> Not enough memory for buffering!\n"); |
407 | 540 uninit(); |
541 return (1); | |
542 } | |
504 | 543 printf("vo_svga: SVGAlib resolution: %dx%d %dbpp - ", WIDTH, HEIGHT, bpp); |
293 | 544 if (maxw != orig_w || maxh != orig_h) printf("Video scaled to: %dx%d\n",maxw,maxh); |
285 | 545 else printf("No video scaling\n"); |
546 | |
5679
30f196ff3bec
This patch replaces vo_svga.c with an improved version that does not use
arpi
parents:
4596
diff
changeset
|
547 vga_setdisplaystart(0); |
30f196ff3bec
This patch replaces vo_svga.c with an improved version that does not use
arpi
parents:
4596
diff
changeset
|
548 |
30f196ff3bec
This patch replaces vo_svga.c with an improved version that does not use
arpi
parents:
4596
diff
changeset
|
549 return (0); |
30f196ff3bec
This patch replaces vo_svga.c with an improved version that does not use
arpi
parents:
4596
diff
changeset
|
550 } |
30f196ff3bec
This patch replaces vo_svga.c with an improved version that does not use
arpi
parents:
4596
diff
changeset
|
551 |
30f196ff3bec
This patch replaces vo_svga.c with an improved version that does not use
arpi
parents:
4596
diff
changeset
|
552 static uint32_t draw_frame(uint8_t *src[]) { |
7691
5381fb575552
10l fix & cleanup of draw_frame(), still NO support for stride :(
arpi
parents:
7675
diff
changeset
|
553 uint8_t *s=src[0]; |
5679
30f196ff3bec
This patch replaces vo_svga.c with an improved version that does not use
arpi
parents:
4596
diff
changeset
|
554 if (bpp_conv) { |
30f196ff3bec
This patch replaces vo_svga.c with an improved version that does not use
arpi
parents:
4596
diff
changeset
|
555 switch(bpp) { |
7691
5381fb575552
10l fix & cleanup of draw_frame(), still NO support for stride :(
arpi
parents:
7675
diff
changeset
|
556 case 32: |
5381fb575552
10l fix & cleanup of draw_frame(), still NO support for stride :(
arpi
parents:
7675
diff
changeset
|
557 rgb24to32(src[0],bppbuf,maxw * maxh * 3); |
5381fb575552
10l fix & cleanup of draw_frame(), still NO support for stride :(
arpi
parents:
7675
diff
changeset
|
558 break; |
5381fb575552
10l fix & cleanup of draw_frame(), still NO support for stride :(
arpi
parents:
7675
diff
changeset
|
559 case 16: |
5679
30f196ff3bec
This patch replaces vo_svga.c with an improved version that does not use
arpi
parents:
4596
diff
changeset
|
560 rgb15to16(src[0],bppbuf,maxw * maxh * 2); |
7691
5381fb575552
10l fix & cleanup of draw_frame(), still NO support for stride :(
arpi
parents:
7675
diff
changeset
|
561 break; |
5679
30f196ff3bec
This patch replaces vo_svga.c with an improved version that does not use
arpi
parents:
4596
diff
changeset
|
562 } |
7691
5381fb575552
10l fix & cleanup of draw_frame(), still NO support for stride :(
arpi
parents:
7675
diff
changeset
|
563 s = bppbuf; |
5679
30f196ff3bec
This patch replaces vo_svga.c with an improved version that does not use
arpi
parents:
4596
diff
changeset
|
564 } |
7691
5381fb575552
10l fix & cleanup of draw_frame(), still NO support for stride :(
arpi
parents:
7675
diff
changeset
|
565 putbox(x_pos, y_pos, maxw, maxh, s, 1); |
5679
30f196ff3bec
This patch replaces vo_svga.c with an improved version that does not use
arpi
parents:
4596
diff
changeset
|
566 return (0); |
30f196ff3bec
This patch replaces vo_svga.c with an improved version that does not use
arpi
parents:
4596
diff
changeset
|
567 } |
30f196ff3bec
This patch replaces vo_svga.c with an improved version that does not use
arpi
parents:
4596
diff
changeset
|
568 |
30f196ff3bec
This patch replaces vo_svga.c with an improved version that does not use
arpi
parents:
4596
diff
changeset
|
569 static uint32_t draw_slice(uint8_t *image[], int stride[], |
30f196ff3bec
This patch replaces vo_svga.c with an improved version that does not use
arpi
parents:
4596
diff
changeset
|
570 int w, int h, int x, int y) { |
30f196ff3bec
This patch replaces vo_svga.c with an improved version that does not use
arpi
parents:
4596
diff
changeset
|
571 uint8_t *src = yuvbuf; |
30f196ff3bec
This patch replaces vo_svga.c with an improved version that does not use
arpi
parents:
4596
diff
changeset
|
572 uint32_t sw, sh; |
8515
b4e5d87b878b
vidix support and better device options handler by Matan Ziv-Av <matan@svgalib.org>
alex
parents:
8148
diff
changeset
|
573 |
b4e5d87b878b
vidix support and better device options handler by Matan Ziv-Av <matan@svgalib.org>
alex
parents:
8148
diff
changeset
|
574 if(directrender) { |
b4e5d87b878b
vidix support and better device options handler by Matan Ziv-Av <matan@svgalib.org>
alex
parents:
8148
diff
changeset
|
575 yuv2rgb(GRAPH_MEM+(frame*HEIGHT+y+y_pos)*LINEWIDTH+(x+x_pos)*BYTESPERPIXEL, |
b4e5d87b878b
vidix support and better device options handler by Matan Ziv-Av <matan@svgalib.org>
alex
parents:
8148
diff
changeset
|
576 image[0], image[1], image[2], w, h, LINEWIDTH, stride[0], stride[1]); |
b4e5d87b878b
vidix support and better device options handler by Matan Ziv-Av <matan@svgalib.org>
alex
parents:
8148
diff
changeset
|
577 } else { |
6456 | 578 if(bpp==1) |
579 yuv2rgb(yuvbuf, image[0], image[1], image[2], w, h, (orig_w+7)/8, stride[0], stride[1]); | |
580 else | |
8515
b4e5d87b878b
vidix support and better device options handler by Matan Ziv-Av <matan@svgalib.org>
alex
parents:
8148
diff
changeset
|
581 yuv2rgb(yuvbuf, image[0], image[1], image[2], w, h, orig_w * BYTESPERPIXEL, |
b4e5d87b878b
vidix support and better device options handler by Matan Ziv-Av <matan@svgalib.org>
alex
parents:
8148
diff
changeset
|
582 stride[0], stride[1]); |
6456 | 583 |
5679
30f196ff3bec
This patch replaces vo_svga.c with an improved version that does not use
arpi
parents:
4596
diff
changeset
|
584 putbox(x + x_pos, y + y_pos, w, h, src, 1); |
8515
b4e5d87b878b
vidix support and better device options handler by Matan Ziv-Av <matan@svgalib.org>
alex
parents:
8148
diff
changeset
|
585 } |
5679
30f196ff3bec
This patch replaces vo_svga.c with an improved version that does not use
arpi
parents:
4596
diff
changeset
|
586 |
285 | 587 return (0); |
588 } | |
589 | |
5679
30f196ff3bec
This patch replaces vo_svga.c with an improved version that does not use
arpi
parents:
4596
diff
changeset
|
590 static void draw_osd(void) |
30f196ff3bec
This patch replaces vo_svga.c with an improved version that does not use
arpi
parents:
4596
diff
changeset
|
591 { |
30f196ff3bec
This patch replaces vo_svga.c with an improved version that does not use
arpi
parents:
4596
diff
changeset
|
592 if(oldmethod) { |
30f196ff3bec
This patch replaces vo_svga.c with an improved version that does not use
arpi
parents:
4596
diff
changeset
|
593 if (y_pos) { |
30f196ff3bec
This patch replaces vo_svga.c with an improved version that does not use
arpi
parents:
4596
diff
changeset
|
594 fillbox(0, 0, WIDTH, y_pos, 0); |
30f196ff3bec
This patch replaces vo_svga.c with an improved version that does not use
arpi
parents:
4596
diff
changeset
|
595 fillbox(0, HEIGHT - y_pos, WIDTH, y_pos, 0); |
30f196ff3bec
This patch replaces vo_svga.c with an improved version that does not use
arpi
parents:
4596
diff
changeset
|
596 if (x_pos) { |
30f196ff3bec
This patch replaces vo_svga.c with an improved version that does not use
arpi
parents:
4596
diff
changeset
|
597 int hmy=HEIGHT - (y_pos<<1); |
30f196ff3bec
This patch replaces vo_svga.c with an improved version that does not use
arpi
parents:
4596
diff
changeset
|
598 fillbox(0, y_pos, x_pos, hmy, 0); |
30f196ff3bec
This patch replaces vo_svga.c with an improved version that does not use
arpi
parents:
4596
diff
changeset
|
599 fillbox(WIDTH - x_pos, y_pos, x_pos, hmy, 0); |
30f196ff3bec
This patch replaces vo_svga.c with an improved version that does not use
arpi
parents:
4596
diff
changeset
|
600 } |
30f196ff3bec
This patch replaces vo_svga.c with an improved version that does not use
arpi
parents:
4596
diff
changeset
|
601 } else if (x_pos) { |
30f196ff3bec
This patch replaces vo_svga.c with an improved version that does not use
arpi
parents:
4596
diff
changeset
|
602 fillbox(0, y_pos, x_pos, HEIGHT, 0); |
30f196ff3bec
This patch replaces vo_svga.c with an improved version that does not use
arpi
parents:
4596
diff
changeset
|
603 fillbox(WIDTH - x_pos, y_pos, x_pos, HEIGHT, 0); |
30f196ff3bec
This patch replaces vo_svga.c with an improved version that does not use
arpi
parents:
4596
diff
changeset
|
604 } |
30f196ff3bec
This patch replaces vo_svga.c with an improved version that does not use
arpi
parents:
4596
diff
changeset
|
605 vo_draw_text(WIDTH, HEIGHT, draw_alpha); |
30f196ff3bec
This patch replaces vo_svga.c with an improved version that does not use
arpi
parents:
4596
diff
changeset
|
606 } else |
30f196ff3bec
This patch replaces vo_svga.c with an improved version that does not use
arpi
parents:
4596
diff
changeset
|
607 vo_draw_text(maxw, maxh, draw_alpha); |
30f196ff3bec
This patch replaces vo_svga.c with an improved version that does not use
arpi
parents:
4596
diff
changeset
|
608 } |
30f196ff3bec
This patch replaces vo_svga.c with an improved version that does not use
arpi
parents:
4596
diff
changeset
|
609 |
30f196ff3bec
This patch replaces vo_svga.c with an improved version that does not use
arpi
parents:
4596
diff
changeset
|
610 static void flip_page(void) { |
30f196ff3bec
This patch replaces vo_svga.c with an improved version that does not use
arpi
parents:
4596
diff
changeset
|
611 if(oldmethod) { |
30f196ff3bec
This patch replaces vo_svga.c with an improved version that does not use
arpi
parents:
4596
diff
changeset
|
612 int i; |
30f196ff3bec
This patch replaces vo_svga.c with an improved version that does not use
arpi
parents:
4596
diff
changeset
|
613 uint8_t *b; |
30f196ff3bec
This patch replaces vo_svga.c with an improved version that does not use
arpi
parents:
4596
diff
changeset
|
614 b=buffer; |
30f196ff3bec
This patch replaces vo_svga.c with an improved version that does not use
arpi
parents:
4596
diff
changeset
|
615 for(i=0;i<HEIGHT;i++){ |
30f196ff3bec
This patch replaces vo_svga.c with an improved version that does not use
arpi
parents:
4596
diff
changeset
|
616 vga_drawscansegment(b,0,i,LINEWIDTH); |
30f196ff3bec
This patch replaces vo_svga.c with an improved version that does not use
arpi
parents:
4596
diff
changeset
|
617 b+=LINEWIDTH; |
30f196ff3bec
This patch replaces vo_svga.c with an improved version that does not use
arpi
parents:
4596
diff
changeset
|
618 } |
30f196ff3bec
This patch replaces vo_svga.c with an improved version that does not use
arpi
parents:
4596
diff
changeset
|
619 } else { |
30f196ff3bec
This patch replaces vo_svga.c with an improved version that does not use
arpi
parents:
4596
diff
changeset
|
620 if(maxframes) { |
30f196ff3bec
This patch replaces vo_svga.c with an improved version that does not use
arpi
parents:
4596
diff
changeset
|
621 vga_setdisplaystart(frame*HEIGHT*LINEWIDTH); |
30f196ff3bec
This patch replaces vo_svga.c with an improved version that does not use
arpi
parents:
4596
diff
changeset
|
622 frame++; |
30f196ff3bec
This patch replaces vo_svga.c with an improved version that does not use
arpi
parents:
4596
diff
changeset
|
623 if(frame>maxframes)frame=0; |
30f196ff3bec
This patch replaces vo_svga.c with an improved version that does not use
arpi
parents:
4596
diff
changeset
|
624 } |
30f196ff3bec
This patch replaces vo_svga.c with an improved version that does not use
arpi
parents:
4596
diff
changeset
|
625 } |
30f196ff3bec
This patch replaces vo_svga.c with an improved version that does not use
arpi
parents:
4596
diff
changeset
|
626 } |
30f196ff3bec
This patch replaces vo_svga.c with an improved version that does not use
arpi
parents:
4596
diff
changeset
|
627 |
30f196ff3bec
This patch replaces vo_svga.c with an improved version that does not use
arpi
parents:
4596
diff
changeset
|
628 static void check_events(void) { |
30f196ff3bec
This patch replaces vo_svga.c with an improved version that does not use
arpi
parents:
4596
diff
changeset
|
629 } |
30f196ff3bec
This patch replaces vo_svga.c with an improved version that does not use
arpi
parents:
4596
diff
changeset
|
630 |
30f196ff3bec
This patch replaces vo_svga.c with an improved version that does not use
arpi
parents:
4596
diff
changeset
|
631 static void uninit(void) { |
30f196ff3bec
This patch replaces vo_svga.c with an improved version that does not use
arpi
parents:
4596
diff
changeset
|
632 vga_modelist_t *list = modelist; |
30f196ff3bec
This patch replaces vo_svga.c with an improved version that does not use
arpi
parents:
4596
diff
changeset
|
633 |
8515
b4e5d87b878b
vidix support and better device options handler by Matan Ziv-Av <matan@svgalib.org>
alex
parents:
8148
diff
changeset
|
634 #ifdef CONFIG_VIDIX |
b4e5d87b878b
vidix support and better device options handler by Matan Ziv-Av <matan@svgalib.org>
alex
parents:
8148
diff
changeset
|
635 if(vidix_name[0])vidix_term(); |
b4e5d87b878b
vidix support and better device options handler by Matan Ziv-Av <matan@svgalib.org>
alex
parents:
8148
diff
changeset
|
636 #endif |
b4e5d87b878b
vidix support and better device options handler by Matan Ziv-Av <matan@svgalib.org>
alex
parents:
8148
diff
changeset
|
637 |
5679
30f196ff3bec
This patch replaces vo_svga.c with an improved version that does not use
arpi
parents:
4596
diff
changeset
|
638 vga_setmode(TEXT); |
30f196ff3bec
This patch replaces vo_svga.c with an improved version that does not use
arpi
parents:
4596
diff
changeset
|
639 |
30f196ff3bec
This patch replaces vo_svga.c with an improved version that does not use
arpi
parents:
4596
diff
changeset
|
640 if (bppbuf != NULL) |
30f196ff3bec
This patch replaces vo_svga.c with an improved version that does not use
arpi
parents:
4596
diff
changeset
|
641 free(bppbuf); |
8515
b4e5d87b878b
vidix support and better device options handler by Matan Ziv-Av <matan@svgalib.org>
alex
parents:
8148
diff
changeset
|
642 bppbuf=NULL; |
5679
30f196ff3bec
This patch replaces vo_svga.c with an improved version that does not use
arpi
parents:
4596
diff
changeset
|
643 if (yuvbuf != NULL) |
30f196ff3bec
This patch replaces vo_svga.c with an improved version that does not use
arpi
parents:
4596
diff
changeset
|
644 free(yuvbuf); |
8515
b4e5d87b878b
vidix support and better device options handler by Matan Ziv-Av <matan@svgalib.org>
alex
parents:
8148
diff
changeset
|
645 |
5679
30f196ff3bec
This patch replaces vo_svga.c with an improved version that does not use
arpi
parents:
4596
diff
changeset
|
646 while (modelist != NULL) { |
30f196ff3bec
This patch replaces vo_svga.c with an improved version that does not use
arpi
parents:
4596
diff
changeset
|
647 list=modelist; |
30f196ff3bec
This patch replaces vo_svga.c with an improved version that does not use
arpi
parents:
4596
diff
changeset
|
648 modelist=modelist->next; |
30f196ff3bec
This patch replaces vo_svga.c with an improved version that does not use
arpi
parents:
4596
diff
changeset
|
649 free(list); |
30f196ff3bec
This patch replaces vo_svga.c with an improved version that does not use
arpi
parents:
4596
diff
changeset
|
650 } |
30f196ff3bec
This patch replaces vo_svga.c with an improved version that does not use
arpi
parents:
4596
diff
changeset
|
651 checked = 0; |
30f196ff3bec
This patch replaces vo_svga.c with an improved version that does not use
arpi
parents:
4596
diff
changeset
|
652 } |
30f196ff3bec
This patch replaces vo_svga.c with an improved version that does not use
arpi
parents:
4596
diff
changeset
|
653 |
30f196ff3bec
This patch replaces vo_svga.c with an improved version that does not use
arpi
parents:
4596
diff
changeset
|
654 |
30f196ff3bec
This patch replaces vo_svga.c with an improved version that does not use
arpi
parents:
4596
diff
changeset
|
655 /* --------------------------------------------------------------------- */ |
30f196ff3bec
This patch replaces vo_svga.c with an improved version that does not use
arpi
parents:
4596
diff
changeset
|
656 |
30f196ff3bec
This patch replaces vo_svga.c with an improved version that does not use
arpi
parents:
4596
diff
changeset
|
657 static uint32_t add_mode(uint16_t mode, vga_modeinfo minfo) { |
30f196ff3bec
This patch replaces vo_svga.c with an improved version that does not use
arpi
parents:
4596
diff
changeset
|
658 vga_modelist_t *list; |
30f196ff3bec
This patch replaces vo_svga.c with an improved version that does not use
arpi
parents:
4596
diff
changeset
|
659 |
8515
b4e5d87b878b
vidix support and better device options handler by Matan Ziv-Av <matan@svgalib.org>
alex
parents:
8148
diff
changeset
|
660 if(squarepix && (minfo.height*4 != minfo.width*3)) return 0; |
b4e5d87b878b
vidix support and better device options handler by Matan Ziv-Av <matan@svgalib.org>
alex
parents:
8148
diff
changeset
|
661 |
5679
30f196ff3bec
This patch replaces vo_svga.c with an improved version that does not use
arpi
parents:
4596
diff
changeset
|
662 if (modelist == NULL) { |
30f196ff3bec
This patch replaces vo_svga.c with an improved version that does not use
arpi
parents:
4596
diff
changeset
|
663 modelist = (vga_modelist_t *) malloc(sizeof(vga_modelist_t)); |
30f196ff3bec
This patch replaces vo_svga.c with an improved version that does not use
arpi
parents:
4596
diff
changeset
|
664 if (modelist == NULL) { |
30f196ff3bec
This patch replaces vo_svga.c with an improved version that does not use
arpi
parents:
4596
diff
changeset
|
665 printf("vo_svga: add_mode() failed. Not enough memory for modelist."); |
30f196ff3bec
This patch replaces vo_svga.c with an improved version that does not use
arpi
parents:
4596
diff
changeset
|
666 return(1); // error |
30f196ff3bec
This patch replaces vo_svga.c with an improved version that does not use
arpi
parents:
4596
diff
changeset
|
667 } |
30f196ff3bec
This patch replaces vo_svga.c with an improved version that does not use
arpi
parents:
4596
diff
changeset
|
668 modelist->modenum = mode; |
30f196ff3bec
This patch replaces vo_svga.c with an improved version that does not use
arpi
parents:
4596
diff
changeset
|
669 modelist->modeinfo = minfo; |
30f196ff3bec
This patch replaces vo_svga.c with an improved version that does not use
arpi
parents:
4596
diff
changeset
|
670 modelist->next = NULL; |
30f196ff3bec
This patch replaces vo_svga.c with an improved version that does not use
arpi
parents:
4596
diff
changeset
|
671 } else { |
30f196ff3bec
This patch replaces vo_svga.c with an improved version that does not use
arpi
parents:
4596
diff
changeset
|
672 list = modelist; |
30f196ff3bec
This patch replaces vo_svga.c with an improved version that does not use
arpi
parents:
4596
diff
changeset
|
673 while (list->next != NULL) |
30f196ff3bec
This patch replaces vo_svga.c with an improved version that does not use
arpi
parents:
4596
diff
changeset
|
674 list = list->next; |
30f196ff3bec
This patch replaces vo_svga.c with an improved version that does not use
arpi
parents:
4596
diff
changeset
|
675 list->next = (vga_modelist_t *) malloc(sizeof(vga_modelist_t)); |
30f196ff3bec
This patch replaces vo_svga.c with an improved version that does not use
arpi
parents:
4596
diff
changeset
|
676 if (list->next == NULL) { |
30f196ff3bec
This patch replaces vo_svga.c with an improved version that does not use
arpi
parents:
4596
diff
changeset
|
677 printf("vo_svga: add_mode() failed. Not enough memory for modelist."); |
30f196ff3bec
This patch replaces vo_svga.c with an improved version that does not use
arpi
parents:
4596
diff
changeset
|
678 return(1); // error |
30f196ff3bec
This patch replaces vo_svga.c with an improved version that does not use
arpi
parents:
4596
diff
changeset
|
679 } |
30f196ff3bec
This patch replaces vo_svga.c with an improved version that does not use
arpi
parents:
4596
diff
changeset
|
680 list = list->next; |
30f196ff3bec
This patch replaces vo_svga.c with an improved version that does not use
arpi
parents:
4596
diff
changeset
|
681 list->modenum = mode; |
30f196ff3bec
This patch replaces vo_svga.c with an improved version that does not use
arpi
parents:
4596
diff
changeset
|
682 list->modeinfo = minfo; |
30f196ff3bec
This patch replaces vo_svga.c with an improved version that does not use
arpi
parents:
4596
diff
changeset
|
683 list->next = NULL; |
30f196ff3bec
This patch replaces vo_svga.c with an improved version that does not use
arpi
parents:
4596
diff
changeset
|
684 } |
30f196ff3bec
This patch replaces vo_svga.c with an improved version that does not use
arpi
parents:
4596
diff
changeset
|
685 return (0); |
30f196ff3bec
This patch replaces vo_svga.c with an improved version that does not use
arpi
parents:
4596
diff
changeset
|
686 } |
30f196ff3bec
This patch replaces vo_svga.c with an improved version that does not use
arpi
parents:
4596
diff
changeset
|
687 |
30f196ff3bec
This patch replaces vo_svga.c with an improved version that does not use
arpi
parents:
4596
diff
changeset
|
688 static int checksupportedmodes() { |
30f196ff3bec
This patch replaces vo_svga.c with an improved version that does not use
arpi
parents:
4596
diff
changeset
|
689 uint16_t i, max; |
30f196ff3bec
This patch replaces vo_svga.c with an improved version that does not use
arpi
parents:
4596
diff
changeset
|
690 vga_modeinfo *minfo; |
30f196ff3bec
This patch replaces vo_svga.c with an improved version that does not use
arpi
parents:
4596
diff
changeset
|
691 |
30f196ff3bec
This patch replaces vo_svga.c with an improved version that does not use
arpi
parents:
4596
diff
changeset
|
692 checked = 1; |
6052 | 693 getch2_disable(); |
5679
30f196ff3bec
This patch replaces vo_svga.c with an improved version that does not use
arpi
parents:
4596
diff
changeset
|
694 vga_init(); |
30f196ff3bec
This patch replaces vo_svga.c with an improved version that does not use
arpi
parents:
4596
diff
changeset
|
695 vga_disabledriverreport(); |
30f196ff3bec
This patch replaces vo_svga.c with an improved version that does not use
arpi
parents:
4596
diff
changeset
|
696 max = vga_lastmodenumber(); |
30f196ff3bec
This patch replaces vo_svga.c with an improved version that does not use
arpi
parents:
4596
diff
changeset
|
697 if (verbose >= 2) |
30f196ff3bec
This patch replaces vo_svga.c with an improved version that does not use
arpi
parents:
4596
diff
changeset
|
698 printf("vo_svga: Max mode : %i\n",max); |
30f196ff3bec
This patch replaces vo_svga.c with an improved version that does not use
arpi
parents:
4596
diff
changeset
|
699 for (i = 1; i <= max; i++) |
30f196ff3bec
This patch replaces vo_svga.c with an improved version that does not use
arpi
parents:
4596
diff
changeset
|
700 if (vga_hasmode(i) > 0) { |
30f196ff3bec
This patch replaces vo_svga.c with an improved version that does not use
arpi
parents:
4596
diff
changeset
|
701 minfo = vga_getmodeinfo(i); |
30f196ff3bec
This patch replaces vo_svga.c with an improved version that does not use
arpi
parents:
4596
diff
changeset
|
702 switch (minfo->colors) { |
6453 | 703 case 2 : bpp_avail |= BPP_1 ; break; |
704 case 16 : bpp_avail |= BPP_4 ; break; | |
6451
ed906af317da
8bpp support (no dithering yet, use -vop noise for now)
michael
parents:
6052
diff
changeset
|
705 case 256 : bpp_avail |= BPP_8 ; break; |
5679
30f196ff3bec
This patch replaces vo_svga.c with an improved version that does not use
arpi
parents:
4596
diff
changeset
|
706 case 32768: bpp_avail |= BPP_15; break; |
30f196ff3bec
This patch replaces vo_svga.c with an improved version that does not use
arpi
parents:
4596
diff
changeset
|
707 case 65536: bpp_avail |= BPP_16; break; |
30f196ff3bec
This patch replaces vo_svga.c with an improved version that does not use
arpi
parents:
4596
diff
changeset
|
708 } |
30f196ff3bec
This patch replaces vo_svga.c with an improved version that does not use
arpi
parents:
4596
diff
changeset
|
709 switch (minfo->bytesperpixel) { |
30f196ff3bec
This patch replaces vo_svga.c with an improved version that does not use
arpi
parents:
4596
diff
changeset
|
710 case 3: bpp_avail |= BPP_24; break; |
30f196ff3bec
This patch replaces vo_svga.c with an improved version that does not use
arpi
parents:
4596
diff
changeset
|
711 case 4: bpp_avail |= BPP_32; break; |
30f196ff3bec
This patch replaces vo_svga.c with an improved version that does not use
arpi
parents:
4596
diff
changeset
|
712 } |
30f196ff3bec
This patch replaces vo_svga.c with an improved version that does not use
arpi
parents:
4596
diff
changeset
|
713 if (verbose >= 2) |
30f196ff3bec
This patch replaces vo_svga.c with an improved version that does not use
arpi
parents:
4596
diff
changeset
|
714 printf("vo_svga: Mode found: %s\n",vga_getmodename(i)); |
30f196ff3bec
This patch replaces vo_svga.c with an improved version that does not use
arpi
parents:
4596
diff
changeset
|
715 if (add_mode(i, *minfo)) |
30f196ff3bec
This patch replaces vo_svga.c with an improved version that does not use
arpi
parents:
4596
diff
changeset
|
716 return(1); |
30f196ff3bec
This patch replaces vo_svga.c with an improved version that does not use
arpi
parents:
4596
diff
changeset
|
717 } |
30f196ff3bec
This patch replaces vo_svga.c with an improved version that does not use
arpi
parents:
4596
diff
changeset
|
718 return(0); |
30f196ff3bec
This patch replaces vo_svga.c with an improved version that does not use
arpi
parents:
4596
diff
changeset
|
719 } |
30f196ff3bec
This patch replaces vo_svga.c with an improved version that does not use
arpi
parents:
4596
diff
changeset
|
720 |
30f196ff3bec
This patch replaces vo_svga.c with an improved version that does not use
arpi
parents:
4596
diff
changeset
|
721 |
285 | 722 static uint32_t query_format(uint32_t format) { |
485 | 723 uint32_t res = 0; |
407 | 724 |
483 | 725 if (!checked) { |
726 if (checksupportedmodes()) // Looking for available video modes | |
727 return(0); | |
728 } | |
485 | 729 |
730 // if (vo_dbpp) => There is NO conversion!!! | |
731 if (vo_dbpp) { | |
712 | 732 if (format == IMGFMT_YV12) return (1); |
485 | 733 switch (vo_dbpp) { |
488 | 734 case 32: if ((format == IMGFMT_RGB32) || (format == IMGFMT_BGR32)) |
485 | 735 return ((bpp_avail & BPP_32) ? 1 : 0); |
736 break; | |
488 | 737 case 24: if ((format == IMGFMT_RGB24) || (format == IMGFMT_BGR24)) |
485 | 738 return ((bpp_avail & BPP_24) ? 1 : 0); |
739 break; | |
488 | 740 case 16: if ((format == IMGFMT_RGB16) || (format == IMGFMT_BGR16)) |
485 | 741 return ((bpp_avail & BPP_16) ? 1 : 0); |
742 break; | |
488 | 743 case 15: if ((format == IMGFMT_RGB15) || (format == IMGFMT_BGR15)) |
485 | 744 return ((bpp_avail & BPP_15) ? 1 : 0); |
745 break; | |
6451
ed906af317da
8bpp support (no dithering yet, use -vop noise for now)
michael
parents:
6052
diff
changeset
|
746 case 8 : if ((format == IMGFMT_RGB8 ) || (format == IMGFMT_BGR8)) |
ed906af317da
8bpp support (no dithering yet, use -vop noise for now)
michael
parents:
6052
diff
changeset
|
747 return ((bpp_avail & BPP_8 ) ? 1 : 0); |
ed906af317da
8bpp support (no dithering yet, use -vop noise for now)
michael
parents:
6052
diff
changeset
|
748 break; |
6579 | 749 case 4 : if ((format == IMGFMT_RGB4 ) || (format == IMGFMT_BGR4)) |
750 return ((bpp_avail & BPP_4 ) ? 1 : 0); | |
751 break; | |
752 case 1 : if ((format == IMGFMT_RGB1 ) || (format == IMGFMT_BGR1)) | |
753 return ((bpp_avail & BPP_1 ) ? 1 : 0); | |
754 break; | |
407 | 755 } |
488 | 756 } else { |
485 | 757 switch (format) { |
6451
ed906af317da
8bpp support (no dithering yet, use -vop noise for now)
michael
parents:
6052
diff
changeset
|
758 case IMGFMT_RGB32: |
488 | 759 case IMGFMT_BGR32: return ((bpp_avail & BPP_32) ? 1 : 0); break; |
6451
ed906af317da
8bpp support (no dithering yet, use -vop noise for now)
michael
parents:
6052
diff
changeset
|
760 case IMGFMT_RGB24: |
488 | 761 case IMGFMT_BGR24: { |
485 | 762 res = (bpp_avail & BPP_24) ? 1 : 0; |
763 if (!res) | |
764 res = (bpp_avail & BPP_32) ? 1 : 0; | |
765 return (res); | |
766 } break; | |
6451
ed906af317da
8bpp support (no dithering yet, use -vop noise for now)
michael
parents:
6052
diff
changeset
|
767 case IMGFMT_RGB16: |
488 | 768 case IMGFMT_BGR16: return ((bpp_avail & BPP_16) ? 1 : 0); break; |
6451
ed906af317da
8bpp support (no dithering yet, use -vop noise for now)
michael
parents:
6052
diff
changeset
|
769 case IMGFMT_RGB15: |
488 | 770 case IMGFMT_BGR15: { |
485 | 771 res = (bpp_avail & BPP_15) ? 1 : 0; |
772 if (!res) | |
773 res = (bpp_avail & BPP_16) ? 1 : 0; | |
774 return (res); | |
775 } break; | |
776 case IMGFMT_YV12: return (1); break; | |
285 | 777 } |
488 | 778 } |
285 | 779 return (0); |
780 } | |
781 | |
5679
30f196ff3bec
This patch replaces vo_svga.c with an improved version that does not use
arpi
parents:
4596
diff
changeset
|
782 static void putbox(int x, int y, int w, int h, uint8_t *buf, int prog) { |
30f196ff3bec
This patch replaces vo_svga.c with an improved version that does not use
arpi
parents:
4596
diff
changeset
|
783 int base, add, wid; |
6456 | 784 if(bpp==1) |
785 wid=(w+7)/8; | |
786 else | |
787 wid=w*BYTESPERPIXEL; | |
788 | |
5679
30f196ff3bec
This patch replaces vo_svga.c with an improved version that does not use
arpi
parents:
4596
diff
changeset
|
789 if(oldmethod) { |
30f196ff3bec
This patch replaces vo_svga.c with an improved version that does not use
arpi
parents:
4596
diff
changeset
|
790 add=wid*prog; |
30f196ff3bec
This patch replaces vo_svga.c with an improved version that does not use
arpi
parents:
4596
diff
changeset
|
791 while( (h--) > 0 ) { |
6456 | 792 if(bpp==1) |
793 memcpy(buffer+(x+7)/8+(y++)*LINEWIDTH, buf, wid); | |
794 else | |
795 memcpy(buffer+x*BYTESPERPIXEL+(y++)*LINEWIDTH, buf, wid); | |
5679
30f196ff3bec
This patch replaces vo_svga.c with an improved version that does not use
arpi
parents:
4596
diff
changeset
|
796 buf+=add; |
6451
ed906af317da
8bpp support (no dithering yet, use -vop noise for now)
michael
parents:
6052
diff
changeset
|
797 } |
5679
30f196ff3bec
This patch replaces vo_svga.c with an improved version that does not use
arpi
parents:
4596
diff
changeset
|
798 } else { |
30f196ff3bec
This patch replaces vo_svga.c with an improved version that does not use
arpi
parents:
4596
diff
changeset
|
799 add=wid*prog; |
30f196ff3bec
This patch replaces vo_svga.c with an improved version that does not use
arpi
parents:
4596
diff
changeset
|
800 base=frame*HEIGHT; |
30f196ff3bec
This patch replaces vo_svga.c with an improved version that does not use
arpi
parents:
4596
diff
changeset
|
801 while( (h--) > 0 ) { |
30f196ff3bec
This patch replaces vo_svga.c with an improved version that does not use
arpi
parents:
4596
diff
changeset
|
802 vga_drawscansegment(buf, x, (y++)+base, wid); |
30f196ff3bec
This patch replaces vo_svga.c with an improved version that does not use
arpi
parents:
4596
diff
changeset
|
803 buf+=add; |
30f196ff3bec
This patch replaces vo_svga.c with an improved version that does not use
arpi
parents:
4596
diff
changeset
|
804 } |
30f196ff3bec
This patch replaces vo_svga.c with an improved version that does not use
arpi
parents:
4596
diff
changeset
|
805 } |
30f196ff3bec
This patch replaces vo_svga.c with an improved version that does not use
arpi
parents:
4596
diff
changeset
|
806 } |
30f196ff3bec
This patch replaces vo_svga.c with an improved version that does not use
arpi
parents:
4596
diff
changeset
|
807 |
30f196ff3bec
This patch replaces vo_svga.c with an improved version that does not use
arpi
parents:
4596
diff
changeset
|
808 static void fillbox(int x, int y, int w, int h, uint32_t c) { |
30f196ff3bec
This patch replaces vo_svga.c with an improved version that does not use
arpi
parents:
4596
diff
changeset
|
809 putbox(x,y,w,h,buf0,0); |
285 | 810 } |
811 | |
812 static void draw_alpha(int x0, int y0, int w, int h, unsigned char *src, | |
813 unsigned char *srca, int stride) { | |
7558 | 814 char* base; |
5679
30f196ff3bec
This patch replaces vo_svga.c with an improved version that does not use
arpi
parents:
4596
diff
changeset
|
815 |
30f196ff3bec
This patch replaces vo_svga.c with an improved version that does not use
arpi
parents:
4596
diff
changeset
|
816 if(oldmethod) { |
30f196ff3bec
This patch replaces vo_svga.c with an improved version that does not use
arpi
parents:
4596
diff
changeset
|
817 base=buffer; |
30f196ff3bec
This patch replaces vo_svga.c with an improved version that does not use
arpi
parents:
4596
diff
changeset
|
818 } else |
30f196ff3bec
This patch replaces vo_svga.c with an improved version that does not use
arpi
parents:
4596
diff
changeset
|
819 base=((frame*HEIGHT+y_pos)*WIDTH+x_pos)*BYTESPERPIXEL + GRAPH_MEM ; |
30f196ff3bec
This patch replaces vo_svga.c with an improved version that does not use
arpi
parents:
4596
diff
changeset
|
820 |
327 | 821 switch (bpp) { |
822 case 32: | |
5679
30f196ff3bec
This patch replaces vo_svga.c with an improved version that does not use
arpi
parents:
4596
diff
changeset
|
823 vo_draw_alpha_rgb32(w, h, src, srca, stride, base+4*(y0*WIDTH+x0), 4*WIDTH); |
327 | 824 break; |
825 case 24: | |
5679
30f196ff3bec
This patch replaces vo_svga.c with an improved version that does not use
arpi
parents:
4596
diff
changeset
|
826 vo_draw_alpha_rgb24(w, h, src, srca, stride, base+3*(y0*WIDTH+x0), 3*WIDTH); |
327 | 827 break; |
828 case 16: | |
5679
30f196ff3bec
This patch replaces vo_svga.c with an improved version that does not use
arpi
parents:
4596
diff
changeset
|
829 vo_draw_alpha_rgb16(w, h, src, srca, stride, base+2*(y0*WIDTH+x0), 2*WIDTH); |
327 | 830 break; |
831 case 15: | |
5679
30f196ff3bec
This patch replaces vo_svga.c with an improved version that does not use
arpi
parents:
4596
diff
changeset
|
832 vo_draw_alpha_rgb15(w, h, src, srca, stride, base+2*(y0*WIDTH+x0), 2*WIDTH); |
327 | 833 break; |
834 } | |
285 | 835 } |
4352 | 836 |
5679
30f196ff3bec
This patch replaces vo_svga.c with an improved version that does not use
arpi
parents:
4596
diff
changeset
|
837 static uint32_t get_image(mp_image_t *mpi) |
4352 | 838 { |
5679
30f196ff3bec
This patch replaces vo_svga.c with an improved version that does not use
arpi
parents:
4596
diff
changeset
|
839 if (/* zoomFlag || */ |
30f196ff3bec
This patch replaces vo_svga.c with an improved version that does not use
arpi
parents:
4596
diff
changeset
|
840 !IMGFMT_IS_BGR(mpi->imgfmt) || |
30f196ff3bec
This patch replaces vo_svga.c with an improved version that does not use
arpi
parents:
4596
diff
changeset
|
841 ((mpi->type != MP_IMGTYPE_STATIC) && (mpi->type != MP_IMGTYPE_TEMP)) || |
30f196ff3bec
This patch replaces vo_svga.c with an improved version that does not use
arpi
parents:
4596
diff
changeset
|
842 (mpi->flags & MP_IMGFLAG_PLANAR) || |
30f196ff3bec
This patch replaces vo_svga.c with an improved version that does not use
arpi
parents:
4596
diff
changeset
|
843 (mpi->flags & MP_IMGFLAG_YUV) /* |
30f196ff3bec
This patch replaces vo_svga.c with an improved version that does not use
arpi
parents:
4596
diff
changeset
|
844 (mpi->width != image_width) || |
30f196ff3bec
This patch replaces vo_svga.c with an improved version that does not use
arpi
parents:
4596
diff
changeset
|
845 (mpi->height != image_height) */ |
30f196ff3bec
This patch replaces vo_svga.c with an improved version that does not use
arpi
parents:
4596
diff
changeset
|
846 ) |
30f196ff3bec
This patch replaces vo_svga.c with an improved version that does not use
arpi
parents:
4596
diff
changeset
|
847 return(VO_FALSE); |
30f196ff3bec
This patch replaces vo_svga.c with an improved version that does not use
arpi
parents:
4596
diff
changeset
|
848 |
30f196ff3bec
This patch replaces vo_svga.c with an improved version that does not use
arpi
parents:
4596
diff
changeset
|
849 /* |
30f196ff3bec
This patch replaces vo_svga.c with an improved version that does not use
arpi
parents:
4596
diff
changeset
|
850 if (Flip_Flag) |
30f196ff3bec
This patch replaces vo_svga.c with an improved version that does not use
arpi
parents:
4596
diff
changeset
|
851 { |
30f196ff3bec
This patch replaces vo_svga.c with an improved version that does not use
arpi
parents:
4596
diff
changeset
|
852 mpi->stride[0] = -image_width*((bpp+7)/8); |
30f196ff3bec
This patch replaces vo_svga.c with an improved version that does not use
arpi
parents:
4596
diff
changeset
|
853 mpi->planes[0] = ImageData - mpi->stride[0]*(image_height-1); |
30f196ff3bec
This patch replaces vo_svga.c with an improved version that does not use
arpi
parents:
4596
diff
changeset
|
854 } |
30f196ff3bec
This patch replaces vo_svga.c with an improved version that does not use
arpi
parents:
4596
diff
changeset
|
855 else |
30f196ff3bec
This patch replaces vo_svga.c with an improved version that does not use
arpi
parents:
4596
diff
changeset
|
856 */ |
30f196ff3bec
This patch replaces vo_svga.c with an improved version that does not use
arpi
parents:
4596
diff
changeset
|
857 { |
30f196ff3bec
This patch replaces vo_svga.c with an improved version that does not use
arpi
parents:
4596
diff
changeset
|
858 mpi->stride[0] = LINEWIDTH; |
30f196ff3bec
This patch replaces vo_svga.c with an improved version that does not use
arpi
parents:
4596
diff
changeset
|
859 if(oldmethod) { |
30f196ff3bec
This patch replaces vo_svga.c with an improved version that does not use
arpi
parents:
4596
diff
changeset
|
860 mpi->planes[0] = buffer; |
30f196ff3bec
This patch replaces vo_svga.c with an improved version that does not use
arpi
parents:
4596
diff
changeset
|
861 } else |
30f196ff3bec
This patch replaces vo_svga.c with an improved version that does not use
arpi
parents:
4596
diff
changeset
|
862 mpi->planes[0] = GRAPH_MEM; |
30f196ff3bec
This patch replaces vo_svga.c with an improved version that does not use
arpi
parents:
4596
diff
changeset
|
863 } |
30f196ff3bec
This patch replaces vo_svga.c with an improved version that does not use
arpi
parents:
4596
diff
changeset
|
864 mpi->flags |= MP_IMGFLAG_DIRECT; |
30f196ff3bec
This patch replaces vo_svga.c with an improved version that does not use
arpi
parents:
4596
diff
changeset
|
865 |
30f196ff3bec
This patch replaces vo_svga.c with an improved version that does not use
arpi
parents:
4596
diff
changeset
|
866 return(VO_TRUE); |
4352 | 867 } |
868 |