]> git.ipfire.org Git - thirdparty/asterisk.git/commitdiff
make sure the minimum surface depth is 16bpp so we can create YUVoverlays.
authorLuigi Rizzo <rizzo@icir.org>
Sun, 23 Dec 2007 12:36:32 +0000 (12:36 +0000)
committerLuigi Rizzo <rizzo@icir.org>
Sun, 23 Dec 2007 12:36:32 +0000 (12:36 +0000)
With this change we can do

setenv SDL_VIDEODRIVER aalib

and output to an ascii window (which is still in an X11 window).
If you also do

unsetenv DISPLAY

then the output goes into the main asterisk window, unfortunately
it interferes with the normal output so you don't see much.

In any case, i don't think we are very far away from having a working
xterm videophone!

git-svn-id: https://origsvn.digium.com/svn/asterisk/trunk@94714 65c4cc65-6c06-0410-ace0-fbb531ad65f3

channels/console_video.c

index 87148d3b0c07cb2d0f5be53b54da0baf0be85d2d..867eb07101352fac3b134f0252f77ea798a0ed4f 100644 (file)
@@ -2895,8 +2895,15 @@ static int keypad_cfg_read(struct gui_info *gui, const char *val);
 static void sdl_setup(struct video_desc *env)
 {
        int dpy_fmt = SDL_IYUV_OVERLAY; /* YV12 causes flicker in SDL */
-       int maxw, maxh;
+       int depth, maxw, maxh;
+       const SDL_VideoInfo *info = SDL_GetVideoInfo();
 
+       /* We want at least 16bpp to support YUV overlays.
+        * E.g with SDL_VIDEODRIVER = aalib the default is 8
+        */
+       depth = info->vfmt->BitsPerPixel;
+       if (depth < 16)
+               depth = 16;
        /*
         * initialize the SDL environment. We have one large window
         * with local and remote video, and a keypad.
@@ -2989,7 +2996,7 @@ static void sdl_setup(struct video_desc *env)
        maxh = MAX( MAX(env->in.rem_dpy.h, env->out.loc_dpy.h), env->out.keypad_dpy.h);
        maxw += 4 * BORDER;
        maxh += 2 * BORDER;
-       env->screen = SDL_SetVideoMode(maxw, maxh, 0, 0);
+       env->screen = SDL_SetVideoMode(maxw, maxh, depth, 0);
        if (!env->screen) {
                ast_log(LOG_ERROR, "SDL: could not set video mode - exiting\n");
                goto no_sdl;