annotate libvo/vo_sdl.c @ 28063:a318969a4f45

Set the base size window manager hint, otherwise some subtract the minimum size of 4x4 from the numbers displayed to the user which might be confusing. Based on patch by Bert Wesarg [bert wesarg googlemail com].
author reimar
date Fri, 05 Dec 2008 19:01:49 +0000
parents 1bbc09f93acb
children 2391228b7ff0
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 *
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
6 * Copyright (C) Ryan C. Gordon <icculus@lokigames.com> - April 22, 2000.
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 *
26739
2a34d9fa52ab Use standard license headers with standard formatting.
diego
parents: 26329
diff changeset
26 * -- end old disclaimer --
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
705
27d351f251eb Added workaround for buggy SDL versions (before 1.2.1).
atmosfear
parents: 703
diff changeset
51 //#define BUGGY_SDL //defined by configure
27d351f251eb Added workaround for buggy SDL versions (before 1.2.1).
atmosfear
parents: 703
diff changeset
52
784
dee122f9cdb9 Added full aspect awareness, rewrote fullscreen handling.
atmosfear
parents: 772
diff changeset
53 /* MONITOR_ASPECT MUST BE FLOAT */
dee122f9cdb9 Added full aspect awareness, rewrote fullscreen handling.
atmosfear
parents: 772
diff changeset
54 #define MONITOR_ASPECT 4.0/3.0
dee122f9cdb9 Added full aspect awareness, rewrote fullscreen handling.
atmosfear
parents: 772
diff changeset
55
1
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
56 #include <stdio.h>
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
57 #include <stdlib.h>
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
58 #include <string.h>
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
59 #include <inttypes.h>
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
60
26203
0d255d03016f #include config.h before all other headers.
diego
parents: 25596
diff changeset
61 #include "config.h"
17932
3fe3b2b3a6ce Convert all if(verbose>X) to mp_msg_test calls.
diego
parents: 17245
diff changeset
62 #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
63 #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
64 #include "help_mp.h"
1
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
65 #include "video_out.h"
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
66 #include "video_out_internal.h"
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
67
354
7de9e48c83a5 memcpy() moved mmx.h -> fastmemcpy.h
arpi_esp
parents: 351
diff changeset
68 #include "fastmemcpy.h"
616
41d6eec69b60 clean up
pontscho
parents: 612
diff changeset
69 #include "sub.h"
2071
7f27b212e07b Add debug printfs to aspect(), add aspect() usage to vo_sdl.
atmos4
parents: 1710
diff changeset
70 #include "aspect.h"
5894
af9efcb80244 Use new style query_formats flags. Fixes bug with flip.
ksorim
parents: 5834
diff changeset
71 #include "libmpcodecs/vfcap.h"
350
601822cc8c52 applied MMX2 memcpy() patch by Nick Kurshev
arpi_esp
parents: 331
diff changeset
72
27377
d58d06eafe83 Change a bunch of X11-specific preprocessor directives.
diego
parents: 26739
diff changeset
73 #ifdef CONFIG_X11
772
e70a52f17f92 Added flipped video support and activate/deactivate screensaver under X.
atmosfear
parents: 770
diff changeset
74 #include <X11/Xlib.h>
e70a52f17f92 Added flipped video support and activate/deactivate screensaver under X.
atmosfear
parents: 770
diff changeset
75 #include "x11_common.h"
e70a52f17f92 Added flipped video support and activate/deactivate screensaver under X.
atmosfear
parents: 770
diff changeset
76 #endif
e70a52f17f92 Added flipped video support and activate/deactivate screensaver under X.
atmosfear
parents: 770
diff changeset
77
13787
e047e70a9767 Handle "xxx.h" vs "../xxx.h" include paths in a consistent way.
diego
parents: 12787
diff changeset
78 #include "input/input.h"
e047e70a9767 Handle "xxx.h" vs "../xxx.h" include paths in a consistent way.
diego
parents: 12787
diff changeset
79 #include "input/mouse.h"
14857
29a09f111b41 Remove -noxv and -forcexv command line options and replace them by
ivo
parents: 14577
diff changeset
80 #include "subopt-helper.h"
22823
98eaf29b5dee Code cleanup: don't include a .c file in mplayer.c and fix a few
rathann
parents: 21964
diff changeset
81 #include "mp_fifo.h"
4590
3a76a4dcde2c Applied patch mouse whell patch from Wojtek Kaniewski <wojtekka@bydg.pdi.net>
albeu
parents: 4530
diff changeset
82
25216
3aee342be929 Make vo info structs const
reimar
parents: 24871
diff changeset
83 static const vo_info_t info =
1
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
84 {
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
85 "SDL YUV/RGB/BGR renderer (SDL v1.1.7+ only!)",
1
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
86 "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
87 "Ryan C. Gordon <icculus@lokigames.com>, Felix Buenemann <atmosfear@users.sourceforge.net>",
1
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
88 ""
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
89 };
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
90
25220
c9e9ac2008c2 Mark the vo_functions_t definitions as const where possible.
reimar
parents: 25216
diff changeset
91 const LIBVO_EXTERN(sdl)
8148
5b39e79af5fe removed get_info, using the same sheme as in libmpcodecs instead
alex
parents: 8123
diff changeset
92
1238
e7d98f8f9459 Corrected SDL include path.
atmos4
parents: 1219
diff changeset
93 #include <SDL.h>
3609
c9876f5f4ac5 better fullscreen-mode selection, patch by dunno :)
atmos4
parents: 2249
diff changeset
94 //#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
95
b36fb1ae4b53 applied solaris8/netbsd/other fixes patch by J¸«ärgen Keil <jk@tools.de>
arpi_esp
parents: 973
diff changeset
96
4807
156482788caf osd outside movie support for vo_sdl, patch by Fredrik Kuivinen
atmos4
parents: 4790
diff changeset
97 #ifdef SDL_ENABLE_LOCKS
156482788caf osd outside movie support for vo_sdl, patch by Fredrik Kuivinen
atmos4
parents: 4790
diff changeset
98 #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
99 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
100 return x; \
156482788caf osd outside movie support for vo_sdl, patch by Fredrik Kuivinen
atmos4
parents: 4790
diff changeset
101 }
156482788caf osd outside movie support for vo_sdl, patch by Fredrik Kuivinen
atmos4
parents: 4790
diff changeset
102 #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
103
156482788caf osd outside movie support for vo_sdl, patch by Fredrik Kuivinen
atmos4
parents: 4790
diff changeset
104 #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
105 if(SDL_LockSurface (srf)) { \
28021
1bbc09f93acb Remove a lot of completely pointless mp_msg_test calls.
reimar
parents: 27706
diff changeset
106 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
107 return x; \
156482788caf osd outside movie support for vo_sdl, patch by Fredrik Kuivinen
atmos4
parents: 4790
diff changeset
108 } \
156482788caf osd outside movie support for vo_sdl, patch by Fredrik Kuivinen
atmos4
parents: 4790
diff changeset
109 }
156482788caf osd outside movie support for vo_sdl, patch by Fredrik Kuivinen
atmos4
parents: 4790
diff changeset
110
156482788caf osd outside movie support for vo_sdl, patch by Fredrik Kuivinen
atmos4
parents: 4790
diff changeset
111 #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
112 SDL_UnlockSurface (srf);
156482788caf osd outside movie support for vo_sdl, patch by Fredrik Kuivinen
atmos4
parents: 4790
diff changeset
113 #else
156482788caf osd outside movie support for vo_sdl, patch by Fredrik Kuivinen
atmos4
parents: 4790
diff changeset
114 #define SDL_OVR_LOCK(x)
156482788caf osd outside movie support for vo_sdl, patch by Fredrik Kuivinen
atmos4
parents: 4790
diff changeset
115 #define SDL_OVR_UNLOCK
156482788caf osd outside movie support for vo_sdl, patch by Fredrik Kuivinen
atmos4
parents: 4790
diff changeset
116 #define SDL_SRF_LOCK(srf, x)
156482788caf osd outside movie support for vo_sdl, patch by Fredrik Kuivinen
atmos4
parents: 4790
diff changeset
117 #define SDL_SRF_UNLOCK(srf)
156482788caf osd outside movie support for vo_sdl, patch by Fredrik Kuivinen
atmos4
parents: 4790
diff changeset
118 #endif
156482788caf osd outside movie support for vo_sdl, patch by Fredrik Kuivinen
atmos4
parents: 4790
diff changeset
119
1
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
120 /** Private SDL Data structure **/
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
121
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
122 static struct sdl_priv_s {
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
123
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
124 /* 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
125 char driver[8];
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
b9735f811d7d 15,16,24,32Bit rgb/bgr support added, aalib fixed, performance optimizations, code cleanup and so much more...
atmosfear
parents: 616
diff changeset
127 /* SDL display surface */
1
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
128 SDL_Surface *surface;
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
129
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 /* 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
131 SDL_Surface *rgbsurface;
b9735f811d7d 15,16,24,32Bit rgb/bgr support added, aalib fixed, performance optimizations, code cleanup and so much more...
atmosfear
parents: 616
diff changeset
132
b9735f811d7d 15,16,24,32Bit rgb/bgr support added, aalib fixed, performance optimizations, code cleanup and so much more...
atmosfear
parents: 616
diff changeset
133 /* SDL YUV overlay */
1
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
134 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
135
1
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
136 /* available fullscreen modes */
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
137 SDL_Rect **fullmodes;
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
138
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
139 /* surface attributes for fullscreen and windowed mode */
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
140 Uint32 sdlflags, sdlfullflags;
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
141
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
142 /* save the windowed output extents */
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
143 SDL_Rect windowsize;
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
144
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
145 /* Bits per Pixel */
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
146 Uint8 bpp;
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
147
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
148 /* 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
149 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
150 #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
151 #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
152 #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
153
1219
e169f798ff71 Sync with SF cvs. (Bugfixed YUV aalib and RGB/BGR32 converted modes.)
atmos4
parents: 1197
diff changeset
154 /* use direct blitting to surface */
e169f798ff71 Sync with SF cvs. (Bugfixed YUV aalib and RGB/BGR32 converted modes.)
atmos4
parents: 1197
diff changeset
155 int dblit;
e169f798ff71 Sync with SF cvs. (Bugfixed YUV aalib and RGB/BGR32 converted modes.)
atmos4
parents: 1197
diff changeset
156
1
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
157 /* current fullscreen mode, 0 = highest available fullscreen mode */
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
158 int fullmode;
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
159
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
160 /* YUV ints */
784
dee122f9cdb9 Added full aspect awareness, rewrote fullscreen handling.
atmosfear
parents: 772
diff changeset
161 int framePlaneY, framePlaneUV, framePlaneYUY;
dee122f9cdb9 Added full aspect awareness, rewrote fullscreen handling.
atmosfear
parents: 772
diff changeset
162 int stridePlaneY, stridePlaneUV, stridePlaneYUY;
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
163
b9735f811d7d 15,16,24,32Bit rgb/bgr support added, aalib fixed, performance optimizations, code cleanup and so much more...
atmosfear
parents: 616
diff changeset
164 /* 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
165 int framePlaneRGB;
772
e70a52f17f92 Added flipped video support and activate/deactivate screensaver under X.
atmosfear
parents: 770
diff changeset
166 int stridePlaneRGB;
e70a52f17f92 Added flipped video support and activate/deactivate screensaver under X.
atmosfear
parents: 770
diff changeset
167
e70a52f17f92 Added flipped video support and activate/deactivate screensaver under X.
atmosfear
parents: 770
diff changeset
168 /* Flip image */
e70a52f17f92 Added flipped video support and activate/deactivate screensaver under X.
atmosfear
parents: 770
diff changeset
169 int flip;
784
dee122f9cdb9 Added full aspect awareness, rewrote fullscreen handling.
atmosfear
parents: 772
diff changeset
170
dee122f9cdb9 Added full aspect awareness, rewrote fullscreen handling.
atmosfear
parents: 772
diff changeset
171 /* fullscreen behaviour; see init */
dee122f9cdb9 Added full aspect awareness, rewrote fullscreen handling.
atmosfear
parents: 772
diff changeset
172 int fulltype;
dee122f9cdb9 Added full aspect awareness, rewrote fullscreen handling.
atmosfear
parents: 772
diff changeset
173
951
9fb176abc1a7 Some fixups for SDL/aalib.
atmosfear
parents: 862
diff changeset
174 /* is X running (0/1) */
9fb176abc1a7 Some fixups for SDL/aalib.
atmosfear
parents: 862
diff changeset
175 int X;
9fb176abc1a7 Some fixups for SDL/aalib.
atmosfear
parents: 862
diff changeset
176
784
dee122f9cdb9 Added full aspect awareness, rewrote fullscreen handling.
atmosfear
parents: 772
diff changeset
177 /* X11 Resolution */
dee122f9cdb9 Added full aspect awareness, rewrote fullscreen handling.
atmosfear
parents: 772
diff changeset
178 int XWidth, XHeight;
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
179
784
dee122f9cdb9 Added full aspect awareness, rewrote fullscreen handling.
atmosfear
parents: 772
diff changeset
180 /* original image dimensions */
dee122f9cdb9 Added full aspect awareness, rewrote fullscreen handling.
atmosfear
parents: 772
diff changeset
181 int width, height;
dee122f9cdb9 Added full aspect awareness, rewrote fullscreen handling.
atmosfear
parents: 772
diff changeset
182
dee122f9cdb9 Added full aspect awareness, rewrote fullscreen handling.
atmosfear
parents: 772
diff changeset
183 /* destination dimensions */
dee122f9cdb9 Added full aspect awareness, rewrote fullscreen handling.
atmosfear
parents: 772
diff changeset
184 int dstwidth, dstheight;
dee122f9cdb9 Added full aspect awareness, rewrote fullscreen handling.
atmosfear
parents: 772
diff changeset
185
4807
156482788caf osd outside movie support for vo_sdl, patch by Fredrik Kuivinen
atmos4
parents: 4790
diff changeset
186 /* 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
187 int y;
156482788caf osd outside movie support for vo_sdl, patch by Fredrik Kuivinen
atmos4
parents: 4790
diff changeset
188
156482788caf osd outside movie support for vo_sdl, patch by Fredrik Kuivinen
atmos4
parents: 4790
diff changeset
189 /* 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
190 int y_screen_top, y_screen_bottom;
156482788caf osd outside movie support for vo_sdl, patch by Fredrik Kuivinen
atmos4
parents: 4790
diff changeset
191
156482788caf osd outside movie support for vo_sdl, patch by Fredrik Kuivinen
atmos4
parents: 4790
diff changeset
192 /* 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
193 int osd_has_changed;
156482788caf osd outside movie support for vo_sdl, patch by Fredrik Kuivinen
atmos4
parents: 4790
diff changeset
194
784
dee122f9cdb9 Added full aspect awareness, rewrote fullscreen handling.
atmosfear
parents: 772
diff changeset
195 /* source image format (YUV/RGB/...) */
5058
33c01c795987 sdl dr support
atmos4
parents: 4925
diff changeset
196 uint32_t format;
4807
156482788caf osd outside movie support for vo_sdl, patch by Fredrik Kuivinen
atmos4
parents: 4790
diff changeset
197
156482788caf osd outside movie support for vo_sdl, patch by Fredrik Kuivinen
atmos4
parents: 4790
diff changeset
198 /* 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
199 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
200 */
156482788caf osd outside movie support for vo_sdl, patch by Fredrik Kuivinen
atmos4
parents: 4790
diff changeset
201 SDL_Rect dirty_off_frame[2];
1
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
202 } sdl_priv;
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
203
4807
156482788caf osd outside movie support for vo_sdl, patch by Fredrik Kuivinen
atmos4
parents: 4790
diff changeset
204 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
205 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
206 static int setup_surfaces(void);
156482788caf osd outside movie support for vo_sdl, patch by Fredrik Kuivinen
atmos4
parents: 4790
diff changeset
207 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
208 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
209
156482788caf osd outside movie support for vo_sdl, patch by Fredrik Kuivinen
atmos4
parents: 4790
diff changeset
210 /* 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
211 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
212 {
156482788caf osd outside movie support for vo_sdl, patch by Fredrik Kuivinen
atmos4
parents: 4790
diff changeset
213 if(rect->x < 0 || rect->y < 0) {
156482788caf osd outside movie support for vo_sdl, patch by Fredrik Kuivinen
atmos4
parents: 4790
diff changeset
214 rect->x = x;
156482788caf osd outside movie support for vo_sdl, patch by Fredrik Kuivinen
atmos4
parents: 4790
diff changeset
215 rect->y = y;
156482788caf osd outside movie support for vo_sdl, patch by Fredrik Kuivinen
atmos4
parents: 4790
diff changeset
216 rect->w = w;
156482788caf osd outside movie support for vo_sdl, patch by Fredrik Kuivinen
atmos4
parents: 4790
diff changeset
217 rect->h = h;
156482788caf osd outside movie support for vo_sdl, patch by Fredrik Kuivinen
atmos4
parents: 4790
diff changeset
218 return;
156482788caf osd outside movie support for vo_sdl, patch by Fredrik Kuivinen
atmos4
parents: 4790
diff changeset
219 }
156482788caf osd outside movie support for vo_sdl, patch by Fredrik Kuivinen
atmos4
parents: 4790
diff changeset
220
156482788caf osd outside movie support for vo_sdl, patch by Fredrik Kuivinen
atmos4
parents: 4790
diff changeset
221 if(rect->x > x)
156482788caf osd outside movie support for vo_sdl, patch by Fredrik Kuivinen
atmos4
parents: 4790
diff changeset
222 rect->x = x;
156482788caf osd outside movie support for vo_sdl, patch by Fredrik Kuivinen
atmos4
parents: 4790
diff changeset
223
156482788caf osd outside movie support for vo_sdl, patch by Fredrik Kuivinen
atmos4
parents: 4790
diff changeset
224 if(rect->y > y)
156482788caf osd outside movie support for vo_sdl, patch by Fredrik Kuivinen
atmos4
parents: 4790
diff changeset
225 rect->y = y;
156482788caf osd outside movie support for vo_sdl, patch by Fredrik Kuivinen
atmos4
parents: 4790
diff changeset
226
156482788caf osd outside movie support for vo_sdl, patch by Fredrik Kuivinen
atmos4
parents: 4790
diff changeset
227 if(rect->x + rect->w < x + w)
156482788caf osd outside movie support for vo_sdl, patch by Fredrik Kuivinen
atmos4
parents: 4790
diff changeset
228 rect->w = x + w - rect->x;
156482788caf osd outside movie support for vo_sdl, patch by Fredrik Kuivinen
atmos4
parents: 4790
diff changeset
229
156482788caf osd outside movie support for vo_sdl, patch by Fredrik Kuivinen
atmos4
parents: 4790
diff changeset
230 if(rect->y + rect->h < y + h)
156482788caf osd outside movie support for vo_sdl, patch by Fredrik Kuivinen
atmos4
parents: 4790
diff changeset
231 rect->h = y + h - rect->y;
156482788caf osd outside movie support for vo_sdl, patch by Fredrik Kuivinen
atmos4
parents: 4790
diff changeset
232 }
1
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
233
351
2c4ded6ffebc - Full OSD and subtitle support added
atmosfear
parents: 350
diff changeset
234 /** libvo Plugin functions **/
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 /**
2c4ded6ffebc - Full OSD and subtitle support added
atmosfear
parents: 350
diff changeset
237 * draw_alpha is used for osd and subtitle display.
2c4ded6ffebc - Full OSD and subtitle support added
atmosfear
parents: 350
diff changeset
238 *
2c4ded6ffebc - Full OSD and subtitle support added
atmosfear
parents: 350
diff changeset
239 **/
2c4ded6ffebc - Full OSD and subtitle support added
atmosfear
parents: 350
diff changeset
240
2c4ded6ffebc - Full OSD and subtitle support added
atmosfear
parents: 350
diff changeset
241 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
242 struct sdl_priv_s *priv = &sdl_priv;
351
2c4ded6ffebc - Full OSD and subtitle support added
atmosfear
parents: 350
diff changeset
243
4807
156482788caf osd outside movie support for vo_sdl, patch by Fredrik Kuivinen
atmos4
parents: 4790
diff changeset
244 if(priv->osd_has_changed) {
156482788caf osd outside movie support for vo_sdl, patch by Fredrik Kuivinen
atmos4
parents: 4790
diff changeset
245 /* 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
246 if(priv->y >= y0) {
156482788caf osd outside movie support for vo_sdl, patch by Fredrik Kuivinen
atmos4
parents: 4790
diff changeset
247 /* Make sure we don't mark part of the frame area dirty */
156482788caf osd outside movie support for vo_sdl, patch by Fredrik Kuivinen
atmos4
parents: 4790
diff changeset
248 if(h + y0 > priv->y)
156482788caf osd outside movie support for vo_sdl, patch by Fredrik Kuivinen
atmos4
parents: 4790
diff changeset
249 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
250 else
156482788caf osd outside movie support for vo_sdl, patch by Fredrik Kuivinen
atmos4
parents: 4790
diff changeset
251 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
252 }
156482788caf osd outside movie support for vo_sdl, patch by Fredrik Kuivinen
atmos4
parents: 4790
diff changeset
253 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
254 /* Make sure we don't mark part of the frame area dirty */
156482788caf osd outside movie support for vo_sdl, patch by Fredrik Kuivinen
atmos4
parents: 4790
diff changeset
255 if(y0 < priv->y + priv->height)
156482788caf osd outside movie support for vo_sdl, patch by Fredrik Kuivinen
atmos4
parents: 4790
diff changeset
256 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
257 priv->y + priv->height,
156482788caf osd outside movie support for vo_sdl, patch by Fredrik Kuivinen
atmos4
parents: 4790
diff changeset
258 w, h - ((priv->y + priv->height) - y0));
156482788caf osd outside movie support for vo_sdl, patch by Fredrik Kuivinen
atmos4
parents: 4790
diff changeset
259 else
156482788caf osd outside movie support for vo_sdl, patch by Fredrik Kuivinen
atmos4
parents: 4790
diff changeset
260 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
261 }
156482788caf osd outside movie support for vo_sdl, patch by Fredrik Kuivinen
atmos4
parents: 4790
diff changeset
262 }
156482788caf osd outside movie support for vo_sdl, patch by Fredrik Kuivinen
atmos4
parents: 4790
diff changeset
263 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
264 if(priv->y >= y0) {
156482788caf osd outside movie support for vo_sdl, patch by Fredrik Kuivinen
atmos4
parents: 4790
diff changeset
265 src = src + (priv->y - y0) * stride;
156482788caf osd outside movie support for vo_sdl, patch by Fredrik Kuivinen
atmos4
parents: 4790
diff changeset
266 srca = srca + (priv->y - y0) * stride;
156482788caf osd outside movie support for vo_sdl, patch by Fredrik Kuivinen
atmos4
parents: 4790
diff changeset
267 h -= priv->y - y0;
156482788caf osd outside movie support for vo_sdl, patch by Fredrik Kuivinen
atmos4
parents: 4790
diff changeset
268 y0 = priv->y;
156482788caf osd outside movie support for vo_sdl, patch by Fredrik Kuivinen
atmos4
parents: 4790
diff changeset
269 }
156482788caf osd outside movie support for vo_sdl, patch by Fredrik Kuivinen
atmos4
parents: 4790
diff changeset
270
156482788caf osd outside movie support for vo_sdl, patch by Fredrik Kuivinen
atmos4
parents: 4790
diff changeset
271 if(priv->y + priv->height <= y0 + h)
156482788caf osd outside movie support for vo_sdl, patch by Fredrik Kuivinen
atmos4
parents: 4790
diff changeset
272 h = priv->y + priv->height - y0;
156482788caf osd outside movie support for vo_sdl, patch by Fredrik Kuivinen
atmos4
parents: 4790
diff changeset
273
156482788caf osd outside movie support for vo_sdl, patch by Fredrik Kuivinen
atmos4
parents: 4790
diff changeset
274 if(h <= 0)
156482788caf osd outside movie support for vo_sdl, patch by Fredrik Kuivinen
atmos4
parents: 4790
diff changeset
275 return;
156482788caf osd outside movie support for vo_sdl, patch by Fredrik Kuivinen
atmos4
parents: 4790
diff changeset
276 }
156482788caf osd outside movie support for vo_sdl, patch by Fredrik Kuivinen
atmos4
parents: 4790
diff changeset
277
408
b61c5c4484f8 - applied overlay patch by Jens H
atmosfear
parents: 394
diff changeset
278 switch(priv->format) {
b61c5c4484f8 - applied overlay patch by Jens H
atmosfear
parents: 394
diff changeset
279 case IMGFMT_YV12:
b61c5c4484f8 - applied overlay patch by Jens H
atmosfear
parents: 394
diff changeset
280 case IMGFMT_I420:
b61c5c4484f8 - applied overlay patch by Jens H
atmosfear
parents: 394
diff changeset
281 case IMGFMT_IYUV:
5260
7a37ce6f3464 Fix for OSD when width != pitch
ksorim
parents: 5240
diff changeset
282 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
283 break;
b61c5c4484f8 - applied overlay patch by Jens H
atmosfear
parents: 394
diff changeset
284 case IMGFMT_YUY2:
5260
7a37ce6f3464 Fix for OSD when width != pitch
ksorim
parents: 5240
diff changeset
285 case IMGFMT_YVYU:
7a37ce6f3464 Fix for OSD when width != pitch
ksorim
parents: 5240
diff changeset
286 x0 *= 2;
7a37ce6f3464 Fix for OSD when width != pitch
ksorim
parents: 5240
diff changeset
287 vo_draw_alpha_yuy2(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
288 break;
451
e27a365b0303 fixes osd/subtitle for UYVY image format and steps back to 1.15 changes
atmosfear
parents: 448
diff changeset
289 case IMGFMT_UYVY:
5260
7a37ce6f3464 Fix for OSD when width != pitch
ksorim
parents: 5240
diff changeset
290 x0 *= 2;
7a37ce6f3464 Fix for OSD when width != pitch
ksorim
parents: 5240
diff changeset
291 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
292 break;
4807
156482788caf osd outside movie support for vo_sdl, patch by Fredrik Kuivinen
atmos4
parents: 4790
diff changeset
293
1194
40550e1458e8 Drastic! speedup of rgb code. Removed nonsens memhole fixes.
atmosfear
parents: 1188
diff changeset
294 default:
5260
7a37ce6f3464 Fix for OSD when width != pitch
ksorim
parents: 5240
diff changeset
295 if(priv->dblit) {
7a37ce6f3464 Fix for OSD when width != pitch
ksorim
parents: 5240
diff changeset
296 x0 *= priv->surface->format->BytesPerPixel;
1194
40550e1458e8 Drastic! speedup of rgb code. Removed nonsens memhole fixes.
atmosfear
parents: 1188
diff changeset
297 switch(priv->format) {
823
e09c92ca4c45 Added ability to use direct surface blitting for BGR modes.
atmosfear
parents: 784
diff changeset
298 case IMGFMT_RGB15:
e09c92ca4c45 Added ability to use direct surface blitting for BGR modes.
atmosfear
parents: 784
diff changeset
299 case IMGFMT_BGR15:
5260
7a37ce6f3464 Fix for OSD when width != pitch
ksorim
parents: 5240
diff changeset
300 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
301 break;
e09c92ca4c45 Added ability to use direct surface blitting for BGR modes.
atmosfear
parents: 784
diff changeset
302 case IMGFMT_RGB16:
e09c92ca4c45 Added ability to use direct surface blitting for BGR modes.
atmosfear
parents: 784
diff changeset
303 case IMGFMT_BGR16:
5260
7a37ce6f3464 Fix for OSD when width != pitch
ksorim
parents: 5240
diff changeset
304 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
305 break;
e09c92ca4c45 Added ability to use direct surface blitting for BGR modes.
atmosfear
parents: 784
diff changeset
306 case IMGFMT_RGB24:
e09c92ca4c45 Added ability to use direct surface blitting for BGR modes.
atmosfear
parents: 784
diff changeset
307 case IMGFMT_BGR24:
5260
7a37ce6f3464 Fix for OSD when width != pitch
ksorim
parents: 5240
diff changeset
308 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
309 break;
e09c92ca4c45 Added ability to use direct surface blitting for BGR modes.
atmosfear
parents: 784
diff changeset
310 case IMGFMT_RGB32:
e09c92ca4c45 Added ability to use direct surface blitting for BGR modes.
atmosfear
parents: 784
diff changeset
311 case IMGFMT_BGR32:
5260
7a37ce6f3464 Fix for OSD when width != pitch
ksorim
parents: 5240
diff changeset
312 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
313 break;
1194
40550e1458e8 Drastic! speedup of rgb code. Removed nonsens memhole fixes.
atmosfear
parents: 1188
diff changeset
314 }
5260
7a37ce6f3464 Fix for OSD when width != pitch
ksorim
parents: 5240
diff changeset
315 }
7a37ce6f3464 Fix for OSD when width != pitch
ksorim
parents: 5240
diff changeset
316 else {
7a37ce6f3464 Fix for OSD when width != pitch
ksorim
parents: 5240
diff changeset
317 x0 *= priv->rgbsurface->format->BytesPerPixel;
7a37ce6f3464 Fix for OSD when width != pitch
ksorim
parents: 5240
diff changeset
318 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
319 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
320 case IMGFMT_BGR15:
5260
7a37ce6f3464 Fix for OSD when width != pitch
ksorim
parents: 5240
diff changeset
321 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
322 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
323 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
324 case IMGFMT_BGR16:
5260
7a37ce6f3464 Fix for OSD when width != pitch
ksorim
parents: 5240
diff changeset
325 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
326 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
327 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
328 case IMGFMT_BGR24:
5260
7a37ce6f3464 Fix for OSD when width != pitch
ksorim
parents: 5240
diff changeset
329 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
330 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
331 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
332 case IMGFMT_BGR32:
5260
7a37ce6f3464 Fix for OSD when width != pitch
ksorim
parents: 5240
diff changeset
333 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
334 break;
5260
7a37ce6f3464 Fix for OSD when width != pitch
ksorim
parents: 5240
diff changeset
335 }
7a37ce6f3464 Fix for OSD when width != pitch
ksorim
parents: 5240
diff changeset
336 }
7a37ce6f3464 Fix for OSD when width != pitch
ksorim
parents: 5240
diff changeset
337
408
b61c5c4484f8 - applied overlay patch by Jens H
atmosfear
parents: 394
diff changeset
338 }
351
2c4ded6ffebc - Full OSD and subtitle support added
atmosfear
parents: 350
diff changeset
339 }
1
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
340
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
341
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
342 /**
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
343 * Take a null-terminated array of pointers, and find the last element.
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
344 *
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
345 * params : array == array of which we want to find the last element.
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
346 * returns : index of last NON-NULL element.
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
347 **/
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
348
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
349 static inline int findArrayEnd (SDL_Rect **array)
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
350 {
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
351 int i = 0;
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
352 while ( array[i++] ); /* keep loopin' ... */
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
353
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
354 /* return the index of the last array element */
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
355 return i - 1;
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
356 }
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
357
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
358
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
359 /**
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
360 * Open and prepare SDL output.
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
361 *
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
362 * params : *plugin ==
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
363 * *name ==
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
364 * returns : 0 on success, -1 on failure
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
365 **/
331
0f1737e626fa - Changed keypress-detection from keydown to keyup, seems to fix keyrepeat
atmosfear
parents: 265
diff changeset
366
1
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
367 static int sdl_open (void *plugin, void *name)
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
368 {
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
369 struct sdl_priv_s *priv = &sdl_priv;
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
370 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
371 /*static int opened = 0;
331
0f1737e626fa - Changed keypress-detection from keydown to keyup, seems to fix keyrepeat
atmosfear
parents: 265
diff changeset
372
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
373 if (opened)
1
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
374 return 0;
4528
bd2324553533 Fix multifile playback (sdl was not fully reinitialized).
atmos4
parents: 4433
diff changeset
375 opened = 1;*/
1
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
376
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
377
1
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
378 /* other default values */
394
f4fb35ef4c06 - added some defines to modify some sdl-out internas (see comments)
atmosfear
parents: 386
diff changeset
379 #ifdef SDL_NOHWSURFACE
28021
1bbc09f93acb Remove a lot of completely pointless mp_msg_test calls.
reimar
parents: 27706
diff changeset
380 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
381 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
382 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
383 // XXX:FIXME: ASYNCBLIT should be enabled for SMP systems
394
f4fb35ef4c06 - added some defines to modify some sdl-out internas (see comments)
atmosfear
parents: 386
diff changeset
384 #else
1194
40550e1458e8 Drastic! speedup of rgb code. Removed nonsens memhole fixes.
atmosfear
parents: 1188
diff changeset
385 /*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
386 if( mp_msg_test(MSGT_VO,MSGL_V) ) {
3fe3b2b3a6ce Convert all if(verbose>X) to mp_msg_test calls.
diego
parents: 17245
diff changeset
387 printf("SDL: using software-surface\n"); }
1194
40550e1458e8 Drastic! speedup of rgb code. Removed nonsens memhole fixes.
atmosfear
parents: 1188
diff changeset
388 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
389 priv->sdlfullflags = SDL_SWSURFACE|SDL_FULLSCREEN|SDL_ASYNCBLIT|SDL_HWACCEL|SDL_ANYFORMAT;
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
390 }
1194
40550e1458e8 Drastic! speedup of rgb code. Removed nonsens memhole fixes.
atmosfear
parents: 1188
diff changeset
391 else { */
28021
1bbc09f93acb Remove a lot of completely pointless mp_msg_test calls.
reimar
parents: 27706
diff changeset
392 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
393 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
394 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
395 // XXX:FIXME: ASYNCBLIT should be enabled for SMP systems
1194
40550e1458e8 Drastic! speedup of rgb code. Removed nonsens memhole fixes.
atmosfear
parents: 1188
diff changeset
396 //}
394
f4fb35ef4c06 - added some defines to modify some sdl-out internas (see comments)
atmosfear
parents: 386
diff changeset
397 #endif
10945
c4634177933a initial MorphOS/Amiga (GeekGadgets) support
alex
parents: 10838
diff changeset
398
26214
6fda8dde2044 Use __AMIGAOS4__ instead of AMIGA, like everywhere else.
diego
parents: 26211
diff changeset
399 #if !defined( __AMIGAOS4__ ) && !defined( __APPLE__ )
10947
df61b7fb27a1 100l to me
alex
parents: 10945
diff changeset
400 priv->sdlfullflags |= SDL_DOUBLEBUF;
7111
b65b78640d49 removed old input code
alex
parents: 6956
diff changeset
401 if (vo_doublebuffering)
b65b78640d49 removed old input code
alex
parents: 6956
diff changeset
402 priv->sdlflags |= SDL_DOUBLEBUF;
10945
c4634177933a initial MorphOS/Amiga (GeekGadgets) support
alex
parents: 10838
diff changeset
403 #endif
7111
b65b78640d49 removed old input code
alex
parents: 6956
diff changeset
404
703
fcc01494c0fe Fixed keyboard input handling and slowed down keyrepeat interval.
atmosfear
parents: 653
diff changeset
405 /* Setup Keyrepeats (500/30 are defaults) */
fcc01494c0fe Fixed keyboard input handling and slowed down keyrepeat interval.
atmosfear
parents: 653
diff changeset
406 SDL_EnableKeyRepeat(SDL_DEFAULT_REPEAT_DELAY, 100 /*SDL_DEFAULT_REPEAT_INTERVAL*/);
1
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
407
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
408 /* get information about the graphics adapter */
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
409 vidInfo = SDL_GetVideoInfo ();
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
410
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
411 /* collect all fullscreen & hardware modes available */
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
412 if (!(priv->fullmodes = SDL_ListModes (vidInfo->vfmt, priv->sdlfullflags))) {
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
413
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
414 /* non hardware accelerated fullscreen modes */
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
415 priv->sdlfullflags &= ~SDL_HWSURFACE;
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
416 priv->fullmodes = SDL_ListModes (vidInfo->vfmt, priv->sdlfullflags);
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
417 }
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
418
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
419 /* test for normal resizeable & windowed hardware accellerated surfaces */
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
420 if (!SDL_ListModes (vidInfo->vfmt, priv->sdlflags)) {
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
421
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
422 /* test for NON hardware accelerated resizeable surfaces - poor you.
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
423 * That's all we have. If this fails there's nothing left.
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
424 * Theoretically there could be Fullscreenmodes left - we ignore this for now.
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
425 */
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
426 priv->sdlflags &= ~SDL_HWSURFACE;
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
427 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
428 mp_msg(MSGT_VO,MSGL_ERR, MSGTR_LIBVO_SDL_CouldntGetAnyAcceptableSDLModeForOutput);
1
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
429 return -1;
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
430 }
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
431 }
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
432
1
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
433
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
434 /* YUV overlays need at least 16-bit color depth, but the
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
435 * display might less. The SDL AAlib target says it can only do
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
436 * 8-bits, for example. So, if the display is less than 16-bits,
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
437 * 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
438 */
1
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
439 priv->bpp = vidInfo->vfmt->BitsPerPixel;
4807
156482788caf osd outside movie support for vo_sdl, patch by Fredrik Kuivinen
atmos4
parents: 4790
diff changeset
440 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
441
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
442 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
443 "depth of (%d), but we need it to be at least 16 "
e766c07b1d5c This will hopefully fix
ksorim
parents: 5239
diff changeset
444 "bits, so we need to emulate 16-bit color. This is "
e766c07b1d5c This will hopefully fix
ksorim
parents: 5239
diff changeset
445 "going to slow things down; you might want to "
e766c07b1d5c This will hopefully fix
ksorim
parents: 5239
diff changeset
446 "increase your display's color depth, if possible.\n",
e766c07b1d5c This will hopefully fix
ksorim
parents: 5239
diff changeset
447 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
448
1
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
449 priv->bpp = 16;
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
450 }
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
451
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
452 /* We don't want those in our event queue.
b9735f811d7d 15,16,24,32Bit rgb/bgr support added, aalib fixed, performance optimizations, code cleanup and so much more...
atmosfear
parents: 616
diff changeset
453 * We use SDL_KEYUP cause SDL_KEYDOWN seems to cause problems
b9735f811d7d 15,16,24,32Bit rgb/bgr support added, aalib fixed, performance optimizations, code cleanup and so much more...
atmosfear
parents: 616
diff changeset
454 * with keys need to be pressed twice, to be recognized.
b9735f811d7d 15,16,24,32Bit rgb/bgr support added, aalib fixed, performance optimizations, code cleanup and so much more...
atmosfear
parents: 616
diff changeset
455 */
772
e70a52f17f92 Added flipped video support and activate/deactivate screensaver under X.
atmosfear
parents: 770
diff changeset
456 #ifndef BUGGY_SDL
770
0e549c933515 Got rid of aalib crashing workaround with SDL1.2.1+
atmosfear
parents: 705
diff changeset
457 SDL_EventState(SDL_ACTIVEEVENT, SDL_IGNORE);
1
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
458 SDL_EventState(SDL_MOUSEMOTION, SDL_IGNORE);
1710
381ff166925c Applied quit via windowbutton patch.
atmos4
parents: 1509
diff changeset
459 // SDL_EventState(SDL_QUIT, SDL_IGNORE);
1
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
460 SDL_EventState(SDL_SYSWMEVENT, SDL_IGNORE);
770
0e549c933515 Got rid of aalib crashing workaround with SDL1.2.1+
atmosfear
parents: 705
diff changeset
461 SDL_EventState(SDL_USEREVENT, SDL_IGNORE);
772
e70a52f17f92 Added flipped video support and activate/deactivate screensaver under X.
atmosfear
parents: 770
diff changeset
462 #endif
1
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
463
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
464 /* Success! */
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
465 return 0;
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
466 }
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
467
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
468
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
469 /**
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
470 * Close SDL, Cleanups, Free Memory
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
471 *
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
472 * params : *plugin
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
473 * returns : non-zero on success, zero on error.
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
474 **/
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
475
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
476 static int sdl_close (void)
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
477 {
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
478 struct sdl_priv_s *priv = &sdl_priv;
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
479
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
480 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
481 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
482
1
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
483 /* Cleanup YUV Overlay structure */
8840
cecb561fcb21 - init & check SDL availability at preinit() (fixes -vo sdl,mga)
arpi
parents: 8246
diff changeset
484 if (priv->overlay) {
1
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
485 SDL_FreeYUVOverlay(priv->overlay);
8840
cecb561fcb21 - init & check SDL availability at preinit() (fixes -vo sdl,mga)
arpi
parents: 8246
diff changeset
486 priv->overlay=NULL;
cecb561fcb21 - init & check SDL availability at preinit() (fixes -vo sdl,mga)
arpi
parents: 8246
diff changeset
487 }
1
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
488
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
489 /* Free RGB Surface */
8840
cecb561fcb21 - init & check SDL availability at preinit() (fixes -vo sdl,mga)
arpi
parents: 8246
diff changeset
490 if (priv->rgbsurface) {
1126
4f610bd631ac fixed some possible memleak places
al3x
parents: 1122
diff changeset
491 SDL_FreeSurface(priv->rgbsurface);
8840
cecb561fcb21 - init & check SDL availability at preinit() (fixes -vo sdl,mga)
arpi
parents: 8246
diff changeset
492 priv->rgbsurface=NULL;
cecb561fcb21 - init & check SDL availability at preinit() (fixes -vo sdl,mga)
arpi
parents: 8246
diff changeset
493 }
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
494
1
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
495 /* Free our blitting surface */
8840
cecb561fcb21 - init & check SDL availability at preinit() (fixes -vo sdl,mga)
arpi
parents: 8246
diff changeset
496 if (priv->surface) {
1
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
497 SDL_FreeSurface(priv->surface);
8840
cecb561fcb21 - init & check SDL availability at preinit() (fixes -vo sdl,mga)
arpi
parents: 8246
diff changeset
498 priv->surface=NULL;
cecb561fcb21 - init & check SDL availability at preinit() (fixes -vo sdl,mga)
arpi
parents: 8246
diff changeset
499 }
1
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
500
11000
6e35326c742f many small typo and grammar fixes
gabucino
parents: 10947
diff changeset
501 /* DON'T attempt to free the fullscreen modes array. SDL_Quit* does this for us */
1
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
502
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
503 return 0;
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
504 }
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
505
784
dee122f9cdb9 Added full aspect awareness, rewrote fullscreen handling.
atmosfear
parents: 772
diff changeset
506 /**
dee122f9cdb9 Added full aspect awareness, rewrote fullscreen handling.
atmosfear
parents: 772
diff changeset
507 * Do aspect ratio calculations
dee122f9cdb9 Added full aspect awareness, rewrote fullscreen handling.
atmosfear
parents: 772
diff changeset
508 *
dee122f9cdb9 Added full aspect awareness, rewrote fullscreen handling.
atmosfear
parents: 772
diff changeset
509 * params : srcw == sourcewidth
dee122f9cdb9 Added full aspect awareness, rewrote fullscreen handling.
atmosfear
parents: 772
diff changeset
510 * srch == sourceheight
dee122f9cdb9 Added full aspect awareness, rewrote fullscreen handling.
atmosfear
parents: 772
diff changeset
511 * dstw == destinationwidth
dee122f9cdb9 Added full aspect awareness, rewrote fullscreen handling.
atmosfear
parents: 772
diff changeset
512 * dsth == destinationheight
dee122f9cdb9 Added full aspect awareness, rewrote fullscreen handling.
atmosfear
parents: 772
diff changeset
513 *
dee122f9cdb9 Added full aspect awareness, rewrote fullscreen handling.
atmosfear
parents: 772
diff changeset
514 * 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
515 **/
dee122f9cdb9 Added full aspect awareness, rewrote fullscreen handling.
atmosfear
parents: 772
diff changeset
516
2071
7f27b212e07b Add debug printfs to aspect(), add aspect() usage to vo_sdl.
atmos4
parents: 1710
diff changeset
517 #if 0
784
dee122f9cdb9 Added full aspect awareness, rewrote fullscreen handling.
atmosfear
parents: 772
diff changeset
518 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
519 SDL_Rect newres;
28021
1bbc09f93acb Remove a lot of completely pointless mp_msg_test calls.
reimar
parents: 27706
diff changeset
520 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
521 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
522 if(newres.h > dsth) {
dee122f9cdb9 Added full aspect awareness, rewrote fullscreen handling.
atmosfear
parents: 772
diff changeset
523 newres.w = ((float)dsth / (float)newres.h) * dstw;
dee122f9cdb9 Added full aspect awareness, rewrote fullscreen handling.
atmosfear
parents: 772
diff changeset
524 newres.h = dsth;
dee122f9cdb9 Added full aspect awareness, rewrote fullscreen handling.
atmosfear
parents: 772
diff changeset
525 newres.x = (dstw - newres.w) / 2;
dee122f9cdb9 Added full aspect awareness, rewrote fullscreen handling.
atmosfear
parents: 772
diff changeset
526 newres.y = 0;
dee122f9cdb9 Added full aspect awareness, rewrote fullscreen handling.
atmosfear
parents: 772
diff changeset
527 }
dee122f9cdb9 Added full aspect awareness, rewrote fullscreen handling.
atmosfear
parents: 772
diff changeset
528 else {
dee122f9cdb9 Added full aspect awareness, rewrote fullscreen handling.
atmosfear
parents: 772
diff changeset
529 newres.w = dstw;
dee122f9cdb9 Added full aspect awareness, rewrote fullscreen handling.
atmosfear
parents: 772
diff changeset
530 newres.x = 0;
dee122f9cdb9 Added full aspect awareness, rewrote fullscreen handling.
atmosfear
parents: 772
diff changeset
531 newres.y = (dsth - newres.h) / 2;
dee122f9cdb9 Added full aspect awareness, rewrote fullscreen handling.
atmosfear
parents: 772
diff changeset
532 }
dee122f9cdb9 Added full aspect awareness, rewrote fullscreen handling.
atmosfear
parents: 772
diff changeset
533
28021
1bbc09f93acb Remove a lot of completely pointless mp_msg_test calls.
reimar
parents: 27706
diff changeset
534 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
535
dee122f9cdb9 Added full aspect awareness, rewrote fullscreen handling.
atmosfear
parents: 772
diff changeset
536 return newres;
dee122f9cdb9 Added full aspect awareness, rewrote fullscreen handling.
atmosfear
parents: 772
diff changeset
537 }
2071
7f27b212e07b Add debug printfs to aspect(), add aspect() usage to vo_sdl.
atmos4
parents: 1710
diff changeset
538 #endif
1
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
539
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
540 /**
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
541 * Sets the specified fullscreen mode.
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
542 *
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
543 * params : mode == index of the desired fullscreen mode
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
544 * returns : doesn't return
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
545 **/
784
dee122f9cdb9 Added full aspect awareness, rewrote fullscreen handling.
atmosfear
parents: 772
diff changeset
546
dee122f9cdb9 Added full aspect awareness, rewrote fullscreen handling.
atmosfear
parents: 772
diff changeset
547 #if 0
1
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
548 static void set_fullmode (int mode)
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
549 {
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
550 struct sdl_priv_s *priv = &sdl_priv;
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
551 SDL_Surface *newsurface = NULL;
97
cab74dfde6dd Felix B¸«änemann added support for horizontal scaling for aspect-ratio in
atmosfear
parents: 84
diff changeset
552 int haspect, waspect = 0;
1
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
553
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
554 /* if we haven't set a fullmode yet, default to the lowest res fullmode first */
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
555 if (mode < 0)
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
556 mode = priv->fullmode = findArrayEnd(priv->fullmodes) - 1;
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
557
97
cab74dfde6dd Felix B¸«änemann added support for horizontal scaling for aspect-ratio in
atmosfear
parents: 84
diff changeset
558 /* Calculate proper aspect ratio for fullscreen
cab74dfde6dd Felix B¸«änemann added support for horizontal scaling for aspect-ratio in
atmosfear
parents: 84
diff changeset
559 * 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
560 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
561 /* 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
562 if (haspect < 0) {
cab74dfde6dd Felix B¸«änemann added support for horizontal scaling for aspect-ratio in
atmosfear
parents: 84
diff changeset
563 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
564 waspect = priv->fullmodes[mode]->w - ((float) ((float) priv->fullmodes[mode]->h / (float) priv->height) * (float) priv->width);
cab74dfde6dd Felix B¸«änemann added support for horizontal scaling for aspect-ratio in
atmosfear
parents: 84
diff changeset
565 }
cab74dfde6dd Felix B¸«änemann added support for horizontal scaling for aspect-ratio in
atmosfear
parents: 84
diff changeset
566 // printf ("W-Aspect: %i H-Aspect: %i\n", waspect, haspect);
84
802fbd1760ae aspect ratio patch by Felix B¸«änemann
arpi_esp
parents: 31
diff changeset
567
97
cab74dfde6dd Felix B¸«änemann added support for horizontal scaling for aspect-ratio in
atmosfear
parents: 84
diff changeset
568 /* 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
569 newsurface = SDL_SetVideoMode(priv->fullmodes[mode]->w - waspect, priv->fullmodes[mode]->h - haspect, priv->bpp, priv->sdlfullflags);
1
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
570
24736
3b57dcfc8057 cosmetics: typo
diego
parents: 23619
diff changeset
571 /* if we were successful hide the mouse cursor and save the mode */
1
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
572 if (newsurface) {
1126
4f610bd631ac fixed some possible memleak places
al3x
parents: 1122
diff changeset
573 if (priv->surface)
4f610bd631ac fixed some possible memleak places
al3x
parents: 1122
diff changeset
574 SDL_FreeSurface(priv->surface);
1
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
575 priv->surface = newsurface;
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
576 SDL_ShowCursor(0);
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
577 }
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
578 }
784
dee122f9cdb9 Added full aspect awareness, rewrote fullscreen handling.
atmosfear
parents: 772
diff changeset
579 #endif
1
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
580
4807
156482788caf osd outside movie support for vo_sdl, patch by Fredrik Kuivinen
atmos4
parents: 4790
diff changeset
581 /* Set video mode. Not fullscreen */
156482788caf osd outside movie support for vo_sdl, patch by Fredrik Kuivinen
atmos4
parents: 4790
diff changeset
582 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
583 {
156482788caf osd outside movie support for vo_sdl, patch by Fredrik Kuivinen
atmos4
parents: 4790
diff changeset
584 struct sdl_priv_s *priv = &sdl_priv;
156482788caf osd outside movie support for vo_sdl, patch by Fredrik Kuivinen
atmos4
parents: 4790
diff changeset
585 SDL_Surface* newsurface;
156482788caf osd outside movie support for vo_sdl, patch by Fredrik Kuivinen
atmos4
parents: 4790
diff changeset
586
8149
cf00aa6eb2d3 fixed mode switching on Mac
henry
parents: 8148
diff changeset
587 if(priv->rgbsurface)
cf00aa6eb2d3 fixed mode switching on Mac
henry
parents: 8148
diff changeset
588 SDL_FreeSurface(priv->rgbsurface);
cf00aa6eb2d3 fixed mode switching on Mac
henry
parents: 8148
diff changeset
589 else if(priv->overlay)
cf00aa6eb2d3 fixed mode switching on Mac
henry
parents: 8148
diff changeset
590 SDL_FreeYUVOverlay(priv->overlay);
cf00aa6eb2d3 fixed mode switching on Mac
henry
parents: 8148
diff changeset
591
cf00aa6eb2d3 fixed mode switching on Mac
henry
parents: 8148
diff changeset
592 priv->rgbsurface = NULL;
cf00aa6eb2d3 fixed mode switching on Mac
henry
parents: 8148
diff changeset
593 priv->overlay = NULL;
cf00aa6eb2d3 fixed mode switching on Mac
henry
parents: 8148
diff changeset
594
4807
156482788caf osd outside movie support for vo_sdl, patch by Fredrik Kuivinen
atmos4
parents: 4790
diff changeset
595 newsurface = SDL_SetVideoMode(width, height, bpp, sdlflags);
156482788caf osd outside movie support for vo_sdl, patch by Fredrik Kuivinen
atmos4
parents: 4790
diff changeset
596
156482788caf osd outside movie support for vo_sdl, patch by Fredrik Kuivinen
atmos4
parents: 4790
diff changeset
597 if(newsurface) {
156482788caf osd outside movie support for vo_sdl, patch by Fredrik Kuivinen
atmos4
parents: 4790
diff changeset
598
156482788caf osd outside movie support for vo_sdl, patch by Fredrik Kuivinen
atmos4
parents: 4790
diff changeset
599 /* 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
600 if(priv->surface)
156482788caf osd outside movie support for vo_sdl, patch by Fredrik Kuivinen
atmos4
parents: 4790
diff changeset
601 SDL_FreeSurface(priv->surface);
156482788caf osd outside movie support for vo_sdl, patch by Fredrik Kuivinen
atmos4
parents: 4790
diff changeset
602
156482788caf osd outside movie support for vo_sdl, patch by Fredrik Kuivinen
atmos4
parents: 4790
diff changeset
603 priv->surface = newsurface;
156482788caf osd outside movie support for vo_sdl, patch by Fredrik Kuivinen
atmos4
parents: 4790
diff changeset
604 priv->dstwidth = width;
156482788caf osd outside movie support for vo_sdl, patch by Fredrik Kuivinen
atmos4
parents: 4790
diff changeset
605 priv->dstheight = height;
156482788caf osd outside movie support for vo_sdl, patch by Fredrik Kuivinen
atmos4
parents: 4790
diff changeset
606
156482788caf osd outside movie support for vo_sdl, patch by Fredrik Kuivinen
atmos4
parents: 4790
diff changeset
607 setup_surfaces();
156482788caf osd outside movie support for vo_sdl, patch by Fredrik Kuivinen
atmos4
parents: 4790
diff changeset
608 }
156482788caf osd outside movie support for vo_sdl, patch by Fredrik Kuivinen
atmos4
parents: 4790
diff changeset
609 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
610 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
611 }
156482788caf osd outside movie support for vo_sdl, patch by Fredrik Kuivinen
atmos4
parents: 4790
diff changeset
612
784
dee122f9cdb9 Added full aspect awareness, rewrote fullscreen handling.
atmosfear
parents: 772
diff changeset
613 static void set_fullmode (int mode) {
dee122f9cdb9 Added full aspect awareness, rewrote fullscreen handling.
atmosfear
parents: 772
diff changeset
614 struct sdl_priv_s *priv = &sdl_priv;
dee122f9cdb9 Added full aspect awareness, rewrote fullscreen handling.
atmosfear
parents: 772
diff changeset
615 SDL_Surface *newsurface = NULL;
4807
156482788caf osd outside movie support for vo_sdl, patch by Fredrik Kuivinen
atmos4
parents: 4790
diff changeset
616 int screen_surface_w, screen_surface_h;
784
dee122f9cdb9 Added full aspect awareness, rewrote fullscreen handling.
atmosfear
parents: 772
diff changeset
617
8149
cf00aa6eb2d3 fixed mode switching on Mac
henry
parents: 8148
diff changeset
618 if(priv->rgbsurface)
cf00aa6eb2d3 fixed mode switching on Mac
henry
parents: 8148
diff changeset
619 SDL_FreeSurface(priv->rgbsurface);
cf00aa6eb2d3 fixed mode switching on Mac
henry
parents: 8148
diff changeset
620 else if(priv->overlay)
cf00aa6eb2d3 fixed mode switching on Mac
henry
parents: 8148
diff changeset
621 SDL_FreeYUVOverlay(priv->overlay);
cf00aa6eb2d3 fixed mode switching on Mac
henry
parents: 8148
diff changeset
622
cf00aa6eb2d3 fixed mode switching on Mac
henry
parents: 8148
diff changeset
623 priv->rgbsurface = NULL;
cf00aa6eb2d3 fixed mode switching on Mac
henry
parents: 8148
diff changeset
624 priv->overlay = NULL;
cf00aa6eb2d3 fixed mode switching on Mac
henry
parents: 8148
diff changeset
625
784
dee122f9cdb9 Added full aspect awareness, rewrote fullscreen handling.
atmosfear
parents: 772
diff changeset
626 /* 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
627 /* 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
628 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
629 screen_surface_w = priv->XWidth;
156482788caf osd outside movie support for vo_sdl, patch by Fredrik Kuivinen
atmos4
parents: 4790
diff changeset
630 screen_surface_h = priv->XHeight;
156482788caf osd outside movie support for vo_sdl, patch by Fredrik Kuivinen
atmos4
parents: 4790
diff changeset
631 }
156482788caf osd outside movie support for vo_sdl, patch by Fredrik Kuivinen
atmos4
parents: 4790
diff changeset
632 else if (mode < 0) {
8054
3d2ec2568659 fix for fs modes on widescreen displays
henry
parents: 7692
diff changeset
633 int i,j,imax;
3609
c9876f5f4ac5 better fullscreen-mode selection, patch by dunno :)
atmos4
parents: 2249
diff changeset
634 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
635 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
636 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
637 for(i = findArrayEnd(priv->fullmodes) - 1; i >=0; i--) {
4807
156482788caf osd outside movie support for vo_sdl, patch by Fredrik Kuivinen
atmos4
parents: 4790
diff changeset
638 if( (priv->fullmodes[i]->w >= priv->dstwidth) &&
156482788caf osd outside movie support for vo_sdl, patch by Fredrik Kuivinen
atmos4
parents: 4790
diff changeset
639 (priv->fullmodes[i]->h >= priv->dstheight) ) {
8054
3d2ec2568659 fix for fs modes on widescreen displays
henry
parents: 7692
diff changeset
640 imax = i;
3d2ec2568659 fix for fs modes on widescreen displays
henry
parents: 7692
diff changeset
641 for (j = findArrayEnd(priv->fullmodes) - 1; j >=0; j--) {
3d2ec2568659 fix for fs modes on widescreen displays
henry
parents: 7692
diff changeset
642 if (priv->fullmodes[j]->w > priv->fullmodes[imax]->w
3d2ec2568659 fix for fs modes on widescreen displays
henry
parents: 7692
diff changeset
643 && priv->fullmodes[j]->h == priv->fullmodes[imax]->h)
3d2ec2568659 fix for fs modes on widescreen displays
henry
parents: 7692
diff changeset
644 imax = j;
3d2ec2568659 fix for fs modes on widescreen displays
henry
parents: 7692
diff changeset
645 }
3d2ec2568659 fix for fs modes on widescreen displays
henry
parents: 7692
diff changeset
646 mode = imax;
3d2ec2568659 fix for fs modes on widescreen displays
henry
parents: 7692
diff changeset
647 break;
3d2ec2568659 fix for fs modes on widescreen displays
henry
parents: 7692
diff changeset
648 }
3609
c9876f5f4ac5 better fullscreen-mode selection, patch by dunno :)
atmos4
parents: 2249
diff changeset
649 }
28021
1bbc09f93acb Remove a lot of completely pointless mp_msg_test calls.
reimar
parents: 27706
diff changeset
650 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
651 priv->fullmode = mode;
4807
156482788caf osd outside movie support for vo_sdl, patch by Fredrik Kuivinen
atmos4
parents: 4790
diff changeset
652 screen_surface_h = priv->fullmodes[mode]->h;
156482788caf osd outside movie support for vo_sdl, patch by Fredrik Kuivinen
atmos4
parents: 4790
diff changeset
653 screen_surface_w = priv->fullmodes[mode]->w;
156482788caf osd outside movie support for vo_sdl, patch by Fredrik Kuivinen
atmos4
parents: 4790
diff changeset
654 }
156482788caf osd outside movie support for vo_sdl, patch by Fredrik Kuivinen
atmos4
parents: 4790
diff changeset
655 else {
156482788caf osd outside movie support for vo_sdl, patch by Fredrik Kuivinen
atmos4
parents: 4790
diff changeset
656 screen_surface_h = priv->fullmodes[mode]->h;
156482788caf osd outside movie support for vo_sdl, patch by Fredrik Kuivinen
atmos4
parents: 4790
diff changeset
657 screen_surface_w = priv->fullmodes[mode]->w;
3609
c9876f5f4ac5 better fullscreen-mode selection, patch by dunno :)
atmos4
parents: 2249
diff changeset
658 }
784
dee122f9cdb9 Added full aspect awareness, rewrote fullscreen handling.
atmosfear
parents: 772
diff changeset
659
4807
156482788caf osd outside movie support for vo_sdl, patch by Fredrik Kuivinen
atmos4
parents: 4790
diff changeset
660 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
661
784
dee122f9cdb9 Added full aspect awareness, rewrote fullscreen handling.
atmosfear
parents: 772
diff changeset
662 /* calculate new video size/aspect */
4807
156482788caf osd outside movie support for vo_sdl, patch by Fredrik Kuivinen
atmos4
parents: 4790
diff changeset
663 if(priv->mode == YUV) {
15212
05aa13cdf92f replace VO and VF numeric flags with #defined identifiers
henry
parents: 14876
diff changeset
664 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
665 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
666
4807
156482788caf osd outside movie support for vo_sdl, patch by Fredrik Kuivinen
atmos4
parents: 4790
diff changeset
667 aspect(&priv->dstwidth, &priv->dstheight, A_ZOOM);
784
dee122f9cdb9 Added full aspect awareness, rewrote fullscreen handling.
atmosfear
parents: 772
diff changeset
668 }
dee122f9cdb9 Added full aspect awareness, rewrote fullscreen handling.
atmosfear
parents: 772
diff changeset
669
dee122f9cdb9 Added full aspect awareness, rewrote fullscreen handling.
atmosfear
parents: 772
diff changeset
670 /* try to change to given fullscreenmode */
4807
156482788caf osd outside movie support for vo_sdl, patch by Fredrik Kuivinen
atmos4
parents: 4790
diff changeset
671 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
672 priv->sdlfullflags);
7201
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 * In Mac OS X (and possibly others?) SDL_SetVideoMode() appears to
22beff6edf75 Improved MacOS X SDL support, enable SDL main() wrapper for Darwin, remove unused envp.
atmos4
parents: 7124
diff changeset
676 * destroy the datastructure previously retrived, so we need to
22beff6edf75 Improved MacOS X SDL support, enable SDL main() wrapper for Darwin, remove unused envp.
atmos4
parents: 7124
diff changeset
677 * re-assign it. The comment in sdl_close() seems to imply that we
22beff6edf75 Improved MacOS X SDL support, enable SDL main() wrapper for Darwin, remove unused envp.
atmos4
parents: 7124
diff changeset
678 * should not free() anything.
22beff6edf75 Improved MacOS X SDL support, enable SDL main() wrapper for Darwin, remove unused envp.
atmos4
parents: 7124
diff changeset
679 */
25397
084619331d92 Replace some more broken SYS_DARWIN preprocessor conditionals with __APPLE__.
diego
parents: 25220
diff changeset
680 #ifdef __APPLE__
7201
22beff6edf75 Improved MacOS X SDL support, enable SDL main() wrapper for Darwin, remove unused envp.
atmos4
parents: 7124
diff changeset
681 {
22beff6edf75 Improved MacOS X SDL support, enable SDL main() wrapper for Darwin, remove unused envp.
atmos4
parents: 7124
diff changeset
682 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
683 vidInfo = SDL_GetVideoInfo ();
22beff6edf75 Improved MacOS X SDL support, enable SDL main() wrapper for Darwin, remove unused envp.
atmos4
parents: 7124
diff changeset
684
22beff6edf75 Improved MacOS X SDL support, enable SDL main() wrapper for Darwin, remove unused envp.
atmos4
parents: 7124
diff changeset
685 /* 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
686 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
687
22beff6edf75 Improved MacOS X SDL support, enable SDL main() wrapper for Darwin, remove unused envp.
atmos4
parents: 7124
diff changeset
688 /* 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
689 priv->sdlfullflags &= ~SDL_HWSURFACE;
22beff6edf75 Improved MacOS X SDL support, enable SDL main() wrapper for Darwin, remove unused envp.
atmos4
parents: 7124
diff changeset
690 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
691 }
22beff6edf75 Improved MacOS X SDL support, enable SDL main() wrapper for Darwin, remove unused envp.
atmos4
parents: 7124
diff changeset
692 }
22beff6edf75 Improved MacOS X SDL support, enable SDL main() wrapper for Darwin, remove unused envp.
atmos4
parents: 7124
diff changeset
693 #endif
22beff6edf75 Improved MacOS X SDL support, enable SDL main() wrapper for Darwin, remove unused envp.
atmos4
parents: 7124
diff changeset
694
22beff6edf75 Improved MacOS X SDL support, enable SDL main() wrapper for Darwin, remove unused envp.
atmos4
parents: 7124
diff changeset
695
784
dee122f9cdb9 Added full aspect awareness, rewrote fullscreen handling.
atmosfear
parents: 772
diff changeset
696
24736
3b57dcfc8057 cosmetics: typo
diego
parents: 23619
diff changeset
697 /* 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
698 if(newsurface) {
1126
4f610bd631ac fixed some possible memleak places
al3x
parents: 1122
diff changeset
699 if (priv->surface)
4f610bd631ac fixed some possible memleak places
al3x
parents: 1122
diff changeset
700 SDL_FreeSurface(priv->surface);
784
dee122f9cdb9 Added full aspect awareness, rewrote fullscreen handling.
atmosfear
parents: 772
diff changeset
701 priv->surface = newsurface;
dee122f9cdb9 Added full aspect awareness, rewrote fullscreen handling.
atmosfear
parents: 772
diff changeset
702 SDL_ShowCursor(0);
4807
156482788caf osd outside movie support for vo_sdl, patch by Fredrik Kuivinen
atmos4
parents: 4790
diff changeset
703 SDL_SRF_LOCK(priv->surface, -1)
156482788caf osd outside movie support for vo_sdl, patch by Fredrik Kuivinen
atmos4
parents: 4790
diff changeset
704 SDL_FillRect(priv->surface, NULL, 0);
156482788caf osd outside movie support for vo_sdl, patch by Fredrik Kuivinen
atmos4
parents: 4790
diff changeset
705 SDL_SRF_UNLOCK(priv->surface)
156482788caf osd outside movie support for vo_sdl, patch by Fredrik Kuivinen
atmos4
parents: 4790
diff changeset
706 setup_surfaces();
784
dee122f9cdb9 Added full aspect awareness, rewrote fullscreen handling.
atmosfear
parents: 772
diff changeset
707 }
4807
156482788caf osd outside movie support for vo_sdl, patch by Fredrik Kuivinen
atmos4
parents: 4790
diff changeset
708 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
709 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
710 }
1126
4f610bd631ac fixed some possible memleak places
al3x
parents: 1122
diff changeset
711
1
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
712
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
713 /**
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
714 * Initialize an SDL surface and an SDL YUV overlay.
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
715 *
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
716 * params : width == width of video we'll be displaying.
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
717 * height == height of video we'll be displaying.
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
718 * fullscreen == want to be fullscreen?
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
719 * title == Title for window titlebar.
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
720 * returns : non-zero on success, zero on error.
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
721 **/
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
722
16171
fd51fd1ff231 Fix the return types of all (six) libvo API functions. Used to be uint32_t, but
ivo
parents: 15212
diff changeset
723 static int
7124
eca7dbad0166 finally removed query_vaa, bes_da and vo_tune_info - the obsoleted libvo api
alex
parents: 7111
diff changeset
724 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
725 //static int sdl_setup (int width, int height)
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
726 {
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
727 struct sdl_priv_s *priv = &sdl_priv;
772
e70a52f17f92 Added flipped video support and activate/deactivate screensaver under X.
atmosfear
parents: 770
diff changeset
728
5239
fe6b890f68f2 Fix crash when playing multiple files. The bug was triggered when the first file
ksorim
parents: 5238
diff changeset
729 switch(format){
fe6b890f68f2 Fix crash when playing multiple files. The bug was triggered when the first file
ksorim
parents: 5238
diff changeset
730 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
731 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
732 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
733 case IMGFMT_YV12:
e27a365b0303 fixes osd/subtitle for UYVY image format and steps back to 1.15 changes
atmosfear
parents: 448
diff changeset
734 case IMGFMT_IYUV:
e27a365b0303 fixes osd/subtitle for UYVY image format and steps back to 1.15 changes
atmosfear
parents: 448
diff changeset
735 case IMGFMT_YUY2:
e27a365b0303 fixes osd/subtitle for UYVY image format and steps back to 1.15 changes
atmosfear
parents: 448
diff changeset
736 case IMGFMT_UYVY:
e27a365b0303 fixes osd/subtitle for UYVY image format and steps back to 1.15 changes
atmosfear
parents: 448
diff changeset
737 case IMGFMT_YVYU:
4807
156482788caf osd outside movie support for vo_sdl, patch by Fredrik Kuivinen
atmos4
parents: 4790
diff changeset
738 priv->mode = YUV;
5239
fe6b890f68f2 Fix crash when playing multiple files. The bug was triggered when the first file
ksorim
parents: 5238
diff changeset
739 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
740 case IMGFMT_BGR15:
5239
fe6b890f68f2 Fix crash when playing multiple files. The bug was triggered when the first file
ksorim
parents: 5238
diff changeset
741 case IMGFMT_BGR16:
fe6b890f68f2 Fix crash when playing multiple files. The bug was triggered when the first file
ksorim
parents: 5238
diff changeset
742 case IMGFMT_BGR24:
fe6b890f68f2 Fix crash when playing multiple files. The bug was triggered when the first file
ksorim
parents: 5238
diff changeset
743 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
744 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
745 break;
5239
fe6b890f68f2 Fix crash when playing multiple files. The bug was triggered when the first file
ksorim
parents: 5238
diff changeset
746 case IMGFMT_RGB15:
fe6b890f68f2 Fix crash when playing multiple files. The bug was triggered when the first file
ksorim
parents: 5238
diff changeset
747 case IMGFMT_RGB16:
fe6b890f68f2 Fix crash when playing multiple files. The bug was triggered when the first file
ksorim
parents: 5238
diff changeset
748 case IMGFMT_RGB24:
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
749 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
750 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
751 break;
451
e27a365b0303 fixes osd/subtitle for UYVY image format and steps back to 1.15 changes
atmosfear
parents: 448
diff changeset
752 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
753 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
754 return -1;
e27a365b0303 fixes osd/subtitle for UYVY image format and steps back to 1.15 changes
atmosfear
parents: 448
diff changeset
755 }
5239
fe6b890f68f2 Fix crash when playing multiple files. The bug was triggered when the first file
ksorim
parents: 5238
diff changeset
756
8840
cecb561fcb21 - init & check SDL availability at preinit() (fixes -vo sdl,mga)
arpi
parents: 8246
diff changeset
757 if ( vo_config_count ) sdl_close();
cecb561fcb21 - init & check SDL availability at preinit() (fixes -vo sdl,mga)
arpi
parents: 8246
diff changeset
758
28021
1bbc09f93acb Remove a lot of completely pointless mp_msg_test calls.
reimar
parents: 27706
diff changeset
759 mp_msg(MSGT_VO,MSGL_V, "SDL: Using 0x%X (%s) image format\n", format, vo_format_name(format));
5239
fe6b890f68f2 Fix crash when playing multiple files. The bug was triggered when the first file
ksorim
parents: 5238
diff changeset
760
fe6b890f68f2 Fix crash when playing multiple files. The bug was triggered when the first file
ksorim
parents: 5238
diff changeset
761 if(priv->mode != YUV) {
1219
e169f798ff71 Sync with SF cvs. (Bugfixed YUV aalib and RGB/BGR32 converted modes.)
atmos4
parents: 1197
diff changeset
762 priv->sdlflags |= SDL_ANYFORMAT;
e169f798ff71 Sync with SF cvs. (Bugfixed YUV aalib and RGB/BGR32 converted modes.)
atmos4
parents: 1197
diff changeset
763 priv->sdlfullflags |= SDL_ANYFORMAT;
e169f798ff71 Sync with SF cvs. (Bugfixed YUV aalib and RGB/BGR32 converted modes.)
atmos4
parents: 1197
diff changeset
764 }
1
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
765
4807
156482788caf osd outside movie support for vo_sdl, patch by Fredrik Kuivinen
atmos4
parents: 4790
diff changeset
766 /* SDL can only scale YUV data */
156482788caf osd outside movie support for vo_sdl, patch by Fredrik Kuivinen
atmos4
parents: 4790
diff changeset
767 if(priv->mode == RGB || priv->mode == BGR) {
156482788caf osd outside movie support for vo_sdl, patch by Fredrik Kuivinen
atmos4
parents: 4790
diff changeset
768 d_width = width;
156482788caf osd outside movie support for vo_sdl, patch by Fredrik Kuivinen
atmos4
parents: 4790
diff changeset
769 d_height = height;
156482788caf osd outside movie support for vo_sdl, patch by Fredrik Kuivinen
atmos4
parents: 4790
diff changeset
770 }
156482788caf osd outside movie support for vo_sdl, patch by Fredrik Kuivinen
atmos4
parents: 4790
diff changeset
771
156482788caf osd outside movie support for vo_sdl, patch by Fredrik Kuivinen
atmos4
parents: 4790
diff changeset
772 aspect_save_orig(width,height);
156482788caf osd outside movie support for vo_sdl, patch by Fredrik Kuivinen
atmos4
parents: 4790
diff changeset
773 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
774
156482788caf osd outside movie support for vo_sdl, patch by Fredrik Kuivinen
atmos4
parents: 4790
diff changeset
775 /* Save the original Image size */
156482788caf osd outside movie support for vo_sdl, patch by Fredrik Kuivinen
atmos4
parents: 4790
diff changeset
776 priv->width = width;
156482788caf osd outside movie support for vo_sdl, patch by Fredrik Kuivinen
atmos4
parents: 4790
diff changeset
777 priv->height = height;
156482788caf osd outside movie support for vo_sdl, patch by Fredrik Kuivinen
atmos4
parents: 4790
diff changeset
778 priv->dstwidth = d_width ? d_width : width;
156482788caf osd outside movie support for vo_sdl, patch by Fredrik Kuivinen
atmos4
parents: 4790
diff changeset
779 priv->dstheight = d_height ? d_height : height;
156482788caf osd outside movie support for vo_sdl, patch by Fredrik Kuivinen
atmos4
parents: 4790
diff changeset
780
5239
fe6b890f68f2 Fix crash when playing multiple files. The bug was triggered when the first file
ksorim
parents: 5238
diff changeset
781 priv->format = format;
4807
156482788caf osd outside movie support for vo_sdl, patch by Fredrik Kuivinen
atmos4
parents: 4790
diff changeset
782
1080
36b883428aeb init checks return value of sdl_open
al3x
parents: 1038
diff changeset
783 if (sdl_open(NULL, NULL) != 0)
36b883428aeb init checks return value of sdl_open
al3x
parents: 1038
diff changeset
784 return -1;
1
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
785
351
2c4ded6ffebc - Full OSD and subtitle support added
atmosfear
parents: 350
diff changeset
786 /* Set output window title */
2071
7f27b212e07b Add debug printfs to aspect(), add aspect() usage to vo_sdl.
atmos4
parents: 1710
diff changeset
787 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
788 //SDL_WM_SetCaption (title, title);
351
2c4ded6ffebc - Full OSD and subtitle support added
atmosfear
parents: 350
diff changeset
789
4807
156482788caf osd outside movie support for vo_sdl, patch by Fredrik Kuivinen
atmos4
parents: 4790
diff changeset
790 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
791 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
792 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
793 }
156482788caf osd outside movie support for vo_sdl, patch by Fredrik Kuivinen
atmos4
parents: 4790
diff changeset
794
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
795 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
796 priv->windowsize.h = priv->dstheight;
1
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
797
355
70833462dee9 - added code to comply with new fullscreen meaning
atmosfear
parents: 354
diff changeset
798 /* bit 0 (0x01) means fullscreen (-fs)
70833462dee9 - added code to comply with new fullscreen meaning
atmosfear
parents: 354
diff changeset
799 * bit 1 (0x02) means mode switching (-vm)
70833462dee9 - added code to comply with new fullscreen meaning
atmosfear
parents: 354
diff changeset
800 * bit 2 (0x04) enables software scaling (-zoom)
772
e70a52f17f92 Added flipped video support and activate/deactivate screensaver under X.
atmosfear
parents: 770
diff changeset
801 * bit 3 (0x08) enables flipping (-flip)
e70a52f17f92 Added flipped video support and activate/deactivate screensaver under X.
atmosfear
parents: 770
diff changeset
802 */
e70a52f17f92 Added flipped video support and activate/deactivate screensaver under X.
atmosfear
parents: 770
diff changeset
803 // printf("SDL: flags are set to: %i\n", flags);
355
70833462dee9 - added code to comply with new fullscreen meaning
atmosfear
parents: 354
diff changeset
804 // 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
805 if(flags&VOFLAG_FLIPPING) {
28021
1bbc09f93acb Remove a lot of completely pointless mp_msg_test calls.
reimar
parents: 27706
diff changeset
806 mp_msg(MSGT_VO,MSGL_V, "SDL: using flipped video (only with RGB/BGR/packed YUV)\n");
772
e70a52f17f92 Added flipped video support and activate/deactivate screensaver under X.
atmosfear
parents: 770
diff changeset
807 priv->flip = 1;
e70a52f17f92 Added flipped video support and activate/deactivate screensaver under X.
atmosfear
parents: 770
diff changeset
808 }
15212
05aa13cdf92f replace VO and VF numeric flags with #defined identifiers
henry
parents: 14876
diff changeset
809 if(flags&VOFLAG_FULLSCREEN) {
28021
1bbc09f93acb Remove a lot of completely pointless mp_msg_test calls.
reimar
parents: 27706
diff changeset
810 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
811 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
812 priv->fulltype = VOFLAG_FULLSCREEN;
784
dee122f9cdb9 Added full aspect awareness, rewrote fullscreen handling.
atmosfear
parents: 772
diff changeset
813 set_fullmode(priv->fullmode);
dee122f9cdb9 Added full aspect awareness, rewrote fullscreen handling.
atmosfear
parents: 772
diff changeset
814 /*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
815 SDL_ShowCursor(0);*/
772
e70a52f17f92 Added flipped video support and activate/deactivate screensaver under X.
atmosfear
parents: 770
diff changeset
816 } else
15212
05aa13cdf92f replace VO and VF numeric flags with #defined identifiers
henry
parents: 14876
diff changeset
817 if(flags&VOFLAG_MODESWITCHING) {
28021
1bbc09f93acb Remove a lot of completely pointless mp_msg_test calls.
reimar
parents: 27706
diff changeset
818 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
819 priv->fulltype = VOFLAG_MODESWITCHING;
784
dee122f9cdb9 Added full aspect awareness, rewrote fullscreen handling.
atmosfear
parents: 772
diff changeset
820 set_fullmode(priv->fullmode);
dee122f9cdb9 Added full aspect awareness, rewrote fullscreen handling.
atmosfear
parents: 772
diff changeset
821 /*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
822 SDL_ShowCursor(0);*/
772
e70a52f17f92 Added flipped video support and activate/deactivate screensaver under X.
atmosfear
parents: 770
diff changeset
823 } else
15212
05aa13cdf92f replace VO and VF numeric flags with #defined identifiers
henry
parents: 14876
diff changeset
824 if(flags&VOFLAG_SWSCALE) {
28021
1bbc09f93acb Remove a lot of completely pointless mp_msg_test calls.
reimar
parents: 27706
diff changeset
825 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
826 priv->fulltype = VOFLAG_SWSCALE;
784
dee122f9cdb9 Added full aspect awareness, rewrote fullscreen handling.
atmosfear
parents: 772
diff changeset
827 set_fullmode(priv->fullmode);
772
e70a52f17f92 Added flipped video support and activate/deactivate screensaver under X.
atmosfear
parents: 770
diff changeset
828 }
e70a52f17f92 Added flipped video support and activate/deactivate screensaver under X.
atmosfear
parents: 770
diff changeset
829 else {
4925
6719d1a3be53 add no fs as default for windrivers
atmos4
parents: 4807
diff changeset
830 if((strcmp(priv->driver, "x11") == 0)
6719d1a3be53 add no fs as default for windrivers
atmos4
parents: 4807
diff changeset
831 ||(strcmp(priv->driver, "windib") == 0)
6719d1a3be53 add no fs as default for windrivers
atmos4
parents: 4807
diff changeset
832 ||(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
833 ||(strcmp(priv->driver, "Quartz") == 0)
10945
c4634177933a initial MorphOS/Amiga (GeekGadgets) support
alex
parents: 10838
diff changeset
834 ||(strcmp(priv->driver, "cgx") == 0)
21734
dc54ff854d1c Amiga OS 4 support
diego
parents: 20164
diff changeset
835 ||(strcmp(priv->driver, "os4video") == 0)
10945
c4634177933a initial MorphOS/Amiga (GeekGadgets) support
alex
parents: 10838
diff changeset
836 ||((strcmp(priv->driver, "aalib") == 0) && priv->X)){
28021
1bbc09f93acb Remove a lot of completely pointless mp_msg_test calls.
reimar
parents: 27706
diff changeset
837 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
838 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
839 }
dee122f9cdb9 Added full aspect awareness, rewrote fullscreen handling.
atmosfear
parents: 772
diff changeset
840 else {
28021
1bbc09f93acb Remove a lot of completely pointless mp_msg_test calls.
reimar
parents: 27706
diff changeset
841 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
842 priv->fulltype = VOFLAG_SWSCALE;
784
dee122f9cdb9 Added full aspect awareness, rewrote fullscreen handling.
atmosfear
parents: 772
diff changeset
843 set_fullmode(priv->fullmode);
dee122f9cdb9 Added full aspect awareness, rewrote fullscreen handling.
atmosfear
parents: 772
diff changeset
844 }
772
e70a52f17f92 Added flipped video support and activate/deactivate screensaver under X.
atmosfear
parents: 770
diff changeset
845 }
e70a52f17f92 Added flipped video support and activate/deactivate screensaver under X.
atmosfear
parents: 770
diff changeset
846
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
847 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
848 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
849 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
850 }
1
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
851
4807
156482788caf osd outside movie support for vo_sdl, patch by Fredrik Kuivinen
atmos4
parents: 4790
diff changeset
852 return 0;
156482788caf osd outside movie support for vo_sdl, patch by Fredrik Kuivinen
atmos4
parents: 4790
diff changeset
853 }
156482788caf osd outside movie support for vo_sdl, patch by Fredrik Kuivinen
atmos4
parents: 4790
diff changeset
854
156482788caf osd outside movie support for vo_sdl, patch by Fredrik Kuivinen
atmos4
parents: 4790
diff changeset
855 /* 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
856 * 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
857 * 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
858 * 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
859 */
156482788caf osd outside movie support for vo_sdl, patch by Fredrik Kuivinen
atmos4
parents: 4790
diff changeset
860 static int setup_surfaces(void)
156482788caf osd outside movie support for vo_sdl, patch by Fredrik Kuivinen
atmos4
parents: 4790
diff changeset
861 {
156482788caf osd outside movie support for vo_sdl, patch by Fredrik Kuivinen
atmos4
parents: 4790
diff changeset
862 struct sdl_priv_s *priv = &sdl_priv;
156482788caf osd outside movie support for vo_sdl, patch by Fredrik Kuivinen
atmos4
parents: 4790
diff changeset
863 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
864 int surfwidth, surfheight;
156482788caf osd outside movie support for vo_sdl, patch by Fredrik Kuivinen
atmos4
parents: 4790
diff changeset
865
5238
182fc3f585e8 Fix crash when SDL had to do rgb -> rgb conversion. Removed some code
ksorim
parents: 5058
diff changeset
866 surfwidth = priv->width;
4807
156482788caf osd outside movie support for vo_sdl, patch by Fredrik Kuivinen
atmos4
parents: 4790
diff changeset
867 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
868 surfheight&= ~1;
4807
156482788caf osd outside movie support for vo_sdl, patch by Fredrik Kuivinen
atmos4
parents: 4790
diff changeset
869 /* 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
870 priv->y = (surfheight - priv->height) / 2;
156482788caf osd outside movie support for vo_sdl, patch by Fredrik Kuivinen
atmos4
parents: 4790
diff changeset
871 priv->y_screen_top = priv->y * v_scale;
5313
0b7229832d2a Two fixes:
ksorim
parents: 5268
diff changeset
872 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
873
156482788caf osd outside movie support for vo_sdl, patch by Fredrik Kuivinen
atmos4
parents: 4790
diff changeset
874 priv->dirty_off_frame[0].x = -1;
156482788caf osd outside movie support for vo_sdl, patch by Fredrik Kuivinen
atmos4
parents: 4790
diff changeset
875 priv->dirty_off_frame[0].y = -1;
156482788caf osd outside movie support for vo_sdl, patch by Fredrik Kuivinen
atmos4
parents: 4790
diff changeset
876 priv->dirty_off_frame[1].x = -1;
156482788caf osd outside movie support for vo_sdl, patch by Fredrik Kuivinen
atmos4
parents: 4790
diff changeset
877 priv->dirty_off_frame[1].y = -1;
156482788caf osd outside movie support for vo_sdl, patch by Fredrik Kuivinen
atmos4
parents: 4790
diff changeset
878
156482788caf osd outside movie support for vo_sdl, patch by Fredrik Kuivinen
atmos4
parents: 4790
diff changeset
879 /* Make sure the entire screen is updated */
156482788caf osd outside movie support for vo_sdl, patch by Fredrik Kuivinen
atmos4
parents: 4790
diff changeset
880 vo_osd_changed(1);
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 if(priv->rgbsurface)
156482788caf osd outside movie support for vo_sdl, patch by Fredrik Kuivinen
atmos4
parents: 4790
diff changeset
883 SDL_FreeSurface(priv->rgbsurface);
156482788caf osd outside movie support for vo_sdl, patch by Fredrik Kuivinen
atmos4
parents: 4790
diff changeset
884 else if(priv->overlay)
156482788caf osd outside movie support for vo_sdl, patch by Fredrik Kuivinen
atmos4
parents: 4790
diff changeset
885 SDL_FreeYUVOverlay(priv->overlay);
156482788caf osd outside movie support for vo_sdl, patch by Fredrik Kuivinen
atmos4
parents: 4790
diff changeset
886
5238
182fc3f585e8 Fix crash when SDL had to do rgb -> rgb conversion. Removed some code
ksorim
parents: 5058
diff changeset
887 priv->rgbsurface = NULL;
182fc3f585e8 Fix crash when SDL had to do rgb -> rgb conversion. Removed some code
ksorim
parents: 5058
diff changeset
888 priv->overlay = NULL;
182fc3f585e8 Fix crash when SDL had to do rgb -> rgb conversion. Removed some code
ksorim
parents: 5058
diff changeset
889
182fc3f585e8 Fix crash when SDL had to do rgb -> rgb conversion. Removed some code
ksorim
parents: 5058
diff changeset
890 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
891 if(strcmp(priv->driver, "x11") == 0) {
4807
156482788caf osd outside movie support for vo_sdl, patch by Fredrik Kuivinen
atmos4
parents: 4790
diff changeset
892 priv->dblit = 1;
156482788caf osd outside movie support for vo_sdl, patch by Fredrik Kuivinen
atmos4
parents: 4790
diff changeset
893 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
894 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
895 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
896 return 0;
156482788caf osd outside movie support for vo_sdl, patch by Fredrik Kuivinen
atmos4
parents: 4790
diff changeset
897 }
156482788caf osd outside movie support for vo_sdl, patch by Fredrik Kuivinen
atmos4
parents: 4790
diff changeset
898 }
156482788caf osd outside movie support for vo_sdl, patch by Fredrik Kuivinen
atmos4
parents: 4790
diff changeset
899
156482788caf osd outside movie support for vo_sdl, patch by Fredrik Kuivinen
atmos4
parents: 4790
diff changeset
900 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
901 /* Initialize and create the RGB Surface used for video out in BGR/RGB 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
902 //SDL_Surface *SDL_CreateRGBSurface(Uint32 flags, int width, int height, int depth, Uint32 Rmask, Uint32 Gmask, Uint32 Bmask, Uint32 Amask);
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 // 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
904 // 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
905 // 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
906 // 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
907 // 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
908 // 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
909 case IMGFMT_RGB15:
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, 15, 31, 992, 31744, 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
911 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
912 case IMGFMT_BGR15:
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, 15, 31744, 992, 31, 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
914 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
915 case IMGFMT_RGB16:
5238
182fc3f585e8 Fix crash when SDL had to do rgb -> rgb conversion. Removed some code
ksorim
parents: 5058
diff changeset
916 priv->rgbsurface = SDL_CreateRGBSurface (SDL_SRCCOLORKEY, surfwidth, surfheight, 16, 31, 2016, 63488, 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
917 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
918 case IMGFMT_BGR16:
5238
182fc3f585e8 Fix crash when SDL had to do rgb -> rgb conversion. Removed some code
ksorim
parents: 5058
diff changeset
919 priv->rgbsurface = SDL_CreateRGBSurface (SDL_SRCCOLORKEY, surfwidth, surfheight, 16, 63488, 2016, 31, 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
920 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
921 case IMGFMT_RGB24:
5238
182fc3f585e8 Fix crash when SDL had to do rgb -> rgb conversion. Removed some code
ksorim
parents: 5058
diff changeset
922 priv->rgbsurface = SDL_CreateRGBSurface (SDL_SRCCOLORKEY, surfwidth, surfheight, 24, 0x0000FF, 0x00FF00, 0xFF0000, 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
923 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
924 case IMGFMT_BGR24:
5238
182fc3f585e8 Fix crash when SDL had to do rgb -> rgb conversion. Removed some code
ksorim
parents: 5058
diff changeset
925 priv->rgbsurface = SDL_CreateRGBSurface (SDL_SRCCOLORKEY, surfwidth, surfheight, 24, 0xFF0000, 0x00FF00, 0x0000FF, 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
926 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
927 case IMGFMT_RGB32:
5238
182fc3f585e8 Fix crash when SDL had to do rgb -> rgb conversion. Removed some code
ksorim
parents: 5058
diff changeset
928 priv->rgbsurface = SDL_CreateRGBSurface (SDL_SRCCOLORKEY, surfwidth, surfheight, 32, 0x000000FF, 0x0000FF00, 0x00FF0000, 0/*0xFF000000*/);
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
929 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
930 case IMGFMT_BGR32:
5238
182fc3f585e8 Fix crash when SDL had to do rgb -> rgb conversion. Removed some code
ksorim
parents: 5058
diff changeset
931 priv->rgbsurface = SDL_CreateRGBSurface (SDL_SRCCOLORKEY, surfwidth, surfheight, 32, 0x00FF0000, 0x0000FF00, 0x000000FF, 0/*0xFF000000*/);
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
932 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
933 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
934 /* 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
935 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
936 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
937 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
938 }
4807
156482788caf osd outside movie support for vo_sdl, patch by Fredrik Kuivinen
atmos4
parents: 4790
diff changeset
939 priv->framePlaneY = priv->width * priv->height;
156482788caf osd outside movie support for vo_sdl, patch by Fredrik Kuivinen
atmos4
parents: 4790
diff changeset
940 priv->framePlaneUV = (priv->width * priv->height) >> 2;
156482788caf osd outside movie support for vo_sdl, patch by Fredrik Kuivinen
atmos4
parents: 4790
diff changeset
941 priv->framePlaneYUY = priv->width * priv->height * 2;
156482788caf osd outside movie support for vo_sdl, patch by Fredrik Kuivinen
atmos4
parents: 4790
diff changeset
942 priv->stridePlaneY = priv->width;
156482788caf osd outside movie support for vo_sdl, patch by Fredrik Kuivinen
atmos4
parents: 4790
diff changeset
943 priv->stridePlaneUV = priv->width/2;
156482788caf osd outside movie support for vo_sdl, patch by Fredrik Kuivinen
atmos4
parents: 4790
diff changeset
944 priv->stridePlaneYUY = priv->width * 2;
1
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
945 }
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
946
5238
182fc3f585e8 Fix crash when SDL had to do rgb -> rgb conversion. Removed some code
ksorim
parents: 5058
diff changeset
947 if(priv->mode != YUV) {
182fc3f585e8 Fix crash when SDL had to do rgb -> rgb conversion. Removed some code
ksorim
parents: 5058
diff changeset
948 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
949 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
950 return -1;
182fc3f585e8 Fix crash when SDL had to do rgb -> rgb conversion. Removed some code
ksorim
parents: 5058
diff changeset
951 }
182fc3f585e8 Fix crash when SDL had to do rgb -> rgb conversion. Removed some code
ksorim
parents: 5058
diff changeset
952
182fc3f585e8 Fix crash when SDL had to do rgb -> rgb conversion. Removed some code
ksorim
parents: 5058
diff changeset
953 priv->dblit = 0;
182fc3f585e8 Fix crash when SDL had to do rgb -> rgb conversion. Removed some code
ksorim
parents: 5058
diff changeset
954
182fc3f585e8 Fix crash when SDL had to do rgb -> rgb conversion. Removed some code
ksorim
parents: 5058
diff changeset
955 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
956 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
957
182fc3f585e8 Fix crash when SDL had to do rgb -> rgb conversion. Removed some code
ksorim
parents: 5058
diff changeset
958 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
959 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
960 }
182fc3f585e8 Fix crash when SDL had to do rgb -> rgb conversion. Removed some code
ksorim
parents: 5058
diff changeset
961
4807
156482788caf osd outside movie support for vo_sdl, patch by Fredrik Kuivinen
atmos4
parents: 4790
diff changeset
962 erase_rectangle(0, 0, surfwidth, surfheight);
156482788caf osd outside movie support for vo_sdl, patch by Fredrik Kuivinen
atmos4
parents: 4790
diff changeset
963
1
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
964 return 0;
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
965 }
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
966
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
967
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
968 /**
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
969 * Draw a frame to the SDL YUV overlay.
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
970 *
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
971 * params : *src[] == the Y, U, and V planes that make up the frame.
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
972 * returns : non-zero on success, zero on error.
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
973 **/
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
974
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
975 //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
976 static int draw_frame(uint8_t *src[])
1
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
977 {
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
978 struct sdl_priv_s *priv = &sdl_priv;
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
979 uint8_t *dst;
772
e70a52f17f92 Added flipped video support and activate/deactivate screensaver under X.
atmosfear
parents: 770
diff changeset
980 int i;
e70a52f17f92 Added flipped video support and activate/deactivate screensaver under X.
atmosfear
parents: 770
diff changeset
981 uint8_t *mysrc = src[0];
2071
7f27b212e07b Add debug printfs to aspect(), add aspect() usage to vo_sdl.
atmos4
parents: 1710
diff changeset
982
5313
0b7229832d2a Two fixes:
ksorim
parents: 5268
diff changeset
983 switch(priv->format){
1
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
984 case IMGFMT_YUY2:
408
b61c5c4484f8 - applied overlay patch by Jens H
atmosfear
parents: 394
diff changeset
985 case IMGFMT_UYVY:
b61c5c4484f8 - applied overlay patch by Jens H
atmosfear
parents: 394
diff changeset
986 case IMGFMT_YVYU:
4807
156482788caf osd outside movie support for vo_sdl, patch by Fredrik Kuivinen
atmos4
parents: 4790
diff changeset
987 SDL_OVR_LOCK(-1)
156482788caf osd outside movie support for vo_sdl, patch by Fredrik Kuivinen
atmos4
parents: 4790
diff changeset
988 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
989 if(priv->flip) {
dee122f9cdb9 Added full aspect awareness, rewrote fullscreen handling.
atmosfear
parents: 772
diff changeset
990 mysrc+=priv->framePlaneYUY;
dee122f9cdb9 Added full aspect awareness, rewrote fullscreen handling.
atmosfear
parents: 772
diff changeset
991 for(i = 0; i < priv->height; i++) {
dee122f9cdb9 Added full aspect awareness, rewrote fullscreen handling.
atmosfear
parents: 772
diff changeset
992 mysrc-=priv->stridePlaneYUY;
23457
a124f3abc1ec Replace implicit use of fast_memcpy via macro by explicit use to allow
reimar
parents: 22823
diff changeset
993 fast_memcpy (dst, mysrc, priv->stridePlaneYUY);
4807
156482788caf osd outside movie support for vo_sdl, patch by Fredrik Kuivinen
atmos4
parents: 4790
diff changeset
994 dst+=priv->overlay->pitches[0];
784
dee122f9cdb9 Added full aspect awareness, rewrote fullscreen handling.
atmosfear
parents: 772
diff changeset
995 }
dee122f9cdb9 Added full aspect awareness, rewrote fullscreen handling.
atmosfear
parents: 772
diff changeset
996 }
23457
a124f3abc1ec Replace implicit use of fast_memcpy via macro by explicit use to allow
reimar
parents: 22823
diff changeset
997 else fast_memcpy (dst, src[0], priv->framePlaneYUY);
1197
80ca716ce5e9 Made surface locks switchable via preprocessor.
atmosfear
parents: 1194
diff changeset
998 SDL_OVR_UNLOCK
1
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
999 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
1000
b9735f811d7d 15,16,24,32Bit rgb/bgr support added, aalib fixed, performance optimizations, code cleanup and so much more...
atmosfear
parents: 616
diff changeset
1001 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
1002 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
1003 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
1004 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
1005 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
1006 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
1007 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
1008 case IMGFMT_BGR32:
1219
e169f798ff71 Sync with SF cvs. (Bugfixed YUV aalib and RGB/BGR32 converted modes.)
atmos4
parents: 1197
diff changeset
1009 if(priv->dblit) {
4807
156482788caf osd outside movie support for vo_sdl, patch by Fredrik Kuivinen
atmos4
parents: 4790
diff changeset
1010 SDL_SRF_LOCK(priv->surface, -1)
7692
bbbf2e677afe for() -> memcpy_pic()
arpi
parents: 7201
diff changeset
1011 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
1012 if(priv->flip) {
40550e1458e8 Drastic! speedup of rgb code. Removed nonsens memhole fixes.
atmosfear
parents: 1188
diff changeset
1013 mysrc+=priv->framePlaneRGB;
40550e1458e8 Drastic! speedup of rgb code. Removed nonsens memhole fixes.
atmosfear
parents: 1188
diff changeset
1014 for(i = 0; i < priv->height; i++) {
40550e1458e8 Drastic! speedup of rgb code. Removed nonsens memhole fixes.
atmosfear
parents: 1188
diff changeset
1015 mysrc-=priv->stridePlaneRGB;
23457
a124f3abc1ec Replace implicit use of fast_memcpy via macro by explicit use to allow
reimar
parents: 22823
diff changeset
1016 fast_memcpy (dst, mysrc, priv->stridePlaneRGB);
4807
156482788caf osd outside movie support for vo_sdl, patch by Fredrik Kuivinen
atmos4
parents: 4790
diff changeset
1017 dst += priv->surface->pitch;
1194
40550e1458e8 Drastic! speedup of rgb code. Removed nonsens memhole fixes.
atmosfear
parents: 1188
diff changeset
1018 }
823
e09c92ca4c45 Added ability to use direct surface blitting for BGR modes.
atmosfear
parents: 784
diff changeset
1019 }
23457
a124f3abc1ec Replace implicit use of fast_memcpy via macro by explicit use to allow
reimar
parents: 22823
diff changeset
1020 else fast_memcpy (dst, src[0], priv->framePlaneRGB);
1197
80ca716ce5e9 Made surface locks switchable via preprocessor.
atmosfear
parents: 1194
diff changeset
1021 SDL_SRF_UNLOCK(priv->surface)
1194
40550e1458e8 Drastic! speedup of rgb code. Removed nonsens memhole fixes.
atmosfear
parents: 1188
diff changeset
1022 } else {
4807
156482788caf osd outside movie support for vo_sdl, patch by Fredrik Kuivinen
atmos4
parents: 4790
diff changeset
1023 SDL_SRF_LOCK(priv->rgbsurface, -1)
156482788caf osd outside movie support for vo_sdl, patch by Fredrik Kuivinen
atmos4
parents: 4790
diff changeset
1024 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
1025 if(priv->flip) {
40550e1458e8 Drastic! speedup of rgb code. Removed nonsens memhole fixes.
atmosfear
parents: 1188
diff changeset
1026 mysrc+=priv->framePlaneRGB;
40550e1458e8 Drastic! speedup of rgb code. Removed nonsens memhole fixes.
atmosfear
parents: 1188
diff changeset
1027 for(i = 0; i < priv->height; i++) {
40550e1458e8 Drastic! speedup of rgb code. Removed nonsens memhole fixes.
atmosfear
parents: 1188
diff changeset
1028 mysrc-=priv->stridePlaneRGB;
23457
a124f3abc1ec Replace implicit use of fast_memcpy via macro by explicit use to allow
reimar
parents: 22823
diff changeset
1029 fast_memcpy (dst, mysrc, priv->stridePlaneRGB);
4807
156482788caf osd outside movie support for vo_sdl, patch by Fredrik Kuivinen
atmos4
parents: 4790
diff changeset
1030 dst += priv->rgbsurface->pitch;
1194
40550e1458e8 Drastic! speedup of rgb code. Removed nonsens memhole fixes.
atmosfear
parents: 1188
diff changeset
1031 }
40550e1458e8 Drastic! speedup of rgb code. Removed nonsens memhole fixes.
atmosfear
parents: 1188
diff changeset
1032 }
23457
a124f3abc1ec Replace implicit use of fast_memcpy via macro by explicit use to allow
reimar
parents: 22823
diff changeset
1033 else fast_memcpy (dst, src[0], priv->framePlaneRGB);
1197
80ca716ce5e9 Made surface locks switchable via preprocessor.
atmosfear
parents: 1194
diff changeset
1034 SDL_SRF_UNLOCK(priv->rgbsurface)
823
e09c92ca4c45 Added ability to use direct surface blitting for BGR modes.
atmosfear
parents: 784
diff changeset
1035 }
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
1036 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
1037
1
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
1038 }
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
1039
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
1040 return 0;
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
1041 }
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
1042
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
1043
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
1044 /**
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
1045 * Draw a slice (16 rows of image) to the SDL YUV overlay.
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
1046 *
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
1047 * params : *src[] == the Y, U, and V planes that make up the slice.
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
1048 * returns : non-zero on error, zero on success.
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
1049 **/
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
1050
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
1051 //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
1052 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
1053 {
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
1054 struct sdl_priv_s *priv = &sdl_priv;
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
1055 uint8_t *dst;
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
1056
4807
156482788caf osd outside movie support for vo_sdl, patch by Fredrik Kuivinen
atmos4
parents: 4790
diff changeset
1057 SDL_OVR_LOCK(-1)
1
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
1058
4807
156482788caf osd outside movie support for vo_sdl, patch by Fredrik Kuivinen
atmos4
parents: 4790
diff changeset
1059 y += priv->y;
156482788caf osd outside movie support for vo_sdl, patch by Fredrik Kuivinen
atmos4
parents: 4790
diff changeset
1060
156482788caf osd outside movie support for vo_sdl, patch by Fredrik Kuivinen
atmos4
parents: 4790
diff changeset
1061 dst = priv->overlay->pixels[0] + priv->overlay->pitches[0]*y + x;
7692
bbbf2e677afe for() -> memcpy_pic()
arpi
parents: 7201
diff changeset
1062 memcpy_pic(dst, image[0], w, h, priv->overlay->pitches[0], stride[0]);
bbbf2e677afe for() -> memcpy_pic()
arpi
parents: 7201
diff changeset
1063 x/=2;y/=2;w/=2;h/=2;
1
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
1064
5460
acf7acfa7acc Fix I420 handling, though still don't know why divx4 codec queries for I420 not YUY2!
atmos4
parents: 5385
diff changeset
1065 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
1066 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
1067 dst = priv->overlay->pixels[2] + priv->overlay->pitches[2]*y + x;
7692
bbbf2e677afe for() -> memcpy_pic()
arpi
parents: 7201
diff changeset
1068 memcpy_pic(dst, image[1], w, h, priv->overlay->pitches[2], stride[1]);
bbbf2e677afe for() -> memcpy_pic()
arpi
parents: 7201
diff changeset
1069
5460
acf7acfa7acc Fix I420 handling, though still don't know why divx4 codec queries for I420 not YUY2!
atmos4
parents: 5385
diff changeset
1070 dst = priv->overlay->pixels[1] + priv->overlay->pitches[1]*y + x;
7692
bbbf2e677afe for() -> memcpy_pic()
arpi
parents: 7201
diff changeset
1071 memcpy_pic(dst, image[2], w, h, priv->overlay->pitches[1], stride[2]);
bbbf2e677afe for() -> memcpy_pic()
arpi
parents: 7201
diff changeset
1072
5460
acf7acfa7acc Fix I420 handling, though still don't know why divx4 codec queries for I420 not YUY2!
atmos4
parents: 5385
diff changeset
1073 break;
7692
bbbf2e677afe for() -> memcpy_pic()
arpi
parents: 7201
diff changeset
1074 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
1075 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
1076 dst = priv->overlay->pixels[1] + priv->overlay->pitches[1]*y + x;
7692
bbbf2e677afe for() -> memcpy_pic()
arpi
parents: 7201
diff changeset
1077 memcpy_pic(dst, image[1], w, h, priv->overlay->pitches[1], stride[1]);
1
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
1078
5460
acf7acfa7acc Fix I420 handling, though still don't know why divx4 codec queries for I420 not YUY2!
atmos4
parents: 5385
diff changeset
1079 dst = priv->overlay->pixels[2] + priv->overlay->pitches[2]*y + x;
7692
bbbf2e677afe for() -> memcpy_pic()
arpi
parents: 7201
diff changeset
1080 memcpy_pic(dst, image[2], w, h, priv->overlay->pitches[2], stride[2]);
bbbf2e677afe for() -> memcpy_pic()
arpi
parents: 7201
diff changeset
1081
5460
acf7acfa7acc Fix I420 handling, though still don't know why divx4 codec queries for I420 not YUY2!
atmos4
parents: 5385
diff changeset
1082 break;
acf7acfa7acc Fix I420 handling, though still don't know why divx4 codec queries for I420 not YUY2!
atmos4
parents: 5385
diff changeset
1083 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
1084 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
1085 }
acf7acfa7acc Fix I420 handling, though still don't know why divx4 codec queries for I420 not YUY2!
atmos4
parents: 5385
diff changeset
1086
1197
80ca716ce5e9 Made surface locks switchable via preprocessor.
atmosfear
parents: 1194
diff changeset
1087 SDL_OVR_UNLOCK
1
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
1088
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
1089 return 0;
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
1090 }
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
1091
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
1092
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
1093
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
1094 /**
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
1095 * Checks for SDL keypress and window resize events
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
1096 *
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
1097 * params : none
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
1098 * returns : doesn't return
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
1099 **/
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
1100
13787
e047e70a9767 Handle "xxx.h" vs "../xxx.h" include paths in a consistent way.
diego
parents: 12787
diff changeset
1101 #include "osdep/keycodes.h"
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
1102
22a4c7957f03 Add playlist keys (some missing?!) and add some shift handlers to allow keys to work with german keyboards.
atmos4
parents: 4528
diff changeset
1103 #define shift_key (event.key.keysym.mod==(KMOD_LSHIFT||KMOD_RSHIFT))
1
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
1104 static void check_events (void)
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
1105 {
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
1106 struct sdl_priv_s *priv = &sdl_priv;
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
1107 SDL_Event event;
27706
8dec0335f75b Replace numeric constants by their defines.
cehoyos
parents: 27377
diff changeset
1108 SDLKey keypressed = SDLK_UNKNOWN;
1
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
1109
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
1110 /* Poll the waiting SDL Events */
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
1111 while ( SDL_PollEvent(&event) ) {
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
1112 switch (event.type) {
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
1113
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
1114 /* capture window resize events */
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
1115 case SDL_VIDEORESIZE:
4807
156482788caf osd outside movie support for vo_sdl, patch by Fredrik Kuivinen
atmos4
parents: 4790
diff changeset
1116 if(!priv->dblit)
156482788caf osd outside movie support for vo_sdl, patch by Fredrik Kuivinen
atmos4
parents: 4790
diff changeset
1117 set_video_mode(event.resize.w, event.resize.h, priv->bpp, priv->sdlflags);
1
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
1118
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
1119 /* save video extents, to restore them after going fullscreen */
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
1120 //if(!(priv->surface->flags & SDL_FULLSCREEN)) {
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
1121 priv->windowsize.w = priv->surface->w;
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
1122 priv->windowsize.h = priv->surface->h;
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
1123 //}
28021
1bbc09f93acb Remove a lot of completely pointless mp_msg_test calls.
reimar
parents: 27706
diff changeset
1124 mp_msg(MSGT_VO,MSGL_DBG3, "SDL: Window resize\n");
1
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
1125 break;
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
1126
4590
3a76a4dcde2c Applied patch mouse whell patch from Wojtek Kaniewski <wojtekka@bydg.pdi.net>
albeu
parents: 4530
diff changeset
1127 case SDL_MOUSEBUTTONDOWN:
10785
e2dcade78bc6 -nomouseinput support for vo_sdl
alex
parents: 10483
diff changeset
1128 if(vo_nomouse_input)
e2dcade78bc6 -nomouseinput support for vo_sdl
alex
parents: 10483
diff changeset
1129 break;
20164
b064d49b08f9 Use MOUSE_BTN0 instead of MOUSE_BASE for consistency with other vo drivers.
diego
parents: 19428
diff changeset
1130 mplayer_put_key((MOUSE_BTN0+event.button.button-1) | MP_KEY_DOWN);
4590
3a76a4dcde2c Applied patch mouse whell patch from Wojtek Kaniewski <wojtekka@bydg.pdi.net>
albeu
parents: 4530
diff changeset
1131 break;
3a76a4dcde2c Applied patch mouse whell patch from Wojtek Kaniewski <wojtekka@bydg.pdi.net>
albeu
parents: 4530
diff changeset
1132
3a76a4dcde2c Applied patch mouse whell patch from Wojtek Kaniewski <wojtekka@bydg.pdi.net>
albeu
parents: 4530
diff changeset
1133 case SDL_MOUSEBUTTONUP:
10785
e2dcade78bc6 -nomouseinput support for vo_sdl
alex
parents: 10483
diff changeset
1134 if(vo_nomouse_input)
e2dcade78bc6 -nomouseinput support for vo_sdl
alex
parents: 10483
diff changeset
1135 break;
20164
b064d49b08f9 Use MOUSE_BTN0 instead of MOUSE_BASE for consistency with other vo drivers.
diego
parents: 19428
diff changeset
1136 mplayer_put_key(MOUSE_BTN0+event.button.button-1);
4590
3a76a4dcde2c Applied patch mouse whell patch from Wojtek Kaniewski <wojtekka@bydg.pdi.net>
albeu
parents: 4530
diff changeset
1137 break;
3a76a4dcde2c Applied patch mouse whell patch from Wojtek Kaniewski <wojtekka@bydg.pdi.net>
albeu
parents: 4530
diff changeset
1138
1
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
1139 /* graphics mode selection shortcuts */
705
27d351f251eb Added workaround for buggy SDL versions (before 1.2.1).
atmosfear
parents: 703
diff changeset
1140 #ifdef BUGGY_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
1141 case SDL_KEYDOWN:
705
27d351f251eb Added workaround for buggy SDL versions (before 1.2.1).
atmosfear
parents: 703
diff changeset
1142 switch(event.key.keysym.sym) {
1122
fe9ef743be91 fixed my previousily added bug: ifdef buggy_sdl: keypressed: default case
al3x
parents: 1110
diff changeset
1143 case SDLK_UP: mplayer_put_key(KEY_UP); break;
fe9ef743be91 fixed my previousily added bug: ifdef buggy_sdl: keypressed: default case
al3x
parents: 1110
diff changeset
1144 case SDLK_DOWN: mplayer_put_key(KEY_DOWN); break;
fe9ef743be91 fixed my previousily added bug: ifdef buggy_sdl: keypressed: default case
al3x
parents: 1110
diff changeset
1145 case SDLK_LEFT: mplayer_put_key(KEY_LEFT); break;
fe9ef743be91 fixed my previousily added bug: ifdef buggy_sdl: keypressed: default case
al3x
parents: 1110
diff changeset
1146 case SDLK_RIGHT: mplayer_put_key(KEY_RIGHT); break;
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
1147 case SDLK_LESS: mplayer_put_key(shift_key?'>':'<'); break;
22a4c7957f03 Add playlist keys (some missing?!) and add some shift handlers to allow keys to work with german keyboards.
atmos4
parents: 4528
diff changeset
1148 case SDLK_GREATER: mplayer_put_key('>'); break;
705
27d351f251eb Added workaround for buggy SDL versions (before 1.2.1).
atmosfear
parents: 703
diff changeset
1149 case SDLK_ASTERISK:
27d351f251eb Added workaround for buggy SDL versions (before 1.2.1).
atmosfear
parents: 703
diff changeset
1150 case SDLK_KP_MULTIPLY:
27d351f251eb Added workaround for buggy SDL versions (before 1.2.1).
atmosfear
parents: 703
diff changeset
1151 case SDLK_SLASH:
27d351f251eb Added workaround for buggy SDL versions (before 1.2.1).
atmosfear
parents: 703
diff changeset
1152 case SDLK_KP_DIVIDE:
1122
fe9ef743be91 fixed my previousily added bug: ifdef buggy_sdl: keypressed: default case
al3x
parents: 1110
diff changeset
1153 default: break;
705
27d351f251eb Added workaround for buggy SDL versions (before 1.2.1).
atmosfear
parents: 703
diff changeset
1154 }
27d351f251eb Added workaround for buggy SDL versions (before 1.2.1).
atmosfear
parents: 703
diff changeset
1155 break;
27d351f251eb Added workaround for buggy SDL versions (before 1.2.1).
atmosfear
parents: 703
diff changeset
1156 case SDL_KEYUP:
27d351f251eb Added workaround for buggy SDL versions (before 1.2.1).
atmosfear
parents: 703
diff changeset
1157 #else
27d351f251eb Added workaround for buggy SDL versions (before 1.2.1).
atmosfear
parents: 703
diff changeset
1158 case SDL_KEYDOWN:
27d351f251eb Added workaround for buggy SDL versions (before 1.2.1).
atmosfear
parents: 703
diff changeset
1159 #endif
1
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
1160 keypressed = event.key.keysym.sym;
28021
1bbc09f93acb Remove a lot of completely pointless mp_msg_test calls.
reimar
parents: 27706
diff changeset
1161 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
1162
357
681979d4031a - small bugfixes
atmosfear
parents: 355
diff changeset
1163 /* 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
1164 if ( ((keypressed == SDLK_c)) && (priv->fullmodes) ) {
1
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
1165 /* select next fullscreen mode */
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
1166 priv->fullmode++;
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
1167 if (priv->fullmode > (findArrayEnd(priv->fullmodes) - 1)) priv->fullmode = 0;
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
1168 set_fullmode(priv->fullmode);
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
1169
28021
1bbc09f93acb Remove a lot of completely pointless mp_msg_test calls.
reimar
parents: 27706
diff changeset
1170 mp_msg(MSGT_VO,MSGL_DBG2, "SDL: Set next available fullscreen mode.\n");
1
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
1171 }
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
1172
1396
3c7f13cb0a8a Added double/normal resize patch by Wojtek Kaniewski <wojtekka at bydg.pdi.net>
atmos4
parents: 1238
diff changeset
1173 else if ( keypressed == SDLK_n ) {
27377
d58d06eafe83 Change a bunch of X11-specific preprocessor directives.
diego
parents: 26739
diff changeset
1174 #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
1175 aspect(&priv->dstwidth, &priv->dstheight,A_NOZOOM);
2182
a7e539b11ba0 Fix non-X11 build
atmos4
parents: 2147
diff changeset
1176 #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
1177 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
1178 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
1179 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
1180 priv->windowsize.h = priv->surface->h;
28021
1bbc09f93acb Remove a lot of completely pointless mp_msg_test calls.
reimar
parents: 27706
diff changeset
1181 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
1182 } 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
1183 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
1184 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
1185 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
1186 priv->windowsize.h = priv->surface->h;
28021
1bbc09f93acb Remove a lot of completely pointless mp_msg_test calls.
reimar
parents: 27706
diff changeset
1187 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
1188 }
3c7f13cb0a8a Added double/normal resize patch by Wojtek Kaniewski <wojtekka at bydg.pdi.net>
atmos4
parents: 1238
diff changeset
1189 }
1509
f9beae70c5c2 Removed D key for doublesize, already clobbered by framedrop.
atmos4
parents: 1501
diff changeset
1190
1
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
1191 else switch(keypressed){
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
1192 case SDLK_RETURN: mplayer_put_key(KEY_ENTER);break;
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
1193 case SDLK_ESCAPE: mplayer_put_key(KEY_ESC);break;
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
1194 case SDLK_q: mplayer_put_key('q');break;
9891
150d1ef4204d keypad and function (f1-f10) suppport (currently only vo_sdl and the terminal input code supports it). Patch by Vladimir Mosgalin <mosgalin@VM10124.spb.edu>
alex
parents: 9669
diff changeset
1195 case SDLK_F1: mplayer_put_key(KEY_F+1);break;
150d1ef4204d keypad and function (f1-f10) suppport (currently only vo_sdl and the terminal input code supports it). Patch by Vladimir Mosgalin <mosgalin@VM10124.spb.edu>
alex
parents: 9669
diff changeset
1196 case SDLK_F2: mplayer_put_key(KEY_F+2);break;
150d1ef4204d keypad and function (f1-f10) suppport (currently only vo_sdl and the terminal input code supports it). Patch by Vladimir Mosgalin <mosgalin@VM10124.spb.edu>
alex
parents: 9669
diff changeset
1197 case SDLK_F3: mplayer_put_key(KEY_F+3);break;
150d1ef4204d keypad and function (f1-f10) suppport (currently only vo_sdl and the terminal input code supports it). Patch by Vladimir Mosgalin <mosgalin@VM10124.spb.edu>
alex
parents: 9669
diff changeset
1198 case SDLK_F4: mplayer_put_key(KEY_F+4);break;
150d1ef4204d keypad and function (f1-f10) suppport (currently only vo_sdl and the terminal input code supports it). Patch by Vladimir Mosgalin <mosgalin@VM10124.spb.edu>
alex
parents: 9669
diff changeset
1199 case SDLK_F5: mplayer_put_key(KEY_F+5);break;
150d1ef4204d keypad and function (f1-f10) suppport (currently only vo_sdl and the terminal input code supports it). Patch by Vladimir Mosgalin <mosgalin@VM10124.spb.edu>
alex
parents: 9669
diff changeset
1200 case SDLK_F6: mplayer_put_key(KEY_F+6);break;
150d1ef4204d keypad and function (f1-f10) suppport (currently only vo_sdl and the terminal input code supports it). Patch by Vladimir Mosgalin <mosgalin@VM10124.spb.edu>
alex
parents: 9669
diff changeset
1201 case SDLK_F7: mplayer_put_key(KEY_F+7);break;
150d1ef4204d keypad and function (f1-f10) suppport (currently only vo_sdl and the terminal input code supports it). Patch by Vladimir Mosgalin <mosgalin@VM10124.spb.edu>
alex
parents: 9669
diff changeset
1202 case SDLK_F8: mplayer_put_key(KEY_F+8);break;
150d1ef4204d keypad and function (f1-f10) suppport (currently only vo_sdl and the terminal input code supports it). Patch by Vladimir Mosgalin <mosgalin@VM10124.spb.edu>
alex
parents: 9669
diff changeset
1203 case SDLK_F9: mplayer_put_key(KEY_F+9);break;
150d1ef4204d keypad and function (f1-f10) suppport (currently only vo_sdl and the terminal input code supports it). Patch by Vladimir Mosgalin <mosgalin@VM10124.spb.edu>
alex
parents: 9669
diff changeset
1204 case SDLK_F10: mplayer_put_key(KEY_F+10);break;
11793
faa111ce1315 Support binding F11 and F12 keys to commands.
diego
parents: 11751
diff changeset
1205 case SDLK_F11: mplayer_put_key(KEY_F+11);break;
faa111ce1315 Support binding F11 and F12 keys to commands.
diego
parents: 11751
diff changeset
1206 case SDLK_F12: mplayer_put_key(KEY_F+12);break;
475
904d1cfda2dd changed keyboard input handling to pass key through to mplayer if not special to sdl
atmosfear
parents: 451
diff changeset
1207 /*case SDLK_o: mplayer_put_key('o');break;
575
3fde7340afd5 Reincluded fastmemcpy.h and added some keybindings for mixer.
atmosfear
parents: 543
diff changeset
1208 case SDLK_SPACE: mplayer_put_key(' ');break;
3fde7340afd5 Reincluded fastmemcpy.h and added some keybindings for mixer.
atmosfear
parents: 543
diff changeset
1209 case SDLK_p: mplayer_put_key('p');break;*/
24814
1903b15e6fb7 A missing break statement caused SDLK_PLUS to be triggered twice on one press.
diego
parents: 24736
diff changeset
1210 case SDLK_7: mplayer_put_key(shift_key?'/':'7');break;
1903b15e6fb7 A missing break statement caused SDLK_PLUS to be triggered twice on one press.
diego
parents: 24736
diff changeset
1211 case SDLK_PLUS: mplayer_put_key(shift_key?'*':'+');break;
1
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
1212 case SDLK_KP_PLUS: mplayer_put_key('+');break;
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
1213 case SDLK_MINUS:
575
3fde7340afd5 Reincluded fastmemcpy.h and added some keybindings for mixer.
atmosfear
parents: 543
diff changeset
1214 case SDLK_KP_MINUS: mplayer_put_key('-');break;
637
19d941a8b46f Added support for osd menue and kexrepeats for mixer keys.
atmosfear
parents: 635
diff changeset
1215 case SDLK_TAB: mplayer_put_key('\t');break;
653
799ef558618d Last second changes.
atmosfear
parents: 648
diff changeset
1216 case SDLK_PAGEUP: mplayer_put_key(KEY_PAGE_UP);break;
799ef558618d Last second changes.
atmosfear
parents: 648
diff changeset
1217 case SDLK_PAGEDOWN: mplayer_put_key(KEY_PAGE_DOWN);break;
705
27d351f251eb Added workaround for buggy SDL versions (before 1.2.1).
atmosfear
parents: 703
diff changeset
1218 #ifdef BUGGY_SDL
27d351f251eb Added workaround for buggy SDL versions (before 1.2.1).
atmosfear
parents: 703
diff changeset
1219 case SDLK_UP:
27d351f251eb Added workaround for buggy SDL versions (before 1.2.1).
atmosfear
parents: 703
diff changeset
1220 case SDLK_DOWN:
27d351f251eb Added workaround for buggy SDL versions (before 1.2.1).
atmosfear
parents: 703
diff changeset
1221 case SDLK_LEFT:
27d351f251eb Added workaround for buggy SDL versions (before 1.2.1).
atmosfear
parents: 703
diff changeset
1222 case SDLK_RIGHT:
27d351f251eb Added workaround for buggy SDL versions (before 1.2.1).
atmosfear
parents: 703
diff changeset
1223 case SDLK_ASTERISK:
27d351f251eb Added workaround for buggy SDL versions (before 1.2.1).
atmosfear
parents: 703
diff changeset
1224 case SDLK_KP_MULTIPLY:
27d351f251eb Added workaround for buggy SDL versions (before 1.2.1).
atmosfear
parents: 703
diff changeset
1225 case SDLK_SLASH:
27d351f251eb Added workaround for buggy SDL versions (before 1.2.1).
atmosfear
parents: 703
diff changeset
1226 case SDLK_KP_DIVIDE:
27d351f251eb Added workaround for buggy SDL versions (before 1.2.1).
atmosfear
parents: 703
diff changeset
1227 break;
27d351f251eb Added workaround for buggy SDL versions (before 1.2.1).
atmosfear
parents: 703
diff changeset
1228 #else
703
fcc01494c0fe Fixed keyboard input handling and slowed down keyrepeat interval.
atmosfear
parents: 653
diff changeset
1229 case SDLK_UP: mplayer_put_key(KEY_UP);break;
fcc01494c0fe Fixed keyboard input handling and slowed down keyrepeat interval.
atmosfear
parents: 653
diff changeset
1230 case SDLK_DOWN: mplayer_put_key(KEY_DOWN);break;
fcc01494c0fe Fixed keyboard input handling and slowed down keyrepeat interval.
atmosfear
parents: 653
diff changeset
1231 case SDLK_LEFT: mplayer_put_key(KEY_LEFT);break;
fcc01494c0fe Fixed keyboard input handling and slowed down keyrepeat interval.
atmosfear
parents: 653
diff changeset
1232 case SDLK_RIGHT: mplayer_put_key(KEY_RIGHT);break;
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
1233 case SDLK_LESS: mplayer_put_key(shift_key?'>':'<'); break;
22a4c7957f03 Add playlist keys (some missing?!) and add some shift handlers to allow keys to work with german keyboards.
atmos4
parents: 4528
diff changeset
1234 case SDLK_GREATER: mplayer_put_key('>'); break;
703
fcc01494c0fe Fixed keyboard input handling and slowed down keyrepeat interval.
atmosfear
parents: 653
diff changeset
1235 case SDLK_ASTERISK:
5834
ece3a19677b9 Fix keypad volume control.
atmos4
parents: 5607
diff changeset
1236 case SDLK_KP_MULTIPLY: mplayer_put_key('*'); break;
703
fcc01494c0fe Fixed keyboard input handling and slowed down keyrepeat interval.
atmosfear
parents: 653
diff changeset
1237 case SDLK_SLASH:
5834
ece3a19677b9 Fix keypad volume control.
atmos4
parents: 5607
diff changeset
1238 case SDLK_KP_DIVIDE: mplayer_put_key('/'); break;
705
27d351f251eb Added workaround for buggy SDL versions (before 1.2.1).
atmosfear
parents: 703
diff changeset
1239 #endif
9891
150d1ef4204d keypad and function (f1-f10) suppport (currently only vo_sdl and the terminal input code supports it). Patch by Vladimir Mosgalin <mosgalin@VM10124.spb.edu>
alex
parents: 9669
diff changeset
1240 case SDLK_KP0: mplayer_put_key(KEY_KP0); break;
150d1ef4204d keypad and function (f1-f10) suppport (currently only vo_sdl and the terminal input code supports it). Patch by Vladimir Mosgalin <mosgalin@VM10124.spb.edu>
alex
parents: 9669
diff changeset
1241 case SDLK_KP1: mplayer_put_key(KEY_KP1); break;
150d1ef4204d keypad and function (f1-f10) suppport (currently only vo_sdl and the terminal input code supports it). Patch by Vladimir Mosgalin <mosgalin@VM10124.spb.edu>
alex
parents: 9669
diff changeset
1242 case SDLK_KP2: mplayer_put_key(KEY_KP2); break;
150d1ef4204d keypad and function (f1-f10) suppport (currently only vo_sdl and the terminal input code supports it). Patch by Vladimir Mosgalin <mosgalin@VM10124.spb.edu>
alex
parents: 9669
diff changeset
1243 case SDLK_KP3: mplayer_put_key(KEY_KP3); break;
150d1ef4204d keypad and function (f1-f10) suppport (currently only vo_sdl and the terminal input code supports it). Patch by Vladimir Mosgalin <mosgalin@VM10124.spb.edu>
alex
parents: 9669
diff changeset
1244 case SDLK_KP4: mplayer_put_key(KEY_KP4); break;
150d1ef4204d keypad and function (f1-f10) suppport (currently only vo_sdl and the terminal input code supports it). Patch by Vladimir Mosgalin <mosgalin@VM10124.spb.edu>
alex
parents: 9669
diff changeset
1245 case SDLK_KP5: mplayer_put_key(KEY_KP5); break;
150d1ef4204d keypad and function (f1-f10) suppport (currently only vo_sdl and the terminal input code supports it). Patch by Vladimir Mosgalin <mosgalin@VM10124.spb.edu>
alex
parents: 9669
diff changeset
1246 case SDLK_KP6: mplayer_put_key(KEY_KP6); break;
150d1ef4204d keypad and function (f1-f10) suppport (currently only vo_sdl and the terminal input code supports it). Patch by Vladimir Mosgalin <mosgalin@VM10124.spb.edu>
alex
parents: 9669
diff changeset
1247 case SDLK_KP7: mplayer_put_key(KEY_KP7); break;
150d1ef4204d keypad and function (f1-f10) suppport (currently only vo_sdl and the terminal input code supports it). Patch by Vladimir Mosgalin <mosgalin@VM10124.spb.edu>
alex
parents: 9669
diff changeset
1248 case SDLK_KP8: mplayer_put_key(KEY_KP8); break;
150d1ef4204d keypad and function (f1-f10) suppport (currently only vo_sdl and the terminal input code supports it). Patch by Vladimir Mosgalin <mosgalin@VM10124.spb.edu>
alex
parents: 9669
diff changeset
1249 case SDLK_KP9: mplayer_put_key(KEY_KP9); break;
150d1ef4204d keypad and function (f1-f10) suppport (currently only vo_sdl and the terminal input code supports it). Patch by Vladimir Mosgalin <mosgalin@VM10124.spb.edu>
alex
parents: 9669
diff changeset
1250 case SDLK_KP_PERIOD: mplayer_put_key(KEY_KPDEC); break;
150d1ef4204d keypad and function (f1-f10) suppport (currently only vo_sdl and the terminal input code supports it). Patch by Vladimir Mosgalin <mosgalin@VM10124.spb.edu>
alex
parents: 9669
diff changeset
1251 case SDLK_KP_ENTER: mplayer_put_key(KEY_KPENTER); break;
475
904d1cfda2dd changed keyboard input handling to pass key through to mplayer if not special to sdl
atmosfear
parents: 451
diff changeset
1252 default:
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
1253 //printf("got scancode: %d keysym: %d mod: %d %d\n", event.key.keysym.scancode, keypressed, event.key.keysym.mod);
475
904d1cfda2dd changed keyboard input handling to pass key through to mplayer if not special to sdl
atmosfear
parents: 451
diff changeset
1254 mplayer_put_key(keypressed);
1
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
1255 }
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
1256
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
1257 break;
16892
3470c810527b libvo input cleanup: remove the dependency on libinput,
albeu
parents: 16171
diff changeset
1258 case SDL_QUIT: mplayer_put_key(KEY_CLOSE_WIN);break;
1
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
1259 }
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
1260 }
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
1261 }
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
1262 #undef shift_key
1
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
1263
4807
156482788caf osd outside movie support for vo_sdl, patch by Fredrik Kuivinen
atmos4
parents: 4790
diff changeset
1264 /* 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
1265 or overlay which is used for OSD
156482788caf osd outside movie support for vo_sdl, patch by Fredrik Kuivinen
atmos4
parents: 4790
diff changeset
1266 */
156482788caf osd outside movie support for vo_sdl, patch by Fredrik Kuivinen
atmos4
parents: 4790
diff changeset
1267 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
1268 {
156482788caf osd outside movie support for vo_sdl, patch by Fredrik Kuivinen
atmos4
parents: 4790
diff changeset
1269 struct sdl_priv_s *priv = &sdl_priv;
156482788caf osd outside movie support for vo_sdl, patch by Fredrik Kuivinen
atmos4
parents: 4790
diff changeset
1270
156482788caf osd outside movie support for vo_sdl, patch by Fredrik Kuivinen
atmos4
parents: 4790
diff changeset
1271 switch(priv->format) {
156482788caf osd outside movie support for vo_sdl, patch by Fredrik Kuivinen
atmos4
parents: 4790
diff changeset
1272 case IMGFMT_YV12:
156482788caf osd outside movie support for vo_sdl, patch by Fredrik Kuivinen
atmos4
parents: 4790
diff changeset
1273 case IMGFMT_I420:
156482788caf osd outside movie support for vo_sdl, patch by Fredrik Kuivinen
atmos4
parents: 4790
diff changeset
1274 case IMGFMT_IYUV:
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 SDL_OVR_LOCK((void) 0)
156482788caf osd outside movie support for vo_sdl, patch by Fredrik Kuivinen
atmos4
parents: 4790
diff changeset
1277
156482788caf osd outside movie support for vo_sdl, patch by Fredrik Kuivinen
atmos4
parents: 4790
diff changeset
1278 /* Erase Y plane */
156482788caf osd outside movie support for vo_sdl, patch by Fredrik Kuivinen
atmos4
parents: 4790
diff changeset
1279 erase_area_1(x, w, h,
156482788caf osd outside movie support for vo_sdl, patch by Fredrik Kuivinen
atmos4
parents: 4790
diff changeset
1280 priv->overlay->pitches[0], 0,
156482788caf osd outside movie support for vo_sdl, patch by Fredrik Kuivinen
atmos4
parents: 4790
diff changeset
1281 priv->overlay->pixels[0] +
156482788caf osd outside movie support for vo_sdl, patch by Fredrik Kuivinen
atmos4
parents: 4790
diff changeset
1282 priv->overlay->pitches[0]*y);
156482788caf osd outside movie support for vo_sdl, patch by Fredrik Kuivinen
atmos4
parents: 4790
diff changeset
1283
156482788caf osd outside movie support for vo_sdl, patch by Fredrik Kuivinen
atmos4
parents: 4790
diff changeset
1284 /* Erase U and V planes */
156482788caf osd outside movie support for vo_sdl, patch by Fredrik Kuivinen
atmos4
parents: 4790
diff changeset
1285 w /= 2;
156482788caf osd outside movie support for vo_sdl, patch by Fredrik Kuivinen
atmos4
parents: 4790
diff changeset
1286 x /= 2;
156482788caf osd outside movie support for vo_sdl, patch by Fredrik Kuivinen
atmos4
parents: 4790
diff changeset
1287 h /= 2;
156482788caf osd outside movie support for vo_sdl, patch by Fredrik Kuivinen
atmos4
parents: 4790
diff changeset
1288 y /= 2;
156482788caf osd outside movie support for vo_sdl, patch by Fredrik Kuivinen
atmos4
parents: 4790
diff changeset
1289
156482788caf osd outside movie support for vo_sdl, patch by Fredrik Kuivinen
atmos4
parents: 4790
diff changeset
1290 erase_area_1(x, w, h,
156482788caf osd outside movie support for vo_sdl, patch by Fredrik Kuivinen
atmos4
parents: 4790
diff changeset
1291 priv->overlay->pitches[1], 128,
156482788caf osd outside movie support for vo_sdl, patch by Fredrik Kuivinen
atmos4
parents: 4790
diff changeset
1292 priv->overlay->pixels[1] +
156482788caf osd outside movie support for vo_sdl, patch by Fredrik Kuivinen
atmos4
parents: 4790
diff changeset
1293 priv->overlay->pitches[1]*y);
156482788caf osd outside movie support for vo_sdl, patch by Fredrik Kuivinen
atmos4
parents: 4790
diff changeset
1294
156482788caf osd outside movie support for vo_sdl, patch by Fredrik Kuivinen
atmos4
parents: 4790
diff changeset
1295 erase_area_1(x, w, h,
156482788caf osd outside movie support for vo_sdl, patch by Fredrik Kuivinen
atmos4
parents: 4790
diff changeset
1296 priv->overlay->pitches[2], 128,
156482788caf osd outside movie support for vo_sdl, patch by Fredrik Kuivinen
atmos4
parents: 4790
diff changeset
1297 priv->overlay->pixels[2] +
156482788caf osd outside movie support for vo_sdl, patch by Fredrik Kuivinen
atmos4
parents: 4790
diff changeset
1298 priv->overlay->pitches[2]*y);
156482788caf osd outside movie support for vo_sdl, patch by Fredrik Kuivinen
atmos4
parents: 4790
diff changeset
1299 SDL_OVR_UNLOCK
156482788caf osd outside movie support for vo_sdl, patch by Fredrik Kuivinen
atmos4
parents: 4790
diff changeset
1300 break;
156482788caf osd outside movie support for vo_sdl, patch by Fredrik Kuivinen
atmos4
parents: 4790
diff changeset
1301 }
156482788caf osd outside movie support for vo_sdl, patch by Fredrik Kuivinen
atmos4
parents: 4790
diff changeset
1302
156482788caf osd outside movie support for vo_sdl, patch by Fredrik Kuivinen
atmos4
parents: 4790
diff changeset
1303 case IMGFMT_YUY2:
156482788caf osd outside movie support for vo_sdl, patch by Fredrik Kuivinen
atmos4
parents: 4790
diff changeset
1304 case IMGFMT_YVYU:
156482788caf osd outside movie support for vo_sdl, patch by Fredrik Kuivinen
atmos4
parents: 4790
diff changeset
1305 {
156482788caf osd outside movie support for vo_sdl, patch by Fredrik Kuivinen
atmos4
parents: 4790
diff changeset
1306 /* 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
1307 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
1308
156482788caf osd outside movie support for vo_sdl, patch by Fredrik Kuivinen
atmos4
parents: 4790
diff changeset
1309 SDL_OVR_LOCK((void) 0)
156482788caf osd outside movie support for vo_sdl, patch by Fredrik Kuivinen
atmos4
parents: 4790
diff changeset
1310 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
1311 priv->overlay->pitches[0],
156482788caf osd outside movie support for vo_sdl, patch by Fredrik Kuivinen
atmos4
parents: 4790
diff changeset
1312 *((uint32_t*) yuy2_black),
156482788caf osd outside movie support for vo_sdl, patch by Fredrik Kuivinen
atmos4
parents: 4790
diff changeset
1313 priv->overlay->pixels[0] +
156482788caf osd outside movie support for vo_sdl, patch by Fredrik Kuivinen
atmos4
parents: 4790
diff changeset
1314 priv->overlay->pitches[0]*y);
156482788caf osd outside movie support for vo_sdl, patch by Fredrik Kuivinen
atmos4
parents: 4790
diff changeset
1315 SDL_OVR_UNLOCK
156482788caf osd outside movie support for vo_sdl, patch by Fredrik Kuivinen
atmos4
parents: 4790
diff changeset
1316 break;
156482788caf osd outside movie support for vo_sdl, patch by Fredrik Kuivinen
atmos4
parents: 4790
diff changeset
1317 }
156482788caf osd outside movie support for vo_sdl, patch by Fredrik Kuivinen
atmos4
parents: 4790
diff changeset
1318
156482788caf osd outside movie support for vo_sdl, patch by Fredrik Kuivinen
atmos4
parents: 4790
diff changeset
1319 case IMGFMT_UYVY:
156482788caf osd outside movie support for vo_sdl, patch by Fredrik Kuivinen
atmos4
parents: 4790
diff changeset
1320 {
156482788caf osd outside movie support for vo_sdl, patch by Fredrik Kuivinen
atmos4
parents: 4790
diff changeset
1321 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
1322
156482788caf osd outside movie support for vo_sdl, patch by Fredrik Kuivinen
atmos4
parents: 4790
diff changeset
1323 SDL_OVR_LOCK((void) 0)
156482788caf osd outside movie support for vo_sdl, patch by Fredrik Kuivinen
atmos4
parents: 4790
diff changeset
1324 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
1325 priv->overlay->pitches[0],
156482788caf osd outside movie support for vo_sdl, patch by Fredrik Kuivinen
atmos4
parents: 4790
diff changeset
1326 *((uint32_t*) uyvy_black),
156482788caf osd outside movie support for vo_sdl, patch by Fredrik Kuivinen
atmos4
parents: 4790
diff changeset
1327 priv->overlay->pixels[0] +
156482788caf osd outside movie support for vo_sdl, patch by Fredrik Kuivinen
atmos4
parents: 4790
diff changeset
1328 priv->overlay->pitches[0]*y);
156482788caf osd outside movie support for vo_sdl, patch by Fredrik Kuivinen
atmos4
parents: 4790
diff changeset
1329 SDL_OVR_UNLOCK
156482788caf osd outside movie support for vo_sdl, patch by Fredrik Kuivinen
atmos4
parents: 4790
diff changeset
1330 break;
156482788caf osd outside movie support for vo_sdl, patch by Fredrik Kuivinen
atmos4
parents: 4790
diff changeset
1331 }
156482788caf osd outside movie support for vo_sdl, patch by Fredrik Kuivinen
atmos4
parents: 4790
diff changeset
1332
156482788caf osd outside movie support for vo_sdl, patch by Fredrik Kuivinen
atmos4
parents: 4790
diff changeset
1333 case IMGFMT_RGB15:
156482788caf osd outside movie support for vo_sdl, patch by Fredrik Kuivinen
atmos4
parents: 4790
diff changeset
1334 case IMGFMT_BGR15:
156482788caf osd outside movie support for vo_sdl, patch by Fredrik Kuivinen
atmos4
parents: 4790
diff changeset
1335 case IMGFMT_RGB16:
156482788caf osd outside movie support for vo_sdl, patch by Fredrik Kuivinen
atmos4
parents: 4790
diff changeset
1336 case IMGFMT_BGR16:
156482788caf osd outside movie support for vo_sdl, patch by Fredrik Kuivinen
atmos4
parents: 4790
diff changeset
1337 case IMGFMT_RGB24:
156482788caf osd outside movie support for vo_sdl, patch by Fredrik Kuivinen
atmos4
parents: 4790
diff changeset
1338 case IMGFMT_BGR24:
156482788caf osd outside movie support for vo_sdl, patch by Fredrik Kuivinen
atmos4
parents: 4790
diff changeset
1339 case IMGFMT_RGB32:
156482788caf osd outside movie support for vo_sdl, patch by Fredrik Kuivinen
atmos4
parents: 4790
diff changeset
1340 case IMGFMT_BGR32:
156482788caf osd outside movie support for vo_sdl, patch by Fredrik Kuivinen
atmos4
parents: 4790
diff changeset
1341 {
156482788caf osd outside movie support for vo_sdl, patch by Fredrik Kuivinen
atmos4
parents: 4790
diff changeset
1342 SDL_Rect rect;
156482788caf osd outside movie support for vo_sdl, patch by Fredrik Kuivinen
atmos4
parents: 4790
diff changeset
1343 rect.w = w; rect.h = h;
156482788caf osd outside movie support for vo_sdl, patch by Fredrik Kuivinen
atmos4
parents: 4790
diff changeset
1344 rect.x = x; rect.y = y;
156482788caf osd outside movie support for vo_sdl, patch by Fredrik Kuivinen
atmos4
parents: 4790
diff changeset
1345
156482788caf osd outside movie support for vo_sdl, patch by Fredrik Kuivinen
atmos4
parents: 4790
diff changeset
1346 if(priv->dblit) {
156482788caf osd outside movie support for vo_sdl, patch by Fredrik Kuivinen
atmos4
parents: 4790
diff changeset
1347 SDL_SRF_LOCK(priv->surface, (void) 0)
156482788caf osd outside movie support for vo_sdl, patch by Fredrik Kuivinen
atmos4
parents: 4790
diff changeset
1348 SDL_FillRect(priv->surface, &rect, 0);
156482788caf osd outside movie support for vo_sdl, patch by Fredrik Kuivinen
atmos4
parents: 4790
diff changeset
1349 SDL_SRF_UNLOCK(priv->surface)
156482788caf osd outside movie support for vo_sdl, patch by Fredrik Kuivinen
atmos4
parents: 4790
diff changeset
1350 }
156482788caf osd outside movie support for vo_sdl, patch by Fredrik Kuivinen
atmos4
parents: 4790
diff changeset
1351 else {
156482788caf osd outside movie support for vo_sdl, patch by Fredrik Kuivinen
atmos4
parents: 4790
diff changeset
1352 SDL_SRF_LOCK(priv->rgbsurface, (void) 0)
156482788caf osd outside movie support for vo_sdl, patch by Fredrik Kuivinen
atmos4
parents: 4790
diff changeset
1353 SDL_FillRect(priv->rgbsurface, &rect, 0);
156482788caf osd outside movie support for vo_sdl, patch by Fredrik Kuivinen
atmos4
parents: 4790
diff changeset
1354 SDL_SRF_UNLOCK(priv->rgbsurface)
156482788caf osd outside movie support for vo_sdl, patch by Fredrik Kuivinen
atmos4
parents: 4790
diff changeset
1355 }
156482788caf osd outside movie support for vo_sdl, patch by Fredrik Kuivinen
atmos4
parents: 4790
diff changeset
1356 break;
156482788caf osd outside movie support for vo_sdl, patch by Fredrik Kuivinen
atmos4
parents: 4790
diff changeset
1357 }
156482788caf osd outside movie support for vo_sdl, patch by Fredrik Kuivinen
atmos4
parents: 4790
diff changeset
1358 }
156482788caf osd outside movie support for vo_sdl, patch by Fredrik Kuivinen
atmos4
parents: 4790
diff changeset
1359 }
156482788caf osd outside movie support for vo_sdl, patch by Fredrik Kuivinen
atmos4
parents: 4790
diff changeset
1360
1501
d40f2b686846 changes according to -utf8 option, draw_osd() function added
atlka
parents: 1396
diff changeset
1361 static void draw_osd(void)
d40f2b686846 changes according to -utf8 option, draw_osd() function added
atlka
parents: 1396
diff changeset
1362 { struct sdl_priv_s *priv = &sdl_priv;
d40f2b686846 changes according to -utf8 option, draw_osd() function added
atlka
parents: 1396
diff changeset
1363
4807
156482788caf osd outside movie support for vo_sdl, patch by Fredrik Kuivinen
atmos4
parents: 4790
diff changeset
1364 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
1365
156482788caf osd outside movie support for vo_sdl, patch by Fredrik Kuivinen
atmos4
parents: 4790
diff changeset
1366 if(priv->osd_has_changed)
156482788caf osd outside movie support for vo_sdl, patch by Fredrik Kuivinen
atmos4
parents: 4790
diff changeset
1367 {
156482788caf osd outside movie support for vo_sdl, patch by Fredrik Kuivinen
atmos4
parents: 4790
diff changeset
1368 int i;
156482788caf osd outside movie support for vo_sdl, patch by Fredrik Kuivinen
atmos4
parents: 4790
diff changeset
1369
156482788caf osd outside movie support for vo_sdl, patch by Fredrik Kuivinen
atmos4
parents: 4790
diff changeset
1370 for(i = 0; i < 2; i++) {
156482788caf osd outside movie support for vo_sdl, patch by Fredrik Kuivinen
atmos4
parents: 4790
diff changeset
1371 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
1372 continue;
156482788caf osd outside movie support for vo_sdl, patch by Fredrik Kuivinen
atmos4
parents: 4790
diff changeset
1373
156482788caf osd outside movie support for vo_sdl, patch by Fredrik Kuivinen
atmos4
parents: 4790
diff changeset
1374 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
1375 priv->dirty_off_frame[i].w, priv->dirty_off_frame[i].h);
156482788caf osd outside movie support for vo_sdl, patch by Fredrik Kuivinen
atmos4
parents: 4790
diff changeset
1376
156482788caf osd outside movie support for vo_sdl, patch by Fredrik Kuivinen
atmos4
parents: 4790
diff changeset
1377 priv->dirty_off_frame[i].x = -1;
156482788caf osd outside movie support for vo_sdl, patch by Fredrik Kuivinen
atmos4
parents: 4790
diff changeset
1378 priv->dirty_off_frame[i].y = -1;
156482788caf osd outside movie support for vo_sdl, patch by Fredrik Kuivinen
atmos4
parents: 4790
diff changeset
1379 }
156482788caf osd outside movie support for vo_sdl, patch by Fredrik Kuivinen
atmos4
parents: 4790
diff changeset
1380 }
156482788caf osd outside movie support for vo_sdl, patch by Fredrik Kuivinen
atmos4
parents: 4790
diff changeset
1381
1501
d40f2b686846 changes according to -utf8 option, draw_osd() function added
atlka
parents: 1396
diff changeset
1382 /* update osd/subtitles */
4807
156482788caf osd outside movie support for vo_sdl, patch by Fredrik Kuivinen
atmos4
parents: 4790
diff changeset
1383 if(priv->mode == YUV)
156482788caf osd outside movie support for vo_sdl, patch by Fredrik Kuivinen
atmos4
parents: 4790
diff changeset
1384 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
1385 else {
156482788caf osd outside movie support for vo_sdl, patch by Fredrik Kuivinen
atmos4
parents: 4790
diff changeset
1386 if(priv->dblit)
156482788caf osd outside movie support for vo_sdl, patch by Fredrik Kuivinen
atmos4
parents: 4790
diff changeset
1387 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
1388 else
156482788caf osd outside movie support for vo_sdl, patch by Fredrik Kuivinen
atmos4
parents: 4790
diff changeset
1389 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
1390 }
156482788caf osd outside movie support for vo_sdl, patch by Fredrik Kuivinen
atmos4
parents: 4790
diff changeset
1391 }
156482788caf osd outside movie support for vo_sdl, patch by Fredrik Kuivinen
atmos4
parents: 4790
diff changeset
1392
156482788caf osd outside movie support for vo_sdl, patch by Fredrik Kuivinen
atmos4
parents: 4790
diff changeset
1393 /* 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
1394 * 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
1395 */
156482788caf osd outside movie support for vo_sdl, patch by Fredrik Kuivinen
atmos4
parents: 4790
diff changeset
1396 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
1397 {
156482788caf osd outside movie support for vo_sdl, patch by Fredrik Kuivinen
atmos4
parents: 4790
diff changeset
1398 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
1399 int x, y;
156482788caf osd outside movie support for vo_sdl, patch by Fredrik Kuivinen
atmos4
parents: 4790
diff changeset
1400 uint32_t* data = (uint32_t*) pixels;
156482788caf osd outside movie support for vo_sdl, patch by Fredrik Kuivinen
atmos4
parents: 4790
diff changeset
1401
156482788caf osd outside movie support for vo_sdl, patch by Fredrik Kuivinen
atmos4
parents: 4790
diff changeset
1402 x_start /= 4;
156482788caf osd outside movie support for vo_sdl, patch by Fredrik Kuivinen
atmos4
parents: 4790
diff changeset
1403 pitch /= 4;
156482788caf osd outside movie support for vo_sdl, patch by Fredrik Kuivinen
atmos4
parents: 4790
diff changeset
1404
156482788caf osd outside movie support for vo_sdl, patch by Fredrik Kuivinen
atmos4
parents: 4790
diff changeset
1405 for(y = 0; y < height; y++) {
156482788caf osd outside movie support for vo_sdl, patch by Fredrik Kuivinen
atmos4
parents: 4790
diff changeset
1406 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
1407 data[y*pitch + x] = color;
156482788caf osd outside movie support for vo_sdl, patch by Fredrik Kuivinen
atmos4
parents: 4790
diff changeset
1408 }
156482788caf osd outside movie support for vo_sdl, patch by Fredrik Kuivinen
atmos4
parents: 4790
diff changeset
1409 }
156482788caf osd outside movie support for vo_sdl, patch by Fredrik Kuivinen
atmos4
parents: 4790
diff changeset
1410
156482788caf osd outside movie support for vo_sdl, patch by Fredrik Kuivinen
atmos4
parents: 4790
diff changeset
1411 /* 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
1412 * 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
1413 */
156482788caf osd outside movie support for vo_sdl, patch by Fredrik Kuivinen
atmos4
parents: 4790
diff changeset
1414 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
1415 {
156482788caf osd outside movie support for vo_sdl, patch by Fredrik Kuivinen
atmos4
parents: 4790
diff changeset
1416 int y;
156482788caf osd outside movie support for vo_sdl, patch by Fredrik Kuivinen
atmos4
parents: 4790
diff changeset
1417
156482788caf osd outside movie support for vo_sdl, patch by Fredrik Kuivinen
atmos4
parents: 4790
diff changeset
1418 for(y = 0; y < height; y++) {
156482788caf osd outside movie support for vo_sdl, patch by Fredrik Kuivinen
atmos4
parents: 4790
diff changeset
1419 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
1420 }
1501
d40f2b686846 changes according to -utf8 option, draw_osd() function added
atlka
parents: 1396
diff changeset
1421 }
1
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
1422
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
1423 /**
1501
d40f2b686846 changes according to -utf8 option, draw_osd() function added
atlka
parents: 1396
diff changeset
1424 * Display the surface we have written our data to
1
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
1425 *
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
1426 * params : mode == index of the desired fullscreen mode
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
1427 * returns : doesn't return
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
1428 **/
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
1429
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
1430 static void flip_page (void)
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
1431 {
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
1432 struct sdl_priv_s *priv = &sdl_priv;
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
1433
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
1434 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
1435 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
1436 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
1437 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
1438 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
1439 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
1440 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
1441 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
1442 case IMGFMT_BGR32:
1219
e169f798ff71 Sync with SF cvs. (Bugfixed YUV aalib and RGB/BGR32 converted modes.)
atmos4
parents: 1197
diff changeset
1443 if(!priv->dblit) {
1194
40550e1458e8 Drastic! speedup of rgb code. Removed nonsens memhole fixes.
atmosfear
parents: 1188
diff changeset
1444 /* blit to the RGB surface */
40550e1458e8 Drastic! speedup of rgb code. Removed nonsens memhole fixes.
atmosfear
parents: 1188
diff changeset
1445 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
1446 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
1447 }
1
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
1448
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
1449 /* update screen */
784
dee122f9cdb9 Added full aspect awareness, rewrote fullscreen handling.
atmosfear
parents: 772
diff changeset
1450 //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
1451 if(priv->osd_has_changed) {
156482788caf osd outside movie support for vo_sdl, patch by Fredrik Kuivinen
atmos4
parents: 4790
diff changeset
1452 priv->osd_has_changed = 0;
784
dee122f9cdb9 Added full aspect awareness, rewrote fullscreen handling.
atmosfear
parents: 772
diff changeset
1453 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
1454 }
156482788caf osd outside movie support for vo_sdl, patch by Fredrik Kuivinen
atmos4
parents: 4790
diff changeset
1455 else
156482788caf osd outside movie support for vo_sdl, patch by Fredrik Kuivinen
atmos4
parents: 4790
diff changeset
1456 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
1457 priv->surface->clip_rect.w, priv->y_screen_bottom);
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
1458
b9735f811d7d 15,16,24,32Bit rgb/bgr support added, aalib fixed, performance optimizations, code cleanup and so much more...
atmosfear
parents: 616
diff changeset
1459 /* 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
1460 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
1461 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
1462
b9735f811d7d 15,16,24,32Bit rgb/bgr support added, aalib fixed, performance optimizations, code cleanup and so much more...
atmosfear
parents: 616
diff changeset
1463 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
1464 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
1465 /* 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
1466 SDL_DisplayYUVOverlay (priv->overlay, &priv->surface->clip_rect);
b9735f811d7d 15,16,24,32Bit rgb/bgr support added, aalib fixed, performance optimizations, code cleanup and so much more...
atmosfear
parents: 616
diff changeset
1467
b9735f811d7d 15,16,24,32Bit rgb/bgr support added, aalib fixed, performance optimizations, code cleanup and so much more...
atmosfear
parents: 616
diff changeset
1468 /* 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
1469 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
1470 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
1471
b9735f811d7d 15,16,24,32Bit rgb/bgr support added, aalib fixed, performance optimizations, code cleanup and so much more...
atmosfear
parents: 616
diff changeset
1472 //SDL_LockYUVOverlay (priv->overlay); // removed because unused!?
b9735f811d7d 15,16,24,32Bit rgb/bgr support added, aalib fixed, performance optimizations, code cleanup and so much more...
atmosfear
parents: 616
diff changeset
1473 }
1
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
1474 }
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
1475
16171
fd51fd1ff231 Fix the return types of all (six) libvo API functions. Used to be uint32_t, but
ivo
parents: 15212
diff changeset
1476 static int
1
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
1477 query_format(uint32_t format)
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
1478 {
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
1479 switch(format){
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
1480 case IMGFMT_YV12:
6440
2997a3faf381 Streamline enter-key behaviour suggested by Christian Ohm and disable I420/IYUV because
atmos4
parents: 5894
diff changeset
1481 // 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
1482 // case IMGFMT_I420:
2997a3faf381 Streamline enter-key behaviour suggested by Christian Ohm and disable I420/IYUV because
atmos4
parents: 5894
diff changeset
1483 // case IMGFMT_IYUV:
1
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
1484 case IMGFMT_YUY2:
408
b61c5c4484f8 - applied overlay patch by Jens H
atmosfear
parents: 394
diff changeset
1485 case IMGFMT_UYVY:
b61c5c4484f8 - applied overlay patch by Jens H
atmosfear
parents: 394
diff changeset
1486 case IMGFMT_YVYU:
5894
af9efcb80244 Use new style query_formats flags. Fixes bug with flip.
ksorim
parents: 5834
diff changeset
1487 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
1488 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
1489 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
1490 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
1491 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
1492 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
1493 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
1494 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
1495 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
1496 case IMGFMT_BGR32:
5894
af9efcb80244 Use new style query_formats flags. Fixes bug with flip.
ksorim
parents: 5834
diff changeset
1497 return VFCAP_CSP_SUPPORTED | VFCAP_OSD | VFCAP_FLIP;
1
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
1498 }
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
1499 return 0;
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
1500 }
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
1501
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
1502
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
1503 static void
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
1504 uninit(void)
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
1505 {
27377
d58d06eafe83 Change a bunch of X11-specific preprocessor directives.
diego
parents: 26739
diff changeset
1506 #ifdef CONFIG_X11
12787
7aa852ffba45 fix for xscreensaver disabling
reimar
parents: 12683
diff changeset
1507 struct sdl_priv_s *priv = &sdl_priv;
7aa852ffba45 fix for xscreensaver disabling
reimar
parents: 12683
diff changeset
1508 if(priv->X) {
28021
1bbc09f93acb Remove a lot of completely pointless mp_msg_test calls.
reimar
parents: 27706
diff changeset
1509 mp_msg(MSGT_VO,MSGL_V, "SDL: activating XScreensaver/DPMS\n");
12787
7aa852ffba45 fix for xscreensaver disabling
reimar
parents: 12683
diff changeset
1510 vo_x11_uninit();
772
e70a52f17f92 Added flipped video support and activate/deactivate screensaver under X.
atmosfear
parents: 770
diff changeset
1511 }
e70a52f17f92 Added flipped video support and activate/deactivate screensaver under X.
atmosfear
parents: 770
diff changeset
1512 #endif
1122
fe9ef743be91 fixed my previousily added bug: ifdef buggy_sdl: keypressed: default case
al3x
parents: 1110
diff changeset
1513 sdl_close();
8840
cecb561fcb21 - init & check SDL availability at preinit() (fixes -vo sdl,mga)
arpi
parents: 8246
diff changeset
1514
cecb561fcb21 - init & check SDL availability at preinit() (fixes -vo sdl,mga)
arpi
parents: 8246
diff changeset
1515 /* Cleanup SDL */
cecb561fcb21 - init & check SDL availability at preinit() (fixes -vo sdl,mga)
arpi
parents: 8246
diff changeset
1516 if(SDL_WasInit(SDL_INIT_VIDEO))
cecb561fcb21 - init & check SDL availability at preinit() (fixes -vo sdl,mga)
arpi
parents: 8246
diff changeset
1517 SDL_QuitSubSystem(SDL_INIT_VIDEO);
cecb561fcb21 - init & check SDL availability at preinit() (fixes -vo sdl,mga)
arpi
parents: 8246
diff changeset
1518
28021
1bbc09f93acb Remove a lot of completely pointless mp_msg_test calls.
reimar
parents: 27706
diff changeset
1519 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
1520
1
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
1521 }
4352
ed5b85b713a3 Extensions for video accelerated architecture
nick
parents: 4342
diff changeset
1522
16171
fd51fd1ff231 Fix the return types of all (six) libvo API functions. Used to be uint32_t, but
ivo
parents: 15212
diff changeset
1523 static int preinit(const char *arg)
4352
ed5b85b713a3 Extensions for video accelerated architecture
nick
parents: 4342
diff changeset
1524 {
5240
e766c07b1d5c This will hopefully fix
ksorim
parents: 5239
diff changeset
1525 struct sdl_priv_s *priv = &sdl_priv;
14876
2b14e57570a8 10l Don't set SDL to X11 by default.
ivo
parents: 14857
diff changeset
1526 char * sdl_driver = NULL;
14857
29a09f111b41 Remove -noxv and -forcexv command line options and replace them by
ivo
parents: 14577
diff changeset
1527 int sdl_hwaccel;
29a09f111b41 Remove -noxv and -forcexv command line options and replace them by
ivo
parents: 14577
diff changeset
1528 int sdl_forcexv;
29a09f111b41 Remove -noxv and -forcexv command line options and replace them by
ivo
parents: 14577
diff changeset
1529 opt_t subopts[] = {
29a09f111b41 Remove -noxv and -forcexv command line options and replace them by
ivo
parents: 14577
diff changeset
1530 {"forcexv", OPT_ARG_BOOL, &sdl_forcexv, NULL, 0},
29a09f111b41 Remove -noxv and -forcexv command line options and replace them by
ivo
parents: 14577
diff changeset
1531 {"hwaccel", OPT_ARG_BOOL, &sdl_hwaccel, NULL, 0},
29a09f111b41 Remove -noxv and -forcexv command line options and replace them by
ivo
parents: 14577
diff changeset
1532 {"driver", OPT_ARG_MSTRZ, &sdl_driver, NULL, 0},
29a09f111b41 Remove -noxv and -forcexv command line options and replace them by
ivo
parents: 14577
diff changeset
1533 {NULL, 0, NULL, NULL, 0}
29a09f111b41 Remove -noxv and -forcexv command line options and replace them by
ivo
parents: 14577
diff changeset
1534 };
29a09f111b41 Remove -noxv and -forcexv command line options and replace them by
ivo
parents: 14577
diff changeset
1535
29a09f111b41 Remove -noxv and -forcexv command line options and replace them by
ivo
parents: 14577
diff changeset
1536 sdl_forcexv = 1;
29a09f111b41 Remove -noxv and -forcexv command line options and replace them by
ivo
parents: 14577
diff changeset
1537 sdl_hwaccel = 1;
29a09f111b41 Remove -noxv and -forcexv command line options and replace them by
ivo
parents: 14577
diff changeset
1538
29a09f111b41 Remove -noxv and -forcexv command line options and replace them by
ivo
parents: 14577
diff changeset
1539 if (subopt_parse(arg, subopts) != 0) return -1;
5240
e766c07b1d5c This will hopefully fix
ksorim
parents: 5239
diff changeset
1540
e766c07b1d5c This will hopefully fix
ksorim
parents: 5239
diff changeset
1541 priv->rgbsurface = NULL;
e766c07b1d5c This will hopefully fix
ksorim
parents: 5239
diff changeset
1542 priv->overlay = NULL;
e766c07b1d5c This will hopefully fix
ksorim
parents: 5239
diff changeset
1543 priv->surface = NULL;
e766c07b1d5c This will hopefully fix
ksorim
parents: 5239
diff changeset
1544
28021
1bbc09f93acb Remove a lot of completely pointless mp_msg_test calls.
reimar
parents: 27706
diff changeset
1545 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
1546
14876
2b14e57570a8 10l Don't set SDL to X11 by default.
ivo
parents: 14857
diff changeset
1547 if(sdl_driver) {
2b14e57570a8 10l Don't set SDL to X11 by default.
ivo
parents: 14857
diff changeset
1548 setenv("SDL_VIDEODRIVER", sdl_driver, 1);
14857
29a09f111b41 Remove -noxv and -forcexv command line options and replace them by
ivo
parents: 14577
diff changeset
1549 free(sdl_driver);
14876
2b14e57570a8 10l Don't set SDL to X11 by default.
ivo
parents: 14857
diff changeset
1550 }
8840
cecb561fcb21 - init & check SDL availability at preinit() (fixes -vo sdl,mga)
arpi
parents: 8246
diff changeset
1551
cecb561fcb21 - init & check SDL availability at preinit() (fixes -vo sdl,mga)
arpi
parents: 8246
diff changeset
1552 /* 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
1553 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
1554 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
1555
cecb561fcb21 - init & check SDL availability at preinit() (fixes -vo sdl,mga)
arpi
parents: 8246
diff changeset
1556 /* 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
1557 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
1558 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
1559
cecb561fcb21 - init & check SDL availability at preinit() (fixes -vo sdl,mga)
arpi
parents: 8246
diff changeset
1560 /* 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
1561 priv->fullmode = -2;
cecb561fcb21 - init & check SDL availability at preinit() (fixes -vo sdl,mga)
arpi
parents: 8246
diff changeset
1562
cecb561fcb21 - init & check SDL availability at preinit() (fixes -vo sdl,mga)
arpi
parents: 8246
diff changeset
1563 priv->fullmodes = NULL;
cecb561fcb21 - init & check SDL availability at preinit() (fixes -vo sdl,mga)
arpi
parents: 8246
diff changeset
1564 priv->bpp = 0;
cecb561fcb21 - init & check SDL availability at preinit() (fixes -vo sdl,mga)
arpi
parents: 8246
diff changeset
1565
cecb561fcb21 - init & check SDL availability at preinit() (fixes -vo sdl,mga)
arpi
parents: 8246
diff changeset
1566 /* initialize the SDL Video system */
cecb561fcb21 - init & check SDL availability at preinit() (fixes -vo sdl,mga)
arpi
parents: 8246
diff changeset
1567 if (!SDL_WasInit(SDL_INIT_VIDEO)) {
cecb561fcb21 - init & check SDL availability at preinit() (fixes -vo sdl,mga)
arpi
parents: 8246
diff changeset
1568 if (SDL_Init (SDL_INIT_VIDEO|SDL_INIT_NOPARACHUTE)) {
18335
5766a9d21992 Rename some misspelled and misnamed messages.
diego
parents: 18234
diff changeset
1569 mp_msg(MSGT_VO,MSGL_ERR, MSGTR_LIBVO_SDL_InitializationFailed, SDL_GetError());
5766a9d21992 Rename some misspelled and misnamed messages.
diego
parents: 18234
diff changeset
1570
8840
cecb561fcb21 - init & check SDL availability at preinit() (fixes -vo sdl,mga)
arpi
parents: 8246
diff changeset
1571 return -1;
cecb561fcb21 - init & check SDL availability at preinit() (fixes -vo sdl,mga)
arpi
parents: 8246
diff changeset
1572 }
cecb561fcb21 - init & check SDL availability at preinit() (fixes -vo sdl,mga)
arpi
parents: 8246
diff changeset
1573 }
cecb561fcb21 - init & check SDL availability at preinit() (fixes -vo sdl,mga)
arpi
parents: 8246
diff changeset
1574
cecb561fcb21 - init & check SDL availability at preinit() (fixes -vo sdl,mga)
arpi
parents: 8246
diff changeset
1575 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
1576 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
1577
8935
3c50e662d588 10l, init priv->X at right place
atmos4
parents: 8840
diff changeset
1578 priv->X = 0;
27377
d58d06eafe83 Change a bunch of X11-specific preprocessor directives.
diego
parents: 26739
diff changeset
1579 #ifdef CONFIG_X11
12787
7aa852ffba45 fix for xscreensaver disabling
reimar
parents: 12683
diff changeset
1580 if(vo_init()) {
28021
1bbc09f93acb Remove a lot of completely pointless mp_msg_test calls.
reimar
parents: 27706
diff changeset
1581 mp_msg(MSGT_VO,MSGL_V, "SDL: deactivating XScreensaver/DPMS\n");
12787
7aa852ffba45 fix for xscreensaver disabling
reimar
parents: 12683
diff changeset
1582 priv->XWidth = vo_screenwidth;
7aa852ffba45 fix for xscreensaver disabling
reimar
parents: 12683
diff changeset
1583 priv->XHeight = vo_screenheight;
8840
cecb561fcb21 - init & check SDL availability at preinit() (fixes -vo sdl,mga)
arpi
parents: 8246
diff changeset
1584 priv->X = 1;
28021
1bbc09f93acb Remove a lot of completely pointless mp_msg_test calls.
reimar
parents: 27706
diff changeset
1585 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
1586 }
cecb561fcb21 - init & check SDL availability at preinit() (fixes -vo sdl,mga)
arpi
parents: 8246
diff changeset
1587 #endif
cecb561fcb21 - init & check SDL availability at preinit() (fixes -vo sdl,mga)
arpi
parents: 8246
diff changeset
1588
5240
e766c07b1d5c This will hopefully fix
ksorim
parents: 5239
diff changeset
1589 return 0;
4352
ed5b85b713a3 Extensions for video accelerated architecture
nick
parents: 4342
diff changeset
1590 }
ed5b85b713a3 Extensions for video accelerated architecture
nick
parents: 4342
diff changeset
1591
5058
33c01c795987 sdl dr support
atmos4
parents: 4925
diff changeset
1592 static uint32_t get_image(mp_image_t *mpi)
33c01c795987 sdl dr support
atmos4
parents: 4925
diff changeset
1593 {
5460
acf7acfa7acc Fix I420 handling, though still don't know why divx4 codec queries for I420 not YUY2!
atmos4
parents: 5385
diff changeset
1594 struct sdl_priv_s *priv = &sdl_priv;
5058
33c01c795987 sdl dr support
atmos4
parents: 4925
diff changeset
1595
33c01c795987 sdl dr support
atmos4
parents: 4925
diff changeset
1596 if(priv->format != mpi->imgfmt) return VO_FALSE;
33c01c795987 sdl dr support
atmos4
parents: 4925
diff changeset
1597 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
1598 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
1599 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
1600 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
1601 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
1602 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
1603 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
1604 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
1605 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
1606 } else {
acf7acfa7acc Fix I420 handling, though still don't know why divx4 codec queries for I420 not YUY2!
atmos4
parents: 5385
diff changeset
1607 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
1608 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
1609 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
1610 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
1611 }
5058
33c01c795987 sdl dr support
atmos4
parents: 4925
diff changeset
1612 }
33c01c795987 sdl dr support
atmos4
parents: 4925
diff changeset
1613 else if(IMGFMT_IS_RGB(priv->format) || IMGFMT_IS_BGR(priv->format)) {
33c01c795987 sdl dr support
atmos4
parents: 4925
diff changeset
1614 if(priv->dblit) {
33c01c795987 sdl dr support
atmos4
parents: 4925
diff changeset
1615 if(mpi->type == MP_IMGTYPE_STATIC && (priv->surface->flags & SDL_DOUBLEBUF))
33c01c795987 sdl dr support
atmos4
parents: 4925
diff changeset
1616 return VO_FALSE;
33c01c795987 sdl dr support
atmos4
parents: 4925
diff changeset
1617
23619
ac2d6f1d982c Avoid vo_sdl void * arithmetic
reimar
parents: 23457
diff changeset
1618 mpi->planes[0] = (uint8_t *)priv->surface->pixels + priv->y*priv->surface->pitch;
5058
33c01c795987 sdl dr support
atmos4
parents: 4925
diff changeset
1619 mpi->stride[0] = priv->surface->pitch;
33c01c795987 sdl dr support
atmos4
parents: 4925
diff changeset
1620 }
33c01c795987 sdl dr support
atmos4
parents: 4925
diff changeset
1621 else {
23619
ac2d6f1d982c Avoid vo_sdl void * arithmetic
reimar
parents: 23457
diff changeset
1622 mpi->planes[0] = (uint8_t *)priv->rgbsurface->pixels + priv->y*priv->rgbsurface->pitch;
5058
33c01c795987 sdl dr support
atmos4
parents: 4925
diff changeset
1623 mpi->stride[0] = priv->rgbsurface->pitch;
33c01c795987 sdl dr support
atmos4
parents: 4925
diff changeset
1624 }
33c01c795987 sdl dr support
atmos4
parents: 4925
diff changeset
1625 }
33c01c795987 sdl dr support
atmos4
parents: 4925
diff changeset
1626 else {
33c01c795987 sdl dr support
atmos4
parents: 4925
diff changeset
1627 mpi->planes[0] = priv->overlay->pixels[0] + priv->y*priv->overlay->pitches[0];
33c01c795987 sdl dr support
atmos4
parents: 4925
diff changeset
1628 mpi->stride[0] = priv->overlay->pitches[0];
33c01c795987 sdl dr support
atmos4
parents: 4925
diff changeset
1629 }
33c01c795987 sdl dr support
atmos4
parents: 4925
diff changeset
1630
33c01c795987 sdl dr support
atmos4
parents: 4925
diff changeset
1631 mpi->flags|=MP_IMGFLAG_DIRECT;
33c01c795987 sdl dr support
atmos4
parents: 4925
diff changeset
1632 return VO_TRUE;
33c01c795987 sdl dr support
atmos4
parents: 4925
diff changeset
1633 }
33c01c795987 sdl dr support
atmos4
parents: 4925
diff changeset
1634
33c01c795987 sdl dr support
atmos4
parents: 4925
diff changeset
1635 return VO_FALSE;
33c01c795987 sdl dr support
atmos4
parents: 4925
diff changeset
1636 }
33c01c795987 sdl dr support
atmos4
parents: 4925
diff changeset
1637
16171
fd51fd1ff231 Fix the return types of all (six) libvo API functions. Used to be uint32_t, but
ivo
parents: 15212
diff changeset
1638 static int control(uint32_t request, void *data, ...)
4352
ed5b85b713a3 Extensions for video accelerated architecture
nick
parents: 4342
diff changeset
1639 {
4772
9c65efb6ac7e support for VOCTRL_FULLSCREEN
atmos4
parents: 4596
diff changeset
1640 struct sdl_priv_s *priv = &sdl_priv;
4592
5fbfd8545c3b query_ stuff replaced by new control() - patch by David Holm
arpi
parents: 4590
diff changeset
1641 switch (request) {
5058
33c01c795987 sdl dr support
atmos4
parents: 4925
diff changeset
1642 case VOCTRL_GET_IMAGE:
33c01c795987 sdl dr support
atmos4
parents: 4925
diff changeset
1643 return get_image(data);
4592
5fbfd8545c3b query_ stuff replaced by new control() - patch by David Holm
arpi
parents: 4590
diff changeset
1644 case VOCTRL_QUERY_FORMAT:
5fbfd8545c3b query_ stuff replaced by new control() - patch by David Holm
arpi
parents: 4590
diff changeset
1645 return query_format(*((uint32_t*)data));
4772
9c65efb6ac7e support for VOCTRL_FULLSCREEN
atmos4
parents: 4596
diff changeset
1646 case VOCTRL_FULLSCREEN:
9c65efb6ac7e support for VOCTRL_FULLSCREEN
atmos4
parents: 4596
diff changeset
1647 if (priv->surface->flags & SDL_FULLSCREEN) {
4807
156482788caf osd outside movie support for vo_sdl, patch by Fredrik Kuivinen
atmos4
parents: 4790
diff changeset
1648 set_video_mode(priv->windowsize.w, priv->windowsize.h, priv->bpp, priv->sdlflags);
4772
9c65efb6ac7e support for VOCTRL_FULLSCREEN
atmos4
parents: 4596
diff changeset
1649 SDL_ShowCursor(1);
28021
1bbc09f93acb Remove a lot of completely pointless mp_msg_test calls.
reimar
parents: 27706
diff changeset
1650 mp_msg(MSGT_VO,MSGL_DBG2, "SDL: Windowed mode\n");
4772
9c65efb6ac7e support for VOCTRL_FULLSCREEN
atmos4
parents: 4596
diff changeset
1651 } else if (priv->fullmodes) {
9c65efb6ac7e support for VOCTRL_FULLSCREEN
atmos4
parents: 4596
diff changeset
1652 set_fullmode(priv->fullmode);
28021
1bbc09f93acb Remove a lot of completely pointless mp_msg_test calls.
reimar
parents: 27706
diff changeset
1653 mp_msg(MSGT_VO,MSGL_DBG2, "SDL: Set fullscreen mode\n");
4772
9c65efb6ac7e support for VOCTRL_FULLSCREEN
atmos4
parents: 4596
diff changeset
1654 }
4790
50288f9f6b15 Fix return value of VOCTRL_FULLSCREEN
atmos4
parents: 4772
diff changeset
1655 return VO_TRUE;
4592
5fbfd8545c3b query_ stuff replaced by new control() - patch by David Holm
arpi
parents: 4590
diff changeset
1656 }
4772
9c65efb6ac7e support for VOCTRL_FULLSCREEN
atmos4
parents: 4596
diff changeset
1657
4592
5fbfd8545c3b query_ stuff replaced by new control() - patch by David Holm
arpi
parents: 4590
diff changeset
1658 return VO_NOTIMPL;
4352
ed5b85b713a3 Extensions for video accelerated architecture
nick
parents: 4342
diff changeset
1659 }