VESA and SDL in tty terminal
Anonymous
swell.k at gmail.com
Thu Feb 10 14:37:38 UTC 2011
David Demelier <demelier.david at gmail.com> writes:
> Hello,
>
> The SDL's pkg-message says we can use video driver in tty terminal.
>
> To do this you have to load the vesa kernel module or enable it in your
> kernel, and set environment variable "SDL_VIDEODRIVER=vgl".
>
> I tried it with mplayer :
>
> $ SDL_VIDEODRIVER=vgl; export SDL_VIDEODRIVER
> $ mplayer -vo sdl <the file here>
[...]
> [VO_SDL] Set_fullmode: SDL_SetVideoMode failed: Unable to switch to
> requested mode.
IIRC, vgl(3) mode setting unlike vidcontrol(8) doesn't work as regular user.
Try running mplayer under root, e.g.
$ sudo mplayer -msgmodule -msglevel vo=9 -vo sdl <the file here>
[...]
DEMUX: VIDEO: [avc1] 1280x720 24bpp 23.976 fps 0.0 kbps ( 0.0 kbyte/s)
VIDEOOUT: SDL: Opening Plugin
VIDEOOUT: [VO_SDL] Using driver: vgl.
VIDEOOUT: X11 opening display:
VIDEOOUT: vo: couldn't open the X11 display ()!
[...]
CPLAYER: Starting playback...
CPLAYER: Movie-Aspect is 1.78:1 - prescaling to correct movie aspect.
CPLAYER: VO: [sdl] 1280x720 => 1280x720 Planar YV12
VIDEOOUT: SDL: Using 0x32315659 (Planar YV12) image format
VIDEOOUT: SDL: using hardware-surface
VIDEOOUT: SDL: setting zoomed fullscreen with modeswitching
VIDEOOUT: SDL Mode: 0: 1600 x 1200
VIDEOOUT: SDL Mode: 1: 1280 x 1024
VIDEOOUT: SDL Mode: 2: 1024 x 768
VIDEOOUT: SDL Mode: 3: 800 x 600
VIDEOOUT: SDL Mode: 4: 640 x 400
VIDEOOUT: SDL Mode: 5: 640 x 480
VIDEOOUT: SDL Mode: 6: 320 x 240
VIDEOOUT: SDL Mode: 7: 320 x 400
VIDEOOUT: SDL Mode: 8: 320 x 200
VIDEOOUT: SET SDL Mode: 1: 1280 x 1024
In case your keymap doesn't work under vo_sdl(vgl) try below workaround
%%
Index: multimedia/mplayer/files/patch-vgl-xlate_keys
===================================================================
RCS file: multimedia/mplayer/files/patch-vgl-xlate_keys
diff -N multimedia/mplayer/files/patch-vgl-xlate_keys
--- /dev/null 1 Jan 1970 00:00:00 -0000
+++ multimedia/mplayer/files/patch-vgl-xlate_keys 10 Feb 2011 14:34:43 -0000
@@ -0,0 +1,62 @@
+ use character codes for vgl driver
+
+--- configure~
++++ configure
+@@ -4579,6 +4579,19 @@ EOF
+ fi
+ fi
+ if test "$_sdl" = yes ; then
++ cat > $TMPC << EOF
++#ifdef CONFIG_SDL_SDL_H
++#include <SDL/SDL.h>
++#else
++#include <SDL.h>
++#endif
++int main(void) { SDL_VIDEO_DRIVER_VGL; return 0; }
++EOF
++ if cc_check -DCONFIG_SDL_SDL_H $_inc_tmp -lvgl || cc_check $_inc_tmp -lvgl ; then
++ _ld_tmp="$_ld_tmp -lvgl"
++ fi
++fi
++if test "$_sdl" = yes ; then
+ def_sdl='#define CONFIG_SDL 1'
+ extra_cflags="$extra_cflags $_inc_tmp"
+ libs_mplayer="$libs_mplayer $_ld_tmp"
+--- libvo/sdl_common.c~
++++ libvo/sdl_common.c
+@@ -27,6 +27,11 @@
+ #include "input/mouse.h"
+ #include "video_out.h"
+
++#ifdef SDL_VIDEO_DRIVER_VGL
++#include <sys/fbio.h>
++#include <vgl.h>
++#endif
++
+ static int old_w;
+ static int old_h;
+ static int mode_flags;
+@@ -44,6 +49,9 @@ int vo_sdl_init(void)
+ SDL_EnableKeyRepeat(SDL_DEFAULT_REPEAT_DELAY, 100 /*SDL_DEFAULT_REPEAT_INTERVAL*/);
+
+ // Easiest way to get uppercase characters
++#ifdef SDL_VIDEO_DRIVER_VGL
++ VGLKeyboardInit(VGL_XLATEKEYS);
++#endif
+ SDL_EnableUNICODE(1);
+
+ // We don't want those in our event queue.
+@@ -56,8 +64,12 @@ int vo_sdl_init(void)
+
+ void vo_sdl_uninit(void)
+ {
+- if (SDL_WasInit(SDL_INIT_VIDEO))
++ if (SDL_WasInit(SDL_INIT_VIDEO)) {
++#ifdef SDL_VIDEO_DRIVER_VGL
++ VGLKeyboardInit(VGL_CODEKEYS);
++#endif
+ SDL_QuitSubSystem(SDL_INIT_VIDEO);
++ }
+ }
+
+ void vo_sdl_fullscreen(void)
%%
More information about the freebsd-questions
mailing list