aboutsummaryrefslogtreecommitdiffstats
path: root/channels/console_video.c
diff options
context:
space:
mode:
Diffstat (limited to 'channels/console_video.c')
-rw-r--r--channels/console_video.c11
1 files changed, 9 insertions, 2 deletions
diff --git a/channels/console_video.c b/channels/console_video.c
index 87148d3b0..867eb0710 100644
--- a/channels/console_video.c
+++ b/channels/console_video.c
@@ -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;