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