Index: MPlayer-20051213/libmpdemux/tv.c =================================================================== --- MPlayer-20051213.orig/libmpdemux/tv.c 2006-02-23 10:52:28.000000000 +0100 +++ MPlayer-20051213/libmpdemux/tv.c 2006-02-23 10:52:36.000000000 +0100 @@ -53,7 +53,7 @@ int tv_param_width = -1; int tv_param_height = -1; int tv_param_input = 0; /* used in v4l and bttv */ -int tv_param_outfmt = IMGFMT_YV12; +int tv_param_outfmt = -1; float tv_param_fps = -1.0; char **tv_param_channels = NULL; int tv_param_audio_id = 0; @@ -166,12 +166,33 @@ int i; tvi_functions_t *funcs = tvh->functions; + int tv_fmt_list[] = { + IMGFMT_YV12, + IMGFMT_I420, + IMGFMT_UYVY, + IMGFMT_YUY2, + IMGFMT_RGB32, + IMGFMT_RGB24, + IMGFMT_RGB16, + IMGFMT_RGB15 + }; + if (funcs->control(tvh->priv, TVI_CONTROL_IS_VIDEO, 0) != TVI_CONTROL_TRUE) { mp_msg(MSGT_TV, MSGL_ERR, "Error: No video input present!\n"); return 0; } + if (tv_param_outfmt == -1) + for (i = 0; i < sizeof (tv_fmt_list) / sizeof (*tv_fmt_list); i++) + { + tv_param_outfmt = tv_fmt_list[i]; + if (funcs->control (tvh->priv, TVI_CONTROL_VID_SET_FORMAT, + &tv_param_outfmt) == TVI_CONTROL_TRUE) + break; + } + else + { switch(tv_param_outfmt) { case IMGFMT_YV12: @@ -194,6 +215,7 @@ mp_msg(MSGT_TV, MSGL_ERR, "==================================================================\n"); } funcs->control(tvh->priv, TVI_CONTROL_VID_SET_FORMAT, &tv_param_outfmt); + } /* set some params got from cmdline */ funcs->control(tvh->priv, TVI_CONTROL_SPC_SET_INPUT, &tv_param_input);