annotate libvo/vo_sdl.c @ 33218:f0c2a62e3e89

Position windows initially at coordinates given in skin file. So far, the initial positions of the main and subwindow were not the ones specified in the skin file, but fixed defaults.
author ib
date Sat, 23 Apr 2011 08:05:27 +0000
parents fbe5c829c69b
children ddb45e9443ec
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
1
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
1 /*
351
2c4ded6ffebc - Full OSD and subtitle support added
atmosfear
parents: 350
diff changeset
2 * vo_sdl.c
2c4ded6ffebc - Full OSD and subtitle support added
atmosfear
parents: 350
diff changeset
3 *
579
256f3d32a4af Added maintainer info and disclaimer.
atmosfear
parents: 575
diff changeset
4 * (was video_out_sdl.c from OMS project/mpeg2dec -> http://linuxvideo.org)
1
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
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
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
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
256f3d32a4af Added maintainer info and disclaimer.
atmosfear
parents: 575
diff changeset
12 * Current maintainer for MPlayer project (report bugs to that address):
256f3d32a4af Added maintainer info and disclaimer.
atmosfear
parents: 575
diff changeset
13 * Felix Buenemann <atmosfear@users.sourceforge.net>
256f3d32a4af Added maintainer info and disclaimer.
atmosfear
parents: 575
diff changeset
14 *
256f3d32a4af Added maintainer info and disclaimer.
atmosfear
parents: 575
diff changeset
15 * This file is a video out driver using the SDL library (http://libsdl.org/),
24871
79dadcf1e89e movie player for Linux --> movie player
diego
parents: 24814
diff changeset
16 * to be used with MPlayer, further info from http://www.mplayerhq.hu
579
256f3d32a4af Added maintainer info and disclaimer.
atmosfear
parents: 575
diff changeset
17 *
256f3d32a4af Added maintainer info and disclaimer.
atmosfear
parents: 575
diff changeset
18 * -- old disclaimer --
256f3d32a4af Added maintainer info and disclaimer.
atmosfear
parents: 575
diff changeset
19 *
1
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
20 * A mpeg2dec display driver that does output through the
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
21 * Simple DirectMedia Layer (SDL) library. This effectively gives us all
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
22 * sorts of output options: X11, SVGAlib, fbcon, AAlib, GGI. Win32, MacOS
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
23 * and BeOS support, too. Yay. SDL info, source, and binaries can be found
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
24 * at http://slouken.devolution.com/SDL/
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
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
256f3d32a4af Added maintainer info and disclaimer.
atmosfear
parents: 575
diff changeset
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
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
43 */
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
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
80ca716ce5e9 Made surface locks switchable via preprocessor.
atmosfear
parents: 1194
diff changeset
48 /* define to enable surface locks, this might be needed on SMP machines */
80ca716ce5e9 Made surface locks switchable via preprocessor.
atmosfear
parents: 1194
diff changeset
49 #undef SDL_ENABLE_LOCKS
80ca716ce5e9 Made surface locks switchable via preprocessor.
atmosfear
parents: 1194
diff changeset
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
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
54 #include <stdio.h>
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
55 #include <stdlib.h>
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
56 #include <string.h>
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
57 #include <inttypes.h>
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
58
26203
0d255d03016f #include config.h before all other headers.
diego
parents: 25596
diff changeset
59 #include "config.h"
17932
3fe3b2b3a6ce Convert all if(verbose>X) to mp_msg_test calls.
diego
parents: 17245
diff changeset
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
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
63 #include "video_out.h"
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
64 #include "video_out_internal.h"
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
65
354
7de9e48c83a5 memcpy() moved mmx.h -> fastmemcpy.h
arpi_esp
parents: 351
diff changeset
66 #include "fastmemcpy.h"
32467
fbe5c829c69b Move libvo/sub.[ch] from libvo to sub.
cigaes
parents: 31053
diff changeset
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
601822cc8c52 applied MMX2 memcpy() patch by Nick Kurshev
arpi_esp
parents: 331
diff changeset
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
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
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
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
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
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
83 ""
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
84 };
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
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
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
115 /** Private SDL Data structure **/
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
116
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
117 static struct sdl_priv_s {
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
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
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
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
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
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
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
131 /* available fullscreen modes */
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
132 SDL_Rect **fullmodes;
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
133
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
134 /* surface attributes for fullscreen and windowed mode */
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
135 Uint32 sdlflags, sdlfullflags;
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
136
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
137 /* save the windowed output extents */
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
138 SDL_Rect windowsize;
29263
0f1b5b68af32 whitespace cosmetics: Remove all trailing whitespace.
diego
parents: 28922
diff changeset
139
1
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
140 /* Bits per Pixel */
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
141 Uint8 bpp;
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
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
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
152 /* current fullscreen mode, 0 = highest available fullscreen mode */
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
153 int fullmode;
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
154
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
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
9fb176abc1a7 Some fixups for SDL/aalib.
atmosfear
parents: 862
diff changeset
169 /* is X running (0/1) */
9fb176abc1a7 Some fixups for SDL/aalib.
atmosfear
parents: 862
diff changeset
170 int X;
9fb176abc1a7 Some fixups for SDL/aalib.
atmosfear
parents: 862
diff changeset
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
33c01c795987 sdl dr support
atmos4
parents: 4925
diff changeset
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
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
197 } sdl_priv;
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
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
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
228
351
2c4ded6ffebc - Full OSD and subtitle support added
atmosfear
parents: 350
diff changeset
229 /** libvo Plugin functions **/
2c4ded6ffebc - Full OSD and subtitle support added
atmosfear
parents: 350
diff changeset
230
2c4ded6ffebc - Full OSD and subtitle support added
atmosfear
parents: 350
diff changeset
231 /**
2c4ded6ffebc - Full OSD and subtitle support added
atmosfear
parents: 350
diff changeset
232 * draw_alpha is used for osd and subtitle display.
2c4ded6ffebc - Full OSD and subtitle support added
atmosfear
parents: 350
diff changeset
233 *
2c4ded6ffebc - Full OSD and subtitle support added
atmosfear
parents: 350
diff changeset
234 **/
2c4ded6ffebc - Full OSD and subtitle support added
atmosfear
parents: 350
diff changeset
235
2c4ded6ffebc - Full OSD and subtitle support added
atmosfear
parents: 350
diff changeset
236 static void draw_alpha(int x0,int y0, int w,int h, unsigned char* src, unsigned char *srca, int stride){
408
b61c5c4484f8 - applied overlay patch by Jens H
atmosfear
parents: 394
diff changeset
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
b61c5c4484f8 - applied overlay patch by Jens H
atmosfear
parents: 394
diff changeset
273 switch(priv->format) {
29263
0f1b5b68af32 whitespace cosmetics: Remove all trailing whitespace.
diego
parents: 28922
diff changeset
274 case IMGFMT_YV12:
408
b61c5c4484f8 - applied overlay patch by Jens H
atmosfear
parents: 394
diff changeset
275 case IMGFMT_I420:
b61c5c4484f8 - applied overlay patch by Jens H
atmosfear
parents: 394
diff changeset
276 case IMGFMT_IYUV:
5260
7a37ce6f3464 Fix for OSD when width != pitch
ksorim
parents: 5240
diff changeset
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
b61c5c4484f8 - applied overlay patch by Jens H
atmosfear
parents: 394
diff changeset
278 break;
b61c5c4484f8 - applied overlay patch by Jens H
atmosfear
parents: 394
diff changeset
279 case IMGFMT_YUY2:
5260
7a37ce6f3464 Fix for OSD when width != pitch
ksorim
parents: 5240
diff changeset
280 case IMGFMT_YVYU:
7a37ce6f3464 Fix for OSD when width != pitch
ksorim
parents: 5240
diff changeset
281 x0 *= 2;
7a37ce6f3464 Fix for OSD when width != pitch
ksorim
parents: 5240
diff changeset
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
7a37ce6f3464 Fix for OSD when width != pitch
ksorim
parents: 5240
diff changeset
285 x0 *= 2;
7a37ce6f3464 Fix for OSD when width != pitch
ksorim
parents: 5240
diff changeset
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
7a37ce6f3464 Fix for OSD when width != pitch
ksorim
parents: 5240
diff changeset
290 if(priv->dblit) {
7a37ce6f3464 Fix for OSD when width != pitch
ksorim
parents: 5240
diff changeset
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
7a37ce6f3464 Fix for OSD when width != pitch
ksorim
parents: 5240
diff changeset
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
7a37ce6f3464 Fix for OSD when width != pitch
ksorim
parents: 5240
diff changeset
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
7a37ce6f3464 Fix for OSD when width != pitch
ksorim
parents: 5240
diff changeset
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
7a37ce6f3464 Fix for OSD when width != pitch
ksorim
parents: 5240
diff changeset
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
7a37ce6f3464 Fix for OSD when width != pitch
ksorim
parents: 5240
diff changeset
310 }
7a37ce6f3464 Fix for OSD when width != pitch
ksorim
parents: 5240
diff changeset
311 else {
7a37ce6f3464 Fix for OSD when width != pitch
ksorim
parents: 5240
diff changeset
312 x0 *= priv->rgbsurface->format->BytesPerPixel;
7a37ce6f3464 Fix for OSD when width != pitch
ksorim
parents: 5240
diff changeset
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
7a37ce6f3464 Fix for OSD when width != pitch
ksorim
parents: 5240
diff changeset
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
7a37ce6f3464 Fix for OSD when width != pitch
ksorim
parents: 5240
diff changeset
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
7a37ce6f3464 Fix for OSD when width != pitch
ksorim
parents: 5240
diff changeset
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
7a37ce6f3464 Fix for OSD when width != pitch
ksorim
parents: 5240
diff changeset
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
7a37ce6f3464 Fix for OSD when width != pitch
ksorim
parents: 5240
diff changeset
330 }
7a37ce6f3464 Fix for OSD when width != pitch
ksorim
parents: 5240
diff changeset
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
2c4ded6ffebc - Full OSD and subtitle support added
atmosfear
parents: 350
diff changeset
334 }
1
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
335
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
336
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
337 /**
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
338 * Take a null-terminated array of pointers, and find the last element.
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
339 *
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
340 * params : array == array of which we want to find the last element.
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
341 * returns : index of last NON-NULL element.
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
342 **/
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
343
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
344 static inline int findArrayEnd (SDL_Rect **array)
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
345 {
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
346 int i = 0;
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
347 while ( array[i++] ); /* keep loopin' ... */
29263
0f1b5b68af32 whitespace cosmetics: Remove all trailing whitespace.
diego
parents: 28922
diff changeset
348
1
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
349 /* return the index of the last array element */
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
350 return i - 1;
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
351 }
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
352
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
353
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
354 /**
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
355 * Open and prepare SDL output.
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
356 *
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
357 * params : *plugin ==
29263
0f1b5b68af32 whitespace cosmetics: Remove all trailing whitespace.
diego
parents: 28922
diff changeset
358 * *name ==
1
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
359 * returns : 0 on success, -1 on failure
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
360 **/
29263
0f1b5b68af32 whitespace cosmetics: Remove all trailing whitespace.
diego
parents: 28922
diff changeset
361
1
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
362 static int sdl_open (void *plugin, void *name)
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
363 {
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
364 struct sdl_priv_s *priv = &sdl_priv;
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
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
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
369 return 0;
4528
bd2324553533 Fix multifile playback (sdl was not fully reinitialized).
atmos4
parents: 4433
diff changeset
370 opened = 1;*/
1
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
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
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
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
3fe3b2b3a6ce Convert all if(verbose>X) to mp_msg_test calls.
diego
parents: 17245
diff changeset
381 if( mp_msg_test(MSGT_VO,MSGL_V) ) {
3fe3b2b3a6ce Convert all if(verbose>X) to mp_msg_test calls.
diego
parents: 17245
diff changeset
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
c4634177933a initial MorphOS/Amiga (GeekGadgets) support
alex
parents: 10838
diff changeset
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
b65b78640d49 removed old input code
alex
parents: 6956
diff changeset
396 if (vo_doublebuffering)
b65b78640d49 removed old input code
alex
parents: 6956
diff changeset
397 priv->sdlflags |= SDL_DOUBLEBUF;
10945
c4634177933a initial MorphOS/Amiga (GeekGadgets) support
alex
parents: 10838
diff changeset
398 #endif
29263
0f1b5b68af32 whitespace cosmetics: Remove all trailing whitespace.
diego
parents: 28922
diff changeset
399
1
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
400 /* get information about the graphics adapter */
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
401 vidInfo = SDL_GetVideoInfo ();
29263
0f1b5b68af32 whitespace cosmetics: Remove all trailing whitespace.
diego
parents: 28922
diff changeset
402
1
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
403 /* collect all fullscreen & hardware modes available */
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
404 if (!(priv->fullmodes = SDL_ListModes (vidInfo->vfmt, priv->sdlfullflags))) {
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
405
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
406 /* non hardware accelerated fullscreen modes */
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
407 priv->sdlfullflags &= ~SDL_HWSURFACE;
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
408 priv->fullmodes = SDL_ListModes (vidInfo->vfmt, priv->sdlfullflags);
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
409 }
29263
0f1b5b68af32 whitespace cosmetics: Remove all trailing whitespace.
diego
parents: 28922
diff changeset
410
1
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
411 /* test for normal resizeable & windowed hardware accellerated surfaces */
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
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
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
415 * That's all we have. If this fails there's nothing left.
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
416 * Theoretically there could be Fullscreenmodes left - we ignore this for now.
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
417 */
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
418 priv->sdlflags &= ~SDL_HWSURFACE;
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
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
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
421 return -1;
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
422 }
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
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
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
426 /* YUV overlays need at least 16-bit color depth, but the
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
427 * display might less. The SDL AAlib target says it can only do
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
428 * 8-bits, for example. So, if the display is less than 16-bits,
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
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
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
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
e766c07b1d5c This will hopefully fix
ksorim
parents: 5239
diff changeset
435 "depth of (%d), but we need it to be at least 16 "
e766c07b1d5c This will hopefully fix
ksorim
parents: 5239
diff changeset
436 "bits, so we need to emulate 16-bit color. This is "
e766c07b1d5c This will hopefully fix
ksorim
parents: 5239
diff changeset
437 "going to slow things down; you might want to "
e766c07b1d5c This will hopefully fix
ksorim
parents: 5239
diff changeset
438 "increase your display's color depth, if possible.\n",
e766c07b1d5c This will hopefully fix
ksorim
parents: 5239
diff changeset
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
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
442 }
29263
0f1b5b68af32 whitespace cosmetics: Remove all trailing whitespace.
diego
parents: 28922
diff changeset
443
1
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
444 /* Success! */
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
445 return 0;
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
446 }
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
447
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
448
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
449 /**
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
450 * Close SDL, Cleanups, Free Memory
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
451 *
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
452 * params : *plugin
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
453 * returns : non-zero on success, zero on error.
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
454 **/
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
455
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
456 static int sdl_close (void)
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
457 {
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
458 struct sdl_priv_s *priv = &sdl_priv;
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
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
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
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
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
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
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
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
4f610bd631ac fixed some possible memleak places
al3x
parents: 1122
diff changeset
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
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
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
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
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
6e35326c742f many small typo and grammar fixes
gabucino
parents: 10947
diff changeset
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
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
483 return 0;
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
484 }
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
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
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
519
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
520 /**
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
521 * Sets the specified fullscreen mode.
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
522 *
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
523 * params : mode == index of the desired fullscreen mode
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
524 * returns : doesn't return
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
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
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
528 static void set_fullmode (int mode)
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
529 {
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
530 struct sdl_priv_s *priv = &sdl_priv;
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
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
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
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
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
536 mode = priv->fullmode = findArrayEnd(priv->fullmodes) - 1;
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
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
3b57dcfc8057 cosmetics: typo
diego
parents: 23619
diff changeset
551 /* if we were successful hide the mouse cursor and save the mode */
1
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
552 if (newsurface) {
1126
4f610bd631ac fixed some possible memleak places
al3x
parents: 1122
diff changeset
553 if (priv->surface)
4f610bd631ac fixed some possible memleak places
al3x
parents: 1122
diff changeset
554 SDL_FreeSurface(priv->surface);
1
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
555 priv->surface = newsurface;
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
556 SDL_ShowCursor(0);
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
557 }
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
558 }
784
dee122f9cdb9 Added full aspect awareness, rewrote fullscreen handling.
atmosfear
parents: 772
diff changeset
559 #endif
1
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
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
cf00aa6eb2d3 fixed mode switching on Mac
henry
parents: 8148
diff changeset
567 if(priv->rgbsurface)
cf00aa6eb2d3 fixed mode switching on Mac
henry
parents: 8148
diff changeset
568 SDL_FreeSurface(priv->rgbsurface);
cf00aa6eb2d3 fixed mode switching on Mac
henry
parents: 8148
diff changeset
569 else if(priv->overlay)
cf00aa6eb2d3 fixed mode switching on Mac
henry
parents: 8148
diff changeset
570 SDL_FreeYUVOverlay(priv->overlay);
29263
0f1b5b68af32 whitespace cosmetics: Remove all trailing whitespace.
diego
parents: 28922
diff changeset
571
8149
cf00aa6eb2d3 fixed mode switching on Mac
henry
parents: 8148
diff changeset
572 priv->rgbsurface = NULL;
cf00aa6eb2d3 fixed mode switching on Mac
henry
parents: 8148
diff changeset
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
cf00aa6eb2d3 fixed mode switching on Mac
henry
parents: 8148
diff changeset
600 if(priv->rgbsurface)
cf00aa6eb2d3 fixed mode switching on Mac
henry
parents: 8148
diff changeset
601 SDL_FreeSurface(priv->rgbsurface);
cf00aa6eb2d3 fixed mode switching on Mac
henry
parents: 8148
diff changeset
602 else if(priv->overlay)
cf00aa6eb2d3 fixed mode switching on Mac
henry
parents: 8148
diff changeset
603 SDL_FreeYUVOverlay(priv->overlay);
29263
0f1b5b68af32 whitespace cosmetics: Remove all trailing whitespace.
diego
parents: 28922
diff changeset
604
8149
cf00aa6eb2d3 fixed mode switching on Mac
henry
parents: 8148
diff changeset
605 priv->rgbsurface = NULL;
cf00aa6eb2d3 fixed mode switching on Mac
henry
parents: 8148
diff changeset
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
3d2ec2568659 fix for fs modes on widescreen displays
henry
parents: 7692
diff changeset
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
3fe3b2b3a6ce Convert all if(verbose>X) to mp_msg_test calls.
diego
parents: 17245
diff changeset
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
3d2ec2568659 fix for fs modes on widescreen displays
henry
parents: 7692
diff changeset
622 imax = i;
3d2ec2568659 fix for fs modes on widescreen displays
henry
parents: 7692
diff changeset
623 for (j = findArrayEnd(priv->fullmodes) - 1; j >=0; j--) {
3d2ec2568659 fix for fs modes on widescreen displays
henry
parents: 7692
diff changeset
624 if (priv->fullmodes[j]->w > priv->fullmodes[imax]->w
3d2ec2568659 fix for fs modes on widescreen displays
henry
parents: 7692
diff changeset
625 && priv->fullmodes[j]->h == priv->fullmodes[imax]->h)
3d2ec2568659 fix for fs modes on widescreen displays
henry
parents: 7692
diff changeset
626 imax = j;
3d2ec2568659 fix for fs modes on widescreen displays
henry
parents: 7692
diff changeset
627 }
3d2ec2568659 fix for fs modes on widescreen displays
henry
parents: 7692
diff changeset
628 mode = imax;
3d2ec2568659 fix for fs modes on widescreen displays
henry
parents: 7692
diff changeset
629 break;
3d2ec2568659 fix for fs modes on widescreen displays
henry
parents: 7692
diff changeset
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
3b57dcfc8057 cosmetics: typo
diego
parents: 23619
diff changeset
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
4f610bd631ac fixed some possible memleak places
al3x
parents: 1122
diff changeset
681 if (priv->surface)
4f610bd631ac fixed some possible memleak places
al3x
parents: 1122
diff changeset
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
4f610bd631ac fixed some possible memleak places
al3x
parents: 1122
diff changeset
693
1
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
694
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
695 /**
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
696 * Initialize an SDL surface and an SDL YUV overlay.
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
697 *
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
698 * params : width == width of video we'll be displaying.
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
699 * height == height of video we'll be displaying.
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
700 * fullscreen == want to be fullscreen?
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
701 * title == Title for window titlebar.
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
702 * returns : non-zero on success, zero on error.
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
703 **/
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
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
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
707 //static int sdl_setup (int width, int height)
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
708 {
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
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
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
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
36b883428aeb init checks return value of sdl_open
al3x
parents: 1038
diff changeset
765 if (sdl_open(NULL, NULL) != 0)
36b883428aeb init checks return value of sdl_open
al3x
parents: 1038
diff changeset
766 return -1;
1
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
767
351
2c4ded6ffebc - Full OSD and subtitle support added
atmosfear
parents: 350
diff changeset
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
2c4ded6ffebc - Full OSD and subtitle support added
atmosfear
parents: 350
diff changeset
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
6719d1a3be53 add no fs as default for windrivers
atmos4
parents: 4807
diff changeset
812 if((strcmp(priv->driver, "x11") == 0)
6719d1a3be53 add no fs as default for windrivers
atmos4
parents: 4807
diff changeset
813 ||(strcmp(priv->driver, "windib") == 0)
6719d1a3be53 add no fs as default for windrivers
atmos4
parents: 4807
diff changeset
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
c4634177933a initial MorphOS/Amiga (GeekGadgets) support
alex
parents: 10838
diff changeset
816 ||(strcmp(priv->driver, "cgx") == 0)
21734
dc54ff854d1c Amiga OS 4 support
diego
parents: 20164
diff changeset
817 ||(strcmp(priv->driver, "os4video") == 0)
10945
c4634177933a initial MorphOS/Amiga (GeekGadgets) support
alex
parents: 10838
diff changeset
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
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
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
29b5e5facb53 fixed green lines caused by missing rounding to 2
iive
parents: 5313
diff changeset
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
0b7229832d2a Two fixes:
ksorim
parents: 5268
diff changeset
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
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
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
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
946 return 0;
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
947 }
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
948
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
949
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
950 /**
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
951 * Draw a frame to the SDL YUV overlay.
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
952 *
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
953 * params : *src[] == the Y, U, and V planes that make up the frame.
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
954 * returns : non-zero on success, zero on error.
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
955 **/
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
956
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
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
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
959 {
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
960 struct sdl_priv_s *priv = &sdl_priv;
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
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
0b7229832d2a Two fixes:
ksorim
parents: 5268
diff changeset
965 switch(priv->format){
1
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
966 case IMGFMT_YUY2:
408
b61c5c4484f8 - applied overlay patch by Jens H
atmosfear
parents: 394
diff changeset
967 case IMGFMT_UYVY:
b61c5c4484f8 - applied overlay patch by Jens H
atmosfear
parents: 394
diff changeset
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
80ca716ce5e9 Made surface locks switchable via preprocessor.
atmosfear
parents: 1194
diff changeset
980 SDL_OVR_UNLOCK
1
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
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
bbbf2e677afe for() -> memcpy_pic()
arpi
parents: 7201
diff changeset
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
80ca716ce5e9 Made surface locks switchable via preprocessor.
atmosfear
parents: 1194
diff changeset
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
80ca716ce5e9 Made surface locks switchable via preprocessor.
atmosfear
parents: 1194
diff changeset
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
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
1020 }
29263
0f1b5b68af32 whitespace cosmetics: Remove all trailing whitespace.
diego
parents: 28922
diff changeset
1021
1
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
1022 return 0;
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
1023 }
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
1024
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
1025
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
1026 /**
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
1027 * Draw a slice (16 rows of image) to the SDL YUV overlay.
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
1028 *
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
1029 * params : *src[] == the Y, U, and V planes that make up the slice.
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
1030 * returns : non-zero on error, zero on success.
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
1031 **/
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
1032
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
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
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
1035 {
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
1036 struct sdl_priv_s *priv = &sdl_priv;
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
1037 uint8_t *dst;
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
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
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
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
bbbf2e677afe for() -> memcpy_pic()
arpi
parents: 7201
diff changeset
1044 memcpy_pic(dst, image[0], w, h, priv->overlay->pitches[0], stride[0]);
bbbf2e677afe for() -> memcpy_pic()
arpi
parents: 7201
diff changeset
1045 x/=2;y/=2;w/=2;h/=2;
1
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
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
bbbf2e677afe for() -> memcpy_pic()
arpi
parents: 7201
diff changeset
1050 memcpy_pic(dst, image[1], w, h, priv->overlay->pitches[2], stride[1]);
bbbf2e677afe for() -> memcpy_pic()
arpi
parents: 7201
diff changeset
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
bbbf2e677afe for() -> memcpy_pic()
arpi
parents: 7201
diff changeset
1053 memcpy_pic(dst, image[2], w, h, priv->overlay->pitches[1], stride[2]);
bbbf2e677afe for() -> memcpy_pic()
arpi
parents: 7201
diff changeset
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
bbbf2e677afe for() -> memcpy_pic()
arpi
parents: 7201
diff changeset
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
bbbf2e677afe for() -> memcpy_pic()
arpi
parents: 7201
diff changeset
1059 memcpy_pic(dst, image[1], w, h, priv->overlay->pitches[1], stride[1]);
1
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
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
bbbf2e677afe for() -> memcpy_pic()
arpi
parents: 7201
diff changeset
1062 memcpy_pic(dst, image[2], w, h, priv->overlay->pitches[2], stride[2]);
bbbf2e677afe for() -> memcpy_pic()
arpi
parents: 7201
diff changeset
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
80ca716ce5e9 Made surface locks switchable via preprocessor.
atmosfear
parents: 1194
diff changeset
1069 SDL_OVR_UNLOCK
1
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
1070
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
1071 return 0;
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
1072 }
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
1073
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
1074
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
1075
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
1076 /**
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
1077 * Checks for SDL keypress and window resize events
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
1078 *
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
1079 * params : none
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
1080 * returns : doesn't return
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
1081 **/
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
1082
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
1083 static void check_events (void)
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
1084 {
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
1085 struct sdl_priv_s *priv = &sdl_priv;
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
1086 SDL_Event event;
27706
8dec0335f75b Replace numeric constants by their defines.
cehoyos
parents: 27377
diff changeset
1087 SDLKey keypressed = SDLK_UNKNOWN;
29263
0f1b5b68af32 whitespace cosmetics: Remove all trailing whitespace.
diego
parents: 28922
diff changeset
1088
1
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
1089 /* Poll the waiting SDL Events */
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
1090 while ( SDL_PollEvent(&event) ) {
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
1091 switch (event.type) {
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
1092
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
1093 /* capture window resize events */
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
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
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
1097
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
1098 /* save video extents, to restore them after going fullscreen */
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
1099 //if(!(priv->surface->flags & SDL_FULLSCREEN)) {
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
1100 priv->windowsize.w = priv->surface->w;
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
1101 priv->windowsize.h = priv->surface->h;
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
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
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
1104 break;
29263
0f1b5b68af32 whitespace cosmetics: Remove all trailing whitespace.
diego
parents: 28922
diff changeset
1105
1
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
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
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
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
681979d4031a - small bugfixes
atmosfear
parents: 355
diff changeset
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
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
1113 /* select next fullscreen mode */
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
1114 priv->fullmode++;
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
1115 if (priv->fullmode > (findArrayEnd(priv->fullmodes) - 1)) priv->fullmode = 0;
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
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
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
1119 }
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
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
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
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
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
1143 }
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
1144 }
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
1145 }
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
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
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
1305
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
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
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
1308 *
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
1309 * params : mode == index of the desired fullscreen mode
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
1310 * returns : doesn't return
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
1311 **/
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
1312
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
1313 static void flip_page (void)
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
1314 {
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
1315 struct sdl_priv_s *priv = &sdl_priv;
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
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
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
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
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
1357 }
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
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
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
1360 query_format(uint32_t format)
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
1361 {
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
1362 switch(format){
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
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
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
1367 case IMGFMT_YUY2:
408
b61c5c4484f8 - applied overlay patch by Jens H
atmosfear
parents: 394
diff changeset
1368 case IMGFMT_UYVY:
b61c5c4484f8 - applied overlay patch by Jens H
atmosfear
parents: 394
diff changeset
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
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
1381 }
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
1382 return 0;
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
1383 }
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
1384
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
1385
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
1386 static void
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
1387 uninit(void)
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
1388 {
27377
d58d06eafe83 Change a bunch of X11-specific preprocessor directives.
diego
parents: 26739
diff changeset
1389 #ifdef CONFIG_X11
12787
7aa852ffba45 fix for xscreensaver disabling
reimar
parents: 12683
diff changeset
1390 struct sdl_priv_s *priv = &sdl_priv;
7aa852ffba45 fix for xscreensaver disabling
reimar
parents: 12683
diff changeset
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
7aa852ffba45 fix for xscreensaver disabling
reimar
parents: 12683
diff changeset
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
4f273572e445 Share SDL initialization code.
reimar
parents: 31032
diff changeset
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
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
1403 }
4352
ed5b85b713a3 Extensions for video accelerated architecture
nick
parents: 4342
diff changeset
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
ed5b85b713a3 Extensions for video accelerated architecture
nick
parents: 4342
diff changeset
1406 {
5240
e766c07b1d5c This will hopefully fix
ksorim
parents: 5239
diff changeset
1407 struct sdl_priv_s *priv = &sdl_priv;
14876
2b14e57570a8 10l Don't set SDL to X11 by default.
ivo
parents: 14857
diff changeset
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
e766c07b1d5c This will hopefully fix
ksorim
parents: 5239
diff changeset
1422
e766c07b1d5c This will hopefully fix
ksorim
parents: 5239
diff changeset
1423 priv->rgbsurface = NULL;
e766c07b1d5c This will hopefully fix
ksorim
parents: 5239
diff changeset
1424 priv->overlay = NULL;
e766c07b1d5c This will hopefully fix
ksorim
parents: 5239
diff changeset
1425 priv->surface = NULL;
e766c07b1d5c This will hopefully fix
ksorim
parents: 5239
diff changeset
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
2b14e57570a8 10l Don't set SDL to X11 by default.
ivo
parents: 14857
diff changeset
1429 if(sdl_driver) {
2b14e57570a8 10l Don't set SDL to X11 by default.
ivo
parents: 14857
diff changeset
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
2b14e57570a8 10l Don't set SDL to X11 by default.
ivo
parents: 14857
diff changeset
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
4f273572e445 Share SDL initialization code.
reimar
parents: 31032
diff changeset
1449 if (!vo_sdl_init()) {
18335
5766a9d21992 Rename some misspelled and misnamed messages.
diego
parents: 18234
diff changeset
1450 mp_msg(MSGT_VO,MSGL_ERR, MSGTR_LIBVO_SDL_InitializationFailed, SDL_GetError());
5766a9d21992 Rename some misspelled and misnamed messages.
diego
parents: 18234
diff changeset
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
3c50e662d588 10l, init priv->X at right place
atmos4
parents: 8840
diff changeset
1458 priv->X = 0;
27377
d58d06eafe83 Change a bunch of X11-specific preprocessor directives.
diego
parents: 26739
diff changeset
1459 #ifdef CONFIG_X11
12787
7aa852ffba45 fix for xscreensaver disabling
reimar
parents: 12683
diff changeset
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
7aa852ffba45 fix for xscreensaver disabling
reimar
parents: 12683
diff changeset
1462 priv->XWidth = vo_screenwidth;
7aa852ffba45 fix for xscreensaver disabling
reimar
parents: 12683
diff changeset
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
e766c07b1d5c This will hopefully fix
ksorim
parents: 5239
diff changeset
1469 return 0;
4352
ed5b85b713a3 Extensions for video accelerated architecture
nick
parents: 4342
diff changeset
1470 }
ed5b85b713a3 Extensions for video accelerated architecture
nick
parents: 4342
diff changeset
1471
5058
33c01c795987 sdl dr support
atmos4
parents: 4925
diff changeset
1472 static uint32_t get_image(mp_image_t *mpi)
33c01c795987 sdl dr support
atmos4
parents: 4925
diff changeset
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
33c01c795987 sdl dr support
atmos4
parents: 4925
diff changeset
1475
33c01c795987 sdl dr support
atmos4
parents: 4925
diff changeset
1476 if(priv->format != mpi->imgfmt) return VO_FALSE;
33c01c795987 sdl dr support
atmos4
parents: 4925
diff changeset
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
33c01c795987 sdl dr support
atmos4
parents: 4925
diff changeset
1492 }
33c01c795987 sdl dr support
atmos4
parents: 4925
diff changeset
1493 else if(IMGFMT_IS_RGB(priv->format) || IMGFMT_IS_BGR(priv->format)) {
33c01c795987 sdl dr support
atmos4
parents: 4925
diff changeset
1494 if(priv->dblit) {
33c01c795987 sdl dr support
atmos4
parents: 4925
diff changeset
1495 if(mpi->type == MP_IMGTYPE_STATIC && (priv->surface->flags & SDL_DOUBLEBUF))
33c01c795987 sdl dr support
atmos4
parents: 4925
diff changeset
1496 return VO_FALSE;
29263
0f1b5b68af32 whitespace cosmetics: Remove all trailing whitespace.
diego
parents: 28922
diff changeset
1497
23619
ac2d6f1d982c Avoid vo_sdl void * arithmetic
reimar
parents: 23457
diff changeset
1498 mpi->planes[0] = (uint8_t *)priv->surface->pixels + priv->y*priv->surface->pitch;
5058
33c01c795987 sdl dr support
atmos4
parents: 4925
diff changeset
1499 mpi->stride[0] = priv->surface->pitch;
33c01c795987 sdl dr support
atmos4
parents: 4925
diff changeset
1500 }
33c01c795987 sdl dr support
atmos4
parents: 4925
diff changeset
1501 else {
23619
ac2d6f1d982c Avoid vo_sdl void * arithmetic
reimar
parents: 23457
diff changeset
1502 mpi->planes[0] = (uint8_t *)priv->rgbsurface->pixels + priv->y*priv->rgbsurface->pitch;
5058
33c01c795987 sdl dr support
atmos4
parents: 4925
diff changeset
1503 mpi->stride[0] = priv->rgbsurface->pitch;
33c01c795987 sdl dr support
atmos4
parents: 4925
diff changeset
1504 }
33c01c795987 sdl dr support
atmos4
parents: 4925
diff changeset
1505 }
33c01c795987 sdl dr support
atmos4
parents: 4925
diff changeset
1506 else {
33c01c795987 sdl dr support
atmos4
parents: 4925
diff changeset
1507 mpi->planes[0] = priv->overlay->pixels[0] + priv->y*priv->overlay->pitches[0];
33c01c795987 sdl dr support
atmos4
parents: 4925
diff changeset
1508 mpi->stride[0] = priv->overlay->pitches[0];
33c01c795987 sdl dr support
atmos4
parents: 4925
diff changeset
1509 }
33c01c795987 sdl dr support
atmos4
parents: 4925
diff changeset
1510
33c01c795987 sdl dr support
atmos4
parents: 4925
diff changeset
1511 mpi->flags|=MP_IMGFLAG_DIRECT;
33c01c795987 sdl dr support
atmos4
parents: 4925
diff changeset
1512 return VO_TRUE;
33c01c795987 sdl dr support
atmos4
parents: 4925
diff changeset
1513 }
33c01c795987 sdl dr support
atmos4
parents: 4925
diff changeset
1514
33c01c795987 sdl dr support
atmos4
parents: 4925
diff changeset
1515 return VO_FALSE;
33c01c795987 sdl dr support
atmos4
parents: 4925
diff changeset
1516 }
33c01c795987 sdl dr support
atmos4
parents: 4925
diff changeset
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
ed5b85b713a3 Extensions for video accelerated architecture
nick
parents: 4342
diff changeset
1519 {
4772
9c65efb6ac7e support for VOCTRL_FULLSCREEN
atmos4
parents: 4596
diff changeset
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
33c01c795987 sdl dr support
atmos4
parents: 4925
diff changeset
1522 case VOCTRL_GET_IMAGE:
33c01c795987 sdl dr support
atmos4
parents: 4925
diff changeset
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
9c65efb6ac7e support for VOCTRL_FULLSCREEN
atmos4
parents: 4596
diff changeset
1526 case VOCTRL_FULLSCREEN:
9c65efb6ac7e support for VOCTRL_FULLSCREEN
atmos4
parents: 4596
diff changeset
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
9c65efb6ac7e support for VOCTRL_FULLSCREEN
atmos4
parents: 4596
diff changeset
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
9c65efb6ac7e support for VOCTRL_FULLSCREEN
atmos4
parents: 4596
diff changeset
1531 } else if (priv->fullmodes) {
9c65efb6ac7e support for VOCTRL_FULLSCREEN
atmos4
parents: 4596
diff changeset
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
9c65efb6ac7e support for VOCTRL_FULLSCREEN
atmos4
parents: 4596
diff changeset
1534 }
4790
50288f9f6b15 Fix return value of VOCTRL_FULLSCREEN
atmos4
parents: 4772
diff changeset
1535 return VO_TRUE;
4592
5fbfd8545c3b query_ stuff replaced by new control() - patch by David Holm
arpi
parents: 4590
diff changeset
1536 }
4772
9c65efb6ac7e support for VOCTRL_FULLSCREEN
atmos4
parents: 4596
diff changeset
1537
4592
5fbfd8545c3b query_ stuff replaced by new control() - patch by David Holm
arpi
parents: 4590
diff changeset
1538 return VO_NOTIMPL;
4352
ed5b85b713a3 Extensions for video accelerated architecture
nick
parents: 4342
diff changeset
1539 }