Mercurial > mplayer.hg
annotate libvo/vo_sdl.c @ 33259:04dc3e55cd90
Increase the maximum value of the DVB timeout to 240 seconds.
Some devices may need more time for the initial tune (e.g. firmware loading).
Let the user specify higher timeout value if there is need to.
The default remains 30 seconds.
author | iive |
---|---|
date | Sun, 01 May 2011 18:07:59 +0000 |
parents | fbe5c829c69b |
children | ddb45e9443ec |
rev | line source |
---|---|
1 | 1 /* |
351 | 2 * vo_sdl.c |
3 * | |
579 | 4 * (was video_out_sdl.c from OMS project/mpeg2dec -> http://linuxvideo.org) |
1 | 5 * |
28307
2391228b7ff0
cosmetics: Remove pointless period after copyright statement non-sentences.
diego
parents:
28021
diff
changeset
|
6 * Copyright (C) Ryan C. Gordon <icculus@lokigames.com> - April 22, 2000 |
1 | 7 * |
635
b9735f811d7d
15,16,24,32Bit rgb/bgr support added, aalib fixed, performance optimizations, code cleanup and so much more...
atmosfear
parents:
616
diff
changeset
|
8 * Copyright (C) Felix Buenemann <atmosfear@users.sourceforge.net> - 2001 |
b9735f811d7d
15,16,24,32Bit rgb/bgr support added, aalib fixed, performance optimizations, code cleanup and so much more...
atmosfear
parents:
616
diff
changeset
|
9 * |
b9735f811d7d
15,16,24,32Bit rgb/bgr support added, aalib fixed, performance optimizations, code cleanup and so much more...
atmosfear
parents:
616
diff
changeset
|
10 * (for extensive code enhancements) |
b9735f811d7d
15,16,24,32Bit rgb/bgr support added, aalib fixed, performance optimizations, code cleanup and so much more...
atmosfear
parents:
616
diff
changeset
|
11 * |
579 | 12 * Current maintainer for MPlayer project (report bugs to that address): |
13 * Felix Buenemann <atmosfear@users.sourceforge.net> | |
14 * | |
15 * This file is a video out driver using the SDL library (http://libsdl.org/), | |
24871 | 16 * to be used with MPlayer, further info from http://www.mplayerhq.hu |
579 | 17 * |
18 * -- old disclaimer -- | |
19 * | |
1 | 20 * A mpeg2dec display driver that does output through the |
21 * Simple DirectMedia Layer (SDL) library. This effectively gives us all | |
22 * sorts of output options: X11, SVGAlib, fbcon, AAlib, GGI. Win32, MacOS | |
23 * and BeOS support, too. Yay. SDL info, source, and binaries can be found | |
24 * at http://slouken.devolution.com/SDL/ | |
25 * | |
29263
0f1b5b68af32
whitespace cosmetics: Remove all trailing whitespace.
diego
parents:
28922
diff
changeset
|
26 * -- end old disclaimer -- |
26739
2a34d9fa52ab
Use standard license headers with standard formatting.
diego
parents:
26329
diff
changeset
|
27 * |
2a34d9fa52ab
Use standard license headers with standard formatting.
diego
parents:
26329
diff
changeset
|
28 * This file is part of MPlayer. |
2a34d9fa52ab
Use standard license headers with standard formatting.
diego
parents:
26329
diff
changeset
|
29 * |
2a34d9fa52ab
Use standard license headers with standard formatting.
diego
parents:
26329
diff
changeset
|
30 * MPlayer is free software; you can redistribute it and/or modify |
2a34d9fa52ab
Use standard license headers with standard formatting.
diego
parents:
26329
diff
changeset
|
31 * it under the terms of the GNU General Public License as published by |
2a34d9fa52ab
Use standard license headers with standard formatting.
diego
parents:
26329
diff
changeset
|
32 * the Free Software Foundation; either version 2 of the License, or |
2a34d9fa52ab
Use standard license headers with standard formatting.
diego
parents:
26329
diff
changeset
|
33 * (at your option) any later version. |
579 | 34 * |
26739
2a34d9fa52ab
Use standard license headers with standard formatting.
diego
parents:
26329
diff
changeset
|
35 * MPlayer is distributed in the hope that it will be useful, |
2a34d9fa52ab
Use standard license headers with standard formatting.
diego
parents:
26329
diff
changeset
|
36 * but WITHOUT ANY WARRANTY; without even the implied warranty of |
2a34d9fa52ab
Use standard license headers with standard formatting.
diego
parents:
26329
diff
changeset
|
37 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the |
2a34d9fa52ab
Use standard license headers with standard formatting.
diego
parents:
26329
diff
changeset
|
38 * GNU General Public License for more details. |
2a34d9fa52ab
Use standard license headers with standard formatting.
diego
parents:
26329
diff
changeset
|
39 * |
2a34d9fa52ab
Use standard license headers with standard formatting.
diego
parents:
26329
diff
changeset
|
40 * You should have received a copy of the GNU General Public License along |
2a34d9fa52ab
Use standard license headers with standard formatting.
diego
parents:
26329
diff
changeset
|
41 * with MPlayer; if not, write to the Free Software Foundation, Inc., |
2a34d9fa52ab
Use standard license headers with standard formatting.
diego
parents:
26329
diff
changeset
|
42 * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. |
1 | 43 */ |
44 | |
542
7eaec864e3d2
doesn't include fastmemcpy.h when SDL_NOXV is defined.
atmosfear
parents:
475
diff
changeset
|
45 /* define to force software-surface (video surface stored in system memory)*/ |
7eaec864e3d2
doesn't include fastmemcpy.h when SDL_NOXV is defined.
atmosfear
parents:
475
diff
changeset
|
46 #undef SDL_NOHWSURFACE |
7eaec864e3d2
doesn't include fastmemcpy.h when SDL_NOXV is defined.
atmosfear
parents:
475
diff
changeset
|
47 |
1197 | 48 /* define to enable surface locks, this might be needed on SMP machines */ |
49 #undef SDL_ENABLE_LOCKS | |
50 | |
784
dee122f9cdb9
Added full aspect awareness, rewrote fullscreen handling.
atmosfear
parents:
772
diff
changeset
|
51 /* MONITOR_ASPECT MUST BE FLOAT */ |
dee122f9cdb9
Added full aspect awareness, rewrote fullscreen handling.
atmosfear
parents:
772
diff
changeset
|
52 #define MONITOR_ASPECT 4.0/3.0 |
dee122f9cdb9
Added full aspect awareness, rewrote fullscreen handling.
atmosfear
parents:
772
diff
changeset
|
53 |
1 | 54 #include <stdio.h> |
55 #include <stdlib.h> | |
56 #include <string.h> | |
57 #include <inttypes.h> | |
58 | |
26203 | 59 #include "config.h" |
17932 | 60 #include "mp_msg.h" |
18234
a107276371a8
Part 5 and final of otvos attila's oattila AT chello-hu mp_msg changes, with lots of corrections
reynaldo
parents:
17932
diff
changeset
|
61 #include "mp_msg.h" |
a107276371a8
Part 5 and final of otvos attila's oattila AT chello-hu mp_msg changes, with lots of corrections
reynaldo
parents:
17932
diff
changeset
|
62 #include "help_mp.h" |
1 | 63 #include "video_out.h" |
64 #include "video_out_internal.h" | |
65 | |
354 | 66 #include "fastmemcpy.h" |
32467 | 67 #include "sub/sub.h" |
2071
7f27b212e07b
Add debug printfs to aspect(), add aspect() usage to vo_sdl.
atmos4
parents:
1710
diff
changeset
|
68 #include "aspect.h" |
5894
af9efcb80244
Use new style query_formats flags. Fixes bug with flip.
ksorim
parents:
5834
diff
changeset
|
69 #include "libmpcodecs/vfcap.h" |
350 | 70 |
27377
d58d06eafe83
Change a bunch of X11-specific preprocessor directives.
diego
parents:
26739
diff
changeset
|
71 #ifdef CONFIG_X11 |
772
e70a52f17f92
Added flipped video support and activate/deactivate screensaver under X.
atmosfear
parents:
770
diff
changeset
|
72 #include <X11/Xlib.h> |
e70a52f17f92
Added flipped video support and activate/deactivate screensaver under X.
atmosfear
parents:
770
diff
changeset
|
73 #include "x11_common.h" |
e70a52f17f92
Added flipped video support and activate/deactivate screensaver under X.
atmosfear
parents:
770
diff
changeset
|
74 #endif |
e70a52f17f92
Added flipped video support and activate/deactivate screensaver under X.
atmosfear
parents:
770
diff
changeset
|
75 |
14857
29a09f111b41
Remove -noxv and -forcexv command line options and replace them by
ivo
parents:
14577
diff
changeset
|
76 #include "subopt-helper.h" |
4590
3a76a4dcde2c
Applied patch mouse whell patch from Wojtek Kaniewski <wojtekka@bydg.pdi.net>
albeu
parents:
4530
diff
changeset
|
77 |
29263
0f1b5b68af32
whitespace cosmetics: Remove all trailing whitespace.
diego
parents:
28922
diff
changeset
|
78 static const vo_info_t info = |
1 | 79 { |
635
b9735f811d7d
15,16,24,32Bit rgb/bgr support added, aalib fixed, performance optimizations, code cleanup and so much more...
atmosfear
parents:
616
diff
changeset
|
80 "SDL YUV/RGB/BGR renderer (SDL v1.1.7+ only!)", |
1 | 81 "sdl", |
635
b9735f811d7d
15,16,24,32Bit rgb/bgr support added, aalib fixed, performance optimizations, code cleanup and so much more...
atmosfear
parents:
616
diff
changeset
|
82 "Ryan C. Gordon <icculus@lokigames.com>, Felix Buenemann <atmosfear@users.sourceforge.net>", |
1 | 83 "" |
84 }; | |
85 | |
25220
c9e9ac2008c2
Mark the vo_functions_t definitions as const where possible.
reimar
parents:
25216
diff
changeset
|
86 const LIBVO_EXTERN(sdl) |
8148
5b39e79af5fe
removed get_info, using the same sheme as in libmpcodecs instead
alex
parents:
8123
diff
changeset
|
87 |
31032
362425fe3de8
Add sdl_common file and use it to share the input handling between -vo gl
reimar
parents:
31025
diff
changeset
|
88 #include "sdl_common.h" |
3609
c9876f5f4ac5
better fullscreen-mode selection, patch by dunno :)
atmos4
parents:
2249
diff
changeset
|
89 //#include <SDL/SDL_syswm.h> |
1038
b36fb1ae4b53
applied solaris8/netbsd/other fixes patch by J¸«ärgen Keil <jk@tools.de>
arpi_esp
parents:
973
diff
changeset
|
90 |
b36fb1ae4b53
applied solaris8/netbsd/other fixes patch by J¸«ärgen Keil <jk@tools.de>
arpi_esp
parents:
973
diff
changeset
|
91 |
4807
156482788caf
osd outside movie support for vo_sdl, patch by Fredrik Kuivinen
atmos4
parents:
4790
diff
changeset
|
92 #ifdef SDL_ENABLE_LOCKS |
156482788caf
osd outside movie support for vo_sdl, patch by Fredrik Kuivinen
atmos4
parents:
4790
diff
changeset
|
93 #define SDL_OVR_LOCK(x) if (SDL_LockYUVOverlay (priv->overlay)) { \ |
28021
1bbc09f93acb
Remove a lot of completely pointless mp_msg_test calls.
reimar
parents:
27706
diff
changeset
|
94 mp_msg(MSGT_VO,MSGL_V, "SDL: Couldn't lock YUV overlay\n"); \ |
4807
156482788caf
osd outside movie support for vo_sdl, patch by Fredrik Kuivinen
atmos4
parents:
4790
diff
changeset
|
95 return x; \ |
156482788caf
osd outside movie support for vo_sdl, patch by Fredrik Kuivinen
atmos4
parents:
4790
diff
changeset
|
96 } |
156482788caf
osd outside movie support for vo_sdl, patch by Fredrik Kuivinen
atmos4
parents:
4790
diff
changeset
|
97 #define SDL_OVR_UNLOCK SDL_UnlockYUVOverlay (priv->overlay); |
156482788caf
osd outside movie support for vo_sdl, patch by Fredrik Kuivinen
atmos4
parents:
4790
diff
changeset
|
98 |
156482788caf
osd outside movie support for vo_sdl, patch by Fredrik Kuivinen
atmos4
parents:
4790
diff
changeset
|
99 #define SDL_SRF_LOCK(srf, x) if(SDL_MUSTLOCK(srf)) { \ |
156482788caf
osd outside movie support for vo_sdl, patch by Fredrik Kuivinen
atmos4
parents:
4790
diff
changeset
|
100 if(SDL_LockSurface (srf)) { \ |
28021
1bbc09f93acb
Remove a lot of completely pointless mp_msg_test calls.
reimar
parents:
27706
diff
changeset
|
101 mp_msg(MSGT_VO,MSGL_V, "SDL: Couldn't lock RGB surface\n"); \ |
4807
156482788caf
osd outside movie support for vo_sdl, patch by Fredrik Kuivinen
atmos4
parents:
4790
diff
changeset
|
102 return x; \ |
156482788caf
osd outside movie support for vo_sdl, patch by Fredrik Kuivinen
atmos4
parents:
4790
diff
changeset
|
103 } \ |
156482788caf
osd outside movie support for vo_sdl, patch by Fredrik Kuivinen
atmos4
parents:
4790
diff
changeset
|
104 } |
156482788caf
osd outside movie support for vo_sdl, patch by Fredrik Kuivinen
atmos4
parents:
4790
diff
changeset
|
105 |
156482788caf
osd outside movie support for vo_sdl, patch by Fredrik Kuivinen
atmos4
parents:
4790
diff
changeset
|
106 #define SDL_SRF_UNLOCK(srf) if(SDL_MUSTLOCK(srf)) \ |
156482788caf
osd outside movie support for vo_sdl, patch by Fredrik Kuivinen
atmos4
parents:
4790
diff
changeset
|
107 SDL_UnlockSurface (srf); |
156482788caf
osd outside movie support for vo_sdl, patch by Fredrik Kuivinen
atmos4
parents:
4790
diff
changeset
|
108 #else |
156482788caf
osd outside movie support for vo_sdl, patch by Fredrik Kuivinen
atmos4
parents:
4790
diff
changeset
|
109 #define SDL_OVR_LOCK(x) |
156482788caf
osd outside movie support for vo_sdl, patch by Fredrik Kuivinen
atmos4
parents:
4790
diff
changeset
|
110 #define SDL_OVR_UNLOCK |
156482788caf
osd outside movie support for vo_sdl, patch by Fredrik Kuivinen
atmos4
parents:
4790
diff
changeset
|
111 #define SDL_SRF_LOCK(srf, x) |
156482788caf
osd outside movie support for vo_sdl, patch by Fredrik Kuivinen
atmos4
parents:
4790
diff
changeset
|
112 #define SDL_SRF_UNLOCK(srf) |
156482788caf
osd outside movie support for vo_sdl, patch by Fredrik Kuivinen
atmos4
parents:
4790
diff
changeset
|
113 #endif |
156482788caf
osd outside movie support for vo_sdl, patch by Fredrik Kuivinen
atmos4
parents:
4790
diff
changeset
|
114 |
1 | 115 /** Private SDL Data structure **/ |
116 | |
117 static struct sdl_priv_s { | |
118 | |
635
b9735f811d7d
15,16,24,32Bit rgb/bgr support added, aalib fixed, performance optimizations, code cleanup and so much more...
atmosfear
parents:
616
diff
changeset
|
119 /* output driver used by sdl */ |
b9735f811d7d
15,16,24,32Bit rgb/bgr support added, aalib fixed, performance optimizations, code cleanup and so much more...
atmosfear
parents:
616
diff
changeset
|
120 char driver[8]; |
29263
0f1b5b68af32
whitespace cosmetics: Remove all trailing whitespace.
diego
parents:
28922
diff
changeset
|
121 |
635
b9735f811d7d
15,16,24,32Bit rgb/bgr support added, aalib fixed, performance optimizations, code cleanup and so much more...
atmosfear
parents:
616
diff
changeset
|
122 /* SDL display surface */ |
1 | 123 SDL_Surface *surface; |
29263
0f1b5b68af32
whitespace cosmetics: Remove all trailing whitespace.
diego
parents:
28922
diff
changeset
|
124 |
635
b9735f811d7d
15,16,24,32Bit rgb/bgr support added, aalib fixed, performance optimizations, code cleanup and so much more...
atmosfear
parents:
616
diff
changeset
|
125 /* SDL RGB surface */ |
b9735f811d7d
15,16,24,32Bit rgb/bgr support added, aalib fixed, performance optimizations, code cleanup and so much more...
atmosfear
parents:
616
diff
changeset
|
126 SDL_Surface *rgbsurface; |
29263
0f1b5b68af32
whitespace cosmetics: Remove all trailing whitespace.
diego
parents:
28922
diff
changeset
|
127 |
635
b9735f811d7d
15,16,24,32Bit rgb/bgr support added, aalib fixed, performance optimizations, code cleanup and so much more...
atmosfear
parents:
616
diff
changeset
|
128 /* SDL YUV overlay */ |
1 | 129 SDL_Overlay *overlay; |
635
b9735f811d7d
15,16,24,32Bit rgb/bgr support added, aalib fixed, performance optimizations, code cleanup and so much more...
atmosfear
parents:
616
diff
changeset
|
130 |
1 | 131 /* available fullscreen modes */ |
132 SDL_Rect **fullmodes; | |
133 | |
134 /* surface attributes for fullscreen and windowed mode */ | |
135 Uint32 sdlflags, sdlfullflags; | |
136 | |
137 /* save the windowed output extents */ | |
138 SDL_Rect windowsize; | |
29263
0f1b5b68af32
whitespace cosmetics: Remove all trailing whitespace.
diego
parents:
28922
diff
changeset
|
139 |
1 | 140 /* Bits per Pixel */ |
141 Uint8 bpp; | |
142 | |
635
b9735f811d7d
15,16,24,32Bit rgb/bgr support added, aalib fixed, performance optimizations, code cleanup and so much more...
atmosfear
parents:
616
diff
changeset
|
143 /* RGB or YUV? */ |
b9735f811d7d
15,16,24,32Bit rgb/bgr support added, aalib fixed, performance optimizations, code cleanup and so much more...
atmosfear
parents:
616
diff
changeset
|
144 Uint8 mode; |
b9735f811d7d
15,16,24,32Bit rgb/bgr support added, aalib fixed, performance optimizations, code cleanup and so much more...
atmosfear
parents:
616
diff
changeset
|
145 #define YUV 0 |
b9735f811d7d
15,16,24,32Bit rgb/bgr support added, aalib fixed, performance optimizations, code cleanup and so much more...
atmosfear
parents:
616
diff
changeset
|
146 #define RGB 1 |
b9735f811d7d
15,16,24,32Bit rgb/bgr support added, aalib fixed, performance optimizations, code cleanup and so much more...
atmosfear
parents:
616
diff
changeset
|
147 #define BGR 2 |
b9735f811d7d
15,16,24,32Bit rgb/bgr support added, aalib fixed, performance optimizations, code cleanup and so much more...
atmosfear
parents:
616
diff
changeset
|
148 |
1219
e169f798ff71
Sync with SF cvs. (Bugfixed YUV aalib and RGB/BGR32 converted modes.)
atmos4
parents:
1197
diff
changeset
|
149 /* use direct blitting to surface */ |
e169f798ff71
Sync with SF cvs. (Bugfixed YUV aalib and RGB/BGR32 converted modes.)
atmos4
parents:
1197
diff
changeset
|
150 int dblit; |
e169f798ff71
Sync with SF cvs. (Bugfixed YUV aalib and RGB/BGR32 converted modes.)
atmos4
parents:
1197
diff
changeset
|
151 |
1 | 152 /* current fullscreen mode, 0 = highest available fullscreen mode */ |
153 int fullmode; | |
154 | |
155 /* YUV ints */ | |
784
dee122f9cdb9
Added full aspect awareness, rewrote fullscreen handling.
atmosfear
parents:
772
diff
changeset
|
156 int framePlaneY, framePlaneUV, framePlaneYUY; |
dee122f9cdb9
Added full aspect awareness, rewrote fullscreen handling.
atmosfear
parents:
772
diff
changeset
|
157 int stridePlaneY, stridePlaneUV, stridePlaneYUY; |
29263
0f1b5b68af32
whitespace cosmetics: Remove all trailing whitespace.
diego
parents:
28922
diff
changeset
|
158 |
635
b9735f811d7d
15,16,24,32Bit rgb/bgr support added, aalib fixed, performance optimizations, code cleanup and so much more...
atmosfear
parents:
616
diff
changeset
|
159 /* RGB ints */ |
b9735f811d7d
15,16,24,32Bit rgb/bgr support added, aalib fixed, performance optimizations, code cleanup and so much more...
atmosfear
parents:
616
diff
changeset
|
160 int framePlaneRGB; |
772
e70a52f17f92
Added flipped video support and activate/deactivate screensaver under X.
atmosfear
parents:
770
diff
changeset
|
161 int stridePlaneRGB; |
e70a52f17f92
Added flipped video support and activate/deactivate screensaver under X.
atmosfear
parents:
770
diff
changeset
|
162 |
e70a52f17f92
Added flipped video support and activate/deactivate screensaver under X.
atmosfear
parents:
770
diff
changeset
|
163 /* Flip image */ |
e70a52f17f92
Added flipped video support and activate/deactivate screensaver under X.
atmosfear
parents:
770
diff
changeset
|
164 int flip; |
784
dee122f9cdb9
Added full aspect awareness, rewrote fullscreen handling.
atmosfear
parents:
772
diff
changeset
|
165 |
dee122f9cdb9
Added full aspect awareness, rewrote fullscreen handling.
atmosfear
parents:
772
diff
changeset
|
166 /* fullscreen behaviour; see init */ |
dee122f9cdb9
Added full aspect awareness, rewrote fullscreen handling.
atmosfear
parents:
772
diff
changeset
|
167 int fulltype; |
dee122f9cdb9
Added full aspect awareness, rewrote fullscreen handling.
atmosfear
parents:
772
diff
changeset
|
168 |
951 | 169 /* is X running (0/1) */ |
170 int X; | |
171 | |
784
dee122f9cdb9
Added full aspect awareness, rewrote fullscreen handling.
atmosfear
parents:
772
diff
changeset
|
172 /* X11 Resolution */ |
dee122f9cdb9
Added full aspect awareness, rewrote fullscreen handling.
atmosfear
parents:
772
diff
changeset
|
173 int XWidth, XHeight; |
29263
0f1b5b68af32
whitespace cosmetics: Remove all trailing whitespace.
diego
parents:
28922
diff
changeset
|
174 |
784
dee122f9cdb9
Added full aspect awareness, rewrote fullscreen handling.
atmosfear
parents:
772
diff
changeset
|
175 /* original image dimensions */ |
dee122f9cdb9
Added full aspect awareness, rewrote fullscreen handling.
atmosfear
parents:
772
diff
changeset
|
176 int width, height; |
dee122f9cdb9
Added full aspect awareness, rewrote fullscreen handling.
atmosfear
parents:
772
diff
changeset
|
177 |
dee122f9cdb9
Added full aspect awareness, rewrote fullscreen handling.
atmosfear
parents:
772
diff
changeset
|
178 /* destination dimensions */ |
dee122f9cdb9
Added full aspect awareness, rewrote fullscreen handling.
atmosfear
parents:
772
diff
changeset
|
179 int dstwidth, dstheight; |
dee122f9cdb9
Added full aspect awareness, rewrote fullscreen handling.
atmosfear
parents:
772
diff
changeset
|
180 |
4807
156482788caf
osd outside movie support for vo_sdl, patch by Fredrik Kuivinen
atmos4
parents:
4790
diff
changeset
|
181 /* Draw image at coordinate y on the SDL surfaces */ |
156482788caf
osd outside movie support for vo_sdl, patch by Fredrik Kuivinen
atmos4
parents:
4790
diff
changeset
|
182 int y; |
156482788caf
osd outside movie support for vo_sdl, patch by Fredrik Kuivinen
atmos4
parents:
4790
diff
changeset
|
183 |
156482788caf
osd outside movie support for vo_sdl, patch by Fredrik Kuivinen
atmos4
parents:
4790
diff
changeset
|
184 /* The image is displayed between those y coordinates in priv->surface */ |
156482788caf
osd outside movie support for vo_sdl, patch by Fredrik Kuivinen
atmos4
parents:
4790
diff
changeset
|
185 int y_screen_top, y_screen_bottom; |
156482788caf
osd outside movie support for vo_sdl, patch by Fredrik Kuivinen
atmos4
parents:
4790
diff
changeset
|
186 |
156482788caf
osd outside movie support for vo_sdl, patch by Fredrik Kuivinen
atmos4
parents:
4790
diff
changeset
|
187 /* 1 if the OSD has changed otherwise 0 */ |
156482788caf
osd outside movie support for vo_sdl, patch by Fredrik Kuivinen
atmos4
parents:
4790
diff
changeset
|
188 int osd_has_changed; |
29263
0f1b5b68af32
whitespace cosmetics: Remove all trailing whitespace.
diego
parents:
28922
diff
changeset
|
189 |
784
dee122f9cdb9
Added full aspect awareness, rewrote fullscreen handling.
atmosfear
parents:
772
diff
changeset
|
190 /* source image format (YUV/RGB/...) */ |
5058 | 191 uint32_t format; |
4807
156482788caf
osd outside movie support for vo_sdl, patch by Fredrik Kuivinen
atmos4
parents:
4790
diff
changeset
|
192 |
156482788caf
osd outside movie support for vo_sdl, patch by Fredrik Kuivinen
atmos4
parents:
4790
diff
changeset
|
193 /* dirty_off_frame[0] contains a bounding box around the osd contents drawn above the image |
156482788caf
osd outside movie support for vo_sdl, patch by Fredrik Kuivinen
atmos4
parents:
4790
diff
changeset
|
194 dirty_off_frame[1] is the corresponding thing for OSD contents drawn below the image |
156482788caf
osd outside movie support for vo_sdl, patch by Fredrik Kuivinen
atmos4
parents:
4790
diff
changeset
|
195 */ |
156482788caf
osd outside movie support for vo_sdl, patch by Fredrik Kuivinen
atmos4
parents:
4790
diff
changeset
|
196 SDL_Rect dirty_off_frame[2]; |
1 | 197 } sdl_priv; |
198 | |
4807
156482788caf
osd outside movie support for vo_sdl, patch by Fredrik Kuivinen
atmos4
parents:
4790
diff
changeset
|
199 static void erase_area_4(int x_start, int width, int height, int pitch, uint32_t color, uint8_t* pixels); |
156482788caf
osd outside movie support for vo_sdl, patch by Fredrik Kuivinen
atmos4
parents:
4790
diff
changeset
|
200 static void erase_area_1(int x_start, int width, int height, int pitch, uint8_t color, uint8_t* pixels); |
156482788caf
osd outside movie support for vo_sdl, patch by Fredrik Kuivinen
atmos4
parents:
4790
diff
changeset
|
201 static int setup_surfaces(void); |
156482788caf
osd outside movie support for vo_sdl, patch by Fredrik Kuivinen
atmos4
parents:
4790
diff
changeset
|
202 static void set_video_mode(int width, int height, int bpp, uint32_t sdlflags); |
156482788caf
osd outside movie support for vo_sdl, patch by Fredrik Kuivinen
atmos4
parents:
4790
diff
changeset
|
203 static void erase_rectangle(int x, int y, int w, int h); |
156482788caf
osd outside movie support for vo_sdl, patch by Fredrik Kuivinen
atmos4
parents:
4790
diff
changeset
|
204 |
156482788caf
osd outside movie support for vo_sdl, patch by Fredrik Kuivinen
atmos4
parents:
4790
diff
changeset
|
205 /* Expand 'rect' to contain the rectangle specified by x, y, w and h */ |
156482788caf
osd outside movie support for vo_sdl, patch by Fredrik Kuivinen
atmos4
parents:
4790
diff
changeset
|
206 static void expand_rect(SDL_Rect* rect, int x, int y, int w, int h) |
156482788caf
osd outside movie support for vo_sdl, patch by Fredrik Kuivinen
atmos4
parents:
4790
diff
changeset
|
207 { |
156482788caf
osd outside movie support for vo_sdl, patch by Fredrik Kuivinen
atmos4
parents:
4790
diff
changeset
|
208 if(rect->x < 0 || rect->y < 0) { |
156482788caf
osd outside movie support for vo_sdl, patch by Fredrik Kuivinen
atmos4
parents:
4790
diff
changeset
|
209 rect->x = x; |
156482788caf
osd outside movie support for vo_sdl, patch by Fredrik Kuivinen
atmos4
parents:
4790
diff
changeset
|
210 rect->y = y; |
156482788caf
osd outside movie support for vo_sdl, patch by Fredrik Kuivinen
atmos4
parents:
4790
diff
changeset
|
211 rect->w = w; |
156482788caf
osd outside movie support for vo_sdl, patch by Fredrik Kuivinen
atmos4
parents:
4790
diff
changeset
|
212 rect->h = h; |
156482788caf
osd outside movie support for vo_sdl, patch by Fredrik Kuivinen
atmos4
parents:
4790
diff
changeset
|
213 return; |
156482788caf
osd outside movie support for vo_sdl, patch by Fredrik Kuivinen
atmos4
parents:
4790
diff
changeset
|
214 } |
29263
0f1b5b68af32
whitespace cosmetics: Remove all trailing whitespace.
diego
parents:
28922
diff
changeset
|
215 |
4807
156482788caf
osd outside movie support for vo_sdl, patch by Fredrik Kuivinen
atmos4
parents:
4790
diff
changeset
|
216 if(rect->x > x) |
156482788caf
osd outside movie support for vo_sdl, patch by Fredrik Kuivinen
atmos4
parents:
4790
diff
changeset
|
217 rect->x = x; |
156482788caf
osd outside movie support for vo_sdl, patch by Fredrik Kuivinen
atmos4
parents:
4790
diff
changeset
|
218 |
156482788caf
osd outside movie support for vo_sdl, patch by Fredrik Kuivinen
atmos4
parents:
4790
diff
changeset
|
219 if(rect->y > y) |
156482788caf
osd outside movie support for vo_sdl, patch by Fredrik Kuivinen
atmos4
parents:
4790
diff
changeset
|
220 rect->y = y; |
156482788caf
osd outside movie support for vo_sdl, patch by Fredrik Kuivinen
atmos4
parents:
4790
diff
changeset
|
221 |
156482788caf
osd outside movie support for vo_sdl, patch by Fredrik Kuivinen
atmos4
parents:
4790
diff
changeset
|
222 if(rect->x + rect->w < x + w) |
156482788caf
osd outside movie support for vo_sdl, patch by Fredrik Kuivinen
atmos4
parents:
4790
diff
changeset
|
223 rect->w = x + w - rect->x; |
156482788caf
osd outside movie support for vo_sdl, patch by Fredrik Kuivinen
atmos4
parents:
4790
diff
changeset
|
224 |
156482788caf
osd outside movie support for vo_sdl, patch by Fredrik Kuivinen
atmos4
parents:
4790
diff
changeset
|
225 if(rect->y + rect->h < y + h) |
156482788caf
osd outside movie support for vo_sdl, patch by Fredrik Kuivinen
atmos4
parents:
4790
diff
changeset
|
226 rect->h = y + h - rect->y; |
156482788caf
osd outside movie support for vo_sdl, patch by Fredrik Kuivinen
atmos4
parents:
4790
diff
changeset
|
227 } |
1 | 228 |
351 | 229 /** libvo Plugin functions **/ |
230 | |
231 /** | |
232 * draw_alpha is used for osd and subtitle display. | |
233 * | |
234 **/ | |
235 | |
236 static void draw_alpha(int x0,int y0, int w,int h, unsigned char* src, unsigned char *srca, int stride){ | |
408 | 237 struct sdl_priv_s *priv = &sdl_priv; |
29263
0f1b5b68af32
whitespace cosmetics: Remove all trailing whitespace.
diego
parents:
28922
diff
changeset
|
238 |
4807
156482788caf
osd outside movie support for vo_sdl, patch by Fredrik Kuivinen
atmos4
parents:
4790
diff
changeset
|
239 if(priv->osd_has_changed) { |
156482788caf
osd outside movie support for vo_sdl, patch by Fredrik Kuivinen
atmos4
parents:
4790
diff
changeset
|
240 /* OSD did change. Store a bounding box of everything drawn into the OSD */ |
156482788caf
osd outside movie support for vo_sdl, patch by Fredrik Kuivinen
atmos4
parents:
4790
diff
changeset
|
241 if(priv->y >= y0) { |
156482788caf
osd outside movie support for vo_sdl, patch by Fredrik Kuivinen
atmos4
parents:
4790
diff
changeset
|
242 /* Make sure we don't mark part of the frame area dirty */ |
29263
0f1b5b68af32
whitespace cosmetics: Remove all trailing whitespace.
diego
parents:
28922
diff
changeset
|
243 if(h + y0 > priv->y) |
4807
156482788caf
osd outside movie support for vo_sdl, patch by Fredrik Kuivinen
atmos4
parents:
4790
diff
changeset
|
244 expand_rect(&priv->dirty_off_frame[0], x0, y0, w, priv->y - y0); |
156482788caf
osd outside movie support for vo_sdl, patch by Fredrik Kuivinen
atmos4
parents:
4790
diff
changeset
|
245 else |
156482788caf
osd outside movie support for vo_sdl, patch by Fredrik Kuivinen
atmos4
parents:
4790
diff
changeset
|
246 expand_rect(&priv->dirty_off_frame[0], x0, y0, w, h); |
156482788caf
osd outside movie support for vo_sdl, patch by Fredrik Kuivinen
atmos4
parents:
4790
diff
changeset
|
247 } |
156482788caf
osd outside movie support for vo_sdl, patch by Fredrik Kuivinen
atmos4
parents:
4790
diff
changeset
|
248 else if(priv->y + priv->height <= y0 + h) { |
156482788caf
osd outside movie support for vo_sdl, patch by Fredrik Kuivinen
atmos4
parents:
4790
diff
changeset
|
249 /* Make sure we don't mark part of the frame area dirty */ |
29263
0f1b5b68af32
whitespace cosmetics: Remove all trailing whitespace.
diego
parents:
28922
diff
changeset
|
250 if(y0 < priv->y + priv->height) |
4807
156482788caf
osd outside movie support for vo_sdl, patch by Fredrik Kuivinen
atmos4
parents:
4790
diff
changeset
|
251 expand_rect(&priv->dirty_off_frame[1], x0, |
156482788caf
osd outside movie support for vo_sdl, patch by Fredrik Kuivinen
atmos4
parents:
4790
diff
changeset
|
252 priv->y + priv->height, |
156482788caf
osd outside movie support for vo_sdl, patch by Fredrik Kuivinen
atmos4
parents:
4790
diff
changeset
|
253 w, h - ((priv->y + priv->height) - y0)); |
156482788caf
osd outside movie support for vo_sdl, patch by Fredrik Kuivinen
atmos4
parents:
4790
diff
changeset
|
254 else |
156482788caf
osd outside movie support for vo_sdl, patch by Fredrik Kuivinen
atmos4
parents:
4790
diff
changeset
|
255 expand_rect(&priv->dirty_off_frame[1], x0, y0, w, h); |
156482788caf
osd outside movie support for vo_sdl, patch by Fredrik Kuivinen
atmos4
parents:
4790
diff
changeset
|
256 } |
156482788caf
osd outside movie support for vo_sdl, patch by Fredrik Kuivinen
atmos4
parents:
4790
diff
changeset
|
257 } |
156482788caf
osd outside movie support for vo_sdl, patch by Fredrik Kuivinen
atmos4
parents:
4790
diff
changeset
|
258 else { /* OSD contents didn't change only draw parts that was erased by the frame */ |
156482788caf
osd outside movie support for vo_sdl, patch by Fredrik Kuivinen
atmos4
parents:
4790
diff
changeset
|
259 if(priv->y >= y0) { |
156482788caf
osd outside movie support for vo_sdl, patch by Fredrik Kuivinen
atmos4
parents:
4790
diff
changeset
|
260 src = src + (priv->y - y0) * stride; |
156482788caf
osd outside movie support for vo_sdl, patch by Fredrik Kuivinen
atmos4
parents:
4790
diff
changeset
|
261 srca = srca + (priv->y - y0) * stride; |
156482788caf
osd outside movie support for vo_sdl, patch by Fredrik Kuivinen
atmos4
parents:
4790
diff
changeset
|
262 h -= priv->y - y0; |
156482788caf
osd outside movie support for vo_sdl, patch by Fredrik Kuivinen
atmos4
parents:
4790
diff
changeset
|
263 y0 = priv->y; |
156482788caf
osd outside movie support for vo_sdl, patch by Fredrik Kuivinen
atmos4
parents:
4790
diff
changeset
|
264 } |
156482788caf
osd outside movie support for vo_sdl, patch by Fredrik Kuivinen
atmos4
parents:
4790
diff
changeset
|
265 |
156482788caf
osd outside movie support for vo_sdl, patch by Fredrik Kuivinen
atmos4
parents:
4790
diff
changeset
|
266 if(priv->y + priv->height <= y0 + h) |
156482788caf
osd outside movie support for vo_sdl, patch by Fredrik Kuivinen
atmos4
parents:
4790
diff
changeset
|
267 h = priv->y + priv->height - y0; |
156482788caf
osd outside movie support for vo_sdl, patch by Fredrik Kuivinen
atmos4
parents:
4790
diff
changeset
|
268 |
156482788caf
osd outside movie support for vo_sdl, patch by Fredrik Kuivinen
atmos4
parents:
4790
diff
changeset
|
269 if(h <= 0) |
156482788caf
osd outside movie support for vo_sdl, patch by Fredrik Kuivinen
atmos4
parents:
4790
diff
changeset
|
270 return; |
156482788caf
osd outside movie support for vo_sdl, patch by Fredrik Kuivinen
atmos4
parents:
4790
diff
changeset
|
271 } |
156482788caf
osd outside movie support for vo_sdl, patch by Fredrik Kuivinen
atmos4
parents:
4790
diff
changeset
|
272 |
408 | 273 switch(priv->format) { |
29263
0f1b5b68af32
whitespace cosmetics: Remove all trailing whitespace.
diego
parents:
28922
diff
changeset
|
274 case IMGFMT_YV12: |
408 | 275 case IMGFMT_I420: |
276 case IMGFMT_IYUV: | |
5260 | 277 vo_draw_alpha_yv12(w,h,src,srca,stride,((uint8_t *) *(priv->overlay->pixels))+priv->overlay->pitches[0]*y0+x0,priv->overlay->pitches[0]); |
408 | 278 break; |
279 case IMGFMT_YUY2: | |
5260 | 280 case IMGFMT_YVYU: |
281 x0 *= 2; | |
282 vo_draw_alpha_yuy2(w,h,src,srca,stride,((uint8_t *) *(priv->overlay->pixels))+priv->overlay->pitches[0]*y0+x0,priv->overlay->pitches[0]); | |
29263
0f1b5b68af32
whitespace cosmetics: Remove all trailing whitespace.
diego
parents:
28922
diff
changeset
|
283 break; |
451
e27a365b0303
fixes osd/subtitle for UYVY image format and steps back to 1.15 changes
atmosfear
parents:
448
diff
changeset
|
284 case IMGFMT_UYVY: |
5260 | 285 x0 *= 2; |
286 vo_draw_alpha_yuy2(w,h,src,srca,stride,((uint8_t *) *(priv->overlay->pixels))+priv->overlay->pitches[0]*y0+x0,priv->overlay->pitches[0]); | |
635
b9735f811d7d
15,16,24,32Bit rgb/bgr support added, aalib fixed, performance optimizations, code cleanup and so much more...
atmosfear
parents:
616
diff
changeset
|
287 break; |
4807
156482788caf
osd outside movie support for vo_sdl, patch by Fredrik Kuivinen
atmos4
parents:
4790
diff
changeset
|
288 |
1194
40550e1458e8
Drastic! speedup of rgb code. Removed nonsens memhole fixes.
atmosfear
parents:
1188
diff
changeset
|
289 default: |
5260 | 290 if(priv->dblit) { |
291 x0 *= priv->surface->format->BytesPerPixel; | |
1194
40550e1458e8
Drastic! speedup of rgb code. Removed nonsens memhole fixes.
atmosfear
parents:
1188
diff
changeset
|
292 switch(priv->format) { |
823
e09c92ca4c45
Added ability to use direct surface blitting for BGR modes.
atmosfear
parents:
784
diff
changeset
|
293 case IMGFMT_RGB15: |
e09c92ca4c45
Added ability to use direct surface blitting for BGR modes.
atmosfear
parents:
784
diff
changeset
|
294 case IMGFMT_BGR15: |
5260 | 295 vo_draw_alpha_rgb15(w,h,src,srca,stride,((uint8_t *) priv->surface->pixels)+y0*priv->surface->pitch+x0,priv->surface->pitch); |
823
e09c92ca4c45
Added ability to use direct surface blitting for BGR modes.
atmosfear
parents:
784
diff
changeset
|
296 break; |
e09c92ca4c45
Added ability to use direct surface blitting for BGR modes.
atmosfear
parents:
784
diff
changeset
|
297 case IMGFMT_RGB16: |
e09c92ca4c45
Added ability to use direct surface blitting for BGR modes.
atmosfear
parents:
784
diff
changeset
|
298 case IMGFMT_BGR16: |
5260 | 299 vo_draw_alpha_rgb16(w,h,src,srca,stride,((uint8_t *) priv->surface->pixels)+y0*priv->surface->pitch+x0,priv->surface->pitch); |
823
e09c92ca4c45
Added ability to use direct surface blitting for BGR modes.
atmosfear
parents:
784
diff
changeset
|
300 break; |
e09c92ca4c45
Added ability to use direct surface blitting for BGR modes.
atmosfear
parents:
784
diff
changeset
|
301 case IMGFMT_RGB24: |
e09c92ca4c45
Added ability to use direct surface blitting for BGR modes.
atmosfear
parents:
784
diff
changeset
|
302 case IMGFMT_BGR24: |
5260 | 303 vo_draw_alpha_rgb24(w,h,src,srca,stride,((uint8_t *) priv->surface->pixels)+y0*priv->surface->pitch+x0,priv->surface->pitch); |
823
e09c92ca4c45
Added ability to use direct surface blitting for BGR modes.
atmosfear
parents:
784
diff
changeset
|
304 break; |
e09c92ca4c45
Added ability to use direct surface blitting for BGR modes.
atmosfear
parents:
784
diff
changeset
|
305 case IMGFMT_RGB32: |
e09c92ca4c45
Added ability to use direct surface blitting for BGR modes.
atmosfear
parents:
784
diff
changeset
|
306 case IMGFMT_BGR32: |
5260 | 307 vo_draw_alpha_rgb32(w,h,src,srca,stride,((uint8_t *) priv->surface->pixels)+y0*priv->surface->pitch+x0,priv->surface->pitch); |
823
e09c92ca4c45
Added ability to use direct surface blitting for BGR modes.
atmosfear
parents:
784
diff
changeset
|
308 break; |
1194
40550e1458e8
Drastic! speedup of rgb code. Removed nonsens memhole fixes.
atmosfear
parents:
1188
diff
changeset
|
309 } |
5260 | 310 } |
311 else { | |
312 x0 *= priv->rgbsurface->format->BytesPerPixel; | |
313 switch(priv->format) { | |
635
b9735f811d7d
15,16,24,32Bit rgb/bgr support added, aalib fixed, performance optimizations, code cleanup and so much more...
atmosfear
parents:
616
diff
changeset
|
314 case IMGFMT_RGB15: |
b9735f811d7d
15,16,24,32Bit rgb/bgr support added, aalib fixed, performance optimizations, code cleanup and so much more...
atmosfear
parents:
616
diff
changeset
|
315 case IMGFMT_BGR15: |
5260 | 316 vo_draw_alpha_rgb15(w,h,src,srca,stride,((uint8_t *) priv->rgbsurface->pixels)+y0*priv->rgbsurface->pitch+x0,priv->rgbsurface->pitch); |
635
b9735f811d7d
15,16,24,32Bit rgb/bgr support added, aalib fixed, performance optimizations, code cleanup and so much more...
atmosfear
parents:
616
diff
changeset
|
317 break; |
b9735f811d7d
15,16,24,32Bit rgb/bgr support added, aalib fixed, performance optimizations, code cleanup and so much more...
atmosfear
parents:
616
diff
changeset
|
318 case IMGFMT_RGB16: |
b9735f811d7d
15,16,24,32Bit rgb/bgr support added, aalib fixed, performance optimizations, code cleanup and so much more...
atmosfear
parents:
616
diff
changeset
|
319 case IMGFMT_BGR16: |
5260 | 320 vo_draw_alpha_rgb16(w,h,src,srca,stride,((uint8_t *) priv->rgbsurface->pixels)+y0*priv->rgbsurface->pitch+x0,priv->rgbsurface->pitch); |
635
b9735f811d7d
15,16,24,32Bit rgb/bgr support added, aalib fixed, performance optimizations, code cleanup and so much more...
atmosfear
parents:
616
diff
changeset
|
321 break; |
b9735f811d7d
15,16,24,32Bit rgb/bgr support added, aalib fixed, performance optimizations, code cleanup and so much more...
atmosfear
parents:
616
diff
changeset
|
322 case IMGFMT_RGB24: |
b9735f811d7d
15,16,24,32Bit rgb/bgr support added, aalib fixed, performance optimizations, code cleanup and so much more...
atmosfear
parents:
616
diff
changeset
|
323 case IMGFMT_BGR24: |
5260 | 324 vo_draw_alpha_rgb24(w,h,src,srca,stride,((uint8_t *) priv->rgbsurface->pixels)+y0*priv->rgbsurface->pitch+x0,priv->rgbsurface->pitch); |
635
b9735f811d7d
15,16,24,32Bit rgb/bgr support added, aalib fixed, performance optimizations, code cleanup and so much more...
atmosfear
parents:
616
diff
changeset
|
325 break; |
b9735f811d7d
15,16,24,32Bit rgb/bgr support added, aalib fixed, performance optimizations, code cleanup and so much more...
atmosfear
parents:
616
diff
changeset
|
326 case IMGFMT_RGB32: |
b9735f811d7d
15,16,24,32Bit rgb/bgr support added, aalib fixed, performance optimizations, code cleanup and so much more...
atmosfear
parents:
616
diff
changeset
|
327 case IMGFMT_BGR32: |
5260 | 328 vo_draw_alpha_rgb32(w,h,src,srca,stride,((uint8_t *) priv->rgbsurface->pixels)+y0*priv->rgbsurface->pitch+x0,priv->rgbsurface->pitch); |
635
b9735f811d7d
15,16,24,32Bit rgb/bgr support added, aalib fixed, performance optimizations, code cleanup and so much more...
atmosfear
parents:
616
diff
changeset
|
329 break; |
5260 | 330 } |
331 } | |
29263
0f1b5b68af32
whitespace cosmetics: Remove all trailing whitespace.
diego
parents:
28922
diff
changeset
|
332 |
0f1b5b68af32
whitespace cosmetics: Remove all trailing whitespace.
diego
parents:
28922
diff
changeset
|
333 } |
351 | 334 } |
1 | 335 |
336 | |
337 /** | |
338 * Take a null-terminated array of pointers, and find the last element. | |
339 * | |
340 * params : array == array of which we want to find the last element. | |
341 * returns : index of last NON-NULL element. | |
342 **/ | |
343 | |
344 static inline int findArrayEnd (SDL_Rect **array) | |
345 { | |
346 int i = 0; | |
347 while ( array[i++] ); /* keep loopin' ... */ | |
29263
0f1b5b68af32
whitespace cosmetics: Remove all trailing whitespace.
diego
parents:
28922
diff
changeset
|
348 |
1 | 349 /* return the index of the last array element */ |
350 return i - 1; | |
351 } | |
352 | |
353 | |
354 /** | |
355 * Open and prepare SDL output. | |
356 * | |
357 * params : *plugin == | |
29263
0f1b5b68af32
whitespace cosmetics: Remove all trailing whitespace.
diego
parents:
28922
diff
changeset
|
358 * *name == |
1 | 359 * returns : 0 on success, -1 on failure |
360 **/ | |
29263
0f1b5b68af32
whitespace cosmetics: Remove all trailing whitespace.
diego
parents:
28922
diff
changeset
|
361 |
1 | 362 static int sdl_open (void *plugin, void *name) |
363 { | |
364 struct sdl_priv_s *priv = &sdl_priv; | |
365 const SDL_VideoInfo *vidInfo = NULL; | |
4530
22a4c7957f03
Add playlist keys (some missing?!) and add some shift handlers to allow keys to work with german keyboards.
atmos4
parents:
4528
diff
changeset
|
366 /*static int opened = 0; |
29263
0f1b5b68af32
whitespace cosmetics: Remove all trailing whitespace.
diego
parents:
28922
diff
changeset
|
367 |
4530
22a4c7957f03
Add playlist keys (some missing?!) and add some shift handlers to allow keys to work with german keyboards.
atmos4
parents:
4528
diff
changeset
|
368 if (opened) |
1 | 369 return 0; |
4528
bd2324553533
Fix multifile playback (sdl was not fully reinitialized).
atmos4
parents:
4433
diff
changeset
|
370 opened = 1;*/ |
1 | 371 |
635
b9735f811d7d
15,16,24,32Bit rgb/bgr support added, aalib fixed, performance optimizations, code cleanup and so much more...
atmosfear
parents:
616
diff
changeset
|
372 |
1 | 373 /* other default values */ |
394
f4fb35ef4c06
- added some defines to modify some sdl-out internas (see comments)
atmosfear
parents:
386
diff
changeset
|
374 #ifdef SDL_NOHWSURFACE |
28021
1bbc09f93acb
Remove a lot of completely pointless mp_msg_test calls.
reimar
parents:
27706
diff
changeset
|
375 mp_msg(MSGT_VO,MSGL_V, "SDL: using software-surface\n"); |
12683
411c38e35f0a
asyncblit slows down on UP systems, regarding to the SDL docs, noticed by John Phillip
alex
parents:
12682
diff
changeset
|
376 priv->sdlflags = SDL_SWSURFACE|SDL_RESIZABLE|SDL_ANYFORMAT; |
411c38e35f0a
asyncblit slows down on UP systems, regarding to the SDL docs, noticed by John Phillip
alex
parents:
12682
diff
changeset
|
377 priv->sdlfullflags = SDL_SWSURFACE|SDL_FULLSCREEN|SDL_ANYFORMAT; |
411c38e35f0a
asyncblit slows down on UP systems, regarding to the SDL docs, noticed by John Phillip
alex
parents:
12682
diff
changeset
|
378 // XXX:FIXME: ASYNCBLIT should be enabled for SMP systems |
29263
0f1b5b68af32
whitespace cosmetics: Remove all trailing whitespace.
diego
parents:
28922
diff
changeset
|
379 #else |
1194
40550e1458e8
Drastic! speedup of rgb code. Removed nonsens memhole fixes.
atmosfear
parents:
1188
diff
changeset
|
380 /*if((strcmp(priv->driver, "dga") == 0) && (priv->mode)) { |
17932 | 381 if( mp_msg_test(MSGT_VO,MSGL_V) ) { |
382 printf("SDL: using software-surface\n"); } | |
1194
40550e1458e8
Drastic! speedup of rgb code. Removed nonsens memhole fixes.
atmosfear
parents:
1188
diff
changeset
|
383 priv->sdlflags = SDL_SWSURFACE|SDL_FULLSCREEN|SDL_ASYNCBLIT|SDL_HWACCEL|SDL_ANYFORMAT; |
40550e1458e8
Drastic! speedup of rgb code. Removed nonsens memhole fixes.
atmosfear
parents:
1188
diff
changeset
|
384 priv->sdlfullflags = SDL_SWSURFACE|SDL_FULLSCREEN|SDL_ASYNCBLIT|SDL_HWACCEL|SDL_ANYFORMAT; |
29263
0f1b5b68af32
whitespace cosmetics: Remove all trailing whitespace.
diego
parents:
28922
diff
changeset
|
385 } |
1194
40550e1458e8
Drastic! speedup of rgb code. Removed nonsens memhole fixes.
atmosfear
parents:
1188
diff
changeset
|
386 else { */ |
28021
1bbc09f93acb
Remove a lot of completely pointless mp_msg_test calls.
reimar
parents:
27706
diff
changeset
|
387 mp_msg(MSGT_VO,MSGL_V, "SDL: using hardware-surface\n"); |
12683
411c38e35f0a
asyncblit slows down on UP systems, regarding to the SDL docs, noticed by John Phillip
alex
parents:
12682
diff
changeset
|
388 priv->sdlflags = SDL_HWSURFACE|SDL_RESIZABLE/*|SDL_ANYFORMAT*/; |
411c38e35f0a
asyncblit slows down on UP systems, regarding to the SDL docs, noticed by John Phillip
alex
parents:
12682
diff
changeset
|
389 priv->sdlfullflags = SDL_HWSURFACE|SDL_FULLSCREEN/*|SDL_ANYFORMAT*/; |
411c38e35f0a
asyncblit slows down on UP systems, regarding to the SDL docs, noticed by John Phillip
alex
parents:
12682
diff
changeset
|
390 // XXX:FIXME: ASYNCBLIT should be enabled for SMP systems |
29263
0f1b5b68af32
whitespace cosmetics: Remove all trailing whitespace.
diego
parents:
28922
diff
changeset
|
391 //} |
0f1b5b68af32
whitespace cosmetics: Remove all trailing whitespace.
diego
parents:
28922
diff
changeset
|
392 #endif |
10945 | 393 |
29263
0f1b5b68af32
whitespace cosmetics: Remove all trailing whitespace.
diego
parents:
28922
diff
changeset
|
394 #if !defined( __AMIGAOS4__ ) && !defined( __APPLE__ ) |
0f1b5b68af32
whitespace cosmetics: Remove all trailing whitespace.
diego
parents:
28922
diff
changeset
|
395 priv->sdlfullflags |= SDL_DOUBLEBUF; |
7111 | 396 if (vo_doublebuffering) |
397 priv->sdlflags |= SDL_DOUBLEBUF; | |
10945 | 398 #endif |
29263
0f1b5b68af32
whitespace cosmetics: Remove all trailing whitespace.
diego
parents:
28922
diff
changeset
|
399 |
1 | 400 /* get information about the graphics adapter */ |
401 vidInfo = SDL_GetVideoInfo (); | |
29263
0f1b5b68af32
whitespace cosmetics: Remove all trailing whitespace.
diego
parents:
28922
diff
changeset
|
402 |
1 | 403 /* collect all fullscreen & hardware modes available */ |
404 if (!(priv->fullmodes = SDL_ListModes (vidInfo->vfmt, priv->sdlfullflags))) { | |
405 | |
406 /* non hardware accelerated fullscreen modes */ | |
407 priv->sdlfullflags &= ~SDL_HWSURFACE; | |
408 priv->fullmodes = SDL_ListModes (vidInfo->vfmt, priv->sdlfullflags); | |
409 } | |
29263
0f1b5b68af32
whitespace cosmetics: Remove all trailing whitespace.
diego
parents:
28922
diff
changeset
|
410 |
1 | 411 /* test for normal resizeable & windowed hardware accellerated surfaces */ |
412 if (!SDL_ListModes (vidInfo->vfmt, priv->sdlflags)) { | |
29263
0f1b5b68af32
whitespace cosmetics: Remove all trailing whitespace.
diego
parents:
28922
diff
changeset
|
413 |
0f1b5b68af32
whitespace cosmetics: Remove all trailing whitespace.
diego
parents:
28922
diff
changeset
|
414 /* test for NON hardware accelerated resizeable surfaces - poor you. |
1 | 415 * That's all we have. If this fails there's nothing left. |
416 * Theoretically there could be Fullscreenmodes left - we ignore this for now. | |
417 */ | |
418 priv->sdlflags &= ~SDL_HWSURFACE; | |
419 if ((!SDL_ListModes (vidInfo->vfmt, priv->sdlflags)) && (!priv->fullmodes)) { | |
18234
a107276371a8
Part 5 and final of otvos attila's oattila AT chello-hu mp_msg changes, with lots of corrections
reynaldo
parents:
17932
diff
changeset
|
420 mp_msg(MSGT_VO,MSGL_ERR, MSGTR_LIBVO_SDL_CouldntGetAnyAcceptableSDLModeForOutput); |
1 | 421 return -1; |
422 } | |
423 } | |
29263
0f1b5b68af32
whitespace cosmetics: Remove all trailing whitespace.
diego
parents:
28922
diff
changeset
|
424 |
0f1b5b68af32
whitespace cosmetics: Remove all trailing whitespace.
diego
parents:
28922
diff
changeset
|
425 |
1 | 426 /* YUV overlays need at least 16-bit color depth, but the |
427 * display might less. The SDL AAlib target says it can only do | |
428 * 8-bits, for example. So, if the display is less than 16-bits, | |
429 * we'll force the BPP to 16, and pray that SDL can emulate for us. | |
635
b9735f811d7d
15,16,24,32Bit rgb/bgr support added, aalib fixed, performance optimizations, code cleanup and so much more...
atmosfear
parents:
616
diff
changeset
|
430 */ |
1 | 431 priv->bpp = vidInfo->vfmt->BitsPerPixel; |
4807
156482788caf
osd outside movie support for vo_sdl, patch by Fredrik Kuivinen
atmos4
parents:
4790
diff
changeset
|
432 if (priv->mode == YUV && priv->bpp < 16) { |
635
b9735f811d7d
15,16,24,32Bit rgb/bgr support added, aalib fixed, performance optimizations, code cleanup and so much more...
atmosfear
parents:
616
diff
changeset
|
433 |
18234
a107276371a8
Part 5 and final of otvos attila's oattila AT chello-hu mp_msg changes, with lots of corrections
reynaldo
parents:
17932
diff
changeset
|
434 mp_msg(MSGT_VO,MSGL_V, "SDL: Your SDL display target wants to be at a color " |
5240 | 435 "depth of (%d), but we need it to be at least 16 " |
436 "bits, so we need to emulate 16-bit color. This is " | |
437 "going to slow things down; you might want to " | |
438 "increase your display's color depth, if possible.\n", | |
439 priv->bpp); | |
635
b9735f811d7d
15,16,24,32Bit rgb/bgr support added, aalib fixed, performance optimizations, code cleanup and so much more...
atmosfear
parents:
616
diff
changeset
|
440 |
29263
0f1b5b68af32
whitespace cosmetics: Remove all trailing whitespace.
diego
parents:
28922
diff
changeset
|
441 priv->bpp = 16; |
1 | 442 } |
29263
0f1b5b68af32
whitespace cosmetics: Remove all trailing whitespace.
diego
parents:
28922
diff
changeset
|
443 |
1 | 444 /* Success! */ |
445 return 0; | |
446 } | |
447 | |
448 | |
449 /** | |
450 * Close SDL, Cleanups, Free Memory | |
451 * | |
452 * params : *plugin | |
453 * returns : non-zero on success, zero on error. | |
454 **/ | |
455 | |
456 static int sdl_close (void) | |
457 { | |
458 struct sdl_priv_s *priv = &sdl_priv; | |
459 | |
9669
4d9f067a80da
pass correct key for ESCAPE, bug noticed by Vladimir Mosgalin <mosgalin@VM10124.spb.edu> and moved SDL_ShowCursor from the check_keys() to uninit() (by me)
alex
parents:
9380
diff
changeset
|
460 if (priv->fullmode) |
4d9f067a80da
pass correct key for ESCAPE, bug noticed by Vladimir Mosgalin <mosgalin@VM10124.spb.edu> and moved SDL_ShowCursor from the check_keys() to uninit() (by me)
alex
parents:
9380
diff
changeset
|
461 SDL_ShowCursor(1); |
4d9f067a80da
pass correct key for ESCAPE, bug noticed by Vladimir Mosgalin <mosgalin@VM10124.spb.edu> and moved SDL_ShowCursor from the check_keys() to uninit() (by me)
alex
parents:
9380
diff
changeset
|
462 |
1 | 463 /* Cleanup YUV Overlay structure */ |
8840
cecb561fcb21
- init & check SDL availability at preinit() (fixes -vo sdl,mga)
arpi
parents:
8246
diff
changeset
|
464 if (priv->overlay) { |
1 | 465 SDL_FreeYUVOverlay(priv->overlay); |
8840
cecb561fcb21
- init & check SDL availability at preinit() (fixes -vo sdl,mga)
arpi
parents:
8246
diff
changeset
|
466 priv->overlay=NULL; |
cecb561fcb21
- init & check SDL availability at preinit() (fixes -vo sdl,mga)
arpi
parents:
8246
diff
changeset
|
467 } |
1 | 468 |
635
b9735f811d7d
15,16,24,32Bit rgb/bgr support added, aalib fixed, performance optimizations, code cleanup and so much more...
atmosfear
parents:
616
diff
changeset
|
469 /* Free RGB Surface */ |
8840
cecb561fcb21
- init & check SDL availability at preinit() (fixes -vo sdl,mga)
arpi
parents:
8246
diff
changeset
|
470 if (priv->rgbsurface) { |
1126 | 471 SDL_FreeSurface(priv->rgbsurface); |
8840
cecb561fcb21
- init & check SDL availability at preinit() (fixes -vo sdl,mga)
arpi
parents:
8246
diff
changeset
|
472 priv->rgbsurface=NULL; |
cecb561fcb21
- init & check SDL availability at preinit() (fixes -vo sdl,mga)
arpi
parents:
8246
diff
changeset
|
473 } |
635
b9735f811d7d
15,16,24,32Bit rgb/bgr support added, aalib fixed, performance optimizations, code cleanup and so much more...
atmosfear
parents:
616
diff
changeset
|
474 |
1 | 475 /* Free our blitting surface */ |
8840
cecb561fcb21
- init & check SDL availability at preinit() (fixes -vo sdl,mga)
arpi
parents:
8246
diff
changeset
|
476 if (priv->surface) { |
1 | 477 SDL_FreeSurface(priv->surface); |
8840
cecb561fcb21
- init & check SDL availability at preinit() (fixes -vo sdl,mga)
arpi
parents:
8246
diff
changeset
|
478 priv->surface=NULL; |
cecb561fcb21
- init & check SDL availability at preinit() (fixes -vo sdl,mga)
arpi
parents:
8246
diff
changeset
|
479 } |
29263
0f1b5b68af32
whitespace cosmetics: Remove all trailing whitespace.
diego
parents:
28922
diff
changeset
|
480 |
11000 | 481 /* DON'T attempt to free the fullscreen modes array. SDL_Quit* does this for us */ |
29263
0f1b5b68af32
whitespace cosmetics: Remove all trailing whitespace.
diego
parents:
28922
diff
changeset
|
482 |
1 | 483 return 0; |
484 } | |
485 | |
784
dee122f9cdb9
Added full aspect awareness, rewrote fullscreen handling.
atmosfear
parents:
772
diff
changeset
|
486 /** |
dee122f9cdb9
Added full aspect awareness, rewrote fullscreen handling.
atmosfear
parents:
772
diff
changeset
|
487 * Do aspect ratio calculations |
dee122f9cdb9
Added full aspect awareness, rewrote fullscreen handling.
atmosfear
parents:
772
diff
changeset
|
488 * |
dee122f9cdb9
Added full aspect awareness, rewrote fullscreen handling.
atmosfear
parents:
772
diff
changeset
|
489 * params : srcw == sourcewidth |
dee122f9cdb9
Added full aspect awareness, rewrote fullscreen handling.
atmosfear
parents:
772
diff
changeset
|
490 * srch == sourceheight |
dee122f9cdb9
Added full aspect awareness, rewrote fullscreen handling.
atmosfear
parents:
772
diff
changeset
|
491 * dstw == destinationwidth |
dee122f9cdb9
Added full aspect awareness, rewrote fullscreen handling.
atmosfear
parents:
772
diff
changeset
|
492 * dsth == destinationheight |
dee122f9cdb9
Added full aspect awareness, rewrote fullscreen handling.
atmosfear
parents:
772
diff
changeset
|
493 * |
dee122f9cdb9
Added full aspect awareness, rewrote fullscreen handling.
atmosfear
parents:
772
diff
changeset
|
494 * returns : SDL_Rect structure with new x and y, w and h |
dee122f9cdb9
Added full aspect awareness, rewrote fullscreen handling.
atmosfear
parents:
772
diff
changeset
|
495 **/ |
dee122f9cdb9
Added full aspect awareness, rewrote fullscreen handling.
atmosfear
parents:
772
diff
changeset
|
496 |
2071
7f27b212e07b
Add debug printfs to aspect(), add aspect() usage to vo_sdl.
atmos4
parents:
1710
diff
changeset
|
497 #if 0 |
784
dee122f9cdb9
Added full aspect awareness, rewrote fullscreen handling.
atmosfear
parents:
772
diff
changeset
|
498 static SDL_Rect aspect(int srcw, int srch, int dstw, int dsth) { |
dee122f9cdb9
Added full aspect awareness, rewrote fullscreen handling.
atmosfear
parents:
772
diff
changeset
|
499 SDL_Rect newres; |
28021
1bbc09f93acb
Remove a lot of completely pointless mp_msg_test calls.
reimar
parents:
27706
diff
changeset
|
500 mp_msg(MSGT_VO,MSGL_V, "SDL Aspect-Destinationres: %ix%i (x: %i, y: %i)\n", newres.w, newres.h, newres.x, newres.y); |
784
dee122f9cdb9
Added full aspect awareness, rewrote fullscreen handling.
atmosfear
parents:
772
diff
changeset
|
501 newres.h = ((float)dstw / (float)srcw * (float)srch) * ((float)dsth/((float)dstw/(MONITOR_ASPECT))); |
dee122f9cdb9
Added full aspect awareness, rewrote fullscreen handling.
atmosfear
parents:
772
diff
changeset
|
502 if(newres.h > dsth) { |
dee122f9cdb9
Added full aspect awareness, rewrote fullscreen handling.
atmosfear
parents:
772
diff
changeset
|
503 newres.w = ((float)dsth / (float)newres.h) * dstw; |
dee122f9cdb9
Added full aspect awareness, rewrote fullscreen handling.
atmosfear
parents:
772
diff
changeset
|
504 newres.h = dsth; |
dee122f9cdb9
Added full aspect awareness, rewrote fullscreen handling.
atmosfear
parents:
772
diff
changeset
|
505 newres.x = (dstw - newres.w) / 2; |
dee122f9cdb9
Added full aspect awareness, rewrote fullscreen handling.
atmosfear
parents:
772
diff
changeset
|
506 newres.y = 0; |
dee122f9cdb9
Added full aspect awareness, rewrote fullscreen handling.
atmosfear
parents:
772
diff
changeset
|
507 } |
dee122f9cdb9
Added full aspect awareness, rewrote fullscreen handling.
atmosfear
parents:
772
diff
changeset
|
508 else { |
dee122f9cdb9
Added full aspect awareness, rewrote fullscreen handling.
atmosfear
parents:
772
diff
changeset
|
509 newres.w = dstw; |
dee122f9cdb9
Added full aspect awareness, rewrote fullscreen handling.
atmosfear
parents:
772
diff
changeset
|
510 newres.x = 0; |
dee122f9cdb9
Added full aspect awareness, rewrote fullscreen handling.
atmosfear
parents:
772
diff
changeset
|
511 newres.y = (dsth - newres.h) / 2; |
dee122f9cdb9
Added full aspect awareness, rewrote fullscreen handling.
atmosfear
parents:
772
diff
changeset
|
512 } |
29263
0f1b5b68af32
whitespace cosmetics: Remove all trailing whitespace.
diego
parents:
28922
diff
changeset
|
513 |
28021
1bbc09f93acb
Remove a lot of completely pointless mp_msg_test calls.
reimar
parents:
27706
diff
changeset
|
514 mp_msg(MSGT_VO,MSGL_V, "SDL Mode: %d: %d x %d\n", i, priv->fullmodes[i]->w, priv->fullmodes[i]->h); |
784
dee122f9cdb9
Added full aspect awareness, rewrote fullscreen handling.
atmosfear
parents:
772
diff
changeset
|
515 |
dee122f9cdb9
Added full aspect awareness, rewrote fullscreen handling.
atmosfear
parents:
772
diff
changeset
|
516 return newres; |
dee122f9cdb9
Added full aspect awareness, rewrote fullscreen handling.
atmosfear
parents:
772
diff
changeset
|
517 } |
2071
7f27b212e07b
Add debug printfs to aspect(), add aspect() usage to vo_sdl.
atmos4
parents:
1710
diff
changeset
|
518 #endif |
1 | 519 |
520 /** | |
521 * Sets the specified fullscreen mode. | |
522 * | |
523 * params : mode == index of the desired fullscreen mode | |
524 * returns : doesn't return | |
525 **/ | |
784
dee122f9cdb9
Added full aspect awareness, rewrote fullscreen handling.
atmosfear
parents:
772
diff
changeset
|
526 |
dee122f9cdb9
Added full aspect awareness, rewrote fullscreen handling.
atmosfear
parents:
772
diff
changeset
|
527 #if 0 |
1 | 528 static void set_fullmode (int mode) |
529 { | |
530 struct sdl_priv_s *priv = &sdl_priv; | |
531 SDL_Surface *newsurface = NULL; | |
97
cab74dfde6dd
Felix B¸«änemann added support for horizontal scaling for aspect-ratio in
atmosfear
parents:
84
diff
changeset
|
532 int haspect, waspect = 0; |
29263
0f1b5b68af32
whitespace cosmetics: Remove all trailing whitespace.
diego
parents:
28922
diff
changeset
|
533 |
1 | 534 /* if we haven't set a fullmode yet, default to the lowest res fullmode first */ |
29263
0f1b5b68af32
whitespace cosmetics: Remove all trailing whitespace.
diego
parents:
28922
diff
changeset
|
535 if (mode < 0) |
1 | 536 mode = priv->fullmode = findArrayEnd(priv->fullmodes) - 1; |
537 | |
97
cab74dfde6dd
Felix B¸«änemann added support for horizontal scaling for aspect-ratio in
atmosfear
parents:
84
diff
changeset
|
538 /* Calculate proper aspect ratio for fullscreen |
cab74dfde6dd
Felix B¸«änemann added support for horizontal scaling for aspect-ratio in
atmosfear
parents:
84
diff
changeset
|
539 * Height smaller than expected: add horizontal black bars (haspect)*/ |
cab74dfde6dd
Felix B¸«änemann added support for horizontal scaling for aspect-ratio in
atmosfear
parents:
84
diff
changeset
|
540 haspect = (priv->width * (float) ((float) priv->fullmodes[mode]->h / (float) priv->fullmodes[mode]->w) - priv->height) * (float) ((float) priv->fullmodes[mode]->w / (float) priv->width); |
cab74dfde6dd
Felix B¸«änemann added support for horizontal scaling for aspect-ratio in
atmosfear
parents:
84
diff
changeset
|
541 /* Height bigger than expected: add vertical black bars (waspect)*/ |
cab74dfde6dd
Felix B¸«änemann added support for horizontal scaling for aspect-ratio in
atmosfear
parents:
84
diff
changeset
|
542 if (haspect < 0) { |
cab74dfde6dd
Felix B¸«änemann added support for horizontal scaling for aspect-ratio in
atmosfear
parents:
84
diff
changeset
|
543 haspect = 0; /* set haspect to zero because image will be scaled horizontal instead of vertical */ |
cab74dfde6dd
Felix B¸«änemann added support for horizontal scaling for aspect-ratio in
atmosfear
parents:
84
diff
changeset
|
544 waspect = priv->fullmodes[mode]->w - ((float) ((float) priv->fullmodes[mode]->h / (float) priv->height) * (float) priv->width); |
29263
0f1b5b68af32
whitespace cosmetics: Remove all trailing whitespace.
diego
parents:
28922
diff
changeset
|
545 } |
97
cab74dfde6dd
Felix B¸«änemann added support for horizontal scaling for aspect-ratio in
atmosfear
parents:
84
diff
changeset
|
546 // printf ("W-Aspect: %i H-Aspect: %i\n", waspect, haspect); |
29263
0f1b5b68af32
whitespace cosmetics: Remove all trailing whitespace.
diego
parents:
28922
diff
changeset
|
547 |
97
cab74dfde6dd
Felix B¸«änemann added support for horizontal scaling for aspect-ratio in
atmosfear
parents:
84
diff
changeset
|
548 /* change to given fullscreen mode and hide the mouse cursor */ |
cab74dfde6dd
Felix B¸«änemann added support for horizontal scaling for aspect-ratio in
atmosfear
parents:
84
diff
changeset
|
549 newsurface = SDL_SetVideoMode(priv->fullmodes[mode]->w - waspect, priv->fullmodes[mode]->h - haspect, priv->bpp, priv->sdlfullflags); |
29263
0f1b5b68af32
whitespace cosmetics: Remove all trailing whitespace.
diego
parents:
28922
diff
changeset
|
550 |
24736 | 551 /* if we were successful hide the mouse cursor and save the mode */ |
1 | 552 if (newsurface) { |
1126 | 553 if (priv->surface) |
554 SDL_FreeSurface(priv->surface); | |
1 | 555 priv->surface = newsurface; |
556 SDL_ShowCursor(0); | |
557 } | |
558 } | |
784
dee122f9cdb9
Added full aspect awareness, rewrote fullscreen handling.
atmosfear
parents:
772
diff
changeset
|
559 #endif |
1 | 560 |
4807
156482788caf
osd outside movie support for vo_sdl, patch by Fredrik Kuivinen
atmos4
parents:
4790
diff
changeset
|
561 /* Set video mode. Not fullscreen */ |
156482788caf
osd outside movie support for vo_sdl, patch by Fredrik Kuivinen
atmos4
parents:
4790
diff
changeset
|
562 static void set_video_mode(int width, int height, int bpp, uint32_t sdlflags) |
156482788caf
osd outside movie support for vo_sdl, patch by Fredrik Kuivinen
atmos4
parents:
4790
diff
changeset
|
563 { |
156482788caf
osd outside movie support for vo_sdl, patch by Fredrik Kuivinen
atmos4
parents:
4790
diff
changeset
|
564 struct sdl_priv_s *priv = &sdl_priv; |
29263
0f1b5b68af32
whitespace cosmetics: Remove all trailing whitespace.
diego
parents:
28922
diff
changeset
|
565 SDL_Surface* newsurface; |
4807
156482788caf
osd outside movie support for vo_sdl, patch by Fredrik Kuivinen
atmos4
parents:
4790
diff
changeset
|
566 |
8149 | 567 if(priv->rgbsurface) |
568 SDL_FreeSurface(priv->rgbsurface); | |
569 else if(priv->overlay) | |
570 SDL_FreeYUVOverlay(priv->overlay); | |
29263
0f1b5b68af32
whitespace cosmetics: Remove all trailing whitespace.
diego
parents:
28922
diff
changeset
|
571 |
8149 | 572 priv->rgbsurface = NULL; |
573 priv->overlay = NULL; | |
29263
0f1b5b68af32
whitespace cosmetics: Remove all trailing whitespace.
diego
parents:
28922
diff
changeset
|
574 |
4807
156482788caf
osd outside movie support for vo_sdl, patch by Fredrik Kuivinen
atmos4
parents:
4790
diff
changeset
|
575 newsurface = SDL_SetVideoMode(width, height, bpp, sdlflags); |
156482788caf
osd outside movie support for vo_sdl, patch by Fredrik Kuivinen
atmos4
parents:
4790
diff
changeset
|
576 |
156482788caf
osd outside movie support for vo_sdl, patch by Fredrik Kuivinen
atmos4
parents:
4790
diff
changeset
|
577 if(newsurface) { |
156482788caf
osd outside movie support for vo_sdl, patch by Fredrik Kuivinen
atmos4
parents:
4790
diff
changeset
|
578 |
156482788caf
osd outside movie support for vo_sdl, patch by Fredrik Kuivinen
atmos4
parents:
4790
diff
changeset
|
579 /* priv->surface will be NULL the first time this function is called. */ |
156482788caf
osd outside movie support for vo_sdl, patch by Fredrik Kuivinen
atmos4
parents:
4790
diff
changeset
|
580 if(priv->surface) |
156482788caf
osd outside movie support for vo_sdl, patch by Fredrik Kuivinen
atmos4
parents:
4790
diff
changeset
|
581 SDL_FreeSurface(priv->surface); |
156482788caf
osd outside movie support for vo_sdl, patch by Fredrik Kuivinen
atmos4
parents:
4790
diff
changeset
|
582 |
156482788caf
osd outside movie support for vo_sdl, patch by Fredrik Kuivinen
atmos4
parents:
4790
diff
changeset
|
583 priv->surface = newsurface; |
156482788caf
osd outside movie support for vo_sdl, patch by Fredrik Kuivinen
atmos4
parents:
4790
diff
changeset
|
584 priv->dstwidth = width; |
156482788caf
osd outside movie support for vo_sdl, patch by Fredrik Kuivinen
atmos4
parents:
4790
diff
changeset
|
585 priv->dstheight = height; |
31053
f4dce44bbbae
Set vo_dwidth/vo_dheight for mouse movements work at least in windowed mode.
reimar
parents:
31037
diff
changeset
|
586 vo_dwidth = width; |
f4dce44bbbae
Set vo_dwidth/vo_dheight for mouse movements work at least in windowed mode.
reimar
parents:
31037
diff
changeset
|
587 vo_dheight = height; |
4807
156482788caf
osd outside movie support for vo_sdl, patch by Fredrik Kuivinen
atmos4
parents:
4790
diff
changeset
|
588 |
156482788caf
osd outside movie support for vo_sdl, patch by Fredrik Kuivinen
atmos4
parents:
4790
diff
changeset
|
589 setup_surfaces(); |
156482788caf
osd outside movie support for vo_sdl, patch by Fredrik Kuivinen
atmos4
parents:
4790
diff
changeset
|
590 } |
156482788caf
osd outside movie support for vo_sdl, patch by Fredrik Kuivinen
atmos4
parents:
4790
diff
changeset
|
591 else |
18234
a107276371a8
Part 5 and final of otvos attila's oattila AT chello-hu mp_msg changes, with lots of corrections
reynaldo
parents:
17932
diff
changeset
|
592 mp_msg(MSGT_VO,MSGL_WARN, "set_video_mode: SDL_SetVideoMode failed: %s\n", SDL_GetError()); |
4807
156482788caf
osd outside movie support for vo_sdl, patch by Fredrik Kuivinen
atmos4
parents:
4790
diff
changeset
|
593 } |
156482788caf
osd outside movie support for vo_sdl, patch by Fredrik Kuivinen
atmos4
parents:
4790
diff
changeset
|
594 |
784
dee122f9cdb9
Added full aspect awareness, rewrote fullscreen handling.
atmosfear
parents:
772
diff
changeset
|
595 static void set_fullmode (int mode) { |
dee122f9cdb9
Added full aspect awareness, rewrote fullscreen handling.
atmosfear
parents:
772
diff
changeset
|
596 struct sdl_priv_s *priv = &sdl_priv; |
dee122f9cdb9
Added full aspect awareness, rewrote fullscreen handling.
atmosfear
parents:
772
diff
changeset
|
597 SDL_Surface *newsurface = NULL; |
4807
156482788caf
osd outside movie support for vo_sdl, patch by Fredrik Kuivinen
atmos4
parents:
4790
diff
changeset
|
598 int screen_surface_w, screen_surface_h; |
29263
0f1b5b68af32
whitespace cosmetics: Remove all trailing whitespace.
diego
parents:
28922
diff
changeset
|
599 |
8149 | 600 if(priv->rgbsurface) |
601 SDL_FreeSurface(priv->rgbsurface); | |
602 else if(priv->overlay) | |
603 SDL_FreeYUVOverlay(priv->overlay); | |
29263
0f1b5b68af32
whitespace cosmetics: Remove all trailing whitespace.
diego
parents:
28922
diff
changeset
|
604 |
8149 | 605 priv->rgbsurface = NULL; |
606 priv->overlay = NULL; | |
29263
0f1b5b68af32
whitespace cosmetics: Remove all trailing whitespace.
diego
parents:
28922
diff
changeset
|
607 |
784
dee122f9cdb9
Added full aspect awareness, rewrote fullscreen handling.
atmosfear
parents:
772
diff
changeset
|
608 /* if we haven't set a fullmode yet, default to the lowest res fullmode first */ |
3609
c9876f5f4ac5
better fullscreen-mode selection, patch by dunno :)
atmos4
parents:
2249
diff
changeset
|
609 /* But select a mode where the full video enter */ |
15212
05aa13cdf92f
replace VO and VF numeric flags with #defined identifiers
henry
parents:
14876
diff
changeset
|
610 if(priv->X && priv->fulltype & VOFLAG_FULLSCREEN) { |
4807
156482788caf
osd outside movie support for vo_sdl, patch by Fredrik Kuivinen
atmos4
parents:
4790
diff
changeset
|
611 screen_surface_w = priv->XWidth; |
156482788caf
osd outside movie support for vo_sdl, patch by Fredrik Kuivinen
atmos4
parents:
4790
diff
changeset
|
612 screen_surface_h = priv->XHeight; |
156482788caf
osd outside movie support for vo_sdl, patch by Fredrik Kuivinen
atmos4
parents:
4790
diff
changeset
|
613 } |
156482788caf
osd outside movie support for vo_sdl, patch by Fredrik Kuivinen
atmos4
parents:
4790
diff
changeset
|
614 else if (mode < 0) { |
8054 | 615 int i,j,imax; |
3609
c9876f5f4ac5
better fullscreen-mode selection, patch by dunno :)
atmos4
parents:
2249
diff
changeset
|
616 mode = 0; // Default to the biggest mode avaible |
17932 | 617 if ( mp_msg_test(MSGT_VO,MSGL_V) ) for(i=0;priv->fullmodes[i];++i) |
18234
a107276371a8
Part 5 and final of otvos attila's oattila AT chello-hu mp_msg changes, with lots of corrections
reynaldo
parents:
17932
diff
changeset
|
618 mp_msg(MSGT_VO,MSGL_V, "SDL Mode: %d: %d x %d\n", i, priv->fullmodes[i]->w, priv->fullmodes[i]->h); |
3609
c9876f5f4ac5
better fullscreen-mode selection, patch by dunno :)
atmos4
parents:
2249
diff
changeset
|
619 for(i = findArrayEnd(priv->fullmodes) - 1; i >=0; i--) { |
29263
0f1b5b68af32
whitespace cosmetics: Remove all trailing whitespace.
diego
parents:
28922
diff
changeset
|
620 if( (priv->fullmodes[i]->w >= priv->dstwidth) && |
4807
156482788caf
osd outside movie support for vo_sdl, patch by Fredrik Kuivinen
atmos4
parents:
4790
diff
changeset
|
621 (priv->fullmodes[i]->h >= priv->dstheight) ) { |
8054 | 622 imax = i; |
623 for (j = findArrayEnd(priv->fullmodes) - 1; j >=0; j--) { | |
624 if (priv->fullmodes[j]->w > priv->fullmodes[imax]->w | |
625 && priv->fullmodes[j]->h == priv->fullmodes[imax]->h) | |
626 imax = j; | |
627 } | |
628 mode = imax; | |
629 break; | |
630 } | |
3609
c9876f5f4ac5
better fullscreen-mode selection, patch by dunno :)
atmos4
parents:
2249
diff
changeset
|
631 } |
28021
1bbc09f93acb
Remove a lot of completely pointless mp_msg_test calls.
reimar
parents:
27706
diff
changeset
|
632 mp_msg(MSGT_VO,MSGL_V, "SET SDL Mode: %d: %d x %d\n", mode, priv->fullmodes[mode]->w, priv->fullmodes[mode]->h); |
3609
c9876f5f4ac5
better fullscreen-mode selection, patch by dunno :)
atmos4
parents:
2249
diff
changeset
|
633 priv->fullmode = mode; |
4807
156482788caf
osd outside movie support for vo_sdl, patch by Fredrik Kuivinen
atmos4
parents:
4790
diff
changeset
|
634 screen_surface_h = priv->fullmodes[mode]->h; |
156482788caf
osd outside movie support for vo_sdl, patch by Fredrik Kuivinen
atmos4
parents:
4790
diff
changeset
|
635 screen_surface_w = priv->fullmodes[mode]->w; |
156482788caf
osd outside movie support for vo_sdl, patch by Fredrik Kuivinen
atmos4
parents:
4790
diff
changeset
|
636 } |
156482788caf
osd outside movie support for vo_sdl, patch by Fredrik Kuivinen
atmos4
parents:
4790
diff
changeset
|
637 else { |
156482788caf
osd outside movie support for vo_sdl, patch by Fredrik Kuivinen
atmos4
parents:
4790
diff
changeset
|
638 screen_surface_h = priv->fullmodes[mode]->h; |
156482788caf
osd outside movie support for vo_sdl, patch by Fredrik Kuivinen
atmos4
parents:
4790
diff
changeset
|
639 screen_surface_w = priv->fullmodes[mode]->w; |
3609
c9876f5f4ac5
better fullscreen-mode selection, patch by dunno :)
atmos4
parents:
2249
diff
changeset
|
640 } |
29263
0f1b5b68af32
whitespace cosmetics: Remove all trailing whitespace.
diego
parents:
28922
diff
changeset
|
641 |
4807
156482788caf
osd outside movie support for vo_sdl, patch by Fredrik Kuivinen
atmos4
parents:
4790
diff
changeset
|
642 aspect_save_screenres(screen_surface_w, screen_surface_h); |
2249
48f0ac1e9d13
Update to new (cleaner, more bugfree, better) aspect api. vo_gl vo_gl2 and vo_xmga are untested!
atmos4
parents:
2182
diff
changeset
|
643 |
784
dee122f9cdb9
Added full aspect awareness, rewrote fullscreen handling.
atmosfear
parents:
772
diff
changeset
|
644 /* calculate new video size/aspect */ |
4807
156482788caf
osd outside movie support for vo_sdl, patch by Fredrik Kuivinen
atmos4
parents:
4790
diff
changeset
|
645 if(priv->mode == YUV) { |
15212
05aa13cdf92f
replace VO and VF numeric flags with #defined identifiers
henry
parents:
14876
diff
changeset
|
646 if(priv->fulltype&VOFLAG_FULLSCREEN) |
2249
48f0ac1e9d13
Update to new (cleaner, more bugfree, better) aspect api. vo_gl vo_gl2 and vo_xmga are untested!
atmos4
parents:
2182
diff
changeset
|
647 aspect_save_screenres(priv->XWidth, priv->XHeight); |
48f0ac1e9d13
Update to new (cleaner, more bugfree, better) aspect api. vo_gl vo_gl2 and vo_xmga are untested!
atmos4
parents:
2182
diff
changeset
|
648 |
4807
156482788caf
osd outside movie support for vo_sdl, patch by Fredrik Kuivinen
atmos4
parents:
4790
diff
changeset
|
649 aspect(&priv->dstwidth, &priv->dstheight, A_ZOOM); |
784
dee122f9cdb9
Added full aspect awareness, rewrote fullscreen handling.
atmosfear
parents:
772
diff
changeset
|
650 } |
dee122f9cdb9
Added full aspect awareness, rewrote fullscreen handling.
atmosfear
parents:
772
diff
changeset
|
651 |
dee122f9cdb9
Added full aspect awareness, rewrote fullscreen handling.
atmosfear
parents:
772
diff
changeset
|
652 /* try to change to given fullscreenmode */ |
4807
156482788caf
osd outside movie support for vo_sdl, patch by Fredrik Kuivinen
atmos4
parents:
4790
diff
changeset
|
653 newsurface = SDL_SetVideoMode(priv->dstwidth, screen_surface_h, priv->bpp, |
156482788caf
osd outside movie support for vo_sdl, patch by Fredrik Kuivinen
atmos4
parents:
4790
diff
changeset
|
654 priv->sdlfullflags); |
7201
22beff6edf75
Improved MacOS X SDL support, enable SDL main() wrapper for Darwin, remove unused envp.
atmos4
parents:
7124
diff
changeset
|
655 |
22beff6edf75
Improved MacOS X SDL support, enable SDL main() wrapper for Darwin, remove unused envp.
atmos4
parents:
7124
diff
changeset
|
656 /* |
29263
0f1b5b68af32
whitespace cosmetics: Remove all trailing whitespace.
diego
parents:
28922
diff
changeset
|
657 * In Mac OS X (and possibly others?) SDL_SetVideoMode() appears to |
0f1b5b68af32
whitespace cosmetics: Remove all trailing whitespace.
diego
parents:
28922
diff
changeset
|
658 * destroy the datastructure previously retrived, so we need to |
0f1b5b68af32
whitespace cosmetics: Remove all trailing whitespace.
diego
parents:
28922
diff
changeset
|
659 * re-assign it. The comment in sdl_close() seems to imply that we |
7201
22beff6edf75
Improved MacOS X SDL support, enable SDL main() wrapper for Darwin, remove unused envp.
atmos4
parents:
7124
diff
changeset
|
660 * should not free() anything. |
22beff6edf75
Improved MacOS X SDL support, enable SDL main() wrapper for Darwin, remove unused envp.
atmos4
parents:
7124
diff
changeset
|
661 */ |
25397
084619331d92
Replace some more broken SYS_DARWIN preprocessor conditionals with __APPLE__.
diego
parents:
25220
diff
changeset
|
662 #ifdef __APPLE__ |
7201
22beff6edf75
Improved MacOS X SDL support, enable SDL main() wrapper for Darwin, remove unused envp.
atmos4
parents:
7124
diff
changeset
|
663 { |
22beff6edf75
Improved MacOS X SDL support, enable SDL main() wrapper for Darwin, remove unused envp.
atmos4
parents:
7124
diff
changeset
|
664 const SDL_VideoInfo *vidInfo = NULL; |
22beff6edf75
Improved MacOS X SDL support, enable SDL main() wrapper for Darwin, remove unused envp.
atmos4
parents:
7124
diff
changeset
|
665 vidInfo = SDL_GetVideoInfo (); |
22beff6edf75
Improved MacOS X SDL support, enable SDL main() wrapper for Darwin, remove unused envp.
atmos4
parents:
7124
diff
changeset
|
666 |
22beff6edf75
Improved MacOS X SDL support, enable SDL main() wrapper for Darwin, remove unused envp.
atmos4
parents:
7124
diff
changeset
|
667 /* collect all fullscreen & hardware modes available */ |
22beff6edf75
Improved MacOS X SDL support, enable SDL main() wrapper for Darwin, remove unused envp.
atmos4
parents:
7124
diff
changeset
|
668 if (!(priv->fullmodes = SDL_ListModes (vidInfo->vfmt, priv->sdlfullflags))) { |
22beff6edf75
Improved MacOS X SDL support, enable SDL main() wrapper for Darwin, remove unused envp.
atmos4
parents:
7124
diff
changeset
|
669 |
22beff6edf75
Improved MacOS X SDL support, enable SDL main() wrapper for Darwin, remove unused envp.
atmos4
parents:
7124
diff
changeset
|
670 /* non hardware accelerated fullscreen modes */ |
22beff6edf75
Improved MacOS X SDL support, enable SDL main() wrapper for Darwin, remove unused envp.
atmos4
parents:
7124
diff
changeset
|
671 priv->sdlfullflags &= ~SDL_HWSURFACE; |
22beff6edf75
Improved MacOS X SDL support, enable SDL main() wrapper for Darwin, remove unused envp.
atmos4
parents:
7124
diff
changeset
|
672 priv->fullmodes = SDL_ListModes (vidInfo->vfmt, priv->sdlfullflags); |
22beff6edf75
Improved MacOS X SDL support, enable SDL main() wrapper for Darwin, remove unused envp.
atmos4
parents:
7124
diff
changeset
|
673 } |
22beff6edf75
Improved MacOS X SDL support, enable SDL main() wrapper for Darwin, remove unused envp.
atmos4
parents:
7124
diff
changeset
|
674 } |
22beff6edf75
Improved MacOS X SDL support, enable SDL main() wrapper for Darwin, remove unused envp.
atmos4
parents:
7124
diff
changeset
|
675 #endif |
22beff6edf75
Improved MacOS X SDL support, enable SDL main() wrapper for Darwin, remove unused envp.
atmos4
parents:
7124
diff
changeset
|
676 |
22beff6edf75
Improved MacOS X SDL support, enable SDL main() wrapper for Darwin, remove unused envp.
atmos4
parents:
7124
diff
changeset
|
677 |
29263
0f1b5b68af32
whitespace cosmetics: Remove all trailing whitespace.
diego
parents:
28922
diff
changeset
|
678 |
24736 | 679 /* if creation of new surface was successful, save it and hide mouse cursor */ |
784
dee122f9cdb9
Added full aspect awareness, rewrote fullscreen handling.
atmosfear
parents:
772
diff
changeset
|
680 if(newsurface) { |
1126 | 681 if (priv->surface) |
682 SDL_FreeSurface(priv->surface); | |
784
dee122f9cdb9
Added full aspect awareness, rewrote fullscreen handling.
atmosfear
parents:
772
diff
changeset
|
683 priv->surface = newsurface; |
dee122f9cdb9
Added full aspect awareness, rewrote fullscreen handling.
atmosfear
parents:
772
diff
changeset
|
684 SDL_ShowCursor(0); |
4807
156482788caf
osd outside movie support for vo_sdl, patch by Fredrik Kuivinen
atmos4
parents:
4790
diff
changeset
|
685 SDL_SRF_LOCK(priv->surface, -1) |
156482788caf
osd outside movie support for vo_sdl, patch by Fredrik Kuivinen
atmos4
parents:
4790
diff
changeset
|
686 SDL_FillRect(priv->surface, NULL, 0); |
156482788caf
osd outside movie support for vo_sdl, patch by Fredrik Kuivinen
atmos4
parents:
4790
diff
changeset
|
687 SDL_SRF_UNLOCK(priv->surface) |
156482788caf
osd outside movie support for vo_sdl, patch by Fredrik Kuivinen
atmos4
parents:
4790
diff
changeset
|
688 setup_surfaces(); |
29263
0f1b5b68af32
whitespace cosmetics: Remove all trailing whitespace.
diego
parents:
28922
diff
changeset
|
689 } |
4807
156482788caf
osd outside movie support for vo_sdl, patch by Fredrik Kuivinen
atmos4
parents:
4790
diff
changeset
|
690 else |
18234
a107276371a8
Part 5 and final of otvos attila's oattila AT chello-hu mp_msg changes, with lots of corrections
reynaldo
parents:
17932
diff
changeset
|
691 mp_msg(MSGT_VO,MSGL_INFO, MSGTR_LIBVO_SDL_SetVideoModeFailedFull, SDL_GetError()); |
784
dee122f9cdb9
Added full aspect awareness, rewrote fullscreen handling.
atmosfear
parents:
772
diff
changeset
|
692 } |
1126 | 693 |
1 | 694 |
695 /** | |
696 * Initialize an SDL surface and an SDL YUV overlay. | |
697 * | |
698 * params : width == width of video we'll be displaying. | |
699 * height == height of video we'll be displaying. | |
700 * fullscreen == want to be fullscreen? | |
701 * title == Title for window titlebar. | |
702 * returns : non-zero on success, zero on error. | |
703 **/ | |
704 | |
16171
fd51fd1ff231
Fix the return types of all (six) libvo API functions. Used to be uint32_t, but
ivo
parents:
15212
diff
changeset
|
705 static int |
7124
eca7dbad0166
finally removed query_vaa, bes_da and vo_tune_info - the obsoleted libvo api
alex
parents:
7111
diff
changeset
|
706 config(uint32_t width, uint32_t height, uint32_t d_width, uint32_t d_height, uint32_t flags, char *title, uint32_t format) |
1 | 707 //static int sdl_setup (int width, int height) |
708 { | |
709 struct sdl_priv_s *priv = &sdl_priv; | |
772
e70a52f17f92
Added flipped video support and activate/deactivate screensaver under X.
atmosfear
parents:
770
diff
changeset
|
710 |
5239
fe6b890f68f2
Fix crash when playing multiple files. The bug was triggered when the first file
ksorim
parents:
5238
diff
changeset
|
711 switch(format){ |
fe6b890f68f2
Fix crash when playing multiple files. The bug was triggered when the first file
ksorim
parents:
5238
diff
changeset
|
712 case IMGFMT_I420: |
18234
a107276371a8
Part 5 and final of otvos attila's oattila AT chello-hu mp_msg changes, with lots of corrections
reynaldo
parents:
17932
diff
changeset
|
713 mp_msg(MSGT_VO,MSGL_INFO, MSGTR_LIBVO_SDL_MappingI420ToIYUV); |
5239
fe6b890f68f2
Fix crash when playing multiple files. The bug was triggered when the first file
ksorim
parents:
5238
diff
changeset
|
714 format = SDL_IYUV_OVERLAY; |
451
e27a365b0303
fixes osd/subtitle for UYVY image format and steps back to 1.15 changes
atmosfear
parents:
448
diff
changeset
|
715 case IMGFMT_YV12: |
e27a365b0303
fixes osd/subtitle for UYVY image format and steps back to 1.15 changes
atmosfear
parents:
448
diff
changeset
|
716 case IMGFMT_IYUV: |
e27a365b0303
fixes osd/subtitle for UYVY image format and steps back to 1.15 changes
atmosfear
parents:
448
diff
changeset
|
717 case IMGFMT_YUY2: |
e27a365b0303
fixes osd/subtitle for UYVY image format and steps back to 1.15 changes
atmosfear
parents:
448
diff
changeset
|
718 case IMGFMT_UYVY: |
e27a365b0303
fixes osd/subtitle for UYVY image format and steps back to 1.15 changes
atmosfear
parents:
448
diff
changeset
|
719 case IMGFMT_YVYU: |
4807
156482788caf
osd outside movie support for vo_sdl, patch by Fredrik Kuivinen
atmos4
parents:
4790
diff
changeset
|
720 priv->mode = YUV; |
5239
fe6b890f68f2
Fix crash when playing multiple files. The bug was triggered when the first file
ksorim
parents:
5238
diff
changeset
|
721 break; |
29263
0f1b5b68af32
whitespace cosmetics: Remove all trailing whitespace.
diego
parents:
28922
diff
changeset
|
722 case IMGFMT_BGR15: |
0f1b5b68af32
whitespace cosmetics: Remove all trailing whitespace.
diego
parents:
28922
diff
changeset
|
723 case IMGFMT_BGR16: |
0f1b5b68af32
whitespace cosmetics: Remove all trailing whitespace.
diego
parents:
28922
diff
changeset
|
724 case IMGFMT_BGR24: |
0f1b5b68af32
whitespace cosmetics: Remove all trailing whitespace.
diego
parents:
28922
diff
changeset
|
725 case IMGFMT_BGR32: |
635
b9735f811d7d
15,16,24,32Bit rgb/bgr support added, aalib fixed, performance optimizations, code cleanup and so much more...
atmosfear
parents:
616
diff
changeset
|
726 priv->mode = BGR; |
b9735f811d7d
15,16,24,32Bit rgb/bgr support added, aalib fixed, performance optimizations, code cleanup and so much more...
atmosfear
parents:
616
diff
changeset
|
727 break; |
29263
0f1b5b68af32
whitespace cosmetics: Remove all trailing whitespace.
diego
parents:
28922
diff
changeset
|
728 case IMGFMT_RGB15: |
0f1b5b68af32
whitespace cosmetics: Remove all trailing whitespace.
diego
parents:
28922
diff
changeset
|
729 case IMGFMT_RGB16: |
0f1b5b68af32
whitespace cosmetics: Remove all trailing whitespace.
diego
parents:
28922
diff
changeset
|
730 case IMGFMT_RGB24: |
0f1b5b68af32
whitespace cosmetics: Remove all trailing whitespace.
diego
parents:
28922
diff
changeset
|
731 case IMGFMT_RGB32: |
635
b9735f811d7d
15,16,24,32Bit rgb/bgr support added, aalib fixed, performance optimizations, code cleanup and so much more...
atmosfear
parents:
616
diff
changeset
|
732 priv->mode = RGB; |
b9735f811d7d
15,16,24,32Bit rgb/bgr support added, aalib fixed, performance optimizations, code cleanup and so much more...
atmosfear
parents:
616
diff
changeset
|
733 break; |
451
e27a365b0303
fixes osd/subtitle for UYVY image format and steps back to 1.15 changes
atmosfear
parents:
448
diff
changeset
|
734 default: |
18234
a107276371a8
Part 5 and final of otvos attila's oattila AT chello-hu mp_msg changes, with lots of corrections
reynaldo
parents:
17932
diff
changeset
|
735 mp_msg(MSGT_VO,MSGL_WARN, MSGTR_LIBVO_SDL_UnsupportedImageFormat,format); |
451
e27a365b0303
fixes osd/subtitle for UYVY image format and steps back to 1.15 changes
atmosfear
parents:
448
diff
changeset
|
736 return -1; |
e27a365b0303
fixes osd/subtitle for UYVY image format and steps back to 1.15 changes
atmosfear
parents:
448
diff
changeset
|
737 } |
5239
fe6b890f68f2
Fix crash when playing multiple files. The bug was triggered when the first file
ksorim
parents:
5238
diff
changeset
|
738 |
8840
cecb561fcb21
- init & check SDL availability at preinit() (fixes -vo sdl,mga)
arpi
parents:
8246
diff
changeset
|
739 if ( vo_config_count ) sdl_close(); |
cecb561fcb21
- init & check SDL availability at preinit() (fixes -vo sdl,mga)
arpi
parents:
8246
diff
changeset
|
740 |
28021
1bbc09f93acb
Remove a lot of completely pointless mp_msg_test calls.
reimar
parents:
27706
diff
changeset
|
741 mp_msg(MSGT_VO,MSGL_V, "SDL: Using 0x%X (%s) image format\n", format, vo_format_name(format)); |
29263
0f1b5b68af32
whitespace cosmetics: Remove all trailing whitespace.
diego
parents:
28922
diff
changeset
|
742 |
5239
fe6b890f68f2
Fix crash when playing multiple files. The bug was triggered when the first file
ksorim
parents:
5238
diff
changeset
|
743 if(priv->mode != YUV) { |
1219
e169f798ff71
Sync with SF cvs. (Bugfixed YUV aalib and RGB/BGR32 converted modes.)
atmos4
parents:
1197
diff
changeset
|
744 priv->sdlflags |= SDL_ANYFORMAT; |
e169f798ff71
Sync with SF cvs. (Bugfixed YUV aalib and RGB/BGR32 converted modes.)
atmos4
parents:
1197
diff
changeset
|
745 priv->sdlfullflags |= SDL_ANYFORMAT; |
e169f798ff71
Sync with SF cvs. (Bugfixed YUV aalib and RGB/BGR32 converted modes.)
atmos4
parents:
1197
diff
changeset
|
746 } |
1 | 747 |
4807
156482788caf
osd outside movie support for vo_sdl, patch by Fredrik Kuivinen
atmos4
parents:
4790
diff
changeset
|
748 /* SDL can only scale YUV data */ |
156482788caf
osd outside movie support for vo_sdl, patch by Fredrik Kuivinen
atmos4
parents:
4790
diff
changeset
|
749 if(priv->mode == RGB || priv->mode == BGR) { |
156482788caf
osd outside movie support for vo_sdl, patch by Fredrik Kuivinen
atmos4
parents:
4790
diff
changeset
|
750 d_width = width; |
156482788caf
osd outside movie support for vo_sdl, patch by Fredrik Kuivinen
atmos4
parents:
4790
diff
changeset
|
751 d_height = height; |
156482788caf
osd outside movie support for vo_sdl, patch by Fredrik Kuivinen
atmos4
parents:
4790
diff
changeset
|
752 } |
156482788caf
osd outside movie support for vo_sdl, patch by Fredrik Kuivinen
atmos4
parents:
4790
diff
changeset
|
753 |
156482788caf
osd outside movie support for vo_sdl, patch by Fredrik Kuivinen
atmos4
parents:
4790
diff
changeset
|
754 aspect_save_orig(width,height); |
156482788caf
osd outside movie support for vo_sdl, patch by Fredrik Kuivinen
atmos4
parents:
4790
diff
changeset
|
755 aspect_save_prescale(d_width ? d_width : width, d_height ? d_height : height); |
156482788caf
osd outside movie support for vo_sdl, patch by Fredrik Kuivinen
atmos4
parents:
4790
diff
changeset
|
756 |
156482788caf
osd outside movie support for vo_sdl, patch by Fredrik Kuivinen
atmos4
parents:
4790
diff
changeset
|
757 /* Save the original Image size */ |
156482788caf
osd outside movie support for vo_sdl, patch by Fredrik Kuivinen
atmos4
parents:
4790
diff
changeset
|
758 priv->width = width; |
156482788caf
osd outside movie support for vo_sdl, patch by Fredrik Kuivinen
atmos4
parents:
4790
diff
changeset
|
759 priv->height = height; |
156482788caf
osd outside movie support for vo_sdl, patch by Fredrik Kuivinen
atmos4
parents:
4790
diff
changeset
|
760 priv->dstwidth = d_width ? d_width : width; |
156482788caf
osd outside movie support for vo_sdl, patch by Fredrik Kuivinen
atmos4
parents:
4790
diff
changeset
|
761 priv->dstheight = d_height ? d_height : height; |
156482788caf
osd outside movie support for vo_sdl, patch by Fredrik Kuivinen
atmos4
parents:
4790
diff
changeset
|
762 |
5239
fe6b890f68f2
Fix crash when playing multiple files. The bug was triggered when the first file
ksorim
parents:
5238
diff
changeset
|
763 priv->format = format; |
29263
0f1b5b68af32
whitespace cosmetics: Remove all trailing whitespace.
diego
parents:
28922
diff
changeset
|
764 |
1080 | 765 if (sdl_open(NULL, NULL) != 0) |
766 return -1; | |
1 | 767 |
351 | 768 /* Set output window title */ |
2071
7f27b212e07b
Add debug printfs to aspect(), add aspect() usage to vo_sdl.
atmos4
parents:
1710
diff
changeset
|
769 SDL_WM_SetCaption (".: MPlayer : F = Fullscreen/Windowed : C = Cycle Fullscreen Resolutions :.", title); |
635
b9735f811d7d
15,16,24,32Bit rgb/bgr support added, aalib fixed, performance optimizations, code cleanup and so much more...
atmosfear
parents:
616
diff
changeset
|
770 //SDL_WM_SetCaption (title, title); |
351 | 771 |
4807
156482788caf
osd outside movie support for vo_sdl, patch by Fredrik Kuivinen
atmos4
parents:
4790
diff
changeset
|
772 if(priv->X) { |
2249
48f0ac1e9d13
Update to new (cleaner, more bugfree, better) aspect api. vo_gl vo_gl2 and vo_xmga are untested!
atmos4
parents:
2182
diff
changeset
|
773 aspect_save_screenres(priv->XWidth,priv->XHeight); |
48f0ac1e9d13
Update to new (cleaner, more bugfree, better) aspect api. vo_gl vo_gl2 and vo_xmga are untested!
atmos4
parents:
2182
diff
changeset
|
774 aspect(&priv->dstwidth,&priv->dstheight,A_NOZOOM); |
4807
156482788caf
osd outside movie support for vo_sdl, patch by Fredrik Kuivinen
atmos4
parents:
4790
diff
changeset
|
775 } |
29263
0f1b5b68af32
whitespace cosmetics: Remove all trailing whitespace.
diego
parents:
28922
diff
changeset
|
776 |
2249
48f0ac1e9d13
Update to new (cleaner, more bugfree, better) aspect api. vo_gl vo_gl2 and vo_xmga are untested!
atmos4
parents:
2182
diff
changeset
|
777 priv->windowsize.w = priv->dstwidth; |
48f0ac1e9d13
Update to new (cleaner, more bugfree, better) aspect api. vo_gl vo_gl2 and vo_xmga are untested!
atmos4
parents:
2182
diff
changeset
|
778 priv->windowsize.h = priv->dstheight; |
29263
0f1b5b68af32
whitespace cosmetics: Remove all trailing whitespace.
diego
parents:
28922
diff
changeset
|
779 |
355
70833462dee9
- added code to comply with new fullscreen meaning
atmosfear
parents:
354
diff
changeset
|
780 /* bit 0 (0x01) means fullscreen (-fs) |
70833462dee9
- added code to comply with new fullscreen meaning
atmosfear
parents:
354
diff
changeset
|
781 * bit 1 (0x02) means mode switching (-vm) |
70833462dee9
- added code to comply with new fullscreen meaning
atmosfear
parents:
354
diff
changeset
|
782 * bit 2 (0x04) enables software scaling (-zoom) |
772
e70a52f17f92
Added flipped video support and activate/deactivate screensaver under X.
atmosfear
parents:
770
diff
changeset
|
783 * bit 3 (0x08) enables flipping (-flip) |
e70a52f17f92
Added flipped video support and activate/deactivate screensaver under X.
atmosfear
parents:
770
diff
changeset
|
784 */ |
e70a52f17f92
Added flipped video support and activate/deactivate screensaver under X.
atmosfear
parents:
770
diff
changeset
|
785 // printf("SDL: flags are set to: %i\n", flags); |
355
70833462dee9
- added code to comply with new fullscreen meaning
atmosfear
parents:
354
diff
changeset
|
786 // printf("SDL: Width: %i Height: %i D_Width %i D_Height: %i\n", width, height, d_width, d_height); |
15212
05aa13cdf92f
replace VO and VF numeric flags with #defined identifiers
henry
parents:
14876
diff
changeset
|
787 if(flags&VOFLAG_FLIPPING) { |
28021
1bbc09f93acb
Remove a lot of completely pointless mp_msg_test calls.
reimar
parents:
27706
diff
changeset
|
788 mp_msg(MSGT_VO,MSGL_V, "SDL: using flipped video (only with RGB/BGR/packed YUV)\n"); |
29263
0f1b5b68af32
whitespace cosmetics: Remove all trailing whitespace.
diego
parents:
28922
diff
changeset
|
789 priv->flip = 1; |
772
e70a52f17f92
Added flipped video support and activate/deactivate screensaver under X.
atmosfear
parents:
770
diff
changeset
|
790 } |
15212
05aa13cdf92f
replace VO and VF numeric flags with #defined identifiers
henry
parents:
14876
diff
changeset
|
791 if(flags&VOFLAG_FULLSCREEN) { |
28021
1bbc09f93acb
Remove a lot of completely pointless mp_msg_test calls.
reimar
parents:
27706
diff
changeset
|
792 mp_msg(MSGT_VO,MSGL_V, "SDL: setting zoomed fullscreen without modeswitching\n"); |
18234
a107276371a8
Part 5 and final of otvos attila's oattila AT chello-hu mp_msg changes, with lots of corrections
reynaldo
parents:
17932
diff
changeset
|
793 mp_msg(MSGT_VO,MSGL_INFO, MSGTR_LIBVO_SDL_InfoPleaseUseVmOrZoom); |
15212
05aa13cdf92f
replace VO and VF numeric flags with #defined identifiers
henry
parents:
14876
diff
changeset
|
794 priv->fulltype = VOFLAG_FULLSCREEN; |
784
dee122f9cdb9
Added full aspect awareness, rewrote fullscreen handling.
atmosfear
parents:
772
diff
changeset
|
795 set_fullmode(priv->fullmode); |
dee122f9cdb9
Added full aspect awareness, rewrote fullscreen handling.
atmosfear
parents:
772
diff
changeset
|
796 /*if((priv->surface = SDL_SetVideoMode (d_width, d_height, priv->bpp, priv->sdlfullflags))) |
dee122f9cdb9
Added full aspect awareness, rewrote fullscreen handling.
atmosfear
parents:
772
diff
changeset
|
797 SDL_ShowCursor(0);*/ |
29263
0f1b5b68af32
whitespace cosmetics: Remove all trailing whitespace.
diego
parents:
28922
diff
changeset
|
798 } else |
15212
05aa13cdf92f
replace VO and VF numeric flags with #defined identifiers
henry
parents:
14876
diff
changeset
|
799 if(flags&VOFLAG_MODESWITCHING) { |
28021
1bbc09f93acb
Remove a lot of completely pointless mp_msg_test calls.
reimar
parents:
27706
diff
changeset
|
800 mp_msg(MSGT_VO,MSGL_V, "SDL: setting zoomed fullscreen with modeswitching\n"); |
15212
05aa13cdf92f
replace VO and VF numeric flags with #defined identifiers
henry
parents:
14876
diff
changeset
|
801 priv->fulltype = VOFLAG_MODESWITCHING; |
784
dee122f9cdb9
Added full aspect awareness, rewrote fullscreen handling.
atmosfear
parents:
772
diff
changeset
|
802 set_fullmode(priv->fullmode); |
dee122f9cdb9
Added full aspect awareness, rewrote fullscreen handling.
atmosfear
parents:
772
diff
changeset
|
803 /*if((priv->surface = SDL_SetVideoMode (d_width ? d_width : width, d_height ? d_height : height, priv->bpp, priv->sdlfullflags))) |
dee122f9cdb9
Added full aspect awareness, rewrote fullscreen handling.
atmosfear
parents:
772
diff
changeset
|
804 SDL_ShowCursor(0);*/ |
772
e70a52f17f92
Added flipped video support and activate/deactivate screensaver under X.
atmosfear
parents:
770
diff
changeset
|
805 } else |
15212
05aa13cdf92f
replace VO and VF numeric flags with #defined identifiers
henry
parents:
14876
diff
changeset
|
806 if(flags&VOFLAG_SWSCALE) { |
28021
1bbc09f93acb
Remove a lot of completely pointless mp_msg_test calls.
reimar
parents:
27706
diff
changeset
|
807 mp_msg(MSGT_VO,MSGL_V, "SDL: setting zoomed fullscreen with modeswitching\n"); |
15212
05aa13cdf92f
replace VO and VF numeric flags with #defined identifiers
henry
parents:
14876
diff
changeset
|
808 priv->fulltype = VOFLAG_SWSCALE; |
784
dee122f9cdb9
Added full aspect awareness, rewrote fullscreen handling.
atmosfear
parents:
772
diff
changeset
|
809 set_fullmode(priv->fullmode); |
29263
0f1b5b68af32
whitespace cosmetics: Remove all trailing whitespace.
diego
parents:
28922
diff
changeset
|
810 } |
772
e70a52f17f92
Added flipped video support and activate/deactivate screensaver under X.
atmosfear
parents:
770
diff
changeset
|
811 else { |
4925 | 812 if((strcmp(priv->driver, "x11") == 0) |
813 ||(strcmp(priv->driver, "windib") == 0) | |
814 ||(strcmp(priv->driver, "directx") == 0) | |
8246
a8128852c18d
Add Quartz (OS X GUI) to SDL window-capable list, patch by Tomas Hurka <tom at hukatronic.cz>
atmos4
parents:
8149
diff
changeset
|
815 ||(strcmp(priv->driver, "Quartz") == 0) |
10945 | 816 ||(strcmp(priv->driver, "cgx") == 0) |
21734 | 817 ||(strcmp(priv->driver, "os4video") == 0) |
10945 | 818 ||((strcmp(priv->driver, "aalib") == 0) && priv->X)){ |
28021
1bbc09f93acb
Remove a lot of completely pointless mp_msg_test calls.
reimar
parents:
27706
diff
changeset
|
819 mp_msg(MSGT_VO,MSGL_V, "SDL: setting windowed mode\n"); |
4807
156482788caf
osd outside movie support for vo_sdl, patch by Fredrik Kuivinen
atmos4
parents:
4790
diff
changeset
|
820 set_video_mode(priv->dstwidth, priv->dstheight, priv->bpp, priv->sdlflags); |
784
dee122f9cdb9
Added full aspect awareness, rewrote fullscreen handling.
atmosfear
parents:
772
diff
changeset
|
821 } |
dee122f9cdb9
Added full aspect awareness, rewrote fullscreen handling.
atmosfear
parents:
772
diff
changeset
|
822 else { |
28021
1bbc09f93acb
Remove a lot of completely pointless mp_msg_test calls.
reimar
parents:
27706
diff
changeset
|
823 mp_msg(MSGT_VO,MSGL_V, "SDL: setting zoomed fullscreen with modeswitching\n"); |
15212
05aa13cdf92f
replace VO and VF numeric flags with #defined identifiers
henry
parents:
14876
diff
changeset
|
824 priv->fulltype = VOFLAG_SWSCALE; |
784
dee122f9cdb9
Added full aspect awareness, rewrote fullscreen handling.
atmosfear
parents:
772
diff
changeset
|
825 set_fullmode(priv->fullmode); |
29263
0f1b5b68af32
whitespace cosmetics: Remove all trailing whitespace.
diego
parents:
28922
diff
changeset
|
826 } |
772
e70a52f17f92
Added flipped video support and activate/deactivate screensaver under X.
atmosfear
parents:
770
diff
changeset
|
827 } |
e70a52f17f92
Added flipped video support and activate/deactivate screensaver under X.
atmosfear
parents:
770
diff
changeset
|
828 |
635
b9735f811d7d
15,16,24,32Bit rgb/bgr support added, aalib fixed, performance optimizations, code cleanup and so much more...
atmosfear
parents:
616
diff
changeset
|
829 if(!priv->surface) { // cannot SetVideoMode |
18234
a107276371a8
Part 5 and final of otvos attila's oattila AT chello-hu mp_msg changes, with lots of corrections
reynaldo
parents:
17932
diff
changeset
|
830 mp_msg(MSGT_VO,MSGL_WARN, MSGTR_LIBVO_SDL_FailedToSetVideoMode, SDL_GetError()); |
635
b9735f811d7d
15,16,24,32Bit rgb/bgr support added, aalib fixed, performance optimizations, code cleanup and so much more...
atmosfear
parents:
616
diff
changeset
|
831 return -1; |
29263
0f1b5b68af32
whitespace cosmetics: Remove all trailing whitespace.
diego
parents:
28922
diff
changeset
|
832 } |
1 | 833 |
4807
156482788caf
osd outside movie support for vo_sdl, patch by Fredrik Kuivinen
atmos4
parents:
4790
diff
changeset
|
834 return 0; |
156482788caf
osd outside movie support for vo_sdl, patch by Fredrik Kuivinen
atmos4
parents:
4790
diff
changeset
|
835 } |
156482788caf
osd outside movie support for vo_sdl, patch by Fredrik Kuivinen
atmos4
parents:
4790
diff
changeset
|
836 |
156482788caf
osd outside movie support for vo_sdl, patch by Fredrik Kuivinen
atmos4
parents:
4790
diff
changeset
|
837 /* Free priv->rgbsurface or priv->overlay if they are != NULL. |
156482788caf
osd outside movie support for vo_sdl, patch by Fredrik Kuivinen
atmos4
parents:
4790
diff
changeset
|
838 * Setup priv->rgbsurface or priv->overlay depending on source format. |
156482788caf
osd outside movie support for vo_sdl, patch by Fredrik Kuivinen
atmos4
parents:
4790
diff
changeset
|
839 * The size of the created surface or overlay depends on the size of |
156482788caf
osd outside movie support for vo_sdl, patch by Fredrik Kuivinen
atmos4
parents:
4790
diff
changeset
|
840 * priv->surface, priv->width, priv->height, priv->dstwidth and priv->dstheight. |
156482788caf
osd outside movie support for vo_sdl, patch by Fredrik Kuivinen
atmos4
parents:
4790
diff
changeset
|
841 */ |
156482788caf
osd outside movie support for vo_sdl, patch by Fredrik Kuivinen
atmos4
parents:
4790
diff
changeset
|
842 static int setup_surfaces(void) |
156482788caf
osd outside movie support for vo_sdl, patch by Fredrik Kuivinen
atmos4
parents:
4790
diff
changeset
|
843 { |
156482788caf
osd outside movie support for vo_sdl, patch by Fredrik Kuivinen
atmos4
parents:
4790
diff
changeset
|
844 struct sdl_priv_s *priv = &sdl_priv; |
156482788caf
osd outside movie support for vo_sdl, patch by Fredrik Kuivinen
atmos4
parents:
4790
diff
changeset
|
845 float v_scale = ((float) priv->dstheight) / priv->height; |
156482788caf
osd outside movie support for vo_sdl, patch by Fredrik Kuivinen
atmos4
parents:
4790
diff
changeset
|
846 int surfwidth, surfheight; |
156482788caf
osd outside movie support for vo_sdl, patch by Fredrik Kuivinen
atmos4
parents:
4790
diff
changeset
|
847 |
5238
182fc3f585e8
Fix crash when SDL had to do rgb -> rgb conversion. Removed some code
ksorim
parents:
5058
diff
changeset
|
848 surfwidth = priv->width; |
4807
156482788caf
osd outside movie support for vo_sdl, patch by Fredrik Kuivinen
atmos4
parents:
4790
diff
changeset
|
849 surfheight = priv->height + (priv->surface->h - priv->dstheight) / v_scale; |
5358 | 850 surfheight&= ~1; |
4807
156482788caf
osd outside movie support for vo_sdl, patch by Fredrik Kuivinen
atmos4
parents:
4790
diff
changeset
|
851 /* Place the image in the middle of the screen */ |
156482788caf
osd outside movie support for vo_sdl, patch by Fredrik Kuivinen
atmos4
parents:
4790
diff
changeset
|
852 priv->y = (surfheight - priv->height) / 2; |
156482788caf
osd outside movie support for vo_sdl, patch by Fredrik Kuivinen
atmos4
parents:
4790
diff
changeset
|
853 priv->y_screen_top = priv->y * v_scale; |
5313 | 854 priv->y_screen_bottom = priv->y_screen_top + priv->dstheight; |
4807
156482788caf
osd outside movie support for vo_sdl, patch by Fredrik Kuivinen
atmos4
parents:
4790
diff
changeset
|
855 |
156482788caf
osd outside movie support for vo_sdl, patch by Fredrik Kuivinen
atmos4
parents:
4790
diff
changeset
|
856 priv->dirty_off_frame[0].x = -1; |
156482788caf
osd outside movie support for vo_sdl, patch by Fredrik Kuivinen
atmos4
parents:
4790
diff
changeset
|
857 priv->dirty_off_frame[0].y = -1; |
156482788caf
osd outside movie support for vo_sdl, patch by Fredrik Kuivinen
atmos4
parents:
4790
diff
changeset
|
858 priv->dirty_off_frame[1].x = -1; |
156482788caf
osd outside movie support for vo_sdl, patch by Fredrik Kuivinen
atmos4
parents:
4790
diff
changeset
|
859 priv->dirty_off_frame[1].y = -1; |
156482788caf
osd outside movie support for vo_sdl, patch by Fredrik Kuivinen
atmos4
parents:
4790
diff
changeset
|
860 |
156482788caf
osd outside movie support for vo_sdl, patch by Fredrik Kuivinen
atmos4
parents:
4790
diff
changeset
|
861 /* Make sure the entire screen is updated */ |
156482788caf
osd outside movie support for vo_sdl, patch by Fredrik Kuivinen
atmos4
parents:
4790
diff
changeset
|
862 vo_osd_changed(1); |
156482788caf
osd outside movie support for vo_sdl, patch by Fredrik Kuivinen
atmos4
parents:
4790
diff
changeset
|
863 |
156482788caf
osd outside movie support for vo_sdl, patch by Fredrik Kuivinen
atmos4
parents:
4790
diff
changeset
|
864 if(priv->rgbsurface) |
156482788caf
osd outside movie support for vo_sdl, patch by Fredrik Kuivinen
atmos4
parents:
4790
diff
changeset
|
865 SDL_FreeSurface(priv->rgbsurface); |
156482788caf
osd outside movie support for vo_sdl, patch by Fredrik Kuivinen
atmos4
parents:
4790
diff
changeset
|
866 else if(priv->overlay) |
156482788caf
osd outside movie support for vo_sdl, patch by Fredrik Kuivinen
atmos4
parents:
4790
diff
changeset
|
867 SDL_FreeYUVOverlay(priv->overlay); |
156482788caf
osd outside movie support for vo_sdl, patch by Fredrik Kuivinen
atmos4
parents:
4790
diff
changeset
|
868 |
5238
182fc3f585e8
Fix crash when SDL had to do rgb -> rgb conversion. Removed some code
ksorim
parents:
5058
diff
changeset
|
869 priv->rgbsurface = NULL; |
182fc3f585e8
Fix crash when SDL had to do rgb -> rgb conversion. Removed some code
ksorim
parents:
5058
diff
changeset
|
870 priv->overlay = NULL; |
29263
0f1b5b68af32
whitespace cosmetics: Remove all trailing whitespace.
diego
parents:
28922
diff
changeset
|
871 |
5238
182fc3f585e8
Fix crash when SDL had to do rgb -> rgb conversion. Removed some code
ksorim
parents:
5058
diff
changeset
|
872 if(priv->mode != YUV && (priv->format&0xFF) == priv->bpp) { |
182fc3f585e8
Fix crash when SDL had to do rgb -> rgb conversion. Removed some code
ksorim
parents:
5058
diff
changeset
|
873 if(strcmp(priv->driver, "x11") == 0) { |
4807
156482788caf
osd outside movie support for vo_sdl, patch by Fredrik Kuivinen
atmos4
parents:
4790
diff
changeset
|
874 priv->dblit = 1; |
156482788caf
osd outside movie support for vo_sdl, patch by Fredrik Kuivinen
atmos4
parents:
4790
diff
changeset
|
875 priv->framePlaneRGB = priv->width * priv->height * priv->surface->format->BytesPerPixel; |
156482788caf
osd outside movie support for vo_sdl, patch by Fredrik Kuivinen
atmos4
parents:
4790
diff
changeset
|
876 priv->stridePlaneRGB = priv->width * priv->surface->format->BytesPerPixel; |
156482788caf
osd outside movie support for vo_sdl, patch by Fredrik Kuivinen
atmos4
parents:
4790
diff
changeset
|
877 erase_rectangle(0, 0, priv->surface->w, priv->surface->h); |
156482788caf
osd outside movie support for vo_sdl, patch by Fredrik Kuivinen
atmos4
parents:
4790
diff
changeset
|
878 return 0; |
156482788caf
osd outside movie support for vo_sdl, patch by Fredrik Kuivinen
atmos4
parents:
4790
diff
changeset
|
879 } |
156482788caf
osd outside movie support for vo_sdl, patch by Fredrik Kuivinen
atmos4
parents:
4790
diff
changeset
|
880 } |
156482788caf
osd outside movie support for vo_sdl, patch by Fredrik Kuivinen
atmos4
parents:
4790
diff
changeset
|
881 |
156482788caf
osd outside movie support for vo_sdl, patch by Fredrik Kuivinen
atmos4
parents:
4790
diff
changeset
|
882 switch(priv->format) { |
635
b9735f811d7d
15,16,24,32Bit rgb/bgr support added, aalib fixed, performance optimizations, code cleanup and so much more...
atmosfear
parents:
616
diff
changeset
|
883 /* Initialize and create the RGB Surface used for video out in BGR/RGB mode */ |
29263
0f1b5b68af32
whitespace cosmetics: Remove all trailing whitespace.
diego
parents:
28922
diff
changeset
|
884 //SDL_Surface *SDL_CreateRGBSurface(Uint32 flags, int width, int height, int depth, Uint32 Rmask, Uint32 Gmask, Uint32 Bmask, Uint32 Amask); |
635
b9735f811d7d
15,16,24,32Bit rgb/bgr support added, aalib fixed, performance optimizations, code cleanup and so much more...
atmosfear
parents:
616
diff
changeset
|
885 // SDL_SWSURFACE,SDL_HWSURFACE,SDL_SRCCOLORKEY, priv->flags? guess: exchange Rmask and Bmask for BGR<->RGB |
b9735f811d7d
15,16,24,32Bit rgb/bgr support added, aalib fixed, performance optimizations, code cleanup and so much more...
atmosfear
parents:
616
diff
changeset
|
886 // 32 bit: a:ff000000 r:ff000 g:ff00 b:ff |
b9735f811d7d
15,16,24,32Bit rgb/bgr support added, aalib fixed, performance optimizations, code cleanup and so much more...
atmosfear
parents:
616
diff
changeset
|
887 // 24 bit: r:ff0000 g:ff00 b:ff |
b9735f811d7d
15,16,24,32Bit rgb/bgr support added, aalib fixed, performance optimizations, code cleanup and so much more...
atmosfear
parents:
616
diff
changeset
|
888 // 16 bit: r:1111100000000000b g:0000011111100000b b:0000000000011111b |
b9735f811d7d
15,16,24,32Bit rgb/bgr support added, aalib fixed, performance optimizations, code cleanup and so much more...
atmosfear
parents:
616
diff
changeset
|
889 // 15 bit: r:111110000000000b g:000001111100000b b:000000000011111b |
b9735f811d7d
15,16,24,32Bit rgb/bgr support added, aalib fixed, performance optimizations, code cleanup and so much more...
atmosfear
parents:
616
diff
changeset
|
890 // FIXME: colorkey detect based on bpp, FIXME static bpp value, FIXME alpha value correct? |
b9735f811d7d
15,16,24,32Bit rgb/bgr support added, aalib fixed, performance optimizations, code cleanup and so much more...
atmosfear
parents:
616
diff
changeset
|
891 case IMGFMT_RGB15: |
5238
182fc3f585e8
Fix crash when SDL had to do rgb -> rgb conversion. Removed some code
ksorim
parents:
5058
diff
changeset
|
892 priv->rgbsurface = SDL_CreateRGBSurface (SDL_SRCCOLORKEY, surfwidth, surfheight, 15, 31, 992, 31744, 0); |
29263
0f1b5b68af32
whitespace cosmetics: Remove all trailing whitespace.
diego
parents:
28922
diff
changeset
|
893 break; |
635
b9735f811d7d
15,16,24,32Bit rgb/bgr support added, aalib fixed, performance optimizations, code cleanup and so much more...
atmosfear
parents:
616
diff
changeset
|
894 case IMGFMT_BGR15: |
5238
182fc3f585e8
Fix crash when SDL had to do rgb -> rgb conversion. Removed some code
ksorim
parents:
5058
diff
changeset
|
895 priv->rgbsurface = SDL_CreateRGBSurface (SDL_SRCCOLORKEY, surfwidth, surfheight, 15, 31744, 992, 31, 0); |
29263
0f1b5b68af32
whitespace cosmetics: Remove all trailing whitespace.
diego
parents:
28922
diff
changeset
|
896 break; |
635
b9735f811d7d
15,16,24,32Bit rgb/bgr support added, aalib fixed, performance optimizations, code cleanup and so much more...
atmosfear
parents:
616
diff
changeset
|
897 case IMGFMT_RGB16: |
5238
182fc3f585e8
Fix crash when SDL had to do rgb -> rgb conversion. Removed some code
ksorim
parents:
5058
diff
changeset
|
898 priv->rgbsurface = SDL_CreateRGBSurface (SDL_SRCCOLORKEY, surfwidth, surfheight, 16, 31, 2016, 63488, 0); |
29263
0f1b5b68af32
whitespace cosmetics: Remove all trailing whitespace.
diego
parents:
28922
diff
changeset
|
899 break; |
635
b9735f811d7d
15,16,24,32Bit rgb/bgr support added, aalib fixed, performance optimizations, code cleanup and so much more...
atmosfear
parents:
616
diff
changeset
|
900 case IMGFMT_BGR16: |
5238
182fc3f585e8
Fix crash when SDL had to do rgb -> rgb conversion. Removed some code
ksorim
parents:
5058
diff
changeset
|
901 priv->rgbsurface = SDL_CreateRGBSurface (SDL_SRCCOLORKEY, surfwidth, surfheight, 16, 63488, 2016, 31, 0); |
29263
0f1b5b68af32
whitespace cosmetics: Remove all trailing whitespace.
diego
parents:
28922
diff
changeset
|
902 break; |
635
b9735f811d7d
15,16,24,32Bit rgb/bgr support added, aalib fixed, performance optimizations, code cleanup and so much more...
atmosfear
parents:
616
diff
changeset
|
903 case IMGFMT_RGB24: |
5238
182fc3f585e8
Fix crash when SDL had to do rgb -> rgb conversion. Removed some code
ksorim
parents:
5058
diff
changeset
|
904 priv->rgbsurface = SDL_CreateRGBSurface (SDL_SRCCOLORKEY, surfwidth, surfheight, 24, 0x0000FF, 0x00FF00, 0xFF0000, 0); |
29263
0f1b5b68af32
whitespace cosmetics: Remove all trailing whitespace.
diego
parents:
28922
diff
changeset
|
905 break; |
635
b9735f811d7d
15,16,24,32Bit rgb/bgr support added, aalib fixed, performance optimizations, code cleanup and so much more...
atmosfear
parents:
616
diff
changeset
|
906 case IMGFMT_BGR24: |
5238
182fc3f585e8
Fix crash when SDL had to do rgb -> rgb conversion. Removed some code
ksorim
parents:
5058
diff
changeset
|
907 priv->rgbsurface = SDL_CreateRGBSurface (SDL_SRCCOLORKEY, surfwidth, surfheight, 24, 0xFF0000, 0x00FF00, 0x0000FF, 0); |
29263
0f1b5b68af32
whitespace cosmetics: Remove all trailing whitespace.
diego
parents:
28922
diff
changeset
|
908 break; |
635
b9735f811d7d
15,16,24,32Bit rgb/bgr support added, aalib fixed, performance optimizations, code cleanup and so much more...
atmosfear
parents:
616
diff
changeset
|
909 case IMGFMT_RGB32: |
5238
182fc3f585e8
Fix crash when SDL had to do rgb -> rgb conversion. Removed some code
ksorim
parents:
5058
diff
changeset
|
910 priv->rgbsurface = SDL_CreateRGBSurface (SDL_SRCCOLORKEY, surfwidth, surfheight, 32, 0x000000FF, 0x0000FF00, 0x00FF0000, 0/*0xFF000000*/); |
29263
0f1b5b68af32
whitespace cosmetics: Remove all trailing whitespace.
diego
parents:
28922
diff
changeset
|
911 break; |
635
b9735f811d7d
15,16,24,32Bit rgb/bgr support added, aalib fixed, performance optimizations, code cleanup and so much more...
atmosfear
parents:
616
diff
changeset
|
912 case IMGFMT_BGR32: |
5238
182fc3f585e8
Fix crash when SDL had to do rgb -> rgb conversion. Removed some code
ksorim
parents:
5058
diff
changeset
|
913 priv->rgbsurface = SDL_CreateRGBSurface (SDL_SRCCOLORKEY, surfwidth, surfheight, 32, 0x00FF0000, 0x0000FF00, 0x000000FF, 0/*0xFF000000*/); |
29263
0f1b5b68af32
whitespace cosmetics: Remove all trailing whitespace.
diego
parents:
28922
diff
changeset
|
914 break; |
635
b9735f811d7d
15,16,24,32Bit rgb/bgr support added, aalib fixed, performance optimizations, code cleanup and so much more...
atmosfear
parents:
616
diff
changeset
|
915 default: |
b9735f811d7d
15,16,24,32Bit rgb/bgr support added, aalib fixed, performance optimizations, code cleanup and so much more...
atmosfear
parents:
616
diff
changeset
|
916 /* Initialize and create the YUV Overlay used for video out */ |
4807
156482788caf
osd outside movie support for vo_sdl, patch by Fredrik Kuivinen
atmos4
parents:
4790
diff
changeset
|
917 if (!(priv->overlay = SDL_CreateYUVOverlay (surfwidth, surfheight, priv->format, priv->surface))) { |
18234
a107276371a8
Part 5 and final of otvos attila's oattila AT chello-hu mp_msg changes, with lots of corrections
reynaldo
parents:
17932
diff
changeset
|
918 mp_msg(MSGT_VO,MSGL_WARN, MSGTR_LIBVO_SDL_CouldntCreateAYUVOverlay, SDL_GetError()); |
635
b9735f811d7d
15,16,24,32Bit rgb/bgr support added, aalib fixed, performance optimizations, code cleanup and so much more...
atmosfear
parents:
616
diff
changeset
|
919 return -1; |
b9735f811d7d
15,16,24,32Bit rgb/bgr support added, aalib fixed, performance optimizations, code cleanup and so much more...
atmosfear
parents:
616
diff
changeset
|
920 } |
4807
156482788caf
osd outside movie support for vo_sdl, patch by Fredrik Kuivinen
atmos4
parents:
4790
diff
changeset
|
921 priv->framePlaneY = priv->width * priv->height; |
156482788caf
osd outside movie support for vo_sdl, patch by Fredrik Kuivinen
atmos4
parents:
4790
diff
changeset
|
922 priv->framePlaneUV = (priv->width * priv->height) >> 2; |
156482788caf
osd outside movie support for vo_sdl, patch by Fredrik Kuivinen
atmos4
parents:
4790
diff
changeset
|
923 priv->framePlaneYUY = priv->width * priv->height * 2; |
156482788caf
osd outside movie support for vo_sdl, patch by Fredrik Kuivinen
atmos4
parents:
4790
diff
changeset
|
924 priv->stridePlaneY = priv->width; |
156482788caf
osd outside movie support for vo_sdl, patch by Fredrik Kuivinen
atmos4
parents:
4790
diff
changeset
|
925 priv->stridePlaneUV = priv->width/2; |
156482788caf
osd outside movie support for vo_sdl, patch by Fredrik Kuivinen
atmos4
parents:
4790
diff
changeset
|
926 priv->stridePlaneYUY = priv->width * 2; |
1 | 927 } |
29263
0f1b5b68af32
whitespace cosmetics: Remove all trailing whitespace.
diego
parents:
28922
diff
changeset
|
928 |
5238
182fc3f585e8
Fix crash when SDL had to do rgb -> rgb conversion. Removed some code
ksorim
parents:
5058
diff
changeset
|
929 if(priv->mode != YUV) { |
182fc3f585e8
Fix crash when SDL had to do rgb -> rgb conversion. Removed some code
ksorim
parents:
5058
diff
changeset
|
930 if(!priv->rgbsurface) { |
18234
a107276371a8
Part 5 and final of otvos attila's oattila AT chello-hu mp_msg changes, with lots of corrections
reynaldo
parents:
17932
diff
changeset
|
931 mp_msg(MSGT_VO,MSGL_WARN, MSGTR_LIBVO_SDL_CouldntCreateARGBSurface, SDL_GetError()); |
5238
182fc3f585e8
Fix crash when SDL had to do rgb -> rgb conversion. Removed some code
ksorim
parents:
5058
diff
changeset
|
932 return -1; |
182fc3f585e8
Fix crash when SDL had to do rgb -> rgb conversion. Removed some code
ksorim
parents:
5058
diff
changeset
|
933 } |
182fc3f585e8
Fix crash when SDL had to do rgb -> rgb conversion. Removed some code
ksorim
parents:
5058
diff
changeset
|
934 |
182fc3f585e8
Fix crash when SDL had to do rgb -> rgb conversion. Removed some code
ksorim
parents:
5058
diff
changeset
|
935 priv->dblit = 0; |
182fc3f585e8
Fix crash when SDL had to do rgb -> rgb conversion. Removed some code
ksorim
parents:
5058
diff
changeset
|
936 |
182fc3f585e8
Fix crash when SDL had to do rgb -> rgb conversion. Removed some code
ksorim
parents:
5058
diff
changeset
|
937 if((priv->format&0xFF) != priv->bpp) |
18234
a107276371a8
Part 5 and final of otvos attila's oattila AT chello-hu mp_msg changes, with lots of corrections
reynaldo
parents:
17932
diff
changeset
|
938 mp_msg(MSGT_VO,MSGL_INFO, MSGTR_LIBVO_SDL_UsingDepthColorspaceConversion, priv->format&0xFF, priv->bpp); |
5238
182fc3f585e8
Fix crash when SDL had to do rgb -> rgb conversion. Removed some code
ksorim
parents:
5058
diff
changeset
|
939 |
182fc3f585e8
Fix crash when SDL had to do rgb -> rgb conversion. Removed some code
ksorim
parents:
5058
diff
changeset
|
940 priv->framePlaneRGB = priv->width * priv->height * priv->rgbsurface->format->BytesPerPixel; |
182fc3f585e8
Fix crash when SDL had to do rgb -> rgb conversion. Removed some code
ksorim
parents:
5058
diff
changeset
|
941 priv->stridePlaneRGB = priv->width * priv->rgbsurface->format->BytesPerPixel; |
182fc3f585e8
Fix crash when SDL had to do rgb -> rgb conversion. Removed some code
ksorim
parents:
5058
diff
changeset
|
942 } |
29263
0f1b5b68af32
whitespace cosmetics: Remove all trailing whitespace.
diego
parents:
28922
diff
changeset
|
943 |
4807
156482788caf
osd outside movie support for vo_sdl, patch by Fredrik Kuivinen
atmos4
parents:
4790
diff
changeset
|
944 erase_rectangle(0, 0, surfwidth, surfheight); |
156482788caf
osd outside movie support for vo_sdl, patch by Fredrik Kuivinen
atmos4
parents:
4790
diff
changeset
|
945 |
1 | 946 return 0; |
947 } | |
948 | |
949 | |
950 /** | |
951 * Draw a frame to the SDL YUV overlay. | |
952 * | |
953 * params : *src[] == the Y, U, and V planes that make up the frame. | |
954 * returns : non-zero on success, zero on error. | |
955 **/ | |
956 | |
957 //static int sdl_draw_frame (frame_t *frame) | |
16171
fd51fd1ff231
Fix the return types of all (six) libvo API functions. Used to be uint32_t, but
ivo
parents:
15212
diff
changeset
|
958 static int draw_frame(uint8_t *src[]) |
1 | 959 { |
960 struct sdl_priv_s *priv = &sdl_priv; | |
961 uint8_t *dst; | |
772
e70a52f17f92
Added flipped video support and activate/deactivate screensaver under X.
atmosfear
parents:
770
diff
changeset
|
962 int i; |
e70a52f17f92
Added flipped video support and activate/deactivate screensaver under X.
atmosfear
parents:
770
diff
changeset
|
963 uint8_t *mysrc = src[0]; |
2071
7f27b212e07b
Add debug printfs to aspect(), add aspect() usage to vo_sdl.
atmos4
parents:
1710
diff
changeset
|
964 |
5313 | 965 switch(priv->format){ |
1 | 966 case IMGFMT_YUY2: |
408 | 967 case IMGFMT_UYVY: |
968 case IMGFMT_YVYU: | |
4807
156482788caf
osd outside movie support for vo_sdl, patch by Fredrik Kuivinen
atmos4
parents:
4790
diff
changeset
|
969 SDL_OVR_LOCK(-1) |
156482788caf
osd outside movie support for vo_sdl, patch by Fredrik Kuivinen
atmos4
parents:
4790
diff
changeset
|
970 dst = (uint8_t *) *(priv->overlay->pixels) + priv->overlay->pitches[0]*priv->y; |
784
dee122f9cdb9
Added full aspect awareness, rewrote fullscreen handling.
atmosfear
parents:
772
diff
changeset
|
971 if(priv->flip) { |
dee122f9cdb9
Added full aspect awareness, rewrote fullscreen handling.
atmosfear
parents:
772
diff
changeset
|
972 mysrc+=priv->framePlaneYUY; |
dee122f9cdb9
Added full aspect awareness, rewrote fullscreen handling.
atmosfear
parents:
772
diff
changeset
|
973 for(i = 0; i < priv->height; i++) { |
dee122f9cdb9
Added full aspect awareness, rewrote fullscreen handling.
atmosfear
parents:
772
diff
changeset
|
974 mysrc-=priv->stridePlaneYUY; |
23457
a124f3abc1ec
Replace implicit use of fast_memcpy via macro by explicit use to allow
reimar
parents:
22823
diff
changeset
|
975 fast_memcpy (dst, mysrc, priv->stridePlaneYUY); |
4807
156482788caf
osd outside movie support for vo_sdl, patch by Fredrik Kuivinen
atmos4
parents:
4790
diff
changeset
|
976 dst+=priv->overlay->pitches[0]; |
784
dee122f9cdb9
Added full aspect awareness, rewrote fullscreen handling.
atmosfear
parents:
772
diff
changeset
|
977 } |
dee122f9cdb9
Added full aspect awareness, rewrote fullscreen handling.
atmosfear
parents:
772
diff
changeset
|
978 } |
23457
a124f3abc1ec
Replace implicit use of fast_memcpy via macro by explicit use to allow
reimar
parents:
22823
diff
changeset
|
979 else fast_memcpy (dst, src[0], priv->framePlaneYUY); |
1197 | 980 SDL_OVR_UNLOCK |
1 | 981 break; |
29263
0f1b5b68af32
whitespace cosmetics: Remove all trailing whitespace.
diego
parents:
28922
diff
changeset
|
982 |
635
b9735f811d7d
15,16,24,32Bit rgb/bgr support added, aalib fixed, performance optimizations, code cleanup and so much more...
atmosfear
parents:
616
diff
changeset
|
983 case IMGFMT_RGB15: |
29263
0f1b5b68af32
whitespace cosmetics: Remove all trailing whitespace.
diego
parents:
28922
diff
changeset
|
984 case IMGFMT_BGR15: |
635
b9735f811d7d
15,16,24,32Bit rgb/bgr support added, aalib fixed, performance optimizations, code cleanup and so much more...
atmosfear
parents:
616
diff
changeset
|
985 case IMGFMT_RGB16: |
29263
0f1b5b68af32
whitespace cosmetics: Remove all trailing whitespace.
diego
parents:
28922
diff
changeset
|
986 case IMGFMT_BGR16: |
635
b9735f811d7d
15,16,24,32Bit rgb/bgr support added, aalib fixed, performance optimizations, code cleanup and so much more...
atmosfear
parents:
616
diff
changeset
|
987 case IMGFMT_RGB24: |
29263
0f1b5b68af32
whitespace cosmetics: Remove all trailing whitespace.
diego
parents:
28922
diff
changeset
|
988 case IMGFMT_BGR24: |
635
b9735f811d7d
15,16,24,32Bit rgb/bgr support added, aalib fixed, performance optimizations, code cleanup and so much more...
atmosfear
parents:
616
diff
changeset
|
989 case IMGFMT_RGB32: |
b9735f811d7d
15,16,24,32Bit rgb/bgr support added, aalib fixed, performance optimizations, code cleanup and so much more...
atmosfear
parents:
616
diff
changeset
|
990 case IMGFMT_BGR32: |
1219
e169f798ff71
Sync with SF cvs. (Bugfixed YUV aalib and RGB/BGR32 converted modes.)
atmos4
parents:
1197
diff
changeset
|
991 if(priv->dblit) { |
4807
156482788caf
osd outside movie support for vo_sdl, patch by Fredrik Kuivinen
atmos4
parents:
4790
diff
changeset
|
992 SDL_SRF_LOCK(priv->surface, -1) |
7692 | 993 dst = (uint8_t *) priv->surface->pixels + priv->y*priv->surface->pitch; |
1194
40550e1458e8
Drastic! speedup of rgb code. Removed nonsens memhole fixes.
atmosfear
parents:
1188
diff
changeset
|
994 if(priv->flip) { |
40550e1458e8
Drastic! speedup of rgb code. Removed nonsens memhole fixes.
atmosfear
parents:
1188
diff
changeset
|
995 mysrc+=priv->framePlaneRGB; |
40550e1458e8
Drastic! speedup of rgb code. Removed nonsens memhole fixes.
atmosfear
parents:
1188
diff
changeset
|
996 for(i = 0; i < priv->height; i++) { |
40550e1458e8
Drastic! speedup of rgb code. Removed nonsens memhole fixes.
atmosfear
parents:
1188
diff
changeset
|
997 mysrc-=priv->stridePlaneRGB; |
23457
a124f3abc1ec
Replace implicit use of fast_memcpy via macro by explicit use to allow
reimar
parents:
22823
diff
changeset
|
998 fast_memcpy (dst, mysrc, priv->stridePlaneRGB); |
4807
156482788caf
osd outside movie support for vo_sdl, patch by Fredrik Kuivinen
atmos4
parents:
4790
diff
changeset
|
999 dst += priv->surface->pitch; |
1194
40550e1458e8
Drastic! speedup of rgb code. Removed nonsens memhole fixes.
atmosfear
parents:
1188
diff
changeset
|
1000 } |
823
e09c92ca4c45
Added ability to use direct surface blitting for BGR modes.
atmosfear
parents:
784
diff
changeset
|
1001 } |
23457
a124f3abc1ec
Replace implicit use of fast_memcpy via macro by explicit use to allow
reimar
parents:
22823
diff
changeset
|
1002 else fast_memcpy (dst, src[0], priv->framePlaneRGB); |
1197 | 1003 SDL_SRF_UNLOCK(priv->surface) |
1194
40550e1458e8
Drastic! speedup of rgb code. Removed nonsens memhole fixes.
atmosfear
parents:
1188
diff
changeset
|
1004 } else { |
4807
156482788caf
osd outside movie support for vo_sdl, patch by Fredrik Kuivinen
atmos4
parents:
4790
diff
changeset
|
1005 SDL_SRF_LOCK(priv->rgbsurface, -1) |
156482788caf
osd outside movie support for vo_sdl, patch by Fredrik Kuivinen
atmos4
parents:
4790
diff
changeset
|
1006 dst = (uint8_t *) priv->rgbsurface->pixels + priv->y*priv->rgbsurface->pitch; |
1194
40550e1458e8
Drastic! speedup of rgb code. Removed nonsens memhole fixes.
atmosfear
parents:
1188
diff
changeset
|
1007 if(priv->flip) { |
40550e1458e8
Drastic! speedup of rgb code. Removed nonsens memhole fixes.
atmosfear
parents:
1188
diff
changeset
|
1008 mysrc+=priv->framePlaneRGB; |
40550e1458e8
Drastic! speedup of rgb code. Removed nonsens memhole fixes.
atmosfear
parents:
1188
diff
changeset
|
1009 for(i = 0; i < priv->height; i++) { |
40550e1458e8
Drastic! speedup of rgb code. Removed nonsens memhole fixes.
atmosfear
parents:
1188
diff
changeset
|
1010 mysrc-=priv->stridePlaneRGB; |
23457
a124f3abc1ec
Replace implicit use of fast_memcpy via macro by explicit use to allow
reimar
parents:
22823
diff
changeset
|
1011 fast_memcpy (dst, mysrc, priv->stridePlaneRGB); |
4807
156482788caf
osd outside movie support for vo_sdl, patch by Fredrik Kuivinen
atmos4
parents:
4790
diff
changeset
|
1012 dst += priv->rgbsurface->pitch; |
1194
40550e1458e8
Drastic! speedup of rgb code. Removed nonsens memhole fixes.
atmosfear
parents:
1188
diff
changeset
|
1013 } |
40550e1458e8
Drastic! speedup of rgb code. Removed nonsens memhole fixes.
atmosfear
parents:
1188
diff
changeset
|
1014 } |
23457
a124f3abc1ec
Replace implicit use of fast_memcpy via macro by explicit use to allow
reimar
parents:
22823
diff
changeset
|
1015 else fast_memcpy (dst, src[0], priv->framePlaneRGB); |
1197 | 1016 SDL_SRF_UNLOCK(priv->rgbsurface) |
823
e09c92ca4c45
Added ability to use direct surface blitting for BGR modes.
atmosfear
parents:
784
diff
changeset
|
1017 } |
635
b9735f811d7d
15,16,24,32Bit rgb/bgr support added, aalib fixed, performance optimizations, code cleanup and so much more...
atmosfear
parents:
616
diff
changeset
|
1018 break; |
b9735f811d7d
15,16,24,32Bit rgb/bgr support added, aalib fixed, performance optimizations, code cleanup and so much more...
atmosfear
parents:
616
diff
changeset
|
1019 |
1 | 1020 } |
29263
0f1b5b68af32
whitespace cosmetics: Remove all trailing whitespace.
diego
parents:
28922
diff
changeset
|
1021 |
1 | 1022 return 0; |
1023 } | |
1024 | |
1025 | |
1026 /** | |
1027 * Draw a slice (16 rows of image) to the SDL YUV overlay. | |
1028 * | |
1029 * params : *src[] == the Y, U, and V planes that make up the slice. | |
1030 * returns : non-zero on error, zero on success. | |
1031 **/ | |
1032 | |
1033 //static uint32_t draw_slice(uint8_t *src[], uint32_t slice_num) | |
16171
fd51fd1ff231
Fix the return types of all (six) libvo API functions. Used to be uint32_t, but
ivo
parents:
15212
diff
changeset
|
1034 static int draw_slice(uint8_t *image[], int stride[], int w,int h,int x,int y) |
1 | 1035 { |
1036 struct sdl_priv_s *priv = &sdl_priv; | |
1037 uint8_t *dst; | |
1038 | |
4807
156482788caf
osd outside movie support for vo_sdl, patch by Fredrik Kuivinen
atmos4
parents:
4790
diff
changeset
|
1039 SDL_OVR_LOCK(-1) |
1 | 1040 |
4807
156482788caf
osd outside movie support for vo_sdl, patch by Fredrik Kuivinen
atmos4
parents:
4790
diff
changeset
|
1041 y += priv->y; |
29263
0f1b5b68af32
whitespace cosmetics: Remove all trailing whitespace.
diego
parents:
28922
diff
changeset
|
1042 |
4807
156482788caf
osd outside movie support for vo_sdl, patch by Fredrik Kuivinen
atmos4
parents:
4790
diff
changeset
|
1043 dst = priv->overlay->pixels[0] + priv->overlay->pitches[0]*y + x; |
7692 | 1044 memcpy_pic(dst, image[0], w, h, priv->overlay->pitches[0], stride[0]); |
1045 x/=2;y/=2;w/=2;h/=2; | |
1 | 1046 |
5460
acf7acfa7acc
Fix I420 handling, though still don't know why divx4 codec queries for I420 not YUY2!
atmos4
parents:
5385
diff
changeset
|
1047 switch(priv->format) { |
acf7acfa7acc
Fix I420 handling, though still don't know why divx4 codec queries for I420 not YUY2!
atmos4
parents:
5385
diff
changeset
|
1048 case IMGFMT_YV12: |
acf7acfa7acc
Fix I420 handling, though still don't know why divx4 codec queries for I420 not YUY2!
atmos4
parents:
5385
diff
changeset
|
1049 dst = priv->overlay->pixels[2] + priv->overlay->pitches[2]*y + x; |
7692 | 1050 memcpy_pic(dst, image[1], w, h, priv->overlay->pitches[2], stride[1]); |
1051 | |
5460
acf7acfa7acc
Fix I420 handling, though still don't know why divx4 codec queries for I420 not YUY2!
atmos4
parents:
5385
diff
changeset
|
1052 dst = priv->overlay->pixels[1] + priv->overlay->pitches[1]*y + x; |
7692 | 1053 memcpy_pic(dst, image[2], w, h, priv->overlay->pitches[1], stride[2]); |
1054 | |
5460
acf7acfa7acc
Fix I420 handling, though still don't know why divx4 codec queries for I420 not YUY2!
atmos4
parents:
5385
diff
changeset
|
1055 break; |
7692 | 1056 case IMGFMT_I420: |
5460
acf7acfa7acc
Fix I420 handling, though still don't know why divx4 codec queries for I420 not YUY2!
atmos4
parents:
5385
diff
changeset
|
1057 case IMGFMT_IYUV: |
acf7acfa7acc
Fix I420 handling, though still don't know why divx4 codec queries for I420 not YUY2!
atmos4
parents:
5385
diff
changeset
|
1058 dst = priv->overlay->pixels[1] + priv->overlay->pitches[1]*y + x; |
7692 | 1059 memcpy_pic(dst, image[1], w, h, priv->overlay->pitches[1], stride[1]); |
1 | 1060 |
5460
acf7acfa7acc
Fix I420 handling, though still don't know why divx4 codec queries for I420 not YUY2!
atmos4
parents:
5385
diff
changeset
|
1061 dst = priv->overlay->pixels[2] + priv->overlay->pitches[2]*y + x; |
7692 | 1062 memcpy_pic(dst, image[2], w, h, priv->overlay->pitches[2], stride[2]); |
1063 | |
5460
acf7acfa7acc
Fix I420 handling, though still don't know why divx4 codec queries for I420 not YUY2!
atmos4
parents:
5385
diff
changeset
|
1064 break; |
acf7acfa7acc
Fix I420 handling, though still don't know why divx4 codec queries for I420 not YUY2!
atmos4
parents:
5385
diff
changeset
|
1065 default: |
18234
a107276371a8
Part 5 and final of otvos attila's oattila AT chello-hu mp_msg changes, with lots of corrections
reynaldo
parents:
17932
diff
changeset
|
1066 mp_msg(MSGT_VO,MSGL_WARN, MSGTR_LIBVO_SDL_UnsupportedImageFormatInDrawslice); |
5460
acf7acfa7acc
Fix I420 handling, though still don't know why divx4 codec queries for I420 not YUY2!
atmos4
parents:
5385
diff
changeset
|
1067 } |
acf7acfa7acc
Fix I420 handling, though still don't know why divx4 codec queries for I420 not YUY2!
atmos4
parents:
5385
diff
changeset
|
1068 |
1197 | 1069 SDL_OVR_UNLOCK |
1 | 1070 |
1071 return 0; | |
1072 } | |
1073 | |
1074 | |
1075 | |
1076 /** | |
1077 * Checks for SDL keypress and window resize events | |
1078 * | |
1079 * params : none | |
1080 * returns : doesn't return | |
1081 **/ | |
1082 | |
1083 static void check_events (void) | |
1084 { | |
1085 struct sdl_priv_s *priv = &sdl_priv; | |
1086 SDL_Event event; | |
27706 | 1087 SDLKey keypressed = SDLK_UNKNOWN; |
29263
0f1b5b68af32
whitespace cosmetics: Remove all trailing whitespace.
diego
parents:
28922
diff
changeset
|
1088 |
1 | 1089 /* Poll the waiting SDL Events */ |
1090 while ( SDL_PollEvent(&event) ) { | |
1091 switch (event.type) { | |
1092 | |
1093 /* capture window resize events */ | |
1094 case SDL_VIDEORESIZE: | |
4807
156482788caf
osd outside movie support for vo_sdl, patch by Fredrik Kuivinen
atmos4
parents:
4790
diff
changeset
|
1095 if(!priv->dblit) |
156482788caf
osd outside movie support for vo_sdl, patch by Fredrik Kuivinen
atmos4
parents:
4790
diff
changeset
|
1096 set_video_mode(event.resize.w, event.resize.h, priv->bpp, priv->sdlflags); |
1 | 1097 |
1098 /* save video extents, to restore them after going fullscreen */ | |
1099 //if(!(priv->surface->flags & SDL_FULLSCREEN)) { | |
1100 priv->windowsize.w = priv->surface->w; | |
1101 priv->windowsize.h = priv->surface->h; | |
1102 //} | |
28021
1bbc09f93acb
Remove a lot of completely pointless mp_msg_test calls.
reimar
parents:
27706
diff
changeset
|
1103 mp_msg(MSGT_VO,MSGL_DBG3, "SDL: Window resize\n"); |
1 | 1104 break; |
29263
0f1b5b68af32
whitespace cosmetics: Remove all trailing whitespace.
diego
parents:
28922
diff
changeset
|
1105 |
1 | 1106 /* graphics mode selection shortcuts */ |
635
b9735f811d7d
15,16,24,32Bit rgb/bgr support added, aalib fixed, performance optimizations, code cleanup and so much more...
atmosfear
parents:
616
diff
changeset
|
1107 case SDL_KEYDOWN: |
1 | 1108 keypressed = event.key.keysym.sym; |
28021
1bbc09f93acb
Remove a lot of completely pointless mp_msg_test calls.
reimar
parents:
27706
diff
changeset
|
1109 mp_msg(MSGT_VO,MSGL_DBG2, "SDL: Key pressed: '%i'\n", keypressed); |
265
1d02e6f7c63a
Only small change to allow pausing of movie (p or SPACE).
atmosfear
parents:
97
diff
changeset
|
1110 |
357 | 1111 /* c key pressed. c cycles through available fullscreenmodes, if we have some */ |
355
70833462dee9
- added code to comply with new fullscreen meaning
atmosfear
parents:
354
diff
changeset
|
1112 if ( ((keypressed == SDLK_c)) && (priv->fullmodes) ) { |
1 | 1113 /* select next fullscreen mode */ |
1114 priv->fullmode++; | |
1115 if (priv->fullmode > (findArrayEnd(priv->fullmodes) - 1)) priv->fullmode = 0; | |
1116 set_fullmode(priv->fullmode); | |
29263
0f1b5b68af32
whitespace cosmetics: Remove all trailing whitespace.
diego
parents:
28922
diff
changeset
|
1117 |
28021
1bbc09f93acb
Remove a lot of completely pointless mp_msg_test calls.
reimar
parents:
27706
diff
changeset
|
1118 mp_msg(MSGT_VO,MSGL_DBG2, "SDL: Set next available fullscreen mode.\n"); |
1 | 1119 } |
1120 | |
1396
3c7f13cb0a8a
Added double/normal resize patch by Wojtek Kaniewski <wojtekka at bydg.pdi.net>
atmos4
parents:
1238
diff
changeset
|
1121 else if ( keypressed == SDLK_n ) { |
27377
d58d06eafe83
Change a bunch of X11-specific preprocessor directives.
diego
parents:
26739
diff
changeset
|
1122 #ifdef CONFIG_X11 |
2249
48f0ac1e9d13
Update to new (cleaner, more bugfree, better) aspect api. vo_gl vo_gl2 and vo_xmga are untested!
atmos4
parents:
2182
diff
changeset
|
1123 aspect(&priv->dstwidth, &priv->dstheight,A_NOZOOM); |
29263
0f1b5b68af32
whitespace cosmetics: Remove all trailing whitespace.
diego
parents:
28922
diff
changeset
|
1124 #endif |
2249
48f0ac1e9d13
Update to new (cleaner, more bugfree, better) aspect api. vo_gl vo_gl2 and vo_xmga are untested!
atmos4
parents:
2182
diff
changeset
|
1125 if (priv->surface->w != priv->dstwidth || priv->surface->h != priv->dstheight) { |
4807
156482788caf
osd outside movie support for vo_sdl, patch by Fredrik Kuivinen
atmos4
parents:
4790
diff
changeset
|
1126 set_video_mode(priv->dstwidth, priv->dstheight, priv->bpp, priv->sdlflags); |
1396
3c7f13cb0a8a
Added double/normal resize patch by Wojtek Kaniewski <wojtekka at bydg.pdi.net>
atmos4
parents:
1238
diff
changeset
|
1127 priv->windowsize.w = priv->surface->w; |
3c7f13cb0a8a
Added double/normal resize patch by Wojtek Kaniewski <wojtekka at bydg.pdi.net>
atmos4
parents:
1238
diff
changeset
|
1128 priv->windowsize.h = priv->surface->h; |
28021
1bbc09f93acb
Remove a lot of completely pointless mp_msg_test calls.
reimar
parents:
27706
diff
changeset
|
1129 mp_msg(MSGT_VO,MSGL_DBG2, "SDL: Normal size\n"); |
1509
f9beae70c5c2
Removed D key for doublesize, already clobbered by framedrop.
atmos4
parents:
1501
diff
changeset
|
1130 } else |
2249
48f0ac1e9d13
Update to new (cleaner, more bugfree, better) aspect api. vo_gl vo_gl2 and vo_xmga are untested!
atmos4
parents:
2182
diff
changeset
|
1131 if (priv->surface->w != priv->dstwidth * 2 || priv->surface->h != priv->dstheight * 2) { |
4807
156482788caf
osd outside movie support for vo_sdl, patch by Fredrik Kuivinen
atmos4
parents:
4790
diff
changeset
|
1132 set_video_mode(priv->dstwidth * 2, priv->dstheight * 2, priv->bpp, priv->sdlflags); |
1396
3c7f13cb0a8a
Added double/normal resize patch by Wojtek Kaniewski <wojtekka at bydg.pdi.net>
atmos4
parents:
1238
diff
changeset
|
1133 priv->windowsize.w = priv->surface->w; |
3c7f13cb0a8a
Added double/normal resize patch by Wojtek Kaniewski <wojtekka at bydg.pdi.net>
atmos4
parents:
1238
diff
changeset
|
1134 priv->windowsize.h = priv->surface->h; |
28021
1bbc09f93acb
Remove a lot of completely pointless mp_msg_test calls.
reimar
parents:
27706
diff
changeset
|
1135 mp_msg(MSGT_VO,MSGL_DBG2, "SDL: Double size\n"); |
1396
3c7f13cb0a8a
Added double/normal resize patch by Wojtek Kaniewski <wojtekka at bydg.pdi.net>
atmos4
parents:
1238
diff
changeset
|
1136 } |
29263
0f1b5b68af32
whitespace cosmetics: Remove all trailing whitespace.
diego
parents:
28922
diff
changeset
|
1137 } |
1509
f9beae70c5c2
Removed D key for doublesize, already clobbered by framedrop.
atmos4
parents:
1501
diff
changeset
|
1138 |
31032
362425fe3de8
Add sdl_common file and use it to share the input handling between -vo gl
reimar
parents:
31025
diff
changeset
|
1139 else sdl_default_handle_event(&event); |
29263
0f1b5b68af32
whitespace cosmetics: Remove all trailing whitespace.
diego
parents:
28922
diff
changeset
|
1140 |
1 | 1141 break; |
31032
362425fe3de8
Add sdl_common file and use it to share the input handling between -vo gl
reimar
parents:
31025
diff
changeset
|
1142 default: sdl_default_handle_event(&event); break; |
1 | 1143 } |
1144 } | |
1145 } | |
1146 | |
4807
156482788caf
osd outside movie support for vo_sdl, patch by Fredrik Kuivinen
atmos4
parents:
4790
diff
changeset
|
1147 /* Erase (paint it black) the rectangle specified by x, y, w and h in the surface |
156482788caf
osd outside movie support for vo_sdl, patch by Fredrik Kuivinen
atmos4
parents:
4790
diff
changeset
|
1148 or overlay which is used for OSD |
156482788caf
osd outside movie support for vo_sdl, patch by Fredrik Kuivinen
atmos4
parents:
4790
diff
changeset
|
1149 */ |
156482788caf
osd outside movie support for vo_sdl, patch by Fredrik Kuivinen
atmos4
parents:
4790
diff
changeset
|
1150 static void erase_rectangle(int x, int y, int w, int h) |
156482788caf
osd outside movie support for vo_sdl, patch by Fredrik Kuivinen
atmos4
parents:
4790
diff
changeset
|
1151 { |
156482788caf
osd outside movie support for vo_sdl, patch by Fredrik Kuivinen
atmos4
parents:
4790
diff
changeset
|
1152 struct sdl_priv_s *priv = &sdl_priv; |
156482788caf
osd outside movie support for vo_sdl, patch by Fredrik Kuivinen
atmos4
parents:
4790
diff
changeset
|
1153 |
156482788caf
osd outside movie support for vo_sdl, patch by Fredrik Kuivinen
atmos4
parents:
4790
diff
changeset
|
1154 switch(priv->format) { |
29263
0f1b5b68af32
whitespace cosmetics: Remove all trailing whitespace.
diego
parents:
28922
diff
changeset
|
1155 case IMGFMT_YV12: |
4807
156482788caf
osd outside movie support for vo_sdl, patch by Fredrik Kuivinen
atmos4
parents:
4790
diff
changeset
|
1156 case IMGFMT_I420: |
156482788caf
osd outside movie support for vo_sdl, patch by Fredrik Kuivinen
atmos4
parents:
4790
diff
changeset
|
1157 case IMGFMT_IYUV: |
156482788caf
osd outside movie support for vo_sdl, patch by Fredrik Kuivinen
atmos4
parents:
4790
diff
changeset
|
1158 { |
156482788caf
osd outside movie support for vo_sdl, patch by Fredrik Kuivinen
atmos4
parents:
4790
diff
changeset
|
1159 SDL_OVR_LOCK((void) 0) |
29263
0f1b5b68af32
whitespace cosmetics: Remove all trailing whitespace.
diego
parents:
28922
diff
changeset
|
1160 |
4807
156482788caf
osd outside movie support for vo_sdl, patch by Fredrik Kuivinen
atmos4
parents:
4790
diff
changeset
|
1161 /* Erase Y plane */ |
156482788caf
osd outside movie support for vo_sdl, patch by Fredrik Kuivinen
atmos4
parents:
4790
diff
changeset
|
1162 erase_area_1(x, w, h, |
156482788caf
osd outside movie support for vo_sdl, patch by Fredrik Kuivinen
atmos4
parents:
4790
diff
changeset
|
1163 priv->overlay->pitches[0], 0, |
156482788caf
osd outside movie support for vo_sdl, patch by Fredrik Kuivinen
atmos4
parents:
4790
diff
changeset
|
1164 priv->overlay->pixels[0] + |
156482788caf
osd outside movie support for vo_sdl, patch by Fredrik Kuivinen
atmos4
parents:
4790
diff
changeset
|
1165 priv->overlay->pitches[0]*y); |
29263
0f1b5b68af32
whitespace cosmetics: Remove all trailing whitespace.
diego
parents:
28922
diff
changeset
|
1166 |
4807
156482788caf
osd outside movie support for vo_sdl, patch by Fredrik Kuivinen
atmos4
parents:
4790
diff
changeset
|
1167 /* Erase U and V planes */ |
156482788caf
osd outside movie support for vo_sdl, patch by Fredrik Kuivinen
atmos4
parents:
4790
diff
changeset
|
1168 w /= 2; |
156482788caf
osd outside movie support for vo_sdl, patch by Fredrik Kuivinen
atmos4
parents:
4790
diff
changeset
|
1169 x /= 2; |
156482788caf
osd outside movie support for vo_sdl, patch by Fredrik Kuivinen
atmos4
parents:
4790
diff
changeset
|
1170 h /= 2; |
156482788caf
osd outside movie support for vo_sdl, patch by Fredrik Kuivinen
atmos4
parents:
4790
diff
changeset
|
1171 y /= 2; |
29263
0f1b5b68af32
whitespace cosmetics: Remove all trailing whitespace.
diego
parents:
28922
diff
changeset
|
1172 |
4807
156482788caf
osd outside movie support for vo_sdl, patch by Fredrik Kuivinen
atmos4
parents:
4790
diff
changeset
|
1173 erase_area_1(x, w, h, |
156482788caf
osd outside movie support for vo_sdl, patch by Fredrik Kuivinen
atmos4
parents:
4790
diff
changeset
|
1174 priv->overlay->pitches[1], 128, |
156482788caf
osd outside movie support for vo_sdl, patch by Fredrik Kuivinen
atmos4
parents:
4790
diff
changeset
|
1175 priv->overlay->pixels[1] + |
156482788caf
osd outside movie support for vo_sdl, patch by Fredrik Kuivinen
atmos4
parents:
4790
diff
changeset
|
1176 priv->overlay->pitches[1]*y); |
29263
0f1b5b68af32
whitespace cosmetics: Remove all trailing whitespace.
diego
parents:
28922
diff
changeset
|
1177 |
4807
156482788caf
osd outside movie support for vo_sdl, patch by Fredrik Kuivinen
atmos4
parents:
4790
diff
changeset
|
1178 erase_area_1(x, w, h, |
156482788caf
osd outside movie support for vo_sdl, patch by Fredrik Kuivinen
atmos4
parents:
4790
diff
changeset
|
1179 priv->overlay->pitches[2], 128, |
156482788caf
osd outside movie support for vo_sdl, patch by Fredrik Kuivinen
atmos4
parents:
4790
diff
changeset
|
1180 priv->overlay->pixels[2] + |
156482788caf
osd outside movie support for vo_sdl, patch by Fredrik Kuivinen
atmos4
parents:
4790
diff
changeset
|
1181 priv->overlay->pitches[2]*y); |
156482788caf
osd outside movie support for vo_sdl, patch by Fredrik Kuivinen
atmos4
parents:
4790
diff
changeset
|
1182 SDL_OVR_UNLOCK |
156482788caf
osd outside movie support for vo_sdl, patch by Fredrik Kuivinen
atmos4
parents:
4790
diff
changeset
|
1183 break; |
156482788caf
osd outside movie support for vo_sdl, patch by Fredrik Kuivinen
atmos4
parents:
4790
diff
changeset
|
1184 } |
156482788caf
osd outside movie support for vo_sdl, patch by Fredrik Kuivinen
atmos4
parents:
4790
diff
changeset
|
1185 |
156482788caf
osd outside movie support for vo_sdl, patch by Fredrik Kuivinen
atmos4
parents:
4790
diff
changeset
|
1186 case IMGFMT_YUY2: |
156482788caf
osd outside movie support for vo_sdl, patch by Fredrik Kuivinen
atmos4
parents:
4790
diff
changeset
|
1187 case IMGFMT_YVYU: |
156482788caf
osd outside movie support for vo_sdl, patch by Fredrik Kuivinen
atmos4
parents:
4790
diff
changeset
|
1188 { |
156482788caf
osd outside movie support for vo_sdl, patch by Fredrik Kuivinen
atmos4
parents:
4790
diff
changeset
|
1189 /* yuy2 and yvyu represent black the same way */ |
156482788caf
osd outside movie support for vo_sdl, patch by Fredrik Kuivinen
atmos4
parents:
4790
diff
changeset
|
1190 uint8_t yuy2_black[] = {0, 128, 0, 128}; |
156482788caf
osd outside movie support for vo_sdl, patch by Fredrik Kuivinen
atmos4
parents:
4790
diff
changeset
|
1191 |
156482788caf
osd outside movie support for vo_sdl, patch by Fredrik Kuivinen
atmos4
parents:
4790
diff
changeset
|
1192 SDL_OVR_LOCK((void) 0) |
156482788caf
osd outside movie support for vo_sdl, patch by Fredrik Kuivinen
atmos4
parents:
4790
diff
changeset
|
1193 erase_area_4(x*2, w*2, h, |
156482788caf
osd outside movie support for vo_sdl, patch by Fredrik Kuivinen
atmos4
parents:
4790
diff
changeset
|
1194 priv->overlay->pitches[0], |
156482788caf
osd outside movie support for vo_sdl, patch by Fredrik Kuivinen
atmos4
parents:
4790
diff
changeset
|
1195 *((uint32_t*) yuy2_black), |
156482788caf
osd outside movie support for vo_sdl, patch by Fredrik Kuivinen
atmos4
parents:
4790
diff
changeset
|
1196 priv->overlay->pixels[0] + |
156482788caf
osd outside movie support for vo_sdl, patch by Fredrik Kuivinen
atmos4
parents:
4790
diff
changeset
|
1197 priv->overlay->pitches[0]*y); |
156482788caf
osd outside movie support for vo_sdl, patch by Fredrik Kuivinen
atmos4
parents:
4790
diff
changeset
|
1198 SDL_OVR_UNLOCK |
156482788caf
osd outside movie support for vo_sdl, patch by Fredrik Kuivinen
atmos4
parents:
4790
diff
changeset
|
1199 break; |
156482788caf
osd outside movie support for vo_sdl, patch by Fredrik Kuivinen
atmos4
parents:
4790
diff
changeset
|
1200 } |
29263
0f1b5b68af32
whitespace cosmetics: Remove all trailing whitespace.
diego
parents:
28922
diff
changeset
|
1201 |
4807
156482788caf
osd outside movie support for vo_sdl, patch by Fredrik Kuivinen
atmos4
parents:
4790
diff
changeset
|
1202 case IMGFMT_UYVY: |
156482788caf
osd outside movie support for vo_sdl, patch by Fredrik Kuivinen
atmos4
parents:
4790
diff
changeset
|
1203 { |
156482788caf
osd outside movie support for vo_sdl, patch by Fredrik Kuivinen
atmos4
parents:
4790
diff
changeset
|
1204 uint8_t uyvy_black[] = {128, 0, 128, 0}; |
156482788caf
osd outside movie support for vo_sdl, patch by Fredrik Kuivinen
atmos4
parents:
4790
diff
changeset
|
1205 |
156482788caf
osd outside movie support for vo_sdl, patch by Fredrik Kuivinen
atmos4
parents:
4790
diff
changeset
|
1206 SDL_OVR_LOCK((void) 0) |
156482788caf
osd outside movie support for vo_sdl, patch by Fredrik Kuivinen
atmos4
parents:
4790
diff
changeset
|
1207 erase_area_4(x*2, w*2, h, |
156482788caf
osd outside movie support for vo_sdl, patch by Fredrik Kuivinen
atmos4
parents:
4790
diff
changeset
|
1208 priv->overlay->pitches[0], |
156482788caf
osd outside movie support for vo_sdl, patch by Fredrik Kuivinen
atmos4
parents:
4790
diff
changeset
|
1209 *((uint32_t*) uyvy_black), |
156482788caf
osd outside movie support for vo_sdl, patch by Fredrik Kuivinen
atmos4
parents:
4790
diff
changeset
|
1210 priv->overlay->pixels[0] + |
156482788caf
osd outside movie support for vo_sdl, patch by Fredrik Kuivinen
atmos4
parents:
4790
diff
changeset
|
1211 priv->overlay->pitches[0]*y); |
156482788caf
osd outside movie support for vo_sdl, patch by Fredrik Kuivinen
atmos4
parents:
4790
diff
changeset
|
1212 SDL_OVR_UNLOCK |
156482788caf
osd outside movie support for vo_sdl, patch by Fredrik Kuivinen
atmos4
parents:
4790
diff
changeset
|
1213 break; |
156482788caf
osd outside movie support for vo_sdl, patch by Fredrik Kuivinen
atmos4
parents:
4790
diff
changeset
|
1214 } |
29263
0f1b5b68af32
whitespace cosmetics: Remove all trailing whitespace.
diego
parents:
28922
diff
changeset
|
1215 |
4807
156482788caf
osd outside movie support for vo_sdl, patch by Fredrik Kuivinen
atmos4
parents:
4790
diff
changeset
|
1216 case IMGFMT_RGB15: |
156482788caf
osd outside movie support for vo_sdl, patch by Fredrik Kuivinen
atmos4
parents:
4790
diff
changeset
|
1217 case IMGFMT_BGR15: |
156482788caf
osd outside movie support for vo_sdl, patch by Fredrik Kuivinen
atmos4
parents:
4790
diff
changeset
|
1218 case IMGFMT_RGB16: |
156482788caf
osd outside movie support for vo_sdl, patch by Fredrik Kuivinen
atmos4
parents:
4790
diff
changeset
|
1219 case IMGFMT_BGR16: |
156482788caf
osd outside movie support for vo_sdl, patch by Fredrik Kuivinen
atmos4
parents:
4790
diff
changeset
|
1220 case IMGFMT_RGB24: |
156482788caf
osd outside movie support for vo_sdl, patch by Fredrik Kuivinen
atmos4
parents:
4790
diff
changeset
|
1221 case IMGFMT_BGR24: |
156482788caf
osd outside movie support for vo_sdl, patch by Fredrik Kuivinen
atmos4
parents:
4790
diff
changeset
|
1222 case IMGFMT_RGB32: |
156482788caf
osd outside movie support for vo_sdl, patch by Fredrik Kuivinen
atmos4
parents:
4790
diff
changeset
|
1223 case IMGFMT_BGR32: |
156482788caf
osd outside movie support for vo_sdl, patch by Fredrik Kuivinen
atmos4
parents:
4790
diff
changeset
|
1224 { |
156482788caf
osd outside movie support for vo_sdl, patch by Fredrik Kuivinen
atmos4
parents:
4790
diff
changeset
|
1225 SDL_Rect rect; |
156482788caf
osd outside movie support for vo_sdl, patch by Fredrik Kuivinen
atmos4
parents:
4790
diff
changeset
|
1226 rect.w = w; rect.h = h; |
156482788caf
osd outside movie support for vo_sdl, patch by Fredrik Kuivinen
atmos4
parents:
4790
diff
changeset
|
1227 rect.x = x; rect.y = y; |
156482788caf
osd outside movie support for vo_sdl, patch by Fredrik Kuivinen
atmos4
parents:
4790
diff
changeset
|
1228 |
156482788caf
osd outside movie support for vo_sdl, patch by Fredrik Kuivinen
atmos4
parents:
4790
diff
changeset
|
1229 if(priv->dblit) { |
156482788caf
osd outside movie support for vo_sdl, patch by Fredrik Kuivinen
atmos4
parents:
4790
diff
changeset
|
1230 SDL_SRF_LOCK(priv->surface, (void) 0) |
156482788caf
osd outside movie support for vo_sdl, patch by Fredrik Kuivinen
atmos4
parents:
4790
diff
changeset
|
1231 SDL_FillRect(priv->surface, &rect, 0); |
156482788caf
osd outside movie support for vo_sdl, patch by Fredrik Kuivinen
atmos4
parents:
4790
diff
changeset
|
1232 SDL_SRF_UNLOCK(priv->surface) |
156482788caf
osd outside movie support for vo_sdl, patch by Fredrik Kuivinen
atmos4
parents:
4790
diff
changeset
|
1233 } |
156482788caf
osd outside movie support for vo_sdl, patch by Fredrik Kuivinen
atmos4
parents:
4790
diff
changeset
|
1234 else { |
156482788caf
osd outside movie support for vo_sdl, patch by Fredrik Kuivinen
atmos4
parents:
4790
diff
changeset
|
1235 SDL_SRF_LOCK(priv->rgbsurface, (void) 0) |
156482788caf
osd outside movie support for vo_sdl, patch by Fredrik Kuivinen
atmos4
parents:
4790
diff
changeset
|
1236 SDL_FillRect(priv->rgbsurface, &rect, 0); |
156482788caf
osd outside movie support for vo_sdl, patch by Fredrik Kuivinen
atmos4
parents:
4790
diff
changeset
|
1237 SDL_SRF_UNLOCK(priv->rgbsurface) |
156482788caf
osd outside movie support for vo_sdl, patch by Fredrik Kuivinen
atmos4
parents:
4790
diff
changeset
|
1238 } |
156482788caf
osd outside movie support for vo_sdl, patch by Fredrik Kuivinen
atmos4
parents:
4790
diff
changeset
|
1239 break; |
156482788caf
osd outside movie support for vo_sdl, patch by Fredrik Kuivinen
atmos4
parents:
4790
diff
changeset
|
1240 } |
156482788caf
osd outside movie support for vo_sdl, patch by Fredrik Kuivinen
atmos4
parents:
4790
diff
changeset
|
1241 } |
156482788caf
osd outside movie support for vo_sdl, patch by Fredrik Kuivinen
atmos4
parents:
4790
diff
changeset
|
1242 } |
156482788caf
osd outside movie support for vo_sdl, patch by Fredrik Kuivinen
atmos4
parents:
4790
diff
changeset
|
1243 |
1501
d40f2b686846
changes according to -utf8 option, draw_osd() function added
atlka
parents:
1396
diff
changeset
|
1244 static void draw_osd(void) |
d40f2b686846
changes according to -utf8 option, draw_osd() function added
atlka
parents:
1396
diff
changeset
|
1245 { struct sdl_priv_s *priv = &sdl_priv; |
d40f2b686846
changes according to -utf8 option, draw_osd() function added
atlka
parents:
1396
diff
changeset
|
1246 |
4807
156482788caf
osd outside movie support for vo_sdl, patch by Fredrik Kuivinen
atmos4
parents:
4790
diff
changeset
|
1247 priv->osd_has_changed = vo_osd_changed(0); |
156482788caf
osd outside movie support for vo_sdl, patch by Fredrik Kuivinen
atmos4
parents:
4790
diff
changeset
|
1248 |
156482788caf
osd outside movie support for vo_sdl, patch by Fredrik Kuivinen
atmos4
parents:
4790
diff
changeset
|
1249 if(priv->osd_has_changed) |
156482788caf
osd outside movie support for vo_sdl, patch by Fredrik Kuivinen
atmos4
parents:
4790
diff
changeset
|
1250 { |
156482788caf
osd outside movie support for vo_sdl, patch by Fredrik Kuivinen
atmos4
parents:
4790
diff
changeset
|
1251 int i; |
29263
0f1b5b68af32
whitespace cosmetics: Remove all trailing whitespace.
diego
parents:
28922
diff
changeset
|
1252 |
4807
156482788caf
osd outside movie support for vo_sdl, patch by Fredrik Kuivinen
atmos4
parents:
4790
diff
changeset
|
1253 for(i = 0; i < 2; i++) { |
156482788caf
osd outside movie support for vo_sdl, patch by Fredrik Kuivinen
atmos4
parents:
4790
diff
changeset
|
1254 if(priv->dirty_off_frame[i].x < 0 || priv->dirty_off_frame[i].y < 0) |
156482788caf
osd outside movie support for vo_sdl, patch by Fredrik Kuivinen
atmos4
parents:
4790
diff
changeset
|
1255 continue; |
156482788caf
osd outside movie support for vo_sdl, patch by Fredrik Kuivinen
atmos4
parents:
4790
diff
changeset
|
1256 |
156482788caf
osd outside movie support for vo_sdl, patch by Fredrik Kuivinen
atmos4
parents:
4790
diff
changeset
|
1257 erase_rectangle(priv->dirty_off_frame[i].x, priv->dirty_off_frame[i].y, |
156482788caf
osd outside movie support for vo_sdl, patch by Fredrik Kuivinen
atmos4
parents:
4790
diff
changeset
|
1258 priv->dirty_off_frame[i].w, priv->dirty_off_frame[i].h); |
29263
0f1b5b68af32
whitespace cosmetics: Remove all trailing whitespace.
diego
parents:
28922
diff
changeset
|
1259 |
4807
156482788caf
osd outside movie support for vo_sdl, patch by Fredrik Kuivinen
atmos4
parents:
4790
diff
changeset
|
1260 priv->dirty_off_frame[i].x = -1; |
156482788caf
osd outside movie support for vo_sdl, patch by Fredrik Kuivinen
atmos4
parents:
4790
diff
changeset
|
1261 priv->dirty_off_frame[i].y = -1; |
156482788caf
osd outside movie support for vo_sdl, patch by Fredrik Kuivinen
atmos4
parents:
4790
diff
changeset
|
1262 } |
156482788caf
osd outside movie support for vo_sdl, patch by Fredrik Kuivinen
atmos4
parents:
4790
diff
changeset
|
1263 } |
29263
0f1b5b68af32
whitespace cosmetics: Remove all trailing whitespace.
diego
parents:
28922
diff
changeset
|
1264 |
1501
d40f2b686846
changes according to -utf8 option, draw_osd() function added
atlka
parents:
1396
diff
changeset
|
1265 /* update osd/subtitles */ |
4807
156482788caf
osd outside movie support for vo_sdl, patch by Fredrik Kuivinen
atmos4
parents:
4790
diff
changeset
|
1266 if(priv->mode == YUV) |
156482788caf
osd outside movie support for vo_sdl, patch by Fredrik Kuivinen
atmos4
parents:
4790
diff
changeset
|
1267 vo_draw_text(priv->overlay->w, priv->overlay->h, draw_alpha); |
156482788caf
osd outside movie support for vo_sdl, patch by Fredrik Kuivinen
atmos4
parents:
4790
diff
changeset
|
1268 else { |
156482788caf
osd outside movie support for vo_sdl, patch by Fredrik Kuivinen
atmos4
parents:
4790
diff
changeset
|
1269 if(priv->dblit) |
156482788caf
osd outside movie support for vo_sdl, patch by Fredrik Kuivinen
atmos4
parents:
4790
diff
changeset
|
1270 vo_draw_text(priv->surface->w, priv->surface->h, draw_alpha); |
156482788caf
osd outside movie support for vo_sdl, patch by Fredrik Kuivinen
atmos4
parents:
4790
diff
changeset
|
1271 else |
156482788caf
osd outside movie support for vo_sdl, patch by Fredrik Kuivinen
atmos4
parents:
4790
diff
changeset
|
1272 vo_draw_text(priv->rgbsurface->w, priv->rgbsurface->h, draw_alpha); |
156482788caf
osd outside movie support for vo_sdl, patch by Fredrik Kuivinen
atmos4
parents:
4790
diff
changeset
|
1273 } |
156482788caf
osd outside movie support for vo_sdl, patch by Fredrik Kuivinen
atmos4
parents:
4790
diff
changeset
|
1274 } |
156482788caf
osd outside movie support for vo_sdl, patch by Fredrik Kuivinen
atmos4
parents:
4790
diff
changeset
|
1275 |
156482788caf
osd outside movie support for vo_sdl, patch by Fredrik Kuivinen
atmos4
parents:
4790
diff
changeset
|
1276 /* Fill area beginning at 'pixels' with 'color'. 'x_start', 'width' and 'pitch' |
156482788caf
osd outside movie support for vo_sdl, patch by Fredrik Kuivinen
atmos4
parents:
4790
diff
changeset
|
1277 * are given in bytes. 4 bytes at a time. |
156482788caf
osd outside movie support for vo_sdl, patch by Fredrik Kuivinen
atmos4
parents:
4790
diff
changeset
|
1278 */ |
156482788caf
osd outside movie support for vo_sdl, patch by Fredrik Kuivinen
atmos4
parents:
4790
diff
changeset
|
1279 static void erase_area_4(int x_start, int width, int height, int pitch, uint32_t color, uint8_t* pixels) |
156482788caf
osd outside movie support for vo_sdl, patch by Fredrik Kuivinen
atmos4
parents:
4790
diff
changeset
|
1280 { |
156482788caf
osd outside movie support for vo_sdl, patch by Fredrik Kuivinen
atmos4
parents:
4790
diff
changeset
|
1281 int x_end = x_start/4 + width/4; |
156482788caf
osd outside movie support for vo_sdl, patch by Fredrik Kuivinen
atmos4
parents:
4790
diff
changeset
|
1282 int x, y; |
156482788caf
osd outside movie support for vo_sdl, patch by Fredrik Kuivinen
atmos4
parents:
4790
diff
changeset
|
1283 uint32_t* data = (uint32_t*) pixels; |
29263
0f1b5b68af32
whitespace cosmetics: Remove all trailing whitespace.
diego
parents:
28922
diff
changeset
|
1284 |
4807
156482788caf
osd outside movie support for vo_sdl, patch by Fredrik Kuivinen
atmos4
parents:
4790
diff
changeset
|
1285 x_start /= 4; |
156482788caf
osd outside movie support for vo_sdl, patch by Fredrik Kuivinen
atmos4
parents:
4790
diff
changeset
|
1286 pitch /= 4; |
156482788caf
osd outside movie support for vo_sdl, patch by Fredrik Kuivinen
atmos4
parents:
4790
diff
changeset
|
1287 |
156482788caf
osd outside movie support for vo_sdl, patch by Fredrik Kuivinen
atmos4
parents:
4790
diff
changeset
|
1288 for(y = 0; y < height; y++) { |
156482788caf
osd outside movie support for vo_sdl, patch by Fredrik Kuivinen
atmos4
parents:
4790
diff
changeset
|
1289 for(x = x_start; x < x_end; x++) |
156482788caf
osd outside movie support for vo_sdl, patch by Fredrik Kuivinen
atmos4
parents:
4790
diff
changeset
|
1290 data[y*pitch + x] = color; |
156482788caf
osd outside movie support for vo_sdl, patch by Fredrik Kuivinen
atmos4
parents:
4790
diff
changeset
|
1291 } |
156482788caf
osd outside movie support for vo_sdl, patch by Fredrik Kuivinen
atmos4
parents:
4790
diff
changeset
|
1292 } |
156482788caf
osd outside movie support for vo_sdl, patch by Fredrik Kuivinen
atmos4
parents:
4790
diff
changeset
|
1293 |
156482788caf
osd outside movie support for vo_sdl, patch by Fredrik Kuivinen
atmos4
parents:
4790
diff
changeset
|
1294 /* Fill area beginning at 'pixels' with 'color'. 'x_start', 'width' and 'pitch' |
156482788caf
osd outside movie support for vo_sdl, patch by Fredrik Kuivinen
atmos4
parents:
4790
diff
changeset
|
1295 * are given in bytes. 1 byte at a time. |
156482788caf
osd outside movie support for vo_sdl, patch by Fredrik Kuivinen
atmos4
parents:
4790
diff
changeset
|
1296 */ |
156482788caf
osd outside movie support for vo_sdl, patch by Fredrik Kuivinen
atmos4
parents:
4790
diff
changeset
|
1297 static void erase_area_1(int x_start, int width, int height, int pitch, uint8_t color, uint8_t* pixels) |
156482788caf
osd outside movie support for vo_sdl, patch by Fredrik Kuivinen
atmos4
parents:
4790
diff
changeset
|
1298 { |
156482788caf
osd outside movie support for vo_sdl, patch by Fredrik Kuivinen
atmos4
parents:
4790
diff
changeset
|
1299 int y; |
29263
0f1b5b68af32
whitespace cosmetics: Remove all trailing whitespace.
diego
parents:
28922
diff
changeset
|
1300 |
4807
156482788caf
osd outside movie support for vo_sdl, patch by Fredrik Kuivinen
atmos4
parents:
4790
diff
changeset
|
1301 for(y = 0; y < height; y++) { |
156482788caf
osd outside movie support for vo_sdl, patch by Fredrik Kuivinen
atmos4
parents:
4790
diff
changeset
|
1302 memset(&pixels[y*pitch + x_start], color, width); |
156482788caf
osd outside movie support for vo_sdl, patch by Fredrik Kuivinen
atmos4
parents:
4790
diff
changeset
|
1303 } |
1501
d40f2b686846
changes according to -utf8 option, draw_osd() function added
atlka
parents:
1396
diff
changeset
|
1304 } |
1 | 1305 |
1306 /** | |
1501
d40f2b686846
changes according to -utf8 option, draw_osd() function added
atlka
parents:
1396
diff
changeset
|
1307 * Display the surface we have written our data to |
1 | 1308 * |
1309 * params : mode == index of the desired fullscreen mode | |
1310 * returns : doesn't return | |
1311 **/ | |
1312 | |
1313 static void flip_page (void) | |
1314 { | |
1315 struct sdl_priv_s *priv = &sdl_priv; | |
1316 | |
635
b9735f811d7d
15,16,24,32Bit rgb/bgr support added, aalib fixed, performance optimizations, code cleanup and so much more...
atmosfear
parents:
616
diff
changeset
|
1317 switch(priv->format) { |
b9735f811d7d
15,16,24,32Bit rgb/bgr support added, aalib fixed, performance optimizations, code cleanup and so much more...
atmosfear
parents:
616
diff
changeset
|
1318 case IMGFMT_RGB15: |
29263
0f1b5b68af32
whitespace cosmetics: Remove all trailing whitespace.
diego
parents:
28922
diff
changeset
|
1319 case IMGFMT_BGR15: |
635
b9735f811d7d
15,16,24,32Bit rgb/bgr support added, aalib fixed, performance optimizations, code cleanup and so much more...
atmosfear
parents:
616
diff
changeset
|
1320 case IMGFMT_RGB16: |
29263
0f1b5b68af32
whitespace cosmetics: Remove all trailing whitespace.
diego
parents:
28922
diff
changeset
|
1321 case IMGFMT_BGR16: |
635
b9735f811d7d
15,16,24,32Bit rgb/bgr support added, aalib fixed, performance optimizations, code cleanup and so much more...
atmosfear
parents:
616
diff
changeset
|
1322 case IMGFMT_RGB24: |
29263
0f1b5b68af32
whitespace cosmetics: Remove all trailing whitespace.
diego
parents:
28922
diff
changeset
|
1323 case IMGFMT_BGR24: |
635
b9735f811d7d
15,16,24,32Bit rgb/bgr support added, aalib fixed, performance optimizations, code cleanup and so much more...
atmosfear
parents:
616
diff
changeset
|
1324 case IMGFMT_RGB32: |
b9735f811d7d
15,16,24,32Bit rgb/bgr support added, aalib fixed, performance optimizations, code cleanup and so much more...
atmosfear
parents:
616
diff
changeset
|
1325 case IMGFMT_BGR32: |
1219
e169f798ff71
Sync with SF cvs. (Bugfixed YUV aalib and RGB/BGR32 converted modes.)
atmos4
parents:
1197
diff
changeset
|
1326 if(!priv->dblit) { |
1194
40550e1458e8
Drastic! speedup of rgb code. Removed nonsens memhole fixes.
atmosfear
parents:
1188
diff
changeset
|
1327 /* blit to the RGB surface */ |
40550e1458e8
Drastic! speedup of rgb code. Removed nonsens memhole fixes.
atmosfear
parents:
1188
diff
changeset
|
1328 if(SDL_BlitSurface (priv->rgbsurface, NULL, priv->surface, NULL)) |
18234
a107276371a8
Part 5 and final of otvos attila's oattila AT chello-hu mp_msg changes, with lots of corrections
reynaldo
parents:
17932
diff
changeset
|
1329 mp_msg(MSGT_VO,MSGL_WARN, MSGTR_LIBVO_SDL_BlitFailed, SDL_GetError()); |
1194
40550e1458e8
Drastic! speedup of rgb code. Removed nonsens memhole fixes.
atmosfear
parents:
1188
diff
changeset
|
1330 } |
1 | 1331 |
635
b9735f811d7d
15,16,24,32Bit rgb/bgr support added, aalib fixed, performance optimizations, code cleanup and so much more...
atmosfear
parents:
616
diff
changeset
|
1332 /* update screen */ |
784
dee122f9cdb9
Added full aspect awareness, rewrote fullscreen handling.
atmosfear
parents:
772
diff
changeset
|
1333 //SDL_UpdateRect(priv->surface, 0, 0, priv->surface->clip_rect.w, priv->surface->clip_rect.h); |
4807
156482788caf
osd outside movie support for vo_sdl, patch by Fredrik Kuivinen
atmos4
parents:
4790
diff
changeset
|
1334 if(priv->osd_has_changed) { |
156482788caf
osd outside movie support for vo_sdl, patch by Fredrik Kuivinen
atmos4
parents:
4790
diff
changeset
|
1335 priv->osd_has_changed = 0; |
784
dee122f9cdb9
Added full aspect awareness, rewrote fullscreen handling.
atmosfear
parents:
772
diff
changeset
|
1336 SDL_UpdateRects(priv->surface, 1, &priv->surface->clip_rect); |
4807
156482788caf
osd outside movie support for vo_sdl, patch by Fredrik Kuivinen
atmos4
parents:
4790
diff
changeset
|
1337 } |
156482788caf
osd outside movie support for vo_sdl, patch by Fredrik Kuivinen
atmos4
parents:
4790
diff
changeset
|
1338 else |
156482788caf
osd outside movie support for vo_sdl, patch by Fredrik Kuivinen
atmos4
parents:
4790
diff
changeset
|
1339 SDL_UpdateRect(priv->surface, 0, priv->y_screen_top, |
156482788caf
osd outside movie support for vo_sdl, patch by Fredrik Kuivinen
atmos4
parents:
4790
diff
changeset
|
1340 priv->surface->clip_rect.w, priv->y_screen_bottom); |
29263
0f1b5b68af32
whitespace cosmetics: Remove all trailing whitespace.
diego
parents:
28922
diff
changeset
|
1341 |
635
b9735f811d7d
15,16,24,32Bit rgb/bgr support added, aalib fixed, performance optimizations, code cleanup and so much more...
atmosfear
parents:
616
diff
changeset
|
1342 /* check if we have a double buffered surface and flip() if we do. */ |
b9735f811d7d
15,16,24,32Bit rgb/bgr support added, aalib fixed, performance optimizations, code cleanup and so much more...
atmosfear
parents:
616
diff
changeset
|
1343 if ( priv->surface->flags & SDL_DOUBLEBUF ) |
b9735f811d7d
15,16,24,32Bit rgb/bgr support added, aalib fixed, performance optimizations, code cleanup and so much more...
atmosfear
parents:
616
diff
changeset
|
1344 SDL_Flip(priv->surface); |
b9735f811d7d
15,16,24,32Bit rgb/bgr support added, aalib fixed, performance optimizations, code cleanup and so much more...
atmosfear
parents:
616
diff
changeset
|
1345 |
b9735f811d7d
15,16,24,32Bit rgb/bgr support added, aalib fixed, performance optimizations, code cleanup and so much more...
atmosfear
parents:
616
diff
changeset
|
1346 break; |
29263
0f1b5b68af32
whitespace cosmetics: Remove all trailing whitespace.
diego
parents:
28922
diff
changeset
|
1347 default: |
635
b9735f811d7d
15,16,24,32Bit rgb/bgr support added, aalib fixed, performance optimizations, code cleanup and so much more...
atmosfear
parents:
616
diff
changeset
|
1348 /* blit to the YUV overlay */ |
b9735f811d7d
15,16,24,32Bit rgb/bgr support added, aalib fixed, performance optimizations, code cleanup and so much more...
atmosfear
parents:
616
diff
changeset
|
1349 SDL_DisplayYUVOverlay (priv->overlay, &priv->surface->clip_rect); |
29263
0f1b5b68af32
whitespace cosmetics: Remove all trailing whitespace.
diego
parents:
28922
diff
changeset
|
1350 |
635
b9735f811d7d
15,16,24,32Bit rgb/bgr support added, aalib fixed, performance optimizations, code cleanup and so much more...
atmosfear
parents:
616
diff
changeset
|
1351 /* check if we have a double buffered surface and flip() if we do. */ |
b9735f811d7d
15,16,24,32Bit rgb/bgr support added, aalib fixed, performance optimizations, code cleanup and so much more...
atmosfear
parents:
616
diff
changeset
|
1352 if ( priv->surface->flags & SDL_DOUBLEBUF ) |
b9735f811d7d
15,16,24,32Bit rgb/bgr support added, aalib fixed, performance optimizations, code cleanup and so much more...
atmosfear
parents:
616
diff
changeset
|
1353 SDL_Flip(priv->surface); |
29263
0f1b5b68af32
whitespace cosmetics: Remove all trailing whitespace.
diego
parents:
28922
diff
changeset
|
1354 |
635
b9735f811d7d
15,16,24,32Bit rgb/bgr support added, aalib fixed, performance optimizations, code cleanup and so much more...
atmosfear
parents:
616
diff
changeset
|
1355 //SDL_LockYUVOverlay (priv->overlay); // removed because unused!? |
29263
0f1b5b68af32
whitespace cosmetics: Remove all trailing whitespace.
diego
parents:
28922
diff
changeset
|
1356 } |
1 | 1357 } |
1358 | |
16171
fd51fd1ff231
Fix the return types of all (six) libvo API functions. Used to be uint32_t, but
ivo
parents:
15212
diff
changeset
|
1359 static int |
1 | 1360 query_format(uint32_t format) |
1361 { | |
1362 switch(format){ | |
1363 case IMGFMT_YV12: | |
6440
2997a3faf381
Streamline enter-key behaviour suggested by Christian Ohm and disable I420/IYUV because
atmos4
parents:
5894
diff
changeset
|
1364 // it seems buggy (not hw accelerated), so just use YV12 instead! |
2997a3faf381
Streamline enter-key behaviour suggested by Christian Ohm and disable I420/IYUV because
atmos4
parents:
5894
diff
changeset
|
1365 // case IMGFMT_I420: |
2997a3faf381
Streamline enter-key behaviour suggested by Christian Ohm and disable I420/IYUV because
atmos4
parents:
5894
diff
changeset
|
1366 // case IMGFMT_IYUV: |
1 | 1367 case IMGFMT_YUY2: |
408 | 1368 case IMGFMT_UYVY: |
1369 case IMGFMT_YVYU: | |
5894
af9efcb80244
Use new style query_formats flags. Fixes bug with flip.
ksorim
parents:
5834
diff
changeset
|
1370 return VFCAP_CSP_SUPPORTED | VFCAP_CSP_SUPPORTED_BY_HW | VFCAP_OSD | |
af9efcb80244
Use new style query_formats flags. Fixes bug with flip.
ksorim
parents:
5834
diff
changeset
|
1371 VFCAP_HWSCALE_UP | VFCAP_HWSCALE_DOWN; |
635
b9735f811d7d
15,16,24,32Bit rgb/bgr support added, aalib fixed, performance optimizations, code cleanup and so much more...
atmosfear
parents:
616
diff
changeset
|
1372 case IMGFMT_RGB15: |
b9735f811d7d
15,16,24,32Bit rgb/bgr support added, aalib fixed, performance optimizations, code cleanup and so much more...
atmosfear
parents:
616
diff
changeset
|
1373 case IMGFMT_BGR15: |
b9735f811d7d
15,16,24,32Bit rgb/bgr support added, aalib fixed, performance optimizations, code cleanup and so much more...
atmosfear
parents:
616
diff
changeset
|
1374 case IMGFMT_RGB16: |
b9735f811d7d
15,16,24,32Bit rgb/bgr support added, aalib fixed, performance optimizations, code cleanup and so much more...
atmosfear
parents:
616
diff
changeset
|
1375 case IMGFMT_BGR16: |
b9735f811d7d
15,16,24,32Bit rgb/bgr support added, aalib fixed, performance optimizations, code cleanup and so much more...
atmosfear
parents:
616
diff
changeset
|
1376 case IMGFMT_RGB24: |
b9735f811d7d
15,16,24,32Bit rgb/bgr support added, aalib fixed, performance optimizations, code cleanup and so much more...
atmosfear
parents:
616
diff
changeset
|
1377 case IMGFMT_BGR24: |
b9735f811d7d
15,16,24,32Bit rgb/bgr support added, aalib fixed, performance optimizations, code cleanup and so much more...
atmosfear
parents:
616
diff
changeset
|
1378 case IMGFMT_RGB32: |
b9735f811d7d
15,16,24,32Bit rgb/bgr support added, aalib fixed, performance optimizations, code cleanup and so much more...
atmosfear
parents:
616
diff
changeset
|
1379 case IMGFMT_BGR32: |
5894
af9efcb80244
Use new style query_formats flags. Fixes bug with flip.
ksorim
parents:
5834
diff
changeset
|
1380 return VFCAP_CSP_SUPPORTED | VFCAP_OSD | VFCAP_FLIP; |
1 | 1381 } |
1382 return 0; | |
1383 } | |
1384 | |
1385 | |
1386 static void | |
1387 uninit(void) | |
1388 { | |
27377
d58d06eafe83
Change a bunch of X11-specific preprocessor directives.
diego
parents:
26739
diff
changeset
|
1389 #ifdef CONFIG_X11 |
12787 | 1390 struct sdl_priv_s *priv = &sdl_priv; |
1391 if(priv->X) { | |
28021
1bbc09f93acb
Remove a lot of completely pointless mp_msg_test calls.
reimar
parents:
27706
diff
changeset
|
1392 mp_msg(MSGT_VO,MSGL_V, "SDL: activating XScreensaver/DPMS\n"); |
12787 | 1393 vo_x11_uninit(); |
772
e70a52f17f92
Added flipped video support and activate/deactivate screensaver under X.
atmosfear
parents:
770
diff
changeset
|
1394 } |
e70a52f17f92
Added flipped video support and activate/deactivate screensaver under X.
atmosfear
parents:
770
diff
changeset
|
1395 #endif |
1122
fe9ef743be91
fixed my previousily added bug: ifdef buggy_sdl: keypressed: default case
al3x
parents:
1110
diff
changeset
|
1396 sdl_close(); |
8840
cecb561fcb21
- init & check SDL availability at preinit() (fixes -vo sdl,mga)
arpi
parents:
8246
diff
changeset
|
1397 |
cecb561fcb21
- init & check SDL availability at preinit() (fixes -vo sdl,mga)
arpi
parents:
8246
diff
changeset
|
1398 /* Cleanup SDL */ |
31037 | 1399 vo_sdl_uninit(); |
8840
cecb561fcb21
- init & check SDL availability at preinit() (fixes -vo sdl,mga)
arpi
parents:
8246
diff
changeset
|
1400 |
28021
1bbc09f93acb
Remove a lot of completely pointless mp_msg_test calls.
reimar
parents:
27706
diff
changeset
|
1401 mp_msg(MSGT_VO,MSGL_DBG3, "SDL: Closed Plugin\n"); |
8840
cecb561fcb21
- init & check SDL availability at preinit() (fixes -vo sdl,mga)
arpi
parents:
8246
diff
changeset
|
1402 |
1 | 1403 } |
4352 | 1404 |
16171
fd51fd1ff231
Fix the return types of all (six) libvo API functions. Used to be uint32_t, but
ivo
parents:
15212
diff
changeset
|
1405 static int preinit(const char *arg) |
4352 | 1406 { |
5240 | 1407 struct sdl_priv_s *priv = &sdl_priv; |
14876 | 1408 char * sdl_driver = NULL; |
14857
29a09f111b41
Remove -noxv and -forcexv command line options and replace them by
ivo
parents:
14577
diff
changeset
|
1409 int sdl_hwaccel; |
29a09f111b41
Remove -noxv and -forcexv command line options and replace them by
ivo
parents:
14577
diff
changeset
|
1410 int sdl_forcexv; |
28828
56eee6ffba9b
Make data related to suboption parsing const in libvo
reimar
parents:
28307
diff
changeset
|
1411 const opt_t subopts[] = { |
28922
9dd905e52639
Remove obsolete extra elements from opt_t struct initialization.
diego
parents:
28828
diff
changeset
|
1412 {"forcexv", OPT_ARG_BOOL, &sdl_forcexv, NULL}, |
9dd905e52639
Remove obsolete extra elements from opt_t struct initialization.
diego
parents:
28828
diff
changeset
|
1413 {"hwaccel", OPT_ARG_BOOL, &sdl_hwaccel, NULL}, |
9dd905e52639
Remove obsolete extra elements from opt_t struct initialization.
diego
parents:
28828
diff
changeset
|
1414 {"driver", OPT_ARG_MSTRZ, &sdl_driver, NULL}, |
9dd905e52639
Remove obsolete extra elements from opt_t struct initialization.
diego
parents:
28828
diff
changeset
|
1415 {NULL, 0, NULL, NULL} |
14857
29a09f111b41
Remove -noxv and -forcexv command line options and replace them by
ivo
parents:
14577
diff
changeset
|
1416 }; |
29a09f111b41
Remove -noxv and -forcexv command line options and replace them by
ivo
parents:
14577
diff
changeset
|
1417 |
29a09f111b41
Remove -noxv and -forcexv command line options and replace them by
ivo
parents:
14577
diff
changeset
|
1418 sdl_forcexv = 1; |
29a09f111b41
Remove -noxv and -forcexv command line options and replace them by
ivo
parents:
14577
diff
changeset
|
1419 sdl_hwaccel = 1; |
29a09f111b41
Remove -noxv and -forcexv command line options and replace them by
ivo
parents:
14577
diff
changeset
|
1420 |
29a09f111b41
Remove -noxv and -forcexv command line options and replace them by
ivo
parents:
14577
diff
changeset
|
1421 if (subopt_parse(arg, subopts) != 0) return -1; |
5240 | 1422 |
1423 priv->rgbsurface = NULL; | |
1424 priv->overlay = NULL; | |
1425 priv->surface = NULL; | |
1426 | |
28021
1bbc09f93acb
Remove a lot of completely pointless mp_msg_test calls.
reimar
parents:
27706
diff
changeset
|
1427 mp_msg(MSGT_VO,MSGL_DBG3, "SDL: Opening Plugin\n"); |
8840
cecb561fcb21
- init & check SDL availability at preinit() (fixes -vo sdl,mga)
arpi
parents:
8246
diff
changeset
|
1428 |
14876 | 1429 if(sdl_driver) { |
1430 setenv("SDL_VIDEODRIVER", sdl_driver, 1); | |
14857
29a09f111b41
Remove -noxv and -forcexv command line options and replace them by
ivo
parents:
14577
diff
changeset
|
1431 free(sdl_driver); |
14876 | 1432 } |
8840
cecb561fcb21
- init & check SDL availability at preinit() (fixes -vo sdl,mga)
arpi
parents:
8246
diff
changeset
|
1433 |
cecb561fcb21
- init & check SDL availability at preinit() (fixes -vo sdl,mga)
arpi
parents:
8246
diff
changeset
|
1434 /* does the user want SDL to try and force Xv */ |
cecb561fcb21
- init & check SDL availability at preinit() (fixes -vo sdl,mga)
arpi
parents:
8246
diff
changeset
|
1435 if(sdl_forcexv) setenv("SDL_VIDEO_X11_NODIRECTCOLOR", "1", 1); |
14857
29a09f111b41
Remove -noxv and -forcexv command line options and replace them by
ivo
parents:
14577
diff
changeset
|
1436 else setenv("SDL_VIDEO_X11_NODIRECTCOLOR", "0", 1); |
8840
cecb561fcb21
- init & check SDL availability at preinit() (fixes -vo sdl,mga)
arpi
parents:
8246
diff
changeset
|
1437 |
cecb561fcb21
- init & check SDL availability at preinit() (fixes -vo sdl,mga)
arpi
parents:
8246
diff
changeset
|
1438 /* does the user want to disable Xv and use software scaling instead */ |
14857
29a09f111b41
Remove -noxv and -forcexv command line options and replace them by
ivo
parents:
14577
diff
changeset
|
1439 if(sdl_hwaccel) setenv("SDL_VIDEO_YUV_HWACCEL", "1", 1); |
29a09f111b41
Remove -noxv and -forcexv command line options and replace them by
ivo
parents:
14577
diff
changeset
|
1440 else setenv("SDL_VIDEO_YUV_HWACCEL", "0", 1); |
8840
cecb561fcb21
- init & check SDL availability at preinit() (fixes -vo sdl,mga)
arpi
parents:
8246
diff
changeset
|
1441 |
cecb561fcb21
- init & check SDL availability at preinit() (fixes -vo sdl,mga)
arpi
parents:
8246
diff
changeset
|
1442 /* default to no fullscreen mode, we'll set this as soon we have the avail. modes */ |
cecb561fcb21
- init & check SDL availability at preinit() (fixes -vo sdl,mga)
arpi
parents:
8246
diff
changeset
|
1443 priv->fullmode = -2; |
cecb561fcb21
- init & check SDL availability at preinit() (fixes -vo sdl,mga)
arpi
parents:
8246
diff
changeset
|
1444 |
cecb561fcb21
- init & check SDL availability at preinit() (fixes -vo sdl,mga)
arpi
parents:
8246
diff
changeset
|
1445 priv->fullmodes = NULL; |
cecb561fcb21
- init & check SDL availability at preinit() (fixes -vo sdl,mga)
arpi
parents:
8246
diff
changeset
|
1446 priv->bpp = 0; |
cecb561fcb21
- init & check SDL availability at preinit() (fixes -vo sdl,mga)
arpi
parents:
8246
diff
changeset
|
1447 |
cecb561fcb21
- init & check SDL availability at preinit() (fixes -vo sdl,mga)
arpi
parents:
8246
diff
changeset
|
1448 /* initialize the SDL Video system */ |
31037 | 1449 if (!vo_sdl_init()) { |
18335 | 1450 mp_msg(MSGT_VO,MSGL_ERR, MSGTR_LIBVO_SDL_InitializationFailed, SDL_GetError()); |
1451 | |
8840
cecb561fcb21
- init & check SDL availability at preinit() (fixes -vo sdl,mga)
arpi
parents:
8246
diff
changeset
|
1452 return -1; |
cecb561fcb21
- init & check SDL availability at preinit() (fixes -vo sdl,mga)
arpi
parents:
8246
diff
changeset
|
1453 } |
cecb561fcb21
- init & check SDL availability at preinit() (fixes -vo sdl,mga)
arpi
parents:
8246
diff
changeset
|
1454 |
cecb561fcb21
- init & check SDL availability at preinit() (fixes -vo sdl,mga)
arpi
parents:
8246
diff
changeset
|
1455 SDL_VideoDriverName(priv->driver, 8); |
18234
a107276371a8
Part 5 and final of otvos attila's oattila AT chello-hu mp_msg changes, with lots of corrections
reynaldo
parents:
17932
diff
changeset
|
1456 mp_msg(MSGT_VO,MSGL_INFO, MSGTR_LIBVO_SDL_UsingDriver, priv->driver); |
8840
cecb561fcb21
- init & check SDL availability at preinit() (fixes -vo sdl,mga)
arpi
parents:
8246
diff
changeset
|
1457 |
8935 | 1458 priv->X = 0; |
27377
d58d06eafe83
Change a bunch of X11-specific preprocessor directives.
diego
parents:
26739
diff
changeset
|
1459 #ifdef CONFIG_X11 |
12787 | 1460 if(vo_init()) { |
28021
1bbc09f93acb
Remove a lot of completely pointless mp_msg_test calls.
reimar
parents:
27706
diff
changeset
|
1461 mp_msg(MSGT_VO,MSGL_V, "SDL: deactivating XScreensaver/DPMS\n"); |
12787 | 1462 priv->XWidth = vo_screenwidth; |
1463 priv->XHeight = vo_screenheight; | |
8840
cecb561fcb21
- init & check SDL availability at preinit() (fixes -vo sdl,mga)
arpi
parents:
8246
diff
changeset
|
1464 priv->X = 1; |
28021
1bbc09f93acb
Remove a lot of completely pointless mp_msg_test calls.
reimar
parents:
27706
diff
changeset
|
1465 mp_msg(MSGT_VO,MSGL_V, "SDL: X11 Resolution %ix%i\n", priv->XWidth, priv->XHeight); |
8840
cecb561fcb21
- init & check SDL availability at preinit() (fixes -vo sdl,mga)
arpi
parents:
8246
diff
changeset
|
1466 } |
cecb561fcb21
- init & check SDL availability at preinit() (fixes -vo sdl,mga)
arpi
parents:
8246
diff
changeset
|
1467 #endif |
cecb561fcb21
- init & check SDL availability at preinit() (fixes -vo sdl,mga)
arpi
parents:
8246
diff
changeset
|
1468 |
5240 | 1469 return 0; |
4352 | 1470 } |
1471 | |
5058 | 1472 static uint32_t get_image(mp_image_t *mpi) |
1473 { | |
5460
acf7acfa7acc
Fix I420 handling, though still don't know why divx4 codec queries for I420 not YUY2!
atmos4
parents:
5385
diff
changeset
|
1474 struct sdl_priv_s *priv = &sdl_priv; |
5058 | 1475 |
1476 if(priv->format != mpi->imgfmt) return VO_FALSE; | |
1477 if(mpi->type == MP_IMGTYPE_STATIC || mpi->type == MP_IMGTYPE_TEMP) { | |
5460
acf7acfa7acc
Fix I420 handling, though still don't know why divx4 codec queries for I420 not YUY2!
atmos4
parents:
5385
diff
changeset
|
1478 if(mpi->flags&MP_IMGFLAG_PLANAR) { |
acf7acfa7acc
Fix I420 handling, though still don't know why divx4 codec queries for I420 not YUY2!
atmos4
parents:
5385
diff
changeset
|
1479 mpi->planes[0] = priv->overlay->pixels[0] + priv->y*priv->overlay->pitches[0]; |
acf7acfa7acc
Fix I420 handling, though still don't know why divx4 codec queries for I420 not YUY2!
atmos4
parents:
5385
diff
changeset
|
1480 mpi->stride[0] = priv->overlay->pitches[0]; |
acf7acfa7acc
Fix I420 handling, though still don't know why divx4 codec queries for I420 not YUY2!
atmos4
parents:
5385
diff
changeset
|
1481 if(mpi->flags&MP_IMGFLAG_SWAPPED) { |
acf7acfa7acc
Fix I420 handling, though still don't know why divx4 codec queries for I420 not YUY2!
atmos4
parents:
5385
diff
changeset
|
1482 mpi->planes[1] = priv->overlay->pixels[1] + priv->y*priv->overlay->pitches[1]/2; |
acf7acfa7acc
Fix I420 handling, though still don't know why divx4 codec queries for I420 not YUY2!
atmos4
parents:
5385
diff
changeset
|
1483 mpi->stride[1] = priv->overlay->pitches[1]; |
acf7acfa7acc
Fix I420 handling, though still don't know why divx4 codec queries for I420 not YUY2!
atmos4
parents:
5385
diff
changeset
|
1484 mpi->planes[2] = priv->overlay->pixels[2] + priv->y*priv->overlay->pitches[2]/2; |
acf7acfa7acc
Fix I420 handling, though still don't know why divx4 codec queries for I420 not YUY2!
atmos4
parents:
5385
diff
changeset
|
1485 mpi->stride[2] = priv->overlay->pitches[2]; |
acf7acfa7acc
Fix I420 handling, though still don't know why divx4 codec queries for I420 not YUY2!
atmos4
parents:
5385
diff
changeset
|
1486 } else { |
acf7acfa7acc
Fix I420 handling, though still don't know why divx4 codec queries for I420 not YUY2!
atmos4
parents:
5385
diff
changeset
|
1487 mpi->planes[2] = priv->overlay->pixels[1] + priv->y*priv->overlay->pitches[1]/2; |
acf7acfa7acc
Fix I420 handling, though still don't know why divx4 codec queries for I420 not YUY2!
atmos4
parents:
5385
diff
changeset
|
1488 mpi->stride[2] = priv->overlay->pitches[1]; |
acf7acfa7acc
Fix I420 handling, though still don't know why divx4 codec queries for I420 not YUY2!
atmos4
parents:
5385
diff
changeset
|
1489 mpi->planes[1] = priv->overlay->pixels[2] + priv->y*priv->overlay->pitches[2]/2; |
acf7acfa7acc
Fix I420 handling, though still don't know why divx4 codec queries for I420 not YUY2!
atmos4
parents:
5385
diff
changeset
|
1490 mpi->stride[1] = priv->overlay->pitches[2]; |
acf7acfa7acc
Fix I420 handling, though still don't know why divx4 codec queries for I420 not YUY2!
atmos4
parents:
5385
diff
changeset
|
1491 } |
5058 | 1492 } |
1493 else if(IMGFMT_IS_RGB(priv->format) || IMGFMT_IS_BGR(priv->format)) { | |
1494 if(priv->dblit) { | |
1495 if(mpi->type == MP_IMGTYPE_STATIC && (priv->surface->flags & SDL_DOUBLEBUF)) | |
1496 return VO_FALSE; | |
29263
0f1b5b68af32
whitespace cosmetics: Remove all trailing whitespace.
diego
parents:
28922
diff
changeset
|
1497 |
23619 | 1498 mpi->planes[0] = (uint8_t *)priv->surface->pixels + priv->y*priv->surface->pitch; |
5058 | 1499 mpi->stride[0] = priv->surface->pitch; |
1500 } | |
1501 else { | |
23619 | 1502 mpi->planes[0] = (uint8_t *)priv->rgbsurface->pixels + priv->y*priv->rgbsurface->pitch; |
5058 | 1503 mpi->stride[0] = priv->rgbsurface->pitch; |
1504 } | |
1505 } | |
1506 else { | |
1507 mpi->planes[0] = priv->overlay->pixels[0] + priv->y*priv->overlay->pitches[0]; | |
1508 mpi->stride[0] = priv->overlay->pitches[0]; | |
1509 } | |
1510 | |
1511 mpi->flags|=MP_IMGFLAG_DIRECT; | |
1512 return VO_TRUE; | |
1513 } | |
1514 | |
1515 return VO_FALSE; | |
1516 } | |
1517 | |
16171
fd51fd1ff231
Fix the return types of all (six) libvo API functions. Used to be uint32_t, but
ivo
parents:
15212
diff
changeset
|
1518 static int control(uint32_t request, void *data, ...) |
4352 | 1519 { |
4772 | 1520 struct sdl_priv_s *priv = &sdl_priv; |
4592
5fbfd8545c3b
query_ stuff replaced by new control() - patch by David Holm
arpi
parents:
4590
diff
changeset
|
1521 switch (request) { |
5058 | 1522 case VOCTRL_GET_IMAGE: |
1523 return get_image(data); | |
4592
5fbfd8545c3b
query_ stuff replaced by new control() - patch by David Holm
arpi
parents:
4590
diff
changeset
|
1524 case VOCTRL_QUERY_FORMAT: |
5fbfd8545c3b
query_ stuff replaced by new control() - patch by David Holm
arpi
parents:
4590
diff
changeset
|
1525 return query_format(*((uint32_t*)data)); |
4772 | 1526 case VOCTRL_FULLSCREEN: |
1527 if (priv->surface->flags & SDL_FULLSCREEN) { | |
4807
156482788caf
osd outside movie support for vo_sdl, patch by Fredrik Kuivinen
atmos4
parents:
4790
diff
changeset
|
1528 set_video_mode(priv->windowsize.w, priv->windowsize.h, priv->bpp, priv->sdlflags); |
4772 | 1529 SDL_ShowCursor(1); |
28021
1bbc09f93acb
Remove a lot of completely pointless mp_msg_test calls.
reimar
parents:
27706
diff
changeset
|
1530 mp_msg(MSGT_VO,MSGL_DBG2, "SDL: Windowed mode\n"); |
4772 | 1531 } else if (priv->fullmodes) { |
1532 set_fullmode(priv->fullmode); | |
28021
1bbc09f93acb
Remove a lot of completely pointless mp_msg_test calls.
reimar
parents:
27706
diff
changeset
|
1533 mp_msg(MSGT_VO,MSGL_DBG2, "SDL: Set fullscreen mode\n"); |
4772 | 1534 } |
4790 | 1535 return VO_TRUE; |
4592
5fbfd8545c3b
query_ stuff replaced by new control() - patch by David Holm
arpi
parents:
4590
diff
changeset
|
1536 } |
4772 | 1537 |
4592
5fbfd8545c3b
query_ stuff replaced by new control() - patch by David Holm
arpi
parents:
4590
diff
changeset
|
1538 return VO_NOTIMPL; |
4352 | 1539 } |