annotate libvo/vo_sdl.c @ 1346:d6e6132bff35

AUDIO_ENCODING_LINEAR8 format is not available on sunos 5.5. Format is unsupported in mplayer for now, to get the code compiled on that old version of the OS.
author jkeil
date Thu, 19 Jul 2001 20:04:54 +0000
parents e7d98f8f9459
children 3c7f13cb0a8a
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/),
580
dd0a2985304f little fix, just to be precise
arpi_esp
parents: 579
diff changeset
16 * to be used with MPlayer [The Movie Player for Linux] project, further info
579
256f3d32a4af Added maintainer info and disclaimer.
atmosfear
parents: 575
diff changeset
17 * from http://mplayer.sourceforge.net.
256f3d32a4af Added maintainer info and disclaimer.
atmosfear
parents: 575
diff changeset
18 *
256f3d32a4af Added maintainer info and disclaimer.
atmosfear
parents: 575
diff changeset
19 * Current license is not decided yet, but we're heading for GPL.
256f3d32a4af Added maintainer info and disclaimer.
atmosfear
parents: 575
diff changeset
20 *
256f3d32a4af Added maintainer info and disclaimer.
atmosfear
parents: 575
diff changeset
21 * -- old disclaimer --
256f3d32a4af Added maintainer info and disclaimer.
atmosfear
parents: 575
diff changeset
22 *
1
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
23 * A mpeg2dec display driver that does output through the
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
24 * Simple DirectMedia Layer (SDL) library. This effectively gives us all
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
25 * sorts of output options: X11, SVGAlib, fbcon, AAlib, GGI. Win32, MacOS
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
26 * and BeOS support, too. Yay. SDL info, source, and binaries can be found
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
27 * at http://slouken.devolution.com/SDL/
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
28 *
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
29 * This file is part of mpeg2dec, a free MPEG-2 video stream decoder.
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
30 *
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
31 * mpeg2dec is free software; you can redistribute it and/or modify
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
32 * it under the terms of the GNU General Public License as published by
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
33 * the Free Software Foundation; either version 2, or (at your option)
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
34 * any later version.
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
35 *
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
36 * mpeg2dec is distributed in the hope that it will be useful,
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
37 * but WITHOUT ANY WARRANTY; without even the implied warranty of
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
38 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
39 * GNU General Public License for more details.
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
40 *
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
41 * You should have received a copy of the GNU General Public License
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
42 * along with GNU Make; see the file COPYING. If not, write to
579
256f3d32a4af Added maintainer info and disclaimer.
atmosfear
parents: 575
diff changeset
43 * the Free Software Foundation.
256f3d32a4af Added maintainer info and disclaimer.
atmosfear
parents: 575
diff changeset
44 *
256f3d32a4af Added maintainer info and disclaimer.
atmosfear
parents: 575
diff changeset
45 * -- end old disclaimer --
1
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
46 *
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
47 * Changes:
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
48 * Dominik Schnitzer <dominik@schnitzer.at> - November 08, 2000.
84
802fbd1760ae aspect ratio patch by Felix B¸«änemann
arpi_esp
parents: 31
diff changeset
49 * - Added resizing support, fullscreen: changed the sdlmodes selection
1
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
50 * routine.
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
51 * - SDL bugfixes: removed the atexit(SLD_Quit), SDL_Quit now resides in
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
52 * the plugin_exit routine.
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
53 * - Commented the source :)
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
54 * - Shortcuts: for switching between Fullscreen/Windowed mode and for
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
55 * cycling between the different Fullscreen modes.
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
56 * - Small bugfixes: proper width/height of movie
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
57 * Dominik Schnitzer <dominik@schnitzer.at> - November 11, 2000.
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
58 * - Cleanup code, more comments
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
59 * - Better error handling
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
60 * Bruno Barreyra <barreyra@ufl.edu> - December 10, 2000.
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
61 * - Eliminated memcpy's for entire frames
579
256f3d32a4af Added maintainer info and disclaimer.
atmosfear
parents: 575
diff changeset
62 * Felix Buenemann <Atmosfear@users.sourceforge.net> - March 11, 2001
84
802fbd1760ae aspect ratio patch by Felix B¸«änemann
arpi_esp
parents: 31
diff changeset
63 * - Added aspect-ratio awareness for fullscreen
579
256f3d32a4af Added maintainer info and disclaimer.
atmosfear
parents: 575
diff changeset
64 * Felix Buenemann <Atmosfear@users.sourceforge.net> - March 11, 2001
97
cab74dfde6dd Felix B¸«änemann added support for horizontal scaling for aspect-ratio in
atmosfear
parents: 84
diff changeset
65 * - Fixed aspect-ratio awareness, did only vertical scaling (black bars above
cab74dfde6dd Felix B¸«änemann added support for horizontal scaling for aspect-ratio in
atmosfear
parents: 84
diff changeset
66 * and below), now also does horizontal scaling (black bars left and right),
cab74dfde6dd Felix B¸«änemann added support for horizontal scaling for aspect-ratio in
atmosfear
parents: 84
diff changeset
67 * so you get the biggest possible picture with correct aspect-ratio.
cab74dfde6dd Felix B¸«änemann added support for horizontal scaling for aspect-ratio in
atmosfear
parents: 84
diff changeset
68 * Felix Buenemann <Atmosfear@users.sourceforge.net> - March 12, 2001
579
256f3d32a4af Added maintainer info and disclaimer.
atmosfear
parents: 575
diff changeset
69 * - Minor bugfix to aspect-ratio for non-4:3-resolutions (like 1280x1024)
97
cab74dfde6dd Felix B¸«änemann added support for horizontal scaling for aspect-ratio in
atmosfear
parents: 84
diff changeset
70 * - Bugfix to check_events() to reveal mouse cursor after 'q'-quit in
cab74dfde6dd Felix B¸«änemann added support for horizontal scaling for aspect-ratio in
atmosfear
parents: 84
diff changeset
71 * fullscreen-mode
351
2c4ded6ffebc - Full OSD and subtitle support added
atmosfear
parents: 350
diff changeset
72 * Felix Buenemann <Atmosfear@users.sourceforge.net> - April 10, 2001
331
0f1737e626fa - Changed keypress-detection from keydown to keyup, seems to fix keyrepeat
atmosfear
parents: 265
diff changeset
73 * - Changed keypress-detection from keydown to keyup, seems to fix keyrepeat
0f1737e626fa - Changed keypress-detection from keydown to keyup, seems to fix keyrepeat
atmosfear
parents: 265
diff changeset
74 * bug (key had to be pressed twice to be detected)
0f1737e626fa - Changed keypress-detection from keydown to keyup, seems to fix keyrepeat
atmosfear
parents: 265
diff changeset
75 * - Changed key-handling: 'f' cycles fullscreen/windowed, ESC/RETURN/'q' quits
0f1737e626fa - Changed keypress-detection from keydown to keyup, seems to fix keyrepeat
atmosfear
parents: 265
diff changeset
76 * - Bugfix which avoids exit, because return is passed to sdl-output on startup,
0f1737e626fa - Changed keypress-detection from keydown to keyup, seems to fix keyrepeat
atmosfear
parents: 265
diff changeset
77 * which caused the player to exit (keyboard-buffer problem? better solution
0f1737e626fa - Changed keypress-detection from keydown to keyup, seems to fix keyrepeat
atmosfear
parents: 265
diff changeset
78 * recommed)
351
2c4ded6ffebc - Full OSD and subtitle support added
atmosfear
parents: 350
diff changeset
79 * Felix Buenemann <Atmosfear@users.sourceforge.net> - April 11, 2001
2c4ded6ffebc - Full OSD and subtitle support added
atmosfear
parents: 350
diff changeset
80 * - OSD and subtitle support added
2c4ded6ffebc - Full OSD and subtitle support added
atmosfear
parents: 350
diff changeset
81 * - some minor code-changes
355
70833462dee9 - added code to comply with new fullscreen meaning
atmosfear
parents: 354
diff changeset
82 * - added code to comply with new fullscreen meaning
70833462dee9 - added code to comply with new fullscreen meaning
atmosfear
parents: 354
diff changeset
83 * - changed fullscreen-mode-cycling from '+' to 'c' (interferred with audiosync
70833462dee9 - added code to comply with new fullscreen meaning
atmosfear
parents: 354
diff changeset
84 * adjustment)
386
020ca66964e4 - added keymapping to toggle OSD ('o' key)
atmosfear
parents: 357
diff changeset
85 * Felix Buenemann <Atmosfear@users.sourceforge.net> - April 13, 2001
020ca66964e4 - added keymapping to toggle OSD ('o' key)
atmosfear
parents: 357
diff changeset
86 * - added keymapping to toggle OSD ('o' key)
394
f4fb35ef4c06 - added some defines to modify some sdl-out internas (see comments)
atmosfear
parents: 386
diff changeset
87 * - added some defines to modify some sdl-out internas (see comments)
475
904d1cfda2dd changed keyboard input handling to pass key through to mplayer if not special to sdl
atmosfear
parents: 451
diff changeset
88 *
904d1cfda2dd changed keyboard input handling to pass key through to mplayer if not special to sdl
atmosfear
parents: 451
diff changeset
89 * Felix Buenemann: further changes will be visible through cvs log, don't want
579
256f3d32a4af Added maintainer info and disclaimer.
atmosfear
parents: 575
diff changeset
90 * to update this all the time (CVS info on http://mplayer.sourceforge.net)
256f3d32a4af Added maintainer info and disclaimer.
atmosfear
parents: 575
diff changeset
91 *
1
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
92 */
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
93
542
7eaec864e3d2 doesn't include fastmemcpy.h when SDL_NOXV is defined.
atmosfear
parents: 475
diff changeset
94 /* 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
95 #undef SDL_NOHWSURFACE
7eaec864e3d2 doesn't include fastmemcpy.h when SDL_NOXV is defined.
atmosfear
parents: 475
diff changeset
96
1197
80ca716ce5e9 Made surface locks switchable via preprocessor.
atmosfear
parents: 1194
diff changeset
97 /* define to enable surface locks, this might be needed on SMP machines */
80ca716ce5e9 Made surface locks switchable via preprocessor.
atmosfear
parents: 1194
diff changeset
98 #undef SDL_ENABLE_LOCKS
80ca716ce5e9 Made surface locks switchable via preprocessor.
atmosfear
parents: 1194
diff changeset
99
705
27d351f251eb Added workaround for buggy SDL versions (before 1.2.1).
atmosfear
parents: 703
diff changeset
100 //#define BUGGY_SDL //defined by configure
27d351f251eb Added workaround for buggy SDL versions (before 1.2.1).
atmosfear
parents: 703
diff changeset
101
784
dee122f9cdb9 Added full aspect awareness, rewrote fullscreen handling.
atmosfear
parents: 772
diff changeset
102 /* MONITOR_ASPECT MUST BE FLOAT */
dee122f9cdb9 Added full aspect awareness, rewrote fullscreen handling.
atmosfear
parents: 772
diff changeset
103 #define MONITOR_ASPECT 4.0/3.0
dee122f9cdb9 Added full aspect awareness, rewrote fullscreen handling.
atmosfear
parents: 772
diff changeset
104
1
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
105 #include <stdio.h>
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
106 #include <stdlib.h>
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
107 #include <string.h>
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
108 #include <inttypes.h>
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
109
1100
7829676dc4ef Ooops, wrong path to config.h - now you may enjoy code that was never before used =)
atmosfear
parents: 1080
diff changeset
110 #include "../config.h"
1
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
111 #include "video_out.h"
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
112 #include "video_out_internal.h"
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
113
354
7de9e48c83a5 memcpy() moved mmx.h -> fastmemcpy.h
arpi_esp
parents: 351
diff changeset
114 #include "fastmemcpy.h"
616
41d6eec69b60 clean up
pontscho
parents: 612
diff changeset
115 #include "sub.h"
350
601822cc8c52 applied MMX2 memcpy() patch by Nick Kurshev
arpi_esp
parents: 331
diff changeset
116
772
e70a52f17f92 Added flipped video support and activate/deactivate screensaver under X.
atmosfear
parents: 770
diff changeset
117 #ifdef HAVE_X11
e70a52f17f92 Added flipped video support and activate/deactivate screensaver under X.
atmosfear
parents: 770
diff changeset
118 #include <X11/Xlib.h>
e70a52f17f92 Added flipped video support and activate/deactivate screensaver under X.
atmosfear
parents: 770
diff changeset
119 #include "x11_common.h"
e70a52f17f92 Added flipped video support and activate/deactivate screensaver under X.
atmosfear
parents: 770
diff changeset
120 #endif
e70a52f17f92 Added flipped video support and activate/deactivate screensaver under X.
atmosfear
parents: 770
diff changeset
121
1
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
122 LIBVO_EXTERN(sdl)
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
123
543
ee0010d0ca81 Changed some code so it only kicks in when XV is disable.
atmosfear
parents: 542
diff changeset
124 extern int verbose;
635
b9735f811d7d 15,16,24,32Bit rgb/bgr support added, aalib fixed, performance optimizations, code cleanup and so much more...
atmosfear
parents: 616
diff changeset
125 int sdl_noxv;
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 int sdl_forcexv;
543
ee0010d0ca81 Changed some code so it only kicks in when XV is disable.
atmosfear
parents: 542
diff changeset
127
1
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
128 static vo_info_t vo_info =
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
129 {
635
b9735f811d7d 15,16,24,32Bit rgb/bgr support added, aalib fixed, performance optimizations, code cleanup and so much more...
atmosfear
parents: 616
diff changeset
130 "SDL YUV/RGB/BGR renderer (SDL v1.1.7+ only!)",
1
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
131 "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
132 "Ryan C. Gordon <icculus@lokigames.com>, Felix Buenemann <atmosfear@users.sourceforge.net>",
1
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
133 ""
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
134 };
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
135
1238
e7d98f8f9459 Corrected SDL include path.
atmos4
parents: 1219
diff changeset
136 #include <SDL.h>
1038
b36fb1ae4b53 applied solaris8/netbsd/other fixes patch by J¸«ärgen Keil <jk@tools.de>
arpi_esp
parents: 973
diff changeset
137
b36fb1ae4b53 applied solaris8/netbsd/other fixes patch by J¸«ärgen Keil <jk@tools.de>
arpi_esp
parents: 973
diff changeset
138 #if defined(sun) && defined(__svr4__)
b36fb1ae4b53 applied solaris8/netbsd/other fixes patch by J¸«ärgen Keil <jk@tools.de>
arpi_esp
parents: 973
diff changeset
139 /* setenv is missing on solaris */
b36fb1ae4b53 applied solaris8/netbsd/other fixes patch by J¸«ärgen Keil <jk@tools.de>
arpi_esp
parents: 973
diff changeset
140 static void setenv(const char *name, const char *val, int _xx)
b36fb1ae4b53 applied solaris8/netbsd/other fixes patch by J¸«ärgen Keil <jk@tools.de>
arpi_esp
parents: 973
diff changeset
141 {
b36fb1ae4b53 applied solaris8/netbsd/other fixes patch by J¸«ärgen Keil <jk@tools.de>
arpi_esp
parents: 973
diff changeset
142 int len = strlen(name) + strlen(val) + 2;
b36fb1ae4b53 applied solaris8/netbsd/other fixes patch by J¸«ärgen Keil <jk@tools.de>
arpi_esp
parents: 973
diff changeset
143 char *env = malloc(len);
b36fb1ae4b53 applied solaris8/netbsd/other fixes patch by J¸«ärgen Keil <jk@tools.de>
arpi_esp
parents: 973
diff changeset
144
b36fb1ae4b53 applied solaris8/netbsd/other fixes patch by J¸«ärgen Keil <jk@tools.de>
arpi_esp
parents: 973
diff changeset
145 if (env != NULL) {
b36fb1ae4b53 applied solaris8/netbsd/other fixes patch by J¸«ärgen Keil <jk@tools.de>
arpi_esp
parents: 973
diff changeset
146 strcpy(env, name);
b36fb1ae4b53 applied solaris8/netbsd/other fixes patch by J¸«ärgen Keil <jk@tools.de>
arpi_esp
parents: 973
diff changeset
147 strcat(env, "=");
b36fb1ae4b53 applied solaris8/netbsd/other fixes patch by J¸«ärgen Keil <jk@tools.de>
arpi_esp
parents: 973
diff changeset
148 strcat(env, val);
b36fb1ae4b53 applied solaris8/netbsd/other fixes patch by J¸«ärgen Keil <jk@tools.de>
arpi_esp
parents: 973
diff changeset
149 putenv(env);
b36fb1ae4b53 applied solaris8/netbsd/other fixes patch by J¸«ärgen Keil <jk@tools.de>
arpi_esp
parents: 973
diff changeset
150 }
b36fb1ae4b53 applied solaris8/netbsd/other fixes patch by J¸«ärgen Keil <jk@tools.de>
arpi_esp
parents: 973
diff changeset
151 }
b36fb1ae4b53 applied solaris8/netbsd/other fixes patch by J¸«ärgen Keil <jk@tools.de>
arpi_esp
parents: 973
diff changeset
152 #endif
b36fb1ae4b53 applied solaris8/netbsd/other fixes patch by J¸«ärgen Keil <jk@tools.de>
arpi_esp
parents: 973
diff changeset
153
b36fb1ae4b53 applied solaris8/netbsd/other fixes patch by J¸«ärgen Keil <jk@tools.de>
arpi_esp
parents: 973
diff changeset
154
784
dee122f9cdb9 Added full aspect awareness, rewrote fullscreen handling.
atmosfear
parents: 772
diff changeset
155 #define FS 0x01
dee122f9cdb9 Added full aspect awareness, rewrote fullscreen handling.
atmosfear
parents: 772
diff changeset
156 #define VM 0x02
dee122f9cdb9 Added full aspect awareness, rewrote fullscreen handling.
atmosfear
parents: 772
diff changeset
157 #define ZOOM 0x04
dee122f9cdb9 Added full aspect awareness, rewrote fullscreen handling.
atmosfear
parents: 772
diff changeset
158 #define FLIP 0x08
dee122f9cdb9 Added full aspect awareness, rewrote fullscreen handling.
atmosfear
parents: 772
diff changeset
159
1
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
160 /** Private SDL Data structure **/
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
161
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
162 static struct sdl_priv_s {
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
163
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
164 /* 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
165 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
166
b9735f811d7d 15,16,24,32Bit rgb/bgr support added, aalib fixed, performance optimizations, code cleanup and so much more...
atmosfear
parents: 616
diff changeset
167 /* SDL display surface */
1
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
168 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
169
b9735f811d7d 15,16,24,32Bit rgb/bgr support added, aalib fixed, performance optimizations, code cleanup and so much more...
atmosfear
parents: 616
diff changeset
170 /* 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
171 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
172
b9735f811d7d 15,16,24,32Bit rgb/bgr support added, aalib fixed, performance optimizations, code cleanup and so much more...
atmosfear
parents: 616
diff changeset
173 /* SDL YUV overlay */
1
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
174 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
175
1
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
176 /* available fullscreen modes */
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
177 SDL_Rect **fullmodes;
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
178
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
179 /* surface attributes for fullscreen and windowed mode */
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
180 Uint32 sdlflags, sdlfullflags;
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
181
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
182 /* save the windowed output extents */
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
183 SDL_Rect windowsize;
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
184
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
185 /* Bits per Pixel */
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
186 Uint8 bpp;
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
187
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
188 /* 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
189 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
190 #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
191 #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
192 #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
193
1219
e169f798ff71 Sync with SF cvs. (Bugfixed YUV aalib and RGB/BGR32 converted modes.)
atmos4
parents: 1197
diff changeset
194 /* use direct blitting to surface */
e169f798ff71 Sync with SF cvs. (Bugfixed YUV aalib and RGB/BGR32 converted modes.)
atmos4
parents: 1197
diff changeset
195 int dblit;
e169f798ff71 Sync with SF cvs. (Bugfixed YUV aalib and RGB/BGR32 converted modes.)
atmos4
parents: 1197
diff changeset
196
1
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
197 /* current fullscreen mode, 0 = highest available fullscreen mode */
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
198 int fullmode;
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
199
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
200 /* YUV ints */
784
dee122f9cdb9 Added full aspect awareness, rewrote fullscreen handling.
atmosfear
parents: 772
diff changeset
201 int framePlaneY, framePlaneUV, framePlaneYUY;
dee122f9cdb9 Added full aspect awareness, rewrote fullscreen handling.
atmosfear
parents: 772
diff changeset
202 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
203
b9735f811d7d 15,16,24,32Bit rgb/bgr support added, aalib fixed, performance optimizations, code cleanup and so much more...
atmosfear
parents: 616
diff changeset
204 /* 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
205 int framePlaneRGB;
772
e70a52f17f92 Added flipped video support and activate/deactivate screensaver under X.
atmosfear
parents: 770
diff changeset
206 int stridePlaneRGB;
e70a52f17f92 Added flipped video support and activate/deactivate screensaver under X.
atmosfear
parents: 770
diff changeset
207
e70a52f17f92 Added flipped video support and activate/deactivate screensaver under X.
atmosfear
parents: 770
diff changeset
208 /* Flip image */
e70a52f17f92 Added flipped video support and activate/deactivate screensaver under X.
atmosfear
parents: 770
diff changeset
209 int flip;
784
dee122f9cdb9 Added full aspect awareness, rewrote fullscreen handling.
atmosfear
parents: 772
diff changeset
210
dee122f9cdb9 Added full aspect awareness, rewrote fullscreen handling.
atmosfear
parents: 772
diff changeset
211 /* fullscreen behaviour; see init */
dee122f9cdb9 Added full aspect awareness, rewrote fullscreen handling.
atmosfear
parents: 772
diff changeset
212 int fulltype;
dee122f9cdb9 Added full aspect awareness, rewrote fullscreen handling.
atmosfear
parents: 772
diff changeset
213
951
9fb176abc1a7 Some fixups for SDL/aalib.
atmosfear
parents: 862
diff changeset
214 /* is X running (0/1) */
9fb176abc1a7 Some fixups for SDL/aalib.
atmosfear
parents: 862
diff changeset
215 int X;
9fb176abc1a7 Some fixups for SDL/aalib.
atmosfear
parents: 862
diff changeset
216
784
dee122f9cdb9 Added full aspect awareness, rewrote fullscreen handling.
atmosfear
parents: 772
diff changeset
217 #ifdef HAVE_X11
dee122f9cdb9 Added full aspect awareness, rewrote fullscreen handling.
atmosfear
parents: 772
diff changeset
218 /* X11 Resolution */
dee122f9cdb9 Added full aspect awareness, rewrote fullscreen handling.
atmosfear
parents: 772
diff changeset
219 int XWidth, XHeight;
dee122f9cdb9 Added full aspect awareness, rewrote fullscreen handling.
atmosfear
parents: 772
diff changeset
220 #endif
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
221
784
dee122f9cdb9 Added full aspect awareness, rewrote fullscreen handling.
atmosfear
parents: 772
diff changeset
222 /* original image dimensions */
dee122f9cdb9 Added full aspect awareness, rewrote fullscreen handling.
atmosfear
parents: 772
diff changeset
223 int width, height;
dee122f9cdb9 Added full aspect awareness, rewrote fullscreen handling.
atmosfear
parents: 772
diff changeset
224
dee122f9cdb9 Added full aspect awareness, rewrote fullscreen handling.
atmosfear
parents: 772
diff changeset
225 /* destination dimensions */
dee122f9cdb9 Added full aspect awareness, rewrote fullscreen handling.
atmosfear
parents: 772
diff changeset
226 int dstwidth, dstheight;
dee122f9cdb9 Added full aspect awareness, rewrote fullscreen handling.
atmosfear
parents: 772
diff changeset
227
dee122f9cdb9 Added full aspect awareness, rewrote fullscreen handling.
atmosfear
parents: 772
diff changeset
228 /* source image format (YUV/RGB/...) */
1
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
229 int format;
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
230 } sdl_priv;
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
231
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
232
351
2c4ded6ffebc - Full OSD and subtitle support added
atmosfear
parents: 350
diff changeset
233 /** libvo Plugin functions **/
2c4ded6ffebc - Full OSD and subtitle support added
atmosfear
parents: 350
diff changeset
234
2c4ded6ffebc - Full OSD and subtitle support added
atmosfear
parents: 350
diff changeset
235 /**
2c4ded6ffebc - Full OSD and subtitle support added
atmosfear
parents: 350
diff changeset
236 * draw_alpha is used for osd and subtitle display.
2c4ded6ffebc - Full OSD and subtitle support added
atmosfear
parents: 350
diff changeset
237 *
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 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
241 struct sdl_priv_s *priv = &sdl_priv;
351
2c4ded6ffebc - Full OSD and subtitle support added
atmosfear
parents: 350
diff changeset
242
408
b61c5c4484f8 - applied overlay patch by Jens H
atmosfear
parents: 394
diff changeset
243 switch(priv->format) {
b61c5c4484f8 - applied overlay patch by Jens H
atmosfear
parents: 394
diff changeset
244 case IMGFMT_YV12:
b61c5c4484f8 - applied overlay patch by Jens H
atmosfear
parents: 394
diff changeset
245 case IMGFMT_I420:
b61c5c4484f8 - applied overlay patch by Jens H
atmosfear
parents: 394
diff changeset
246 case IMGFMT_IYUV:
b61c5c4484f8 - applied overlay patch by Jens H
atmosfear
parents: 394
diff changeset
247 vo_draw_alpha_yv12(w,h,src,srca,stride,((uint8_t *) *(priv->overlay->pixels))+priv->width*y0+x0,priv->width);
b61c5c4484f8 - applied overlay patch by Jens H
atmosfear
parents: 394
diff changeset
248 break;
b61c5c4484f8 - applied overlay patch by Jens H
atmosfear
parents: 394
diff changeset
249 case IMGFMT_YUY2:
b61c5c4484f8 - applied overlay patch by Jens H
atmosfear
parents: 394
diff changeset
250 case IMGFMT_YVYU:
b61c5c4484f8 - applied overlay patch by Jens H
atmosfear
parents: 394
diff changeset
251 vo_draw_alpha_yuy2(w,h,src,srca,stride,((uint8_t *) *(priv->overlay->pixels))+2*(priv->width*y0+x0),2*priv->width);
b61c5c4484f8 - applied overlay patch by Jens H
atmosfear
parents: 394
diff changeset
252 break;
451
e27a365b0303 fixes osd/subtitle for UYVY image format and steps back to 1.15 changes
atmosfear
parents: 448
diff changeset
253 case IMGFMT_UYVY:
e27a365b0303 fixes osd/subtitle for UYVY image format and steps back to 1.15 changes
atmosfear
parents: 448
diff changeset
254 vo_draw_alpha_yuy2(w,h,src,srca,stride,((uint8_t *) *(priv->overlay->pixels))+2*(priv->width*y0+x0)+1,2*priv->width);
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
255 break;
1194
40550e1458e8 Drastic! speedup of rgb code. Removed nonsens memhole fixes.
atmosfear
parents: 1188
diff changeset
256 default:
1219
e169f798ff71 Sync with SF cvs. (Bugfixed YUV aalib and RGB/BGR32 converted modes.)
atmos4
parents: 1197
diff changeset
257 if(priv->dblit)
1194
40550e1458e8 Drastic! speedup of rgb code. Removed nonsens memhole fixes.
atmosfear
parents: 1188
diff changeset
258 switch(priv->format) {
823
e09c92ca4c45 Added ability to use direct surface blitting for BGR modes.
atmosfear
parents: 784
diff changeset
259 case IMGFMT_RGB15:
e09c92ca4c45 Added ability to use direct surface blitting for BGR modes.
atmosfear
parents: 784
diff changeset
260 case IMGFMT_BGR15:
e09c92ca4c45 Added ability to use direct surface blitting for BGR modes.
atmosfear
parents: 784
diff changeset
261 vo_draw_alpha_rgb15(w,h,src,srca,stride,((uint8_t *) priv->surface->pixels)+2*(y0*priv->width+x0),2*priv->width);
e09c92ca4c45 Added ability to use direct surface blitting for BGR modes.
atmosfear
parents: 784
diff changeset
262 break;
e09c92ca4c45 Added ability to use direct surface blitting for BGR modes.
atmosfear
parents: 784
diff changeset
263 case IMGFMT_RGB16:
e09c92ca4c45 Added ability to use direct surface blitting for BGR modes.
atmosfear
parents: 784
diff changeset
264 case IMGFMT_BGR16:
e09c92ca4c45 Added ability to use direct surface blitting for BGR modes.
atmosfear
parents: 784
diff changeset
265 vo_draw_alpha_rgb16(w,h,src,srca,stride,((uint8_t *) priv->surface->pixels)+2*(y0*priv->width+x0),2*priv->width);
e09c92ca4c45 Added ability to use direct surface blitting for BGR modes.
atmosfear
parents: 784
diff changeset
266 break;
e09c92ca4c45 Added ability to use direct surface blitting for BGR modes.
atmosfear
parents: 784
diff changeset
267 case IMGFMT_RGB24:
e09c92ca4c45 Added ability to use direct surface blitting for BGR modes.
atmosfear
parents: 784
diff changeset
268 case IMGFMT_BGR24:
e09c92ca4c45 Added ability to use direct surface blitting for BGR modes.
atmosfear
parents: 784
diff changeset
269 vo_draw_alpha_rgb24(w,h,src,srca,stride,((uint8_t *) priv->surface->pixels)+3*(y0*priv->width+x0),3*priv->width);
e09c92ca4c45 Added ability to use direct surface blitting for BGR modes.
atmosfear
parents: 784
diff changeset
270 break;
e09c92ca4c45 Added ability to use direct surface blitting for BGR modes.
atmosfear
parents: 784
diff changeset
271 case IMGFMT_RGB32:
e09c92ca4c45 Added ability to use direct surface blitting for BGR modes.
atmosfear
parents: 784
diff changeset
272 case IMGFMT_BGR32:
e09c92ca4c45 Added ability to use direct surface blitting for BGR modes.
atmosfear
parents: 784
diff changeset
273 vo_draw_alpha_rgb32(w,h,src,srca,stride,((uint8_t *) priv->surface->pixels)+4*(y0*priv->width+x0),4*priv->width);
e09c92ca4c45 Added ability to use direct surface blitting for BGR modes.
atmosfear
parents: 784
diff changeset
274 break;
1194
40550e1458e8 Drastic! speedup of rgb code. Removed nonsens memhole fixes.
atmosfear
parents: 1188
diff changeset
275 }
40550e1458e8 Drastic! speedup of rgb code. Removed nonsens memhole fixes.
atmosfear
parents: 1188
diff changeset
276 else
40550e1458e8 Drastic! speedup of rgb code. Removed nonsens memhole fixes.
atmosfear
parents: 1188
diff changeset
277 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
278 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
279 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
280 vo_draw_alpha_rgb15(w,h,src,srca,stride,((uint8_t *) priv->rgbsurface->pixels)+2*(y0*priv->width+x0),2*priv->width);
b9735f811d7d 15,16,24,32Bit rgb/bgr support added, aalib fixed, performance optimizations, code cleanup and so much more...
atmosfear
parents: 616
diff changeset
281 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
282 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
283 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
284 vo_draw_alpha_rgb16(w,h,src,srca,stride,((uint8_t *) priv->rgbsurface->pixels)+2*(y0*priv->width+x0),2*priv->width);
b9735f811d7d 15,16,24,32Bit rgb/bgr support added, aalib fixed, performance optimizations, code cleanup and so much more...
atmosfear
parents: 616
diff changeset
285 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
286 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
287 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
288 vo_draw_alpha_rgb24(w,h,src,srca,stride,((uint8_t *) priv->rgbsurface->pixels)+3*(y0*priv->width+x0),3*priv->width);
b9735f811d7d 15,16,24,32Bit rgb/bgr support added, aalib fixed, performance optimizations, code cleanup and so much more...
atmosfear
parents: 616
diff changeset
289 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
290 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
291 case IMGFMT_BGR32:
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 vo_draw_alpha_rgb32(w,h,src,srca,stride,((uint8_t *) priv->rgbsurface->pixels)+4*(y0*priv->width+x0),4*priv->width);
b9735f811d7d 15,16,24,32Bit rgb/bgr support added, aalib fixed, performance optimizations, code cleanup and so much more...
atmosfear
parents: 616
diff changeset
293 break;
1194
40550e1458e8 Drastic! speedup of rgb code. Removed nonsens memhole fixes.
atmosfear
parents: 1188
diff changeset
294 }
408
b61c5c4484f8 - applied overlay patch by Jens H
atmosfear
parents: 394
diff changeset
295 }
351
2c4ded6ffebc - Full OSD and subtitle support added
atmosfear
parents: 350
diff changeset
296 }
1
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
297
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
298
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
299 /**
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
300 * Take a null-terminated array of pointers, and find the last element.
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
301 *
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
302 * params : array == array of which we want to find the last element.
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
303 * returns : index of last NON-NULL element.
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
304 **/
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
305
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
306 static inline int findArrayEnd (SDL_Rect **array)
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
307 {
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
308 int i = 0;
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
309 while ( array[i++] ); /* keep loopin' ... */
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
310
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
311 /* return the index of the last array element */
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
312 return i - 1;
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
313 }
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
314
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
315
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
316 /**
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
317 * Open and prepare SDL output.
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
318 *
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
319 * params : *plugin ==
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
320 * *name ==
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
321 * returns : 0 on success, -1 on failure
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
322 **/
331
0f1737e626fa - Changed keypress-detection from keydown to keyup, seems to fix keyrepeat
atmosfear
parents: 265
diff changeset
323
1
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
324 static int sdl_open (void *plugin, void *name)
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
325 {
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
326 struct sdl_priv_s *priv = &sdl_priv;
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
327 const SDL_VideoInfo *vidInfo = NULL;
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
328 static int opened = 0;
331
0f1737e626fa - Changed keypress-detection from keydown to keyup, seems to fix keyrepeat
atmosfear
parents: 265
diff changeset
329
1
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
330 if (opened)
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
331 return 0;
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
332 opened = 1;
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
333
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 if(verbose > 2) printf("SDL: Opening Plugin\n");
b9735f811d7d 15,16,24,32Bit rgb/bgr support added, aalib fixed, performance optimizations, code cleanup and so much more...
atmosfear
parents: 616
diff changeset
335
1188
f0542c6a52c2 sdl_driver liquidated, vo_subdevice used
al3x
parents: 1126
diff changeset
336 if(vo_subdevice) setenv("SDL_VIDEODRIVER", vo_subdevice, 1);
351
2c4ded6ffebc - Full OSD and subtitle support added
atmosfear
parents: 350
diff changeset
337
2c4ded6ffebc - Full OSD and subtitle support added
atmosfear
parents: 350
diff changeset
338 /* does the user want SDL to try and force Xv */
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
339 if(sdl_forcexv) setenv("SDL_VIDEO_X11_NODIRECTCOLOR", "1", 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
340
b9735f811d7d 15,16,24,32Bit rgb/bgr support added, aalib fixed, performance optimizations, code cleanup and so much more...
atmosfear
parents: 616
diff changeset
341 /* does the user want to disable Xv and use software scaling instead */
b9735f811d7d 15,16,24,32Bit rgb/bgr support added, aalib fixed, performance optimizations, code cleanup and so much more...
atmosfear
parents: 616
diff changeset
342 if(sdl_noxv) setenv("SDL_VIDEO_YUV_HWACCEL", "0", 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
343
1
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
344
84
802fbd1760ae aspect ratio patch by Felix B¸«änemann
arpi_esp
parents: 31
diff changeset
345 /* default to no fullscreen mode, we'll set this as soon we have the avail. modes */
1
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
346 priv->fullmode = -2;
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
347
b9735f811d7d 15,16,24,32Bit rgb/bgr support added, aalib fixed, performance optimizations, code cleanup and so much more...
atmosfear
parents: 616
diff changeset
348 priv->surface = NULL;
b9735f811d7d 15,16,24,32Bit rgb/bgr support added, aalib fixed, performance optimizations, code cleanup and so much more...
atmosfear
parents: 616
diff changeset
349 priv->rgbsurface = NULL;
b9735f811d7d 15,16,24,32Bit rgb/bgr support added, aalib fixed, performance optimizations, code cleanup and so much more...
atmosfear
parents: 616
diff changeset
350 priv->overlay = NULL;
b9735f811d7d 15,16,24,32Bit rgb/bgr support added, aalib fixed, performance optimizations, code cleanup and so much more...
atmosfear
parents: 616
diff changeset
351 priv->fullmodes = NULL;
b9735f811d7d 15,16,24,32Bit rgb/bgr support added, aalib fixed, performance optimizations, code cleanup and so much more...
atmosfear
parents: 616
diff changeset
352 priv->bpp = 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
353
b9735f811d7d 15,16,24,32Bit rgb/bgr support added, aalib fixed, performance optimizations, code cleanup and so much more...
atmosfear
parents: 616
diff changeset
354 /* initialize the SDL Video system */
b9735f811d7d 15,16,24,32Bit rgb/bgr support added, aalib fixed, performance optimizations, code cleanup and so much more...
atmosfear
parents: 616
diff changeset
355 if (SDL_Init (SDL_INIT_VIDEO/*|SDL_INIT_NOPARACHUTE*/)) {
1080
36b883428aeb init checks return value of sdl_open
al3x
parents: 1038
diff changeset
356 printf("SDL: Initializing of SDL failed: %s.\n", 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
357 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
358 }
b9735f811d7d 15,16,24,32Bit rgb/bgr support added, aalib fixed, performance optimizations, code cleanup and so much more...
atmosfear
parents: 616
diff changeset
359
b9735f811d7d 15,16,24,32Bit rgb/bgr support added, aalib fixed, performance optimizations, code cleanup and so much more...
atmosfear
parents: 616
diff changeset
360 SDL_VideoDriverName(priv->driver, 8);
1080
36b883428aeb init checks return value of sdl_open
al3x
parents: 1038
diff changeset
361 printf("SDL: Using driver: %s\n", priv->driver);
1
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
362 /* other default values */
394
f4fb35ef4c06 - added some defines to modify some sdl-out internas (see comments)
atmosfear
parents: 386
diff changeset
363 #ifdef SDL_NOHWSURFACE
543
ee0010d0ca81 Changed some code so it only kicks in when XV is disable.
atmosfear
parents: 542
diff changeset
364 if(verbose) printf("SDL: using software-surface\n");
1194
40550e1458e8 Drastic! speedup of rgb code. Removed nonsens memhole fixes.
atmosfear
parents: 1188
diff changeset
365 priv->sdlflags = SDL_SWSURFACE|SDL_RESIZABLE|SDL_ASYNCBLIT|SDL_ANYFORMAT;
40550e1458e8 Drastic! speedup of rgb code. Removed nonsens memhole fixes.
atmosfear
parents: 1188
diff changeset
366 priv->sdlfullflags = SDL_SWSURFACE|SDL_FULLSCREEN|SDL_DOUBLEBUF|SDL_ASYNCBLIT|SDL_ANYFORMAT;
394
f4fb35ef4c06 - added some defines to modify some sdl-out internas (see comments)
atmosfear
parents: 386
diff changeset
367 #else
1194
40550e1458e8 Drastic! speedup of rgb code. Removed nonsens memhole fixes.
atmosfear
parents: 1188
diff changeset
368 /*if((strcmp(priv->driver, "dga") == 0) && (priv->mode)) {
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
369 if(verbose) printf("SDL: using software-surface\n");
1194
40550e1458e8 Drastic! speedup of rgb code. Removed nonsens memhole fixes.
atmosfear
parents: 1188
diff changeset
370 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
371 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
372 }
1194
40550e1458e8 Drastic! speedup of rgb code. Removed nonsens memhole fixes.
atmosfear
parents: 1188
diff changeset
373 else { */
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
374 if(verbose) printf("SDL: using hardware-surface\n");
1219
e169f798ff71 Sync with SF cvs. (Bugfixed YUV aalib and RGB/BGR32 converted modes.)
atmos4
parents: 1197
diff changeset
375 priv->sdlflags = SDL_HWSURFACE|SDL_RESIZABLE|SDL_ASYNCBLIT|SDL_HWACCEL/*|SDL_ANYFORMAT*/;
e169f798ff71 Sync with SF cvs. (Bugfixed YUV aalib and RGB/BGR32 converted modes.)
atmos4
parents: 1197
diff changeset
376 priv->sdlfullflags = SDL_HWSURFACE|SDL_FULLSCREEN|SDL_DOUBLEBUF|SDL_ASYNCBLIT|SDL_HWACCEL/*|SDL_ANYFORMAT*/;
1194
40550e1458e8 Drastic! speedup of rgb code. Removed nonsens memhole fixes.
atmosfear
parents: 1188
diff changeset
377 //}
394
f4fb35ef4c06 - added some defines to modify some sdl-out internas (see comments)
atmosfear
parents: 386
diff changeset
378 #endif
1
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
379
703
fcc01494c0fe Fixed keyboard input handling and slowed down keyrepeat interval.
atmosfear
parents: 653
diff changeset
380 /* Setup Keyrepeats (500/30 are defaults) */
fcc01494c0fe Fixed keyboard input handling and slowed down keyrepeat interval.
atmosfear
parents: 653
diff changeset
381 SDL_EnableKeyRepeat(SDL_DEFAULT_REPEAT_DELAY, 100 /*SDL_DEFAULT_REPEAT_INTERVAL*/);
1
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
382
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
383 /* get information about the graphics adapter */
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
384 vidInfo = SDL_GetVideoInfo ();
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
385
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
386 /* collect all fullscreen & hardware modes available */
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
387 if (!(priv->fullmodes = SDL_ListModes (vidInfo->vfmt, priv->sdlfullflags))) {
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
388
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
389 /* non hardware accelerated fullscreen modes */
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
390 priv->sdlfullflags &= ~SDL_HWSURFACE;
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
391 priv->fullmodes = SDL_ListModes (vidInfo->vfmt, priv->sdlfullflags);
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
392 }
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
393
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
394 /* test for normal resizeable & windowed hardware accellerated surfaces */
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
395 if (!SDL_ListModes (vidInfo->vfmt, priv->sdlflags)) {
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
396
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
397 /* test for NON hardware accelerated resizeable surfaces - poor you.
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
398 * That's all we have. If this fails there's nothing left.
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
399 * Theoretically there could be Fullscreenmodes left - we ignore this for now.
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
400 */
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
401 priv->sdlflags &= ~SDL_HWSURFACE;
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
402 if ((!SDL_ListModes (vidInfo->vfmt, priv->sdlflags)) && (!priv->fullmodes)) {
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
403 printf("SDL: Couldn't get any acceptable SDL Mode for output.\n");
1
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
404 return -1;
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
405 }
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
406 }
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
407
1
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
408
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
409 /* YUV overlays need at least 16-bit color depth, but the
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
410 * display might less. The SDL AAlib target says it can only do
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
411 * 8-bits, for example. So, if the display is less than 16-bits,
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
412 * 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
413 */
1
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
414 priv->bpp = vidInfo->vfmt->BitsPerPixel;
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
415 if (!priv->mode && priv->bpp < 16) {
b9735f811d7d 15,16,24,32Bit rgb/bgr support added, aalib fixed, performance optimizations, code cleanup and so much more...
atmosfear
parents: 616
diff changeset
416
b9735f811d7d 15,16,24,32Bit rgb/bgr support added, aalib fixed, performance optimizations, code cleanup and so much more...
atmosfear
parents: 616
diff changeset
417 if(verbose) printf("SDL: Your SDL display target wants to be at a color depth of (%d), but we need it to be at\
1
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
418 least 16 bits, so we need to emulate 16-bit color. This is going to slow things down; you might want to\
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
419 increase your display's color depth, if possible.\n", priv->bpp);
b9735f811d7d 15,16,24,32Bit rgb/bgr support added, aalib fixed, performance optimizations, code cleanup and so much more...
atmosfear
parents: 616
diff changeset
420
1
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
421 priv->bpp = 16;
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
422 }
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
423
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
424 /* 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
425 * 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
426 * 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
427 */
772
e70a52f17f92 Added flipped video support and activate/deactivate screensaver under X.
atmosfear
parents: 770
diff changeset
428 #ifndef BUGGY_SDL
770
0e549c933515 Got rid of aalib crashing workaround with SDL1.2.1+
atmosfear
parents: 705
diff changeset
429 SDL_EventState(SDL_ACTIVEEVENT, SDL_IGNORE);
1
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
430 SDL_EventState(SDL_MOUSEMOTION, SDL_IGNORE);
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
431 SDL_EventState(SDL_MOUSEBUTTONDOWN, SDL_IGNORE);
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
432 SDL_EventState(SDL_MOUSEBUTTONUP, SDL_IGNORE);
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
433 SDL_EventState(SDL_QUIT, SDL_IGNORE);
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
434 SDL_EventState(SDL_SYSWMEVENT, SDL_IGNORE);
770
0e549c933515 Got rid of aalib crashing workaround with SDL1.2.1+
atmosfear
parents: 705
diff changeset
435 SDL_EventState(SDL_USEREVENT, SDL_IGNORE);
772
e70a52f17f92 Added flipped video support and activate/deactivate screensaver under X.
atmosfear
parents: 770
diff changeset
436 #endif
1
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
437
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
438 /* Success! */
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
439 return 0;
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
440 }
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
441
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
442
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
443 /**
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
444 * Close SDL, Cleanups, Free Memory
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
445 *
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
446 * params : *plugin
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
447 * returns : non-zero on success, zero on error.
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
448 **/
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
449
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
450 static int sdl_close (void)
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
451 {
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
452 struct sdl_priv_s *priv = &sdl_priv;
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
453
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
454 /* Cleanup YUV Overlay structure */
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
455 if (priv->overlay)
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
456 SDL_FreeYUVOverlay(priv->overlay);
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
457
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
458 /* Free 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
459 if (priv->rgbsurface)
1126
4f610bd631ac fixed some possible memleak places
al3x
parents: 1122
diff changeset
460 SDL_FreeSurface(priv->rgbsurface);
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
461
1
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
462 /* Free our blitting surface */
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
463 if (priv->surface)
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
464 SDL_FreeSurface(priv->surface);
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
465
351
2c4ded6ffebc - Full OSD and subtitle support added
atmosfear
parents: 350
diff changeset
466 /* DONT attempt to free the fullscreen modes array. SDL_Quit* does this for us */
1
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
467
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
468 /* Cleanup SDL */
973
c08282a937d3 Changed to only uninit SDL Video Subsystem.
atmosfear
parents: 958
diff changeset
469 //SDL_Quit();
c08282a937d3 Changed to only uninit SDL Video Subsystem.
atmosfear
parents: 958
diff changeset
470 SDL_QuitSubSystem(SDL_INIT_VIDEO);
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
471 /* might have to be changed to quitsubsystem only, if plugins become
b9735f811d7d 15,16,24,32Bit rgb/bgr support added, aalib fixed, performance optimizations, code cleanup and so much more...
atmosfear
parents: 616
diff changeset
472 * changeable on the fly */
351
2c4ded6ffebc - Full OSD and subtitle support added
atmosfear
parents: 350
diff changeset
473
635
b9735f811d7d 15,16,24,32Bit rgb/bgr support added, aalib fixed, performance optimizations, code cleanup and so much more...
atmosfear
parents: 616
diff changeset
474 if(verbose > 2) printf("SDL: Closed Plugin\n");
1
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
475
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
476 return 0;
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
477 }
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
478
784
dee122f9cdb9 Added full aspect awareness, rewrote fullscreen handling.
atmosfear
parents: 772
diff changeset
479 /**
dee122f9cdb9 Added full aspect awareness, rewrote fullscreen handling.
atmosfear
parents: 772
diff changeset
480 * Do aspect ratio calculations
dee122f9cdb9 Added full aspect awareness, rewrote fullscreen handling.
atmosfear
parents: 772
diff changeset
481 *
dee122f9cdb9 Added full aspect awareness, rewrote fullscreen handling.
atmosfear
parents: 772
diff changeset
482 * params : srcw == sourcewidth
dee122f9cdb9 Added full aspect awareness, rewrote fullscreen handling.
atmosfear
parents: 772
diff changeset
483 * srch == sourceheight
dee122f9cdb9 Added full aspect awareness, rewrote fullscreen handling.
atmosfear
parents: 772
diff changeset
484 * dstw == destinationwidth
dee122f9cdb9 Added full aspect awareness, rewrote fullscreen handling.
atmosfear
parents: 772
diff changeset
485 * dsth == destinationheight
dee122f9cdb9 Added full aspect awareness, rewrote fullscreen handling.
atmosfear
parents: 772
diff changeset
486 *
dee122f9cdb9 Added full aspect awareness, rewrote fullscreen handling.
atmosfear
parents: 772
diff changeset
487 * 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
488 **/
dee122f9cdb9 Added full aspect awareness, rewrote fullscreen handling.
atmosfear
parents: 772
diff changeset
489
dee122f9cdb9 Added full aspect awareness, rewrote fullscreen handling.
atmosfear
parents: 772
diff changeset
490 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
491 SDL_Rect newres;
dee122f9cdb9 Added full aspect awareness, rewrote fullscreen handling.
atmosfear
parents: 772
diff changeset
492 if(verbose > 1) printf("SDL Aspect: src: %ix%i dst: %ix%i\n", srcw, srch, dstw, dsth);
dee122f9cdb9 Added full aspect awareness, rewrote fullscreen handling.
atmosfear
parents: 772
diff changeset
493 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
494 if(newres.h > dsth) {
dee122f9cdb9 Added full aspect awareness, rewrote fullscreen handling.
atmosfear
parents: 772
diff changeset
495 newres.w = ((float)dsth / (float)newres.h) * dstw;
dee122f9cdb9 Added full aspect awareness, rewrote fullscreen handling.
atmosfear
parents: 772
diff changeset
496 newres.h = dsth;
dee122f9cdb9 Added full aspect awareness, rewrote fullscreen handling.
atmosfear
parents: 772
diff changeset
497 newres.x = (dstw - newres.w) / 2;
dee122f9cdb9 Added full aspect awareness, rewrote fullscreen handling.
atmosfear
parents: 772
diff changeset
498 newres.y = 0;
dee122f9cdb9 Added full aspect awareness, rewrote fullscreen handling.
atmosfear
parents: 772
diff changeset
499 }
dee122f9cdb9 Added full aspect awareness, rewrote fullscreen handling.
atmosfear
parents: 772
diff changeset
500 else {
dee122f9cdb9 Added full aspect awareness, rewrote fullscreen handling.
atmosfear
parents: 772
diff changeset
501 newres.w = dstw;
dee122f9cdb9 Added full aspect awareness, rewrote fullscreen handling.
atmosfear
parents: 772
diff changeset
502 newres.x = 0;
dee122f9cdb9 Added full aspect awareness, rewrote fullscreen handling.
atmosfear
parents: 772
diff changeset
503 newres.y = (dsth - newres.h) / 2;
dee122f9cdb9 Added full aspect awareness, rewrote fullscreen handling.
atmosfear
parents: 772
diff changeset
504 }
dee122f9cdb9 Added full aspect awareness, rewrote fullscreen handling.
atmosfear
parents: 772
diff changeset
505
dee122f9cdb9 Added full aspect awareness, rewrote fullscreen handling.
atmosfear
parents: 772
diff changeset
506 if(verbose) printf("SDL Aspect-Destinationres: %ix%i (x: %i, y: %i)\n", newres.w, newres.h, newres.x, newres.y);
dee122f9cdb9 Added full aspect awareness, rewrote fullscreen handling.
atmosfear
parents: 772
diff changeset
507
dee122f9cdb9 Added full aspect awareness, rewrote fullscreen handling.
atmosfear
parents: 772
diff changeset
508 return newres;
dee122f9cdb9 Added full aspect awareness, rewrote fullscreen handling.
atmosfear
parents: 772
diff changeset
509 }
1
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
510
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
511 /**
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
512 * Sets the specified fullscreen mode.
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
513 *
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
514 * params : mode == index of the desired fullscreen mode
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
515 * returns : doesn't return
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
516 **/
784
dee122f9cdb9 Added full aspect awareness, rewrote fullscreen handling.
atmosfear
parents: 772
diff changeset
517
dee122f9cdb9 Added full aspect awareness, rewrote fullscreen handling.
atmosfear
parents: 772
diff changeset
518 #if 0
1
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
519 static void set_fullmode (int mode)
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
520 {
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
521 struct sdl_priv_s *priv = &sdl_priv;
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
522 SDL_Surface *newsurface = NULL;
97
cab74dfde6dd Felix B¸«änemann added support for horizontal scaling for aspect-ratio in
atmosfear
parents: 84
diff changeset
523 int haspect, waspect = 0;
1
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
524
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
525 /* if we haven't set a fullmode yet, default to the lowest res fullmode first */
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
526 if (mode < 0)
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
527 mode = priv->fullmode = findArrayEnd(priv->fullmodes) - 1;
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
528
97
cab74dfde6dd Felix B¸«änemann added support for horizontal scaling for aspect-ratio in
atmosfear
parents: 84
diff changeset
529 /* Calculate proper aspect ratio for fullscreen
cab74dfde6dd Felix B¸«änemann added support for horizontal scaling for aspect-ratio in
atmosfear
parents: 84
diff changeset
530 * 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
531 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
532 /* 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
533 if (haspect < 0) {
cab74dfde6dd Felix B¸«änemann added support for horizontal scaling for aspect-ratio in
atmosfear
parents: 84
diff changeset
534 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
535 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
536 }
cab74dfde6dd Felix B¸«änemann added support for horizontal scaling for aspect-ratio in
atmosfear
parents: 84
diff changeset
537 // 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
538
97
cab74dfde6dd Felix B¸«änemann added support for horizontal scaling for aspect-ratio in
atmosfear
parents: 84
diff changeset
539 /* 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
540 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
541
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
542 /* if we were successfull hide the mouse cursor and save the mode */
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
543 if (newsurface) {
1126
4f610bd631ac fixed some possible memleak places
al3x
parents: 1122
diff changeset
544 if (priv->surface)
4f610bd631ac fixed some possible memleak places
al3x
parents: 1122
diff changeset
545 SDL_FreeSurface(priv->surface);
1
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
546 priv->surface = newsurface;
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
547 SDL_ShowCursor(0);
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
548 }
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
549 }
784
dee122f9cdb9 Added full aspect awareness, rewrote fullscreen handling.
atmosfear
parents: 772
diff changeset
550 #endif
1
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
551
784
dee122f9cdb9 Added full aspect awareness, rewrote fullscreen handling.
atmosfear
parents: 772
diff changeset
552 static void set_fullmode (int mode) {
dee122f9cdb9 Added full aspect awareness, rewrote fullscreen handling.
atmosfear
parents: 772
diff changeset
553 struct sdl_priv_s *priv = &sdl_priv;
dee122f9cdb9 Added full aspect awareness, rewrote fullscreen handling.
atmosfear
parents: 772
diff changeset
554 SDL_Surface *newsurface = NULL;
dee122f9cdb9 Added full aspect awareness, rewrote fullscreen handling.
atmosfear
parents: 772
diff changeset
555 SDL_Rect newsize;
dee122f9cdb9 Added full aspect awareness, rewrote fullscreen handling.
atmosfear
parents: 772
diff changeset
556
dee122f9cdb9 Added full aspect awareness, rewrote fullscreen handling.
atmosfear
parents: 772
diff changeset
557 /* if we haven't set a fullmode yet, default to the lowest res fullmode first */
dee122f9cdb9 Added full aspect awareness, rewrote fullscreen handling.
atmosfear
parents: 772
diff changeset
558 if(mode < 0)
dee122f9cdb9 Added full aspect awareness, rewrote fullscreen handling.
atmosfear
parents: 772
diff changeset
559 mode = priv->fullmode = findArrayEnd(priv->fullmodes) - 1;
dee122f9cdb9 Added full aspect awareness, rewrote fullscreen handling.
atmosfear
parents: 772
diff changeset
560
dee122f9cdb9 Added full aspect awareness, rewrote fullscreen handling.
atmosfear
parents: 772
diff changeset
561 /* calculate new video size/aspect */
dee122f9cdb9 Added full aspect awareness, rewrote fullscreen handling.
atmosfear
parents: 772
diff changeset
562 if(priv->fulltype&FS) {
dee122f9cdb9 Added full aspect awareness, rewrote fullscreen handling.
atmosfear
parents: 772
diff changeset
563 newsize = aspect(priv->width, priv->height, priv->XWidth ? priv->XWidth : priv->dstwidth, priv->XHeight ? priv->XHeight : priv->dstheight);
dee122f9cdb9 Added full aspect awareness, rewrote fullscreen handling.
atmosfear
parents: 772
diff changeset
564 } else
dee122f9cdb9 Added full aspect awareness, rewrote fullscreen handling.
atmosfear
parents: 772
diff changeset
565 if(priv->fulltype&VM) {
dee122f9cdb9 Added full aspect awareness, rewrote fullscreen handling.
atmosfear
parents: 772
diff changeset
566 newsize = aspect(priv->dstwidth, priv->dstheight, priv->dstwidth, priv->dstwidth*((float)priv->XHeight / (float)priv->XWidth));
dee122f9cdb9 Added full aspect awareness, rewrote fullscreen handling.
atmosfear
parents: 772
diff changeset
567 }
dee122f9cdb9 Added full aspect awareness, rewrote fullscreen handling.
atmosfear
parents: 772
diff changeset
568 else {
dee122f9cdb9 Added full aspect awareness, rewrote fullscreen handling.
atmosfear
parents: 772
diff changeset
569 newsize = aspect(priv->dstwidth, priv->dstheight, priv->fullmodes[mode]->w, priv->fullmodes[mode]->h);
dee122f9cdb9 Added full aspect awareness, rewrote fullscreen handling.
atmosfear
parents: 772
diff changeset
570 }
dee122f9cdb9 Added full aspect awareness, rewrote fullscreen handling.
atmosfear
parents: 772
diff changeset
571
dee122f9cdb9 Added full aspect awareness, rewrote fullscreen handling.
atmosfear
parents: 772
diff changeset
572 /* try to change to given fullscreenmode */
dee122f9cdb9 Added full aspect awareness, rewrote fullscreen handling.
atmosfear
parents: 772
diff changeset
573 newsurface = SDL_SetVideoMode(newsize.w, newsize.h, priv->bpp, priv->sdlfullflags);
dee122f9cdb9 Added full aspect awareness, rewrote fullscreen handling.
atmosfear
parents: 772
diff changeset
574
dee122f9cdb9 Added full aspect awareness, rewrote fullscreen handling.
atmosfear
parents: 772
diff changeset
575 /* if creation of new surface was successfull, save it and hide mouse cursor */
dee122f9cdb9 Added full aspect awareness, rewrote fullscreen handling.
atmosfear
parents: 772
diff changeset
576 if(newsurface) {
1126
4f610bd631ac fixed some possible memleak places
al3x
parents: 1122
diff changeset
577 if (priv->surface)
4f610bd631ac fixed some possible memleak places
al3x
parents: 1122
diff changeset
578 SDL_FreeSurface(priv->surface);
784
dee122f9cdb9 Added full aspect awareness, rewrote fullscreen handling.
atmosfear
parents: 772
diff changeset
579 priv->surface = newsurface;
dee122f9cdb9 Added full aspect awareness, rewrote fullscreen handling.
atmosfear
parents: 772
diff changeset
580 SDL_ShowCursor(0);
dee122f9cdb9 Added full aspect awareness, rewrote fullscreen handling.
atmosfear
parents: 772
diff changeset
581 }
dee122f9cdb9 Added full aspect awareness, rewrote fullscreen handling.
atmosfear
parents: 772
diff changeset
582 }
1126
4f610bd631ac fixed some possible memleak places
al3x
parents: 1122
diff changeset
583
1
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
584
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
585 /**
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
586 * Initialize an SDL surface and an SDL YUV overlay.
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
587 *
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
588 * params : width == width of video we'll be displaying.
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
589 * height == height of video we'll be displaying.
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
590 * fullscreen == want to be fullscreen?
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
591 * title == Title for window titlebar.
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
592 * returns : non-zero on success, zero on error.
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
593 **/
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
594
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
595 static uint32_t
772
e70a52f17f92 Added flipped video support and activate/deactivate screensaver under X.
atmosfear
parents: 770
diff changeset
596 init(uint32_t width, uint32_t height, uint32_t d_width, uint32_t d_height, uint32_t flags, char *title, uint32_t format)
1
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
597 //static int sdl_setup (int width, int height)
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
598 {
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
599 struct sdl_priv_s *priv = &sdl_priv;
357
681979d4031a - small bugfixes
atmosfear
parents: 355
diff changeset
600 unsigned int sdl_format;
784
dee122f9cdb9 Added full aspect awareness, rewrote fullscreen handling.
atmosfear
parents: 772
diff changeset
601 SDL_Rect res;
772
e70a52f17f92 Added flipped video support and activate/deactivate screensaver under X.
atmosfear
parents: 770
diff changeset
602 #ifdef HAVE_X11
e70a52f17f92 Added flipped video support and activate/deactivate screensaver under X.
atmosfear
parents: 770
diff changeset
603 static Display *XDisplay;
784
dee122f9cdb9 Added full aspect awareness, rewrote fullscreen handling.
atmosfear
parents: 772
diff changeset
604 static int XScreen;
772
e70a52f17f92 Added flipped video support and activate/deactivate screensaver under X.
atmosfear
parents: 770
diff changeset
605 #endif
e70a52f17f92 Added flipped video support and activate/deactivate screensaver under X.
atmosfear
parents: 770
diff changeset
606
451
e27a365b0303 fixes osd/subtitle for UYVY image format and steps back to 1.15 changes
atmosfear
parents: 448
diff changeset
607 sdl_format = format;
1
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
608 switch(format){
451
e27a365b0303 fixes osd/subtitle for UYVY image format and steps back to 1.15 changes
atmosfear
parents: 448
diff changeset
609 case IMGFMT_YV12:
543
ee0010d0ca81 Changed some code so it only kicks in when XV is disable.
atmosfear
parents: 542
diff changeset
610 if(verbose) printf("SDL: Using 0x%X (YV12) image format\n", format); break;
451
e27a365b0303 fixes osd/subtitle for UYVY image format and steps back to 1.15 changes
atmosfear
parents: 448
diff changeset
611 case IMGFMT_IYUV:
543
ee0010d0ca81 Changed some code so it only kicks in when XV is disable.
atmosfear
parents: 542
diff changeset
612 if(verbose) printf("SDL: Using 0x%X (IYUV) image format\n", format); break;
451
e27a365b0303 fixes osd/subtitle for UYVY image format and steps back to 1.15 changes
atmosfear
parents: 448
diff changeset
613 case IMGFMT_YUY2:
543
ee0010d0ca81 Changed some code so it only kicks in when XV is disable.
atmosfear
parents: 542
diff changeset
614 if(verbose) printf("SDL: Using 0x%X (YUY2) image format\n", format); break;
451
e27a365b0303 fixes osd/subtitle for UYVY image format and steps back to 1.15 changes
atmosfear
parents: 448
diff changeset
615 case IMGFMT_UYVY:
543
ee0010d0ca81 Changed some code so it only kicks in when XV is disable.
atmosfear
parents: 542
diff changeset
616 if(verbose) printf("SDL: Using 0x%X (UYVY) image format\n", format); break;
451
e27a365b0303 fixes osd/subtitle for UYVY image format and steps back to 1.15 changes
atmosfear
parents: 448
diff changeset
617 case IMGFMT_YVYU:
543
ee0010d0ca81 Changed some code so it only kicks in when XV is disable.
atmosfear
parents: 542
diff changeset
618 if(verbose) printf("SDL: Using 0x%X (YVYU) image format\n", format); break;
451
e27a365b0303 fixes osd/subtitle for UYVY image format and steps back to 1.15 changes
atmosfear
parents: 448
diff changeset
619 case IMGFMT_I420:
543
ee0010d0ca81 Changed some code so it only kicks in when XV is disable.
atmosfear
parents: 542
diff changeset
620 if(verbose) printf("SDL: Using 0x%X (I420) image format\n", format);
542
7eaec864e3d2 doesn't include fastmemcpy.h when SDL_NOXV is defined.
atmosfear
parents: 475
diff changeset
621 printf("SDL: Mapping I420 to IYUV\n");
451
e27a365b0303 fixes osd/subtitle for UYVY image format and steps back to 1.15 changes
atmosfear
parents: 448
diff changeset
622 sdl_format = SDL_IYUV_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
623 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
624 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
625 if(verbose) printf("SDL: Using 0x%X (BGR15) image format\n", 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
626 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
627 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
628 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
629 if(verbose) printf("SDL: Using 0x%X (RGB15) image format\n", 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
630 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
631 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
632 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
633 if(verbose) printf("SDL: Using 0x%X (BGR16) image format\n", 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
634 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
635 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
636 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
637 if(verbose) printf("SDL: Using 0x%X (RGB16) image format\n", 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
638 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
639 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
640 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
641 if(verbose) printf("SDL: Using 0x%X (BGR24) image format\n", 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
642 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
643 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
644 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
645 if(verbose) printf("SDL: Using 0x%X (RGB24) image format\n", 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
646 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
647 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
648 case IMGFMT_BGR32:
b9735f811d7d 15,16,24,32Bit rgb/bgr support added, aalib fixed, performance optimizations, code cleanup and so much more...
atmosfear
parents: 616
diff changeset
649 if(verbose) printf("SDL: Using 0x%X (BGR32) image format\n", 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
650 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
651 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
652 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
653 if(verbose) printf("SDL: Using 0x%X (RGB32) image format\n", 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
654 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
655 break;
451
e27a365b0303 fixes osd/subtitle for UYVY image format and steps back to 1.15 changes
atmosfear
parents: 448
diff changeset
656 default:
542
7eaec864e3d2 doesn't include fastmemcpy.h when SDL_NOXV is defined.
atmosfear
parents: 475
diff changeset
657 printf("SDL: Unsupported image format (0x%X)\n",format);
451
e27a365b0303 fixes osd/subtitle for UYVY image format and steps back to 1.15 changes
atmosfear
parents: 448
diff changeset
658 return -1;
e27a365b0303 fixes osd/subtitle for UYVY image format and steps back to 1.15 changes
atmosfear
parents: 448
diff changeset
659 }
1219
e169f798ff71 Sync with SF cvs. (Bugfixed YUV aalib and RGB/BGR32 converted modes.)
atmos4
parents: 1197
diff changeset
660 if(priv->mode) {
e169f798ff71 Sync with SF cvs. (Bugfixed YUV aalib and RGB/BGR32 converted modes.)
atmos4
parents: 1197
diff changeset
661 priv->sdlflags |= SDL_ANYFORMAT;
e169f798ff71 Sync with SF cvs. (Bugfixed YUV aalib and RGB/BGR32 converted modes.)
atmos4
parents: 1197
diff changeset
662 priv->sdlfullflags |= SDL_ANYFORMAT;
e169f798ff71 Sync with SF cvs. (Bugfixed YUV aalib and RGB/BGR32 converted modes.)
atmos4
parents: 1197
diff changeset
663 }
1
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
664
772
e70a52f17f92 Added flipped video support and activate/deactivate screensaver under X.
atmosfear
parents: 770
diff changeset
665 #ifdef HAVE_X11
e70a52f17f92 Added flipped video support and activate/deactivate screensaver under X.
atmosfear
parents: 770
diff changeset
666 if(getenv("DISPLAY")) {
e70a52f17f92 Added flipped video support and activate/deactivate screensaver under X.
atmosfear
parents: 770
diff changeset
667 if(verbose) printf("SDL: deactivating XScreensaver/DPMS\n");
e70a52f17f92 Added flipped video support and activate/deactivate screensaver under X.
atmosfear
parents: 770
diff changeset
668 XDisplay = XOpenDisplay(getenv("DISPLAY"));
784
dee122f9cdb9 Added full aspect awareness, rewrote fullscreen handling.
atmosfear
parents: 772
diff changeset
669 XScreen = DefaultScreen(XDisplay);
dee122f9cdb9 Added full aspect awareness, rewrote fullscreen handling.
atmosfear
parents: 772
diff changeset
670 priv->XWidth = DisplayWidth(XDisplay, XScreen);
dee122f9cdb9 Added full aspect awareness, rewrote fullscreen handling.
atmosfear
parents: 772
diff changeset
671 priv->XHeight = DisplayHeight(XDisplay, XScreen);
951
9fb176abc1a7 Some fixups for SDL/aalib.
atmosfear
parents: 862
diff changeset
672 priv->X = 1;
784
dee122f9cdb9 Added full aspect awareness, rewrote fullscreen handling.
atmosfear
parents: 772
diff changeset
673 if(verbose) printf("SDL: X11 Resolution %ix%i\n", priv->XWidth, priv->XHeight);
772
e70a52f17f92 Added flipped video support and activate/deactivate screensaver under X.
atmosfear
parents: 770
diff changeset
674 saver_off(XDisplay);
e70a52f17f92 Added flipped video support and activate/deactivate screensaver under X.
atmosfear
parents: 770
diff changeset
675 XCloseDisplay(XDisplay);
e70a52f17f92 Added flipped video support and activate/deactivate screensaver under X.
atmosfear
parents: 770
diff changeset
676 }
e70a52f17f92 Added flipped video support and activate/deactivate screensaver under X.
atmosfear
parents: 770
diff changeset
677 #endif
1080
36b883428aeb init checks return value of sdl_open
al3x
parents: 1038
diff changeset
678 if (sdl_open(NULL, NULL) != 0)
36b883428aeb init checks return value of sdl_open
al3x
parents: 1038
diff changeset
679 return -1;
1
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
680
351
2c4ded6ffebc - Full OSD and subtitle support added
atmosfear
parents: 350
diff changeset
681 /* Set output window title */
1126
4f610bd631ac fixed some possible memleak places
al3x
parents: 1122
diff changeset
682 SDL_WM_SetCaption (".: MPlayer : F = Fullscreen/Windowed : C = Cycle Fullscreen Resolutions :.", "MPlayer's SDL Video Out");
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
683 //SDL_WM_SetCaption (title, title);
351
2c4ded6ffebc - Full OSD and subtitle support added
atmosfear
parents: 350
diff changeset
684
1
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
685 /* Save the original Image size */
84
802fbd1760ae aspect ratio patch by Felix B¸«änemann
arpi_esp
parents: 31
diff changeset
686
648
157cb66e1a43 -x -y quickfix for release, code will be changed completely later.
atmosfear
parents: 637
diff changeset
687 priv->width = width;
157cb66e1a43 -x -y quickfix for release, code will be changed completely later.
atmosfear
parents: 637
diff changeset
688 priv->height = height;
784
dee122f9cdb9 Added full aspect awareness, rewrote fullscreen handling.
atmosfear
parents: 772
diff changeset
689 priv->dstwidth = d_width ? d_width : width;
dee122f9cdb9 Added full aspect awareness, rewrote fullscreen handling.
atmosfear
parents: 772
diff changeset
690 priv->dstheight = d_height ? d_height : height;
dee122f9cdb9 Added full aspect awareness, rewrote fullscreen handling.
atmosfear
parents: 772
diff changeset
691
dee122f9cdb9 Added full aspect awareness, rewrote fullscreen handling.
atmosfear
parents: 772
diff changeset
692 /*priv->width = res.w;
dee122f9cdb9 Added full aspect awareness, rewrote fullscreen handling.
atmosfear
parents: 772
diff changeset
693 priv->height = res.h;*/
1
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
694 priv->format = format;
784
dee122f9cdb9 Added full aspect awareness, rewrote fullscreen handling.
atmosfear
parents: 772
diff changeset
695 #ifdef HAVE_X11
dee122f9cdb9 Added full aspect awareness, rewrote fullscreen handling.
atmosfear
parents: 772
diff changeset
696 res = aspect(priv->dstwidth, priv->dstheight, priv->dstwidth, priv->dstwidth*((float)priv->XHeight / (float)priv->XWidth));
dee122f9cdb9 Added full aspect awareness, rewrote fullscreen handling.
atmosfear
parents: 772
diff changeset
697 priv->windowsize.w = res.w;
dee122f9cdb9 Added full aspect awareness, rewrote fullscreen handling.
atmosfear
parents: 772
diff changeset
698 priv->windowsize.h = res.h;
dee122f9cdb9 Added full aspect awareness, rewrote fullscreen handling.
atmosfear
parents: 772
diff changeset
699 #else
dee122f9cdb9 Added full aspect awareness, rewrote fullscreen handling.
atmosfear
parents: 772
diff changeset
700 priv->windowsize.w = priv->dstwidth;
dee122f9cdb9 Added full aspect awareness, rewrote fullscreen handling.
atmosfear
parents: 772
diff changeset
701 priv->windowsize.h = priv->dstheight;
dee122f9cdb9 Added full aspect awareness, rewrote fullscreen handling.
atmosfear
parents: 772
diff changeset
702 #endif
1
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
703
355
70833462dee9 - added code to comply with new fullscreen meaning
atmosfear
parents: 354
diff changeset
704 /* bit 0 (0x01) means fullscreen (-fs)
70833462dee9 - added code to comply with new fullscreen meaning
atmosfear
parents: 354
diff changeset
705 * bit 1 (0x02) means mode switching (-vm)
70833462dee9 - added code to comply with new fullscreen meaning
atmosfear
parents: 354
diff changeset
706 * bit 2 (0x04) enables software scaling (-zoom)
772
e70a52f17f92 Added flipped video support and activate/deactivate screensaver under X.
atmosfear
parents: 770
diff changeset
707 * bit 3 (0x08) enables flipping (-flip)
e70a52f17f92 Added flipped video support and activate/deactivate screensaver under X.
atmosfear
parents: 770
diff changeset
708 */
e70a52f17f92 Added flipped video support and activate/deactivate screensaver under X.
atmosfear
parents: 770
diff changeset
709 // printf("SDL: flags are set to: %i\n", flags);
355
70833462dee9 - added code to comply with new fullscreen meaning
atmosfear
parents: 354
diff changeset
710 // printf("SDL: Width: %i Height: %i D_Width %i D_Height: %i\n", width, height, d_width, d_height);
784
dee122f9cdb9 Added full aspect awareness, rewrote fullscreen handling.
atmosfear
parents: 772
diff changeset
711 if(flags&FLIP) {
dee122f9cdb9 Added full aspect awareness, rewrote fullscreen handling.
atmosfear
parents: 772
diff changeset
712 if(verbose) printf("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
713 priv->flip = 1;
e70a52f17f92 Added flipped video support and activate/deactivate screensaver under X.
atmosfear
parents: 770
diff changeset
714 }
e70a52f17f92 Added flipped video support and activate/deactivate screensaver under X.
atmosfear
parents: 770
diff changeset
715 if(flags&FS) {
543
ee0010d0ca81 Changed some code so it only kicks in when XV is disable.
atmosfear
parents: 542
diff changeset
716 if(verbose) printf("SDL: setting zoomed fullscreen without modeswitching\n");
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
717 printf("SDL: Info - please use -vm (unscaled) or -zoom (scaled) for best fullscreen experience\n");
784
dee122f9cdb9 Added full aspect awareness, rewrote fullscreen handling.
atmosfear
parents: 772
diff changeset
718 priv->fulltype = FS;
dee122f9cdb9 Added full aspect awareness, rewrote fullscreen handling.
atmosfear
parents: 772
diff changeset
719 set_fullmode(priv->fullmode);
dee122f9cdb9 Added full aspect awareness, rewrote fullscreen handling.
atmosfear
parents: 772
diff changeset
720 /*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
721 SDL_ShowCursor(0);*/
772
e70a52f17f92 Added flipped video support and activate/deactivate screensaver under X.
atmosfear
parents: 770
diff changeset
722 } else
e70a52f17f92 Added flipped video support and activate/deactivate screensaver under X.
atmosfear
parents: 770
diff changeset
723 if(flags&VM) {
543
ee0010d0ca81 Changed some code so it only kicks in when XV is disable.
atmosfear
parents: 542
diff changeset
724 if(verbose) printf("SDL: setting nonzoomed fullscreen with modeswitching\n");
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
725 printf("SDL: Info - please use -zoom switch to scale video\n");
784
dee122f9cdb9 Added full aspect awareness, rewrote fullscreen handling.
atmosfear
parents: 772
diff changeset
726 priv->fulltype = VM;
dee122f9cdb9 Added full aspect awareness, rewrote fullscreen handling.
atmosfear
parents: 772
diff changeset
727 set_fullmode(priv->fullmode);
dee122f9cdb9 Added full aspect awareness, rewrote fullscreen handling.
atmosfear
parents: 772
diff changeset
728 /*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
729 SDL_ShowCursor(0);*/
772
e70a52f17f92 Added flipped video support and activate/deactivate screensaver under X.
atmosfear
parents: 770
diff changeset
730 } else
e70a52f17f92 Added flipped video support and activate/deactivate screensaver under X.
atmosfear
parents: 770
diff changeset
731 if(flags&ZOOM) {
543
ee0010d0ca81 Changed some code so it only kicks in when XV is disable.
atmosfear
parents: 542
diff changeset
732 if(verbose) printf("SDL: setting zoomed fullscreen with modeswitching\n");
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
733 printf("SDL: Info - please use -vm switch instead if you don't want scaled video\n");
784
dee122f9cdb9 Added full aspect awareness, rewrote fullscreen handling.
atmosfear
parents: 772
diff changeset
734 priv->fulltype = ZOOM;
dee122f9cdb9 Added full aspect awareness, rewrote fullscreen handling.
atmosfear
parents: 772
diff changeset
735 set_fullmode(priv->fullmode);
772
e70a52f17f92 Added flipped video support and activate/deactivate screensaver under X.
atmosfear
parents: 770
diff changeset
736 }
e70a52f17f92 Added flipped video support and activate/deactivate screensaver under X.
atmosfear
parents: 770
diff changeset
737 else {
951
9fb176abc1a7 Some fixups for SDL/aalib.
atmosfear
parents: 862
diff changeset
738 if((strcmp(priv->driver, "x11") == 0) || ((strcmp(priv->driver, "aalib") == 0) && priv->X)) {
784
dee122f9cdb9 Added full aspect awareness, rewrote fullscreen handling.
atmosfear
parents: 772
diff changeset
739 if(verbose) printf("SDL: setting windowed mode\n");
dee122f9cdb9 Added full aspect awareness, rewrote fullscreen handling.
atmosfear
parents: 772
diff changeset
740 #ifdef HAVE_X11
dee122f9cdb9 Added full aspect awareness, rewrote fullscreen handling.
atmosfear
parents: 772
diff changeset
741 priv->surface = SDL_SetVideoMode (res.w, res.h, priv->bpp, priv->sdlflags);
dee122f9cdb9 Added full aspect awareness, rewrote fullscreen handling.
atmosfear
parents: 772
diff changeset
742 #else
dee122f9cdb9 Added full aspect awareness, rewrote fullscreen handling.
atmosfear
parents: 772
diff changeset
743 priv->surface = SDL_SetVideoMode (priv->dstwidth, priv->dstheight, priv->bpp, priv->sdlflags);
dee122f9cdb9 Added full aspect awareness, rewrote fullscreen handling.
atmosfear
parents: 772
diff changeset
744 #endif
dee122f9cdb9 Added full aspect awareness, rewrote fullscreen handling.
atmosfear
parents: 772
diff changeset
745 }
dee122f9cdb9 Added full aspect awareness, rewrote fullscreen handling.
atmosfear
parents: 772
diff changeset
746 else {
951
9fb176abc1a7 Some fixups for SDL/aalib.
atmosfear
parents: 862
diff changeset
747 if(verbose) printf("SDL: setting zoomed fullscreen with modeswitching\n");
9fb176abc1a7 Some fixups for SDL/aalib.
atmosfear
parents: 862
diff changeset
748 printf("SDL: Info - please use -vm switch instead if you don't want scaled video\n");
9fb176abc1a7 Some fixups for SDL/aalib.
atmosfear
parents: 862
diff changeset
749 priv->fulltype = ZOOM;
784
dee122f9cdb9 Added full aspect awareness, rewrote fullscreen handling.
atmosfear
parents: 772
diff changeset
750 set_fullmode(priv->fullmode);
dee122f9cdb9 Added full aspect awareness, rewrote fullscreen handling.
atmosfear
parents: 772
diff changeset
751 }
772
e70a52f17f92 Added flipped video support and activate/deactivate screensaver under X.
atmosfear
parents: 770
diff changeset
752 }
e70a52f17f92 Added flipped video support and activate/deactivate screensaver under X.
atmosfear
parents: 770
diff changeset
753
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
754 if(!priv->surface) { // cannot SetVideoMode
b9735f811d7d 15,16,24,32Bit rgb/bgr support added, aalib fixed, performance optimizations, code cleanup and so much more...
atmosfear
parents: 616
diff changeset
755 printf("SDL: failed to set video mode: %s\n", SDL_GetError());
b9735f811d7d 15,16,24,32Bit rgb/bgr support added, aalib fixed, performance optimizations, code cleanup and so much more...
atmosfear
parents: 616
diff changeset
756 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
757 }
1
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
758
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
759 switch(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
760 /* 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
761 //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
762 // 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
763 // 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
764 // 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
765 // 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
766 // 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
767 // 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
768 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
769 if (!(priv->rgbsurface = SDL_CreateRGBSurface (SDL_SRCCOLORKEY, width, height, 15, 31, 992, 31744, 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
770 printf ("SDL: Couldn't create a RGB surface: %s\n", SDL_GetError());
b9735f811d7d 15,16,24,32Bit rgb/bgr support added, aalib fixed, performance optimizations, code cleanup and so much more...
atmosfear
parents: 616
diff changeset
771 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
772 }
b9735f811d7d 15,16,24,32Bit rgb/bgr support added, aalib fixed, performance optimizations, code cleanup and so much more...
atmosfear
parents: 616
diff changeset
773 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
774 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
775 if (!(priv->rgbsurface = SDL_CreateRGBSurface (SDL_SRCCOLORKEY, width, height, 15, 31744, 992, 31, 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
776 printf ("SDL: Couldn't create a RGB surface: %s\n", SDL_GetError());
b9735f811d7d 15,16,24,32Bit rgb/bgr support added, aalib fixed, performance optimizations, code cleanup and so much more...
atmosfear
parents: 616
diff changeset
777 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
778 }
b9735f811d7d 15,16,24,32Bit rgb/bgr support added, aalib fixed, performance optimizations, code cleanup and so much more...
atmosfear
parents: 616
diff changeset
779 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
780 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
781 if (!(priv->rgbsurface = SDL_CreateRGBSurface (SDL_SRCCOLORKEY, width, height, 16, 31, 2016, 63488, 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
782 printf ("SDL: Couldn't create a RGB surface: %s\n", SDL_GetError());
b9735f811d7d 15,16,24,32Bit rgb/bgr support added, aalib fixed, performance optimizations, code cleanup and so much more...
atmosfear
parents: 616
diff changeset
783 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
784 }
b9735f811d7d 15,16,24,32Bit rgb/bgr support added, aalib fixed, performance optimizations, code cleanup and so much more...
atmosfear
parents: 616
diff changeset
785 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
786 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
787 if (!(priv->rgbsurface = SDL_CreateRGBSurface (SDL_SRCCOLORKEY, width, height, 16, 63488, 2016, 31, 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
788 printf ("SDL: Couldn't create a RGB surface: %s\n", SDL_GetError());
b9735f811d7d 15,16,24,32Bit rgb/bgr support added, aalib fixed, performance optimizations, code cleanup and so much more...
atmosfear
parents: 616
diff changeset
789 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
790 }
b9735f811d7d 15,16,24,32Bit rgb/bgr support added, aalib fixed, performance optimizations, code cleanup and so much more...
atmosfear
parents: 616
diff changeset
791 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
792 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
793 if (!(priv->rgbsurface = SDL_CreateRGBSurface (SDL_SRCCOLORKEY, width, height, 24, 0x0000FF, 0x00FF00, 0xFF0000, 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
794 printf ("SDL: Couldn't create a RGB surface: %s\n", SDL_GetError());
b9735f811d7d 15,16,24,32Bit rgb/bgr support added, aalib fixed, performance optimizations, code cleanup and so much more...
atmosfear
parents: 616
diff changeset
795 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
796 }
b9735f811d7d 15,16,24,32Bit rgb/bgr support added, aalib fixed, performance optimizations, code cleanup and so much more...
atmosfear
parents: 616
diff changeset
797 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
798 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
799 if (!(priv->rgbsurface = SDL_CreateRGBSurface (SDL_SRCCOLORKEY, width, height, 24, 0xFF0000, 0x00FF00, 0x0000FF, 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
800 printf ("SDL: Couldn't create a RGB surface: %s\n", SDL_GetError());
b9735f811d7d 15,16,24,32Bit rgb/bgr support added, aalib fixed, performance optimizations, code cleanup and so much more...
atmosfear
parents: 616
diff changeset
801 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
802 }
b9735f811d7d 15,16,24,32Bit rgb/bgr support added, aalib fixed, performance optimizations, code cleanup and so much more...
atmosfear
parents: 616
diff changeset
803 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
804 case IMGFMT_RGB32:
1219
e169f798ff71 Sync with SF cvs. (Bugfixed YUV aalib and RGB/BGR32 converted modes.)
atmos4
parents: 1197
diff changeset
805 if (!(priv->rgbsurface = SDL_CreateRGBSurface (SDL_SRCCOLORKEY, width, height, 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
806 printf ("SDL: Couldn't create a RGB surface: %s\n", SDL_GetError());
b9735f811d7d 15,16,24,32Bit rgb/bgr support added, aalib fixed, performance optimizations, code cleanup and so much more...
atmosfear
parents: 616
diff changeset
807 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
808 }
b9735f811d7d 15,16,24,32Bit rgb/bgr support added, aalib fixed, performance optimizations, code cleanup and so much more...
atmosfear
parents: 616
diff changeset
809 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
810 case IMGFMT_BGR32:
1219
e169f798ff71 Sync with SF cvs. (Bugfixed YUV aalib and RGB/BGR32 converted modes.)
atmos4
parents: 1197
diff changeset
811 if (!(priv->rgbsurface = SDL_CreateRGBSurface (SDL_SRCCOLORKEY, width, height, 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
812 printf ("SDL: Couldn't create a RGB surface: %s\n", SDL_GetError());
b9735f811d7d 15,16,24,32Bit rgb/bgr support added, aalib fixed, performance optimizations, code cleanup and so much more...
atmosfear
parents: 616
diff changeset
813 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
814 }
b9735f811d7d 15,16,24,32Bit rgb/bgr support added, aalib fixed, performance optimizations, code cleanup and so much more...
atmosfear
parents: 616
diff changeset
815 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
816 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
817 /* Initialize and create the YUV Overlay used for video out */
b9735f811d7d 15,16,24,32Bit rgb/bgr support added, aalib fixed, performance optimizations, code cleanup and so much more...
atmosfear
parents: 616
diff changeset
818 if (!(priv->overlay = SDL_CreateYUVOverlay (width, height, sdl_format, 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
819 printf ("SDL: Couldn't create a YUV overlay: %s\n", SDL_GetError());
b9735f811d7d 15,16,24,32Bit rgb/bgr support added, aalib fixed, performance optimizations, code cleanup and so much more...
atmosfear
parents: 616
diff changeset
820 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
821 }
b9735f811d7d 15,16,24,32Bit rgb/bgr support added, aalib fixed, performance optimizations, code cleanup and so much more...
atmosfear
parents: 616
diff changeset
822 priv->framePlaneY = width * height;
b9735f811d7d 15,16,24,32Bit rgb/bgr support added, aalib fixed, performance optimizations, code cleanup and so much more...
atmosfear
parents: 616
diff changeset
823 priv->framePlaneUV = (width * height) >> 2;
784
dee122f9cdb9 Added full aspect awareness, rewrote fullscreen handling.
atmosfear
parents: 772
diff changeset
824 priv->framePlaneYUY = width * height * 2;
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
825 priv->stridePlaneY = width;
b9735f811d7d 15,16,24,32Bit rgb/bgr support added, aalib fixed, performance optimizations, code cleanup and so much more...
atmosfear
parents: 616
diff changeset
826 priv->stridePlaneUV = width/2;
784
dee122f9cdb9 Added full aspect awareness, rewrote fullscreen handling.
atmosfear
parents: 772
diff changeset
827 priv->stridePlaneYUY = width * 2;
1
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
828 }
635
b9735f811d7d 15,16,24,32Bit rgb/bgr support added, aalib fixed, performance optimizations, code cleanup and so much more...
atmosfear
parents: 616
diff changeset
829
b9735f811d7d 15,16,24,32Bit rgb/bgr support added, aalib fixed, performance optimizations, code cleanup and so much more...
atmosfear
parents: 616
diff changeset
830 if(priv->mode) {
1219
e169f798ff71 Sync with SF cvs. (Bugfixed YUV aalib and RGB/BGR32 converted modes.)
atmos4
parents: 1197
diff changeset
831 if((priv->format&0xFF) != priv->bpp) { priv->dblit = 0; printf("SDL: using depth/colorspace conversion, this will slow things down (%ibpp -> %ibpp).\n", priv->format&0xFF, priv->bpp); }
e169f798ff71 Sync with SF cvs. (Bugfixed YUV aalib and RGB/BGR32 converted modes.)
atmos4
parents: 1197
diff changeset
832 else if(strcmp(priv->driver, "x11") == 0) priv->dblit = 1;
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
833 priv->framePlaneRGB = width * height * priv->rgbsurface->format->BytesPerPixel;
772
e70a52f17f92 Added flipped video support and activate/deactivate screensaver under X.
atmosfear
parents: 770
diff changeset
834 priv->stridePlaneRGB = width * priv->rgbsurface->format->BytesPerPixel;
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
835 }
1
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
836 return 0;
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
837 }
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
838
1197
80ca716ce5e9 Made surface locks switchable via preprocessor.
atmosfear
parents: 1194
diff changeset
839 #ifdef SDL_ENABLE_LOCKS
80ca716ce5e9 Made surface locks switchable via preprocessor.
atmosfear
parents: 1194
diff changeset
840 #define SDL_OVR_LOCK if (SDL_LockYUVOverlay (priv->overlay)) { \
80ca716ce5e9 Made surface locks switchable via preprocessor.
atmosfear
parents: 1194
diff changeset
841 if(verbose) printf("SDL: Couldn't lock YUV overlay\n"); \
80ca716ce5e9 Made surface locks switchable via preprocessor.
atmosfear
parents: 1194
diff changeset
842 return -1; \
80ca716ce5e9 Made surface locks switchable via preprocessor.
atmosfear
parents: 1194
diff changeset
843 }
80ca716ce5e9 Made surface locks switchable via preprocessor.
atmosfear
parents: 1194
diff changeset
844 #define SDL_OVR_UNLOCK SDL_UnlockYUVOverlay (priv->overlay);
80ca716ce5e9 Made surface locks switchable via preprocessor.
atmosfear
parents: 1194
diff changeset
845
80ca716ce5e9 Made surface locks switchable via preprocessor.
atmosfear
parents: 1194
diff changeset
846 #define SDL_SRF_LOCK(srf) if(SDL_MUSTLOCK(srf)) { \
80ca716ce5e9 Made surface locks switchable via preprocessor.
atmosfear
parents: 1194
diff changeset
847 if(SDL_LockSurface (srf)) { \
80ca716ce5e9 Made surface locks switchable via preprocessor.
atmosfear
parents: 1194
diff changeset
848 if(verbose) printf("SDL: Couldn't lock RGB surface\n"); \
80ca716ce5e9 Made surface locks switchable via preprocessor.
atmosfear
parents: 1194
diff changeset
849 return -1; \
80ca716ce5e9 Made surface locks switchable via preprocessor.
atmosfear
parents: 1194
diff changeset
850 } \
80ca716ce5e9 Made surface locks switchable via preprocessor.
atmosfear
parents: 1194
diff changeset
851 }
80ca716ce5e9 Made surface locks switchable via preprocessor.
atmosfear
parents: 1194
diff changeset
852
80ca716ce5e9 Made surface locks switchable via preprocessor.
atmosfear
parents: 1194
diff changeset
853 #define SDL_SRF_UNLOCK(srf) if(SDL_MUSTLOCK(srf)) \
80ca716ce5e9 Made surface locks switchable via preprocessor.
atmosfear
parents: 1194
diff changeset
854 SDL_UnlockSurface (srf);
80ca716ce5e9 Made surface locks switchable via preprocessor.
atmosfear
parents: 1194
diff changeset
855 #else
80ca716ce5e9 Made surface locks switchable via preprocessor.
atmosfear
parents: 1194
diff changeset
856 #define SDL_OVR_LOCK
80ca716ce5e9 Made surface locks switchable via preprocessor.
atmosfear
parents: 1194
diff changeset
857 #define SDL_OVR_UNLOCK
80ca716ce5e9 Made surface locks switchable via preprocessor.
atmosfear
parents: 1194
diff changeset
858 #define SDL_SRF_LOCK(srf)
80ca716ce5e9 Made surface locks switchable via preprocessor.
atmosfear
parents: 1194
diff changeset
859 #define SDL_SRF_UNLOCK(srf)
80ca716ce5e9 Made surface locks switchable via preprocessor.
atmosfear
parents: 1194
diff changeset
860 #endif
1
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
861
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
862 /**
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
863 * Draw a frame to the SDL YUV overlay.
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
864 *
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
865 * params : *src[] == the Y, U, and V planes that make up the frame.
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
866 * returns : non-zero on success, zero on error.
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
867 **/
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
868
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
869 //static int sdl_draw_frame (frame_t *frame)
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
870 static uint32_t draw_frame(uint8_t *src[])
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
871 {
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
872 struct sdl_priv_s *priv = &sdl_priv;
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
873 uint8_t *dst;
772
e70a52f17f92 Added flipped video support and activate/deactivate screensaver under X.
atmosfear
parents: 770
diff changeset
874 int i;
e70a52f17f92 Added flipped video support and activate/deactivate screensaver under X.
atmosfear
parents: 770
diff changeset
875 uint8_t *mysrc = src[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
876
1
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
877 switch(priv->format){
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
878 case IMGFMT_YV12:
408
b61c5c4484f8 - applied overlay patch by Jens H
atmosfear
parents: 394
diff changeset
879 case IMGFMT_I420:
b61c5c4484f8 - applied overlay patch by Jens H
atmosfear
parents: 394
diff changeset
880 case IMGFMT_IYUV:
1197
80ca716ce5e9 Made surface locks switchable via preprocessor.
atmosfear
parents: 1194
diff changeset
881 SDL_OVR_LOCK
1
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
882 dst = (uint8_t *) *(priv->overlay->pixels);
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
883 memcpy (dst, src[0], priv->framePlaneY);
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
884 dst += priv->framePlaneY;
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
885 memcpy (dst, src[2], priv->framePlaneUV);
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
886 dst += priv->framePlaneUV;
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
887 memcpy (dst, src[1], priv->framePlaneUV);
1197
80ca716ce5e9 Made surface locks switchable via preprocessor.
atmosfear
parents: 1194
diff changeset
888 SDL_OVR_UNLOCK
1
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
889 break;
408
b61c5c4484f8 - applied overlay patch by Jens H
atmosfear
parents: 394
diff changeset
890
1
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
891 case IMGFMT_YUY2:
408
b61c5c4484f8 - applied overlay patch by Jens H
atmosfear
parents: 394
diff changeset
892 case IMGFMT_UYVY:
b61c5c4484f8 - applied overlay patch by Jens H
atmosfear
parents: 394
diff changeset
893 case IMGFMT_YVYU:
1197
80ca716ce5e9 Made surface locks switchable via preprocessor.
atmosfear
parents: 1194
diff changeset
894 SDL_OVR_LOCK
1
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
895 dst = (uint8_t *) *(priv->overlay->pixels);
784
dee122f9cdb9 Added full aspect awareness, rewrote fullscreen handling.
atmosfear
parents: 772
diff changeset
896 if(priv->flip) {
dee122f9cdb9 Added full aspect awareness, rewrote fullscreen handling.
atmosfear
parents: 772
diff changeset
897 mysrc+=priv->framePlaneYUY;
dee122f9cdb9 Added full aspect awareness, rewrote fullscreen handling.
atmosfear
parents: 772
diff changeset
898 for(i = 0; i < priv->height; i++) {
dee122f9cdb9 Added full aspect awareness, rewrote fullscreen handling.
atmosfear
parents: 772
diff changeset
899 mysrc-=priv->stridePlaneYUY;
dee122f9cdb9 Added full aspect awareness, rewrote fullscreen handling.
atmosfear
parents: 772
diff changeset
900 memcpy (dst, mysrc, priv->stridePlaneYUY);
dee122f9cdb9 Added full aspect awareness, rewrote fullscreen handling.
atmosfear
parents: 772
diff changeset
901 dst+=priv->stridePlaneYUY;
dee122f9cdb9 Added full aspect awareness, rewrote fullscreen handling.
atmosfear
parents: 772
diff changeset
902 }
dee122f9cdb9 Added full aspect awareness, rewrote fullscreen handling.
atmosfear
parents: 772
diff changeset
903 }
dee122f9cdb9 Added full aspect awareness, rewrote fullscreen handling.
atmosfear
parents: 772
diff changeset
904 else memcpy (dst, src[0], priv->framePlaneYUY);
1197
80ca716ce5e9 Made surface locks switchable via preprocessor.
atmosfear
parents: 1194
diff changeset
905 SDL_OVR_UNLOCK
1
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
906 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
907
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 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
909 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
910 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
911 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
912 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
913 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
914 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
915 case IMGFMT_BGR32:
1219
e169f798ff71 Sync with SF cvs. (Bugfixed YUV aalib and RGB/BGR32 converted modes.)
atmos4
parents: 1197
diff changeset
916 if(priv->dblit) {
1197
80ca716ce5e9 Made surface locks switchable via preprocessor.
atmosfear
parents: 1194
diff changeset
917 SDL_SRF_LOCK(priv->surface)
1194
40550e1458e8 Drastic! speedup of rgb code. Removed nonsens memhole fixes.
atmosfear
parents: 1188
diff changeset
918 dst = (uint8_t *) priv->surface->pixels;
40550e1458e8 Drastic! speedup of rgb code. Removed nonsens memhole fixes.
atmosfear
parents: 1188
diff changeset
919 if(priv->flip) {
40550e1458e8 Drastic! speedup of rgb code. Removed nonsens memhole fixes.
atmosfear
parents: 1188
diff changeset
920 mysrc+=priv->framePlaneRGB;
40550e1458e8 Drastic! speedup of rgb code. Removed nonsens memhole fixes.
atmosfear
parents: 1188
diff changeset
921 for(i = 0; i < priv->height; i++) {
40550e1458e8 Drastic! speedup of rgb code. Removed nonsens memhole fixes.
atmosfear
parents: 1188
diff changeset
922 mysrc-=priv->stridePlaneRGB;
40550e1458e8 Drastic! speedup of rgb code. Removed nonsens memhole fixes.
atmosfear
parents: 1188
diff changeset
923 memcpy (dst, mysrc, priv->stridePlaneRGB);
40550e1458e8 Drastic! speedup of rgb code. Removed nonsens memhole fixes.
atmosfear
parents: 1188
diff changeset
924 dst+=priv->stridePlaneRGB;
40550e1458e8 Drastic! speedup of rgb code. Removed nonsens memhole fixes.
atmosfear
parents: 1188
diff changeset
925 }
823
e09c92ca4c45 Added ability to use direct surface blitting for BGR modes.
atmosfear
parents: 784
diff changeset
926 }
1194
40550e1458e8 Drastic! speedup of rgb code. Removed nonsens memhole fixes.
atmosfear
parents: 1188
diff changeset
927 else memcpy (dst, src[0], priv->framePlaneRGB);
1197
80ca716ce5e9 Made surface locks switchable via preprocessor.
atmosfear
parents: 1194
diff changeset
928 SDL_SRF_UNLOCK(priv->surface)
1194
40550e1458e8 Drastic! speedup of rgb code. Removed nonsens memhole fixes.
atmosfear
parents: 1188
diff changeset
929 } else {
1197
80ca716ce5e9 Made surface locks switchable via preprocessor.
atmosfear
parents: 1194
diff changeset
930 SDL_SRF_LOCK(priv->rgbsurface)
1194
40550e1458e8 Drastic! speedup of rgb code. Removed nonsens memhole fixes.
atmosfear
parents: 1188
diff changeset
931 dst = (uint8_t *) priv->rgbsurface->pixels;
40550e1458e8 Drastic! speedup of rgb code. Removed nonsens memhole fixes.
atmosfear
parents: 1188
diff changeset
932 if(priv->flip) {
40550e1458e8 Drastic! speedup of rgb code. Removed nonsens memhole fixes.
atmosfear
parents: 1188
diff changeset
933 mysrc+=priv->framePlaneRGB;
40550e1458e8 Drastic! speedup of rgb code. Removed nonsens memhole fixes.
atmosfear
parents: 1188
diff changeset
934 for(i = 0; i < priv->height; i++) {
40550e1458e8 Drastic! speedup of rgb code. Removed nonsens memhole fixes.
atmosfear
parents: 1188
diff changeset
935 mysrc-=priv->stridePlaneRGB;
40550e1458e8 Drastic! speedup of rgb code. Removed nonsens memhole fixes.
atmosfear
parents: 1188
diff changeset
936 memcpy (dst, mysrc, priv->stridePlaneRGB);
40550e1458e8 Drastic! speedup of rgb code. Removed nonsens memhole fixes.
atmosfear
parents: 1188
diff changeset
937 dst+=priv->stridePlaneRGB;
40550e1458e8 Drastic! speedup of rgb code. Removed nonsens memhole fixes.
atmosfear
parents: 1188
diff changeset
938 }
40550e1458e8 Drastic! speedup of rgb code. Removed nonsens memhole fixes.
atmosfear
parents: 1188
diff changeset
939 }
40550e1458e8 Drastic! speedup of rgb code. Removed nonsens memhole fixes.
atmosfear
parents: 1188
diff changeset
940 else memcpy (dst, src[0], priv->framePlaneRGB);
1197
80ca716ce5e9 Made surface locks switchable via preprocessor.
atmosfear
parents: 1194
diff changeset
941 SDL_SRF_UNLOCK(priv->rgbsurface)
823
e09c92ca4c45 Added ability to use direct surface blitting for BGR modes.
atmosfear
parents: 784
diff changeset
942 }
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
943 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
944
1
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
945 }
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
946
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
947 return 0;
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
948 }
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
949
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
950
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
951 /**
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
952 * Draw a slice (16 rows of image) to the SDL YUV overlay.
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
953 *
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
954 * params : *src[] == the Y, U, and V planes that make up the slice.
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
955 * returns : non-zero on error, zero on success.
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
956 **/
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
957
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
958 //static uint32_t draw_slice(uint8_t *src[], uint32_t slice_num)
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
959 static uint32_t draw_slice(uint8_t *image[], int stride[], int w,int h,int x,int y)
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
960 {
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
961 struct sdl_priv_s *priv = &sdl_priv;
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
962 uint8_t *dst;
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
963 uint8_t *src;
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
964 int i;
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
965
1197
80ca716ce5e9 Made surface locks switchable via preprocessor.
atmosfear
parents: 1194
diff changeset
966 SDL_OVR_LOCK
1
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
967
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
968 dst = (uint8_t *) *(priv->overlay->pixels)
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
969 + (priv->stridePlaneY * y + x);
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
970 src = image[0];
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
971 for(i=0;i<h;i++){
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
972 memcpy(dst,src,w);
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
973 src+=stride[0];
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
974 dst+=priv->stridePlaneY;
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
975 }
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
976
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
977 x/=2;y/=2;w/=2;h/=2;
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
978
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
979 dst = (uint8_t *) *(priv->overlay->pixels) + priv->framePlaneY
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
980 + (priv->stridePlaneUV * y + x);
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
981 src = image[2];
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
982 for(i=0;i<h;i++){
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
983 memcpy(dst,src,w);
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
984 src+=stride[2];
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
985 dst+=priv->stridePlaneUV;
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
986 }
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
987
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
988 dst = (uint8_t *) *(priv->overlay->pixels) + priv->framePlaneY
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
989 + priv->framePlaneUV + (priv->stridePlaneUV * y + x);
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
990 src = image[1];
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
991 for(i=0;i<h;i++){
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
992 memcpy(dst,src,w);
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
993 src+=stride[1];
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
994 dst+=priv->stridePlaneUV;
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
995 }
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
996
1197
80ca716ce5e9 Made surface locks switchable via preprocessor.
atmosfear
parents: 1194
diff changeset
997 SDL_OVR_UNLOCK
1
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
998
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
999 return 0;
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
1000 }
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
1001
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
1002
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
1003
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
1004 /**
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
1005 * Checks for SDL keypress and window resize events
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
1006 *
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
1007 * params : none
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
1008 * returns : doesn't return
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
1009 **/
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
1010
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
1011 #include "../linux/keycodes.h"
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
1012 extern void mplayer_put_key(int code);
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
1013
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
1014 static void check_events (void)
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
1015 {
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
1016 struct sdl_priv_s *priv = &sdl_priv;
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
1017 SDL_Event event;
331
0f1737e626fa - Changed keypress-detection from keydown to keyup, seems to fix keyrepeat
atmosfear
parents: 265
diff changeset
1018 SDLKey keypressed = 0;
0f1737e626fa - Changed keypress-detection from keydown to keyup, seems to fix keyrepeat
atmosfear
parents: 265
diff changeset
1019 static int firstcheck = 0;
1
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
1020
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
1021 /* Poll the waiting SDL Events */
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
1022 while ( SDL_PollEvent(&event) ) {
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
1023 switch (event.type) {
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
1024
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
1025 /* capture window resize events */
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
1026 case SDL_VIDEORESIZE:
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
1027 priv->surface = SDL_SetVideoMode(event.resize.w, event.resize.h, priv->bpp, priv->sdlflags);
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
1028
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
1029 /* save video extents, to restore them after going fullscreen */
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
1030 //if(!(priv->surface->flags & SDL_FULLSCREEN)) {
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
1031 priv->windowsize.w = priv->surface->w;
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
1032 priv->windowsize.h = priv->surface->h;
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
1033 //}
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
1034 if(verbose > 2) printf("SDL: Window resize\n");
1
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
1035 break;
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
1036
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
1037
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
1038 /* graphics mode selection shortcuts */
705
27d351f251eb Added workaround for buggy SDL versions (before 1.2.1).
atmosfear
parents: 703
diff changeset
1039 #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
1040 case SDL_KEYDOWN:
705
27d351f251eb Added workaround for buggy SDL versions (before 1.2.1).
atmosfear
parents: 703
diff changeset
1041 switch(event.key.keysym.sym) {
1122
fe9ef743be91 fixed my previousily added bug: ifdef buggy_sdl: keypressed: default case
al3x
parents: 1110
diff changeset
1042 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
1043 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
1044 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
1045 case SDLK_RIGHT: mplayer_put_key(KEY_RIGHT); break;
705
27d351f251eb Added workaround for buggy SDL versions (before 1.2.1).
atmosfear
parents: 703
diff changeset
1046 case SDLK_ASTERISK:
27d351f251eb Added workaround for buggy SDL versions (before 1.2.1).
atmosfear
parents: 703
diff changeset
1047 case SDLK_KP_MULTIPLY:
1122
fe9ef743be91 fixed my previousily added bug: ifdef buggy_sdl: keypressed: default case
al3x
parents: 1110
diff changeset
1048 case SDLK_w: mplayer_put_key('*'); break;
705
27d351f251eb Added workaround for buggy SDL versions (before 1.2.1).
atmosfear
parents: 703
diff changeset
1049 case SDLK_SLASH:
27d351f251eb Added workaround for buggy SDL versions (before 1.2.1).
atmosfear
parents: 703
diff changeset
1050 case SDLK_KP_DIVIDE:
1122
fe9ef743be91 fixed my previousily added bug: ifdef buggy_sdl: keypressed: default case
al3x
parents: 1110
diff changeset
1051 case SDLK_s: mplayer_put_key('/'); break;
fe9ef743be91 fixed my previousily added bug: ifdef buggy_sdl: keypressed: default case
al3x
parents: 1110
diff changeset
1052 default: break;
705
27d351f251eb Added workaround for buggy SDL versions (before 1.2.1).
atmosfear
parents: 703
diff changeset
1053 }
27d351f251eb Added workaround for buggy SDL versions (before 1.2.1).
atmosfear
parents: 703
diff changeset
1054 break;
27d351f251eb Added workaround for buggy SDL versions (before 1.2.1).
atmosfear
parents: 703
diff changeset
1055 case SDL_KEYUP:
27d351f251eb Added workaround for buggy SDL versions (before 1.2.1).
atmosfear
parents: 703
diff changeset
1056 #else
27d351f251eb Added workaround for buggy SDL versions (before 1.2.1).
atmosfear
parents: 703
diff changeset
1057 case SDL_KEYDOWN:
27d351f251eb Added workaround for buggy SDL versions (before 1.2.1).
atmosfear
parents: 703
diff changeset
1058 #endif
1
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
1059 keypressed = event.key.keysym.sym;
703
fcc01494c0fe Fixed keyboard input handling and slowed down keyrepeat interval.
atmosfear
parents: 653
diff changeset
1060 if(verbose > 1) printf("SDL: Key pressed: '%i'\n", keypressed);
265
1d02e6f7c63a Only small change to allow pausing of movie (p or SPACE).
atmosfear
parents: 97
diff changeset
1061
357
681979d4031a - small bugfixes
atmosfear
parents: 355
diff changeset
1062 /* 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
1063 if ( ((keypressed == SDLK_c)) && (priv->fullmodes) ) {
1
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
1064 /* select next fullscreen mode */
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
1065 priv->fullmode++;
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
1066 if (priv->fullmode > (findArrayEnd(priv->fullmodes) - 1)) priv->fullmode = 0;
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
1067 set_fullmode(priv->fullmode);
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
1068
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
1069 if(verbose > 1) printf("SDL: Set next available fullscreen mode.\n");
1
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
1070 }
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
1071
331
0f1737e626fa - Changed keypress-detection from keydown to keyup, seems to fix keyrepeat
atmosfear
parents: 265
diff changeset
1072 /* f key pressed toggles/exits fullscreenmode */
0f1737e626fa - Changed keypress-detection from keydown to keyup, seems to fix keyrepeat
atmosfear
parents: 265
diff changeset
1073 else if ( keypressed == SDLK_f ) {
265
1d02e6f7c63a Only small change to allow pausing of movie (p or SPACE).
atmosfear
parents: 97
diff changeset
1074 if (priv->surface->flags & SDL_FULLSCREEN) {
1
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
1075 priv->surface = SDL_SetVideoMode(priv->windowsize.w, priv->windowsize.h, priv->bpp, priv->sdlflags);
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
1076 SDL_ShowCursor(1);
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
1077 if(verbose > 1) printf("SDL: Windowed mode\n");
1
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
1078 }
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
1079 else if (priv->fullmodes){
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
1080 set_fullmode(priv->fullmode);
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
1081
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
1082 if(verbose > 1) printf("SDL: Set fullscreen mode\n");
1
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
1083 }
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
1084 }
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
1085
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
1086 else switch(keypressed){
331
0f1737e626fa - Changed keypress-detection from keydown to keyup, seems to fix keyrepeat
atmosfear
parents: 265
diff changeset
1087 case SDLK_RETURN:
0f1737e626fa - Changed keypress-detection from keydown to keyup, seems to fix keyrepeat
atmosfear
parents: 265
diff changeset
1088 if (!firstcheck) { firstcheck = 1; break; }
0f1737e626fa - Changed keypress-detection from keydown to keyup, seems to fix keyrepeat
atmosfear
parents: 265
diff changeset
1089 case SDLK_ESCAPE:
0f1737e626fa - Changed keypress-detection from keydown to keyup, seems to fix keyrepeat
atmosfear
parents: 265
diff changeset
1090 case SDLK_q:
0f1737e626fa - Changed keypress-detection from keydown to keyup, seems to fix keyrepeat
atmosfear
parents: 265
diff changeset
1091 SDL_ShowCursor(1);
0f1737e626fa - Changed keypress-detection from keydown to keyup, seems to fix keyrepeat
atmosfear
parents: 265
diff changeset
1092 mplayer_put_key('q');
0f1737e626fa - Changed keypress-detection from keydown to keyup, seems to fix keyrepeat
atmosfear
parents: 265
diff changeset
1093 break;
475
904d1cfda2dd changed keyboard input handling to pass key through to mplayer if not special to sdl
atmosfear
parents: 451
diff changeset
1094 /*case SDLK_o: mplayer_put_key('o');break;
575
3fde7340afd5 Reincluded fastmemcpy.h and added some keybindings for mixer.
atmosfear
parents: 543
diff changeset
1095 case SDLK_SPACE: mplayer_put_key(' ');break;
3fde7340afd5 Reincluded fastmemcpy.h and added some keybindings for mixer.
atmosfear
parents: 543
diff changeset
1096 case SDLK_p: mplayer_put_key('p');break;*/
3fde7340afd5 Reincluded fastmemcpy.h and added some keybindings for mixer.
atmosfear
parents: 543
diff changeset
1097 case SDLK_PLUS:
1
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
1098 case SDLK_KP_PLUS: mplayer_put_key('+');break;
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
1099 case SDLK_MINUS:
575
3fde7340afd5 Reincluded fastmemcpy.h and added some keybindings for mixer.
atmosfear
parents: 543
diff changeset
1100 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
1101 case SDLK_TAB: mplayer_put_key('\t');break;
653
799ef558618d Last second changes.
atmosfear
parents: 648
diff changeset
1102 case SDLK_PAGEUP: mplayer_put_key(KEY_PAGE_UP);break;
799ef558618d Last second changes.
atmosfear
parents: 648
diff changeset
1103 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
1104 #ifdef BUGGY_SDL
27d351f251eb Added workaround for buggy SDL versions (before 1.2.1).
atmosfear
parents: 703
diff changeset
1105 case SDLK_UP:
27d351f251eb Added workaround for buggy SDL versions (before 1.2.1).
atmosfear
parents: 703
diff changeset
1106 case SDLK_DOWN:
27d351f251eb Added workaround for buggy SDL versions (before 1.2.1).
atmosfear
parents: 703
diff changeset
1107 case SDLK_LEFT:
27d351f251eb Added workaround for buggy SDL versions (before 1.2.1).
atmosfear
parents: 703
diff changeset
1108 case SDLK_RIGHT:
27d351f251eb Added workaround for buggy SDL versions (before 1.2.1).
atmosfear
parents: 703
diff changeset
1109 case SDLK_ASTERISK:
27d351f251eb Added workaround for buggy SDL versions (before 1.2.1).
atmosfear
parents: 703
diff changeset
1110 case SDLK_KP_MULTIPLY:
27d351f251eb Added workaround for buggy SDL versions (before 1.2.1).
atmosfear
parents: 703
diff changeset
1111 case SDLK_w:
27d351f251eb Added workaround for buggy SDL versions (before 1.2.1).
atmosfear
parents: 703
diff changeset
1112 case SDLK_SLASH:
27d351f251eb Added workaround for buggy SDL versions (before 1.2.1).
atmosfear
parents: 703
diff changeset
1113 case SDLK_KP_DIVIDE:
27d351f251eb Added workaround for buggy SDL versions (before 1.2.1).
atmosfear
parents: 703
diff changeset
1114 case SDLK_s:
27d351f251eb Added workaround for buggy SDL versions (before 1.2.1).
atmosfear
parents: 703
diff changeset
1115 break;
27d351f251eb Added workaround for buggy SDL versions (before 1.2.1).
atmosfear
parents: 703
diff changeset
1116 #else
703
fcc01494c0fe Fixed keyboard input handling and slowed down keyrepeat interval.
atmosfear
parents: 653
diff changeset
1117 case SDLK_UP: mplayer_put_key(KEY_UP);break;
fcc01494c0fe Fixed keyboard input handling and slowed down keyrepeat interval.
atmosfear
parents: 653
diff changeset
1118 case SDLK_DOWN: mplayer_put_key(KEY_DOWN);break;
fcc01494c0fe Fixed keyboard input handling and slowed down keyrepeat interval.
atmosfear
parents: 653
diff changeset
1119 case SDLK_LEFT: mplayer_put_key(KEY_LEFT);break;
fcc01494c0fe Fixed keyboard input handling and slowed down keyrepeat interval.
atmosfear
parents: 653
diff changeset
1120 case SDLK_RIGHT: mplayer_put_key(KEY_RIGHT);break;
fcc01494c0fe Fixed keyboard input handling and slowed down keyrepeat interval.
atmosfear
parents: 653
diff changeset
1121 case SDLK_ASTERISK:
fcc01494c0fe Fixed keyboard input handling and slowed down keyrepeat interval.
atmosfear
parents: 653
diff changeset
1122 case SDLK_KP_MULTIPLY:
fcc01494c0fe Fixed keyboard input handling and slowed down keyrepeat interval.
atmosfear
parents: 653
diff changeset
1123 case SDLK_w: mplayer_put_key('*');break;
fcc01494c0fe Fixed keyboard input handling and slowed down keyrepeat interval.
atmosfear
parents: 653
diff changeset
1124 case SDLK_SLASH:
fcc01494c0fe Fixed keyboard input handling and slowed down keyrepeat interval.
atmosfear
parents: 653
diff changeset
1125 case SDLK_KP_DIVIDE:
fcc01494c0fe Fixed keyboard input handling and slowed down keyrepeat interval.
atmosfear
parents: 653
diff changeset
1126 case SDLK_s: mplayer_put_key('/');break;
705
27d351f251eb Added workaround for buggy SDL versions (before 1.2.1).
atmosfear
parents: 703
diff changeset
1127 #endif
475
904d1cfda2dd changed keyboard input handling to pass key through to mplayer if not special to sdl
atmosfear
parents: 451
diff changeset
1128 default:
904d1cfda2dd changed keyboard input handling to pass key through to mplayer if not special to sdl
atmosfear
parents: 451
diff changeset
1129 mplayer_put_key(keypressed);
1
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
1130 }
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
1131
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
1132 break;
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
1133 }
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
1134 }
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
1135 }
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
1136
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
1137
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
1138 /**
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
1139 * Display the surface we have written our data to and check for events.
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
1140 *
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
1141 * params : mode == index of the desired fullscreen mode
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
1142 * returns : doesn't return
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
1143 **/
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
1144
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
1145 static void flip_page (void)
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
1146 {
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
1147 struct sdl_priv_s *priv = &sdl_priv;
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
1148
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
1149 /* update osd/subtitles */
351
2c4ded6ffebc - Full OSD and subtitle support added
atmosfear
parents: 350
diff changeset
1150 vo_draw_text(priv->width,priv->height,draw_alpha);
2c4ded6ffebc - Full OSD and subtitle support added
atmosfear
parents: 350
diff changeset
1151
1
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
1152 /* check and react on keypresses and window resizes */
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
1153 check_events();
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
1154
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
1155 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
1156 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
1157 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
1158 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
1159 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
1160 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
1161 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
1162 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
1163 case IMGFMT_BGR32:
1219
e169f798ff71 Sync with SF cvs. (Bugfixed YUV aalib and RGB/BGR32 converted modes.)
atmos4
parents: 1197
diff changeset
1164 if(!priv->dblit) {
1194
40550e1458e8 Drastic! speedup of rgb code. Removed nonsens memhole fixes.
atmosfear
parents: 1188
diff changeset
1165 /* blit to the RGB surface */
40550e1458e8 Drastic! speedup of rgb code. Removed nonsens memhole fixes.
atmosfear
parents: 1188
diff changeset
1166 if(SDL_BlitSurface (priv->rgbsurface, NULL, priv->surface, NULL))
40550e1458e8 Drastic! speedup of rgb code. Removed nonsens memhole fixes.
atmosfear
parents: 1188
diff changeset
1167 printf("SDL: Blit failed: %s\n", SDL_GetError());
40550e1458e8 Drastic! speedup of rgb code. Removed nonsens memhole fixes.
atmosfear
parents: 1188
diff changeset
1168 }
1
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
1169
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
1170 /* update screen */
784
dee122f9cdb9 Added full aspect awareness, rewrote fullscreen handling.
atmosfear
parents: 772
diff changeset
1171 //SDL_UpdateRect(priv->surface, 0, 0, priv->surface->clip_rect.w, priv->surface->clip_rect.h);
dee122f9cdb9 Added full aspect awareness, rewrote fullscreen handling.
atmosfear
parents: 772
diff changeset
1172 SDL_UpdateRects(priv->surface, 1, &priv->surface->clip_rect);
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
1173
b9735f811d7d 15,16,24,32Bit rgb/bgr support added, aalib fixed, performance optimizations, code cleanup and so much more...
atmosfear
parents: 616
diff changeset
1174 /* 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
1175 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
1176 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
1177
b9735f811d7d 15,16,24,32Bit rgb/bgr support added, aalib fixed, performance optimizations, code cleanup and so much more...
atmosfear
parents: 616
diff changeset
1178 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
1179 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
1180 /* 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
1181 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
1182
b9735f811d7d 15,16,24,32Bit rgb/bgr support added, aalib fixed, performance optimizations, code cleanup and so much more...
atmosfear
parents: 616
diff changeset
1183 /* 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
1184 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
1185 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
1186
b9735f811d7d 15,16,24,32Bit rgb/bgr support added, aalib fixed, performance optimizations, code cleanup and so much more...
atmosfear
parents: 616
diff changeset
1187 //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
1188 }
1
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
1189 }
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
1190
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
1191 static uint32_t
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
1192 query_format(uint32_t format)
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
1193 {
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
1194 switch(format){
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
1195 case IMGFMT_YV12:
408
b61c5c4484f8 - applied overlay patch by Jens H
atmosfear
parents: 394
diff changeset
1196 case IMGFMT_I420:
b61c5c4484f8 - applied overlay patch by Jens H
atmosfear
parents: 394
diff changeset
1197 case IMGFMT_IYUV:
1
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
1198 case IMGFMT_YUY2:
408
b61c5c4484f8 - applied overlay patch by Jens H
atmosfear
parents: 394
diff changeset
1199 case IMGFMT_UYVY:
b61c5c4484f8 - applied overlay patch by Jens H
atmosfear
parents: 394
diff changeset
1200 case IMGFMT_YVYU:
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
1201 return 0x6; // hw supported & osd
b9735f811d7d 15,16,24,32Bit rgb/bgr support added, aalib fixed, performance optimizations, code cleanup and so much more...
atmosfear
parents: 616
diff changeset
1202 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
1203 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
1204 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
1205 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
1206 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
1207 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
1208 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
1209 case IMGFMT_BGR32:
b9735f811d7d 15,16,24,32Bit rgb/bgr support added, aalib fixed, performance optimizations, code cleanup and so much more...
atmosfear
parents: 616
diff changeset
1210 return 0x5; // hw supported w/conversion & osd
1
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
1211 }
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
1212 return 0;
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
1213 }
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
1214
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
1215 static const vo_info_t*
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
1216 get_info(void)
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
1217 {
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
1218 return &vo_info;
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
1219 }
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
1220
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
1221
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
1222 static void
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
1223 uninit(void)
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
1224 {
772
e70a52f17f92 Added flipped video support and activate/deactivate screensaver under X.
atmosfear
parents: 770
diff changeset
1225 #ifdef HAVE_X11
e70a52f17f92 Added flipped video support and activate/deactivate screensaver under X.
atmosfear
parents: 770
diff changeset
1226 static Display *XDisplay;
e70a52f17f92 Added flipped video support and activate/deactivate screensaver under X.
atmosfear
parents: 770
diff changeset
1227 if(getenv("DISPLAY")) {
e70a52f17f92 Added flipped video support and activate/deactivate screensaver under X.
atmosfear
parents: 770
diff changeset
1228 if(verbose) printf("SDL: activating XScreensaver/DPMS\n");
e70a52f17f92 Added flipped video support and activate/deactivate screensaver under X.
atmosfear
parents: 770
diff changeset
1229 XDisplay = XOpenDisplay(getenv("DISPLAY"));
e70a52f17f92 Added flipped video support and activate/deactivate screensaver under X.
atmosfear
parents: 770
diff changeset
1230 saver_on(XDisplay);
e70a52f17f92 Added flipped video support and activate/deactivate screensaver under X.
atmosfear
parents: 770
diff changeset
1231 XCloseDisplay(XDisplay);
e70a52f17f92 Added flipped video support and activate/deactivate screensaver under X.
atmosfear
parents: 770
diff changeset
1232 }
e70a52f17f92 Added flipped video support and activate/deactivate screensaver under X.
atmosfear
parents: 770
diff changeset
1233 #endif
1122
fe9ef743be91 fixed my previousily added bug: ifdef buggy_sdl: keypressed: default case
al3x
parents: 1110
diff changeset
1234 sdl_close();
1
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
1235 }